diff options
1224 files changed, 87115 insertions, 91694 deletions
diff --git a/.gitignore b/.gitignore index 27d7ced66..eae1bd32f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,7 @@ *.ttc -/cities_bin -/private_locale *~ ._* + .DS_Store .carton local-lib5 @@ -19,25 +18,15 @@ tags FixMyStreet-EmptyHomes.po FixMyBarangay.po -/web/cobrands/fiksgatami/css.css -/web/cobrands/southampton/css.css -/web/cobrands/reading/css/css.css /web/css/core.css /web/css/main.css -/web/cobrands/default/*.css -/web/cobrands/fixmystreet/*.css -/web/cobrands/bromley/*.css -/web/cobrands/fixmybarangay/*.css -/web/cobrands/stevenage/*.css -/web/cobrands/barnet/*.css -/web/cobrands/zurich/*.css +/web/cobrands/*/*.css +/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 dcf35ab60..a0421bc95 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,18 +10,17 @@ language: perl perl: - "5.14" -branches: - only: - - master +env: + - secure: "lm7DasPP+iHVI3ZIjTX7tQMfiEsGBJGM2HrPO8AByZWJohL2gd024ngevXXkBT0Qln5z+RhGJOd+QWjvKmuhfCBPveL8IX4v0KHUTfxrjBoBSB09cb4UNdExWu7HPO63RsbhpQdaIoIYIpr1eBb9txBCbGD9aYepuqIKIj/QHwM=" before_install: - sudo apt-get update -qq - - sudo apt-get install -qq jhead + - 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 SOAP::Lite - - sudo locale-gen cy_GB.UTF-8 en_GB.UTF-8 nb_NO.UTF-8 + - cpanm -q Locale::gettext Math::BigInt::GMP + - sudo locale-gen cy_GB.UTF-8 en_GB.UTF-8 nb_NO.UTF-8 de_CH.UTF-8 sv_SE.UTF-8 install: - - carton install --deployment + - .travis/install before_script: - psql -c 'create database fms;' -U postgres - psql fms postgres < db/schema.sql @@ -29,14 +28,10 @@ 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/'," - -e "s,(CONTACT_EMAIL:) 'team,\\1 'person," conf/general.yml-example > conf/general.yml - ./bin/cron-wrapper ./bin/make_po FixMyStreet-EmptyHomes - ./bin/cron-wrapper ./bin/make_emptyhomes_welsh_po - commonlib/bin/gettext-makemo FixMyStreet script: "bin/cron-wrapper perl /usr/bin/prove -rl t" - +after_script: + - .travis/after_script diff --git a/.travis/after_script b/.travis/after_script new file mode 100755 index 000000000..469796be9 --- /dev/null +++ b/.travis/after_script @@ -0,0 +1,49 @@ +#!/usr/bin/env python + +import hashlib +import json +import os +import subprocess +import sys +import tarfile + +sharename = '48rLGpU1' + +root = os.path.join(os.path.dirname(__file__), '..') +with open(os.path.join(root, 'cpanfile.snapshot')) as cpanfile: + hash = hashlib.md5(cpanfile.read()).hexdigest() +wanted_filename = 'fixmystreet-local-%s.tgz' % hash + +if os.path.exists(wanted_filename): + print "File was downloaded, no need to upload" + sys.exit() + +print "Creating archive..." +tfile = tarfile.open(wanted_filename, 'w:gz') +tfile.add('local') +tfile.close() + +print "Logging in..." +refreshtoken = os.getenv('TOKEN') +if not refreshtoken: + print " No token available, bailing" + sys.exit() +output = subprocess.check_output([ + 'curl', '-s', '-X', 'POST', '--data', '{"refreshtoken":"%s"}' % refreshtoken, + 'https://open.ge.tt/1/users/login' +]) +output = json.loads(output) +accesstoken = output['accesstoken'] + +print "Creating file..." +output = subprocess.check_output([ + 'curl', '-s', '-X', 'POST', '--data', '{"filename":"%s"}' % wanted_filename, + 'https://open.ge.tt/1/files/%s/create?accesstoken=%s' % (sharename, accesstoken) +]) +output = json.loads(output) +puturl = output['upload']['puturl'] + +print "Uploading archive to ge.tt..." +with open('output', 'w') as out: + subprocess.call([ 'curl', '-#', '--upload-file', wanted_filename, puturl ], stdout=out) +print "Completed" diff --git a/.travis/install b/.travis/install new file mode 100755 index 000000000..126d641a1 --- /dev/null +++ b/.travis/install @@ -0,0 +1,29 @@ +#!/usr/bin/env python + +import hashlib +import json +import os +import sys +import tarfile +import urllib + +sharename = '48rLGpU1' + +root = os.path.join(os.path.dirname(__file__), '..') +with open(os.path.join(root, 'cpanfile.snapshot')) as cpanfile: + hash = hashlib.md5(cpanfile.read()).hexdigest() +wanted_filename = 'fixmystreet-local-%s.tgz' % hash + +share = json.loads( urllib.urlopen( 'https://open.ge.tt/1/shares/%s' % sharename ).read() ) +for file in share['files']: + if file['filename'] == wanted_filename and file['readystate'] == 'uploaded': + print "Found cached copy of local, using..." + urllib.urlretrieve('https://open.ge.tt/1/files/%s/%s/blob' % (sharename, file['fileid']), wanted_filename) + if tarfile.is_tarfile(wanted_filename): + tfile = tarfile.open(wanted_filename) + tfile.extractall() + sys.exit(0) + +print "No cached copy found, running carton install..." +os.system('cpanm -q Carton') +os.system('carton install --deployment') diff --git a/.tx/config b/.tx/config index 44db89d9e..6023a14d1 100644 --- a/.tx/config +++ b/.tx/config @@ -2,8 +2,8 @@ host = https://www.transifex.com type = PO -[fixmystreet.master] +[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/LICENSE.txt b/LICENSE.txt index eeae7aaef..9d55eb3a7 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,7 +1,6 @@ mySociety.org Software Licensing -Most of the software in this directory is Copyright (c) 2004-2010 UK -Citizens Online Democracy. +Most of the software here is Copyright (c) UK Citizens Online Democracy. Unless otherwise stated in particular files or directories, this software is free software; you can redistribute it and/or modify it diff --git a/Makefile.PL b/Makefile.PL deleted file mode 100644 index 92f08e405..000000000 --- a/Makefile.PL +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env perl - -use strict; -use warnings; - -use inc::Module::Install; -use Module::Install::Catalyst; - -name 'FixMyStreet-App'; -all_from 'perllib/FixMyStreet/App.pm'; - -requires 'Catalyst::Action::RenderView'; -requires 'Catalyst::Authentication::Store::DBIx::Class'; -requires 'Catalyst::Model::Adaptor'; -requires 'Catalyst::Plugin::Authentication'; -requires 'Catalyst::Plugin::ConfigLoader'; -requires 'Catalyst::Plugin::Session::Store::DBIC'; -requires 'Catalyst::Plugin::Static::Simple'; -requires 'Catalyst::Runtime' => '5.80031'; -requires 'Catalyst::View::TT'; -requires 'Config::General'; -requires 'DBD::Pg' => '2.9.2'; -requires 'DBIx::Class::Schema::Loader'; -requires 'Email::Send'; -requires 'Email::Simple'; -requires 'Email::Valid'; -requires 'HTML::Entities'; -requires 'IO::String'; -requires 'Moose'; -requires 'namespace::autoclean'; -requires 'Net::Domain::TLD'; -requires 'Path::Class'; -requires 'Readonly'; -requires 'Sort::Key'; -requires 'List::MoreUtils'; -requires 'IPC::Run3'; -requires 'Data::UUID'; -requires 'YAML'; -requires 'Geography::NationalGrid'; -requires 'Digest::SHA1'; -requires 'XML::RSS'; -requires 'Regexp::Common'; -requires 'Text::Template'; -requires 'Image::Size'; -requires 'Image::Magick'; -requires 'Statistics::Distributions'; - -test_requires 'Test::More' => '0.88'; -test_requires 'Test::WWW::Mechanize::Catalyst'; -test_requires 'Sub::Override'; - -tests 't/*.t t/*/*.t t/*/*/*.t t/*/*/*/*.t t/*/*/*/*/*.t'; - -catalyst; - -install_script glob('script/*.pl'); -auto_install; -WriteAll; @@ -13,21 +13,104 @@ already been reported and leave updates. Users can also subscribe to email or 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.0. +problems to UK councils and has been copied around the world. The FixMyStreet +Platform is now at version 1.3. -## Releases +## Installation -* v1.0 (24th October 2012) - Official launch of the FixMyStreet platform +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://fixmystreet.org/> +for help and documentation in installing the FixMyStreet Platform. -## Installation +## Contribution Guidelines + +Whilst many contributions come as part of people setting up their own +installation for their area, we of course welcome stand-alone contributions as +well. The *Suitable for Volunteers* label in our GitHub issues hopefully labels +some potential tasks that might be suitable for that situation, though please +do search through the other issues to see if what you're after has been +suggested or discussed - or feel free to add your own issue if not. + +## Mobile apps + +We've extracted all of the mobile apps from this repository into the +[fixmystreet-mobile repository](https://github.com/mysociety/fixmystreet-mobile). + +## Releases -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. +* 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 ) + - Better translation strings for "marked as" updates, fixes #391 + - Less noise when running the tests +* v1.2.3 (2nd September 2013) + - Maintenance release to deal with failing installation + - 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 + - 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 + - Module fixes for running on Travis + - 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 + - Adds some missing states to the admin report edit page +* v1.2 (3rd May 2013) + - 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) + - 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) + - 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, + and coping if MapIt has its debug switched on) +* v1.0 (24th October 2012) + - Official launch of the FixMyStreet platform ## Examples * <http://www.fixmystreet.com/> * <http://www.fiksgatami.no/> +* <http://fixmystreet.ie/> +* <https://www.zueriwieneu.ch/> diff --git a/android/Fix My Street/AndroidManifest.xml b/android/Fix My Street/AndroidManifest.xml deleted file mode 100644 index 0cdee1687..000000000 --- a/android/Fix My Street/AndroidManifest.xml +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> - <!-- version info etc --> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.fixmystreet" android:versionCode="10" - android:versionName="1.01"> - -<uses-sdk android:minSdkVersion="3" /> - <!-- Permissions --> - <uses-permission android:name="android.permission.CAMERA" /> - <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> - <uses-permission android:name="android.permission.INTERNET" /> - - <application android:icon="@drawable/house_icon" - android:label="Fix My Street" android:debuggable="false"> - - <!-- Main screen --> - <activity android:name=".Home" android:label="@string/app_name" - android:theme="@style/Theme.Filler"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - - - <!-- Details page --> - <activity android:name=".Details" android:label="Fix My Street - Add details" - android:theme="@style/Theme.Filler"> - <intent-filter> - <action android:name="android.intent.action.DETAILS" /> - <category android:name="android.intent.category.DEFAULT" /> - </intent-filter> - </activity> - - <!-- Success page --> - <activity android:name=".Success" android:label="Fix My Street - Success" - android:theme="@style/Theme.Filler"> - <intent-filter> - <action android:name="android.intent.action.SUCCESS" /> - <category android:name="android.intent.category.DEFAULT" /> - </intent-filter> - </activity> - - <!-- About page --> - <activity android:name=".About" android:label="Fix My Street - About" - android:theme="@style/Theme.Filler"> - <intent-filter> - <action android:name="android.intent.action.ABOUT" /> - <category android:name="android.intent.category.DEFAULT" /> - </intent-filter> - </activity> - - <!-- Help page --> - <activity android:name=".Help" android:label="Fix My Street - Help" - android:theme="@style/Theme.Filler"> - <intent-filter> - <action android:name="android.intent.action.HELP" /> - <category android:name="android.intent.category.DEFAULT" /> - </intent-filter> - </activity> - - </application> -</manifest>
\ No newline at end of file diff --git a/android/Fix My Street/META-INF/LICENSE b/android/Fix My Street/META-INF/LICENSE deleted file mode 100644 index d64569567..000000000 --- a/android/Fix My Street/META-INF/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/android/Fix My Street/META-INF/MANIFEST.MF b/android/Fix My Street/META-INF/MANIFEST.MF deleted file mode 100644 index 20dbb8237..000000000 --- a/android/Fix My Street/META-INF/MANIFEST.MF +++ /dev/null @@ -1,13 +0,0 @@ -Manifest-Version: 1.0
-Archiver-Version: Plexus Archiver
-Created-By: Apache Maven
-Built-By: maurer
-Build-Jdk: 1.5.0_08
-Implementation-Title: Apache Mime4j
-Implementation-Vendor: The Apache Software Foundation
-Implementation-Version: 0.3
-Specification-Title: Apache Mime4j
-Specification-Vendor: The Apache Software Foundation
-Specification-Version: 0.3
-url: http://james.apache.org/mime4j
-
diff --git a/android/Fix My Street/META-INF/NOTICE b/android/Fix My Street/META-INF/NOTICE deleted file mode 100644 index 66dd74366..000000000 --- a/android/Fix My Street/META-INF/NOTICE +++ /dev/null @@ -1,30 +0,0 @@ -// ------------------------------------------------------------------ -// NOTICE file corresponding to the section 4d of The Apache License, -// Version 2.0, in this case for Apache JAMES Mime4j -// ------------------------------------------------------------------ - -Apache JAMES Mime4j -Copyright 2004-2007 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org). - -This product includes/uses software, Apache Commons Logging (http://jakarta.apache.org/commons/logging/), -developed by The Apache Software Foundation (http://www.apache.org/) -License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html) - -This product includes/uses software, Apache Commons IO (http://jakarta.apache.org/commons/io/), -developed by The Apache Software Foundation (http://www.apache.org/) -License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html) - -This product includes/uses software, Apache Log4j (http://logging.apache.org/log4j/), -developed by The Apache Software Foundation (http://www.apache.org/) -License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html) - - -This product includes/uses software, JUnit (http://www.junit.org/), -developed by Kent Beck, Erich Gamma, and David Saff -License: Common Public License Version 1.0 (http://www.opensource.org/licenses/cpl.php) - -This file is automatically generated by dependencies declared in pom.xml - diff --git a/android/Fix My Street/META-INF/maven/org.apache.james/apache-mime4j/pom.properties b/android/Fix My Street/META-INF/maven/org.apache.james/apache-mime4j/pom.properties deleted file mode 100644 index 453194f40..000000000 --- a/android/Fix My Street/META-INF/maven/org.apache.james/apache-mime4j/pom.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Generated by Maven
-#Thu May 24 18:04:26 CEST 2007
-version=0.3
-groupId=org.apache.james
-artifactId=apache-mime4j
diff --git a/android/Fix My Street/META-INF/maven/org.apache.james/apache-mime4j/pom.xml b/android/Fix My Street/META-INF/maven/org.apache.james/apache-mime4j/pom.xml deleted file mode 100644 index 60317a20a..000000000 --- a/android/Fix My Street/META-INF/maven/org.apache.james/apache-mime4j/pom.xml +++ /dev/null @@ -1,297 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
- -->
- <parent>
- <artifactId>james-project</artifactId>
- <groupId>org.apache.james</groupId>
- <version>1.1</version>
- <!-- Either this really points to the james-project/pom.xml or you
- will have to tune the local repository, later, in this file -->
- <relativePath>../james-project/project/pom.xml</relativePath>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.apache.james</groupId>
- <artifactId>apache-mime4j</artifactId>
- <name>Apache JAMES Mime4j</name>
- <version>0.3</version>
- <description>Java stream based MIME message parser</description>
- <url>http://james.apache.org/mime4j</url>
- <issueManagement>
- <url>http://issues.apache.org/jira/browse/MIME4J</url>
- </issueManagement>
- <inceptionYear>2004</inceptionYear>
- <distributionManagement>
- <site>
- <id>mime4j-website</id>
- <url>scp://minotaur.apache.org/www/james.apache.org/mime4j/</url>
- </site>
- </distributionManagement>
- <scm>
- <connection>scm:svn:http://svn.apache.org/repos/asf/james/mime4j/tags/apache-mime4j-0.3</connection>
- <developerConnection>scm:svn:https://svn.apache.org/repos/asf/james/mime4j/tags/apache-mime4j-0.3</developerConnection>
- <url>http://svn.apache.org/viewvc/james/mime4j/tags/apache-mime4j-0.3</url>
- </scm>
- <build>
- <plugins>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>javacc-maven-plugin</artifactId>
- <version>2.1</version>
- <executions>
- <execution>
- <id>generate-jjtree</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>jjtree</goal>
- </goals>
- <configuration>
- <!-- <nodePackage>org.apache.jsieve.parser.generated</nodePackage> -->
- <outputDirectory>${project.build.directory}/generated-sources/jjtree/org/apache/james/mime4j/field/address/parser</outputDirectory>
- </configuration>
- </execution>
- <execution>
- <id>generate-javacc</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>javacc</goal>
- </goals>
- <configuration>
- <sourceDirectory>${project.build.directory}/generated-sources/jjtree/org/apache/james/mime4j/field/address/parser</sourceDirectory>
- <packageName>org.apache.james.mime4j.field.address.parser</packageName>
- </configuration>
- </execution>
- <execution>
- <id>generate-javacc2</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>javacc</goal>
- </goals>
- <configuration>
- <sourceDirectory>${basedir}/src/main/javacc/org/apache/james/mime4j/field/datetime</sourceDirectory>
- <packageName>org.apache.james.mime4j.field.datetime.parser</packageName>
- </configuration>
- </execution>
- <execution>
- <id>generate-javacc3</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>javacc</goal>
- </goals>
- <configuration>
- <sourceDirectory>${basedir}/src/main/javacc/org/apache/james/mime4j/field/contenttype</sourceDirectory>
- <packageName>org.apache.james.mime4j.field.contenttype.parser</packageName>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>2.0.2</version>
- <configuration>
- <source>1.4</source>
- <target>1.4</target>
- <encoding>iso8859-1</encoding>
- </configuration>
- </plugin>
- <plugin>
- <artifactId>maven-jar-plugin</artifactId>
- <version>2.1</version>
- <configuration>
- <archive>
- <manifestEntries>
- <Specification-Title>Apache Mime4j</Specification-Title>
- <Specification-Version>0.3</Specification-Version>
- <Specification-Vendor>The Apache Software Foundation</Specification-Vendor>
- <Implementation-Title>Apache Mime4j</Implementation-Title>
- <Implementation-Version>0.3</Implementation-Version>
- <Implementation-Vendor>The Apache Software Foundation</Implementation-Vendor>
- <url>${pom.url}</url>
- </manifestEntries>
- </archive>
- </configuration>
- </plugin>
- <plugin>
- <artifactId>maven-javadoc-plugin</artifactId>
- <version>2.2</version>
- <executions>
- <execution>
- <id>create-javadocs</id> <!-- this is used for inheritance merges -->
- <phase>package</phase> <!-- append to the packaging phase. -->
- <goals>
- <goal>javadoc</goal> <!-- goals == mojos -->
- <goal>jar</goal> <!-- goals == mojos -->
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>2.2-beta-1</version>
- <configuration>
- <descriptorSourceDirectory>${basedir}/src/assemble/</descriptorSourceDirectory>
- </configuration>
- <executions>
- <execution>
- <id>make-assembly</id> <!-- this is used for inheritance merges -->
- <phase>package</phase> <!-- append to the packaging phase. -->
- <goals>
- <goal>attached</goal> <!-- goals == mojos -->
- </goals>
- </execution>
- </executions>
- </plugin>
- <!-- Add NOTICE and LICENSE to generated JAR -->
- <plugin>
- <artifactId>maven-remote-resources-plugin</artifactId>
- <version>1.0-alpha-5</version>
- <executions>
- <execution>
- <goals>
- <goal>process</goal>
- </goals>
- <configuration>
- <resourceBundles>
- <resourceBundle>org.apache:apache-jar-resource-bundle:1.2</resourceBundle>
- </resourceBundles>
- <properties>
- <!-- <preProjectText>PRE PROCESS TEXT</preProjectText> -->
- <!-- Our src distribution includes also the test dependencies and
- maven remote resources doen't take this into account, so we
- manualy add the junit disclaimer -->
- <postProjectText>
- This product includes/uses software, JUnit (http://www.junit.org/),
-developed by Kent Beck, Erich Gamma, and David Saff
-License: Common Public License Version 1.0 (http://www.opensource.org/licenses/cpl.php)
-
-This file is automatically generated by dependencies declared in pom.xml
- </postProjectText>
- <addLicense>true</addLicense>
- </properties>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <!-- Use the assembly or we won't have the LICENSE/NOTICE
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- </plugin>
- -->
- <!--
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- </plugin>
- -->
- </plugins>
- </build>
- <repositories>
- <repository>
- <id>local-mime4j-stage-repository</id>
- <name>Local mime4j stage repository</name>
- <!-- Please note that due to http://jira.codehaus.org/browse/MNG-2896 -->
- <!-- If you don't have james-project checked out in ../james-project -->
- <!-- you will have to place your absolute path to the project instead -->
- <!-- of ${basedir}, or, otherwise, manually install the parent poms -->
- <!--
- mvn -fignorepom.xml install:install-file
- -Dfile=stage\org.apache.james\poms\james-parent-1.1.pom
- -Dpackaging=pom
- -DgroupId=org.apache.james
- -DartifactId=james-parent
- -Dversion=1.1
- mvn -fignorepom.xml install:install-file
- -Dfile=stage\org.apache.james\poms\james-project-1.1.pom
- -Dpackaging=pom
- -DgroupId=org.apache.james
- -DartifactId=james-project
- -Dversion=1.1
- -->
- <url>file://${basedir}/stage</url>
- <layout>legacy</layout>
- <snapshots>
- <enabled>true</enabled>
- <checksumPolicy>ignore</checksumPolicy>
- </snapshots>
- <releases>
- <enabled>true</enabled>
- <checksumPolicy>ignore</checksumPolicy>
- </releases>
- </repository>
- </repositories>
- <dependencies>
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>1.1</version>
- <exclusions>
- <exclusion>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- </exclusion>
- <exclusion>
- <groupId>logkit</groupId>
- <artifactId>logkit</artifactId>
- </exclusion>
- <exclusion>
- <groupId>avalon-framework</groupId>
- <artifactId>avalon-framework</artifactId>
- </exclusion>
- <exclusion>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.14</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <type>jar</type>
- <!-- Removed as a workaround for an unidentified M2 bug -->
- <scope>test</scope>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>1.2</version>
- </dependency>
- </dependencies>
-
- <reporting>
- <plugins>
- <plugin>
- <artifactId>maven-javadoc-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>jxr-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </reporting>
-
-</project>
\ No newline at end of file diff --git a/android/Fix My Street/default.properties b/android/Fix My Street/default.properties deleted file mode 100644 index 08ad68f11..000000000 --- a/android/Fix My Street/default.properties +++ /dev/null @@ -1,14 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system use, -# "build.properties", and override values to adapt the script to your -# project structure. - -# Indicates whether an apk should be generated for each density. -split.density=false -# Project target. -target=android-4 -apk-configurations= diff --git a/android/Fix My Street/org/apache/james/mime4j/AbstractContentHandler.class b/android/Fix My Street/org/apache/james/mime4j/AbstractContentHandler.class Binary files differdeleted file mode 100644 index 5ddd83bb5..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/AbstractContentHandler.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/BodyDescriptor.class b/android/Fix My Street/org/apache/james/mime4j/BodyDescriptor.class Binary files differdeleted file mode 100644 index 71a103ae1..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/BodyDescriptor.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/CloseShieldInputStream.class b/android/Fix My Street/org/apache/james/mime4j/CloseShieldInputStream.class Binary files differdeleted file mode 100644 index 72464c513..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/CloseShieldInputStream.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/ContentHandler.class b/android/Fix My Street/org/apache/james/mime4j/ContentHandler.class Binary files differdeleted file mode 100644 index 4a14c44c1..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/ContentHandler.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/EOLConvertingInputStream.class b/android/Fix My Street/org/apache/james/mime4j/EOLConvertingInputStream.class Binary files differdeleted file mode 100644 index f0021d6ca..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/EOLConvertingInputStream.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/MimeBoundaryInputStream.class b/android/Fix My Street/org/apache/james/mime4j/MimeBoundaryInputStream.class Binary files differdeleted file mode 100644 index 8b3151d7c..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/MimeBoundaryInputStream.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/MimeStreamParser.class b/android/Fix My Street/org/apache/james/mime4j/MimeStreamParser.class Binary files differdeleted file mode 100644 index c2975c686..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/MimeStreamParser.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/RootInputStream.class b/android/Fix My Street/org/apache/james/mime4j/RootInputStream.class Binary files differdeleted file mode 100644 index 625ea3873..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/RootInputStream.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/SimpleContentHandler.class b/android/Fix My Street/org/apache/james/mime4j/SimpleContentHandler.class Binary files differdeleted file mode 100644 index 0ab9269f2..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/SimpleContentHandler.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/decoder/Base64InputStream.class b/android/Fix My Street/org/apache/james/mime4j/decoder/Base64InputStream.class Binary files differdeleted file mode 100644 index 282919223..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/decoder/Base64InputStream.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/decoder/ByteQueue.class b/android/Fix My Street/org/apache/james/mime4j/decoder/ByteQueue.class Binary files differdeleted file mode 100644 index b51edb99d..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/decoder/ByteQueue.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/decoder/DecoderUtil.class b/android/Fix My Street/org/apache/james/mime4j/decoder/DecoderUtil.class Binary files differdeleted file mode 100644 index 7e6460091..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/decoder/DecoderUtil.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/decoder/QuotedPrintableInputStream.class b/android/Fix My Street/org/apache/james/mime4j/decoder/QuotedPrintableInputStream.class Binary files differdeleted file mode 100644 index e137431ba..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/decoder/QuotedPrintableInputStream.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer$1.class b/android/Fix My Street/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer$1.class Binary files differdeleted file mode 100644 index a2b4beffb..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer$1.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer.class b/android/Fix My Street/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer.class Binary files differdeleted file mode 100644 index 475caac1a..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/AddressListField$Parser.class b/android/Fix My Street/org/apache/james/mime4j/field/AddressListField$Parser.class Binary files differdeleted file mode 100644 index 626011756..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/AddressListField$Parser.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/AddressListField.class b/android/Fix My Street/org/apache/james/mime4j/field/AddressListField.class Binary files differdeleted file mode 100644 index 131b834fb..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/AddressListField.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/ContentTransferEncodingField$Parser.class b/android/Fix My Street/org/apache/james/mime4j/field/ContentTransferEncodingField$Parser.class Binary files differdeleted file mode 100644 index fdadacc77..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/ContentTransferEncodingField$Parser.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/ContentTransferEncodingField.class b/android/Fix My Street/org/apache/james/mime4j/field/ContentTransferEncodingField.class Binary files differdeleted file mode 100644 index 41219b7d8..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/ContentTransferEncodingField.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/ContentTypeField$Parser.class b/android/Fix My Street/org/apache/james/mime4j/field/ContentTypeField$Parser.class Binary files differdeleted file mode 100644 index 2f563d8e2..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/ContentTypeField$Parser.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/ContentTypeField.class b/android/Fix My Street/org/apache/james/mime4j/field/ContentTypeField.class Binary files differdeleted file mode 100644 index 0114540b7..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/ContentTypeField.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/DateTimeField$Parser.class b/android/Fix My Street/org/apache/james/mime4j/field/DateTimeField$Parser.class Binary files differdeleted file mode 100644 index c2e1fa58c..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/DateTimeField$Parser.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/DateTimeField.class b/android/Fix My Street/org/apache/james/mime4j/field/DateTimeField.class Binary files differdeleted file mode 100644 index 125081a3d..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/DateTimeField.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/DefaultFieldParser.class b/android/Fix My Street/org/apache/james/mime4j/field/DefaultFieldParser.class Binary files differdeleted file mode 100644 index 4b5982687..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/DefaultFieldParser.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/DelegatingFieldParser.class b/android/Fix My Street/org/apache/james/mime4j/field/DelegatingFieldParser.class Binary files differdeleted file mode 100644 index 9dbd81ba5..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/DelegatingFieldParser.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/Field.class b/android/Fix My Street/org/apache/james/mime4j/field/Field.class Binary files differdeleted file mode 100644 index eec6867d9..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/Field.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/FieldParser.class b/android/Fix My Street/org/apache/james/mime4j/field/FieldParser.class Binary files differdeleted file mode 100644 index a0f2bfb43..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/FieldParser.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/MailboxField$Parser.class b/android/Fix My Street/org/apache/james/mime4j/field/MailboxField$Parser.class Binary files differdeleted file mode 100644 index 15baab4b3..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/MailboxField$Parser.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/MailboxField.class b/android/Fix My Street/org/apache/james/mime4j/field/MailboxField.class Binary files differdeleted file mode 100644 index a96b8f57b..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/MailboxField.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/MailboxListField$Parser.class b/android/Fix My Street/org/apache/james/mime4j/field/MailboxListField$Parser.class Binary files differdeleted file mode 100644 index 7cfa75e6b..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/MailboxListField$Parser.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/MailboxListField.class b/android/Fix My Street/org/apache/james/mime4j/field/MailboxListField.class Binary files differdeleted file mode 100644 index 50edd043c..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/MailboxListField.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/UnstructuredField$Parser.class b/android/Fix My Street/org/apache/james/mime4j/field/UnstructuredField$Parser.class Binary files differdeleted file mode 100644 index 551c33137..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/UnstructuredField$Parser.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/UnstructuredField.class b/android/Fix My Street/org/apache/james/mime4j/field/UnstructuredField.class Binary files differdeleted file mode 100644 index 443971fd6..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/UnstructuredField.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/Address.class b/android/Fix My Street/org/apache/james/mime4j/field/address/Address.class Binary files differdeleted file mode 100644 index be18968c1..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/Address.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/AddressList.class b/android/Fix My Street/org/apache/james/mime4j/field/address/AddressList.class Binary files differdeleted file mode 100644 index b5f2c77b6..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/AddressList.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/Builder$ChildNodeIterator.class b/android/Fix My Street/org/apache/james/mime4j/field/address/Builder$ChildNodeIterator.class Binary files differdeleted file mode 100644 index 1c93a3ed2..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/Builder$ChildNodeIterator.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/Builder.class b/android/Fix My Street/org/apache/james/mime4j/field/address/Builder.class Binary files differdeleted file mode 100644 index 8aeb2950f..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/Builder.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/DomainList.class b/android/Fix My Street/org/apache/james/mime4j/field/address/DomainList.class Binary files differdeleted file mode 100644 index dbca8a3e7..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/DomainList.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/Group.class b/android/Fix My Street/org/apache/james/mime4j/field/address/Group.class Binary files differdeleted file mode 100644 index 29b7e653e..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/Group.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/Mailbox.class b/android/Fix My Street/org/apache/james/mime4j/field/address/Mailbox.class Binary files differdeleted file mode 100644 index 44c5173f4..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/Mailbox.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/MailboxList.class b/android/Fix My Street/org/apache/james/mime4j/field/address/MailboxList.class Binary files differdeleted file mode 100644 index 18b3441af..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/MailboxList.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/NamedMailbox.class b/android/Fix My Street/org/apache/james/mime4j/field/address/NamedMailbox.class Binary files differdeleted file mode 100644 index 2ed485925..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/NamedMailbox.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddr_spec.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddr_spec.class Binary files differdeleted file mode 100644 index 43efc23b3..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddr_spec.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddress.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddress.class Binary files differdeleted file mode 100644 index cfc98ff52..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddress.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddress_list.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddress_list.class Binary files differdeleted file mode 100644 index 8f5f3141b..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTaddress_list.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTangle_addr.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTangle_addr.class Binary files differdeleted file mode 100644 index e0cbff7d6..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTangle_addr.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTdomain.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTdomain.class Binary files differdeleted file mode 100644 index d29c6f316..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTdomain.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTgroup_body.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTgroup_body.class Binary files differdeleted file mode 100644 index 340dc0e7d..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTgroup_body.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTlocal_part.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTlocal_part.class Binary files differdeleted file mode 100644 index 57f346c4f..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTlocal_part.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTmailbox.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTmailbox.class Binary files differdeleted file mode 100644 index ab4a8552c..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTmailbox.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTname_addr.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTname_addr.class Binary files differdeleted file mode 100644 index 71ab6fc85..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTname_addr.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTphrase.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTphrase.class Binary files differdeleted file mode 100644 index c48b5dcd9..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTphrase.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTroute.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTroute.class Binary files differdeleted file mode 100644 index 6dd335ee9..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ASTroute.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$1.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$1.class Binary files differdeleted file mode 100644 index 5f584514e..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$1.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$JJCalls.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$JJCalls.class Binary files differdeleted file mode 100644 index e38ef68cb..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$JJCalls.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$LookaheadSuccess.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$LookaheadSuccess.class Binary files differdeleted file mode 100644 index 584c97273..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser$LookaheadSuccess.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser.class Binary files differdeleted file mode 100644 index c2be19f11..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParser.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserConstants.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserConstants.class Binary files differdeleted file mode 100644 index 6960771f9..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserConstants.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserTokenManager.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserTokenManager.class Binary files differdeleted file mode 100644 index 63fcae477..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserTokenManager.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserTreeConstants.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserTreeConstants.class Binary files differdeleted file mode 100644 index efd4c49a0..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserTreeConstants.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserVisitor.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserVisitor.class Binary files differdeleted file mode 100644 index 2cd81bc1a..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/AddressListParserVisitor.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/BaseNode.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/BaseNode.class Binary files differdeleted file mode 100644 index 08716d149..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/BaseNode.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/JJTAddressListParserState.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/JJTAddressListParserState.class Binary files differdeleted file mode 100644 index 798515dcb..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/JJTAddressListParserState.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/Node.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/Node.class Binary files differdeleted file mode 100644 index cfdc5f004..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/Node.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ParseException.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ParseException.class Binary files differdeleted file mode 100644 index 7c0c348fe..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/ParseException.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/SimpleCharStream.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/SimpleCharStream.class Binary files differdeleted file mode 100644 index 67f580123..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/SimpleCharStream.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/SimpleNode.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/SimpleNode.class Binary files differdeleted file mode 100644 index 20e82bba6..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/SimpleNode.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/Token.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/Token.class Binary files differdeleted file mode 100644 index 7eae4946b..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/Token.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/TokenMgrError.class b/android/Fix My Street/org/apache/james/mime4j/field/address/parser/TokenMgrError.class Binary files differdeleted file mode 100644 index 4bc1bb2af..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/address/parser/TokenMgrError.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParser.class b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParser.class Binary files differdeleted file mode 100644 index 5a3067ec7..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParser.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserConstants.class b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserConstants.class Binary files differdeleted file mode 100644 index bfa2a042f..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserConstants.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserTokenManager.class b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserTokenManager.class Binary files differdeleted file mode 100644 index 6d5cde408..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserTokenManager.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ParseException.class b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ParseException.class Binary files differdeleted file mode 100644 index 141a41b38..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/ParseException.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/SimpleCharStream.class b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/SimpleCharStream.class Binary files differdeleted file mode 100644 index cd622603e..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/SimpleCharStream.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/Token.class b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/Token.class Binary files differdeleted file mode 100644 index 97aaf5918..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/Token.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/TokenMgrError.class b/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/TokenMgrError.class Binary files differdeleted file mode 100644 index 6c3838fa9..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/contenttype/parser/TokenMgrError.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/DateTime.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/DateTime.class Binary files differdeleted file mode 100644 index d0398f2e2..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/datetime/DateTime.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser$Date.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser$Date.class Binary files differdeleted file mode 100644 index 412a96c4c..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser$Date.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser$Time.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser$Time.class Binary files differdeleted file mode 100644 index b855f8e1e..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser$Time.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser.class Binary files differdeleted file mode 100644 index 644a5d50a..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParser.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParserConstants.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParserConstants.class Binary files differdeleted file mode 100644 index 1d1a34fa5..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParserConstants.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParserTokenManager.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParserTokenManager.class Binary files differdeleted file mode 100644 index 96b6aa700..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/DateTimeParserTokenManager.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/ParseException.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/ParseException.class Binary files differdeleted file mode 100644 index be93f47b8..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/ParseException.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/SimpleCharStream.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/SimpleCharStream.class Binary files differdeleted file mode 100644 index 69e3f5cf1..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/SimpleCharStream.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/Token.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/Token.class Binary files differdeleted file mode 100644 index 54bced209..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/Token.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/TokenMgrError.class b/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/TokenMgrError.class Binary files differdeleted file mode 100644 index 3bff6fd4d..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/field/datetime/parser/TokenMgrError.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/message/AbstractBody.class b/android/Fix My Street/org/apache/james/mime4j/message/AbstractBody.class Binary files differdeleted file mode 100644 index 4b1c1b45e..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/message/AbstractBody.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/message/BinaryBody.class b/android/Fix My Street/org/apache/james/mime4j/message/BinaryBody.class Binary files differdeleted file mode 100644 index 9000994f3..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/message/BinaryBody.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/message/Body.class b/android/Fix My Street/org/apache/james/mime4j/message/Body.class Binary files differdeleted file mode 100644 index 4bd9990de..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/message/Body.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/message/BodyPart.class b/android/Fix My Street/org/apache/james/mime4j/message/BodyPart.class Binary files differdeleted file mode 100644 index 80a1077f6..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/message/BodyPart.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/message/Entity.class b/android/Fix My Street/org/apache/james/mime4j/message/Entity.class Binary files differdeleted file mode 100644 index 310d68267..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/message/Entity.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/message/Header$1.class b/android/Fix My Street/org/apache/james/mime4j/message/Header$1.class Binary files differdeleted file mode 100644 index 1d52d2f18..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/message/Header$1.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/message/Header.class b/android/Fix My Street/org/apache/james/mime4j/message/Header.class Binary files differdeleted file mode 100644 index 31b897c91..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/message/Header.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/message/Message$MessageBuilder.class b/android/Fix My Street/org/apache/james/mime4j/message/Message$MessageBuilder.class Binary files differdeleted file mode 100644 index b00b138a2..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/message/Message$MessageBuilder.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/message/Message.class b/android/Fix My Street/org/apache/james/mime4j/message/Message.class Binary files differdeleted file mode 100644 index c504f0201..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/message/Message.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/message/Multipart.class b/android/Fix My Street/org/apache/james/mime4j/message/Multipart.class Binary files differdeleted file mode 100644 index 4cc744305..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/message/Multipart.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/message/TempFileBinaryBody.class b/android/Fix My Street/org/apache/james/mime4j/message/TempFileBinaryBody.class Binary files differdeleted file mode 100644 index b385df159..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/message/TempFileBinaryBody.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/message/TempFileTextBody.class b/android/Fix My Street/org/apache/james/mime4j/message/TempFileTextBody.class Binary files differdeleted file mode 100644 index 975cddc70..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/message/TempFileTextBody.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/message/TextBody.class b/android/Fix My Street/org/apache/james/mime4j/message/TextBody.class Binary files differdeleted file mode 100644 index f266ad9a7..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/message/TextBody.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil$1.class b/android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil$1.class Binary files differdeleted file mode 100644 index caa0fe160..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil$1.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil$Charset.class b/android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil$Charset.class Binary files differdeleted file mode 100644 index f20946ea1..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil$Charset.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil.class b/android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil.class Binary files differdeleted file mode 100644 index 0ec680f95..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/util/CharsetUtil.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/util/PartialInputStream.class b/android/Fix My Street/org/apache/james/mime4j/util/PartialInputStream.class Binary files differdeleted file mode 100644 index 568c853d1..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/util/PartialInputStream.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/util/PositionInputStream.class b/android/Fix My Street/org/apache/james/mime4j/util/PositionInputStream.class Binary files differdeleted file mode 100644 index 77af22099..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/util/PositionInputStream.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$1.class b/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$1.class Binary files differdeleted file mode 100644 index df1fbf828..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$1.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$SimpleTempFile.class b/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$SimpleTempFile.class Binary files differdeleted file mode 100644 index fc922ed69..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$SimpleTempFile.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$SimpleTempPath.class b/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$SimpleTempPath.class Binary files differdeleted file mode 100644 index 774d48a41..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage$SimpleTempPath.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage.class b/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage.class Binary files differdeleted file mode 100644 index cfaf30e14..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/util/SimpleTempStorage.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/util/TempFile.class b/android/Fix My Street/org/apache/james/mime4j/util/TempFile.class Binary files differdeleted file mode 100644 index c40108fe7..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/util/TempFile.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/util/TempPath.class b/android/Fix My Street/org/apache/james/mime4j/util/TempPath.class Binary files differdeleted file mode 100644 index c46f863b3..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/util/TempPath.class +++ /dev/null diff --git a/android/Fix My Street/org/apache/james/mime4j/util/TempStorage.class b/android/Fix My Street/org/apache/james/mime4j/util/TempStorage.class Binary files differdeleted file mode 100644 index d2f550191..000000000 --- a/android/Fix My Street/org/apache/james/mime4j/util/TempStorage.class +++ /dev/null diff --git a/android/Fix My Street/res/drawable/add.png b/android/Fix My Street/res/drawable/add.png Binary files differdeleted file mode 100644 index 96fe1015a..000000000 --- a/android/Fix My Street/res/drawable/add.png +++ /dev/null diff --git a/android/Fix My Street/res/drawable/blue_filler.xml b/android/Fix My Street/res/drawable/blue_filler.xml deleted file mode 100644 index 5d2282a08..000000000 --- a/android/Fix My Street/res/drawable/blue_filler.xml +++ /dev/null @@ -1,3 +0,0 @@ -<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
- android:src="@drawable/filler" android:tileMode="repeat" />
-
diff --git a/android/Fix My Street/res/drawable/done.png b/android/Fix My Street/res/drawable/done.png Binary files differdeleted file mode 100644 index 256938f31..000000000 --- a/android/Fix My Street/res/drawable/done.png +++ /dev/null diff --git a/android/Fix My Street/res/drawable/filler.png b/android/Fix My Street/res/drawable/filler.png Binary files differdeleted file mode 100644 index 08df3be9b..000000000 --- a/android/Fix My Street/res/drawable/filler.png +++ /dev/null diff --git a/android/Fix My Street/res/drawable/house_icon.png b/android/Fix My Street/res/drawable/house_icon.png Binary files differdeleted file mode 100644 index bc92d7790..000000000 --- a/android/Fix My Street/res/drawable/house_icon.png +++ /dev/null diff --git a/android/Fix My Street/res/drawable/spacer.png b/android/Fix My Street/res/drawable/spacer.png Binary files differdeleted file mode 100644 index 71a9f5598..000000000 --- a/android/Fix My Street/res/drawable/spacer.png +++ /dev/null diff --git a/android/Fix My Street/res/drawable/street_background_smaller.png b/android/Fix My Street/res/drawable/street_background_smaller.png Binary files differdeleted file mode 100644 index 1f37fc39e..000000000 --- a/android/Fix My Street/res/drawable/street_background_smaller.png +++ /dev/null diff --git a/android/Fix My Street/res/layout/about.xml b/android/Fix My Street/res/layout/about.xml deleted file mode 100644 index 1e413520b..000000000 --- a/android/Fix My Street/res/layout/about.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?>
-
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent" android:layout_height="fill_parent"
- android:padding="0dip" android:fillViewport="true">
-
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical" android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:padding="0dip">
-
- <TextView android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:text="What is Fix My Street?"
- android:paddingBottom="5dip" android:paddingTop="5dip"
- android:paddingLeft="5dip" android:paddingRight="5dip"
- android:textStyle="bold" />
-
- <TextView android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="Fix My Street helps you report problems in your local area - like potholes or broken streetlights - to your council."
- android:paddingBottom="5dip" android:paddingLeft="5dip"
- android:paddingRight="5dip" />
-
- <TextView android:id="@+id/faq" android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="Fix My Street is mainly a website, run by mySociety, a project of a registered charity. For more information, see http://www.fixmystreet.com/faq."
- android:paddingBottom="5dip" android:paddingLeft="5dip"
- android:paddingRight="5dip" android:linksClickable="true" />
-
-
- <TextView android:id="@+id/faq2" android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text=""
- android:paddingBottom="5dip" android:paddingLeft="5dip"
- android:paddingRight="5dip" android:linksClickable="true" />
-
- <TextView android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:text=" "
- android:layout_weight="1" />
-
- <ImageView android:layout_width="fill_parent" android:scaleType="centerCrop"
- android:layout_gravity="bottom" android:layout_height="wrap_content"
- android:src="@drawable/street_background_smaller"></ImageView>
- </LinearLayout>
-
-</ScrollView>
\ No newline at end of file diff --git a/android/Fix My Street/res/layout/details.xml b/android/Fix My Street/res/layout/details.xml deleted file mode 100644 index 4464ed3f1..000000000 --- a/android/Fix My Street/res/layout/details.xml +++ /dev/null @@ -1,71 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?>
-
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent" android:layout_height="fill_parent"
- android:fillViewport="true">
-
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical" android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:padding="0dip">
-
- <!-- And a name -->
- <TextView android:id="@+id/name_save" android:layout_width="fill_parent"
- android:paddingTop="5dip" android:paddingLeft="5dip"
- android:paddingRight="5dip" android:layout_height="wrap_content"
- android:text="Short title for problem (you can add more later):" />
-
- <!-- Subject -->
-
- <LinearLayout android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:orientation="horizontal"
- android:padding="5dip">
- <TextView android:id="@+id/subject_label"
- android:layout_width="80sp" android:layout_height="24sp"
- android:text="Title:" />
- <EditText android:id="@+id/subject_text"
- android:layout_width="fill_parent" android:layout_height="40sp"
- android:singleLine="True" android:capitalize="sentences" />
- </LinearLayout>
-
- <!-- And a name -->
- <TextView android:id="@+id/name_save" android:layout_width="fill_parent"
- android:paddingLeft="5dip" android:paddingRight="5dip"
- android:layout_height="wrap_content" android:text="We'll save these for next time:" />
-
- <LinearLayout android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:orientation="horizontal"
- android:padding="5dip">
- <TextView android:id="@+id/name_label" android:layout_width="80sp"
- android:layout_height="24sp" android:text="Your name:" />
- <EditText android:id="@+id/name_text" android:layout_width="fill_parent"
- android:layout_height="40sp" android:singleLine="True"
- android:capitalize="words" />
- </LinearLayout>
-
- <!-- An email address -->
-
- <LinearLayout android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:orientation="horizontal"
- android:padding="5dip">
- <TextView android:id="@+id/email_label"
- android:layout_width="80sp" android:layout_height="24sp"
- android:text="Your email:" />
- <EditText android:id="@+id/email_text" android:layout_width="fill_parent"
- android:layout_height="40sp" android:singleLine="True"
- android:capitalize="none" />
- </LinearLayout>
-
- <Button android:id="@+id/submit_button" android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:text="Save details"
- android:padding="5dip" />
-
- <TextView android:layout_width="fill_parent"
- android:layout_weight="1" android:layout_height="wrap_content"
- android:text=" " />
-
- <ImageView android:layout_width="fill_parent"
- android:scaleType="centerCrop" android:layout_gravity="bottom"
- android:layout_height="wrap_content" android:src="@drawable/street_background_smaller"></ImageView>
- </LinearLayout>
-
-</ScrollView>
\ No newline at end of file diff --git a/android/Fix My Street/res/layout/help.xml b/android/Fix My Street/res/layout/help.xml deleted file mode 100644 index 2ae8052d9..000000000 --- a/android/Fix My Street/res/layout/help.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?>
-
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent" android:layout_height="fill_parent"
- android:fillViewport="true">
-
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical" android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:padding="0dip"
- android:scrollbars="vertical">
-
- <TextView android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:text="What do I do?"
- android:paddingBottom="5dip" android:paddingTop="5dip"
- android:paddingLeft="5dip" android:paddingRight="5dip"
- android:textStyle="bold" />
-
- <TextView android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:text="@string/instructions"
- android:paddingBottom="5dip" android:paddingLeft="5dip"
- android:paddingRight="5dip" />
-
- <TextView android:id="@+id/faq" android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="For any other questions, see http://www.fixmystreet.com/faq, or email anna@mysociety.org."
- android:paddingBottom="5dip" android:paddingTop="5dip"
- android:paddingLeft="5dip" android:paddingRight="5dip"
- android:textStyle="bold" android:linksClickable="true" />
-
- <TextView android:layout_width="fill_parent" android:layout_weight="1"
- android:layout_height="wrap_content" android:text=" "
- />
-
- <ImageView android:layout_width="fill_parent" android:scaleType="centerCrop"
- android:layout_gravity="bottom" android:layout_height="wrap_content"
- android:src="@drawable/street_background_smaller"></ImageView>
- </LinearLayout>
-</ScrollView>
\ No newline at end of file diff --git a/android/Fix My Street/res/layout/home.xml b/android/Fix My Street/res/layout/home.xml deleted file mode 100644 index bcaae0669..000000000 --- a/android/Fix My Street/res/layout/home.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?>
-
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent" android:layout_height="fill_parent"
- android:fillViewport="true">
-
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical" android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:paddingTop="10dip">
-
- <Button android:id="@+id/camera_button" android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:text="Take photo"
- android:drawableRight="@drawable/add" />
-
- <Button android:id="@+id/details_button" android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:text="Add details"
- android:drawableRight="@drawable/add" android:paddingRight="10dip"
- android:paddingLeft="10dip" />
-
- <View android:layout_width="1dip" android:layout_height="10dip"
- android:src="@drawable/spacer" />
-
- <TextView android:paddingRight="10dip" android:paddingLeft="10dip"
- android:layout_width="wrap_content" android:textColor="#87190f"
- android:id="@+id/progress_text" android:layout_height="wrap_content"
- android:text="Waiting for a GPS fix... Please make sure you can see the sky." />
-
- <Button android:id="@+id/report_button" android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:text="Report to Fix My Street"
- android:paddingRight="10dip" android:paddingLeft="10dip" />
-
-
- <TextView android:layout_width="fill_parent"
- android:layout_weight="1" android:layout_height="wrap_content"
- android:text=" " />
-
- <ImageView android:id="@+id/background_image"
- android:scaleType="centerCrop" android:layout_width="fill_parent"
- android:layout_gravity="bottom" android:layout_height="wrap_content"
- android:src="@drawable/street_background_smaller"></ImageView>
-
- </LinearLayout>
-
-</ScrollView>
\ No newline at end of file diff --git a/android/Fix My Street/res/layout/success.xml b/android/Fix My Street/res/layout/success.xml deleted file mode 100644 index 4c24055cc..000000000 --- a/android/Fix My Street/res/layout/success.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?>
-
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent" android:layout_height="fill_parent"
- android:fillViewport="true">
-
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical" android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:padding="0dip">
-
- <!--
- <Button android:id="@+id/about_button"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:text="About Fix My
- Street" />
- -->
-
- <TextView android:id="@+id/hello_text" android:layout_width="fill_parent"
- android:paddingBottom="5dip" android:paddingTop="5dip"
- android:paddingLeft="5dip" android:paddingRight="5dip"
- android:layout_height="wrap_content" android:text="Now check your email!"
- android:textStyle="bold" />
-
- <TextView android:id="@+id/hello_text" android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:paddingBottom="5dip"
- android:paddingTop="5dip" android:paddingLeft="5dip"
- android:paddingRight="5dip"
- android:text="You'll receive an email from us soon. Please click on the confirmation link, check the location carefully, and provide a few more details." />
-
- <TextView android:id="@+id/hello_text" android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:paddingBottom="5dip"
- android:paddingTop="5dip" android:paddingLeft="5dip"
- android:paddingRight="5dip"
- android:text="If the email doesn't arrive within a few hours, please check your spam folder - sometimes the emails can be marked as spam." />
-
- <TextView android:layout_width="fill_parent" android:layout_weight="1"
- android:layout_height="wrap_content" android:text=" "
- />
-
- <ImageView android:layout_width="fill_parent" android:scaleType="centerCrop"
- android:layout_gravity="bottom" android:layout_height="wrap_content"
- android:src="@drawable/street_background_smaller"></ImageView>
- </LinearLayout>
-</ScrollView>
\ No newline at end of file diff --git a/android/Fix My Street/res/values/strings.xml b/android/Fix My Street/res/values/strings.xml deleted file mode 100644 index 0c88c4ea7..000000000 --- a/android/Fix My Street/res/values/strings.xml +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> -<!-- Welcome screen --> - <string name="app_name">Fix My Street</string> - - <!-- About screen --> - <string name="instructions">1. Click \'Take photo\', then on the camera button to take a photo.\n2. Click \'Add details\', then give the problem a name (e.g. \'Broken street light\'), and add your own name and email address. \n3. Wait for a GPS fix (it\'ll take longer if it\'s cloudy). Then, click the \'Report\' button to upload the problem to Fix My Street. \n4. Check your email. You\'ll need to click on a link to confirm the problem and add a few more details. </string> -</resources> diff --git a/android/Fix My Street/res/values/themes.xml b/android/Fix My Street/res/values/themes.xml deleted file mode 100644 index 65ba3b328..000000000 --- a/android/Fix My Street/res/values/themes.xml +++ /dev/null @@ -1,6 +0,0 @@ -<resources>
- <style name="Theme.Filler" parent="android:Theme">
- <item name="android:windowBackground">@drawable/blue_filler</item>
- <item name="android:textColor">#000000</item>
- </style>
-</resources>
\ No newline at end of file diff --git a/android/Fix My Street/src/com/android/fixmystreet/About.java b/android/Fix My Street/src/com/android/fixmystreet/About.java deleted file mode 100644 index 07d323ce8..000000000 --- a/android/Fix My Street/src/com/android/fixmystreet/About.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.android.fixmystreet;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.os.Bundle;
-import android.text.util.Linkify;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.widget.TextView;
-
-public class About extends Activity {
-
- private Bundle extras = null;
- String versionName = "";
-
- @Override
- protected void onCreate(Bundle icicle) {
- super.onCreate(icicle);
- setContentView(R.layout.about);
- extras = getIntent().getExtras();
-
- try {
- versionName = getPackageManager().getPackageInfo(getPackageName(),
- 0).versionName;
- } catch (NameNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- // add links
- TextView noteView = (TextView) findViewById(R.id.faq);
- TextView noteView2 = (TextView) findViewById(R.id.faq2);
- noteView2.setText("This application is version " + versionName + " of Fix My Street for Android, written by Anna Powell-Smith. Thanks to Paul for testing.");
- Linkify.addLinks(noteView, Linkify.ALL);
- }
-
- // ****************************************************
- // Options menu functions
- // ****************************************************
-
- // TODO - add Bundles for these?
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- super.onCreateOptionsMenu(menu);
- MenuItem homeItem = menu.add(0, 0, 0, "Home");
- MenuItem aboutItem = menu.add(0, 1, 0, "Help");
- aboutItem.setIcon(android.R.drawable.ic_menu_info_details);
- homeItem.setIcon(android.R.drawable.ic_menu_edit);
- return true;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case 0:
- Intent i = new Intent(About.this, Home.class);
- if (extras != null) {
- i.putExtras(extras);
- }
- startActivity(i);
- return true;
- case 1:
- Intent j = new Intent(About.this, Help.class);
- if (extras != null) {
- j.putExtras(extras);
- }
- startActivity(j);
- return true;
- }
- return false;
- }
-}
\ No newline at end of file diff --git a/android/Fix My Street/src/com/android/fixmystreet/Details.java b/android/Fix My Street/src/com/android/fixmystreet/Details.java deleted file mode 100644 index 802be0342..000000000 --- a/android/Fix My Street/src/com/android/fixmystreet/Details.java +++ /dev/null @@ -1,252 +0,0 @@ -// ********************************************************************************
-//details.java
-//This file is where most of the work of the application happens. It collects the
-//subject of the problem, plus the user's name and email, from the Android form.
-//It uploads them to FixMyStreet, and shows a success or failure message.
-//
-//********************************************************************************
-
-package com.android.fixmystreet;
-
-import java.util.regex.*;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.os.Bundle;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.EditText;
-
-public class Details extends Activity {
- private EditText nameET;
- private EditText emailET;
- private EditText subjectET;
- String storedName;
- String storedEmail;
- private String subject;
- private String name;
- private String email;
- private View submitButton;
- //private static final String LOG_TAG = "Details";
- public static final String PREFS_NAME = "Settings";
- final int NAME_WARNING = 999;
- final int SUBJECT_WARNING = 998;
- final int EMAIL_WARNING = 997;
- private Bundle extras;
- private Boolean havePicture = false;
-
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- // set up the page
- setContentView(R.layout.details);
- nameET = (EditText) findViewById(R.id.name_text);
- emailET = (EditText) findViewById(R.id.email_text);
- subjectET = (EditText) findViewById(R.id.subject_text);
- submitButton = this.findViewById(R.id.submit_button);
-
- // set the button listeners
- setListeners();
-
- // fill in name/email, if already defined
- // NB - from settings, rather than from bundle...
- SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
- name = settings.getString("myName", "");
- email = settings.getString("myEmail", "");
- nameET.setText(name);
- emailET.setText(email);
-
- extras = getIntent().getExtras();
- if (extras != null) {
- // Details extras
- subject = extras.getString("subject");
- havePicture = extras.getBoolean("photo", havePicture);
-// Log.d(LOG_TAG, "extras havePicture" + havePicture);
- }
- if (subject != null) {
- subjectET.setText(subject);
- }
- }
-
- private void setListeners() {
- // Save info and pass back to Home activity
- submitButton.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- subject = subjectET.getText().toString();
- email = emailET.getText().toString();
- name = nameET.getText().toString();
- if (!textFieldsAreValid(subject)) {
- showDialog(SUBJECT_WARNING);
- } else if (!textFieldsAreValid(name)) {
- showDialog(NAME_WARNING);
- } else if (!isValidEmailAddress(email)) {
- showDialog(EMAIL_WARNING);
- } else {
- if (true) {
- Intent i = new Intent(Details.this, Home.class);
- extras.putString("name", name);
- extras.putString("email", email);
- extras.putString("subject", subject);
- extras.putBoolean("photo", havePicture);
- i.putExtras(extras);
- startActivity(i);
- }
- }
- }
- });
- }
-
- // **********************************************************************
- // textFieldsAreValid: Make sure that fields aren't blank
- // **********************************************************************
- public static boolean textFieldsAreValid(String field) {
- if (field == null || field.length() == 0 || field.trim().length() == 0) {
- return false;
- }
- return true;
- }
-
- // **********************************************************************
- // isValidEmailAddress: Check the email address is OK
- // **********************************************************************
- public static boolean isValidEmailAddress(String emailAddress) {
- String emailRegEx;
- Pattern pattern;
- // Regex for a valid email address
- emailRegEx = "^[A-Za-z0-9._%+\\-]+@[A-Za-z0-9.\\-]+\\.[A-Za-z]{2,4}$";
- // Compare the regex with the email address
- pattern = Pattern.compile(emailRegEx);
- Matcher matcher = pattern.matcher(emailAddress);
- if (!matcher.find()) {
- return false;
- }
- return true;
- }
-
- // **********************************************************************
- // onCreateDialog: Dialog warnings
- // **********************************************************************
- @Override
- protected Dialog onCreateDialog(int id) {
- switch (id) {
- case SUBJECT_WARNING:
- return new AlertDialog.Builder(Details.this).setTitle("Subject")
- .setPositiveButton("OK",
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int whichButton) {
- }
- }).setMessage("Please enter a subject!").create();
- case NAME_WARNING:
- return new AlertDialog.Builder(Details.this)
- .setTitle("Name")
- .setPositiveButton("OK",
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int whichButton) {
- }
- })
- .setMessage(
- "Please enter your name. We'll remember it for next time.")
- .create();
-
- case EMAIL_WARNING:
- return new AlertDialog.Builder(Details.this)
- .setTitle("Email")
- .setPositiveButton("OK",
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int whichButton) {
- }
- })
- .setMessage(
- "Please enter a valid email address. We'll remember it for next time.")
- .create();
-
- }
- return null;
- }
-
- // Save user's name and email, if already defined
- @Override
- protected void onStop() {
- super.onStop();
-
- name = nameET.getText().toString();
- email = emailET.getText().toString();
-
- // Save user preferences
- SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
- SharedPreferences.Editor editor = settings.edit();
- editor.putString("myName", name);
- editor.putString("myEmail", email);
-
- // Don't forget to commit your edits!!!
- editor.commit();
- }
-
- // Look at this - is it working ok
- // public boolean testProviders() {
- // Log.e(LOG_TAG, "testProviders");
- // // StringBuilder sb = new StringBuilder("Enabled Providers");
- // // List<String> providers = locationmanager.getProviders(true);
- // // for (String provider : providers) {
- // // Log.e(LOG_TAG, "Provider = " + provider);
- // // listener = new LocationListener() {
- // // public void onLocationChanged(Location location) {
- // // }
- // //
- // // public void onProviderDisabled(String provider) {
- // // }
- // //
- // // public void onProviderEnabled(String provider) {
- // // }
- // //
- // // public void onStatusChanged(String provider, int status,
- // // Bundle extras) {
- // // }
- // // };
- // //
- // // locationmanager.requestLocationUpdates(provider, 0, 0, listener);
- // //
- // // sb.append("\n*").append(provider).append(": ");
- // //
- // // Location location = locationmanager.getLastKnownLocation(provider);
- // //
- // // if (location != null) {
- // // latitude = location.getLatitude();
- // // longitude = location.getLongitude();
- // // latString = latitude.toString();
- // // longString = longitude.toString();
- // // Log.e(LOG_TAG, "Latitude = " + latString);
- // // Log.e(LOG_TAG, "Longitude = " + longString);
- // // if (provider == "gps") {
- // // // Only bother with GPS if available
- // // return true;
- // // }
- // // } else {
- // // Log.e(LOG_TAG, "Location is null");
- // // return false;
- // // }
- // // }
- // // LocationManager lm = (LocationManager)
- // // context.getSystemService(Context.LOCATION_SERVICE);
- // //
- // // Location loc = lm.getLastKnownLocation("gps");
- // // if (loc == null)
- // // {
- // // locType = "Network";
- // // loc = lm.getLastKnownLocation("network");
- // // }
- // //
- // // textMsg.setText(sb);
- //
- // return true;
- // }
-}
diff --git a/android/Fix My Street/src/com/android/fixmystreet/Help.java b/android/Fix My Street/src/com/android/fixmystreet/Help.java deleted file mode 100644 index 6445992d8..000000000 --- a/android/Fix My Street/src/com/android/fixmystreet/Help.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.android.fixmystreet;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.os.Bundle;
-import android.text.util.Linkify;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.widget.TextView;
-
-public class Help extends Activity {
- private Bundle extras = null;
-
- @Override
- protected void onCreate(Bundle icicle) {
- super.onCreate(icicle);
- extras = getIntent().getExtras();
- setContentView(R.layout.help);
- TextView noteView = (TextView) findViewById(R.id.faq);
- Linkify.addLinks(noteView, Linkify.ALL);
- }
-
- // ****************************************************
- // Options menu functions
- // ****************************************************
-
- // TODO - add Bundles for these?
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- super.onCreateOptionsMenu(menu);
- MenuItem homeItem = menu.add(0, 0, 0, "Home");
- MenuItem aboutItem = menu.add(0, 1, 0, "About");
- homeItem.setIcon(android.R.drawable.ic_menu_edit);
- aboutItem.setIcon(android.R.drawable.ic_menu_info_details);
-
- return true;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case 0:
- Intent i = new Intent(Help.this, Home.class);
- if (extras != null) {
- i.putExtras(extras);
- }
- startActivity(i);
- return true;
- case 1:
- Intent j = new Intent(Help.this, About.class);
- if (extras != null) {
- j.putExtras(extras);
- }
- startActivity(j);
- return true;
- }
- return false;
- }
-}
diff --git a/android/Fix My Street/src/com/android/fixmystreet/Home.java b/android/Fix My Street/src/com/android/fixmystreet/Home.java deleted file mode 100644 index e0543c77f..000000000 --- a/android/Fix My Street/src/com/android/fixmystreet/Home.java +++ /dev/null @@ -1,719 +0,0 @@ -// **************************************************************************
-// Home.java
-// **************************************************************************
-package com.android.fixmystreet;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.methods.PostMethod;
-import org.apache.commons.httpclient.methods.multipart.ByteArrayPartSource;
-import org.apache.commons.httpclient.methods.multipart.FilePart;
-import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
-import org.apache.commons.httpclient.methods.multipart.Part;
-import org.apache.commons.httpclient.methods.multipart.StringPart;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.ProgressDialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.SharedPreferences;
-
-import android.location.Location;
-import android.location.LocationListener;
-import android.location.LocationManager;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Environment;
-import android.os.Handler;
-import android.telephony.TelephonyManager;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.widget.Button;
-import android.widget.TextView;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.res.Resources;
-import android.graphics.drawable.Drawable;
-import android.provider.MediaStore;
-import android.view.View;
-import android.view.View.OnClickListener;
-
-public class Home extends Activity {
- // ****************************************************
- // Local variables
- // ****************************************************
- private static final String LOG_TAG = "Home";
- public static final String PREFS_NAME = "FMS_Settings";
- private Button btnReport;
- private Button btnDetails;
- private Button btnPicture;
- // Info that's been passed from other activities
- private Boolean haveDetails = false;
- private Boolean havePicture = false;
- private String name = null;
- private String email = null;
- private String subject = null;
- // Location info
- LocationManager locationmanager = null;
- LocationListener listener;
- Location location;
- private Double latitude;
- private Double longitude;
- private String latString = "";
- private String longString = "";
- long firstGPSFixTime = 0;
- long latestGPSFixTime = 0;
- long previousGPSFixTime = 0;
- private Boolean locationDetermined = false;
- int locAccuracy;
- long locationTimeStored = 0;
- // hacky way of checking the results
- private static int globalStatus = 13;
- private static final int SUCCESS = 0;
- private static final int LOCATION_NOT_FOUND = 1;
- private static final int UPLOAD_ERROR = 2;
- private static final int UPLOAD_ERROR_SERVER = 3;
- private static final int PHOTO_NOT_FOUND = 5;
- private static final int UPON_UPDATE = 6;
- private static final int COUNTRY_ERROR = 7;
- private String serverResponse;
- SharedPreferences settings;
- String versionName = null;
- // Thread handling
- ProgressDialog myProgressDialog = null;
- private ProgressDialog pd;
- final Handler mHandler = new Handler();
- final Runnable mUpdateResults = new Runnable() {
- public void run() {
- pd.dismiss();
- updateResultsInUi();
- }
- };
- private Bundle extras;
- private TextView textProgress;
- private String exception_string = "";
-
- // Called when the activity is first created
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
- setContentView(R.layout.home);
- // Log.d(LOG_TAG, "onCreate, havePicture = " + havePicture);
- settings = getSharedPreferences(PREFS_NAME, 0);
- testProviders();
-
- btnDetails = (Button) findViewById(R.id.details_button);
- btnPicture = (Button) findViewById(R.id.camera_button);
- btnReport = (Button) findViewById(R.id.report_button);
- btnReport.setVisibility(View.GONE);
- textProgress = (TextView) findViewById(R.id.progress_text);
- textProgress.setVisibility(View.GONE);
-
- if (icicle != null) {
- havePicture = icicle.getBoolean("photo");
- Log.d(LOG_TAG, "icicle not null, havePicture = " + havePicture);
- } else {
- Log.d(LOG_TAG, "icicle null");
- }
- extras = getIntent().getExtras();
- checkBundle();
- setListeners();
-
- // Show update message - but not to new users
- int vc = 0;
- try {
- vc = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
- versionName = getPackageManager().getPackageInfo(getPackageName(),
- 0).versionName;
- } catch (NameNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- // TODO - add this code next time!
- boolean hasSeenUpdateVersion = settings.getBoolean(
- "hasSeenUpdateVersion" + vc, false);
- boolean hasSeenOldVersion = settings.getBoolean("hasSeenUpdateVersion"
- + (vc - 1), false);
- if (!hasSeenUpdateVersion && hasSeenOldVersion) {
- showDialog(UPON_UPDATE);
- SharedPreferences.Editor editor = settings.edit();
- editor.putBoolean("hasSeenUpdateVersion" + vc, true);
- editor.commit();
- }
-
- // Check country: show warning if not in Great Britain
- TelephonyManager mTelephonyMgr = (TelephonyManager) this
- .getSystemService(Context.TELEPHONY_SERVICE);
- String country = mTelephonyMgr.getNetworkCountryIso();
- //Log.d(LOG_TAG, "country = " + country);
- if (!(country.matches("gb"))) {
- showDialog(COUNTRY_ERROR);
- }
- }
-
- @Override
- protected void onPause() {
- // Log.d(LOG_TAG, "onPause, havePicture = " + havePicture);
- super.onPause();
- removeListeners();
- }
-
- @Override
- protected void onStop() {
- // Log.d(LOG_TAG, "onStop, havePicture = " + havePicture);
- super.onStop();
- removeListeners();
- }
-
- @Override
- public void onRestart() {
- // Log.d(LOG_TAG, "onRestart, havePicture = " + havePicture);
- testProviders();
- checkBundle();
- super.onRestart();
- }
-
- // ****************************************************
- // checkBundle - check the extras that have been passed
- // is the user able to upload things yet, or not?
- // ****************************************************
- private void checkBundle() {
- // Log.d(LOG_TAG, "checkBundle");
- // Get the status icons...
- Resources res = getResources();
- Drawable checked = res.getDrawable(R.drawable.done);
- if (extras != null) {
- // Log.d(LOG_TAG, "Checking extras");
- // Details extras
- name = extras.getString("name");
- email = extras.getString("email");
- subject = extras.getString("subject");
- if (!havePicture) {
- havePicture = extras.getBoolean("photo");
- }
- // Do we have the details?
- if ((name != null) && (email != null) && (subject != null)) {
- haveDetails = true;
- // Log.d(LOG_TAG, "Have all details");
- checked.setBounds(0, 0, checked.getIntrinsicWidth(), checked
- .getIntrinsicHeight());
- // envelope.setBounds(0, 0, envelope.getIntrinsicWidth(),
- // envelope
- // .getIntrinsicHeight());
- btnDetails.setText("Details added: '" + subject + "'");
- btnDetails.setCompoundDrawables(null, null, checked, null);
- } else {
- // Log.d(LOG_TAG, "Don't have details");
- }
- } else {
- extras = new Bundle();
- // Log.d(LOG_TAG, "no Bundle at all");
- }
- // Log.d(LOG_TAG, "havePicture = " + havePicture);
-
- // Do we have the photo?
- if (havePicture) {
-
- checked.setBounds(0, 0, checked.getIntrinsicWidth(), checked
- .getIntrinsicHeight());
- // camera.setBounds(0, 0, camera.getIntrinsicWidth(), camera
- // .getIntrinsicHeight());
- btnPicture.setCompoundDrawables(null, null, checked, null);
- btnPicture.setText("Photo taken");
- }
- if (havePicture && haveDetails) {
- textProgress.setVisibility(View.VISIBLE);
- }
- }
-
- // ****************************************************
- // setListeners - set the button listeners
- // ****************************************************
-
- private void setListeners() {
- btnDetails.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- Intent i = new Intent(Home.this, Details.class);
- extras.putString("name", name);
- extras.putString("email", email);
- extras.putString("subject", subject);
- extras.putBoolean("photo", havePicture);
-
- i.putExtras(extras);
- startActivity(i);
- }
- });
- btnPicture.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- File photo = new File(
- Environment.getExternalStorageDirectory(),
- "FMS_photo.jpg");
- if (photo.exists()) {
- photo.delete();
- }
- Intent imageCaptureIntent = new Intent(
- MediaStore.ACTION_IMAGE_CAPTURE);
- imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri
- .fromFile(photo));
- startActivityForResult(imageCaptureIntent, 1);
- }
- });
- btnReport.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- locationDetermined = true;
- uploadToFMS();
- }
- });
- }
-
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- // Log.d(LOG_TAG, "onActivityResult");
- // Log.d(LOG_TAG, "Activity.RESULT_OK code = " + Activity.RESULT_OK);
- // Log.d(LOG_TAG, "resultCode = " + resultCode + "requestCode = "
- // + requestCode);
- if (resultCode == Activity.RESULT_OK && requestCode == 1) {
- havePicture = true;
- extras.putBoolean("photo", true);
- Resources res = getResources();
- Drawable checked = res.getDrawable(R.drawable.done);
- checked.setBounds(0, 0, checked.getIntrinsicWidth(), checked
- .getIntrinsicHeight());
- btnPicture.setCompoundDrawables(null, null, checked, null);
- btnPicture.setText("Photo taken");
- }
- Log.d(LOG_TAG, "havePicture = " + havePicture.toString());
- }
-
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- Log.d(LOG_TAG, "onSaveInstanceState, havePicture " + havePicture);
- // Log.d(LOG_TAG, "onSaveInstanceState");
- if (havePicture != null) {
- // Log.d(LOG_TAG, "mRowId = " + mRowId);
- outState.putBoolean("photo", havePicture);
- }
- super.onSaveInstanceState(outState);
- }
-
- @Override
- public void onRestoreInstanceState(Bundle savedInstanceState) {
- super.onRestoreInstanceState(savedInstanceState);
- // Restore UI state from the savedInstanceState.
- // This bundle has also been passed to onCreate.
- havePicture = savedInstanceState.getBoolean("photo");
- Log.d(LOG_TAG, "onRestoreInstanceState, havePicture " + havePicture);
- }
-
- // **********************************************************************
- // uploadToFMS: uploads details, handled via a background thread
- // Also checks the age and accuracy of the GPS data first
- // **********************************************************************
- private void uploadToFMS() {
- // Log.d(LOG_TAG, "uploadToFMS");
- pd = ProgressDialog
- .show(
- this,
- "Uploading, please wait...",
- "Uploading. This can take up to a minute, depending on your connection speed. Please be patient!",
- true, false);
- Thread t = new Thread() {
- public void run() {
- doUploadinBackground();
- mHandler.post(mUpdateResults);
- }
- };
- t.start();
- }
-
- private void updateResultsInUi() {
- if (globalStatus == UPLOAD_ERROR) {
- showDialog(UPLOAD_ERROR);
- } else if (globalStatus == UPLOAD_ERROR_SERVER) {
- showDialog(UPLOAD_ERROR_SERVER);
- } else if (globalStatus == LOCATION_NOT_FOUND) {
- showDialog(LOCATION_NOT_FOUND);
- } else if (globalStatus == PHOTO_NOT_FOUND) {
- showDialog(PHOTO_NOT_FOUND);
- } else {
- // Success! - Proceed to the success activity!
- Intent i = new Intent(Home.this, Success.class);
- i.putExtra("latString", latString);
- i.putExtra("lonString", longString);
- startActivity(i);
- }
- }
-
- // **********************************************************************
- // onCreateDialog: Dialog warnings
- // **********************************************************************
- @Override
- protected Dialog onCreateDialog(int id) {
- switch (id) {
- case COUNTRY_ERROR:
- return new AlertDialog.Builder(Home.this)
- .setTitle("Country or network error")
- .setPositiveButton("OK",
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int whichButton) {
- }
- })
- .setMessage(
- "Sorry, FixMyStreet currently only works in Britain. You won't be able to submit reports from your current location. (You may also see this error if you aren't connected to the network.)")
- .create();
- case UPLOAD_ERROR:
- return new AlertDialog.Builder(Home.this)
- .setTitle("Upload error")
- .setPositiveButton("OK",
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int whichButton) {
- }
- })
- .setMessage(
- "Sorry, there was an error uploading - maybe the network connection is down? Please try again later. Exception: " + exception_string + " " + serverResponse)
- .create();
- case UPLOAD_ERROR_SERVER:
- return new AlertDialog.Builder(Home.this)
- .setTitle("Upload error")
- .setPositiveButton("OK",
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int whichButton) {
- }
- })
- .setMessage(
- "Sorry, there was an error uploading. Please try again later. The server response was: "
- + serverResponse).create();
- case LOCATION_NOT_FOUND:
- return new AlertDialog.Builder(Home.this)
- .setTitle("Location problem")
- .setPositiveButton("OK",
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int whichButton) {
- }
- })
- .setMessage(
- "Could not get location! Can you see the sky? Please try again later.")
- .create();
- case PHOTO_NOT_FOUND:
- return new AlertDialog.Builder(Home.this).setTitle("No photo")
- .setPositiveButton("OK",
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int whichButton) {
- }
- }).setMessage("Photo not found!").create();
- case UPON_UPDATE:
- if (versionName == null) {
- versionName = "";
- }
- return new AlertDialog.Builder(Home.this).setTitle("What's new?")
- .setPositiveButton("OK",
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int whichButton) {
- }
- }).setMessage(
- "New features in version" + versionName
- + ": better GPS fix.").create();
- }
- return null;
- }
-
- // **********************************************************************
- // doUploadinBackground: POST request to FixMyStreet
- // **********************************************************************
- private boolean doUploadinBackground() {
- // Log.d(LOG_TAG, "doUploadinBackground");
-
- String responseString = null;
- PostMethod method;
-
- method = new PostMethod("http://www.fixmystreet.com/import");
-
- try {
-
- byte[] imageByteArray = null;
- HttpClient client = new HttpClient();
- client.getHttpConnectionManager().getParams().setConnectionTimeout(
- 100000);
-
- File f = new File(Environment.getExternalStorageDirectory(),
- "FMS_photo.jpg");
-
- // TODO - add a check here
- if (!f.exists()) {
- }
- imageByteArray = getBytesFromFile(f);
-
- // Log
- // .d(LOG_TAG, "len of data is " + imageByteArray.length
- // + " bytes");
-
- FilePart photo = new FilePart("photo", new ByteArrayPartSource(
- "photo", imageByteArray));
-
- photo.setContentType("image/jpeg");
- photo.setCharSet(null);
-
- Part[] parts = { new StringPart("service", "Android phone"),
- new StringPart("subject", subject),
- new StringPart("name", name),
- new StringPart("email", email),
- new StringPart("lat", latString),
- new StringPart("lon", longString), photo };
-
- // Log.d(LOG_TAG, "sending off with lat " + latString + " and lon "
- // + longString);
-
- method.setRequestEntity(new MultipartRequestEntity(parts, method
- .getParams()));
- client.executeMethod(method);
- responseString = method.getResponseBodyAsString();
- method.releaseConnection();
-
- Log.e("httpPost", "Response status: " + responseString);
- Log.e("httpPost", "Latitude = " + latString + " and Longitude = "
- + longString);
-
- } catch (Exception ex) {
- Log.v(LOG_TAG, "Exception", ex);
- exception_string = ex.getMessage();
- globalStatus = UPLOAD_ERROR;
- serverResponse = "";
- return false;
- } finally {
- method.releaseConnection();
- }
-
- if (responseString.equals("SUCCESS")) {
- // launch the Success page
- globalStatus = SUCCESS;
- return true;
- } else {
- // print the response string?
- serverResponse = responseString;
- globalStatus = UPLOAD_ERROR;
- return false;
- }
- }
-
- private boolean checkLoc(Location location) {
- // get accuracy
- // Log.d(LOG_TAG, "checkLocation");
- float tempAccuracy = location.getAccuracy();
- locAccuracy = (int) tempAccuracy;
- // get time - store the GPS time the first time
- // it is reported, then check it against future reported times
- latestGPSFixTime = location.getTime();
- if (firstGPSFixTime == 0) {
- firstGPSFixTime = latestGPSFixTime;
- }
- if (previousGPSFixTime == 0) {
- previousGPSFixTime = latestGPSFixTime;
- }
- long timeDiffSecs = (latestGPSFixTime - previousGPSFixTime) / 1000;
-
- // Log.d(LOG_TAG, "~~~~~~~ checkLocation, accuracy = " + locAccuracy
- // + ", firstGPSFixTime = " + firstGPSFixTime + ", gpsTime = "
- // + latestGPSFixTime + ", timeDiffSecs = " + timeDiffSecsInt);
-
- // Check our location - no good if the GPS accuracy is more than 24m
- if ((locAccuracy > 24) || (timeDiffSecs == 0)) {
- if (timeDiffSecs == 0) {
- // nor do we want to report if the GPS time hasn't changed at
- // all - it is probably out of date
- textProgress
- .setText("Waiting for a GPS fix: phone says last fix is out of date. Please make sure you can see the sky.");
- } else {
- textProgress
- .setText("Waiting for a GPS fix: phone says last fix had accuracy of "
- + locAccuracy
- + "m. (We need accuracy of 24m.) Please make sure you can see the sky.");
- }
- } else if (locAccuracy == 0) {
- // or if no accuracy data is available
- textProgress
- .setText("Waiting for a GPS fix... Please make sure you can see the sky.");
- } else {
- // but if all the requirements have been met, proceed
- latitude = location.getLatitude();
- longitude = location.getLongitude();
- latString = latitude.toString();
- longString = longitude.toString();
- if (haveDetails && havePicture) {
- btnReport.setVisibility(View.VISIBLE);
- btnReport.setText("GPS found! Report to Fix My Street");
- textProgress.setVisibility(View.GONE);
- } else {
- textProgress.setText("GPS found!");
- }
- previousGPSFixTime = latestGPSFixTime;
- return true;
- }
- previousGPSFixTime = latestGPSFixTime;
- // textProgress.setText("~~~~~~~ checkLocation, accuracy = "
- // + locAccuracy + ", locationTimeStored = " + locationTimeStored
- // + ", gpsTime = " + gpsTime);
- return false;
- }
-
- public boolean testProviders() {
- // Log.e(LOG_TAG, "testProviders");
- // Register for location listener
- String location_context = Context.LOCATION_SERVICE;
- locationmanager = (LocationManager) getSystemService(location_context);
- // Criteria criteria = new Criteria();
- // criteria.setAccuracy(Criteria.ACCURACY_FINE);
- // criteria.setAltitudeRequired(false);
- // criteria.setBearingRequired(false);
- // criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);
- // criteria.setSpeedRequired(false);
- // String provider = locationmanager.getBestProvider(criteria, true);
- if (!locationmanager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
- buildAlertMessageNoGps();
- return false;
- }
- listener = new LocationListener() {
- public void onLocationChanged(Location location) {
- // keep checking the location + updating text - until we have
- // what we need
- if (!locationDetermined) {
- checkLoc(location);
- }
- }
-
- public void onProviderDisabled(String provider) {
- }
-
- public void onProviderEnabled(String provider) {
- }
-
- public void onStatusChanged(String provider, int status,
- Bundle extras) {
- }
- };
- locationmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
- 0, listener);
- return true;
- }
-
- private void buildAlertMessageNoGps() {
- final AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder
- .setMessage(
- "Your GPS seems to be disabled. Do you want to turn it on now?")
- .setCancelable(false).setPositiveButton("Yes",
- new DialogInterface.OnClickListener() {
- public void onClick(
- @SuppressWarnings("unused") final DialogInterface dialog,
- @SuppressWarnings("unused") final int id) {
- Intent j = new Intent();
- j
- .setAction("android.settings.LOCATION_SOURCE_SETTINGS");
- startActivity(j);
- }
- }).setNegativeButton("No",
- new DialogInterface.OnClickListener() {
- public void onClick(final DialogInterface dialog,
- @SuppressWarnings("unused") final int id) {
- dialog.cancel();
- }
- });
- final AlertDialog alert = builder.create();
- alert.show();
- }
-
- public void removeListeners() {
- // Log.e(LOG_TAG, "removeListeners");
- if ((locationmanager != null) && (listener != null)) {
- locationmanager.removeUpdates(listener);
- }
- locationmanager = null;
- // Log.d(LOG_TAG, "Removed " + listener.toString());
- }
-
- // ****************************************************
- // Options menu functions
- // ****************************************************
-
- // TODO - add Bundles for these?
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- super.onCreateOptionsMenu(menu);
- MenuItem helpItem = menu.add(0, 0, 0, "Help");
- MenuItem aboutItem = menu.add(0, 1, 0, "About");
- aboutItem.setIcon(android.R.drawable.ic_menu_info_details);
- helpItem.setIcon(android.R.drawable.ic_menu_help);
- return true;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case 0:
- Intent i = new Intent(Home.this, Help.class);
- if (extras != null) {
- i.putExtras(extras);
- }
- startActivity(i);
- return true;
- case 1:
- Intent j = new Intent(Home.this, About.class);
- if (extras != null) {
- j.putExtras(extras);
- }
- startActivity(j);
- return true;
- }
- return false;
- }
-
- // read the photo file into a byte array...
- public static byte[] getBytesFromFile(File file) throws IOException {
- InputStream is = new FileInputStream(file);
-
- // Get the size of the file
- long length = file.length();
-
- // You cannot create an array using a long type.
- // It needs to be an int type.
- // Before converting to an int type, check
- // to ensure that file is not larger than Integer.MAX_VALUE.
- if (length > Integer.MAX_VALUE) {
- // File is too large
- }
-
- // Create the byte array to hold the data
- byte[] bytes = new byte[(int) length];
-
- // Read in the bytes
- int offset = 0;
- int numRead = 0;
- while (offset < bytes.length
- && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {
- offset += numRead;
- }
-
- // Ensure all the bytes have been read in
- if (offset < bytes.length) {
- throw new IOException("Could not completely read file "
- + file.getName());
- }
-
- // Close the input stream and return bytes
- is.close();
- return bytes;
- }
-}
diff --git a/android/Fix My Street/src/com/android/fixmystreet/Success.java b/android/Fix My Street/src/com/android/fixmystreet/Success.java deleted file mode 100644 index a941d4687..000000000 --- a/android/Fix My Street/src/com/android/fixmystreet/Success.java +++ /dev/null @@ -1,57 +0,0 @@ -//*************************************************************
-//
-//*************************************************************
-
-package com.android.fixmystreet;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.os.Bundle;
-//import android.util.Log;
-import android.view.KeyEvent;
-import android.view.Menu;
-import android.view.MenuItem;
-
-public class Success extends Activity {
-
- //private static final String LOG_TAG = "Success";
-
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.success);
- }
-
- // ****************************************************
- // Options menu functions
- // ****************************************************
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- super.onCreateOptionsMenu(menu);
- MenuItem helpItem = menu.add(0, 0, 0, "Home");
- helpItem.setIcon(android.R.drawable.ic_menu_edit);
- return true;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case 0:
- Intent i = new Intent(Success.this, Home.class);
- startActivity(i);
- return true;
- }
- return false;
- }
-
- // disable the Back key in case things get submitted twice
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- return true;
- }
- return false;
- }
-
-}
\ No newline at end of file diff --git a/android/README.txt b/android/README.txt deleted file mode 100644 index 02267a34e..000000000 --- a/android/README.txt +++ /dev/null @@ -1,27 +0,0 @@ -FixMyStreet Android application -============================== - -The Fix My Street directory contains a complete application that should open -directly in Eclipse. - -However, to compile it as an .apk, you will need to add the following JAR files -to your build path - these make the multipart messages work. - -- commons-httpclient.jar -- httpcomponents-client-4.0-alpha4.lib - -Hopefully these will no longer be needed in future versions of Android. - -I've compiled it against version 1.5 (Cupcake). - -Note that the app has to be signed to go onto the Android Market, contact -anna@mysociety.org to do this. - -TODO (if you're an Android developer and wish to help mySociety, ----- feel free to volunteer for any of these) - -* Improve flow - when you start the app, there should really be a -welcome message explaning what FMS is, and a "Click here to take -a photo" button, then after the photo a "Now add your details" screen. -At the moment the opening screen doesn't really make sense unless you -already know what FixMyStreet is - it should be more welcoming. diff --git a/bin/fetch-comments b/bin/fetch-comments index ef099fcc9..a276433e4 100755 --- a/bin/fetch-comments +++ b/bin/fetch-comments @@ -1,4 +1,8 @@ #!/usr/bin/env perl +# +# This script utilises the Open311 extension explained at +# https://github.com/mysociety/FixMyStreet/wiki/Open311-FMS---Proposed-differences-to-Open311 +# to fetch updates on service requests. use strict; use warnings; diff --git a/bin/fetch-comments-24hs b/bin/fetch-comments-24hs index b84f09ba7..602383d40 100644 --- a/bin/fetch-comments-24hs +++ b/bin/fetch-comments-24hs @@ -1,4 +1,9 @@ #!/usr/bin/env perl +# +# This script utilises the Open311 extension explained at +# https://github.com/mysociety/FixMyStreet/wiki/Open311-FMS---Proposed-differences-to-Open311 +# to fetch updates on service requests from the past 24 hours, to check none +# were missed. use strict; use warnings; diff --git a/bin/generate_cobrand_po b/bin/generate_cobrand_po new file mode 100755 index 000000000..1770de7c2 --- /dev/null +++ b/bin/generate_cobrand_po @@ -0,0 +1,40 @@ +#!/usr/bin/env perl +use strict; + +=for instructions + +This script generates a po file that contains only the strings related to a cobrand. +Its purpose is to avoid having lots of cobrand specific strings in the +main FixMyStreet po file confusing translators. Once this is run the +generated po file can be used to translate the strings. The po files +with the translation should then be placed in the relevant language +directories and merge_cobrand_po run which will merge these with +the main FixMyStreet po files + +=cut + +my $cobrand = shift; + +die "Please provide a cobrand name\n" unless $cobrand; + +my $cobrand_lc = lc( $cobrand ); + +my $PO = "locale/$cobrand.po"; + +my $cobrand_module = "perllib/FixMyStreet/Cobrand/$cobrand.pm"; +my $web_templates = "templates/web/$cobrand_lc/"; + +my $opts = ''; +if ( -e $cobrand_module ) { + $opts .= " $cobrand_module"; +} + +if ( -e -d $web_templates ) { + $opts .= " --directory $web_templates"; +} + +# first we get the strings from the cobrand +system("xgettext.pl --gnu-gettext --verbose --output $PO --plugin perl=* --plugin tt2 $opts"); + +# now replace the template header elements +system("bin/update_po_header.bash $PO"); diff --git a/bin/geocode b/bin/geocode new file mode 100755 index 000000000..254cf1578 --- /dev/null +++ b/bin/geocode @@ -0,0 +1,79 @@ +#!/usr/bin/perl + +=head1 NAME + +geocode - commandline tool to test geocoders + +=head1 SYNOPSIS + + $ eval `perl setenv.pl`, or call with bin/cron-wrapper + + $ bin/geocode --geocoder=Bing --cobrand=bromley "Glebe Rd" + + # ... if your conf/general.yml supplies GEOCODER: + $ bin/geocode --cobrand=bromley "Glebe Rd" + + # ... if you want to use config that you have in conf/general.bing.yml + $ bin/geocode --override-config=general.bing --cobrand=bromley "Glebe Rd" + + ## ... output from geocoder + +=cut + +use strict; +use warnings; +require 5.8.0; + +use Data::Dumper; +use Pod::Usage; +use feature 'say'; + +use Getopt::Long; + +my %options = ( help => sub { pod2usage(0) } ); + +GetOptions \%options, + 'geocoder=s', + 'help|h', + 'cobrand=s', + 'override-config=s'; + +my $s = join ' ', @ARGV + or pod2usage(0); + +pod2usage(0) unless $options{cobrand}; + +local $ENV{FMS_OVERRIDE_CONFIG} = $options{'override-config'} if $options{'override-config'}; + +eval 'use FixMyStreet'; +eval 'use FixMyStreet::App'; +eval 'use FixMyStreet::Cobrand'; +eval 'use FixMyStreet::Geocode'; + +mySociety::Locale::gettext_domain( 'FixMyStreet' ); + +my $geocoder_type = $options{geocoder} || do { + my $GEOCODER = FixMyStreet->config('GEOCODER'); + ref $GEOCODER ? $GEOCODER->{type} : $GEOCODER; +} or pod2usage(0); + +my $geocoder_name = "FixMyStreet::Geocode::${geocoder_type}"; +my $code_ref = $geocoder_name->can('string') + or die "$geocoder_name is not a valid geocoder?"; + +my @allowed_cobrands = FixMyStreet::Cobrand->get_allowed_cobrands(); + +my $cobrand_name = FixMyStreet::Cobrand->get_class_for_moniker($options{cobrand}); +my $cobrand = $cobrand_name->new(); + +say "USING COBRAND $cobrand_name"; +if ($cobrand->moniker ne lc($options{cobrand})) { + say "!!! asked for $options{cobrand}"; + say "!!! Check ALLOWED_COBRANDS setting in conf/general.yml (or supplied --override-config file)"; + say Dumper(\@allowed_cobrands); +} + +my $c = FixMyStreet::App->new(); +$c->stash->{cobrand} = $cobrand; + +say Dumper( $code_ref->( $s, $c ) ); diff --git a/bin/gettext-extract b/bin/gettext-extract index e77cf9cb0..a38c17127 100755 --- a/bin/gettext-extract +++ b/bin/gettext-extract @@ -7,48 +7,25 @@ # Copyright (c) 2011 UK Citizens Online Democracy. All rights reserved. # Email: matthew@mysociety.org; WWW: http://www.mysociety.org/ -if [ -e ../../locale ] -then - cd ../../ -else if [ -e ../locale ] -then - cd ../ -else if [ -e locale ] -then - cd . -else - echo "Please run with current directory fixmystreet/bin" - exit 1 -fi -fi -fi +cd "$(dirname $(readlink -f $BASH_SOURCE))/.." # File to write to, clear it to start with PO=locale/FixMyStreet.po rm -f $PO +# we don't want to extract strings from all the cobrand templates so list +# the ones we care about +find templates/web/default templates/web/fixmystreet templates/web/zurich templates/web/fiksgatami templates/web/emptyhomes templates/web/fixmybarangay -name '*.html' > template_list + # Extract from Perl -xgettext.pl --gnu-gettext --verbose --output $PO --plugin perl=* --plugin tt2 --directory perllib --directory templates/web --directory db --directory bin +xgettext.pl --gnu-gettext --verbose --output $PO --plugin perl=* --plugin tt2 --directory perllib -f template_list --directory db --directory bin + +# remove temporary list of templates +rm template_list # Fix headers # no such thing as tempfile on OS X -TEMP=`tempfile 2>/dev/null || mktemp /tmp/gettext-extract.XXXXXX` -NOW=`date +"%Y-%m-%d %H:%M%z"` -# strictly POSIX sed on e.g. OS X doesn't let you used \n in replacements so we do this -nl=$'\n'; -cat $PO | sed " - s/SOME DESCRIPTIVE TITLE/FixMyStreet original .po file, autogenerated by gettext-extract/; - s/YEAR THE PACKAGE'S COPYRIGHT HOLDER/2011 UK Citizens Online Democracy/; - s/PACKAGE package/main FixMyStreet code/; - s/FIRST AUTHOR <EMAIL@ADDRESS>, YEAR./Matthew Somerville <matthew@mysociety.org>, 2011-06-03./; - - s/PACKAGE VERSION/1.0\\\n\"\\$nl\"Report-Msgid-Bugs-To: matthew@mysociety.org/; - s/POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE/POT-Creation-Date: $NOW/; - s/LL@li.org/team@fixmystreet.com/; - s/charset=CHARSET/charset=UTF-8/; - s/8bit/8bit\\\n\"\\$nl\"Plural-Forms: nplurals=2; plural=n != 1;/; -" >> $TEMP -mv $TEMP $PO +bin/update_po_header.bash $PO echo "$( bin/gettext-nget-patch )" >> $PO diff --git a/bin/gettext-merge b/bin/gettext-merge index 84aa4fdb7..b84708ece 100755 --- a/bin/gettext-merge +++ b/bin/gettext-merge @@ -6,22 +6,7 @@ # Copyright (c) 2011 UK Citizens Online Democracy. All rights reserved. # Email: matthew@mysociety.org; WWW: http://www.mysociety.org/ -# Yuck -if [ -e ../../locale ] -then - cd ../../ -else if [ -e ../locale ] -then - cd ../ -else if [ -e locale ] -then - cd . -else - echo "Please run with current directory fixmystreet" - exit 1 -fi -fi -fi +cd "$(dirname $(readlink -f $BASH_SOURCE))/.." for X in locale/*.UTF-8 do @@ -31,12 +16,12 @@ do echo $X if [ -e EmptyHomes.po ] then - msgmerge -o New.po EmptyHomes.po ../../FixMyStreet-EmptyHomes.po + msgmerge --no-wrap -o New.po EmptyHomes.po ../../FixMyStreet-EmptyHomes.po mv New.po EmptyHomes.po fi if [ -e FixMyStreet.po ] then - msgmerge -o New.po FixMyStreet.po ../../FixMyStreet.po + msgmerge --no-wrap -o New.po FixMyStreet.po ../../FixMyStreet.po mv New.po FixMyStreet.po fi cd - >/dev/null diff --git a/bin/handlemail b/bin/handlemail index 8b8e03be9..8bc016241 100755 --- a/bin/handlemail +++ b/bin/handlemail @@ -57,6 +57,7 @@ my $mail = mySociety::Email::construct_email({ To => $data{return_path}, _template_ => $template, _parameters_ => { }, + _line_indent => '', }); if (mySociety::EmailUtil::EMAIL_SUCCESS diff --git a/bin/handlemail-support b/bin/handlemail-support new file mode 100755 index 000000000..9808e447a --- /dev/null +++ b/bin/handlemail-support @@ -0,0 +1,62 @@ +#!/usr/bin/perl -w +# +# handlemail-support: +# Handle an individual incoming mail message. +# +# This script should be invoked through the .forward mechanism. It processes +# emails to the support address to remove out of office and so on, before +# forwarding on. +# +# Copyright (c) 2013 UK Citizens Online Democracy. All rights reserved. +# Email: matthew@mysociety.org; WWW: http://www.mysociety.org/ + +use strict; +require 5.8.0; + +# Horrible boilerplate to set up appropriate library paths. +use FindBin; +use lib "$FindBin::Bin/../perllib"; +use lib "$FindBin::Bin/../commonlib/perllib"; + +use mySociety::Config; +BEGIN { + mySociety::Config::set_file("$FindBin::Bin/../conf/general"); +} +use mySociety::EmailUtil; +use mySociety::HandleMail; + +my %data = mySociety::HandleMail::get_message(); +exit 0 if is_ignorable($data{message}); +forward_on(); + +# --- + +sub forward_on { + my ($l, $d) = split /\@/, mySociety::Config::get('CONTACT_EMAIL'); + if (mySociety::EmailUtil::EMAIL_SUCCESS + != mySociety::EmailUtil::send_email( + join("\n", @{$data{lines}}) . "\n", + $data{return_path}, + join('@', join('_deli', $l, 'very'), $d) + )) { + exit 75; + } + exit 0; +} + +sub is_ignorable { + my $m = shift; + my $head = $m->head(); + my ($from, $subject, $body) = ($head->get('From'), $head->get('Subject'), $m->body); + $body = join("\n", @$body); + + open my $fp, "$FindBin::Bin/../../data/ignored-emails.csv" or exit 75; + while (<$fp>) { + chomp; + my ($f, $s, $b) = split /,/; + next unless $f || $s || $b; + return 1 unless ( $f && $from !~ /$f/ ) || ( $s && $subject !~ /$s/ ) || ( $b && $body !~ /$b/ ); + } + return 0; +} + diff --git a/bin/install-as-user b/bin/install-as-user index 2656195f4..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,51 +56,71 @@ 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= export PATH="$GEM_HOME/bin:$PATH" -gem install --no-ri --no-rdoc compass +if ! grep -q 'Set up local gem directory for FixMyStreet' $HOME/.bashrc; then + cat >>$HOME/.bashrc <<EOBRC + +# Set up local gem directory for FixMyStreet +export GEM_HOME="$DIRECTORY/gems" +export GEM_PATH= +export PATH="\$GEM_HOME/bin:\$PATH" +EOBRC +fi + +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'," \ - 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" @@ -96,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 "$FMS_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/make_css b/bin/make_css index a86fd4f0d..c48dda4d6 100755 --- a/bin/make_css +++ b/bin/make_css @@ -13,20 +13,12 @@ DIRECTORY=$(cd `dirname $0`/../web && pwd) -# FixMyStreet uses compass -NEWSTYLE=${1:-"fixmystreet bromley fixmybarangay barnet zurich default stevenage"} -NEWSTYLE_REGEX=${NEWSTYLE// /\\|} -for site in $NEWSTYLE; do - compass compile --output-style compressed $DIRECTORY/cobrands/$site -done - -# If given a command line argument, assume was a compass directory and exit -if [ -n "$1" ]; then - exit 0 -fi +DIRS=${1:-`find $DIRECTORY -name "*.scss" -exec dirname {} \; | uniq`} -# The rest are plain sass -for scss in `find $DIRECTORY -name "*.scss" -exec dirname {} \; | uniq | grep -v "cobrands/\($NEWSTYLE_REGEX\)"` -do - sass --scss --update --style compressed $scss +for dir in $DIRS; do + if [ -e "$dir/config.rb" ]; then + compass compile --output-style compressed $dir + else + sass --scss --update --style compressed $dir + fi done diff --git a/bin/make_css_watch b/bin/make_css_watch new file mode 100755 index 000000000..d46ee8997 --- /dev/null +++ b/bin/make_css_watch @@ -0,0 +1,78 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use feature 'say'; +use File::ChangeNotify; +use File::Find::Rule; +use Path::Tiny; + +my @exts = qw/ + scss +/; + +my @dirs = qw/ + web +/; + +my $filter = do { + my $exts = join '|', @exts; + qr/\.(?:$exts)$/ +}; + +my $watcher = File::ChangeNotify->instantiate_watcher( + directories => \@dirs, + filter => $filter, +); + +sub title { + my $what = shift; + # TODO, check if xtitle is installed and if so, run following command: + # system 'xtitle', $what; +} + +say sprintf "Watching [%s] for %s", (join ',' => @dirs), $filter; +title 'watching'; + +while ( my @events = $watcher->wait_for_events() ) { + my %seen; + my @update_dirs; + title 'updating'; + for my $event (@events) { + my $file = path( $event->path ); + say "$file was updated..."; + my $dir = $file->dirname; + next if $seen{$dir}++; + + if ($dir eq 'web/cobrands/sass/') { + # contains only partials, so we don't need to update + # this directory, but we *do* need to update everything else + push @update_dirs, + grep { + ! ($seen{$_}++) + } + map { + path($_)->dirname + } + File::Find::Rule->file->name($filter)->in( @dirs ); + } + else { + push @update_dirs, $dir; + } + } + for my $dir (@update_dirs) { + if (-e "$dir/config.rb") { + system compass => + 'compile', + '--output-style' => 'compressed', + $dir; + } + else { + system sass => + '--scss', + '--update', + '--style' => 'compressed', + $dir; + } + } + title 'watching'; +} diff --git a/bin/make_po b/bin/make_po index 76dc4566b..ad1fc1a89 100755 --- a/bin/make_po +++ b/bin/make_po @@ -14,6 +14,7 @@ mkdir("en_GB.UTF-8"); mkdir("en_GB.UTF-8/LC_MESSAGES"); my $pofile = shift; +die "Please supply a filename" unless $pofile; open(MAINPO, "FixMyStreet.po") or die ""; open(EHAPO, ">$pofile.po") or die ""; diff --git a/bin/merge_cobrand_po b/bin/merge_cobrand_po new file mode 100755 index 000000000..2785162cf --- /dev/null +++ b/bin/merge_cobrand_po @@ -0,0 +1,29 @@ +#!/usr/bin/env perl +use strict; + +=for instructions + +This script is used to merge cobrand po files with the main +FixMyStreet po file. It should be run after generate_cobrand_po +and once the cobrand po files with translations are placed in the +language directories. + +It will then create an autoCobrand.po file for each language that +has a Cobrand.po + +=cut + +my $cobrand = shift; + +die "Please provide a cobrand name\n" unless $cobrand; + +# for each language create a .po file with an existing translations +for (glob( 'locale/*/LC_MESSAGES' ) ) { + my $fms = "$_/FixMyStreet.po"; + my $cobrand_po = "$_/$cobrand.po"; + my $out = "$_/auto$cobrand.po"; + if ( -e $cobrand_po and -e $fms ) { + print "$_\n"; + system("msgcat --no-wrap -o $out $fms $cobrand_po"); + } +} diff --git a/bin/open311-populate-service-list b/bin/open311-populate-service-list index 232b0a6d4..be1ace3b9 100755 --- a/bin/open311-populate-service-list +++ b/bin/open311-populate-service-list @@ -14,12 +14,13 @@ my ($opt, $usage) = describe_options( ); print($usage->text), exit if $opt->help; -my $council_list = FixMyStreet::App->model('DB::Open311conf')->search( { +my $bodies = FixMyStreet::App->model('DB::Body')->search( { + id => { '!=', 2237 }, # XXX Until Oxfordshire does do so send_method => 'Open311' } ); my $verbose = 0; $verbose = 1 if $opt->warn; $verbose = 2 if $opt->verbose; -my $p = Open311::PopulateServiceList->new( council_list => $council_list, verbose => $verbose ); +my $p = Open311::PopulateServiceList->new( bodies => $bodies, verbose => $verbose ); -$p->process_councils; +$p->process_bodies; diff --git a/bin/open311-update-reports b/bin/open311-update-reports index 41c9c4546..3b77fef89 100644 --- a/bin/open311-update-reports +++ b/bin/open311-update-reports @@ -1,4 +1,10 @@ #!/usr/bin/perl +# +# This script utilises the standard Open311 way of getting updates on reports +# (by fetching all reports for a body and looking for updates). If possible, +# please use the extension explained at +# https://github.com/mysociety/FixMyStreet/wiki/Open311-FMS---Proposed-differences-to-Open311 +# and the fetch-comments/send-comments scripts. use strict; use warnings; @@ -13,9 +19,9 @@ my $system_user = FixMyStreet::App->model('DB::User')->find_or_create( } ); -my $council_list = FixMyStreet::App->model('DB::Open311conf'); +my $body_list = FixMyStreet::App->model('DB::Body'); my $update = Open311::GetUpdates->new( - council_list => $council_list, + body_list => $body_list, system_user => $system_user )->get_updates; diff --git a/bin/oxfordshire/open311_service_request.cgi b/bin/oxfordshire/open311_service_request.cgi new file mode 100755 index 000000000..4496ff213 --- /dev/null +++ b/bin/oxfordshire/open311_service_request.cgi @@ -0,0 +1,427 @@ +#!/usr/bin/perl + +# script for absobring incoming Open311 service request POSTs and +# passing them into Bentley EXOR backend via create_enquiry stored +# procedure. +# +# mySociety: http://fixmystreet.org/ +#----------------------------------------------------------------- + +require 'open311_services.pm'; +use DBD::Oracle qw(:ora_types); +### for local testing (no Oracle): +### use constant { ORA_VARCHAR2=>1, ORA_DATE=>1, ORA_NUMBER=>1}; + +my %PEM_BOUND_VAR_TYPES = get_pem_field_types(); + +my $ERR_MSG = 'error'; # unique key in data hash + +# incoming (Open311, from FMS) field names +# note: attribute[*] are being sent by FMS explicitly as attributes for Oxfordshire +my %F = ( + 'ACCOUNT_ID' => 'account_id', + 'ADDRESS_ID' => 'address_id', + 'ADDRESS_STRING' => 'address_string', + 'API_KEY' => 'api_key', + 'CLOSEST_ADDRESS' => 'attribute[closest_address]', + 'DESCRIPTION' => 'description', + 'DEVICE_ID' => 'device_id', + 'EASTING' => 'attribute[easting]', + 'EMAIL' => 'email', + 'FIRST_NAME' => 'first_name', + 'FMS_ID' => 'attribute[external_id]', + 'LAST_NAME' => 'last_name', + 'LAT' => 'lat', + 'LONG' => 'long', + 'MEDIA_URL' => 'media_url', + 'NORTHING' => 'attribute[northing]', + 'PHONE' => 'phone', + 'REQUESTED_DATETIME' => 'requested_datetime', + 'SERVICE_CODE' => 'service_code', + 'STATUS' => 'status', + +); + +my $req = new CGI; + +# normally, POST requests are inserting service requests +# and GET requests are for returning service requests, although OCC aren't planning on +# using that (it's part of the Open311 spec). +# So actually the service discovery is more useful, so send in a 'services' param +# to see that. +# +# But for testing the db connection, set $TEST_SERVICE_DISCOVERY so that +# *all* requests simply do a service discovery by setting (possibly via the config file) + +if ($TEST_SERVICE_DISCOVERY) { + get_service_discovery($req); # to test +}elsif ($ENV{'REQUEST_METHOD'} eq "POST") { + post_service_request($req); +} elsif ($req -> param('services')) { + get_service_discovery($req); +} elsif ($RUN_FAKE_INSERT_TEST) { + # allow a GET to make an insert, for testing (from the commandnd line!) + print "Running fake insert test... returned: " . get_FAKE_INSERT(); + print "\nSee $OUT_FILENAME for data" if $TESTING_WRITE_TO_FILE; + print "\n"; +} else { + get_service_requests($req); +} + +#---------------------------------------------------- +# post_service_request +# accepts an incoming service request +# If everything goes well, it puts it in the database and +# returns the PEM ID to the caller +#---------------------------------------------------- +sub post_service_request { + my $req = shift; + my %data; + my $pem_id = 0; + + foreach (values %F) { + $data{$_} = $req -> param($_); + $data{$_} =~ s/^\s+|\s+$//g; # trim + } + + error_and_exit(CODE_OR_ID_NOT_PROVIDED, "missing service code (Open311 requires one)") + unless $data{$F{SERVICE_CODE}}; + error_and_exit(GENERAL_SERVICE_ERROR, "the service code you provided ($data{$F{SERVICE_CODE}}) was not recognised by this server") + unless service_exists($data{$F{SERVICE_CODE}}); + error_and_exit(GENERAL_SERVICE_ERROR, "no address or long-lat provided") + unless ( (is_longlat($data{$F{LONG}}) && is_longlat($data{$F{LAT}})) || $data{$F{ADDRESS_STRING}} ); + + $pem_id = insert_into_pem(\%data); + + if (! $pem_id) { + error_and_exit(FATAL_ERROR, $data{$ERR_MSG} || "failed to get PEM ID"); + } else { + print <<XML; +Content-type: text/xml + +<?xml version="1.0" encoding="utf-8"?> +<service_requests> + <request> + <service_request_id>$pem_id</service_request_id> + </request> +</service_requests> +XML + } +} + +#------------------------------------------------------------------ +# is_longlat +# returns true if this looks like a long/lat value +#------------------------------------------------------------------ +sub is_longlat { + return $_[0] =~ /^-?\d+\.\d+$/o? 1 : 0; +} + +#------------------------------------------------------------------ +# service_exists +# lookup the service code, to check that it exists +# SELECT det_code, det_name FROM higatlas.doc_enquiry_types WHERE +# det_dtp_code = 'REQS' AND det_dcl_code ='SERV' AND det_con_id=1 +# Actually, FMS is expected to be sending good codes because they +# come from here anyway, and are expected to be stable. But could +# cache and check... probably overkill since DB insert will probably +# throw the error anyway. +#------------------------------------------------------------------ +sub service_exists { + my $service_code = shift; + return 1; +} + +#------------------------------------------------------------------ +# dump_to_file +# args: ref to hash of data +# for testing, log the incoming data into a local file +# NB throws a fatal error +#------------------------------------------------------------------ +sub dump_to_file { + my $h = shift; # href to data hash + if (open (OUTFILE, ">$OUT_FILENAME")) { + print OUTFILE "Data dump: " . gmtime() . "\n" . '-' x 64 . "\n\n"; + foreach (sort keys %$h) { + print OUTFILE "$_ => " . $$h{$_} . "\n"; + } + print OUTFILE "\n\n" . '-' x 64 . "\n[end]\n"; + close OUTFILE; + $$h{$ERR_MSG} = "NB did not write to DB (see $OUT_FILENAME instead: switch off \$TESTING_WRITE_TO_FILE to stop this)"; + } else { + $$h{$ERR_MSG} = "failed to write to outfile ($!)"; + } + return 0; # test always throws an error so no risk of production confusion! +} + +#------------------------------------------------------------------ +# insert_into_pem +# args: hashref to data hash +# returns PEM id of the new record (or passes an error message +# into the data hash if no id is available) +#------------------------------------------------------------------ +sub insert_into_pem { + my $h = shift; # href to data hash + + my $pem_id; + my $error_value; + my $error_product; + + # set specifc vars up where further processing on them might be needed: + my $undef = undef; + my $status = $$h{$F{STATUS}}; + my $service_code = $$h{$F{SERVICE_CODE}}; + my $description = $$h{$F{DESCRIPTION}}; + my $media_url = $$h{$F{MEDIA_URL}}; + if ($media_url) { + # don't put URL for full images into the database (because they're too big to see on a Blackberry) + $media_url =~ s/\.full(\.jpe?g)$/$1/; + $description .= ($STRIP_CONTROL_CHARS ne 'ruthless'? "\n\n":" ") . "Photo: $media_url"; + } + my $location = $$h{$F{CLOSEST_ADDRESS}}; + if ($location) { + # strip out everything apart from "Nearest" preamble + $location=~s/(Nearest road)[^:]+:/$1:/; + $location=~s/(Nearest postcode)[^:]+:(.*?)(\(\w+ away\))?\s*(\n|$)/$1: $2/; + } + + my %bindings; + # comments here are suggested values + # field lengths are from OCC's Java portlet + # fixed values + $bindings{":ce_cat"} = 'REQS'; # or REQS ? + $bindings{":ce_class"} = 'SERV'; # 'FRML' ? + $bindings{":ce_contact_type"} = 'ENQUIRER'; # 'ENQUIRER' + $bindings{":ce_status_code"} = 'RE'; # RE=received (?) + $bindings{":ce_compl_user_type"}= 'USER'; # 'USER' + + # ce_incident_datetime is *not* an optional param, but FMS isn't sending it at the moment + $bindings{":ce_incident_datetime"}=$$h{$F{REQUESTED_DATETIME}} || Time::Piece->new->strftime('%Y-%m-%d %H:%M'); + + # especially FMS-specific: + $bindings{":ce_source"} = "FMS"; # important, and specific to this script! + $bindings{":ce_doc_reference"} = $$h{$F{FMS_ID}}; # FMS id + $bindings{":ce_enquiry_type"} = $service_code; + + # incoming data + $bindings{":ce_x"} = $$h{$F{EASTING}}; + $bindings{":ce_y"} = $$h{$F{NORTHING}}; + $bindings{":ce_forename"} = uc strip($$h{$F{FIRST_NAME}}, 30); # 'CLIFF' + $bindings{":ce_surname"} = uc strip($$h{$F{LAST_NAME}}, 30); # 'STEWART' + $bindings{":ce_work_phone"} = strip($$h{$F{PHONE}}, 25); # '0117 600 4200' + $bindings{":ce_email"} = uc strip($$h{$F{EMAIL}}, 50); # 'info@exor.co.uk' + $bindings{":ce_description"} = strip($description, 1970, $F{DESCRIPTION}); # 'Large Pothole' + + # nearest address guesstimate + $bindings{":ce_location"} = strip($location, 254); + + if ($TESTING_WRITE_TO_FILE) { + return dump_to_file(\%bindings); + } + + # everything ready: now put it into the database + my $dbh = get_db_connection(); + + my $sth = $dbh->prepare(q# + BEGIN + PEM.create_enquiry( + ce_cat => :ce_cat, + ce_class => :ce_class, + ce_forename => :ce_forename, + ce_surname => :ce_surname, + ce_contact_type => :ce_contact_type, + ce_location => :ce_location, + ce_work_phone => :ce_work_phone, + ce_email => :ce_email, + ce_description => :ce_description, + ce_enquiry_type => :ce_enquiry_type, + ce_source => :ce_source, + ce_incident_datetime => to_Date(:ce_incident_datetime,'YYYY-MM-DD HH24:MI'), + ce_x => :ce_x, + ce_y => :ce_y, + ce_doc_reference => :ce_doc_reference, + ce_status_code => :ce_status_code, + ce_compl_user_type => :ce_compl_user_type, + error_value => :error_value, + error_product => :error_product, + ce_doc_id => :ce_doc_id); + END; +#); + + foreach my $name (sort keys %bindings) { + next if grep {$name eq $_} (':error_value', ':error_product', ':ce_doc_id'); # return values (see below) + $sth->bind_param( + $name, + $bindings{$name}, + $PEM_BOUND_VAR_TYPES{$name} || ORA_VARCHAR2 + ); + } + # return values are bound explicitly here: + $sth->bind_param_inout(":error_value", \$error_value, 12); #> l_ERROR_VALUE # number + $sth->bind_param_inout(":error_product", \$error_product, 10); #> l_ERROR_PRODUCT (will always be 'DOC') + $sth->bind_param_inout(":ce_doc_id", \$pem_id, 12); #> l_ce_doc_id # number + + # not used, but from the example docs, for reference + # $sth->bind_param(":ce_contact_title", $undef); # 'MR' + # $sth->bind_param(":ce_postcode", $undef); # 'BS11EJ' NB no spaces, upper case + # $sth->bind_param(":ce_building_no", $undef); # '1' + # $sth->bind_param(":ce_building_name", $undef); # 'CLIFTON HEIGHTS' + # $sth->bind_param(":ce_street", $undef); # 'HIGH STREET' + # $sth->bind_param(":ce_town", $undef); # 'BRSITOL' + # $sth->bind_param(":ce_enquiry_type", $undef); # 'CD' , ce_source => 'T' + # $sth->bind_param(":ce_cpr_id", $undef); # '5' (priority) + # $sth->bind_param(":ce_rse_he_id", $undef); #> nm3net.get_ne_id('1200D90970/09001','L') + # $sth->bind_param(":ce_compl_target", $undef); # '08-JAN-2004' + # $sth->bind_param(":ce_compl_corresp_date",$undef); # '02-JAN-2004' + # $sth->bind_param(":ce_compl_corresp_deliv_date", $undef); # '02-JAN-2004' + # $sth->bind_param(":ce_resp_of", $undef); # 'GBOWLER' + # $sth->bind_param(":ce_hct_vip", $undef); # 'CO' + # $sth->bind_param(":ce_hct_home_phone", $undef); # '0117 900 6201' + # $sth->bind_param(":ce_hct_mobile_phone", $undef); # '07111 1111111' + # $sth->bind_param(":ce_compl_remarks", $undef); # remarks (notes) max 254 char + + $sth->execute(); + $dbh->disconnect; + + # if error, maybe need to look it up: + # error_value is the index HER_NO in table HIG_ERRORS, which has messages + # actually err_product not helpful (wil always be "DOC") + $$h{$ERR_MSG} = "$error_value $error_product" if ($error_value || $error_product); + + return $pem_id; +} + +#------------------------------------------------------------------ +# strip +# args: data, max-length, field-name +# Trims, strips control chars, truncates to max-length +# Field-name only matters for description field +#------------------------------------------------------------------ +sub strip { + my ($s, $max_len, $field_name) = @_; + if ($STRIP_CONTROL_CHARS) { + if ($STRIP_CONTROL_CHARS eq 'ruthless') { + $s =~ s/[[:cntrl:]]/ /g; # strip all control chars, simples + } elsif ($STRIP_CONTROL_CHARS eq 'desc') { + if ($field_name eq $F{DESCRIPTION}) { + $s =~ s/[^\t\n[:^cntrl:]]/ /g; # leave tabs and newlines + } else { + $s =~ s/[[:cntrl:]]/ /g; # strip all control chars, simples + } + } else { + $s =~ s/[^\t\n[:^cntrl:]]/ /g; # leave tabs and newlines + } + } + from_to($s, 'utf8', 'Windows-1252') if $ENCODE_TO_WIN1252; + return $max_len? substr($s, 0, $max_len) : $s; +} + +#------------------------------------------------------------------ +# get_service_requests +# Strictly speaking, Open311 would expect the GET request for service +# requests to respond with all service requests (within a specified +# period). But as we're not using that, do a service discovery +# instead. +#------------------------------------------------------------------ +sub get_service_requests { + # error_and_exit(BAD_METHOD, "sorry, currently only handling incoming Open311 service requests: use POST method"); + get_service_discovery(); # for now +} + +#------------------------------------------------------------------ +# get_FAKE_INSERT +# for testing off command line, force the data +#------------------------------------------------------------------ +sub get_FAKE_INSERT { + my %fake_data = ( + $F{'DESCRIPTION'} => 'Testing, description: A acute (requires Latin-1): [á] ' + . ' pound sign (requires WinLatin-1): [£] omega tonos (requires UTF-8): [ώ]', + $F{'EASTING'} => '45119', + $F{'EMAIL'} => 'email@example.com', + $F{'FIRST_NAME'} => 'Dave', + $F{'FMS_ID'} => '1012', + $F{'LAST_NAME'} => 'Test', + $F{'LAT'} => '51.756741605999', + $F{'LONG'} => '-1.2596387532192', + $F{'NORTHING'} => '206709', + $F{'SERVICE_CODE'} => 'OT', + $F{'MEDIA_URL'} => 'http://www.example.com/pothole.jpg', + $F{'CLOSEST_ADDRESS'} => <<TEXT +Nearest road to the pin placed on the map (automatically generated by Bing Maps): St Giles, Oxford, OX1 3 + +Nearest postcode to the pin placed on the map (automatically generated): OX1 2LA (46m away) +TEXT + ); + return insert_into_pem(\%fake_data) +} + +#------------------------------------------------------------------ +# get_service_discovery +# Although not really implementing this, use it as a test to read the +# db and confirm connectivity. +#------------------------------------------------------------------ +sub get_service_discovery { + my $dbh = get_db_connection(); + my $ary_ref = $dbh->selectall_arrayref(qq(select det_code, det_name from higatlas.doc_enquiry_types where det_dtp_code = 'REQS' AND det_dcl_code='SERV' and det_con_id=1)); + # rough and ready XML dump now (should use XML Simple to build/escape properly!) + my $xml = ""; + foreach my $row(@{$ary_ref}) { + if (defined $row) { + my ($code, $name) = @$row; + $xml.= <<XML; + <service> + <service_code>$code</service_code> + <metadata>false</metadata> + <type>realtime</type> + <keywords/> + <group/> + <service_name>$name</service_name> + <description/> + </service> +XML + } + } + print <<XML; +Content-type: text/xml + +<?xml version="1.0" encoding="utf-8"?> +<services> +$xml +</services> +XML +} + +#------------------------------------------------------------------ +# get_pem_field_types +# return hash of types by field name: any not explicitly set here +# can be defaulted to VARCHAR2 +#------------------------------------------------------------------ +sub get_pem_field_types { + return ( + ':ce_incident_datetime' => ORA_DATE, + ':ce_x' => ORA_NUMBER, + ':ce_y' => ORA_NUMBER, + ':ce_date_expires' => ORA_DATE, + ':ce_issue_number' => ORA_NUMBER, + ':ce_status_date' => ORA_DATE, + ':ce_compl_ack_date' => ORA_DATE, + ':ce_compl_peo_date' => ORA_DATE, + ':ce_compl_target' => ORA_DATE, + ':ce_compl_complete' => ORA_DATE, + ':ce_compl_from' => ORA_DATE, + ':ce_compl_to' => ORA_DATE, + ':ce_compl_corresp_date' => ORA_DATE, + ':ce_compl_corresp_deliv_date' => ORA_DATE, + ':ce_compl_no_of_petitioners' => ORA_NUMBER, + ':ce_compl_est_cost' => ORA_NUMBER, + ':ce_compl_adv_cost' => ORA_NUMBER, + ':ce_compl_act_cost' => ORA_NUMBER, + ':ce_compl_follow_up1' => ORA_DATE, + ':ce_compl_follow_up2' => ORA_DATE, + ':ce_compl_follow_uo3' => ORA_DATE, + ':ce_date_time_arrived' => ORA_DATE, + ':error_value' => ORA_NUMBER, + ':ce_doc_id' => ORA_NUMBER, + ) +} + diff --git a/bin/oxfordshire/open311_service_request_update.cgi b/bin/oxfordshire/open311_service_request_update.cgi new file mode 100755 index 000000000..87b14fb98 --- /dev/null +++ b/bin/oxfordshire/open311_service_request_update.cgi @@ -0,0 +1,126 @@ +#!/usr/bin/perl + +# script for querying the higatlas.fms_update table provided by +# Bentley and offering them up as XML service request updates. +# https://github.com/mysociety/fixmystreet/wiki/Open311-FMS---Proposed-differences-to-Open311 +# +# mySociety: http://fixmystreet.org/ +#----------------------------------------------------------------- + +require 'open311_services.pm'; + +# incoming query params +my $CGI_VAR_START_DATE = 'start_date'; +my $CGI_VAR_END_DATE = 'end_date'; +my $CGI_VAR_NO_DEFAULT_DATE = 'force_no_default_date'; # for testing scratchy Oracle date stuff +my $CGI_VAR_LIMIT = 'limit'; # for testing +my $CGI_VAR_ANY_STATUS = 'any_status'; # for testing + +my $USE_ONLY_DATES = 0; # dates not times +my $MAX_LIMIT = 1000; +my $STATUS_CRITERIA = "(status='OPEN' OR status='CLOSED')"; +my $req = new CGI; + +get_service_request_updates($req); + +sub prepare_for_xml { + my $s = shift; + foreach ($s) { + from_to($_, 'utf8', 'Windows-1252') if $DECODE_FROM_WIN1252; + s/</</g; # numpty escaping pending XML Simple? + s/>/>/g; + s/&/&/g; + } + return $s; +} + +#------------------------------------------------------------------ +# get_service_discovery +# Although not really implementing this, use it as a test to read the +# db and confirm connectivity. +# +# TABLE "HIGATLAS"."FMS_UPDATE" +# +# "ROW_ID" NUMBER(9,0) NOT NULL ENABLE, +# "SERVICE_REQUEST_ID" NUMBER(9,0) NOT NULL ENABLE, +# "UPDATED_TIMEDATE" DATE DEFAULT SYSDATE NOT NULL ENABLE, +# "STATUS" VARCHAR2(10 BYTE) NOT NULL ENABLE, +# "DESCRIPTION" VARCHAR2(254 BYTE) NOT NULL ENABLE, +# +# CONSTRAINT "FMS_UPDATE_PK" PRIMARY KEY ("ROW_ID") +#------------------------------------------------------------------ +sub get_service_request_updates { + # by default, we only want last 24 hours + # also, limit to 1000 records + + my $raw_start_date = $req -> param($CGI_VAR_START_DATE); + my $raw_end_date = $req -> param($CGI_VAR_END_DATE); + my $start_date = get_date_or_nothing( $raw_start_date, $USE_ONLY_DATES ); + my $end_date = get_date_or_nothing( $raw_end_date, $USE_ONLY_DATES ); + + if (! $req -> param($CGI_VAR_NO_DEFAULT_DATE)) { + $start_date = get_date_or_nothing( $YESTERDAY, $USE_ONLY_DATES ) unless ($start_date or $end_date); + } + + my $date_format = 'YYYY-MM-DD HH24:MI:SS'; # NB: hh24 (not hh) + + $start_date = "updated_timedate >= to_date('$start_date', '$date_format')" if $start_date; + $end_date = "updated_timedate <= to_date('$end_date', '$date_format')" if $end_date; + + my $where_clause = ''; + my @criteria = ($start_date, $end_date); + push @criteria, $STATUS_CRITERIA unless $req -> param($CGI_VAR_ANY_STATUS); + $where_clause = join(' AND ', grep {$_} @criteria); + $where_clause = "WHERE $where_clause" if $where_clause; + + my $sql = qq(SELECT row_id, service_request_id, to_char(updated_timedate, '$date_format'), status, description FROM higatlas.fms_update $where_clause ORDER BY updated_timedate DESC); + + my $limit = $req -> param($CGI_VAR_LIMIT) =~ /^(\d{1,3})$/? $1 : $MAX_LIMIT; + $sql = "SELECT * FROM ($sql) WHERE ROWNUM <= $limit" if $limit; + + my $debug_str; + my $ary_ref; + + if ($TESTING_WRITE_TO_FILE) { + $ary_ref = [ + [97, 1000, '2013-01-05', 'OPEN', 'report was opened'], + [99, 1000, '2013-01-06', 'CLOSED', 'report was closed'] + ]; + # only add debug now if config says we're testing + $debug_str = <<XML; + <!-- DEBUG: from: $raw_start_date => $start_date --> + <!-- DEBUG: to: $raw_end_date => $end_date --> + <!-- DEBUG: sql: $sql --> +XML + } else { + my $dbh = get_db_connection(); + $ary_ref = $dbh->selectall_arrayref($sql); + } + + # rough and ready XML dump now (should use XML Simple to build/escape properly!) + my $xml = ""; + foreach my $row(@{$ary_ref}) { + if (defined $row) { + my ($id, $service_req_id, $updated_at, $status, $desc) = map { prepare_for_xml($_) } @$row; + $updated_at=~s/(\d{4}-\d\d-\d\d) (\d\d:\d\d:\d\d)/${1}T${2}Z/; # for now assume OCC in Zulu time + $xml.= <<XML; + <request_update> + <update_id>$id</update_id> + <service_request_id>$service_req_id</service_request_id> + <status>$status</status> + <updated_datetime>$updated_at</updated_datetime> + <description>$desc</description> + </request_update> +XML + } + } + print <<XML; +Content-type: text/xml + +<?xml version="1.0" encoding="utf-8"?> +<service_request_updates> +$xml +</service_request_updates> +$debug_str +XML +} diff --git a/bin/oxfordshire/open311_services.pm b/bin/oxfordshire/open311_services.pm new file mode 100644 index 000000000..12d0754fa --- /dev/null +++ b/bin/oxfordshire/open311_services.pm @@ -0,0 +1,150 @@ +#!/usr/bin/perl +# +# common stuff used by Oxfordshire Open311 glue scripts +# +# mySociety: http://fixmystreet.org/ +#----------------------------------------------------------------- + +use strict; +use CGI; +use Encode qw(from_to); +use DBI; +use Time::Piece; + + +################################################################### +# Config file: values in the config file override any values set +# in the code below for the following things: +# +# host: SXX-SAN-FOO_BAR +# sid: FOOBAR +# port: 1531 +# username: foo +# password: FooBar +# testing: 0 +# encode-to-win1252: 1 +# +# Absence of the config file fails silently in case you really are +# using values directly set in this script. +#------------------------------------------------------------------ +our $CONFIG_FILENAME = "/usr/local/etc/fixmystreet.config"; + +use constant { + GENERAL_SERVICE_ERROR => 400, + CODE_OR_ID_NOT_FOUND => 404, + CODE_OR_ID_NOT_PROVIDED => 400, + BAD_METHOD => 405, + FATAL_ERROR => 500 +}; + +our $DB_SERVER_NAME = 'FOO'; +our $DB_HOST = $DB_SERVER_NAME; # did this just in case we need to add more to the name (e.g, domain) +our $DB_PORT = '1531'; +our $ORACLE_SID = 'FOOBAR'; +our $USERNAME = 'FIXMYSTREET'; +our $PASSWORD = 'XXX'; +our $STORED_PROC_NAME = 'PEM.create_enquiry'; + +# NB can override these settings in the config file! + +# Strip control chars: +# 'ruthless' removes everything (i.e. all POSIX control chars) +# 'desc' removes everything, but keeps tabs and newlines in the 'description' field, where they matter +# 'normal' keeps tabs and newlines +our $STRIP_CONTROL_CHARS = 'ruthless'; + +our $ENCODE_TO_WIN1252 = 1; # force encoding to Win-1252 for PEM data +our $DECODE_FROM_WIN1252 = 1; # force encoding from Win-1252 for PEM data + +our $TESTING_WRITE_TO_FILE = 0; # write to file instead of DB or (get_service_request_update) don't really read the db +our $OUT_FILENAME = "fms-test.txt"; # dump data here if TESTING_WRITE_TO_FILE is true +our $TEST_SERVICE_DISCOVERY = 0; # switch to 1 to run service discovery, which confirms the DB connection at least +our $RUN_FAKE_INSERT_TEST = 0; # command-line execution attempts insert with fake data (mimics a POST request) + +# Config file overrides existing values for these, if present: +if ($CONFIG_FILENAME && open(CONF, $CONFIG_FILENAME)) { + while (<CONF>) { + next if /^#/; + if (/^\s*password:\s*(\S+)\s*$/i) { + $PASSWORD = $1; + } elsif (/^\s*sid:\s*(\S+)\s*$/i) { + $ORACLE_SID = $1; + } elsif (/^\s*username:\s*(\S+)\s*$/i) { + $USERNAME = $1; + } elsif (/^\s*port:\s*(\S+)\s*$/i) { + $DB_PORT = $1; + } elsif (/^\s*host:\s*(\S+)\s*$/i) { + $DB_HOST = $1; + } elsif (/^\s*testing:\s*(\S+)\s*$/i) { + $TESTING_WRITE_TO_FILE = $1; + } elsif (/^\s*test-service-discovery:\s*(\S+)\s*$/i) { + $TEST_SERVICE_DISCOVERY = $1; + } elsif (/^\s*strip-control-chars:\s*(\S+)\s*$/i) { + $STRIP_CONTROL_CHARS = lc $1; + } elsif (/^\s*encode-to-win1252:\s*(\S+)\s*$/i) { + $ENCODE_TO_WIN1252 = $1; + } elsif (/^\s*decode-from-win1252:\s*(\S+)\s*$/i) { + $DECODE_FROM_WIN1252 = $1; + } elsif (/^\s*run-fake-insert-test:\s*(\S+)\s*$/i) { + $RUN_FAKE_INSERT_TEST = $1; + } + } +} + +our $YESTERDAY = localtime() - Time::Seconds::ONE_DAY; # yesterday +$YESTERDAY = $YESTERDAY->strftime('%Y-%m-%d'); + +#------------------------------------------------------------------ +# error_and_exit +# args: HTTP status code, error message +# Sends out the HTTP status code and message +# and temrinates execution +#------------------------------------------------------------------ +sub error_and_exit { + my ($status, $msg) = @_; + print "Status: $status $msg\n\n$msg\n"; + exit; +} + + +#------------------------------------------------------------------ +# get_db_connection +# no args: uses globals, possibly read from config +# returns handle for the connection (otherwise terminates) +#------------------------------------------------------------------ +sub get_db_connection { + return DBI->connect( "dbi:Oracle:host=$DB_HOST;sid=$ORACLE_SID;port=$DB_PORT", $USERNAME, $PASSWORD ) + or error_and_exit(FATAL_ERROR, "failed to connect to database: " . $DBI::errstr, ""); +} + +#------------------------------------------------------------------ +# get_date_or_nothing { +# parse date from incoming request, fail silently +# expected format: 2003-02-15T13:50:05 +# These are coming from FMS for Oxford so don't expect to need +# need to parse anyway +#------------------------------------------------------------------ +sub get_date_or_nothing { + my $d = shift; + my $want_date_only = shift; + if ($d=~s/^(\d{4}-\d\d-\d\d)(T\d\d:\d\d(:\d\d)?)?.*/$1$2/) { + return $1 if $want_date_only; + $d="$1 00:00" unless $2; # no time provided + $d.=":00" unless $3; # no seconds + $d=~s/[TZ]/ /g; + # no point doing any parsing if regexp has done the work + # eval { + # $d=~s/(\d\d:\d\d).*/$1/; # bodge if we can't get DateTime installed + # $d = Time::Piece->strptime( $d, '%Y-%m-%dT%H:%M:%S'); + # $d = $d->strftime('%Y-%m-%d %H:%M:%S'); + # }; + # return '' if $@; + } else { + return ''; + } + return $d; +} + + + +1; 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/rotate-photos b/bin/rotate-photos index 31a60ff6c..7b8109d65 100755 --- a/bin/rotate-photos +++ b/bin/rotate-photos @@ -16,7 +16,7 @@ use FindBin; use lib "$FindBin::Bin/../perllib"; use lib "$FindBin::Bin/../commonlib/perllib"; -use Digest::SHA1 qw(sha1_hex); +use Digest::SHA qw(sha1_hex); use Utils; use mySociety::Config; diff --git a/bin/send-comments b/bin/send-comments index 4955cb2f3..3549113c9 100755 --- a/bin/send-comments +++ b/bin/send-comments @@ -1,7 +1,10 @@ #!/usr/bin/env perl -# send-reports: -# Send new problem reports to councils +# send-comments: +# Send comments/updates on reports to bodies +# In Open311 parlance these are 'service request updates' and are sent using +# mySociety's proposed extension to the Open311 Georeport v2 spec: +# https://github.com/mysociety/fixmystreet/wiki/Open311-FMS---Proposed-differences-to-Open311 # # Copyright (c) 2011 UK Citizens Online Democracy. All rights reserved. # Email: matthew@mysociety.org. WWW: http://www.mysociety.org @@ -23,24 +26,28 @@ use mySociety::EmailUtil; use Open311; -# maximum number of webservice attempts to send before not trying any more (XXX may be better in config?) -use constant SEND_FAIL_RETRIES_CUTOFF => 3; - # send_method config values found in by-area config data, for selecting to appropriate method use constant SEND_METHOD_EMAIL => 'email'; use constant SEND_METHOD_OPEN311 => 'Open311'; +use constant COUNCIL_ID_OXFORDSHIRE => 2237; + # Set up site, language etc. my ($verbose, $nomail) = CronFns::options(); my $base_url = mySociety::Config::get('BASE_URL'); my $site = CronFns::site($base_url); -my $councils = FixMyStreet::App->model('DB::Open311Conf')->search( { +my $bodies = FixMyStreet::App->model('DB::Body')->search( { send_method => SEND_METHOD_OPEN311, send_comments => 1, } ); -while ( my $council = $councils->next ) { +while ( my $body = $bodies->next ) { + + # Oxfordshire (OCC) is special: + # we do *receive* service_request_updates (aka comments) for OCC, but we never *send* them, so skip this pass + next if $body->areas->{+COUNCIL_ID_OXFORDSHIRE}; + my $use_extended = 0; my $comments = FixMyStreet::App->model('DB::Comment')->search( { 'me.whensent' => undef, @@ -49,7 +56,7 @@ while ( my $council = $councils->next ) { 'me.confirmed' => { '!=' => undef }, 'problem.whensent' => { '!=' => undef }, 'problem.external_id' => { '!=' => undef }, - 'problem.council' => { -like => '%' . $council->area_id .'%' }, + 'problem.bodies_str' => { -like => '%' . $body->id . '%' }, 'problem.send_method_used' => 'Open311', }, { @@ -57,18 +64,25 @@ while ( my $council = $councils->next ) { } ); - if ( $council->area_id == 2482 ) { + if ( $body->areas->{2482} ) { $use_extended = 1; } - my $o = Open311->new( - endpoint => $council->endpoint, - jurisdiction => $council->jurisdiction, - api_key => $council->api_key, + my %open311_conf = ( + endpoint => $body->endpoint, + jurisdiction => $body->jurisdiction, + api_key => $body->api_key, use_extended_updates => $use_extended, ); - if ( $council->area_id =~ /2482/ ) { + + if ( $body->send_extended_statuses ) { + $open311_conf{extended_statuses} = 1; + } + + my $o = Open311->new( %open311_conf ); + + if ( $body->areas->{2482} ) { my $endpoints = $o->endpoints; $endpoints->{update} = 'update.xml'; $endpoints->{service_request_updates} = 'update.xml'; @@ -78,11 +92,23 @@ while ( my $council = $councils->next ) { while ( my $comment = $comments->next ) { my $cobrand = FixMyStreet::Cobrand->get_class_for_moniker($comment->cobrand)->new(); + # TODO actually this should be OK for any devolved endpoint if original Open311->can_be_devolved, presumably + if ( 0 ) { # Check can_be_devolved and do this properly if set + my $sender = $cobrand->get_body_sender( $body, $comment->problem->category ); + my $config = $sender->{config}; + $o = Open311->new( + endpoint => $config->endpoint, + jurisdiction => $config->jurisdiction, + api_key => $config->api_key, + use_extended_updates => 1, # FMB uses extended updates + ); + } + if ( $comment->send_fail_count ) { next if bromley_retry_timeout( $comment ); } - if ( $council->area_id == 2482 ) { + if ( $body->areas->{2482} ) { my $extra = $comment->extra; if ( !$extra ) { $extra = {}; diff --git a/bin/site-specific-install.sh b/bin/site-specific-install.sh index 6ebac7970..3cc84007a 100644 --- a/bin/site-specific-install.sh +++ b/bin/site-specific-install.sh @@ -1,5 +1,8 @@ #!/bin/sh +# Set this to the version we want to check out +VERSION=${VERSION_OVERRIDE:-v1.3} + PARENT_SCRIPT_URL=https://github.com/mysociety/commonlib/blob/master/bin/install-site.sh misuse() { @@ -22,20 +25,33 @@ misuse() { [ -z "$HOST" ] && misuse HOST [ -z "$DISTRIBUTION" ] && misuse DISTRIBUTION [ -z "$VERSION" ] && misuse VERSION +[ -z "$DEVELOPMENT_INSTALL" ] && misuse DEVELOPMENT_INSTALL + +add_locale cy_GB +add_locale nb_NO +add_locale de_CH + +install_postfix -install_nginx +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-all-reports b/bin/update-all-reports index 4c4838c77..f4d6113cb 100755 --- a/bin/update-all-reports +++ b/bin/update-all-reports @@ -18,50 +18,65 @@ use List::MoreUtils qw(zip); my $fourweeks = 4*7*24*60*60; +# Age problems from when they're confirmed, except on Zurich +# where they appear as soon as they're created. +my $age_column = 'confirmed'; +if ( FixMyStreet->config('BASE_URL') =~ /zurich|zueri/ ) { + $age_column = 'created'; +} + my $problems = FixMyStreet::App->model("DB::Problem")->search( { state => [ FixMyStreet::DB::Result::Problem->visible_states() ], }, { columns => [ - 'id', 'council', 'state', 'areas', + 'id', 'bodies_str', 'state', 'areas', { duration => { extract => "epoch from current_timestamp-lastupdate" } }, - { age => { extract => "epoch from current_timestamp-confirmed" } }, + { age => { extract => "epoch from current_timestamp-$age_column" } }, ] } ); $problems = $problems->cursor; # Raw DB cursor for speed my ( %fixed, %open ); -my @cols = ( 'id', 'council', 'state', 'areas', 'duration', 'age' ); +my @cols = ( 'id', 'bodies_str', 'state', 'areas', 'duration', 'age' ); while ( my @problem = $problems->next ) { my %problem = zip @cols, @problem; - my @areas; - if ( !$problem{council} ) { - # Problem was not sent to any council, add to all areas - @areas = grep { $_ } split( /,/, $problem{areas} ); - $problem{councils} = 0; + my @bodies; + if ( !$problem{bodies_str} ) { + # Problem was not sent to any bodies, add to all areas + @bodies = grep { $_ } split( /,/, $problem{areas} ); + $problem{bodies} = 0; } else { - # Add to councils it was sent to - (my $council = $problem{council}) =~ s/\|.*$//; - @areas = split( /,/, $council ); - $problem{councils} = scalar @areas; + # Add to bodies it was sent to + (my $bodies = $problem{bodies_str}) =~ s/\|.*$//; + @bodies = split( /,/, $bodies ); + $problem{bodies} = scalar @bodies; } - foreach my $council ( @areas ) { + foreach my $body ( @bodies ) { my $duration_str = ( $problem{duration} > 2 * $fourweeks ) ? 'old' : 'new'; my $type = ( $problem{duration} > 2 * $fourweeks ) ? 'unknown' : ($problem{age} > $fourweeks ? 'older' : 'new'); - if (FixMyStreet::DB::Result::Problem->fixed_states()->{$problem{state}}) { + if (FixMyStreet::DB::Result::Problem->fixed_states()->{$problem{state}} || FixMyStreet::DB::Result::Problem->closed_states()->{$problem{state}}) { # Fixed problems are either old or new - $fixed{$council}{$duration_str}++ if FixMyStreet::DB::Result::Problem->fixed_states()->{$problem{state}}; + $fixed{$body}{$duration_str}++; } else { # Open problems are either unknown, older, or new - $open{$council}{$type}++ if $problem{state} eq 'confirmed'; + $open{$body}{$type}++; } } } +if ( FixMyStreet->config('BASE_URL') =~ /emptyhomes/ ) { + my $cobrand = FixMyStreet::Cobrand->get_class_for_moniker('emptyhomes')->new(); + my $stats = $cobrand->old_site_stats; + foreach (keys %$stats) { + $open{$_}{unknown} += $stats->{$_}; + } +} + my $body = JSON->new->utf8(1)->encode( { fixed => \%fixed, open => \%open, diff --git a/bin/update-schema b/bin/update-schema new file mode 100755 index 000000000..be5bc50e7 --- /dev/null +++ b/bin/update-schema @@ -0,0 +1,145 @@ +#!/usr/bin/perl +# +# This script should hopefully work out at what state the database is and, if +# the commit argument is provided, run the right schema files to bring it up to +# date. Let us know if it doesn't work; as with any upgrade script, do take a +# backup of your database before running. +# +# update-schema [--commit] + +use strict; +use warnings; + +# Horrible boilerplate to set up appropriate library paths. +use FindBin; +use lib "$FindBin::Bin/../commonlib/perllib"; + +use mySociety::Config; +use mySociety::DBHandle qw(dbh); +use mySociety::MaPit; + +mySociety::Config::set_file("$FindBin::Bin/../conf/general"); +my %args = ( + Name => mySociety::Config::get('FMS_DB_NAME'), + User => mySociety::Config::get('FMS_DB_USER'), + Password => mySociety::Config::get('FMS_DB_PASS'), +); +$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'; + +my $nothing = 1; +my $current_version = get_db_version(); +print "Current database version = $current_version\n"; +print "= Dry run =\n" unless $commit; + +for my $path (glob("$FindBin::Bin/../db/schema_*")) { + my ($name) = $path =~ /schema_(.*)\.sql$/; + next if $name le $current_version; + next if $name =~ /$current_version-/; # For number only match + print "* $name\n"; + $nothing = 0; + next unless $commit; + + open(FP, $path) or die $!; + my @statements; + my $s = ''; + my $in_function = 0; + while(<FP>) { + next if /^--/; # Ignore comments + $s .= $_; + # Functions may have semicolons within them + $in_function = 1 if /create function/i; + $in_function = 0 if /language 'plpgsql'/i; + if ($s =~ /;/ && !$in_function) { + push @statements, $s; + $s = ''; + } + } + close FP; + + foreach my $st (@statements) { + dbh()->do($st); + } +} + +if ( $commit && $current_version lt '0028' ) { + print "Bodies created, fetching names from mapit\n"; + my $area_ids = dbh()->selectcol_arrayref('SELECT area_id FROM body_areas'); + if ( @$area_ids ) { + my $areas = mySociety::MaPit::call('areas', $area_ids); + foreach (values %$areas) { + dbh()->do('UPDATE body SET name=? WHERE id=?', {}, $_->{name}, $_->{id}); + } + dbh()->do('COMMIT'); + } +} + +print "Nothing to do\n" if $nothing; + +# --- + +# By querying the database schema, we can see where we're currently at +# (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'); + return '0025' if column_like('alert_type', "ref='new_problems'", 'item_where', 'duplicate'); + return '0024' if column_exists('contacts', 'non_public'); + return '0023' if column_exists('open311conf', 'can_be_devolved'); + return '0022' if column_exists('problem', 'interest_count'); + return '0021' if column_exists('problem', 'external_source'); + return '0020' if column_exists('open311conf', 'suppress_alerts'); + return '0019' if column_exists('users', 'title'); + return '0018' if column_exists('open311conf', 'comment_user_id'); + return '0017' if column_exists('open311conf', 'send_comments'); + return '0016' if column_exists('comment', 'send_fail_count'); + return '0015-add_send_method_used_column_to_problem' if column_exists('problem', 'send_method_used'); + return '0015-add_extra_to_comment' if column_exists('comment', 'extra'); + return '0014' if column_exists('problem', 'send_fail_count'); + return '0013-add_send_method_column_to_open311conf' if column_exists('open311conf', 'send_method'); + return '0013-add_external_id_to_comment' if column_exists('comment', 'external_id'); + return '0012' if column_exists('problem', 'geocode'); + return '0011' if column_exists('contacts', 'extra'); + return '0010' if table_exists('open311conf'); + return '0009-update_alerts_problem_state_queries' if column_like('alert_type', "ref='new_problems'", 'item_where', 'investigating'); + return '0009-add_extra_to_problem' if column_exists('problem', 'extra'); + return '0008' if 0; + return '0007' if column_exists('comment', 'problem_state'); + return '0006' if 0; + return '0005-add_council_user_flag' if column_exists('users', 'from_council'); + return '0005-add_abuse_flags_to_users_and_reports' if column_exists('problem', 'flagged'); + return '0000'; +} + +# Returns true if a table exists +sub table_exists { + my $table = shift; + return dbh()->selectrow_array('select count(*) from pg_tables where tablename = ?', {}, $table); +} + +# Returns true if a column of table exists +sub column_exists { + my ( $table, $column ) = @_; + return dbh()->selectrow_array('select count(*) from pg_class, pg_attribute WHERE pg_class.relname=? AND pg_attribute.attname=? AND pg_class.oid=pg_attribute.attrelid AND pg_attribute.attnum > 0', {}, $table, $column); +} + +# Returns true if a column of a row in a table contains some text +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/update-send-questionnaire b/bin/update-send-questionnaire new file mode 100755 index 000000000..7a231b919 --- /dev/null +++ b/bin/update-send-questionnaire @@ -0,0 +1,29 @@ +#!/usr/bin/env perl + +=head1 DESCRIPTION + +Ad hoc script to update the send_questionnaire column on the +reports in cobrands that don't send questionnaires at all. + +=cut + +use strict; +use warnings; + +use FixMyStreet::App; + +my @cobrands; +foreach my $cobrand ( FixMyStreet::Cobrand->available_cobrand_classes() ) { + next unless $cobrand->{class}; + my $cls = $cobrand->{class}->new(); + push @cobrands, $cls->moniker if !$cls->send_questionnaires(); +} + +my $problems = FixMyStreet::App->model('DB::Problem')->search({ + cobrand => \@cobrands, + send_questionnaire => 1, +}); + +$problems->update( { + send_questionnaire => 0 +}); diff --git a/bin/update_po_header.bash b/bin/update_po_header.bash new file mode 100755 index 000000000..2f37ad5d3 --- /dev/null +++ b/bin/update_po_header.bash @@ -0,0 +1,33 @@ +#!/bin/bash +# +# fixmystreet/bin/gettext-extract +# Generate English language .po files from the source code and email templates, +# for FixMyStreet. Writes the output to appropriate .po files in locale/. +# +# Copyright (c) 2011 UK Citizens Online Democracy. All rights reserved. +# Email: matthew@mysociety.org; WWW: http://www.mysociety.org/ + +cd "$(dirname $(readlink -f $BASH_SOURCE))/.." + +# File to write to, clear it to start with +PO=$1 + +# Fix headers +# no such thing as tempfile on OS X +TEMP=`tempfile 2>/dev/null || mktemp /tmp/gettext-extract.XXXXXX` +NOW=`date +"%Y-%m-%d %H:%M%z"` +# strictly POSIX sed on e.g. OS X doesn't let you used \n in replacements so we do this +nl=$'\n'; +cat $PO | sed " + s/SOME DESCRIPTIVE TITLE/FixMyStreet original .po file, autogenerated by gettext-extract/; + s/YEAR THE PACKAGE'S COPYRIGHT HOLDER/2011 UK Citizens Online Democracy/; + s/PACKAGE package/main FixMyStreet code/; + s/FIRST AUTHOR <EMAIL@ADDRESS>, YEAR./Matthew Somerville <matthew@mysociety.org>, 2011-06-03./; + + s/PACKAGE VERSION/1.0\\\n\"\\$nl\"Report-Msgid-Bugs-To: matthew@mysociety.org/; + s/POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE/POT-Creation-Date: $NOW/; + s/LL@li.org/team@fixmystreet.com/; + s/charset=CHARSET/charset=UTF-8/; + s/8bit/8bit\\\n\"\\$nl\"Plural-Forms: nplurals=2; plural=n != 1;/; +" >> $TEMP +mv $TEMP $PO diff --git a/bin/zerotb_import_clinic_list.pl b/bin/zerotb_import_clinic_list.pl new file mode 100755 index 000000000..359a63925 --- /dev/null +++ b/bin/zerotb_import_clinic_list.pl @@ -0,0 +1,115 @@ +#!/usr/bin/perl + +use strict; +use FixMyStreet::App; +use Text::CSV; +use Getopt::Long::Descriptive; + +use constant TITLE => 0; +use constant DESC => 1; +use constant LATLONG => 2; +use constant EMAIL => 3; + +my ($opt, $usage) = describe_options( + '%c %o', + ['file|f=s', "path to csv file with list of clinics", { required => 1 } ], + ['email|e=s', "default email address for the updates to be sent to", { required => 1 } ], + ['verbose|v', "print out all services as they are found"], + ['help', "print usage message and exit" ], +); +print($usage->text), exit if $opt->help; + +my $csv = Text::CSV->new ( { binary => 1 } ) # should set binary attribute. + or die "Cannot use CSV: ".Text::CSV->error_diag (); +open my $fh, "<:encoding(utf8)", $opt->file or die "Failed to open " . $opt->file . ": $!"; + +my $clinic_user = FixMyStreet::App->model('DB::User')->find_or_create({ + email => $opt->email +}); +if ( not $clinic_user->in_storage ) { + $clinic_user->insert; +} + +# throw away header line +my $title_row = $csv->getline( $fh ); + +while ( my $row = $csv->getline( $fh ) ) { + my $clinics = FixMyStreet::App->model('DB::Problem')->search({ + title => $row->[TITLE] + }); + + my ($lat, $long) = split(',', $row->[LATLONG]); + my $p; + my $count = $clinics->count; + if ( $count == 0 ) { + $p = FixMyStreet::App->model('DB::Problem')->create({ + title => $row->[TITLE], + latitude => $lat, + longitude => $long, + used_map => 1, + anonymous => 1, + state => 'unconfirmed', + name => '', + user => $clinic_user, + detail => '', + areas => '', + postcode => '' + }); + } elsif ( $count == 1 ) { + $p = $clinics->first; + } else { + printf "Too many matches for: %s\n", $row->[TITLE]; + next; + } + $p->detail( $row->[DESC] ); + $p->latitude( $lat ); + $p->longitude( $long ); + $p->confirm; + + if ( $p->in_storage ) { + printf( "Updating entry for %s\n", $row->[TITLE] ) if $opt->verbose; + $p->update; + } else { + printf( "Creating entry for %s\n", $row->[TITLE] ) if $opt->verbose; + $p->insert; + } + $p->discard_changes; + + # disabling existing alerts in case email addresses have changed + my $existing = FixMyStreet::App->model('DB::Alert')->search({ + alert_type => 'new_updates', + parameter => $p->id + }); + $existing->update( { confirmed => 0 } ); + + if ( $row->[EMAIL] ) { + my $u = FixMyStreet::App->model('DB::User')->find_or_new({ + email => $row->[EMAIL] + }); + $u->insert unless $u->in_storage; + create_update_alert( $u, $p, $opt->verbose ); + } + + create_update_alert( $clinic_user, $p, $opt->verbose ); +} + +sub create_update_alert { + my ( $user, $p, $verbose ) = @_; + my $a = FixMyStreet::App->model('DB::Alert')->find_or_new({ + alert_type => 'new_updates', + user => $user, + parameter => $p->id, + }); + + $a->confirmed(1); + + if ( $a->in_storage ) { + printf( "Updating update alert for %s on %s\n", $user->email, $p->title ) + if $verbose; + $a->update; + } else { + printf( "Creating update alert for %s on %s\n", $user->email, $p->title ) + if $verbose; + $a->insert; + } +} diff --git a/bin/zurich-overdue-alert b/bin/zurich-overdue-alert new file mode 100755 index 000000000..4e81b3263 --- /dev/null +++ b/bin/zurich-overdue-alert @@ -0,0 +1,84 @@ +#!/usr/bin/env perl + +# zurich-overdue-alert: +# Send email alerts to administrators for overdue admin activities. +# +# Copyright (c) 2012 UK Citizens Online Democracy. All rights reserved. +# Email: matthew@mysociety.org. WWW: http://www.mysociety.org + +use strict; +use warnings; +require 5.8.0; + +use DateTime; +use CronFns; +use FixMyStreet::App; + +my ($verbose, $nomail) = CronFns::options(); + +# Only run on working days +my $now = DateTime->now(); +exit if FixMyStreet::Cobrand::Zurich::is_public_holiday($now) or FixMyStreet::Cobrand::Zurich::is_weekend($now); + +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' ] ); +loop_through( 'alert-overdue.txt', 1, 6, 'in progress' ); +loop_through( 'alert-overdue.txt', 0, 6, ['confirmed', 'planned'] ); + +sub loop_through { + my ( $template, $include_parent, $days, $states ) = @_; + + my $reports = FixMyStreet::App->model("DB::Problem")->search( { + state => $states, + created => { '<', FixMyStreet::Cobrand::Zurich::sub_days( $now, $days ) }, + bodies_str => { '!=', undef }, + } ); + + my %to_send = (); + while (my $row = $reports->next) { + $to_send{$row->bodies_str} .= '* ' . $row->id . ": '" . $row->title . "'\n\n"; + } + + my $template_path = FixMyStreet->path_to( "templates", "email", "zurich", $template )->stringify; + $template = Utils::read_file( $template_path ); + + foreach my $body_id (keys %to_send) { + send_alert( $template, $body_id, $to_send{$body_id}, $include_parent ); + } +} + +sub send_alert { + my ( $template, $body_id, $data, $include_parent ) = @_; + + my $body = $bodies{$body_id}; + my $body_email = $body->endpoint; + + my $h = { + data => $data, + admin_url => $cobrand->admin_base_url, + }; + + my $env_to = [ $body_email ]; + my $to = [ [ $body_email, $body->name ] ]; + if ( $include_parent ) { + my $parent = $body->parent; + my $parent_email = $parent->endpoint; + push @$env_to, $parent_email; + push @$to, [ $parent_email, $parent->name ]; + } + + my $result = FixMyStreet::App->send_email_cron( + { + _template_ => $template, + _parameters_ => $h, + To => $to, + From => [ FixMyStreet->config('CONTACT_EMAIL'), FixMyStreet->config('CONTACT_NAME') ], + }, + FixMyStreet->config('CONTACT_EMAIL'), + $env_to, + $nomail + ); +} + 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/bin/zurich/geocode b/bin/zurich/geocode new file mode 100755 index 000000000..9482b27e6 --- /dev/null +++ b/bin/zurich/geocode @@ -0,0 +1,45 @@ +#!/usr/bin/perl + +=head1 NAME + +zurich/geocode - commandline tool to test the Zurich geocoder + +=head1 SYNOPSIS + + # Firstly: + ## copy the GEOCODER config from a current Zurich conf to your conf/general.yml + $ eval `perl setenv.pl` + + $ bin/zurich/geocode Magnus + + # ... output from geocoder + +This can be used to test the results of, e.g. + + https://www.zueriwieneu.ch/ajax/geocode?term=Magnus + +but without the caching which FixMyStreet applies, and passing on any 500 +errors from the server. + +=cut + +use strict; +use warnings; +require 5.8.0; + + +use Data::Dumper; +use feature 'say'; + +use FixMyStreet; +use FixMyStreet::App; +use FixMyStreet::Geocode::Zurich; + +# TODO use FixMyStreet::override_config to get data from conf/general.yml.zurich if available +my $geocoder = FixMyStreet->config('GEOCODER') + or die "No GEOCODER config -- please copy appropriate Zurich conf to conf/general.yml"; + +my $c = FixMyStreet::App->new(); +my $s = join ' ', @ARGV; + +say Dumper( FixMyStreet::Geocode::Zurich::string( $s, $c ) ); diff --git a/carton.lock b/carton.lock deleted file mode 100644 index 2d284b099..000000000 --- a/carton.lock +++ /dev/null @@ -1,32682 +0,0 @@ -{ - "modules" : { - "App::cpanminus" : { - "dist" : "App-cpanminus-1.5017", - "module" : "App::cpanminus", - "mymeta" : { - "abstract" : "Get, unpack, build and install modules from CPAN.", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.120921, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "App-cpanminus", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "ExtUtils::Install" : "1.46", - "ExtUtils::MakeMaker" : "6.31", - "Module::Build" : "0.36" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "https://github.com/miyagawa/cpanminus/issues" - }, - "repository" : { - "type" : "git", - "url" : "git://github.com/miyagawa/cpanminus.git" - } - }, - "version" : "1.5017" - }, - "name" : "App::cpanminus", - "pathname" : "M/MI/MIYAGAWA/App-cpanminus-1.5017.tar.gz", - "provides" : { - "App::cpanminus" : { - "file" : "App/cpanminus.pm", - "version" : "1.5017" - } - }, - "version" : "1.5017" - }, - "AppConfig" : { - "dist" : "AppConfig-1.66", - "mymeta" : { - "abstract" : "AppConfig is a bundle of Perl5 modules for reading configuration files and parsing command line arguments.", - "author" : [ - "Andy Wardley <abw@wardley.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.31, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "AppConfig", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "version" : "1.66" - }, - "name" : "AppConfig", - "pathname" : "/authors/id/A/AB/ABW/AppConfig-1.66.tar.gz", - "provides" : { - "AppConfig" : { - "file" : "AppConfig.pm", - "version" : "1.66" - }, - "AppConfig::Args" : { - "file" : "AppConfig/Args.pm", - "version" : "1.65" - }, - "AppConfig::CGI" : { - "file" : "AppConfig/CGI.pm", - "version" : "1.65" - }, - "AppConfig::File" : { - "file" : "AppConfig/File.pm", - "version" : "1.65" - }, - "AppConfig::Getopt" : { - "file" : "AppConfig/Getopt.pm", - "version" : "1.65" - }, - "AppConfig::State" : { - "file" : "AppConfig/State.pm", - "version" : "1.65" - }, - "AppConfig::Sys" : { - "file" : "AppConfig/Sys.pm", - "version" : "1.65" - } - }, - "target" : "AppConfig", - "version" : "1.66" - }, - "Archive::Zip" : { - "dist" : "Archive-Zip-1.30", - "module" : "Archive::Zip", - "mymeta" : { - "abstract" : "Provide an interface to ZIP archive files.", - "author" : [ - "Ned Konz <perl@bike-nomad.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.50, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Archive-Zip", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Compress::Raw::Zlib" : "2.017", - "File::Basename" : 0, - "File::Copy" : 0, - "File::Find" : 0, - "File::Path" : 0, - "File::Spec" : "0.80", - "File::Temp" : 0, - "IO::File" : 0, - "IO::Handle" : 0, - "IO::Seekable" : 0, - "Test::More" : "0.42", - "Time::Local" : 0, - "perl" : "5.00396" - } - } - }, - "release_status" : "stable", - "version" : "1.30" - }, - "name" : "Archive::Zip", - "pathname" : "A/AD/ADAMK/Archive-Zip-1.30.tar.gz", - "provides" : { - "Archive::Zip" : { - "file" : "Archive/Zip.pm", - "version" : "1.30" - }, - "Archive::Zip::Archive" : { - "file" : "Archive/Zip/Archive.pm", - "version" : "1.30" - }, - "Archive::Zip::BufferedFileHandle" : { - "file" : "Archive/Zip/BufferedFileHandle.pm", - "version" : "1.30" - }, - "Archive::Zip::DirectoryMember" : { - "file" : "Archive/Zip/DirectoryMember.pm", - "version" : "1.30" - }, - "Archive::Zip::FileMember" : { - "file" : "Archive/Zip/FileMember.pm", - "version" : "1.30" - }, - "Archive::Zip::Member" : { - "file" : "Archive/Zip/Member.pm", - "version" : "1.30" - }, - "Archive::Zip::MemberRead" : { - "file" : "Archive/Zip/MemberRead.pm", - "version" : "1.30" - }, - "Archive::Zip::MockFileHandle" : { - "file" : "Archive/Zip/MockFileHandle.pm", - "version" : "1.30" - }, - "Archive::Zip::NewFileMember" : { - "file" : "Archive/Zip/NewFileMember.pm", - "version" : "1.30" - }, - "Archive::Zip::StringMember" : { - "file" : "Archive/Zip/StringMember.pm", - "version" : "1.30" - }, - "Archive::Zip::Tree" : { - "file" : "Archive/Zip/Tree.pm", - "version" : "1.30" - }, - "Archive::Zip::ZipFileMember" : { - "file" : "Archive/Zip/ZipFileMember.pm", - "version" : "1.30" - } - }, - "version" : "1.30" - }, - "B::Hooks::EndOfScope" : { - "dist" : "B-Hooks-EndOfScope-0.09", - "mymeta" : { - "abstract" : "Execute code after a scope finished compilation", - "author" : [ - "Florian Ragwitz <rafl@debian.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 2.101241, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "B-Hooks-EndOfScope", - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.31" - } - }, - "runtime" : { - "recommends" : {}, - "requires" : { - "Sub::Exporter" : 0, - "Variable::Magic" : "0.34" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=B-Hooks-EndOfScope" - }, - "homepage" : "http://search.cpan.org/dist/B-Hooks-EndOfScope", - "repository" : { - "type" : "git", - "url" : "git://github.com/rafl/b-hooks-endofscope.git" - } - }, - "version" : "0.09", - "x_Dist_Zilla" : { - "plugins" : [ - { - "class" : "Dist::Zilla::Plugin::GatherDir", - "name" : "@FLORA/@Filter/GatherDir", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::PruneCruft", - "name" : "@FLORA/@Filter/PruneCruft", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::ManifestSkip", - "name" : "@FLORA/@Filter/ManifestSkip", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::MetaYAML", - "name" : "@FLORA/@Filter/MetaYAML", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::License", - "name" : "@FLORA/@Filter/License", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::Readme", - "name" : "@FLORA/@Filter/Readme", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::PkgVersion", - "name" : "@FLORA/@Filter/PkgVersion", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::PodCoverageTests", - "name" : "@FLORA/@Filter/PodCoverageTests", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::PodSyntaxTests", - "name" : "@FLORA/@Filter/PodSyntaxTests", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::ExtraTests", - "name" : "@FLORA/@Filter/ExtraTests", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::ExecDir", - "name" : "@FLORA/@Filter/ExecDir", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::ShareDir", - "name" : "@FLORA/@Filter/ShareDir", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::MakeMaker", - "name" : "@FLORA/@Filter/MakeMaker", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::Manifest", - "name" : "@FLORA/@Filter/Manifest", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::ConfirmRelease", - "name" : "@FLORA/@Filter/ConfirmRelease", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::UploadToCPAN", - "name" : "@FLORA/@Filter/UploadToCPAN", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::MetaConfig", - "name" : "@FLORA/MetaConfig", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::MetaJSON", - "name" : "@FLORA/MetaJSON", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::MetaResources", - "name" : "@FLORA/MetaResources", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::Authority", - "name" : "@FLORA/Authority", - "version" : "0.01" - }, - { - "class" : "Dist::Zilla::Plugin::PodWeaver", - "name" : "@FLORA/PodWeaver", - "version" : "3.100710" - }, - { - "class" : "Dist::Zilla::Plugin::AutoPrereq", - "name" : "@FLORA/AutoPrereq", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":InstallModules", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":TestFiles", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ExecFiles", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ShareFiles", - "version" : "2.101241" - } - ], - "zilla" : { - "class" : "Dist::Zilla", - "config" : { - "is_trial" : 0 - }, - "version" : "2.101241" - } - }, - "x_authority" : "cpan:FLORA" - }, - "name" : "B::Hooks::EndOfScope", - "pathname" : "F/FL/FLORA/B-Hooks-EndOfScope-0.09.tar.gz", - "provides" : { - "B::Hooks::EndOfScope" : { - "file" : "B/Hooks/EndOfScope.pm", - "version" : "0.09" - } - }, - "target" : "B::Hooks::EndOfScope", - "version" : "0.09" - }, - "CGI::Simple" : { - "dist" : "CGI-Simple-1.113", - "mymeta" : { - "abstract" : "A Simple totally OO CGI interface that is CGI.pm compliant", - "author" : [ - "Andy Armstrong <andy@hexten.net>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "CGI-Simple", - "prereqs" : { - "configure" : { - "requires" : { - "Module::Build" : "0.36" - } - }, - "runtime" : { - "requires" : { - "IO::Scalar" : 0, - "Test::More" : 0 - } - } - }, - "provides" : { - "CGI::Simple" : { - "file" : "lib/CGI/Simple.pm", - "version" : "1.113" - }, - "CGI::Simple::Cookie" : { - "file" : "lib/CGI/Simple/Cookie.pm", - "version" : "1.113" - }, - "CGI::Simple::Standard" : { - "file" : "lib/CGI/Simple/Standard.pm", - "version" : "1.113" - }, - "CGI::Simple::Util" : { - "file" : "lib/CGI/Simple/Util.pm", - "version" : "1.113" - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=CGI-Simple" - }, - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://github.com/AndyA/CGI--Simple.git (fetch)" - } - }, - "version" : "1.113" - }, - "name" : "CGI::Simple", - "pathname" : "/authors/id/A/AN/ANDYA/CGI-Simple-1.113.tar.gz", - "provides" : { - "CGI::Simple" : { - "file" : "CGI/Simple.pm", - "version" : "1.113" - }, - "CGI::Simple::Cookie" : { - "file" : "CGI/Simple/Cookie.pm", - "version" : "1.113" - }, - "CGI::Simple::Standard" : { - "file" : "CGI/Simple/Standard.pm", - "version" : "1.113" - }, - "CGI::Simple::Util" : { - "file" : "CGI/Simple/Util.pm", - "version" : "1.113" - } - }, - "target" : "CGI::Simple::Cookie", - "version" : "1.113" - }, - "CPAN::Checksums" : { - "dist" : "CPAN-Checksums-2.07", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.5705, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "CPAN-Checksums", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Compress::Bzip2" : 0, - "Compress::Zlib" : 0, - "Data::Compare" : 0, - "Data::Dumper" : 0, - "Digest::MD5" : "2.36", - "Digest::SHA" : 0, - "DirHandle" : 0, - "File::Spec" : 0, - "File::Temp" : 0, - "IO::File" : "1.14" - } - } - }, - "release_status" : "stable", - "version" : "2.07" - }, - "name" : "CPAN::Checksums", - "pathname" : "/authors/id/A/AN/ANDK/CPAN-Checksums-2.07.tar.gz", - "provides" : { - "CPAN::Checksums" : { - "file" : "CPAN/Checksums.pm", - "version" : "2.07" - } - }, - "target" : "CPAN::Checksums", - "version" : "2.07" - }, - "CPAN::DistnameInfo" : { - "dist" : "CPAN-DistnameInfo-0.12", - "module" : "CPAN::DistnameInfo", - "mymeta" : { - "abstract" : "Extract distribution name and version from a distribution filename", - "author" : [ - "Graham Barr <gbarr@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.48, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "CPAN-DistnameInfo", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/gbarr/CPAN-DistnameInfo" - } - }, - "version" : "0.12" - }, - "name" : "CPAN::DistnameInfo", - "pathname" : "G/GB/GBARR/CPAN-DistnameInfo-0.12.tar.gz", - "provides" : { - "CPAN::DistnameInfo" : { - "file" : "CPAN/DistnameInfo.pm", - "version" : "0.12" - } - }, - "version" : "0.12" - }, - "CPAN::PackageDetails" : { - "dist" : "CPAN-PackageDetails-0.25", - "mymeta" : { - "abstract" : "Create or read PAUSE's 02packages.details.txt.gz", - "author" : [ - "brian d foy <bdfoy@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.50, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "CPAN-PackageDetails", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "CPAN::DistnameInfo" : 0, - "IO::Compress::Gzip" : 0, - "IO::Uncompress::Gunzip" : 0, - "Test::More" : 0, - "Test::Output" : "0.10", - "version" : "0.78" - } - } - }, - "release_status" : "stable", - "version" : "0.25" - }, - "name" : "CPAN::PackageDetails", - "pathname" : "/authors/id/B/BD/BDFOY/CPAN-PackageDetails-0.25.tar.gz", - "provides" : { - "CPAN::PackageDetails" : { - "file" : "CPAN/PackageDetails.pm", - "version" : "0.25" - }, - "CPAN::PackageDetails::Entries" : { - "file" : "CPAN/PackageDetails/Entries.pm", - "version" : "0.25" - }, - "CPAN::PackageDetails::Entry" : { - "file" : "CPAN/PackageDetails/Entry.pm", - "version" : "0.25" - }, - "CPAN::PackageDetails::Header" : { - "file" : "CPAN/PackageDetails/Header.pm", - "version" : "0.25" - } - }, - "target" : "CPAN::PackageDetails", - "version" : "0.25" - }, - "Cache::Memcached" : { - "dist" : "Cache-Memcached-1.29", - "mymeta" : { - "abstract" : "client library for memcached (memory cache daemon)", - "author" : [ - "Brad Fitzpatrick <brad@danga.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.55_02, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Cache-Memcached", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Encode" : 0, - "Storable" : 0, - "String::CRC32" : 0, - "Time::HiRes" : 0 - } - } - }, - "release_status" : "stable", - "version" : "1.29" - }, - "name" : "Cache::Memcached", - "pathname" : "D/DO/DORMANDO/Cache-Memcached-1.29.tar.gz", - "provides" : { - "Cache::Memcached" : { - "file" : "Cache/Memcached.pm", - "version" : "1.29" - }, - "Cache::Memcached::GetParser" : { - "file" : "Cache/Memcached/GetParser.pm" - } - }, - "target" : "Cache::Memcached", - "version" : "1.29" - }, - "Capture::Tiny" : { - "dist" : "Capture-Tiny-0.19", - "module" : "Capture::Tiny", - "mymeta" : { - "abstract" : "Capture STDOUT and STDERR from Perl, XS or external programs", - "author" : [ - "David Golden <dagolden@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.300018, CPAN::Meta::Converter version 2.120921, CPAN::Meta::Converter version 2.112150", - "license" : [ - "apache_2_0" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Capture-Tiny", - "no_index" : { - "directory" : [ - "t", - "xt", - "examples", - "corpus" - ], - "package" : [ - "DB" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Config" : 0, - "File::Find" : 0, - "IO::File" : 0, - "Test::More" : "0.62" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.30" - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Exporter" : 0, - "File::Spec" : 0, - "File::Temp" : 0, - "IO::Handle" : 0, - "Scalar::Util" : 0, - "strict" : 0, - "warnings" : 0 - } - } - }, - "provides" : { - "Capture::Tiny" : { - "file" : "lib/Capture/Tiny.pm", - "version" : "0.19" - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=Capture-Tiny" - }, - "homepage" : "https://github.com/dagolden/capture-tiny", - "repository" : { - "url" : "https://github.com/dagolden/capture-tiny.git" - } - }, - "version" : "0.19" - }, - "name" : "Capture::Tiny", - "pathname" : "D/DA/DAGOLDEN/Capture-Tiny-0.19.tar.gz", - "provides" : { - "Capture::Tiny" : { - "file" : "Capture/Tiny.pm", - "version" : "0.19" - } - }, - "version" : "0.19" - }, - "Carp" : { - "dist" : "Carp-1.26", - "module" : "Carp", - "mymeta" : { - "abstract" : "alternative warn and die for modules", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter version 2.120921, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Carp", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Exporter" : 0, - "IPC::Open3" : "1.0103", - "Test::More" : 0, - "strict" : 0, - "warnings" : 0 - } - } - }, - "release_status" : "stable", - "version" : "1.26" - }, - "name" : "Carp", - "pathname" : "Z/ZE/ZEFRAM/Carp-1.26.tar.gz", - "provides" : { - "Carp" : { - "file" : "Carp.pm", - "version" : "1.26" - }, - "Carp::Heavy" : { - "file" : "Carp/Heavy.pm", - "version" : "1.26" - } - }, - "version" : "1.26" - }, - "Carp::Assert" : { - "dist" : "Carp-Assert-0.20", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.31, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Carp-Assert", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Test::More" : "0.4" - } - } - }, - "release_status" : "stable", - "version" : "0.20" - }, - "name" : "Carp::Assert", - "pathname" : "M/MS/MSCHWERN/Carp-Assert-0.20.tar.gz", - "provides" : { - "Carp::Assert" : { - "file" : "Carp/Assert.pm", - "version" : "0.20" - } - }, - "target" : "Carp::Assert", - "version" : "0.20" - }, - "Carp::Assert::More" : { - "dist" : "Carp-Assert-More-1.12", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.30, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Carp-Assert-More", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Carp::Assert" : 0, - "Scalar::Util" : 0, - "Test::Exception" : 0, - "Test::More" : "0.18" - } - } - }, - "release_status" : "stable", - "version" : "1.12", - "x_installdirs" : "site", - "x_version_from" : "More.pm" - }, - "name" : "Carp::Assert::More", - "pathname" : "P/PE/PETDANCE/Carp-Assert-More-1.12.tar.gz", - "provides" : { - "Carp::Assert::More" : { - "file" : "Carp/Assert/More.pm", - "version" : "1.12" - } - }, - "target" : "Carp::Assert::More", - "version" : "1.12" - }, - "Carp::Clan" : { - "dist" : "Carp-Clan-6.04", - "mymeta" : { - "abstract" : "Report errors from perspective of caller of a \"clan\" of modules", - "author" : [ - "Steffen Beyer <STBEY@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.42, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Carp-Clan", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::Exception" : 0 - } - } - }, - "release_status" : "stable", - "version" : "6.04" - }, - "name" : "Carp::Clan", - "pathname" : "S/ST/STBEY/Carp-Clan-6.04.tar.gz", - "provides" : { - "Carp::Clan" : { - "file" : "Carp/Clan.pm", - "version" : "6.04" - } - }, - "target" : "Carp::Clan", - "version" : "6.04" - }, - "Catalyst::Action::RenderView" : { - "dist" : "Catalyst-Action-RenderView-0.16", - "mymeta" : { - "abstract" : "Sensible default end action.", - "author" : [ - "Marcus Ramberg <marcus@thefeed.no>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.91, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Catalyst-Action-RenderView", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "HTTP::Request::AsCGI" : 0, - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Catalyst::Runtime" : "5.80030", - "Data::Visitor" : "0.24", - "MRO::Compat" : 0, - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Action-RenderView/trunk/" - } - }, - "version" : "0.16" - }, - "name" : "Catalyst::Action::RenderView", - "pathname" : "B/BO/BOBTFISH/Catalyst-Action-RenderView-0.16.tar.gz", - "provides" : { - "Catalyst::Action::RenderView" : { - "file" : "Catalyst/Action/RenderView.pm", - "version" : "0.16" - } - }, - "target" : "Catalyst::Action::RenderView", - "version" : "0.16" - }, - "Catalyst::Authentication::Store::DBIx::Class" : { - "dist" : "Catalyst-Authentication-Store-DBIx-Class-0.1503", - "mymeta" : { - "abstract" : "A storage class for Catalyst Authentication using DBIx::Class", - "author" : [ - "Jason Kuri (jayk@cpan.org)" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.02, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Catalyst-Authentication-Store-DBIx-Class", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Catalyst::Model::DBIC::Schema" : "0.18", - "Catalyst::Plugin::Authentication" : "0.10008", - "Catalyst::Runtime" : "5.8", - "DBIx::Class" : "0.08", - "List::MoreUtils" : 0, - "Moose" : 0, - "Test::More" : 0, - "Try::Tiny" : 0, - "namespace::autoclean" : 0, - "perl" : "5.008001" - } - } - }, - "provides" : { - "Catalyst::Authentication::Realm::SimpleDB" : { - "file" : "lib/Catalyst/Authentication/Realm/SimpleDB.pm", - "version" : 0 - }, - "Catalyst::Authentication::Store::DBIx::Class" : { - "file" : "lib/Catalyst/Authentication/Store/DBIx/Class.pm", - "version" : "0.1503" - }, - "Catalyst::Authentication::Store::DBIx::Class::User" : { - "file" : "lib/Catalyst/Authentication/Store/DBIx/Class/User.pm", - "version" : 0 - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://git.shadowcat.co.uk/catagits/Catalyst-Authentication-Store-DBIx-Class.git" - } - }, - "version" : "0.1503" - }, - "name" : "Catalyst::Authentication::Store::DBIx::Class", - "pathname" : "B/BO/BOBTFISH/Catalyst-Authentication-Store-DBIx-Class-0.1503.tar.gz", - "provides" : { - "Catalyst::Authentication::Realm::SimpleDB" : { - "file" : "Catalyst/Authentication/Realm/SimpleDB.pm" - }, - "Catalyst::Authentication::Store::DBIx::Class" : { - "file" : "Catalyst/Authentication/Store/DBIx/Class.pm", - "version" : "0.1503" - }, - "Catalyst::Authentication::Store::DBIx::Class::User" : { - "file" : "Catalyst/Authentication/Store/DBIx/Class/User.pm" - } - }, - "target" : "Catalyst::Authentication::Store::DBIx::Class", - "version" : "0.1503" - }, - "Catalyst::Component::InstancePerContext" : { - "dist" : "Catalyst-Component-InstancePerContext-0.001001", - "mymeta" : { - "abstract" : "Moose role to create only one instance of component per context", - "author" : [ - "Guillermo Roditi (groditi) <groditi@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.67, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Catalyst-Component-InstancePerContext", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Catalyst" : 0, - "Moose" : 0, - "Scalar::Util" : 0, - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.001001" - }, - "name" : "Catalyst::Component::InstancePerContext", - "pathname" : "G/GR/GRODITI/Catalyst-Component-InstancePerContext-0.001001.tar.gz", - "provides" : { - "Catalyst::Component::InstancePerContext" : { - "file" : "Catalyst/Component/InstancePerContext.pm", - "version" : "0.001001" - } - }, - "target" : "Catalyst::Component::InstancePerContext", - "version" : "0.001001" - }, - "Catalyst::Devel" : { - "dist" : "Catalyst-Devel-1.33", - "module" : "http://search.cpan.org/CPAN/authors/id/F/FL/FLORA/Catalyst-Devel-1.33.tar.gz", - "mymeta" : { - "abstract" : "Catalyst Development Tools", - "author" : [ - "Catalyst Contributors, see Catalyst.pm" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.00, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Catalyst-Devel", - "no_index" : { - "directory" : [ - "inc", - "share", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Test::Fatal" : "0.003", - "Test::More" : "0.94" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Catalyst" : "5.80015", - "Catalyst::Action::RenderView" : "0.10", - "Catalyst::Plugin::ConfigLoader" : "0.30", - "Catalyst::Plugin::Static::Simple" : "0.28", - "Config::General" : "2.42", - "ExtUtils::MakeMaker" : "6.11", - "File::ChangeNotify" : "0.07", - "File::Copy::Recursive" : 0, - "File::ShareDir" : 0, - "Module::Install" : "0.91", - "Moose" : 0, - "MooseX::Emulate::Class::Accessor::Fast" : 0, - "Path::Class" : "0.09", - "Template" : "2.14", - "Test::Fatal" : "0.003", - "Test::More" : "0.94", - "namespace::autoclean" : 0, - "namespace::clean" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "homepage" : "http://dev.catalyst.perl.org/", - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://git.shadowcat.co.uk/catagits/Catalyst-Devel.git" - }, - "x_IRC" : "irc://irc.perl.org/#catalyst", - "x_MailingList" : "http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst" - }, - "version" : "1.33" - }, - "name" : "Catalyst::Devel", - "pathname" : "http:/search.cpan.org/CPAN/authors/id/F/FL/FLORA/Catalyst-Devel-1.33.tar.gz", - "provides" : { - "Catalyst::Devel" : { - "file" : "Catalyst/Devel.pm", - "version" : "1.33" - }, - "Catalyst::Helper" : { - "file" : "Catalyst/Helper.pm", - "version" : "1.33" - }, - "Catalyst::Module::Install" : { - "file" : "Module/Install/Catalyst.pm" - }, - "Catalyst::Restarter" : { - "file" : "Catalyst/Restarter.pm" - }, - "Catalyst::Restarter::Forking" : { - "file" : "Catalyst/Restarter/Forking.pm" - }, - "Catalyst::Restarter::Win32" : { - "file" : "Catalyst/Restarter/Win32.pm" - }, - "Module::Install::Catalyst" : { - "file" : "Module/Install/Catalyst.pm" - }, - "http://search.cpan.org/CPAN/authors/id/F/FL/FLORA/Catalyst-Devel-1.33.tar.gz" : {} - }, - "version" : "1.33" - }, - "Catalyst::Model::Adaptor" : { - "dist" : "Catalyst-Model-Adaptor-0.10", - "mymeta" : { - "abstract" : "use a plain class as a Catalyst model", - "author" : [ - "Jonathan Rockway C<< <jrockway@cpan.org> >>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.99, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Catalyst-Model-Adaptor", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Test::More" : 0, - "ok" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Catalyst::Runtime" : 0, - "MRO::Compat" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://github.com/bobtfish/catalyst-model-adaptor.git" - } - }, - "version" : "0.10" - }, - "name" : "Catalyst::Model::Adaptor", - "pathname" : "/authors/id/B/BO/BOBTFISH/Catalyst-Model-Adaptor-0.10.tar.gz", - "provides" : { - "Catalyst::Helper::Model::Adaptor" : { - "file" : "Catalyst/Helper/Model/Adaptor.pm" - }, - "Catalyst::Helper::Model::Factory" : { - "file" : "Catalyst/Helper/Model/Factory.pm" - }, - "Catalyst::Helper::Model::Factory::PerRequest" : { - "file" : "Catalyst/Helper/Model/Factory/PerRequest.pm" - }, - "Catalyst::Model::Adaptor" : { - "file" : "Catalyst/Model/Adaptor.pm", - "version" : "0.10" - }, - "Catalyst::Model::Adaptor::Base" : { - "file" : "Catalyst/Model/Adaptor/Base.pm" - }, - "Catalyst::Model::Factory" : { - "file" : "Catalyst/Model/Factory.pm", - "version" : "0.10" - }, - "Catalyst::Model::Factory::PerRequest" : { - "file" : "Catalyst/Model/Factory/PerRequest.pm", - "version" : "0.10" - } - }, - "target" : "Catalyst::Model::Adaptor", - "version" : "0.10" - }, - "Catalyst::Model::DBIC::Schema" : { - "dist" : "Catalyst-Model-DBIC-Schema-0.59", - "mymeta" : { - "abstract" : "DBIx::Class::Schema Model Class", - "author" : [ - "Brandon L Black C<blblack at gmail.com>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.02, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Catalyst-Model-DBIC-Schema", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "DBD::SQLite" : 0, - "ExtUtils::MakeMaker" : "6.42", - "Storable" : 0, - "Test::Exception" : 0, - "Test::More" : "0.94", - "Test::Requires" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Carp::Clan" : 0, - "Catalyst::Component::InstancePerContext" : 0, - "Catalyst::Runtime" : "5.80005", - "CatalystX::Component::Traits" : "0.14", - "DBD::SQLite" : 0, - "DBIx::Class" : "0.08114", - "List::MoreUtils" : 0, - "Moose" : "1.12", - "MooseX::Types" : 0, - "Storable" : 0, - "Test::Exception" : 0, - "Test::More" : "0.94", - "Test::Requires" : 0, - "Tie::IxHash" : 0, - "Try::Tiny" : 0, - "namespace::autoclean" : "0.09", - "namespace::clean" : 0, - "perl" : "5.008001" - } - } - }, - "provides" : { - "Catalyst::Helper::Model::DBIC::Schema" : { - "file" : "lib/Catalyst/Helper/Model/DBIC/Schema.pm", - "version" : "0.59" - }, - "Catalyst::Model::DBIC::Schema" : { - "file" : "lib/Catalyst/Model/DBIC/Schema.pm", - "version" : "0.59" - }, - "Catalyst::TraitFor::Model::DBIC::Schema::Caching" : { - "file" : "lib/Catalyst/TraitFor/Model/DBIC/Schema/Caching.pm", - "version" : 0 - }, - "Catalyst::TraitFor::Model::DBIC::Schema::PerRequestSchema" : { - "file" : "lib/Catalyst/TraitFor/Model/DBIC/Schema/PerRequestSchema.pm", - "version" : 0 - }, - "Catalyst::TraitFor::Model::DBIC::Schema::Replicated" : { - "file" : "lib/Catalyst/TraitFor/Model/DBIC/Schema/Replicated.pm", - "version" : 0 - }, - "Catalyst::TraitFor::Model::DBIC::Schema::SchemaProxy" : { - "file" : "lib/Catalyst/TraitFor/Model/DBIC/Schema/SchemaProxy.pm", - "version" : 0 - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://git.shadowcat.co.uk/catagits/Catalyst-Model-DBIC-Schema.git" - } - }, - "version" : "0.59" - }, - "name" : "Catalyst::Model::DBIC::Schema", - "pathname" : "R/RK/RKITOVER/Catalyst-Model-DBIC-Schema-0.59.tar.gz", - "provides" : { - "Catalyst::Helper::Model::DBIC::Schema" : { - "file" : "Catalyst/Helper/Model/DBIC/Schema.pm", - "version" : "0.59" - }, - "Catalyst::Model::DBIC::Schema" : { - "file" : "Catalyst/Model/DBIC/Schema.pm", - "version" : "0.59" - }, - "Catalyst::TraitFor::Model::DBIC::Schema::Caching" : { - "file" : "Catalyst/TraitFor/Model/DBIC/Schema/Caching.pm" - }, - "Catalyst::TraitFor::Model::DBIC::Schema::PerRequestSchema" : { - "file" : "Catalyst/TraitFor/Model/DBIC/Schema/PerRequestSchema.pm" - }, - "Catalyst::TraitFor::Model::DBIC::Schema::Replicated" : { - "file" : "Catalyst/TraitFor/Model/DBIC/Schema/Replicated.pm" - }, - "Catalyst::TraitFor::Model::DBIC::Schema::SchemaProxy" : { - "file" : "Catalyst/TraitFor/Model/DBIC/Schema/SchemaProxy.pm" - } - }, - "target" : "Catalyst::Model::DBIC::Schema", - "version" : "0.59" - }, - "Catalyst::Plugin::Authentication" : { - "dist" : "Catalyst-Plugin-Authentication-0.10017", - "mymeta" : { - "abstract" : "Infrastructure plugin for the Catalyst", - "author" : [ - "Yuval Kogman, C<nothingmuch@woobling.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.99, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Catalyst-Plugin-Authentication", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Class::MOP" : 0, - "ExtUtils::MakeMaker" : "6.42", - "Moose" : 0, - "Test::Exception" : 0, - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Catalyst::Plugin::Session" : "0.10", - "Catalyst::Runtime" : 0, - "Class::Inspector" : 0, - "Class::MOP" : 0, - "MRO::Compat" : 0, - "Moose" : 0, - "Test::Exception" : 0, - "Test::More" : "0.88", - "perl" : "5.008001" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Plugin-Authentication/0.10000/trunk" - } - }, - "version" : "0.10017" - }, - "name" : "Catalyst::Plugin::Authentication", - "pathname" : "/authors/id/B/BO/BOBTFISH/Catalyst-Plugin-Authentication-0.10017.tar.gz", - "provides" : { - "Catalyst::Authentication::Credential::Password" : { - "file" : "Catalyst/Authentication/Credential/Password.pm" - }, - "Catalyst::Authentication::Credential::Remote" : { - "file" : "Catalyst/Authentication/Credential/Remote.pm" - }, - "Catalyst::Authentication::Realm" : { - "file" : "Catalyst/Authentication/Realm.pm" - }, - "Catalyst::Authentication::Realm::Compatibility" : { - "file" : "Catalyst/Authentication/Realm/Compatibility.pm" - }, - "Catalyst::Authentication::Realm::Progressive" : { - "file" : "Catalyst/Authentication/Realm/Progressive.pm" - }, - "Catalyst::Authentication::Store::Minimal" : { - "file" : "Catalyst/Authentication/Store/Minimal.pm" - }, - "Catalyst::Authentication::Store::Null" : { - "file" : "Catalyst/Authentication/Store/Null.pm" - }, - "Catalyst::Authentication::User" : { - "file" : "Catalyst/Authentication/User.pm" - }, - "Catalyst::Authentication::User::Hash" : { - "file" : "Catalyst/Authentication/User/Hash.pm" - }, - "Catalyst::Plugin::Authentication" : { - "file" : "Catalyst/Plugin/Authentication.pm", - "version" : "0.10017" - }, - "Catalyst::Plugin::Authentication::Credential::Password" : { - "file" : "Catalyst/Plugin/Authentication/Credential/Password.pm" - }, - "Catalyst::Plugin::Authentication::Store::Minimal" : { - "file" : "Catalyst/Plugin/Authentication/Store/Minimal.pm" - }, - "Catalyst::Plugin::Authentication::User" : { - "file" : "Catalyst/Plugin/Authentication/User.pm" - }, - "Catalyst::Plugin::Authentication::User::Hash" : { - "file" : "Catalyst/Plugin/Authentication/User/Hash.pm" - } - }, - "target" : "Catalyst::Plugin::Authentication", - "version" : "0.10017" - }, - "Catalyst::Plugin::ConfigLoader" : { - "dist" : "Catalyst-Plugin-ConfigLoader-0.30", - "module" : "Catalyst::Plugin::ConfigLoader", - "mymeta" : { - "abstract" : "Load config files of various types", - "author" : [ - "Brian Cassidy <bricas@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.00, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Catalyst-Plugin-ConfigLoader", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Catalyst::Runtime" : "5.7008", - "Config::Any" : "0.20", - "Data::Visitor" : "0.24", - "MRO::Compat" : "0.09", - "perl" : "5.008" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://dev.catalystframework.org/repos/Catalyst/Catalyst-Plugin-ConfigLoader/trunk/" - } - }, - "version" : "0.30" - }, - "name" : "Catalyst::Plugin::ConfigLoader", - "pathname" : "B/BR/BRICAS/Catalyst-Plugin-ConfigLoader-0.30.tar.gz", - "provides" : { - "Catalyst::Plugin::ConfigLoader" : { - "file" : "Catalyst/Plugin/ConfigLoader.pm", - "version" : "0.30" - } - }, - "version" : "0.30" - }, - "Catalyst::Plugin::Session" : { - "dist" : "Catalyst-Plugin-Session-0.31", - "mymeta" : { - "abstract" : "Generic Session plugin - ties together server side storage and client side state required to maintain session data.", - "author" : [ - "Andy Grundman" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.99, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Catalyst-Plugin-Session", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Test::Deep" : 0, - "Test::Exception" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Catalyst::Runtime" : "5.71001", - "Digest" : 0, - "File::Spec" : 0, - "File::Temp" : 0, - "MRO::Compat" : 0, - "Moose" : "0.76", - "MooseX::Emulate::Class::Accessor::Fast" : "0.00801", - "Object::Signature" : 0, - "Test::More" : "0.88", - "Tie::RefHash" : "1.34", - "namespace::clean" : "0.10", - "perl" : "5.008" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Plugin-Session/0.00/trunk/" - } - }, - "version" : "0.31" - }, - "name" : "Catalyst::Plugin::Session", - "pathname" : "/authors/id/B/BO/BOBTFISH/Catalyst-Plugin-Session-0.31.tar.gz", - "provides" : { - "Catalyst::Plugin::Session" : { - "file" : "Catalyst/Plugin/Session.pm", - "version" : "0.31" - }, - "Catalyst::Plugin::Session::State" : { - "file" : "Catalyst/Plugin/Session/State.pm" - }, - "Catalyst::Plugin::Session::Store" : { - "file" : "Catalyst/Plugin/Session/Store.pm" - }, - "Catalyst::Plugin::Session::Store::Dummy" : { - "file" : "Catalyst/Plugin/Session/Store/Dummy.pm" - }, - "Catalyst::Plugin::Session::Test::Store" : { - "file" : "Catalyst/Plugin/Session/Test/Store.pm", - "version" : "123" - } - }, - "target" : "Catalyst::Plugin::Session", - "version" : "0.31" - }, - "Catalyst::Plugin::Session::State::Cookie" : { - "dist" : "Catalyst-Plugin-Session-State-Cookie-0.17", - "mymeta" : { - "abstract" : "Maintain session IDs using cookies.", - "author" : [ - "Yuval Kogman <nothingmuch@woobling.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.91, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Catalyst-Plugin-Session-State-Cookie", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Catalyst" : "5.80005", - "Catalyst::Plugin::Session" : "0.27", - "ExtUtils::MakeMaker" : "6.42", - "MRO::Compat" : 0, - "Moose" : 0, - "Test::More" : 0, - "namespace::autoclean" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Plugin-Session-State-Cookie/trunk/" - } - }, - "version" : "0.17" - }, - "name" : "Catalyst::Plugin::Session::State::Cookie", - "pathname" : "M/MS/MSTROUT/Catalyst-Plugin-Session-State-Cookie-0.17.tar.gz", - "provides" : { - "Catalyst::Plugin::Session::State::Cookie" : { - "file" : "Catalyst/Plugin/Session/State/Cookie.pm", - "version" : "0.17" - } - }, - "target" : "Catalyst::Plugin::Session::State::Cookie", - "version" : "0.17" - }, - "Catalyst::Plugin::Session::Store::DBIC" : { - "dist" : "Catalyst-Plugin-Session-Store-DBIC-0.12", - "mymeta" : { - "abstract" : "Store your sessions via DBIx::Class", - "author" : [ - "Daniel Westermann-Clark <danieltwc@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.57_05, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Catalyst-Plugin-Session-Store-DBIC", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Catalyst" : "5.65", - "Catalyst::Exception" : 0, - "Catalyst::Plugin::Session::Store::Delegate" : "0.05", - "Class::Accessor::Fast" : 0, - "DBIx::Class" : "0.07000", - "FindBin" : 0, - "MIME::Base64" : 0, - "MRO::Compat" : 0, - "Scalar::Util" : 0, - "Storable" : 0, - "Test::More" : 0, - "Test::Warn" : "0.20" - } - } - }, - "release_status" : "stable", - "version" : "0.12", - "x_repository" : "http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Plugin-Session-Store-DBIC/" - }, - "name" : "Catalyst::Plugin::Session::Store::DBIC", - "pathname" : "F/FL/FLORA/Catalyst-Plugin-Session-Store-DBIC-0.12.tar.gz", - "provides" : { - "Catalyst::Plugin::Session::Store::DBIC" : { - "file" : "Catalyst/Plugin/Session/Store/DBIC.pm", - "version" : "0.12" - }, - "Catalyst::Plugin::Session::Store::DBIC::Delegate" : { - "file" : "Catalyst/Plugin/Session/Store/DBIC/Delegate.pm" - } - }, - "target" : "Catalyst::Plugin::Session::Store::DBIC", - "version" : "0.12" - }, - "Catalyst::Plugin::Session::Store::Delegate" : { - "dist" : "Catalyst-Plugin-Session-Store-Delegate-0.06", - "mymeta" : { - "abstract" : "Delegate session storage to an", - "author" : [ - "Yuval Kogman, C<nothingmuch@woobling.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.91, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Catalyst-Plugin-Session-Store-Delegate", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Catalyst::Plugin::Session" : "0.27", - "ExtUtils::MakeMaker" : "6.42", - "MRO::Compat" : 0, - "Moose" : 0, - "MooseX::Emulate::Class::Accessor::Fast" : 0, - "Test::More" : 0, - "Test::use::ok" : 0, - "namespace::clean" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Plugin-Session-Store-Delegate/" - } - }, - "version" : "0.06", - "x_module_name" : "Catalyst::Plugin::Session::Store::Delegate" - }, - "name" : "Catalyst::Plugin::Session::Store::Delegate", - "pathname" : "/authors/id/B/BO/BOBTFISH/Catalyst-Plugin-Session-Store-Delegate-0.06.tar.gz", - "provides" : { - "Catalyst::Plugin::Session::Store::Delegate" : { - "file" : "Catalyst/Plugin/Session/Store/Delegate.pm", - "version" : "0.06" - } - }, - "target" : "Catalyst::Plugin::Session::Store::Delegate", - "version" : "0.06" - }, - "Catalyst::Plugin::SmartURI" : { - "dist" : "Catalyst-Plugin-SmartURI-0.036", - "mymeta" : { - "abstract" : "Configurable URIs for Catalyst", - "author" : [ - "Rafael Kitover <rkitover@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.91, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Catalyst-Plugin-SmartURI", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Catalyst" : "5.80002", - "Class::C3::Componentised" : 0, - "ExtUtils::MakeMaker" : "6.42", - "Moose" : 0, - "Task::Weaken" : 0, - "Test::More" : 0, - "URI::SmartURI" : 0, - "namespace::clean" : 0, - "parent" : 0 - } - } - }, - "provides" : { - "Catalyst::Plugin::SmartURI" : { - "file" : "lib/Catalyst/Plugin/SmartURI.pm", - "version" : "0.036" - }, - "Catalyst::Request::SmartURI" : { - "file" : "lib/Catalyst/Plugin/SmartURI.pm", - "version" : 0 - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Plugin-SmartURI/1.000/trunk/" - } - }, - "version" : "0.036" - }, - "name" : "Catalyst::Plugin::SmartURI", - "pathname" : "R/RK/RKITOVER/Catalyst-Plugin-SmartURI-0.036.tar.gz", - "provides" : { - "Catalyst::Plugin::SmartURI" : { - "file" : "Catalyst/Plugin/SmartURI.pm", - "version" : "0.036" - }, - "Catalyst::Request::SmartURI" : { - "file" : "Catalyst/Plugin/SmartURI.pm" - } - }, - "target" : "Catalyst::Plugin::SmartURI", - "version" : "0.036" - }, - "Catalyst::Plugin::Static::Simple" : { - "dist" : "Catalyst-Plugin-Static-Simple-0.29", - "mymeta" : { - "abstract" : "Make serving static pages painless.", - "author" : [ - "Andy Grundman, <andy@hybridized.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.91, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Catalyst-Plugin-Static-Simple", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Catalyst::Runtime" : "5.80008", - "ExtUtils::MakeMaker" : "6.42", - "MIME::Types" : "1.25", - "Moose" : 0, - "MooseX::Types" : 0, - "Test::More" : 0, - "namespace::autoclean" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Plugin-Static-Simple/trunk/" - } - }, - "version" : "0.29" - }, - "name" : "Catalyst::Plugin::Static::Simple", - "pathname" : "M/MS/MSTROUT/Catalyst-Plugin-Static-Simple-0.29.tar.gz", - "provides" : { - "Catalyst::Plugin::Static::Simple" : { - "file" : "Catalyst/Plugin/Static/Simple.pm", - "version" : "0.29" - } - }, - "target" : "Catalyst::Plugin::Static::Simple", - "version" : "0.29" - }, - "Catalyst::Plugin::Unicode" : { - "dist" : "Catalyst-Plugin-Unicode-0.93", - "mymeta" : { - "abstract" : "Unicode aware Catalyst (old style)", - "author" : [ - "Tomas Doran <bobtfish@bobtfish.net>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.910, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Catalyst-Plugin-Unicode", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Catalyst::Runtime" : "5.70", - "ExtUtils::MakeMaker" : "6.42", - "IO::Scalar" : 0, - "MRO::Compat" : "0.10", - "Test::More" : 0, - "Test::WWW::Mechanize::Catalyst" : 0, - "ok" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://dev.catalyst.perl.org/repos/Catalyst/trunk/Catalyst-Plugin-Unicode/" - } - }, - "version" : "0.93" - }, - "name" : "Catalyst::Plugin::Unicode", - "pathname" : "/authors/id/B/BO/BOBTFISH/Catalyst-Plugin-Unicode-0.93.tar.gz", - "provides" : { - "Catalyst::Plugin::Unicode" : { - "file" : "Catalyst/Plugin/Unicode.pm", - "version" : "0.93" - } - }, - "target" : "Catalyst::Plugin::Unicode", - "version" : "0.93" - }, - "Catalyst::Plugin::Unicode::Encoding" : { - "dist" : "Catalyst-Plugin-Unicode-Encoding-1.1", - "mymeta" : { - "abstract" : "Unicode aware Catalyst", - "author" : [ - "Christian Hansen, C<ch@ngmedia.com>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.99, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Catalyst-Plugin-Unicode-Encoding", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "IO::Scalar" : 0, - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Catalyst" : "5.80", - "Encode" : "2.21", - "LWP" : "5.828", - "URI" : "1.36" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Plugin-Unicode-Encoding/" - } - }, - "version" : "1.1", - "x_module_name" : "Catalyst::Plugin::Unicode::Encoding" - }, - "name" : "Catalyst::Plugin::Unicode::Encoding", - "pathname" : "/authors/id/B/BO/BOBTFISH/Catalyst-Plugin-Unicode-Encoding-1.1.tar.gz", - "provides" : { - "Catalyst::Plugin::Unicode::Encoding" : { - "file" : "Catalyst/Plugin/Unicode/Encoding.pm", - "version" : "1.1" - } - }, - "target" : "Catalyst::Plugin::Unicode::Encoding", - "version" : "1.1" - }, - "Catalyst::Runtime" : { - "dist" : "Catalyst-Runtime-5.80032", - "mymeta" : { - "abstract" : "The Catalyst Framework Runtime", - "author" : [ - "Catalyst Contributors, see Catalyst.pm" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.99, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Catalyst-Runtime", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Class::Data::Inheritable" : 0, - "ExtUtils::MakeMaker" : "6.42", - "Test::Exception" : 0, - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "B::Hooks::EndOfScope" : "0.08", - "CGI::Simple::Cookie" : "1.109", - "Carp" : 0, - "Class::C3::Adopt::NEXT" : "0.07", - "Class::Data::Inheritable" : 0, - "Class::MOP" : "0.95", - "Data::Dump" : 0, - "Data::OptList" : 0, - "HTML::Entities" : 0, - "HTML::HeadParser" : 0, - "HTTP::Body" : "1.06", - "HTTP::Headers" : "1.64", - "HTTP::Request" : "5.814", - "HTTP::Request::AsCGI" : "1.0", - "HTTP::Response" : "5.813", - "LWP::UserAgent" : 0, - "List::MoreUtils" : 0, - "MRO::Compat" : 0, - "Module::Pluggable" : "3.9", - "Moose" : "1.03", - "MooseX::Emulate::Class::Accessor::Fast" : "0.00903", - "MooseX::Getopt" : "0.30", - "MooseX::MethodAttributes::Inheritable" : "0.24", - "MooseX::Role::WithOverloading" : "0.09", - "MooseX::Types" : 0, - "MooseX::Types::Common::Numeric" : 0, - "Path::Class" : "0.09", - "Scalar::Util" : 0, - "String::RewritePrefix" : "0.004", - "Sub::Exporter" : 0, - "Task::Weaken" : 0, - "Test::Exception" : 0, - "Test::More" : "0.88", - "Text::Balanced" : 0, - "Text::SimpleTable" : "0.03", - "Time::HiRes" : 0, - "Tree::Simple" : "1.15", - "Tree::Simple::Visitor::FindByPath" : 0, - "URI" : "1.35", - "namespace::autoclean" : "0.09", - "namespace::clean" : "0.13", - "perl" : "5.008004" - } - } - }, - "release_status" : "stable", - "resources" : { - "homepage" : "http://dev.catalyst.perl.org/", - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Runtime/" - }, - "x_IRC" : "irc://irc.perl.org/#catalyst", - "x_MailingList" : "http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst" - }, - "version" : "5.80032" - }, - "name" : "Catalyst::Runtime", - "pathname" : "/authors/id/B/BO/BOBTFISH/Catalyst-Runtime-5.80032.tar.gz", - "provides" : { - "Catalyst" : { - "file" : "Catalyst.pm", - "version" : "5.80032" - }, - "Catalyst::Action" : { - "file" : "Catalyst/Action.pm" - }, - "Catalyst::ActionChain" : { - "file" : "Catalyst/ActionChain.pm" - }, - "Catalyst::ActionContainer" : { - "file" : "Catalyst/ActionContainer.pm" - }, - "Catalyst::Base" : { - "file" : "Catalyst/Base.pm" - }, - "Catalyst::ClassData" : { - "file" : "Catalyst/ClassData.pm" - }, - "Catalyst::Component" : { - "file" : "Catalyst/Component.pm" - }, - "Catalyst::Component::ApplicationAttribute" : { - "file" : "Catalyst/Component/ApplicationAttribute.pm" - }, - "Catalyst::Component::ContextClosure" : { - "file" : "Catalyst/Component/ContextClosure.pm" - }, - "Catalyst::Controller" : { - "file" : "Catalyst/Controller.pm" - }, - "Catalyst::DispatchType" : { - "file" : "Catalyst/DispatchType.pm" - }, - "Catalyst::DispatchType::Chained" : { - "file" : "Catalyst/DispatchType/Chained.pm" - }, - "Catalyst::DispatchType::Default" : { - "file" : "Catalyst/DispatchType/Default.pm" - }, - "Catalyst::DispatchType::Index" : { - "file" : "Catalyst/DispatchType/Index.pm" - }, - "Catalyst::DispatchType::Path" : { - "file" : "Catalyst/DispatchType/Path.pm" - }, - "Catalyst::DispatchType::Regex" : { - "file" : "Catalyst/DispatchType/Regex.pm" - }, - "Catalyst::Dispatcher" : { - "file" : "Catalyst/Dispatcher.pm" - }, - "Catalyst::Engine" : { - "file" : "Catalyst/Engine.pm" - }, - "Catalyst::Engine::CGI" : { - "file" : "Catalyst/Engine/CGI.pm" - }, - "Catalyst::Engine::FastCGI" : { - "file" : "Catalyst/Engine/FastCGI.pm" - }, - "Catalyst::Engine::HTTP" : { - "file" : "Catalyst/Engine/HTTP.pm" - }, - "Catalyst::Exception" : { - "file" : "Catalyst/Exception.pm" - }, - "Catalyst::Exception::Base" : { - "file" : "Catalyst/Exception.pm" - }, - "Catalyst::Exception::Basic" : { - "file" : "Catalyst/Exception/Basic.pm" - }, - "Catalyst::Exception::Detach" : { - "file" : "Catalyst/Exception/Detach.pm" - }, - "Catalyst::Exception::Go" : { - "file" : "Catalyst/Exception/Go.pm" - }, - "Catalyst::Exception::Interface" : { - "file" : "Catalyst/Exception/Interface.pm" - }, - "Catalyst::Log" : { - "file" : "Catalyst/Log.pm" - }, - "Catalyst::Model" : { - "file" : "Catalyst/Model.pm" - }, - "Catalyst::Request" : { - "file" : "Catalyst/Request.pm" - }, - "Catalyst::Request::Upload" : { - "file" : "Catalyst/Request/Upload.pm" - }, - "Catalyst::Response" : { - "file" : "Catalyst/Response.pm" - }, - "Catalyst::Runtime" : { - "file" : "Catalyst/Runtime.pm", - "version" : "5.80032" - }, - "Catalyst::Script::CGI" : { - "file" : "Catalyst/Script/CGI.pm" - }, - "Catalyst::Script::Create" : { - "file" : "Catalyst/Script/Create.pm" - }, - "Catalyst::Script::FastCGI" : { - "file" : "Catalyst/Script/FastCGI.pm" - }, - "Catalyst::Script::Server" : { - "file" : "Catalyst/Script/Server.pm" - }, - "Catalyst::Script::Test" : { - "file" : "Catalyst/Script/Test.pm" - }, - "Catalyst::ScriptRole" : { - "file" : "Catalyst/ScriptRole.pm" - }, - "Catalyst::ScriptRunner" : { - "file" : "Catalyst/ScriptRunner.pm" - }, - "Catalyst::Stats" : { - "file" : "Catalyst/Stats.pm" - }, - "Catalyst::Test" : { - "file" : "Catalyst/Test.pm" - }, - "Catalyst::Utils" : { - "file" : "Catalyst/Utils.pm" - }, - "Catalyst::View" : { - "file" : "Catalyst/View.pm" - } - }, - "target" : "Catalyst::Runtime", - "version" : "5.80032" - }, - "Catalyst::View::TT" : { - "dist" : "Catalyst-View-TT-0.36", - "mymeta" : { - "abstract" : "Template View Class", - "author" : [ - "Sebastian Riedel, C<sri@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.00, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Catalyst-View-TT", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Catalyst" : "5.7", - "Class::Accessor" : 0, - "MRO::Compat" : 0, - "Path::Class" : 0, - "Template" : 0, - "Template::Timer" : 0, - "Test::More" : 0, - "perl" : "5.008001" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-View-TT/" - } - }, - "version" : "0.36" - }, - "name" : "Catalyst::View::TT", - "pathname" : "/authors/id/A/AB/ABRAXXA/Catalyst-View-TT-0.36.tar.gz", - "provides" : { - "Catalyst::Helper::View::TT" : { - "file" : "Catalyst/Helper/View/TT.pm" - }, - "Catalyst::Helper::View::TTSite" : { - "file" : "Catalyst/Helper/View/TTSite.pm" - }, - "Catalyst::View::TT" : { - "file" : "Catalyst/View/TT.pm", - "version" : "0.36" - } - }, - "target" : "Catalyst::View::TT", - "version" : "0.36" - }, - "CatalystX::Component::Traits" : { - "dist" : "CatalystX-Component-Traits-0.16", - "mymeta" : { - "abstract" : "Automatic Trait Loading and Resolution for", - "author" : [ - "Rafael Kitover, C<< <rkitover@cpan.org> >>", - "Rafael Kitover <bobtfish@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.99, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "CatalystX-Component-Traits", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Module::Pluggable" : "3.9", - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Catalyst::Runtime" : "5.80005", - "List::MoreUtils" : 0, - "Module::Pluggable" : "3.9", - "MooseX::Traits::Pluggable" : "0.08", - "Scalar::Util" : 0, - "Test::More" : "0.88", - "namespace::autoclean" : 0 - } - } - }, - "provides" : { - "CatalystX::Component::Traits" : { - "file" : "lib/CatalystX/Component/Traits.pm", - "version" : "0.16" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://github.com/bobtfish/catalystx-component-traits.git" - } - }, - "version" : "0.16" - }, - "name" : "CatalystX::Component::Traits", - "pathname" : "/authors/id/B/BO/BOBTFISH/CatalystX-Component-Traits-0.16.tar.gz", - "provides" : { - "CatalystX::Component::Traits" : { - "file" : "CatalystX/Component/Traits.pm", - "version" : "0.16" - } - }, - "target" : "CatalystX::Component::Traits", - "version" : "0.16" - }, - "Class::Accessor" : { - "dist" : "Class-Accessor-0.34", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "Marty Pauley <marty+perl@kasei.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.42, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Class-Accessor", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "base" : "1.01" - } - } - }, - "release_status" : "stable", - "version" : "0.34" - }, - "name" : "Class::Accessor", - "pathname" : "K/KA/KASEI/Class-Accessor-0.34.tar.gz", - "provides" : { - "Class::Accessor" : { - "file" : "Class/Accessor.pm", - "version" : "0.34" - }, - "Class::Accessor::Fast" : { - "file" : "Class/Accessor/Fast.pm", - "version" : "0.34" - }, - "Class::Accessor::Faster" : { - "file" : "Class/Accessor/Faster.pm", - "version" : "0.34" - } - }, - "target" : "Class::Accessor", - "version" : "0.34" - }, - "Class::Accessor::Chained" : { - "dist" : "Class-Accessor-Chained-0.01", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Class-Accessor-Chained", - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : 0 - } - }, - "runtime" : { - "requires" : { - "Class::Accessor" : 0 - } - } - }, - "provides" : { - "Class::Accessor::Chained" : { - "file" : "lib/Class/Accessor/Chained.pm", - "version" : "0.01" - }, - "Class::Accessor::Chained::Fast" : { - "file" : "lib/Class/Accessor/Chained/Fast.pm", - "version" : 0 - } - }, - "release_status" : "stable", - "version" : "0.01" - }, - "name" : "Class::Accessor::Chained", - "pathname" : "R/RC/RCLAMP/Class-Accessor-Chained-0.01.tar.gz", - "provides" : { - "Class::Accessor::Chained" : { - "file" : "Class/Accessor/Chained.pm", - "version" : "0.01" - }, - "Class::Accessor::Chained::Fast" : { - "file" : "Class/Accessor/Chained/Fast.pm" - } - }, - "target" : "Class::Accessor::Chained::Fast", - "version" : "0.01" - }, - "Class::Accessor::Grouped" : { - "dist" : "Class-Accessor-Grouped-0.10003", - "mymeta" : { - "abstract" : "Lets you build groups of accessors", - "author" : [ - "Matt S. Trout <mst@shadowcatsystems.co.uk>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.01, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Class-Accessor-Grouped", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Test::Exception" : "0.31", - "Test::More" : "0.94" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Class::Inspector" : 0, - "Class::XSAccessor" : "1.11", - "Scalar::Util" : 0, - "Sub::Name" : "0.05", - "Test::Exception" : "0.31", - "Test::More" : "0.94", - "perl" : "5.006002" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://git.shadowcat.co.uk/p5sagit/Class-Accessor-Grouped.git" - } - }, - "version" : "0.10003" - }, - "name" : "Class::Accessor::Grouped", - "pathname" : "authors/id/F/FR/FREW/Class-Accessor-Grouped-0.10003.tar.gz", - "provides" : { - "Class::Accessor::Grouped" : { - "file" : "Class/Accessor/Grouped.pm", - "version" : "0.10003" - } - }, - "target" : "Class::Accessor::Grouped", - "version" : "0.10003" - }, - "Class::C3" : { - "dist" : "Class-C3-0.23", - "mymeta" : { - "abstract" : "A pragma to use the C3 method resolution order algortihm", - "author" : [ - "Stevan Little, <stevan@iinteractive.com>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.99, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Class-C3", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.23" - }, - "name" : "Class::C3", - "pathname" : "F/FL/FLORA/Class-C3-0.23.tar.gz", - "provides" : { - "Class::C3" : { - "file" : "Class/C3.pm", - "version" : "0.23" - } - }, - "target" : "Class::C3", - "version" : "0.23" - }, - "Class::C3::Adopt::NEXT" : { - "dist" : "Class-C3-Adopt-NEXT-0.13", - "mymeta" : { - "abstract" : "make NEXT suck less", - "author" : [ - "Florian Ragwitz <rafl@debian.org>", - "Tomas Doran <bobtfish@bobtfish.net>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 2.101241, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Class-C3-Adopt-NEXT", - "prereqs" : { - "build" : { - "requires" : { - "FindBin" : 0, - "Test::Exception" : "0.27", - "Test::More" : 0, - "vars" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.31" - } - }, - "runtime" : { - "recommends" : {}, - "requires" : { - "List::MoreUtils" : 0, - "MRO::Compat" : 0, - "NEXT" : 0, - "warnings::register" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=Class-C3-Adopt-NEXT" - }, - "homepage" : "http://search.cpan.org/dist/Class-C3-Adopt-NEXT", - "repository" : { - "type" : "git", - "url" : "git://github.com/rafl/class-c3-adopt-next.git" - } - }, - "version" : "0.13", - "x_Dist_Zilla" : { - "plugins" : [ - { - "class" : "Dist::Zilla::Plugin::GatherDir", - "name" : "@FLORA/@Filter/GatherDir", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::PruneCruft", - "name" : "@FLORA/@Filter/PruneCruft", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::ManifestSkip", - "name" : "@FLORA/@Filter/ManifestSkip", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::MetaYAML", - "name" : "@FLORA/@Filter/MetaYAML", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::License", - "name" : "@FLORA/@Filter/License", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::Readme", - "name" : "@FLORA/@Filter/Readme", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::PkgVersion", - "name" : "@FLORA/@Filter/PkgVersion", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::PodCoverageTests", - "name" : "@FLORA/@Filter/PodCoverageTests", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::PodSyntaxTests", - "name" : "@FLORA/@Filter/PodSyntaxTests", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::ExtraTests", - "name" : "@FLORA/@Filter/ExtraTests", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::ExecDir", - "name" : "@FLORA/@Filter/ExecDir", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::ShareDir", - "name" : "@FLORA/@Filter/ShareDir", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::MakeMaker", - "name" : "@FLORA/@Filter/MakeMaker", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::Manifest", - "name" : "@FLORA/@Filter/Manifest", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::ConfirmRelease", - "name" : "@FLORA/@Filter/ConfirmRelease", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::UploadToCPAN", - "name" : "@FLORA/@Filter/UploadToCPAN", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::MetaConfig", - "name" : "@FLORA/MetaConfig", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::MetaJSON", - "name" : "@FLORA/MetaJSON", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::MetaResources", - "name" : "@FLORA/MetaResources", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::Authority", - "name" : "@FLORA/Authority", - "version" : "0.01" - }, - { - "class" : "Dist::Zilla::Plugin::PodWeaver", - "name" : "@FLORA/PodWeaver", - "version" : "3.100710" - }, - { - "class" : "Dist::Zilla::Plugin::AutoPrereq", - "name" : "AutoPrereq", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":InstallModules", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":TestFiles", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ExecFiles", - "version" : "2.101241" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ShareFiles", - "version" : "2.101241" - } - ], - "zilla" : { - "class" : "Dist::Zilla", - "config" : { - "is_trial" : 0 - }, - "version" : "2.101241" - } - }, - "x_authority" : "cpan:FLORA" - }, - "name" : "Class::C3::Adopt::NEXT", - "pathname" : "F/FL/FLORA/Class-C3-Adopt-NEXT-0.13.tar.gz", - "provides" : { - "Class::C3::Adopt::NEXT" : { - "file" : "Class/C3/Adopt/NEXT.pm", - "version" : "0.13" - } - }, - "target" : "Class::C3::Adopt::NEXT", - "version" : "0.13" - }, - "Class::C3::Componentised" : { - "dist" : "Class-C3-Componentised-1.001000", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "Ash Berlin <ash@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.01, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Class-C3-Componentised", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Class::C3" : "0.20", - "Class::Inspector" : 0, - "MRO::Compat" : 0, - "Test::Exception" : 0, - "perl" : "5.006002" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://git.shadowcat.co.uk/p5sagit/Class-C3-Componentised.git" - } - }, - "version" : "1.001000" - }, - "name" : "Class::C3::Componentised", - "pathname" : "F/FR/FREW/Class-C3-Componentised-1.001000.tar.gz", - "provides" : { - "Class::C3::Componentised" : { - "file" : "Class/C3/Componentised.pm", - "version" : "1.001000" - }, - "Class::C3::Componentised::ApplyHooks" : { - "file" : "Class/C3/Componentised/ApplyHooks.pm" - } - }, - "target" : "Class::C3::Componentised", - "version" : "1.001000" - }, - "Class::Data::Inheritable" : { - "dist" : "Class-Data-Inheritable-0.08", - "module" : "Class::Data::Inheritable", - "mymeta" : { - "abstract" : "Inheritable, overridable class data", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.42, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Class-Data-Inheritable", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "0.08" - }, - "name" : "Class::Data::Inheritable", - "pathname" : "T/TM/TMTM/Class-Data-Inheritable-0.08.tar.gz", - "provides" : { - "Class::Data::Inheritable" : { - "file" : "Class/Data/Inheritable.pm", - "version" : "0.08" - } - }, - "version" : "0.08" - }, - "Class::Factory::Util" : { - "dist" : "Class-Factory-Util-1.7", - "mymeta" : { - "abstract" : "Provide utility methods for factory classes", - "author" : [ - "Dave Rolsky, <autarch@urth.org>.", - "Removed from Alzabo and packaged by Terrence Brannon,\n<tbone@cpan.org>." - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Class-Factory-Util", - "prereqs" : {}, - "provides" : { - "Class::Factory::Util" : { - "file" : "lib/Class/Factory/Util.pm", - "version" : "1.7" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "1.7" - }, - "name" : "Class::Factory::Util", - "pathname" : "D/DR/DROLSKY/Class-Factory-Util-1.7.tar.gz", - "provides" : { - "Class::Factory::Util" : { - "file" : "Class/Factory/Util.pm", - "version" : "1.7" - } - }, - "target" : "Class::Factory::Util", - "version" : "1.7" - }, - "Class::Inspector" : { - "dist" : "Class-Inspector-1.25", - "mymeta" : { - "abstract" : "Get information about a class and its structure", - "author" : [ - "Adam Kennedy <adamk@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.00, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Class-Inspector", - "no_index" : { - "directory" : [ - "inc", - "t", - "xt" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Test::More" : "0.47" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "File::Spec" : "0.80", - "perl" : "5.006" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://svn.ali.as/cpan/trunk/Class-Inspector" - }, - "x_ChangeLog" : "http://fisheye2.atlassian.com/changelog/cpan/trunk/Class-Inspector" - }, - "version" : "1.25", - "x_module_name" : "Class::Inspector" - }, - "name" : "Class::Inspector", - "pathname" : "/authors/id/A/AD/ADAMK/Class-Inspector-1.25.tar.gz", - "provides" : { - "Class::Inspector" : { - "file" : "Class/Inspector.pm", - "version" : "1.25" - }, - "Class::Inspector::Functions" : { - "file" : "Class/Inspector/Functions.pm", - "version" : "1.25" - } - }, - "target" : "Class::Inspector", - "version" : "1.25" - }, - "Class::Load" : { - "dist" : "Class-Load-0.12", - "mymeta" : { - "abstract" : "a working (require \"Class::Name\") and more", - "author" : [ - "Shawn M Moore <sartak at bestpractical.com>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.300002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Class-Load", - "prereqs" : { - "build" : { - "requires" : { - "Test::Fatal" : 0, - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.30" - } - }, - "runtime" : { - "requires" : { - "Data::OptList" : 0, - "Module::Runtime" : "0.011", - "Package::Stash" : "0.32", - "Scalar::Util" : 0, - "Try::Tiny" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=Class-Load" - }, - "repository" : { - "type" : "git", - "url" : "git://github.com/autarch/class-load.git" - } - }, - "version" : "0.12" - }, - "name" : "Class::Load", - "pathname" : "D/DR/DROLSKY/Class-Load-0.12.tar.gz", - "provides" : { - "Class::Load" : { - "file" : "Class/Load.pm", - "version" : "0.12" - }, - "Class::Load::PP" : { - "file" : "Class/Load/PP.pm", - "version" : "0.12" - } - }, - "target" : "Class::Load", - "version" : "0.12" - }, - "Class::Load::XS" : { - "dist" : "Class-Load-XS-0.03", - "mymeta" : { - "abstract" : "XS implementation of parts of Class::Load", - "author" : [ - "Dave Rolsky <autarch@urth.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "artistic_2" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Class-Load-XS", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::CBuilder" : 0, - "Module::Build" : "0.3601", - "Test::Fatal" : 0, - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "Module::Build" : "0.3601" - } - }, - "runtime" : { - "requires" : { - "Class::Load" : "0.11" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=Class-Load-XS" - }, - "repository" : { - "type" : "git", - "url" : "git://git.urth.org/Class-Load-XS.git" - } - }, - "version" : "0.03" - }, - "name" : "Class::Load::XS", - "pathname" : "D/DR/DROLSKY/Class-Load-XS-0.03.tar.gz", - "provides" : { - "Class::Load::XS" : { - "file" : "Class/Load/XS.pm", - "version" : "0.03" - } - }, - "target" : "Class::Load::XS", - "version" : "0.03" - }, - "Class::Mix" : { - "dist" : "Class-Mix-0.005", - "mymeta" : { - "abstract" : "dynamic class mixing", - "author" : [ - "Andrew Main (Zefram) <zefram@fysh.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Class-Mix", - "prereqs" : { - "build" : { - "requires" : { - "Module::Build" : 0, - "Test::More" : 0, - "perl" : "5.006", - "strict" : 0, - "warnings" : 0 - } - }, - "configure" : { - "requires" : { - "Module::Build" : 0, - "perl" : "5.006", - "strict" : 0, - "warnings" : 0 - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Exporter" : 0, - "Params::Classify" : 0, - "constant" : 0, - "if" : 0, - "parent" : 0, - "perl" : "5.006", - "strict" : 0, - "warnings" : 0 - } - } - }, - "provides" : { - "Class::Mix" : { - "file" : "lib/Class/Mix.pm", - "version" : "0.005" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.005" - }, - "name" : "Class::Mix", - "pathname" : "Z/ZE/ZEFRAM/Class-Mix-0.005.tar.gz", - "provides" : { - "Class::Mix" : { - "file" : "Class/Mix.pm", - "version" : "0.005" - } - }, - "target" : "Class::Mix", - "version" : "0.005" - }, - "Class::Singleton" : { - "dist" : "Class-Singleton-1.4", - "mymeta" : { - "abstract" : "Base class for creating singleton objects", - "author" : [ - "Andy Wardley <abw@wardley.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.31, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Class-Singleton", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "1.4" - }, - "name" : "Class::Singleton", - "pathname" : "A/AB/ABW/Class-Singleton-1.4.tar.gz", - "provides" : { - "Class::Singleton" : { - "file" : "Class/Singleton.pm", - "version" : "1.4" - } - }, - "target" : "Class::Singleton", - "version" : "1.4" - }, - "Class::Std" : { - "dist" : "Class-Std-0.011", - "mymeta" : { - "abstract" : "Support for creating standard \"inside-out\" classes", - "author" : [ - "Damian Conway <DCONWAY@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Class-Std", - "prereqs" : { - "runtime" : { - "requires" : { - "Data::Dumper" : 0, - "Scalar::Util" : 0, - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.011" - }, - "name" : "Class::Std", - "pathname" : "D/DC/DCONWAY/Class-Std-0.011.tar.gz", - "provides" : { - "Class::Std" : { - "file" : "Class/Std.pm", - "version" : "0.011" - }, - "Class::Std::SCR" : { - "file" : "Class/Std.pm" - } - }, - "target" : "Class::Std", - "version" : "0.011" - }, - "Class::Std::Fast" : { - "dist" : "Class-Std-Fast-v0.0.8", - "mymeta" : { - "abstract" : "faster but less secure than Class::Std", - "author" : [ - "Andreas 'ac0v' Specht - ACID@cpan.org" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Class-Std-Fast", - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : 0 - } - }, - "runtime" : { - "requires" : { - "Class::Std" : "v0.0.8", - "Data::Dumper" : 0, - "Scalar::Util" : 0, - "version" : 0 - } - } - }, - "provides" : { - "Class::Std::Fast" : { - "file" : "lib/Class/Std/Fast.pm", - "version" : "v0.0.8" - }, - "Class::Std::Fast::Storable" : { - "file" : "lib/Class/Std/Fast/Storable.pm", - "version" : "v0.0.8" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "v0.0.8" - }, - "name" : "Class::Std::Fast", - "pathname" : "A/AC/ACID/Class-Std-Fast-v0.0.8.tar.gz", - "provides" : { - "Class::Std::Fast" : { - "file" : "Class/Std/Fast.pm", - "version" : "v0.0.8" - }, - "Class::Std::Fast::Storable" : { - "file" : "Class/Std/Fast/Storable.pm", - "version" : "v0.0.8" - } - }, - "target" : "Class::Std::Fast", - "version" : "v0.0.8" - }, - "Class::Unload" : { - "dist" : "Class-Unload-0.07", - "mymeta" : { - "abstract" : "Unload a class", - "author" : [ - "Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>;" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.200001, CPAN::Meta::Converter version 2.102400, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Class-Unload", - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.31" - } - }, - "runtime" : { - "requires" : { - "Class::Inspector" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.07" - }, - "name" : "Class::Unload", - "pathname" : "I/IL/ILMARI/Class-Unload-0.07.tar.gz", - "provides" : { - "Class::Unload" : { - "file" : "Class/Unload.pm", - "version" : "0.07" - } - }, - "target" : "Class::Unload", - "version" : "0.07" - }, - "Class::XSAccessor" : { - "dist" : "Class-XSAccessor-1.13", - "mymeta" : { - "abstract" : "Generate fast XS accessors without runtime compilation", - "author" : [ - "Steffen Mueller <smueller@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Class-XSAccessor", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "XSLoader" : 0, - "perl" : "5.008" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "type" : "git", - "url" : "git://github.com/tsee/Class-XSAccessor.git" - } - }, - "version" : "1.13" - }, - "name" : "Class::XSAccessor", - "pathname" : "S/SM/SMUELLER/Class-XSAccessor-1.13.tar.gz", - "provides" : { - "Class::XSAccessor" : { - "file" : "Class/XSAccessor.pm", - "version" : "1.13" - }, - "Class::XSAccessor::Array" : { - "file" : "Class/XSAccessor/Array.pm", - "version" : "1.13" - } - }, - "target" : "Class::XSAccessor", - "version" : "1.13" - }, - "Clone" : { - "dist" : "Clone-0.31", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.30, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Clone", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "0.31", - "x_installdirs" : "site", - "x_version_from" : "Clone.pm" - }, - "name" : "Clone", - "pathname" : "R/RD/RDF/Clone-0.31.tar.gz", - "provides" : { - "Clone" : { - "file" : "Clone.pm", - "version" : "0.31" - } - }, - "target" : "Clone", - "version" : "0.31" - }, - "Compress::Bzip2" : { - "dist" : "Compress-Bzip2-2.09", - "mymeta" : { - "abstract" : "Interface to Bzip2 compression library", - "author" : [ - "Rob Janes <arjay@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Compress-Bzip2", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Config" : 0, - "Fcntl" : 0, - "File::Copy" : 0, - "File::Spec" : 0, - "Getopt::Std" : 0, - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "version" : "2.09" - }, - "name" : "Compress::Bzip2", - "pathname" : "/authors/id/A/AR/ARJAY/Compress-Bzip2-2.09.tar.gz", - "provides" : { - "Compress::Bzip2" : { - "file" : "Compress/Bzip2.pm", - "version" : "2.09" - } - }, - "target" : "Compress::Bzip2", - "version" : "2.09" - }, - "Compress::Raw::Bzip2" : { - "dist" : "Compress-Raw-Bzip2-2.048", - "mymeta" : { - "abstract" : "Low-Level Interface to bzip2 compression library", - "author" : [ - "Paul Marquess <pmqs@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Compress-Raw-Bzip2", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "2.048" - }, - "name" : "Compress::Raw::Bzip2", - "pathname" : "P/PM/PMQS/Compress-Raw-Bzip2-2.048.tar.gz", - "provides" : { - "Compress::Raw::Bzip2" : { - "file" : "Compress/Raw/Bzip2.pm", - "version" : "2.048" - } - }, - "target" : "Compress::Raw::Bzip2", - "version" : "2.048" - }, - "Compress::Raw::Zlib" : { - "dist" : "Compress-Raw-Zlib-2.048", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Compress-Raw-Zlib", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "2.048" - }, - "name" : "Compress::Raw::Zlib", - "pathname" : "P/PM/PMQS/Compress-Raw-Zlib-2.048.tar.gz", - "provides" : { - "Compress::Raw::Zlib" : { - "file" : "Compress/Raw/Zlib.pm", - "version" : "2.048" - } - }, - "target" : "Compress::Raw::Zlib", - "version" : "2.048" - }, - "Config::Any" : { - "dist" : "Config-Any-0.20", - "mymeta" : { - "abstract" : "Load configuration from different file formats, transparently", - "author" : [ - "Joel Bernstein <rataxis@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.00, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Config-Any", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Module::Pluggable" : "3.01", - "perl" : "5.006" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://dev.catalyst.perl.org/repos/Catalyst/trunk/Config-Any/" - } - }, - "version" : "0.20" - }, - "name" : "Config::Any", - "pathname" : "/authors/id/B/BR/BRICAS/Config-Any-0.20.tar.gz", - "provides" : { - "Config::Any" : { - "file" : "Config/Any.pm", - "version" : "0.20" - }, - "Config::Any::Base" : { - "file" : "Config/Any/Base.pm" - }, - "Config::Any::General" : { - "file" : "Config/Any/General.pm" - }, - "Config::Any::INI" : { - "file" : "Config/Any/INI.pm" - }, - "Config::Any::JSON" : { - "file" : "Config/Any/JSON.pm" - }, - "Config::Any::Perl" : { - "file" : "Config/Any/Perl.pm" - }, - "Config::Any::XML" : { - "file" : "Config/Any/XML.pm" - }, - "Config::Any::YAML" : { - "file" : "Config/Any/YAML.pm" - } - }, - "target" : "Config::Any", - "version" : "0.20" - }, - "Config::General" : { - "dist" : "Config-General-2.51", - "module" : "Config::General", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.55_02, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Config-General", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "File::Glob" : 0, - "File::Spec::Functions" : 0, - "FileHandle" : 0, - "IO::File" : 0 - } - } - }, - "release_status" : "stable", - "version" : "2.51" - }, - "name" : "Config::General", - "pathname" : "T/TL/TLINDEN/Config-General-2.51.tar.gz", - "provides" : { - "Config::General" : { - "file" : "Config/General.pm", - "version" : "2.51" - }, - "Config::General::Extended" : { - "file" : "Config/General/Extended.pm", - "version" : "2.05" - }, - "Config::General::Interpolated" : { - "file" : "Config/General/Interpolated.pm", - "version" : "2.14" - } - }, - "version" : "2.51" - }, - "ConfigReader::Simple" : { - "dist" : "ConfigReader-Simple-1.28", - "mymeta" : { - "abstract" : "Simple configuration file parser", - "author" : [ - "brian d foy <bdfoy@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.50, CPAN::Meta::Converter version 2.112150", - "keywords" : [ - "testing", - "STDOUT", - "STDERR" - ], - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "ConfigReader-Simple", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::Output" : 0, - "Test::Warn" : 0, - "perl" : "5.006" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "type" : "git", - "url" : "git://github.com/briandfoy/test-output.git" - } - }, - "version" : "1.28" - }, - "name" : "ConfigReader::Simple", - "pathname" : "/authors/id/B/BD/BDFOY/ConfigReader-Simple-1.28.tar.gz", - "provides" : { - "ConfigReader::Simple" : { - "file" : "ConfigReader/Simple.pm", - "version" : "1.28" - } - }, - "target" : "ConfigReader::Simple", - "version" : "1.28" - }, - "Context::Preserve" : { - "dist" : "Context-Preserve-0.01", - "mymeta" : { - "abstract" : "run code after a subroutine call, preserving the context the subroutine would have seen if it were the last statement in the caller", - "author" : [ - "AND COPYRIGHT" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.68, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Context-Preserve", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Exporter" : 0, - "Test::Exception" : 0, - "Test::More" : 0, - "ok" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.01" - }, - "name" : "Context::Preserve", - "pathname" : "J/JR/JROCKWAY/Context-Preserve-0.01.tar.gz", - "provides" : { - "Context::Preserve" : { - "file" : "Context/Preserve.pm", - "version" : "0.01" - } - }, - "target" : "Context::Preserve", - "version" : "0.01" - }, - "Crypt::Eksblowfish" : { - "dist" : "Crypt-Eksblowfish-0.009", - "mymeta" : { - "abstract" : "the Eksblowfish block cipher", - "author" : [ - "Solar Designer (solar at openwall.com)", - "Andrew Main (Zefram) <zefram@fysh.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Crypt-Eksblowfish", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::CBuilder" : "0.15", - "Module::Build" : 0, - "Test::More" : 0, - "perl" : "5.006", - "strict" : 0, - "warnings" : 0 - } - }, - "configure" : { - "requires" : { - "Module::Build" : 0, - "perl" : "5.006", - "strict" : 0, - "warnings" : 0 - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Class::Mix" : "0.001", - "Exporter" : 0, - "MIME::Base64" : "2.21", - "XSLoader" : 0, - "parent" : 0, - "perl" : "5.006", - "strict" : 0, - "warnings" : 0 - } - } - }, - "provides" : { - "Crypt::Eksblowfish" : { - "file" : "lib/Crypt/Eksblowfish.pm", - "version" : "0.009" - }, - "Crypt::Eksblowfish::Bcrypt" : { - "file" : "lib/Crypt/Eksblowfish/Bcrypt.pm", - "version" : "0.009" - }, - "Crypt::Eksblowfish::Blowfish" : { - "file" : "lib/Crypt/Eksblowfish/Blowfish.pm", - "version" : "0.009" - }, - "Crypt::Eksblowfish::Family" : { - "file" : "lib/Crypt/Eksblowfish/Family.pm", - "version" : "0.009" - }, - "Crypt::Eksblowfish::Subkeyed" : { - "file" : "lib/Crypt/Eksblowfish/Subkeyed.pm", - "version" : "0.009" - }, - "Crypt::Eksblowfish::Uklblowfish" : { - "file" : "lib/Crypt/Eksblowfish/Uklblowfish.pm", - "version" : "0.009" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.009" - }, - "name" : "Crypt::Eksblowfish", - "pathname" : "Z/ZE/ZEFRAM/Crypt-Eksblowfish-0.009.tar.gz", - "provides" : { - "Crypt::Eksblowfish" : { - "file" : "Crypt/Eksblowfish.pm", - "version" : "0.009" - }, - "Crypt::Eksblowfish::Bcrypt" : { - "file" : "Crypt/Eksblowfish/Bcrypt.pm", - "version" : "0.009" - }, - "Crypt::Eksblowfish::Blowfish" : { - "file" : "Crypt/Eksblowfish/Blowfish.pm", - "version" : "0.009" - }, - "Crypt::Eksblowfish::Family" : { - "file" : "Crypt/Eksblowfish/Family.pm", - "version" : "0.009" - }, - "Crypt::Eksblowfish::Subkeyed" : { - "file" : "Crypt/Eksblowfish/Subkeyed.pm", - "version" : "0.009" - }, - "Crypt::Eksblowfish::Uklblowfish" : { - "file" : "Crypt/Eksblowfish/Uklblowfish.pm", - "version" : "0.009" - } - }, - "target" : "Crypt::Eksblowfish", - "version" : "0.009" - }, - "DBD::Pg" : { - "dist" : "DBD-Pg-2.18.1", - "mymeta" : { - "abstract" : "DBI PostgreSQL interface", - "author" : [ - "Greg Sabino Mullane <greg@turnstep.com>" - ], - "dynamic_config" : 0, - "generated_by" : "emacs, CPAN::Meta::Converter version 2.112150", - "keywords" : [ - "Postgres", - "PostgreSQL", - "DBI", - "libpq", - "dbdpg" - ], - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "DBD-Pg", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "DBI" : "1.52", - "version" : 0 - } - }, - "runtime" : { - "recommends" : { - "Cwd" : 0, - "Encode" : 0, - "File::Comments" : 0, - "File::Comments::Plugin::C" : 0, - "File::Temp" : 0, - "Module::Signature" : "0.50", - "Perl::Critic" : 0, - "Pod::Spell" : 0, - "Test::Pod" : "0.95", - "Test::Pod::Coverage" : 0, - "Test::Warn" : "0.08", - "Test::YAML::Meta" : "0.03", - "Text::SpellChecker" : 0, - "Time::HiRes" : 0 - }, - "requires" : { - "DBI" : "1.52", - "ExtUtils::MakeMaker" : "6.11", - "Test::More" : "0.61", - "version" : 0 - } - } - }, - "provides" : { - "Bundle::DBD::Pg" : { - "file" : "lib/Bundle/DBD/Pg.pm", - "version" : "v2.18.1" - }, - "DBD::Pg" : { - "file" : "Pg.pm", - "version" : "v2.18.1" - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=DBD-Pg" - }, - "homepage" : "http://search.cpan.org/dist/DBD-Pg/", - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://svn.perl.org/modules/DBD-Pg/trunk/" - }, - "x_MailingList" : "http://www.nntp.perl.org/group/perl.dbd.pg/" - }, - "version" : "2.18.1" - }, - "name" : "DBD::Pg", - "pathname" : "T/TU/TURNSTEP/DBD-Pg-2.18.1.tar.gz", - "provides" : { - "Bundle::DBD::Pg" : { - "file" : "Bundle/DBD/Pg.pm", - "version" : "v2.18.1" - }, - "DBD::Pg" : { - "file" : "DBD/Pg.pm", - "version" : "v2.18.1" - }, - "DBD::Pg::DefaultValue" : { - "file" : "DBD/Pg.pm" - }, - "DBD::Pg::db" : { - "file" : "DBD/Pg.pm" - }, - "DBD::Pg::dr" : { - "file" : "DBD/Pg.pm" - }, - "DBD::Pg::st" : { - "file" : "DBD/Pg.pm" - } - }, - "target" : "DBD::Pg", - "version" : "v2.18.1" - }, - "DBD::SQLite" : { - "dist" : "DBD-SQLite-1.31", - "mymeta" : { - "abstract" : "Self Contained SQLite RDBMS in a DBI Driver", - "author" : [ - "Adam Kennedy <adamk@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "DBD-SQLite", - "no_index" : { - "directory" : [ - "t", - "inc", - "util" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "DBI" : "1.57", - "ExtUtils::MakeMaker" : "6.48", - "File::Spec" : "0.82" - } - }, - "runtime" : { - "requires" : { - "DBI" : "1.57", - "File::Spec" : "0.82", - "Test::Builder" : "0.86", - "Test::More" : "0.47", - "Tie::Hash" : 0, - "perl" : "5.006" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=DBD-SQLite" - }, - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://svn.ali.as/cpan/trunk/DBD-SQLite" - }, - "x_MailingList" : "http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbd-sqlite" - }, - "version" : "1.31" - }, - "name" : "DBD::SQLite", - "pathname" : "/authors/id/A/AD/ADAMK/DBD-SQLite-1.31.tar.gz", - "provides" : { - "DBD::SQLite" : { - "file" : "DBD/SQLite.pm", - "version" : "1.31" - }, - "DBD::SQLite::db" : { - "file" : "DBD/SQLite.pm" - }, - "DBD::SQLite::dr" : { - "file" : "DBD/SQLite.pm" - } - }, - "target" : "DBD::SQLite", - "version" : "1.31" - }, - "DBI" : { - "dist" : "DBI-1.616", - "mymeta" : { - "abstract" : "Database independent interface for Perl", - "author" : [ - "Tim Bunce (dbi-users@perl.org)" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "DBI", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.48", - "Test::Simple" : "0.90" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "conflicts" : { - "DBD::AnyData" : "0.09", - "DBD::CSV" : "0.29", - "DBD::PO" : "2.10", - "DBD::RAM" : "0.072", - "SQL::Statement" : "1.27" - }, - "recommends" : { - "Clone" : "0.31", - "DB_File" : 0, - "MLDBM" : 0, - "Net::Daemon" : 0, - "RPC::PlServer" : "0.2001", - "SQL::Statement" : "1.28" - }, - "requires" : { - "perl" : "5.008" - } - } - }, - "release_status" : "stable", - "resources" : { - "homepage" : "http://dbi.perl.org/", - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "https://svn.perl.org/modules/dbi/trunk/" - }, - "x_MailingList" : "mailto:dbi-dev@perl.org" - }, - "version" : "1.616" - }, - "name" : "DBI", - "pathname" : "T/TI/TIMB/DBI-1.616.tar.gz", - "provides" : { - "Bundle::DBI" : { - "file" : "Bundle/DBI.pm", - "version" : "12.008695" - }, - "DBD::DBM" : { - "file" : "DBD/DBM.pm", - "version" : "0.06" - }, - "DBD::DBM::Statement" : { - "file" : "DBD/DBM.pm" - }, - "DBD::DBM::Table" : { - "file" : "DBD/DBM.pm" - }, - "DBD::DBM::db" : { - "file" : "DBD/DBM.pm" - }, - "DBD::DBM::dr" : { - "file" : "DBD/DBM.pm" - }, - "DBD::DBM::st" : { - "file" : "DBD/DBM.pm" - }, - "DBD::ExampleP" : { - "file" : "DBD/ExampleP.pm", - "version" : "12.014310" - }, - "DBD::ExampleP::db" : { - "file" : "DBD/ExampleP.pm" - }, - "DBD::ExampleP::dr" : { - "file" : "DBD/ExampleP.pm" - }, - "DBD::ExampleP::st" : { - "file" : "DBD/ExampleP.pm" - }, - "DBD::File" : { - "file" : "DBD/File.pm", - "version" : "0.40" - }, - "DBD::File::Statement" : { - "file" : "DBD/File.pm" - }, - "DBD::File::Table" : { - "file" : "DBD/File.pm" - }, - "DBD::File::TieMeta" : { - "file" : "DBD/File.pm" - }, - "DBD::File::TieTables" : { - "file" : "DBD/File.pm" - }, - "DBD::File::db" : { - "file" : "DBD/File.pm" - }, - "DBD::File::dr" : { - "file" : "DBD/File.pm" - }, - "DBD::File::st" : { - "file" : "DBD/File.pm" - }, - "DBD::Gofer" : { - "file" : "DBD/Gofer.pm", - "version" : "0.014282" - }, - "DBD::Gofer::Policy::Base" : { - "file" : "DBD/Gofer/Policy/Base.pm", - "version" : "0.010087" - }, - "DBD::Gofer::Policy::classic" : { - "file" : "DBD/Gofer/Policy/classic.pm", - "version" : "0.010087" - }, - "DBD::Gofer::Policy::pedantic" : { - "file" : "DBD/Gofer/Policy/pedantic.pm", - "version" : "0.010087" - }, - "DBD::Gofer::Policy::rush" : { - "file" : "DBD/Gofer/Policy/rush.pm", - "version" : "0.010087" - }, - "DBD::Gofer::Transport::Base" : { - "file" : "DBD/Gofer/Transport/Base.pm", - "version" : "0.014120" - }, - "DBD::Gofer::Transport::corostream" : { - "file" : "DBD/Gofer/Transport/corostream.pm" - }, - "DBD::Gofer::Transport::null" : { - "file" : "DBD/Gofer/Transport/null.pm", - "version" : "0.010087" - }, - "DBD::Gofer::Transport::pipeone" : { - "file" : "DBD/Gofer/Transport/pipeone.pm", - "version" : "0.010087" - }, - "DBD::Gofer::Transport::stream" : { - "file" : "DBD/Gofer/Transport/stream.pm", - "version" : "0.014598" - }, - "DBD::Gofer::db" : { - "file" : "DBD/Gofer.pm" - }, - "DBD::Gofer::dr" : { - "file" : "DBD/Gofer.pm" - }, - "DBD::Gofer::st" : { - "file" : "DBD/Gofer.pm" - }, - "DBD::NullP" : { - "file" : "DBD/NullP.pm", - "version" : "12.014563" - }, - "DBD::NullP::db" : { - "file" : "DBD/NullP.pm" - }, - "DBD::NullP::dr" : { - "file" : "DBD/NullP.pm" - }, - "DBD::NullP::st" : { - "file" : "DBD/NullP.pm" - }, - "DBD::Proxy" : { - "file" : "DBD/Proxy.pm", - "version" : "0.2004" - }, - "DBD::Proxy::RPC::PlClient" : { - "file" : "DBD/Proxy.pm" - }, - "DBD::Proxy::db" : { - "file" : "DBD/Proxy.pm" - }, - "DBD::Proxy::dr" : { - "file" : "DBD/Proxy.pm" - }, - "DBD::Proxy::st" : { - "file" : "DBD/Proxy.pm" - }, - "DBD::Sponge" : { - "file" : "DBD/Sponge.pm", - "version" : "12.010002" - }, - "DBD::Sponge::db" : { - "file" : "DBD/Sponge.pm" - }, - "DBD::Sponge::dr" : { - "file" : "DBD/Sponge.pm" - }, - "DBD::Sponge::st" : { - "file" : "DBD/Sponge.pm" - }, - "DBDI" : { - "file" : "DBI/DBD.pm" - }, - "DBI" : { - "file" : "DBI.pm", - "version" : "1.616" - }, - "DBI::Const::GetInfo::ANSI" : { - "file" : "DBI/Const/GetInfo/ANSI.pm", - "version" : "2.008696" - }, - "DBI::Const::GetInfo::ODBC" : { - "file" : "DBI/Const/GetInfo/ODBC.pm", - "version" : "2.011373" - }, - "DBI::Const::GetInfoReturn" : { - "file" : "DBI/Const/GetInfoReturn.pm", - "version" : "2.008696" - }, - "DBI::Const::GetInfoType" : { - "file" : "DBI/Const/GetInfoType.pm", - "version" : "2.008696" - }, - "DBI::DBD" : { - "file" : "DBI/DBD.pm", - "version" : "12.014600" - }, - "DBI::DBD::Metadata" : { - "file" : "DBI/DBD/Metadata.pm", - "version" : "2.014213" - }, - "DBI::DBD::SqlEngine" : { - "file" : "DBI/DBD/SqlEngine.pm", - "version" : "0.03" - }, - "DBI::DBD::SqlEngine::Statement" : { - "file" : "DBI/DBD/SqlEngine.pm" - }, - "DBI::DBD::SqlEngine::Table" : { - "file" : "DBI/DBD/SqlEngine.pm" - }, - "DBI::DBD::SqlEngine::db" : { - "file" : "DBI/DBD/SqlEngine.pm" - }, - "DBI::DBD::SqlEngine::dr" : { - "file" : "DBI/DBD/SqlEngine.pm" - }, - "DBI::DBD::SqlEngine::st" : { - "file" : "DBI/DBD/SqlEngine.pm" - }, - "DBI::FAQ" : { - "file" : "DBI/FAQ.pm", - "version" : "1.014270" - }, - "DBI::Gofer::Execute" : { - "file" : "DBI/Gofer/Execute.pm", - "version" : "0.014282" - }, - "DBI::Gofer::Request" : { - "file" : "DBI/Gofer/Request.pm", - "version" : "0.012536" - }, - "DBI::Gofer::Response" : { - "file" : "DBI/Gofer/Response.pm", - "version" : "0.011565" - }, - "DBI::Gofer::Serializer::Base" : { - "file" : "DBI/Gofer/Serializer/Base.pm", - "version" : "0.009949" - }, - "DBI::Gofer::Serializer::DataDumper" : { - "file" : "DBI/Gofer/Serializer/DataDumper.pm", - "version" : "0.009949" - }, - "DBI::Gofer::Serializer::Storable" : { - "file" : "DBI/Gofer/Serializer/Storable.pm", - "version" : "0.009949" - }, - "DBI::Gofer::Transport::Base" : { - "file" : "DBI/Gofer/Transport/Base.pm", - "version" : "0.012536" - }, - "DBI::Gofer::Transport::pipeone" : { - "file" : "DBI/Gofer/Transport/pipeone.pm", - "version" : "0.012536" - }, - "DBI::Gofer::Transport::stream" : { - "file" : "DBI/Gofer/Transport/stream.pm", - "version" : "0.012536" - }, - "DBI::Profile" : { - "file" : "DBI/Profile.pm", - "version" : "2.014123" - }, - "DBI::ProfileData" : { - "file" : "DBI/ProfileData.pm", - "version" : "2.010007" - }, - "DBI::ProfileDumper" : { - "file" : "DBI/ProfileDumper.pm", - "version" : "2.013956" - }, - "DBI::ProfileDumper::Apache" : { - "file" : "DBI/ProfileDumper/Apache.pm", - "version" : "2.014120" - }, - "DBI::ProfileSubs" : { - "file" : "DBI/ProfileSubs.pm", - "version" : "0.009395" - }, - "DBI::ProxyServer" : { - "file" : "DBI/ProxyServer.pm", - "version" : "0.3005" - }, - "DBI::ProxyServer::db" : { - "file" : "DBI/ProxyServer.pm" - }, - "DBI::ProxyServer::dr" : { - "file" : "DBI/ProxyServer.pm" - }, - "DBI::ProxyServer::st" : { - "file" : "DBI/ProxyServer.pm" - }, - "DBI::PurePerl" : { - "file" : "DBI/PurePerl.pm", - "version" : "2.014285" - }, - "DBI::SQL::Nano" : { - "file" : "DBI/SQL/Nano.pm", - "version" : "1.014600" - }, - "DBI::SQL::Nano::Statement_" : { - "file" : "DBI/SQL/Nano.pm" - }, - "DBI::SQL::Nano::Table_" : { - "file" : "DBI/SQL/Nano.pm" - }, - "DBI::Util::CacheMemory" : { - "file" : "DBI/Util/CacheMemory.pm", - "version" : "0.010314" - }, - "DBI::common" : { - "file" : "DBI.pm" - } - }, - "target" : "DBI", - "version" : "1.616" - }, - "DBIx::Class" : { - "dist" : "DBIx-Class-0.08196", - "mymeta" : { - "abstract" : "Extensible and flexible object <-> relational mapper.", - "author" : [ - "mst: Matt S. Trout <mst@shadowcatsystems.co.uk>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.01, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "DBIx-Class", - "no_index" : { - "directory" : [ - "examples", - "inc", - "lib/DBIx/Class/Admin", - "lib/DBIx/Class/CDBICompat", - "lib/DBIx/Class/PK/Auto", - "t", - "xt" - ], - "package" : [ - "DBIx::Class::Storage::DBIHacks", - "DBIx::Class::Carp", - "DBIx::Class::ResultSet::Pager" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "DBD::SQLite" : "1.29", - "ExtUtils::MakeMaker" : "6.42", - "File::Temp" : "0.22", - "Package::Stash" : "0.28", - "Test::Builder" : "0.94", - "Test::Exception" : "0.31", - "Test::More" : "0.94", - "Test::Warn" : "0.21" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Class::Accessor::Grouped" : "0.10002", - "Class::C3::Componentised" : "1.0009", - "Class::Inspector" : "1.24", - "Config::Any" : "0.20", - "Context::Preserve" : "0.01", - "DBD::SQLite" : "1.29", - "DBI" : "1.57", - "Data::Compare" : "1.22", - "Data::Dumper::Concise" : "2.020", - "Data::Page" : "2.00", - "File::Path" : "2.07", - "File::Temp" : "0.22", - "Hash::Merge" : "0.12", - "MRO::Compat" : "0.09", - "Module::Find" : "0.06", - "Package::Stash" : "0.28", - "Path::Class" : "0.18", - "SQL::Abstract" : "1.72", - "Scope::Guard" : "0.03", - "Sub::Name" : "0.04", - "Test::Builder" : "0.94", - "Test::Exception" : "0.31", - "Test::More" : "0.94", - "Test::Warn" : "0.21", - "Try::Tiny" : "0.04", - "namespace::clean" : "0.20", - "perl" : "5.008001" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=DBIx-Class" - }, - "homepage" : "http://www.dbix-class.org/", - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://git.shadowcat.co.uk/dbsrgits/DBIx-Class.git" - }, - "x_IRC" : "irc://irc.perl.org/#dbix-class", - "x_MailingList" : "http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class" - }, - "version" : "0.08196" - }, - "name" : "DBIx::Class", - "pathname" : "A/AR/ARODLAND/DBIx-Class-0.08196.tar.gz", - "provides" : { - "DBIx::Class" : { - "file" : "DBIx/Class.pm", - "version" : "0.08196" - }, - "DBIx::Class::AccessorGroup" : { - "file" : "DBIx/Class/AccessorGroup.pm" - }, - "DBIx::Class::Admin" : { - "file" : "DBIx/Class/Admin.pm" - }, - "DBIx::Class::CDBICompat" : { - "file" : "DBIx/Class/CDBICompat.pm" - }, - "DBIx::Class::CDBICompat::Iterator" : { - "file" : "DBIx/Class/CDBICompat/Iterator.pm" - }, - "DBIx::Class::CDBICompat::Iterator::ResultSet" : { - "file" : "DBIx/Class/CDBICompat/Iterator.pm" - }, - "DBIx::Class::CDBICompat::SQLTransformer" : { - "file" : "DBIx/Class/CDBICompat/SQLTransformer.pm" - }, - "DBIx::Class::CDBICompat::Tied::ColumnValue" : { - "file" : "DBIx/Class/CDBICompat/ColumnsAsHash.pm" - }, - "DBIx::Class::Carp" : { - "file" : "DBIx/Class/Carp.pm" - }, - "DBIx::Class::Core" : { - "file" : "DBIx/Class/Core.pm" - }, - "DBIx::Class::Cursor" : { - "file" : "DBIx/Class/Cursor.pm" - }, - "DBIx::Class::DB" : { - "file" : "DBIx/Class/DB.pm" - }, - "DBIx::Class::Exception" : { - "file" : "DBIx/Class/Exception.pm" - }, - "DBIx::Class::FilterColumn" : { - "file" : "DBIx/Class/FilterColumn.pm" - }, - "DBIx::Class::InflateColumn" : { - "file" : "DBIx/Class/InflateColumn.pm" - }, - "DBIx::Class::InflateColumn::DateTime" : { - "file" : "DBIx/Class/InflateColumn/DateTime.pm" - }, - "DBIx::Class::InflateColumn::File" : { - "file" : "DBIx/Class/InflateColumn/File.pm" - }, - "DBIx::Class::Optional::Dependencies" : { - "file" : "DBIx/Class/Optional/Dependencies.pm" - }, - "DBIx::Class::Ordered" : { - "file" : "DBIx/Class/Ordered.pm" - }, - "DBIx::Class::PK" : { - "file" : "DBIx/Class/PK.pm" - }, - "DBIx::Class::PK::Auto" : { - "file" : "DBIx/Class/PK/Auto.pm" - }, - "DBIx::Class::Relationship" : { - "file" : "DBIx/Class/Relationship.pm" - }, - "DBIx::Class::Relationship::Base" : { - "file" : "DBIx/Class/Relationship/Base.pm" - }, - "DBIx::Class::ResultClass::HashRefInflator" : { - "file" : "DBIx/Class/ResultClass/HashRefInflator.pm" - }, - "DBIx::Class::ResultSet" : { - "file" : "DBIx/Class/ResultSet.pm" - }, - "DBIx::Class::ResultSetColumn" : { - "file" : "DBIx/Class/ResultSetColumn.pm" - }, - "DBIx::Class::ResultSetManager" : { - "file" : "DBIx/Class/ResultSetManager.pm" - }, - "DBIx::Class::ResultSource" : { - "file" : "DBIx/Class/ResultSource.pm" - }, - "DBIx::Class::ResultSource::Table" : { - "file" : "DBIx/Class/ResultSource/Table.pm" - }, - "DBIx::Class::ResultSource::View" : { - "file" : "DBIx/Class/ResultSource/View.pm" - }, - "DBIx::Class::ResultSourceHandle" : { - "file" : "DBIx/Class/ResultSourceHandle.pm" - }, - "DBIx::Class::ResultSourceProxy::Table" : { - "file" : "DBIx/Class/ResultSourceProxy/Table.pm" - }, - "DBIx::Class::Row" : { - "file" : "DBIx/Class/Row.pm" - }, - "DBIx::Class::SQLMaker" : { - "file" : "DBIx/Class/SQLMaker.pm" - }, - "DBIx::Class::SQLMaker::LimitDialects" : { - "file" : "DBIx/Class/SQLMaker/LimitDialects.pm" - }, - "DBIx::Class::SQLMaker::OracleJoins" : { - "file" : "DBIx/Class/SQLMaker/OracleJoins.pm" - }, - "DBIx::Class::Schema" : { - "file" : "DBIx/Class/Schema.pm" - }, - "DBIx::Class::Schema::Versioned" : { - "file" : "DBIx/Class/Schema/Versioned.pm" - }, - "DBIx::Class::Serialize::Storable" : { - "file" : "DBIx/Class/Serialize/Storable.pm" - }, - "DBIx::Class::StartupCheck" : { - "file" : "DBIx/Class/StartupCheck.pm" - }, - "DBIx::Class::Storage" : { - "file" : "DBIx/Class/Storage.pm" - }, - "DBIx::Class::Storage::DBI" : { - "file" : "DBIx/Class/Storage/DBI.pm" - }, - "DBIx::Class::Storage::DBI::ACCESS" : { - "file" : "DBIx/Class/Storage/DBI/ACCESS.pm" - }, - "DBIx::Class::Storage::DBI::ADO" : { - "file" : "DBIx/Class/Storage/DBI/ADO.pm" - }, - "DBIx::Class::Storage::DBI::ADO::MS_Jet" : { - "file" : "DBIx/Class/Storage/DBI/ADO/MS_Jet.pm" - }, - "DBIx::Class::Storage::DBI::ADO::MS_Jet::Cursor" : { - "file" : "DBIx/Class/Storage/DBI/ADO/MS_Jet/Cursor.pm" - }, - "DBIx::Class::Storage::DBI::ADO::Microsoft_SQL_Server" : { - "file" : "DBIx/Class/Storage/DBI/ADO/Microsoft_SQL_Server.pm" - }, - "DBIx::Class::Storage::DBI::AutoCast" : { - "file" : "DBIx/Class/Storage/DBI/AutoCast.pm" - }, - "DBIx::Class::Storage::DBI::Cursor" : { - "file" : "DBIx/Class/Storage/DBI/Cursor.pm" - }, - "DBIx::Class::Storage::DBI::DB2" : { - "file" : "DBIx/Class/Storage/DBI/DB2.pm" - }, - "DBIx::Class::Storage::DBI::Firebird" : { - "file" : "DBIx/Class/Storage/DBI/Firebird.pm" - }, - "DBIx::Class::Storage::DBI::Firebird::Common" : { - "file" : "DBIx/Class/Storage/DBI/Firebird/Common.pm" - }, - "DBIx::Class::Storage::DBI::Informix" : { - "file" : "DBIx/Class/Storage/DBI/Informix.pm" - }, - "DBIx::Class::Storage::DBI::InterBase" : { - "file" : "DBIx/Class/Storage/DBI/InterBase.pm" - }, - "DBIx::Class::Storage::DBI::MSSQL" : { - "file" : "DBIx/Class/Storage/DBI/MSSQL.pm" - }, - "DBIx::Class::Storage::DBI::MultiColumnIn" : { - "file" : "DBIx/Class/Storage/DBI/MultiColumnIn.pm" - }, - "DBIx::Class::Storage::DBI::NoBindVars" : { - "file" : "DBIx/Class/Storage/DBI/NoBindVars.pm" - }, - "DBIx::Class::Storage::DBI::ODBC" : { - "file" : "DBIx/Class/Storage/DBI/ODBC.pm" - }, - "DBIx::Class::Storage::DBI::ODBC::ACCESS" : { - "file" : "DBIx/Class/Storage/DBI/ODBC/ACCESS.pm" - }, - "DBIx::Class::Storage::DBI::ODBC::DB2_400_SQL" : { - "file" : "DBIx/Class/Storage/DBI/ODBC/DB2_400_SQL.pm" - }, - "DBIx::Class::Storage::DBI::ODBC::Firebird" : { - "file" : "DBIx/Class/Storage/DBI/ODBC/Firebird.pm" - }, - "DBIx::Class::Storage::DBI::ODBC::Microsoft_SQL_Server" : { - "file" : "DBIx/Class/Storage/DBI/ODBC/Microsoft_SQL_Server.pm" - }, - "DBIx::Class::Storage::DBI::ODBC::SQL_Anywhere" : { - "file" : "DBIx/Class/Storage/DBI/ODBC/SQL_Anywhere.pm" - }, - "DBIx::Class::Storage::DBI::Oracle" : { - "file" : "DBIx/Class/Storage/DBI/Oracle.pm" - }, - "DBIx::Class::Storage::DBI::Oracle::Generic" : { - "file" : "DBIx/Class/Storage/DBI/Oracle/Generic.pm" - }, - "DBIx::Class::Storage::DBI::Oracle::WhereJoins" : { - "file" : "DBIx/Class/Storage/DBI/Oracle/WhereJoins.pm" - }, - "DBIx::Class::Storage::DBI::Pg" : { - "file" : "DBIx/Class/Storage/DBI/Pg.pm" - }, - "DBIx::Class::Storage::DBI::Replicated" : { - "file" : "DBIx/Class/Storage/DBI/Replicated.pm" - }, - "DBIx::Class::Storage::DBI::Replicated::Balancer" : { - "file" : "DBIx/Class/Storage/DBI/Replicated/Balancer.pm" - }, - "DBIx::Class::Storage::DBI::Replicated::Balancer::First" : { - "file" : "DBIx/Class/Storage/DBI/Replicated/Balancer/First.pm" - }, - "DBIx::Class::Storage::DBI::Replicated::Balancer::Random" : { - "file" : "DBIx/Class/Storage/DBI/Replicated/Balancer/Random.pm" - }, - "DBIx::Class::Storage::DBI::Replicated::Pool" : { - "file" : "DBIx/Class/Storage/DBI/Replicated/Pool.pm" - }, - "DBIx::Class::Storage::DBI::Replicated::Replicant" : { - "file" : "DBIx/Class/Storage/DBI/Replicated/Replicant.pm" - }, - "DBIx::Class::Storage::DBI::Replicated::WithDSN" : { - "file" : "DBIx/Class/Storage/DBI/Replicated/WithDSN.pm" - }, - "DBIx::Class::Storage::DBI::SQLAnywhere" : { - "file" : "DBIx/Class/Storage/DBI/SQLAnywhere.pm" - }, - "DBIx::Class::Storage::DBI::SQLAnywhere::Cursor" : { - "file" : "DBIx/Class/Storage/DBI/SQLAnywhere/Cursor.pm" - }, - "DBIx::Class::Storage::DBI::SQLite" : { - "file" : "DBIx/Class/Storage/DBI/SQLite.pm" - }, - "DBIx::Class::Storage::DBI::Sybase" : { - "file" : "DBIx/Class/Storage/DBI/Sybase.pm" - }, - "DBIx::Class::Storage::DBI::Sybase::ASE" : { - "file" : "DBIx/Class/Storage/DBI/Sybase/ASE.pm" - }, - "DBIx::Class::Storage::DBI::Sybase::ASE::NoBindVars" : { - "file" : "DBIx/Class/Storage/DBI/Sybase/ASE/NoBindVars.pm" - }, - "DBIx::Class::Storage::DBI::Sybase::FreeTDS" : { - "file" : "DBIx/Class/Storage/DBI/Sybase/FreeTDS.pm" - }, - "DBIx::Class::Storage::DBI::Sybase::MSSQL" : { - "file" : "DBIx/Class/Storage/DBI/Sybase/MSSQL.pm" - }, - "DBIx::Class::Storage::DBI::Sybase::Microsoft_SQL_Server" : { - "file" : "DBIx/Class/Storage/DBI/Sybase/Microsoft_SQL_Server.pm" - }, - "DBIx::Class::Storage::DBI::Sybase::Microsoft_SQL_Server::NoBindVars" : { - "file" : "DBIx/Class/Storage/DBI/Sybase/Microsoft_SQL_Server/NoBindVars.pm" - }, - "DBIx::Class::Storage::DBI::UniqueIdentifier" : { - "file" : "DBIx/Class/Storage/DBI/UniqueIdentifier.pm" - }, - "DBIx::Class::Storage::DBI::mysql" : { - "file" : "DBIx/Class/Storage/DBI/mysql.pm" - }, - "DBIx::Class::Storage::Statistics" : { - "file" : "DBIx/Class/Storage/Statistics.pm" - }, - "DBIx::Class::Storage::TxnScopeGuard" : { - "file" : "DBIx/Class/Storage/TxnScopeGuard.pm" - }, - "DBIx::Class::UTF8Columns" : { - "file" : "DBIx/Class/UTF8Columns.pm" - }, - "SQL::Translator::Parser::DBIx::Class" : { - "file" : "SQL/Translator/Parser/DBIx/Class.pm", - "version" : "1.10" - }, - "SQL::Translator::Producer::DBIx::Class::File" : { - "file" : "SQL/Translator/Producer/DBIx/Class/File.pm", - "version" : "0.1" - } - }, - "target" : "DBIx::Class", - "version" : "0.08196" - }, - "DBIx::Class::EncodedColumn" : { - "dist" : "DBIx-Class-EncodedColumn-0.00011", - "mymeta" : { - "abstract" : "Automatically encode column values", - "author" : [ - "Guillermo Roditi (groditi) <groditi@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.00, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "DBIx-Class-EncodedColumn", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "DBD::SQLite" : 0, - "Dir::Self" : 0, - "ExtUtils::MakeMaker" : "6.42", - "File::Spec" : 0, - "File::Temp" : 0, - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "DBD::SQLite" : 0, - "DBIx::Class" : "0.06002", - "Dir::Self" : 0, - "File::Spec" : 0, - "File::Temp" : 0, - "Sub::Name" : "0.04", - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://github.com/wreis/DBIx-Class-EncodedColumn.git" - } - }, - "version" : "0.00011" - }, - "name" : "DBIx::Class::EncodedColumn", - "pathname" : "W/WR/WREIS/DBIx-Class-EncodedColumn-0.00011.tar.gz", - "provides" : { - "DBIx::Class::EncodedColumn" : { - "file" : "DBIx/Class/EncodedColumn.pm", - "version" : "0.00011" - }, - "DBIx::Class::EncodedColumn::Crypt" : { - "file" : "DBIx/Class/EncodedColumn/Crypt.pm", - "version" : "0.01" - }, - "DBIx::Class::EncodedColumn::Crypt::Eksblowfish::Bcrypt" : { - "file" : "DBIx/Class/EncodedColumn/Crypt/Eksblowfish/Bcrypt.pm", - "version" : "0.00001" - }, - "DBIx::Class::EncodedColumn::Crypt::OpenPGP" : { - "file" : "DBIx/Class/EncodedColumn/Crypt/OpenPGP.pm", - "version" : "0.01" - }, - "DBIx::Class::EncodedColumn::Digest" : { - "file" : "DBIx/Class/EncodedColumn/Digest.pm", - "version" : "0.00001" - } - }, - "target" : "DBIx::Class::EncodedColumn", - "version" : "0.00011" - }, - "DBIx::Class::IntrospectableM2M" : { - "dist" : "DBIx-Class-IntrospectableM2M-0.001001", - "mymeta" : { - "abstract" : "Introspect many-to-many relationships", - "author" : [ - "Guillermo Roditi (groditi) <groditi@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.76, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "DBIx-Class-IntrospectableM2M", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "DBIx::Class" : 0, - "ExtUtils::MakeMaker" : "6.62", - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.001001" - }, - "name" : "DBIx::Class::IntrospectableM2M", - "pathname" : "G/GR/GRODITI/DBIx-Class-IntrospectableM2M-0.001001.tar.gz", - "provides" : { - "DBIx::Class::IntrospectableM2M" : { - "file" : "DBIx/Class/IntrospectableM2M.pm", - "version" : "0.001001" - } - }, - "target" : "DBIx::Class::IntrospectableM2M", - "version" : "0.001001" - }, - "DBIx::Class::Schema::Loader" : { - "dist" : "DBIx-Class-Schema-Loader-0.07017", - "mymeta" : { - "abstract" : "Create a DBIx::Class::Schema based on a database", - "author" : [ - "blblack: Brandon Black <blblack@gmail.com>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.04, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "DBIx-Class-Schema-Loader", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "DBD::SQLite" : "1.29", - "DBI" : "1.56", - "DBIx::Class::IntrospectableM2M" : 0, - "ExtUtils::MakeMaker" : "6.62", - "File::Copy" : 0, - "File::Path" : "2.07", - "File::Temp" : "0.16", - "IPC::Open3" : 0, - "Test::Exception" : 0, - "Test::More" : "0.94", - "Test::Warn" : "0.21" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.62" - } - }, - "runtime" : { - "requires" : { - "Carp::Clan" : 0, - "Class::Accessor::Grouped" : "0.10002", - "Class::C3::Componentised" : "1.0008", - "Class::Inspector" : 0, - "Class::Unload" : 0, - "DBD::SQLite" : "1.29", - "DBI" : "1.56", - "DBIx::Class" : "0.08127", - "DBIx::Class::IntrospectableM2M" : 0, - "Data::Dump" : "1.06", - "Digest::MD5" : "2.36", - "Exporter" : "5.63", - "File::Copy" : 0, - "File::Path" : "2.07", - "File::Spec" : 0, - "File::Temp" : "0.16", - "IPC::Open3" : 0, - "Lingua::EN::Inflect::Number" : "1.1", - "Lingua::EN::Inflect::Phrase" : "0.02", - "Lingua::EN::Tagger" : 0, - "List::MoreUtils" : 0, - "MRO::Compat" : "0.09", - "Scalar::Util" : 0, - "Scope::Guard" : 0, - "String::CamelCase" : "0.02", - "String::ToIdentifier::EN" : "0.05", - "Sub::Name" : 0, - "Task::Weaken" : 0, - "Test::Exception" : 0, - "Test::More" : "0.94", - "Test::Warn" : "0.21", - "Try::Tiny" : 0, - "namespace::clean" : "0.20", - "perl" : "5.008001" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://git.shadowcat.co.uk/dbsrgits/DBIx-Class-Schema-Loader.git" - }, - "x_IRC" : "irc://irc.perl.org/#dbix-class", - "x_MailingList" : "http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class" - }, - "version" : "0.07017" - }, - "name" : "DBIx::Class::Schema::Loader", - "pathname" : "R/RK/RKITOVER/DBIx-Class-Schema-Loader-0.07017.tar.gz", - "provides" : { - "DBIx::Class::Schema::Loader" : { - "file" : "DBIx/Class/Schema/Loader.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::Base" : { - "file" : "DBIx/Class/Schema/Loader/Base.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI" : { - "file" : "DBIx/Class/Schema/Loader/DBI.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::ADO" : { - "file" : "DBIx/Class/Schema/Loader/DBI/ADO.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::ADO::MS_Jet" : { - "file" : "DBIx/Class/Schema/Loader/DBI/ADO/MS_Jet.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::ADO::Microsoft_SQL_Server" : { - "file" : "DBIx/Class/Schema/Loader/DBI/ADO/Microsoft_SQL_Server.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::Component::QuotedDefault" : { - "file" : "DBIx/Class/Schema/Loader/DBI/Component/QuotedDefault.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::DB2" : { - "file" : "DBIx/Class/Schema/Loader/DBI/DB2.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::Firebird" : { - "file" : "DBIx/Class/Schema/Loader/DBI/Firebird.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::Informix" : { - "file" : "DBIx/Class/Schema/Loader/DBI/Informix.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::InterBase" : { - "file" : "DBIx/Class/Schema/Loader/DBI/InterBase.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::MSSQL" : { - "file" : "DBIx/Class/Schema/Loader/DBI/MSSQL.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::ODBC" : { - "file" : "DBIx/Class/Schema/Loader/DBI/ODBC.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::ODBC::ACCESS" : { - "file" : "DBIx/Class/Schema/Loader/DBI/ODBC/ACCESS.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::ODBC::Firebird" : { - "file" : "DBIx/Class/Schema/Loader/DBI/ODBC/Firebird.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::ODBC::Microsoft_SQL_Server" : { - "file" : "DBIx/Class/Schema/Loader/DBI/ODBC/Microsoft_SQL_Server.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::ODBC::SQL_Anywhere" : { - "file" : "DBIx/Class/Schema/Loader/DBI/ODBC/SQL_Anywhere.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::Oracle" : { - "file" : "DBIx/Class/Schema/Loader/DBI/Oracle.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::Pg" : { - "file" : "DBIx/Class/Schema/Loader/DBI/Pg.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::SQLAnywhere" : { - "file" : "DBIx/Class/Schema/Loader/DBI/SQLAnywhere.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::SQLite" : { - "file" : "DBIx/Class/Schema/Loader/DBI/SQLite.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::Sybase" : { - "file" : "DBIx/Class/Schema/Loader/DBI/Sybase.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::Sybase::Common" : { - "file" : "DBIx/Class/Schema/Loader/DBI/Sybase/Common.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::Sybase::Microsoft_SQL_Server" : { - "file" : "DBIx/Class/Schema/Loader/DBI/Sybase/Microsoft_SQL_Server.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::Writing" : { - "file" : "DBIx/Class/Schema/Loader/DBI/Writing.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBI::mysql" : { - "file" : "DBIx/Class/Schema/Loader/DBI/mysql.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::DBObject" : { - "file" : "DBIx/Class/Schema/Loader/DBObject.pm" - }, - "DBIx::Class::Schema::Loader::DBObject::Informix" : { - "file" : "DBIx/Class/Schema/Loader/DBObject/Informix.pm" - }, - "DBIx::Class::Schema::Loader::DBObject::Sybase" : { - "file" : "DBIx/Class/Schema/Loader/DBObject/Sybase.pm" - }, - "DBIx::Class::Schema::Loader::Optional::Dependencies" : { - "file" : "DBIx/Class/Schema/Loader/Optional/Dependencies.pm" - }, - "DBIx::Class::Schema::Loader::RelBuilder" : { - "file" : "DBIx/Class/Schema/Loader/RelBuilder.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::RelBuilder::Compat::v0_040" : { - "file" : "DBIx/Class/Schema/Loader/RelBuilder/Compat/v0_040.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::RelBuilder::Compat::v0_05" : { - "file" : "DBIx/Class/Schema/Loader/RelBuilder/Compat/v0_05.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::RelBuilder::Compat::v0_06" : { - "file" : "DBIx/Class/Schema/Loader/RelBuilder/Compat/v0_06.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::RelBuilder::Compat::v0_07" : { - "file" : "DBIx/Class/Schema/Loader/RelBuilder/Compat/v0_07.pm", - "version" : "0.07017" - }, - "DBIx::Class::Schema::Loader::Table" : { - "file" : "DBIx/Class/Schema/Loader/Table.pm" - }, - "DBIx::Class::Schema::Loader::Table::Informix" : { - "file" : "DBIx/Class/Schema/Loader/Table/Informix.pm" - }, - "DBIx::Class::Schema::Loader::Table::Sybase" : { - "file" : "DBIx/Class/Schema/Loader/Table/Sybase.pm" - } - }, - "target" : "DBIx::Class::Schema::Loader", - "version" : "0.07017" - }, - "Data::Compare" : { - "dist" : "Data-Compare-1.22", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.50, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Data-Compare", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "File::Find::Rule" : "0.1", - "Scalar::Util" : 0 - } - } - }, - "release_status" : "stable", - "version" : "1.22" - }, - "name" : "Data::Compare", - "pathname" : "D/DC/DCANTRELL/Data-Compare-1.22.tar.gz", - "provides" : { - "Data::Compare" : { - "file" : "Data/Compare.pm", - "version" : "1.22" - }, - "Data::Compare::Plugins::Scalar::Properties" : { - "file" : "Data/Compare/Plugins/Scalar/Properties.pm", - "version" : "1" - } - }, - "target" : "Data::Compare", - "version" : "1.22" - }, - "Data::Dump" : { - "dist" : "Data-Dump-1.21", - "mymeta" : { - "abstract" : "Pretty printing of data structures", - "author" : [ - "Gisle Aas <gisle@activestate.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.57_05, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Data-Dump", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Test" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "recommends" : { - "MIME::Base64" : 0 - }, - "requires" : { - "Symbol" : 0, - "perl" : "5.006" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/gisle/data-dump" - } - }, - "version" : "1.21" - }, - "name" : "Data::Dump", - "pathname" : "G/GA/GAAS/Data-Dump-1.21.tar.gz", - "provides" : { - "Data::Dump" : { - "file" : "Data/Dump.pm", - "version" : "1.21" - }, - "Data::Dump::FilterContext" : { - "file" : "Data/Dump/FilterContext.pm" - }, - "Data::Dump::Filtered" : { - "file" : "Data/Dump/Filtered.pm" - }, - "Data::Dump::Trace" : { - "file" : "Data/Dump/Trace.pm", - "version" : "0.02" - }, - "Data::Dump::Trace::Call" : { - "file" : "Data/Dump/Trace.pm" - }, - "Data::Dump::Trace::Wrapper" : { - "file" : "Data/Dump/Trace.pm" - } - }, - "target" : "Data::Dump", - "version" : "1.21" - }, - "Data::Dumper::Concise" : { - "dist" : "Data-Dumper-Concise-2.020", - "mymeta" : { - "abstract" : "Less indentation and newlines plus sub deparsing", - "author" : [ - "mst - Matt S. Trout <mst@shadowcat.co.uk>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.00, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Data-Dumper-Concise", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "perl" : "5.006" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "2.020", - "x_module_name" : "Data::Dumper::Concise" - }, - "name" : "Data::Dumper::Concise", - "pathname" : "F/FR/FREW/Data-Dumper-Concise-2.020.tar.gz", - "provides" : { - "Data::Dumper::Concise" : { - "file" : "Data/Dumper/Concise.pm", - "version" : "2.020" - }, - "Data::Dumper::Concise::Sugar" : { - "file" : "Data/Dumper/Concise/Sugar.pm" - }, - "Devel::Dwarn" : { - "file" : "Devel/Dwarn.pm" - } - }, - "target" : "Data::Dumper::Concise", - "version" : "2.020" - }, - "Data::OptList" : { - "dist" : "Data-OptList-0.107", - "mymeta" : { - "abstract" : "parse and validate simple name/value option pairs", - "author" : [ - "Ricardo Signes <rjbs@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.200006, CPAN::Meta::Converter version 2.110930, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Data-OptList", - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : "0.96" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.30" - } - }, - "runtime" : { - "requires" : { - "List::Util" : 0, - "Params::Util" : 0, - "Sub::Install" : "0.921" - } - } - }, - "release_status" : "stable", - "resources" : { - "homepage" : "http://github.com/rjbs/data-optlist", - "repository" : { - "url" : "http://github.com/rjbs/data-optlist" - } - }, - "version" : "0.107", - "x_Dist_Zilla" : { - "plugins" : [ - { - "class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed", - "name" : "@RJBS/CheckPrereqsIndexed", - "version" : "0.002" - }, - { - "class" : "Dist::Zilla::Plugin::GatherDir", - "name" : "@RJBS/@Basic/GatherDir", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::PruneCruft", - "name" : "@RJBS/@Basic/PruneCruft", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::ManifestSkip", - "name" : "@RJBS/@Basic/ManifestSkip", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::MetaYAML", - "name" : "@RJBS/@Basic/MetaYAML", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::License", - "name" : "@RJBS/@Basic/License", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::Readme", - "name" : "@RJBS/@Basic/Readme", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::ExtraTests", - "name" : "@RJBS/@Basic/ExtraTests", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::ExecDir", - "name" : "@RJBS/@Basic/ExecDir", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::ShareDir", - "name" : "@RJBS/@Basic/ShareDir", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::MakeMaker", - "name" : "@RJBS/@Basic/MakeMaker", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::Manifest", - "name" : "@RJBS/@Basic/Manifest", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::TestRelease", - "name" : "@RJBS/@Basic/TestRelease", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::ConfirmRelease", - "name" : "@RJBS/@Basic/ConfirmRelease", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::UploadToCPAN", - "name" : "@RJBS/@Basic/UploadToCPAN", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::AutoPrereqs", - "name" : "@RJBS/AutoPrereqs", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::Git::NextVersion", - "name" : "@RJBS/Git::NextVersion", - "version" : "1.110500" - }, - { - "class" : "Dist::Zilla::Plugin::PkgVersion", - "name" : "@RJBS/PkgVersion", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::MetaConfig", - "name" : "@RJBS/MetaConfig", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::MetaJSON", - "name" : "@RJBS/MetaJSON", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::NextRelease", - "name" : "@RJBS/NextRelease", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::PodSyntaxTests", - "name" : "@RJBS/PodSyntaxTests", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::Repository", - "name" : "@RJBS/Repository", - "version" : "0.18" - }, - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "test", - "type" : "requires" - } - }, - "name" : "@RJBS/TestMoreWithSubtests", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::PodWeaver", - "name" : "@RJBS/PodWeaver", - "version" : "3.101641" - }, - { - "class" : "Dist::Zilla::Plugin::GithubMeta", - "name" : "@RJBS/GithubMeta", - "version" : "0.12" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Check", - "name" : "@RJBS/@Git/Check", - "version" : "1.110500" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Commit", - "name" : "@RJBS/@Git/Commit", - "version" : "1.110500" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Tag", - "name" : "@RJBS/@Git/Tag", - "version" : "1.110500" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Push", - "name" : "@RJBS/@Git/Push", - "version" : "1.110500" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":InstallModules", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":IncModules", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":TestFiles", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ExecFiles", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ShareFiles", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":MainModule", - "version" : "4.200006" - } - ], - "zilla" : { - "class" : "Dist::Zilla::Dist::Builder", - "config" : { - "is_trial" : 0 - }, - "version" : "4.200006" - } - } - }, - "name" : "Data::OptList", - "pathname" : "R/RJ/RJBS/Data-OptList-0.107.tar.gz", - "provides" : { - "Data::OptList" : { - "file" : "Data/OptList.pm", - "version" : "0.107" - } - }, - "target" : "Data::OptList", - "version" : "0.107" - }, - "Data::Page" : { - "dist" : "Data-Page-2.02", - "mymeta" : { - "abstract" : "help when paging through sets of results", - "author" : [ - "Based on code originally by Leo Lapworth, with many changes added by\nby Leon Brocard <acme@astray.com>." - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Data-Page", - "prereqs" : { - "configure" : { - "requires" : { - "Module::Build" : "0.35" - } - }, - "runtime" : { - "requires" : { - "Class::Accessor::Chained::Fast" : 0, - "Test::Exception" : 0, - "Test::More" : 0 - } - } - }, - "provides" : { - "Data::Page" : { - "file" : "lib/Data/Page.pm", - "version" : "2.02" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "2.02" - }, - "name" : "Data::Page", - "pathname" : "L/LB/LBROCARD/Data-Page-2.02.tar.gz", - "provides" : { - "Data::Page" : { - "file" : "Data/Page.pm", - "version" : "2.02" - } - }, - "target" : "Data::Page", - "version" : "2.02" - }, - "Data::UUID" : { - "dist" : "Data-UUID-1.217", - "mymeta" : { - "abstract" : "Perl extension for generating Globally/Universally", - "author" : [ - "Ricardo Signes <rjbs[at]cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "bsd" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Data-UUID", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Digest::MD5" : 0 - } - } - }, - "release_status" : "stable", - "version" : "1.217" - }, - "name" : "Data::UUID", - "pathname" : "R/RJ/RJBS/Data-UUID-1.217.tar.gz", - "provides" : { - "Data::UUID" : { - "file" : "Data/UUID.pm", - "version" : "1.217" - } - }, - "target" : "Data::UUID", - "version" : "1.217" - }, - "Data::Visitor" : { - "dist" : "Data-Visitor-0.27", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Data-Visitor", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Moose" : "0.89", - "Task::Weaken" : 0, - "Test::More" : 0, - "Test::use::ok" : 0, - "Tie::ToObject" : "0.01", - "namespace::clean" : "0.08" - } - } - }, - "release_status" : "stable", - "version" : "0.27" - }, - "name" : "Data::Visitor", - "pathname" : "F/FL/FLORA/Data-Visitor-0.27.tar.gz", - "provides" : { - "Data::Visitor" : { - "file" : "Data/Visitor.pm", - "version" : "0.27" - }, - "Data::Visitor::Callback" : { - "file" : "Data/Visitor/Callback.pm" - } - }, - "target" : "Data::Visitor", - "version" : "0.27" - }, - "DateTime" : { - "dist" : "DateTime-0.70", - "mymeta" : { - "abstract" : "A date and time object", - "author" : [ - "Dave Rolsky <autarch@urth.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "artistic_2" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "DateTime", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::CBuilder" : 0, - "Module::Build" : "0.3601", - "Test::Exception" : 0, - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "Module::Build" : "0.3601" - } - }, - "runtime" : { - "requires" : { - "DateTime::Locale" : "0.41", - "DateTime::TimeZone" : "1.09", - "Math::Round" : 0, - "Params::Validate" : "0.76", - "Scalar::Util" : 0, - "Time::Local" : "1.04", - "perl" : "v5.8.1" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=DateTime" - }, - "repository" : { - "url" : "http://hg.urth.org/hg/DateTime.pm" - } - }, - "version" : "0.70" - }, - "name" : "DateTime", - "pathname" : "D/DR/DROLSKY/DateTime-0.70.tar.gz", - "provides" : { - "DateTime" : { - "file" : "DateTime.pm", - "version" : "0.70" - }, - "DateTime::Duration" : { - "file" : "DateTime/Duration.pm", - "version" : "0.70" - }, - "DateTime::Helpers" : { - "file" : "DateTime/Helpers.pm", - "version" : "0.70" - }, - "DateTime::Infinite" : { - "file" : "DateTime/Infinite.pm", - "version" : "0.70" - }, - "DateTime::Infinite::Future" : { - "file" : "DateTime/Infinite.pm", - "version" : "0.70" - }, - "DateTime::Infinite::Past" : { - "file" : "DateTime/Infinite.pm", - "version" : "0.70" - }, - "DateTime::LeapSecond" : { - "file" : "DateTime/LeapSecond.pm", - "version" : "0.70" - } - }, - "target" : "DateTime", - "version" : "0.70" - }, - "DateTime::Format::Builder" : { - "dist" : "DateTime-Format-Builder-0.80", - "mymeta" : { - "abstract" : "Create DateTime parser classes and objects.", - "author" : [ - "Originally written by Iain Truskett <spoon@cpan.org>, who died on\nDecember 29, 2003.", - "Maintained by Dave Rolsky <autarch@urth.org>." - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "DateTime-Format-Builder", - "prereqs" : { - "build" : { - "requires" : { - "Module::Build" : 0 - } - }, - "configure" : { - "requires" : { - "Module::Build" : "0.36" - } - }, - "runtime" : { - "requires" : { - "Class::Factory::Util" : "1.6", - "DateTime" : "0.12", - "DateTime::Format::Strptime" : "1.04", - "Params::Validate" : "0.72", - "Task::Weaken" : 0 - } - } - }, - "provides" : { - "DateTime::Format::Builder" : { - "file" : "lib/DateTime/Format/Builder.pm", - "version" : "0.80" - }, - "DateTime::Format::Builder::Parser" : { - "file" : "lib/DateTime/Format/Builder/Parser.pm", - "version" : "0.77" - }, - "DateTime::Format::Builder::Parser::Dispatch" : { - "file" : "lib/DateTime/Format/Builder/Parser/Dispatch.pm", - "version" : "0.78" - }, - "DateTime::Format::Builder::Parser::Quick" : { - "file" : "lib/DateTime/Format/Builder/Parser/Quick.pm", - "version" : "0.77" - }, - "DateTime::Format::Builder::Parser::Regex" : { - "file" : "lib/DateTime/Format/Builder/Parser/Regex.pm", - "version" : "0.77" - }, - "DateTime::Format::Builder::Parser::Strptime" : { - "file" : "lib/DateTime/Format/Builder/Parser/Strptime.pm", - "version" : "0.77" - }, - "DateTime::Format::Builder::Parser::generic" : { - "file" : "lib/DateTime/Format/Builder/Parser/generic.pm", - "version" : "0.77" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.80" - }, - "name" : "DateTime::Format::Builder", - "pathname" : "D/DR/DROLSKY/DateTime-Format-Builder-0.80.tar.gz", - "provides" : { - "DateTime::Format::Builder" : { - "file" : "DateTime/Format/Builder.pm", - "version" : "0.80" - }, - "DateTime::Format::Builder::Parser" : { - "file" : "DateTime/Format/Builder/Parser.pm", - "version" : "0.77" - }, - "DateTime::Format::Builder::Parser::Dispatch" : { - "file" : "DateTime/Format/Builder/Parser/Dispatch.pm", - "version" : "0.78" - }, - "DateTime::Format::Builder::Parser::Quick" : { - "file" : "DateTime/Format/Builder/Parser/Quick.pm", - "version" : "0.77" - }, - "DateTime::Format::Builder::Parser::Regex" : { - "file" : "DateTime/Format/Builder/Parser/Regex.pm", - "version" : "0.77" - }, - "DateTime::Format::Builder::Parser::Strptime" : { - "file" : "DateTime/Format/Builder/Parser/Strptime.pm", - "version" : "0.77" - }, - "DateTime::Format::Builder::Parser::generic" : { - "file" : "DateTime/Format/Builder/Parser/generic.pm", - "version" : "0.77" - } - }, - "target" : "DateTime::Format::Builder", - "version" : "0.80" - }, - "DateTime::Format::HTTP" : { - "dist" : "DateTime-Format-HTTP-0.40", - "mymeta" : { - "abstract" : "Date conversion routines", - "author" : [ - "Christiaan Kras <ckras@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "DateTime-Format-HTTP", - "prereqs" : { - "configure" : { - "requires" : { - "Module::Build" : "0.36" - } - }, - "runtime" : { - "requires" : { - "DateTime" : "0.17", - "HTTP::Date" : "1.44", - "Test::More" : "0.47" - } - } - }, - "provides" : { - "DateTime::Format::HTTP" : { - "file" : "lib/DateTime/Format/HTTP.pm", - "version" : "0.40" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.40" - }, - "name" : "DateTime::Format::HTTP", - "pathname" : "/authors/id/C/CK/CKRAS/DateTime-Format-HTTP-0.40.tar.gz", - "provides" : { - "DateTime::Format::HTTP" : { - "file" : "DateTime/Format/HTTP.pm", - "version" : "0.40" - } - }, - "target" : "DateTime::Format::HTTP", - "version" : "0.40" - }, - "DateTime::Format::ISO8601" : { - "dist" : "DateTime-Format-ISO8601-0.07", - "mymeta" : { - "abstract" : "Parses ISO8601 formats", - "author" : [ - "Joshua Hoblitt <jhoblitt@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "DateTime-Format-ISO8601", - "prereqs" : { - "configure" : { - "requires" : { - "Module::Build" : "0.35" - } - }, - "runtime" : { - "recommends" : { - "File::Find::Rule" : "0.24", - "Test::Distribution" : "1.22", - "Test::Pod" : "0.95" - }, - "requires" : { - "DateTime" : "0.18", - "DateTime::Format::Builder" : "0.77" - } - } - }, - "provides" : { - "DateTime::Format::ISO8601" : { - "file" : "lib/DateTime/Format/ISO8601.pm", - "version" : "0.07" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.07" - }, - "name" : "DateTime::Format::ISO8601", - "pathname" : "J/JH/JHOBLITT/DateTime-Format-ISO8601-0.07.tar.gz", - "provides" : { - "DateTime::Format::ISO8601" : { - "file" : "DateTime/Format/ISO8601.pm", - "version" : "0.07" - } - }, - "target" : "DateTime::Format::ISO8601", - "version" : "0.07" - }, - "DateTime::Format::Mail" : { - "dist" : "DateTime-Format-Mail-0.3001", - "mymeta" : { - "abstract" : "Convert between DateTime and RFC2822/822 formats", - "author" : [ - "Originally written by Iain Truskett <spoon@cpan.org>, who died on\nDecember 29, 2003.", - "Maintained by Dave Rolsky <autarch@urth.org>." - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "DateTime-Format-Mail", - "prereqs" : { - "build" : { - "requires" : { - "Module::Build" : 0 - } - }, - "runtime" : { - "requires" : { - "DateTime" : "0.1705", - "Params::Validate" : "0.67", - "Test::More" : "0.47" - } - } - }, - "provides" : { - "DateTime::Format::Mail" : { - "file" : "lib/DateTime/Format/Mail.pm", - "version" : "0.3001" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.3001" - }, - "name" : "DateTime::Format::Mail", - "pathname" : "D/DR/DROLSKY/DateTime-Format-Mail-0.3001.tar.gz", - "provides" : { - "DateTime::Format::Mail" : { - "file" : "DateTime/Format/Mail.pm", - "version" : "0.3001" - } - }, - "target" : "DateTime::Format::Mail", - "version" : "0.3001" - }, - "DateTime::Format::Pg" : { - "dist" : "DateTime-Format-Pg-0.16007", - "mymeta" : { - "abstract" : "Parse and format PostgreSQL dates and times", - "author" : [ - "Daisuke Maki <daisuke@endeworks.jp>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.01, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "DateTime-Format-Pg", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "DateTime" : "0.10", - "DateTime::Format::Builder" : "0.72", - "DateTime::TimeZone" : "0.05" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://github.com/lestrrat/DateTime-Format-Pg.git" - } - }, - "version" : "0.16007" - }, - "name" : "DateTime::Format::Pg", - "pathname" : "D/DM/DMAKI/DateTime-Format-Pg-0.16007.tar.gz", - "provides" : { - "DateTime::Format::Pg" : { - "file" : "DateTime/Format/Pg.pm", - "version" : "0.16007" - } - }, - "target" : "DateTime::Format::Pg", - "version" : "0.16007" - }, - "DateTime::Format::Strptime" : { - "dist" : "DateTime-Format-Strptime-1.5000", - "mymeta" : { - "abstract" : "Parse and format strp and strf time patterns", - "author" : [ - "Dave Rolsky <autarch@urth.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.102342, CPAN::Meta::Converter version 2.101670, CPAN::Meta::Converter version 2.112150", - "license" : [ - "artistic_2" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "DateTime-Format-Strptime", - "prereqs" : { - "build" : { - "requires" : {} - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.31" - } - }, - "runtime" : { - "requires" : { - "DateTime" : "0.4304", - "DateTime::Locale" : "0.45", - "DateTime::TimeZone" : "0.79", - "Params::Validate" : "0.64", - "Test::More" : "0.88" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=DateTime-Format-Strptime" - }, - "repository" : { - "url" : "http://hg.urth.org/hg/DateTime-Format-Strptime" - } - }, - "version" : "1.5000" - }, - "name" : "DateTime::Format::Strptime", - "pathname" : "D/DR/DROLSKY/DateTime-Format-Strptime-1.5000.tar.gz", - "provides" : { - "DateTime::Format::Strptime" : { - "file" : "DateTime/Format/Strptime.pm", - "version" : "1.5000" - } - }, - "target" : "DateTime::Format::Strptime", - "version" : "1.5000" - }, - "DateTime::Format::W3CDTF" : { - "dist" : "DateTime-Format-W3CDTF-0.06", - "mymeta" : { - "abstract" : "Parse and format W3CDTF datetime strings", - "author" : [ - "Dave Rolsky <autarch@urth.org>", - "Gregory Todd Williams <gwilliams@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.99, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "DateTime-Format-W3CDTF", - "no_index" : { - "directory" : [ - "examples", - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Test::More" : "0.61" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "DateTime" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=DateTime-Format-W3CDTF" - }, - "homepage" : "http://search.cpan.org/dist/DateTime-Format-W3CDTF/", - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://github.com/kasei/datetime-format-w3cdtf" - } - }, - "version" : "0.06" - }, - "name" : "DateTime::Format::W3CDTF", - "pathname" : "G/GW/GWILLIAMS/DateTime-Format-W3CDTF-0.06.tar.gz", - "provides" : { - "DateTime::Format::W3CDTF" : { - "file" : "DateTime/Format/W3CDTF.pm", - "version" : "0.06" - } - }, - "target" : "DateTime::Format::W3CDTF", - "version" : "0.06" - }, - "DateTime::Locale" : { - "dist" : "DateTime-Locale-0.45", - "mymeta" : { - "abstract" : "Localization support for DateTime.pm", - "author" : [ - "Dave Rolsky <autarch@urth.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "DateTime-Locale", - "prereqs" : { - "build" : { - "requires" : { - "Module::Build" : 0 - } - }, - "configure" : { - "requires" : { - "Module::Build" : "0.36" - } - }, - "runtime" : { - "requires" : { - "List::MoreUtils" : 0, - "Params::Validate" : "0.91", - "perl" : "5.006" - } - } - }, - "provides" : { - "DateTime::Locale" : { - "file" : "lib/DateTime/Locale.pm", - "version" : "0.45" - }, - "DateTime::Locale::Base" : { - "file" : "lib/DateTime/Locale/Base.pm", - "version" : 0 - }, - "DateTime::Locale::Catalog" : { - "file" : "lib/DateTime/Locale/Catalog.pm", - "version" : 0 - }, - "DateTime::Locale::aa" : { - "file" : "lib/DateTime/Locale/aa.pm", - "version" : 0 - }, - "DateTime::Locale::aa_DJ" : { - "file" : "lib/DateTime/Locale/aa_DJ.pm", - "version" : 0 - }, - "DateTime::Locale::aa_ER" : { - "file" : "lib/DateTime/Locale/aa_ER.pm", - "version" : 0 - }, - "DateTime::Locale::aa_ER_SAAHO" : { - "file" : "lib/DateTime/Locale/aa_ER_SAAHO.pm", - "version" : 0 - }, - "DateTime::Locale::aa_ET" : { - "file" : "lib/DateTime/Locale/aa_ET.pm", - "version" : 0 - }, - "DateTime::Locale::af" : { - "file" : "lib/DateTime/Locale/af.pm", - "version" : 0 - }, - "DateTime::Locale::af_NA" : { - "file" : "lib/DateTime/Locale/af_NA.pm", - "version" : 0 - }, - "DateTime::Locale::af_ZA" : { - "file" : "lib/DateTime/Locale/af_ZA.pm", - "version" : 0 - }, - "DateTime::Locale::ak" : { - "file" : "lib/DateTime/Locale/ak.pm", - "version" : 0 - }, - "DateTime::Locale::ak_GH" : { - "file" : "lib/DateTime/Locale/ak_GH.pm", - "version" : 0 - }, - "DateTime::Locale::am" : { - "file" : "lib/DateTime/Locale/am.pm", - "version" : 0 - }, - "DateTime::Locale::am_ET" : { - "file" : "lib/DateTime/Locale/am_ET.pm", - "version" : 0 - }, - "DateTime::Locale::ar" : { - "file" : "lib/DateTime/Locale/ar.pm", - "version" : 0 - }, - "DateTime::Locale::ar_AE" : { - "file" : "lib/DateTime/Locale/ar_AE.pm", - "version" : 0 - }, - "DateTime::Locale::ar_BH" : { - "file" : "lib/DateTime/Locale/ar_BH.pm", - "version" : 0 - }, - "DateTime::Locale::ar_DZ" : { - "file" : "lib/DateTime/Locale/ar_DZ.pm", - "version" : 0 - }, - "DateTime::Locale::ar_EG" : { - "file" : "lib/DateTime/Locale/ar_EG.pm", - "version" : 0 - }, - "DateTime::Locale::ar_IQ" : { - "file" : "lib/DateTime/Locale/ar_IQ.pm", - "version" : 0 - }, - "DateTime::Locale::ar_JO" : { - "file" : "lib/DateTime/Locale/ar_JO.pm", - "version" : 0 - }, - "DateTime::Locale::ar_KW" : { - "file" : "lib/DateTime/Locale/ar_KW.pm", - "version" : 0 - }, - "DateTime::Locale::ar_LB" : { - "file" : "lib/DateTime/Locale/ar_LB.pm", - "version" : 0 - }, - "DateTime::Locale::ar_LY" : { - "file" : "lib/DateTime/Locale/ar_LY.pm", - "version" : 0 - }, - "DateTime::Locale::ar_MA" : { - "file" : "lib/DateTime/Locale/ar_MA.pm", - "version" : 0 - }, - "DateTime::Locale::ar_OM" : { - "file" : "lib/DateTime/Locale/ar_OM.pm", - "version" : 0 - }, - "DateTime::Locale::ar_QA" : { - "file" : "lib/DateTime/Locale/ar_QA.pm", - "version" : 0 - }, - "DateTime::Locale::ar_SA" : { - "file" : "lib/DateTime/Locale/ar_SA.pm", - "version" : 0 - }, - "DateTime::Locale::ar_SD" : { - "file" : "lib/DateTime/Locale/ar_SD.pm", - "version" : 0 - }, - "DateTime::Locale::ar_SY" : { - "file" : "lib/DateTime/Locale/ar_SY.pm", - "version" : 0 - }, - "DateTime::Locale::ar_TN" : { - "file" : "lib/DateTime/Locale/ar_TN.pm", - "version" : 0 - }, - "DateTime::Locale::ar_YE" : { - "file" : "lib/DateTime/Locale/ar_YE.pm", - "version" : 0 - }, - "DateTime::Locale::as" : { - "file" : "lib/DateTime/Locale/as.pm", - "version" : 0 - }, - "DateTime::Locale::as_IN" : { - "file" : "lib/DateTime/Locale/as_IN.pm", - "version" : 0 - }, - "DateTime::Locale::az" : { - "file" : "lib/DateTime/Locale/az.pm", - "version" : 0 - }, - "DateTime::Locale::az_AZ" : { - "file" : "lib/DateTime/Locale/az_AZ.pm", - "version" : 0 - }, - "DateTime::Locale::az_Cyrl" : { - "file" : "lib/DateTime/Locale/az_Cyrl.pm", - "version" : 0 - }, - "DateTime::Locale::az_Cyrl_AZ" : { - "file" : "lib/DateTime/Locale/az_Cyrl_AZ.pm", - "version" : 0 - }, - "DateTime::Locale::az_Latn" : { - "file" : "lib/DateTime/Locale/az_Latn.pm", - "version" : 0 - }, - "DateTime::Locale::az_Latn_AZ" : { - "file" : "lib/DateTime/Locale/az_Latn_AZ.pm", - "version" : 0 - }, - "DateTime::Locale::be" : { - "file" : "lib/DateTime/Locale/be.pm", - "version" : 0 - }, - "DateTime::Locale::be_BY" : { - "file" : "lib/DateTime/Locale/be_BY.pm", - "version" : 0 - }, - "DateTime::Locale::bg" : { - "file" : "lib/DateTime/Locale/bg.pm", - "version" : 0 - }, - "DateTime::Locale::bg_BG" : { - "file" : "lib/DateTime/Locale/bg_BG.pm", - "version" : 0 - }, - "DateTime::Locale::bn" : { - "file" : "lib/DateTime/Locale/bn.pm", - "version" : 0 - }, - "DateTime::Locale::bn_BD" : { - "file" : "lib/DateTime/Locale/bn_BD.pm", - "version" : 0 - }, - "DateTime::Locale::bn_IN" : { - "file" : "lib/DateTime/Locale/bn_IN.pm", - "version" : 0 - }, - "DateTime::Locale::bo" : { - "file" : "lib/DateTime/Locale/bo.pm", - "version" : 0 - }, - "DateTime::Locale::bo_CN" : { - "file" : "lib/DateTime/Locale/bo_CN.pm", - "version" : 0 - }, - "DateTime::Locale::bo_IN" : { - "file" : "lib/DateTime/Locale/bo_IN.pm", - "version" : 0 - }, - "DateTime::Locale::bs" : { - "file" : "lib/DateTime/Locale/bs.pm", - "version" : 0 - }, - "DateTime::Locale::bs_BA" : { - "file" : "lib/DateTime/Locale/bs_BA.pm", - "version" : 0 - }, - "DateTime::Locale::byn" : { - "file" : "lib/DateTime/Locale/byn.pm", - "version" : 0 - }, - "DateTime::Locale::byn_ER" : { - "file" : "lib/DateTime/Locale/byn_ER.pm", - "version" : 0 - }, - "DateTime::Locale::ca" : { - "file" : "lib/DateTime/Locale/ca.pm", - "version" : 0 - }, - "DateTime::Locale::ca_ES" : { - "file" : "lib/DateTime/Locale/ca_ES.pm", - "version" : 0 - }, - "DateTime::Locale::cch" : { - "file" : "lib/DateTime/Locale/cch.pm", - "version" : 0 - }, - "DateTime::Locale::cch_NG" : { - "file" : "lib/DateTime/Locale/cch_NG.pm", - "version" : 0 - }, - "DateTime::Locale::cop" : { - "file" : "lib/DateTime/Locale/cop.pm", - "version" : 0 - }, - "DateTime::Locale::cs" : { - "file" : "lib/DateTime/Locale/cs.pm", - "version" : 0 - }, - "DateTime::Locale::cs_CZ" : { - "file" : "lib/DateTime/Locale/cs_CZ.pm", - "version" : 0 - }, - "DateTime::Locale::cy" : { - "file" : "lib/DateTime/Locale/cy.pm", - "version" : 0 - }, - "DateTime::Locale::cy_GB" : { - "file" : "lib/DateTime/Locale/cy_GB.pm", - "version" : 0 - }, - "DateTime::Locale::da" : { - "file" : "lib/DateTime/Locale/da.pm", - "version" : 0 - }, - "DateTime::Locale::da_DK" : { - "file" : "lib/DateTime/Locale/da_DK.pm", - "version" : 0 - }, - "DateTime::Locale::de" : { - "file" : "lib/DateTime/Locale/de.pm", - "version" : 0 - }, - "DateTime::Locale::de_AT" : { - "file" : "lib/DateTime/Locale/de_AT.pm", - "version" : 0 - }, - "DateTime::Locale::de_BE" : { - "file" : "lib/DateTime/Locale/de_BE.pm", - "version" : 0 - }, - "DateTime::Locale::de_CH" : { - "file" : "lib/DateTime/Locale/de_CH.pm", - "version" : 0 - }, - "DateTime::Locale::de_DE" : { - "file" : "lib/DateTime/Locale/de_DE.pm", - "version" : 0 - }, - "DateTime::Locale::de_LI" : { - "file" : "lib/DateTime/Locale/de_LI.pm", - "version" : 0 - }, - "DateTime::Locale::de_LU" : { - "file" : "lib/DateTime/Locale/de_LU.pm", - "version" : 0 - }, - "DateTime::Locale::dv" : { - "file" : "lib/DateTime/Locale/dv.pm", - "version" : 0 - }, - "DateTime::Locale::dv_MV" : { - "file" : "lib/DateTime/Locale/dv_MV.pm", - "version" : 0 - }, - "DateTime::Locale::dz" : { - "file" : "lib/DateTime/Locale/dz.pm", - "version" : 0 - }, - "DateTime::Locale::dz_BT" : { - "file" : "lib/DateTime/Locale/dz_BT.pm", - "version" : 0 - }, - "DateTime::Locale::ee" : { - "file" : "lib/DateTime/Locale/ee.pm", - "version" : 0 - }, - "DateTime::Locale::ee_GH" : { - "file" : "lib/DateTime/Locale/ee_GH.pm", - "version" : 0 - }, - "DateTime::Locale::ee_TG" : { - "file" : "lib/DateTime/Locale/ee_TG.pm", - "version" : 0 - }, - "DateTime::Locale::el" : { - "file" : "lib/DateTime/Locale/el.pm", - "version" : 0 - }, - "DateTime::Locale::el_CY" : { - "file" : "lib/DateTime/Locale/el_CY.pm", - "version" : 0 - }, - "DateTime::Locale::el_GR" : { - "file" : "lib/DateTime/Locale/el_GR.pm", - "version" : 0 - }, - "DateTime::Locale::el_POLYTON" : { - "file" : "lib/DateTime/Locale/el_POLYTON.pm", - "version" : 0 - }, - "DateTime::Locale::en" : { - "file" : "lib/DateTime/Locale/en.pm", - "version" : 0 - }, - "DateTime::Locale::en_AS" : { - "file" : "lib/DateTime/Locale/en_AS.pm", - "version" : 0 - }, - "DateTime::Locale::en_AU" : { - "file" : "lib/DateTime/Locale/en_AU.pm", - "version" : 0 - }, - "DateTime::Locale::en_BE" : { - "file" : "lib/DateTime/Locale/en_BE.pm", - "version" : 0 - }, - "DateTime::Locale::en_BW" : { - "file" : "lib/DateTime/Locale/en_BW.pm", - "version" : 0 - }, - "DateTime::Locale::en_BZ" : { - "file" : "lib/DateTime/Locale/en_BZ.pm", - "version" : 0 - }, - "DateTime::Locale::en_CA" : { - "file" : "lib/DateTime/Locale/en_CA.pm", - "version" : 0 - }, - "DateTime::Locale::en_Dsrt" : { - "file" : "lib/DateTime/Locale/en_Dsrt.pm", - "version" : 0 - }, - "DateTime::Locale::en_Dsrt_US" : { - "file" : "lib/DateTime/Locale/en_Dsrt_US.pm", - "version" : 0 - }, - "DateTime::Locale::en_GB" : { - "file" : "lib/DateTime/Locale/en_GB.pm", - "version" : 0 - }, - "DateTime::Locale::en_GU" : { - "file" : "lib/DateTime/Locale/en_GU.pm", - "version" : 0 - }, - "DateTime::Locale::en_HK" : { - "file" : "lib/DateTime/Locale/en_HK.pm", - "version" : 0 - }, - "DateTime::Locale::en_IE" : { - "file" : "lib/DateTime/Locale/en_IE.pm", - "version" : 0 - }, - "DateTime::Locale::en_IN" : { - "file" : "lib/DateTime/Locale/en_IN.pm", - "version" : 0 - }, - "DateTime::Locale::en_JM" : { - "file" : "lib/DateTime/Locale/en_JM.pm", - "version" : 0 - }, - "DateTime::Locale::en_MH" : { - "file" : "lib/DateTime/Locale/en_MH.pm", - "version" : 0 - }, - "DateTime::Locale::en_MP" : { - "file" : "lib/DateTime/Locale/en_MP.pm", - "version" : 0 - }, - "DateTime::Locale::en_MT" : { - "file" : "lib/DateTime/Locale/en_MT.pm", - "version" : 0 - }, - "DateTime::Locale::en_NA" : { - "file" : "lib/DateTime/Locale/en_NA.pm", - "version" : 0 - }, - "DateTime::Locale::en_NZ" : { - "file" : "lib/DateTime/Locale/en_NZ.pm", - "version" : 0 - }, - "DateTime::Locale::en_PH" : { - "file" : "lib/DateTime/Locale/en_PH.pm", - "version" : 0 - }, - "DateTime::Locale::en_PK" : { - "file" : "lib/DateTime/Locale/en_PK.pm", - "version" : 0 - }, - "DateTime::Locale::en_SG" : { - "file" : "lib/DateTime/Locale/en_SG.pm", - "version" : 0 - }, - "DateTime::Locale::en_Shaw" : { - "file" : "lib/DateTime/Locale/en_Shaw.pm", - "version" : 0 - }, - "DateTime::Locale::en_TT" : { - "file" : "lib/DateTime/Locale/en_TT.pm", - "version" : 0 - }, - "DateTime::Locale::en_UM" : { - "file" : "lib/DateTime/Locale/en_UM.pm", - "version" : 0 - }, - "DateTime::Locale::en_US" : { - "file" : "lib/DateTime/Locale/en_US.pm", - "version" : 0 - }, - "DateTime::Locale::en_US_POSIX" : { - "file" : "lib/DateTime/Locale/en_US_POSIX.pm", - "version" : 0 - }, - "DateTime::Locale::en_VI" : { - "file" : "lib/DateTime/Locale/en_VI.pm", - "version" : 0 - }, - "DateTime::Locale::en_ZA" : { - "file" : "lib/DateTime/Locale/en_ZA.pm", - "version" : 0 - }, - "DateTime::Locale::en_ZW" : { - "file" : "lib/DateTime/Locale/en_ZW.pm", - "version" : 0 - }, - "DateTime::Locale::eo" : { - "file" : "lib/DateTime/Locale/eo.pm", - "version" : 0 - }, - "DateTime::Locale::es" : { - "file" : "lib/DateTime/Locale/es.pm", - "version" : 0 - }, - "DateTime::Locale::es_AR" : { - "file" : "lib/DateTime/Locale/es_AR.pm", - "version" : 0 - }, - "DateTime::Locale::es_BO" : { - "file" : "lib/DateTime/Locale/es_BO.pm", - "version" : 0 - }, - "DateTime::Locale::es_CL" : { - "file" : "lib/DateTime/Locale/es_CL.pm", - "version" : 0 - }, - "DateTime::Locale::es_CO" : { - "file" : "lib/DateTime/Locale/es_CO.pm", - "version" : 0 - }, - "DateTime::Locale::es_CR" : { - "file" : "lib/DateTime/Locale/es_CR.pm", - "version" : 0 - }, - "DateTime::Locale::es_DO" : { - "file" : "lib/DateTime/Locale/es_DO.pm", - "version" : 0 - }, - "DateTime::Locale::es_EC" : { - "file" : "lib/DateTime/Locale/es_EC.pm", - "version" : 0 - }, - "DateTime::Locale::es_ES" : { - "file" : "lib/DateTime/Locale/es_ES.pm", - "version" : 0 - }, - "DateTime::Locale::es_GT" : { - "file" : "lib/DateTime/Locale/es_GT.pm", - "version" : 0 - }, - "DateTime::Locale::es_HN" : { - "file" : "lib/DateTime/Locale/es_HN.pm", - "version" : 0 - }, - "DateTime::Locale::es_MX" : { - "file" : "lib/DateTime/Locale/es_MX.pm", - "version" : 0 - }, - "DateTime::Locale::es_NI" : { - "file" : "lib/DateTime/Locale/es_NI.pm", - "version" : 0 - }, - "DateTime::Locale::es_PA" : { - "file" : "lib/DateTime/Locale/es_PA.pm", - "version" : 0 - }, - "DateTime::Locale::es_PE" : { - "file" : "lib/DateTime/Locale/es_PE.pm", - "version" : 0 - }, - "DateTime::Locale::es_PR" : { - "file" : "lib/DateTime/Locale/es_PR.pm", - "version" : 0 - }, - "DateTime::Locale::es_PY" : { - "file" : "lib/DateTime/Locale/es_PY.pm", - "version" : 0 - }, - "DateTime::Locale::es_SV" : { - "file" : "lib/DateTime/Locale/es_SV.pm", - "version" : 0 - }, - "DateTime::Locale::es_US" : { - "file" : "lib/DateTime/Locale/es_US.pm", - "version" : 0 - }, - "DateTime::Locale::es_UY" : { - "file" : "lib/DateTime/Locale/es_UY.pm", - "version" : 0 - }, - "DateTime::Locale::es_VE" : { - "file" : "lib/DateTime/Locale/es_VE.pm", - "version" : 0 - }, - "DateTime::Locale::et" : { - "file" : "lib/DateTime/Locale/et.pm", - "version" : 0 - }, - "DateTime::Locale::et_EE" : { - "file" : "lib/DateTime/Locale/et_EE.pm", - "version" : 0 - }, - "DateTime::Locale::eu" : { - "file" : "lib/DateTime/Locale/eu.pm", - "version" : 0 - }, - "DateTime::Locale::eu_ES" : { - "file" : "lib/DateTime/Locale/eu_ES.pm", - "version" : 0 - }, - "DateTime::Locale::fa" : { - "file" : "lib/DateTime/Locale/fa.pm", - "version" : 0 - }, - "DateTime::Locale::fa_AF" : { - "file" : "lib/DateTime/Locale/fa_AF.pm", - "version" : 0 - }, - "DateTime::Locale::fa_IR" : { - "file" : "lib/DateTime/Locale/fa_IR.pm", - "version" : 0 - }, - "DateTime::Locale::fi" : { - "file" : "lib/DateTime/Locale/fi.pm", - "version" : 0 - }, - "DateTime::Locale::fi_FI" : { - "file" : "lib/DateTime/Locale/fi_FI.pm", - "version" : 0 - }, - "DateTime::Locale::fil" : { - "file" : "lib/DateTime/Locale/fil.pm", - "version" : 0 - }, - "DateTime::Locale::fil_PH" : { - "file" : "lib/DateTime/Locale/fil_PH.pm", - "version" : 0 - }, - "DateTime::Locale::fo" : { - "file" : "lib/DateTime/Locale/fo.pm", - "version" : 0 - }, - "DateTime::Locale::fo_FO" : { - "file" : "lib/DateTime/Locale/fo_FO.pm", - "version" : 0 - }, - "DateTime::Locale::fr" : { - "file" : "lib/DateTime/Locale/fr.pm", - "version" : 0 - }, - "DateTime::Locale::fr_BE" : { - "file" : "lib/DateTime/Locale/fr_BE.pm", - "version" : 0 - }, - "DateTime::Locale::fr_CA" : { - "file" : "lib/DateTime/Locale/fr_CA.pm", - "version" : 0 - }, - "DateTime::Locale::fr_CH" : { - "file" : "lib/DateTime/Locale/fr_CH.pm", - "version" : 0 - }, - "DateTime::Locale::fr_FR" : { - "file" : "lib/DateTime/Locale/fr_FR.pm", - "version" : 0 - }, - "DateTime::Locale::fr_LU" : { - "file" : "lib/DateTime/Locale/fr_LU.pm", - "version" : 0 - }, - "DateTime::Locale::fr_MC" : { - "file" : "lib/DateTime/Locale/fr_MC.pm", - "version" : 0 - }, - "DateTime::Locale::fr_SN" : { - "file" : "lib/DateTime/Locale/fr_SN.pm", - "version" : 0 - }, - "DateTime::Locale::fur" : { - "file" : "lib/DateTime/Locale/fur.pm", - "version" : 0 - }, - "DateTime::Locale::fur_IT" : { - "file" : "lib/DateTime/Locale/fur_IT.pm", - "version" : 0 - }, - "DateTime::Locale::ga" : { - "file" : "lib/DateTime/Locale/ga.pm", - "version" : 0 - }, - "DateTime::Locale::ga_IE" : { - "file" : "lib/DateTime/Locale/ga_IE.pm", - "version" : 0 - }, - "DateTime::Locale::gaa" : { - "file" : "lib/DateTime/Locale/gaa.pm", - "version" : 0 - }, - "DateTime::Locale::gaa_GH" : { - "file" : "lib/DateTime/Locale/gaa_GH.pm", - "version" : 0 - }, - "DateTime::Locale::gez" : { - "file" : "lib/DateTime/Locale/gez.pm", - "version" : 0 - }, - "DateTime::Locale::gez_ER" : { - "file" : "lib/DateTime/Locale/gez_ER.pm", - "version" : 0 - }, - "DateTime::Locale::gez_ET" : { - "file" : "lib/DateTime/Locale/gez_ET.pm", - "version" : 0 - }, - "DateTime::Locale::gl" : { - "file" : "lib/DateTime/Locale/gl.pm", - "version" : 0 - }, - "DateTime::Locale::gl_ES" : { - "file" : "lib/DateTime/Locale/gl_ES.pm", - "version" : 0 - }, - "DateTime::Locale::gsw" : { - "file" : "lib/DateTime/Locale/gsw.pm", - "version" : 0 - }, - "DateTime::Locale::gsw_CH" : { - "file" : "lib/DateTime/Locale/gsw_CH.pm", - "version" : 0 - }, - "DateTime::Locale::gu" : { - "file" : "lib/DateTime/Locale/gu.pm", - "version" : 0 - }, - "DateTime::Locale::gu_IN" : { - "file" : "lib/DateTime/Locale/gu_IN.pm", - "version" : 0 - }, - "DateTime::Locale::gv" : { - "file" : "lib/DateTime/Locale/gv.pm", - "version" : 0 - }, - "DateTime::Locale::gv_GB" : { - "file" : "lib/DateTime/Locale/gv_GB.pm", - "version" : 0 - }, - "DateTime::Locale::ha" : { - "file" : "lib/DateTime/Locale/ha.pm", - "version" : 0 - }, - "DateTime::Locale::ha_Arab" : { - "file" : "lib/DateTime/Locale/ha_Arab.pm", - "version" : 0 - }, - "DateTime::Locale::ha_Arab_NG" : { - "file" : "lib/DateTime/Locale/ha_Arab_NG.pm", - "version" : 0 - }, - "DateTime::Locale::ha_Arab_SD" : { - "file" : "lib/DateTime/Locale/ha_Arab_SD.pm", - "version" : 0 - }, - "DateTime::Locale::ha_GH" : { - "file" : "lib/DateTime/Locale/ha_GH.pm", - "version" : 0 - }, - "DateTime::Locale::ha_Latn" : { - "file" : "lib/DateTime/Locale/ha_Latn.pm", - "version" : 0 - }, - "DateTime::Locale::ha_Latn_GH" : { - "file" : "lib/DateTime/Locale/ha_Latn_GH.pm", - "version" : 0 - }, - "DateTime::Locale::ha_Latn_NE" : { - "file" : "lib/DateTime/Locale/ha_Latn_NE.pm", - "version" : 0 - }, - "DateTime::Locale::ha_Latn_NG" : { - "file" : "lib/DateTime/Locale/ha_Latn_NG.pm", - "version" : 0 - }, - "DateTime::Locale::ha_NE" : { - "file" : "lib/DateTime/Locale/ha_NE.pm", - "version" : 0 - }, - "DateTime::Locale::ha_NG" : { - "file" : "lib/DateTime/Locale/ha_NG.pm", - "version" : 0 - }, - "DateTime::Locale::ha_SD" : { - "file" : "lib/DateTime/Locale/ha_SD.pm", - "version" : 0 - }, - "DateTime::Locale::haw" : { - "file" : "lib/DateTime/Locale/haw.pm", - "version" : 0 - }, - "DateTime::Locale::haw_US" : { - "file" : "lib/DateTime/Locale/haw_US.pm", - "version" : 0 - }, - "DateTime::Locale::he" : { - "file" : "lib/DateTime/Locale/he.pm", - "version" : 0 - }, - "DateTime::Locale::he_IL" : { - "file" : "lib/DateTime/Locale/he_IL.pm", - "version" : 0 - }, - "DateTime::Locale::hi" : { - "file" : "lib/DateTime/Locale/hi.pm", - "version" : 0 - }, - "DateTime::Locale::hi_IN" : { - "file" : "lib/DateTime/Locale/hi_IN.pm", - "version" : 0 - }, - "DateTime::Locale::hr" : { - "file" : "lib/DateTime/Locale/hr.pm", - "version" : 0 - }, - "DateTime::Locale::hr_HR" : { - "file" : "lib/DateTime/Locale/hr_HR.pm", - "version" : 0 - }, - "DateTime::Locale::hu" : { - "file" : "lib/DateTime/Locale/hu.pm", - "version" : 0 - }, - "DateTime::Locale::hu_HU" : { - "file" : "lib/DateTime/Locale/hu_HU.pm", - "version" : 0 - }, - "DateTime::Locale::hy" : { - "file" : "lib/DateTime/Locale/hy.pm", - "version" : 0 - }, - "DateTime::Locale::hy_AM" : { - "file" : "lib/DateTime/Locale/hy_AM.pm", - "version" : 0 - }, - "DateTime::Locale::hy_AM_REVISED" : { - "file" : "lib/DateTime/Locale/hy_AM_REVISED.pm", - "version" : 0 - }, - "DateTime::Locale::ia" : { - "file" : "lib/DateTime/Locale/ia.pm", - "version" : 0 - }, - "DateTime::Locale::id" : { - "file" : "lib/DateTime/Locale/id.pm", - "version" : 0 - }, - "DateTime::Locale::id_ID" : { - "file" : "lib/DateTime/Locale/id_ID.pm", - "version" : 0 - }, - "DateTime::Locale::ig" : { - "file" : "lib/DateTime/Locale/ig.pm", - "version" : 0 - }, - "DateTime::Locale::ig_NG" : { - "file" : "lib/DateTime/Locale/ig_NG.pm", - "version" : 0 - }, - "DateTime::Locale::ii" : { - "file" : "lib/DateTime/Locale/ii.pm", - "version" : 0 - }, - "DateTime::Locale::ii_CN" : { - "file" : "lib/DateTime/Locale/ii_CN.pm", - "version" : 0 - }, - "DateTime::Locale::is" : { - "file" : "lib/DateTime/Locale/is.pm", - "version" : 0 - }, - "DateTime::Locale::is_IS" : { - "file" : "lib/DateTime/Locale/is_IS.pm", - "version" : 0 - }, - "DateTime::Locale::it" : { - "file" : "lib/DateTime/Locale/it.pm", - "version" : 0 - }, - "DateTime::Locale::it_CH" : { - "file" : "lib/DateTime/Locale/it_CH.pm", - "version" : 0 - }, - "DateTime::Locale::it_IT" : { - "file" : "lib/DateTime/Locale/it_IT.pm", - "version" : 0 - }, - "DateTime::Locale::iu" : { - "file" : "lib/DateTime/Locale/iu.pm", - "version" : 0 - }, - "DateTime::Locale::ja" : { - "file" : "lib/DateTime/Locale/ja.pm", - "version" : 0 - }, - "DateTime::Locale::ja_JP" : { - "file" : "lib/DateTime/Locale/ja_JP.pm", - "version" : 0 - }, - "DateTime::Locale::ka" : { - "file" : "lib/DateTime/Locale/ka.pm", - "version" : 0 - }, - "DateTime::Locale::ka_GE" : { - "file" : "lib/DateTime/Locale/ka_GE.pm", - "version" : 0 - }, - "DateTime::Locale::kaj" : { - "file" : "lib/DateTime/Locale/kaj.pm", - "version" : 0 - }, - "DateTime::Locale::kaj_NG" : { - "file" : "lib/DateTime/Locale/kaj_NG.pm", - "version" : 0 - }, - "DateTime::Locale::kam" : { - "file" : "lib/DateTime/Locale/kam.pm", - "version" : 0 - }, - "DateTime::Locale::kam_KE" : { - "file" : "lib/DateTime/Locale/kam_KE.pm", - "version" : 0 - }, - "DateTime::Locale::kcg" : { - "file" : "lib/DateTime/Locale/kcg.pm", - "version" : 0 - }, - "DateTime::Locale::kcg_NG" : { - "file" : "lib/DateTime/Locale/kcg_NG.pm", - "version" : 0 - }, - "DateTime::Locale::kfo" : { - "file" : "lib/DateTime/Locale/kfo.pm", - "version" : 0 - }, - "DateTime::Locale::kfo_CI" : { - "file" : "lib/DateTime/Locale/kfo_CI.pm", - "version" : 0 - }, - "DateTime::Locale::kk" : { - "file" : "lib/DateTime/Locale/kk.pm", - "version" : 0 - }, - "DateTime::Locale::kk_Cyrl" : { - "file" : "lib/DateTime/Locale/kk_Cyrl.pm", - "version" : 0 - }, - "DateTime::Locale::kk_Cyrl_KZ" : { - "file" : "lib/DateTime/Locale/kk_Cyrl_KZ.pm", - "version" : 0 - }, - "DateTime::Locale::kk_KZ" : { - "file" : "lib/DateTime/Locale/kk_KZ.pm", - "version" : 0 - }, - "DateTime::Locale::kl" : { - "file" : "lib/DateTime/Locale/kl.pm", - "version" : 0 - }, - "DateTime::Locale::kl_GL" : { - "file" : "lib/DateTime/Locale/kl_GL.pm", - "version" : 0 - }, - "DateTime::Locale::km" : { - "file" : "lib/DateTime/Locale/km.pm", - "version" : 0 - }, - "DateTime::Locale::km_KH" : { - "file" : "lib/DateTime/Locale/km_KH.pm", - "version" : 0 - }, - "DateTime::Locale::kn" : { - "file" : "lib/DateTime/Locale/kn.pm", - "version" : 0 - }, - "DateTime::Locale::kn_IN" : { - "file" : "lib/DateTime/Locale/kn_IN.pm", - "version" : 0 - }, - "DateTime::Locale::ko" : { - "file" : "lib/DateTime/Locale/ko.pm", - "version" : 0 - }, - "DateTime::Locale::ko_KR" : { - "file" : "lib/DateTime/Locale/ko_KR.pm", - "version" : 0 - }, - "DateTime::Locale::kok" : { - "file" : "lib/DateTime/Locale/kok.pm", - "version" : 0 - }, - "DateTime::Locale::kok_IN" : { - "file" : "lib/DateTime/Locale/kok_IN.pm", - "version" : 0 - }, - "DateTime::Locale::kpe" : { - "file" : "lib/DateTime/Locale/kpe.pm", - "version" : 0 - }, - "DateTime::Locale::kpe_GN" : { - "file" : "lib/DateTime/Locale/kpe_GN.pm", - "version" : 0 - }, - "DateTime::Locale::kpe_LR" : { - "file" : "lib/DateTime/Locale/kpe_LR.pm", - "version" : 0 - }, - "DateTime::Locale::ku" : { - "file" : "lib/DateTime/Locale/ku.pm", - "version" : 0 - }, - "DateTime::Locale::ku_Arab" : { - "file" : "lib/DateTime/Locale/ku_Arab.pm", - "version" : 0 - }, - "DateTime::Locale::ku_Arab_IQ" : { - "file" : "lib/DateTime/Locale/ku_Arab_IQ.pm", - "version" : 0 - }, - "DateTime::Locale::ku_Arab_IR" : { - "file" : "lib/DateTime/Locale/ku_Arab_IR.pm", - "version" : 0 - }, - "DateTime::Locale::ku_Arab_SY" : { - "file" : "lib/DateTime/Locale/ku_Arab_SY.pm", - "version" : 0 - }, - "DateTime::Locale::ku_IQ" : { - "file" : "lib/DateTime/Locale/ku_IQ.pm", - "version" : 0 - }, - "DateTime::Locale::ku_IR" : { - "file" : "lib/DateTime/Locale/ku_IR.pm", - "version" : 0 - }, - "DateTime::Locale::ku_Latn" : { - "file" : "lib/DateTime/Locale/ku_Latn.pm", - "version" : 0 - }, - "DateTime::Locale::ku_Latn_TR" : { - "file" : "lib/DateTime/Locale/ku_Latn_TR.pm", - "version" : 0 - }, - "DateTime::Locale::ku_SY" : { - "file" : "lib/DateTime/Locale/ku_SY.pm", - "version" : 0 - }, - "DateTime::Locale::ku_TR" : { - "file" : "lib/DateTime/Locale/ku_TR.pm", - "version" : 0 - }, - "DateTime::Locale::kw" : { - "file" : "lib/DateTime/Locale/kw.pm", - "version" : 0 - }, - "DateTime::Locale::kw_GB" : { - "file" : "lib/DateTime/Locale/kw_GB.pm", - "version" : 0 - }, - "DateTime::Locale::ky" : { - "file" : "lib/DateTime/Locale/ky.pm", - "version" : 0 - }, - "DateTime::Locale::ky_KG" : { - "file" : "lib/DateTime/Locale/ky_KG.pm", - "version" : 0 - }, - "DateTime::Locale::ln" : { - "file" : "lib/DateTime/Locale/ln.pm", - "version" : 0 - }, - "DateTime::Locale::ln_CD" : { - "file" : "lib/DateTime/Locale/ln_CD.pm", - "version" : 0 - }, - "DateTime::Locale::ln_CG" : { - "file" : "lib/DateTime/Locale/ln_CG.pm", - "version" : 0 - }, - "DateTime::Locale::lo" : { - "file" : "lib/DateTime/Locale/lo.pm", - "version" : 0 - }, - "DateTime::Locale::lo_LA" : { - "file" : "lib/DateTime/Locale/lo_LA.pm", - "version" : 0 - }, - "DateTime::Locale::lt" : { - "file" : "lib/DateTime/Locale/lt.pm", - "version" : 0 - }, - "DateTime::Locale::lt_LT" : { - "file" : "lib/DateTime/Locale/lt_LT.pm", - "version" : 0 - }, - "DateTime::Locale::lv" : { - "file" : "lib/DateTime/Locale/lv.pm", - "version" : 0 - }, - "DateTime::Locale::lv_LV" : { - "file" : "lib/DateTime/Locale/lv_LV.pm", - "version" : 0 - }, - "DateTime::Locale::mk" : { - "file" : "lib/DateTime/Locale/mk.pm", - "version" : 0 - }, - "DateTime::Locale::mk_MK" : { - "file" : "lib/DateTime/Locale/mk_MK.pm", - "version" : 0 - }, - "DateTime::Locale::ml" : { - "file" : "lib/DateTime/Locale/ml.pm", - "version" : 0 - }, - "DateTime::Locale::ml_IN" : { - "file" : "lib/DateTime/Locale/ml_IN.pm", - "version" : 0 - }, - "DateTime::Locale::mn" : { - "file" : "lib/DateTime/Locale/mn.pm", - "version" : 0 - }, - "DateTime::Locale::mn_CN" : { - "file" : "lib/DateTime/Locale/mn_CN.pm", - "version" : 0 - }, - "DateTime::Locale::mn_Cyrl" : { - "file" : "lib/DateTime/Locale/mn_Cyrl.pm", - "version" : 0 - }, - "DateTime::Locale::mn_Cyrl_MN" : { - "file" : "lib/DateTime/Locale/mn_Cyrl_MN.pm", - "version" : 0 - }, - "DateTime::Locale::mn_MN" : { - "file" : "lib/DateTime/Locale/mn_MN.pm", - "version" : 0 - }, - "DateTime::Locale::mn_Mong" : { - "file" : "lib/DateTime/Locale/mn_Mong.pm", - "version" : 0 - }, - "DateTime::Locale::mn_Mong_CN" : { - "file" : "lib/DateTime/Locale/mn_Mong_CN.pm", - "version" : 0 - }, - "DateTime::Locale::mo" : { - "file" : "lib/DateTime/Locale/mo.pm", - "version" : 0 - }, - "DateTime::Locale::mr" : { - "file" : "lib/DateTime/Locale/mr.pm", - "version" : 0 - }, - "DateTime::Locale::mr_IN" : { - "file" : "lib/DateTime/Locale/mr_IN.pm", - "version" : 0 - }, - "DateTime::Locale::ms" : { - "file" : "lib/DateTime/Locale/ms.pm", - "version" : 0 - }, - "DateTime::Locale::ms_BN" : { - "file" : "lib/DateTime/Locale/ms_BN.pm", - "version" : 0 - }, - "DateTime::Locale::ms_MY" : { - "file" : "lib/DateTime/Locale/ms_MY.pm", - "version" : 0 - }, - "DateTime::Locale::mt" : { - "file" : "lib/DateTime/Locale/mt.pm", - "version" : 0 - }, - "DateTime::Locale::mt_MT" : { - "file" : "lib/DateTime/Locale/mt_MT.pm", - "version" : 0 - }, - "DateTime::Locale::my" : { - "file" : "lib/DateTime/Locale/my.pm", - "version" : 0 - }, - "DateTime::Locale::my_MM" : { - "file" : "lib/DateTime/Locale/my_MM.pm", - "version" : 0 - }, - "DateTime::Locale::nb" : { - "file" : "lib/DateTime/Locale/nb.pm", - "version" : 0 - }, - "DateTime::Locale::nb_NO" : { - "file" : "lib/DateTime/Locale/nb_NO.pm", - "version" : 0 - }, - "DateTime::Locale::nds" : { - "file" : "lib/DateTime/Locale/nds.pm", - "version" : 0 - }, - "DateTime::Locale::nds_DE" : { - "file" : "lib/DateTime/Locale/nds_DE.pm", - "version" : 0 - }, - "DateTime::Locale::ne" : { - "file" : "lib/DateTime/Locale/ne.pm", - "version" : 0 - }, - "DateTime::Locale::ne_IN" : { - "file" : "lib/DateTime/Locale/ne_IN.pm", - "version" : 0 - }, - "DateTime::Locale::ne_NP" : { - "file" : "lib/DateTime/Locale/ne_NP.pm", - "version" : 0 - }, - "DateTime::Locale::nl" : { - "file" : "lib/DateTime/Locale/nl.pm", - "version" : 0 - }, - "DateTime::Locale::nl_BE" : { - "file" : "lib/DateTime/Locale/nl_BE.pm", - "version" : 0 - }, - "DateTime::Locale::nl_NL" : { - "file" : "lib/DateTime/Locale/nl_NL.pm", - "version" : 0 - }, - "DateTime::Locale::nn" : { - "file" : "lib/DateTime/Locale/nn.pm", - "version" : 0 - }, - "DateTime::Locale::nn_NO" : { - "file" : "lib/DateTime/Locale/nn_NO.pm", - "version" : 0 - }, - "DateTime::Locale::no" : { - "file" : "lib/DateTime/Locale/no.pm", - "version" : 0 - }, - "DateTime::Locale::nr" : { - "file" : "lib/DateTime/Locale/nr.pm", - "version" : 0 - }, - "DateTime::Locale::nr_ZA" : { - "file" : "lib/DateTime/Locale/nr_ZA.pm", - "version" : 0 - }, - "DateTime::Locale::nso" : { - "file" : "lib/DateTime/Locale/nso.pm", - "version" : 0 - }, - "DateTime::Locale::nso_ZA" : { - "file" : "lib/DateTime/Locale/nso_ZA.pm", - "version" : 0 - }, - "DateTime::Locale::ny" : { - "file" : "lib/DateTime/Locale/ny.pm", - "version" : 0 - }, - "DateTime::Locale::ny_MW" : { - "file" : "lib/DateTime/Locale/ny_MW.pm", - "version" : 0 - }, - "DateTime::Locale::oc" : { - "file" : "lib/DateTime/Locale/oc.pm", - "version" : 0 - }, - "DateTime::Locale::oc_FR" : { - "file" : "lib/DateTime/Locale/oc_FR.pm", - "version" : 0 - }, - "DateTime::Locale::om" : { - "file" : "lib/DateTime/Locale/om.pm", - "version" : 0 - }, - "DateTime::Locale::om_ET" : { - "file" : "lib/DateTime/Locale/om_ET.pm", - "version" : 0 - }, - "DateTime::Locale::om_KE" : { - "file" : "lib/DateTime/Locale/om_KE.pm", - "version" : 0 - }, - "DateTime::Locale::or" : { - "file" : "lib/DateTime/Locale/or.pm", - "version" : 0 - }, - "DateTime::Locale::or_IN" : { - "file" : "lib/DateTime/Locale/or_IN.pm", - "version" : 0 - }, - "DateTime::Locale::pa" : { - "file" : "lib/DateTime/Locale/pa.pm", - "version" : 0 - }, - "DateTime::Locale::pa_Arab" : { - "file" : "lib/DateTime/Locale/pa_Arab.pm", - "version" : 0 - }, - "DateTime::Locale::pa_Arab_PK" : { - "file" : "lib/DateTime/Locale/pa_Arab_PK.pm", - "version" : 0 - }, - "DateTime::Locale::pa_Guru" : { - "file" : "lib/DateTime/Locale/pa_Guru.pm", - "version" : 0 - }, - "DateTime::Locale::pa_Guru_IN" : { - "file" : "lib/DateTime/Locale/pa_Guru_IN.pm", - "version" : 0 - }, - "DateTime::Locale::pa_IN" : { - "file" : "lib/DateTime/Locale/pa_IN.pm", - "version" : 0 - }, - "DateTime::Locale::pa_PK" : { - "file" : "lib/DateTime/Locale/pa_PK.pm", - "version" : 0 - }, - "DateTime::Locale::pl" : { - "file" : "lib/DateTime/Locale/pl.pm", - "version" : 0 - }, - "DateTime::Locale::pl_PL" : { - "file" : "lib/DateTime/Locale/pl_PL.pm", - "version" : 0 - }, - "DateTime::Locale::ps" : { - "file" : "lib/DateTime/Locale/ps.pm", - "version" : 0 - }, - "DateTime::Locale::ps_AF" : { - "file" : "lib/DateTime/Locale/ps_AF.pm", - "version" : 0 - }, - "DateTime::Locale::pt" : { - "file" : "lib/DateTime/Locale/pt.pm", - "version" : 0 - }, - "DateTime::Locale::pt_BR" : { - "file" : "lib/DateTime/Locale/pt_BR.pm", - "version" : 0 - }, - "DateTime::Locale::pt_PT" : { - "file" : "lib/DateTime/Locale/pt_PT.pm", - "version" : 0 - }, - "DateTime::Locale::ro" : { - "file" : "lib/DateTime/Locale/ro.pm", - "version" : 0 - }, - "DateTime::Locale::ro_MD" : { - "file" : "lib/DateTime/Locale/ro_MD.pm", - "version" : 0 - }, - "DateTime::Locale::ro_RO" : { - "file" : "lib/DateTime/Locale/ro_RO.pm", - "version" : 0 - }, - "DateTime::Locale::root" : { - "file" : "lib/DateTime/Locale/root.pm", - "version" : 0 - }, - "DateTime::Locale::ru" : { - "file" : "lib/DateTime/Locale/ru.pm", - "version" : 0 - }, - "DateTime::Locale::ru_RU" : { - "file" : "lib/DateTime/Locale/ru_RU.pm", - "version" : 0 - }, - "DateTime::Locale::ru_UA" : { - "file" : "lib/DateTime/Locale/ru_UA.pm", - "version" : 0 - }, - "DateTime::Locale::rw" : { - "file" : "lib/DateTime/Locale/rw.pm", - "version" : 0 - }, - "DateTime::Locale::rw_RW" : { - "file" : "lib/DateTime/Locale/rw_RW.pm", - "version" : 0 - }, - "DateTime::Locale::sa" : { - "file" : "lib/DateTime/Locale/sa.pm", - "version" : 0 - }, - "DateTime::Locale::sa_IN" : { - "file" : "lib/DateTime/Locale/sa_IN.pm", - "version" : 0 - }, - "DateTime::Locale::se" : { - "file" : "lib/DateTime/Locale/se.pm", - "version" : 0 - }, - "DateTime::Locale::se_FI" : { - "file" : "lib/DateTime/Locale/se_FI.pm", - "version" : 0 - }, - "DateTime::Locale::se_NO" : { - "file" : "lib/DateTime/Locale/se_NO.pm", - "version" : 0 - }, - "DateTime::Locale::sh" : { - "file" : "lib/DateTime/Locale/sh.pm", - "version" : 0 - }, - "DateTime::Locale::sh_BA" : { - "file" : "lib/DateTime/Locale/sh_BA.pm", - "version" : 0 - }, - "DateTime::Locale::sh_CS" : { - "file" : "lib/DateTime/Locale/sh_CS.pm", - "version" : 0 - }, - "DateTime::Locale::sh_YU" : { - "file" : "lib/DateTime/Locale/sh_YU.pm", - "version" : 0 - }, - "DateTime::Locale::si" : { - "file" : "lib/DateTime/Locale/si.pm", - "version" : 0 - }, - "DateTime::Locale::si_LK" : { - "file" : "lib/DateTime/Locale/si_LK.pm", - "version" : 0 - }, - "DateTime::Locale::sid" : { - "file" : "lib/DateTime/Locale/sid.pm", - "version" : 0 - }, - "DateTime::Locale::sid_ET" : { - "file" : "lib/DateTime/Locale/sid_ET.pm", - "version" : 0 - }, - "DateTime::Locale::sk" : { - "file" : "lib/DateTime/Locale/sk.pm", - "version" : 0 - }, - "DateTime::Locale::sk_SK" : { - "file" : "lib/DateTime/Locale/sk_SK.pm", - "version" : 0 - }, - "DateTime::Locale::sl" : { - "file" : "lib/DateTime/Locale/sl.pm", - "version" : 0 - }, - "DateTime::Locale::sl_SI" : { - "file" : "lib/DateTime/Locale/sl_SI.pm", - "version" : 0 - }, - "DateTime::Locale::so" : { - "file" : "lib/DateTime/Locale/so.pm", - "version" : 0 - }, - "DateTime::Locale::so_DJ" : { - "file" : "lib/DateTime/Locale/so_DJ.pm", - "version" : 0 - }, - "DateTime::Locale::so_ET" : { - "file" : "lib/DateTime/Locale/so_ET.pm", - "version" : 0 - }, - "DateTime::Locale::so_KE" : { - "file" : "lib/DateTime/Locale/so_KE.pm", - "version" : 0 - }, - "DateTime::Locale::so_SO" : { - "file" : "lib/DateTime/Locale/so_SO.pm", - "version" : 0 - }, - "DateTime::Locale::sq" : { - "file" : "lib/DateTime/Locale/sq.pm", - "version" : 0 - }, - "DateTime::Locale::sq_AL" : { - "file" : "lib/DateTime/Locale/sq_AL.pm", - "version" : 0 - }, - "DateTime::Locale::sr" : { - "file" : "lib/DateTime/Locale/sr.pm", - "version" : 0 - }, - "DateTime::Locale::sr_BA" : { - "file" : "lib/DateTime/Locale/sr_BA.pm", - "version" : 0 - }, - "DateTime::Locale::sr_CS" : { - "file" : "lib/DateTime/Locale/sr_CS.pm", - "version" : 0 - }, - "DateTime::Locale::sr_Cyrl" : { - "file" : "lib/DateTime/Locale/sr_Cyrl.pm", - "version" : 0 - }, - "DateTime::Locale::sr_Cyrl_BA" : { - "file" : "lib/DateTime/Locale/sr_Cyrl_BA.pm", - "version" : 0 - }, - "DateTime::Locale::sr_Cyrl_CS" : { - "file" : "lib/DateTime/Locale/sr_Cyrl_CS.pm", - "version" : 0 - }, - "DateTime::Locale::sr_Cyrl_ME" : { - "file" : "lib/DateTime/Locale/sr_Cyrl_ME.pm", - "version" : 0 - }, - "DateTime::Locale::sr_Cyrl_RS" : { - "file" : "lib/DateTime/Locale/sr_Cyrl_RS.pm", - "version" : 0 - }, - "DateTime::Locale::sr_Cyrl_YU" : { - "file" : "lib/DateTime/Locale/sr_Cyrl_YU.pm", - "version" : 0 - }, - "DateTime::Locale::sr_Latn" : { - "file" : "lib/DateTime/Locale/sr_Latn.pm", - "version" : 0 - }, - "DateTime::Locale::sr_Latn_BA" : { - "file" : "lib/DateTime/Locale/sr_Latn_BA.pm", - "version" : 0 - }, - "DateTime::Locale::sr_Latn_CS" : { - "file" : "lib/DateTime/Locale/sr_Latn_CS.pm", - "version" : 0 - }, - "DateTime::Locale::sr_Latn_ME" : { - "file" : "lib/DateTime/Locale/sr_Latn_ME.pm", - "version" : 0 - }, - "DateTime::Locale::sr_Latn_RS" : { - "file" : "lib/DateTime/Locale/sr_Latn_RS.pm", - "version" : 0 - }, - "DateTime::Locale::sr_Latn_YU" : { - "file" : "lib/DateTime/Locale/sr_Latn_YU.pm", - "version" : 0 - }, - "DateTime::Locale::sr_ME" : { - "file" : "lib/DateTime/Locale/sr_ME.pm", - "version" : 0 - }, - "DateTime::Locale::sr_RS" : { - "file" : "lib/DateTime/Locale/sr_RS.pm", - "version" : 0 - }, - "DateTime::Locale::sr_YU" : { - "file" : "lib/DateTime/Locale/sr_YU.pm", - "version" : 0 - }, - "DateTime::Locale::ss" : { - "file" : "lib/DateTime/Locale/ss.pm", - "version" : 0 - }, - "DateTime::Locale::ss_SZ" : { - "file" : "lib/DateTime/Locale/ss_SZ.pm", - "version" : 0 - }, - "DateTime::Locale::ss_ZA" : { - "file" : "lib/DateTime/Locale/ss_ZA.pm", - "version" : 0 - }, - "DateTime::Locale::st" : { - "file" : "lib/DateTime/Locale/st.pm", - "version" : 0 - }, - "DateTime::Locale::st_LS" : { - "file" : "lib/DateTime/Locale/st_LS.pm", - "version" : 0 - }, - "DateTime::Locale::st_ZA" : { - "file" : "lib/DateTime/Locale/st_ZA.pm", - "version" : 0 - }, - "DateTime::Locale::sv" : { - "file" : "lib/DateTime/Locale/sv.pm", - "version" : 0 - }, - "DateTime::Locale::sv_FI" : { - "file" : "lib/DateTime/Locale/sv_FI.pm", - "version" : 0 - }, - "DateTime::Locale::sv_SE" : { - "file" : "lib/DateTime/Locale/sv_SE.pm", - "version" : 0 - }, - "DateTime::Locale::sw" : { - "file" : "lib/DateTime/Locale/sw.pm", - "version" : 0 - }, - "DateTime::Locale::sw_KE" : { - "file" : "lib/DateTime/Locale/sw_KE.pm", - "version" : 0 - }, - "DateTime::Locale::sw_TZ" : { - "file" : "lib/DateTime/Locale/sw_TZ.pm", - "version" : 0 - }, - "DateTime::Locale::syr" : { - "file" : "lib/DateTime/Locale/syr.pm", - "version" : 0 - }, - "DateTime::Locale::syr_SY" : { - "file" : "lib/DateTime/Locale/syr_SY.pm", - "version" : 0 - }, - "DateTime::Locale::ta" : { - "file" : "lib/DateTime/Locale/ta.pm", - "version" : 0 - }, - "DateTime::Locale::ta_IN" : { - "file" : "lib/DateTime/Locale/ta_IN.pm", - "version" : 0 - }, - "DateTime::Locale::te" : { - "file" : "lib/DateTime/Locale/te.pm", - "version" : 0 - }, - "DateTime::Locale::te_IN" : { - "file" : "lib/DateTime/Locale/te_IN.pm", - "version" : 0 - }, - "DateTime::Locale::tg" : { - "file" : "lib/DateTime/Locale/tg.pm", - "version" : 0 - }, - "DateTime::Locale::tg_Cyrl" : { - "file" : "lib/DateTime/Locale/tg_Cyrl.pm", - "version" : 0 - }, - "DateTime::Locale::tg_Cyrl_TJ" : { - "file" : "lib/DateTime/Locale/tg_Cyrl_TJ.pm", - "version" : 0 - }, - "DateTime::Locale::tg_TJ" : { - "file" : "lib/DateTime/Locale/tg_TJ.pm", - "version" : 0 - }, - "DateTime::Locale::th" : { - "file" : "lib/DateTime/Locale/th.pm", - "version" : 0 - }, - "DateTime::Locale::th_TH" : { - "file" : "lib/DateTime/Locale/th_TH.pm", - "version" : 0 - }, - "DateTime::Locale::ti" : { - "file" : "lib/DateTime/Locale/ti.pm", - "version" : 0 - }, - "DateTime::Locale::ti_ER" : { - "file" : "lib/DateTime/Locale/ti_ER.pm", - "version" : 0 - }, - "DateTime::Locale::ti_ET" : { - "file" : "lib/DateTime/Locale/ti_ET.pm", - "version" : 0 - }, - "DateTime::Locale::tig" : { - "file" : "lib/DateTime/Locale/tig.pm", - "version" : 0 - }, - "DateTime::Locale::tig_ER" : { - "file" : "lib/DateTime/Locale/tig_ER.pm", - "version" : 0 - }, - "DateTime::Locale::tl" : { - "file" : "lib/DateTime/Locale/tl.pm", - "version" : 0 - }, - "DateTime::Locale::tn" : { - "file" : "lib/DateTime/Locale/tn.pm", - "version" : 0 - }, - "DateTime::Locale::tn_ZA" : { - "file" : "lib/DateTime/Locale/tn_ZA.pm", - "version" : 0 - }, - "DateTime::Locale::to" : { - "file" : "lib/DateTime/Locale/to.pm", - "version" : 0 - }, - "DateTime::Locale::to_TO" : { - "file" : "lib/DateTime/Locale/to_TO.pm", - "version" : 0 - }, - "DateTime::Locale::tr" : { - "file" : "lib/DateTime/Locale/tr.pm", - "version" : 0 - }, - "DateTime::Locale::tr_TR" : { - "file" : "lib/DateTime/Locale/tr_TR.pm", - "version" : 0 - }, - "DateTime::Locale::trv" : { - "file" : "lib/DateTime/Locale/trv.pm", - "version" : 0 - }, - "DateTime::Locale::trv_TW" : { - "file" : "lib/DateTime/Locale/trv_TW.pm", - "version" : 0 - }, - "DateTime::Locale::ts" : { - "file" : "lib/DateTime/Locale/ts.pm", - "version" : 0 - }, - "DateTime::Locale::ts_ZA" : { - "file" : "lib/DateTime/Locale/ts_ZA.pm", - "version" : 0 - }, - "DateTime::Locale::tt" : { - "file" : "lib/DateTime/Locale/tt.pm", - "version" : 0 - }, - "DateTime::Locale::tt_RU" : { - "file" : "lib/DateTime/Locale/tt_RU.pm", - "version" : 0 - }, - "DateTime::Locale::ug" : { - "file" : "lib/DateTime/Locale/ug.pm", - "version" : 0 - }, - "DateTime::Locale::ug_Arab" : { - "file" : "lib/DateTime/Locale/ug_Arab.pm", - "version" : 0 - }, - "DateTime::Locale::ug_Arab_CN" : { - "file" : "lib/DateTime/Locale/ug_Arab_CN.pm", - "version" : 0 - }, - "DateTime::Locale::ug_CN" : { - "file" : "lib/DateTime/Locale/ug_CN.pm", - "version" : 0 - }, - "DateTime::Locale::uk" : { - "file" : "lib/DateTime/Locale/uk.pm", - "version" : 0 - }, - "DateTime::Locale::uk_UA" : { - "file" : "lib/DateTime/Locale/uk_UA.pm", - "version" : 0 - }, - "DateTime::Locale::ur" : { - "file" : "lib/DateTime/Locale/ur.pm", - "version" : 0 - }, - "DateTime::Locale::ur_IN" : { - "file" : "lib/DateTime/Locale/ur_IN.pm", - "version" : 0 - }, - "DateTime::Locale::ur_PK" : { - "file" : "lib/DateTime/Locale/ur_PK.pm", - "version" : 0 - }, - "DateTime::Locale::uz" : { - "file" : "lib/DateTime/Locale/uz.pm", - "version" : 0 - }, - "DateTime::Locale::uz_AF" : { - "file" : "lib/DateTime/Locale/uz_AF.pm", - "version" : 0 - }, - "DateTime::Locale::uz_Arab" : { - "file" : "lib/DateTime/Locale/uz_Arab.pm", - "version" : 0 - }, - "DateTime::Locale::uz_Arab_AF" : { - "file" : "lib/DateTime/Locale/uz_Arab_AF.pm", - "version" : 0 - }, - "DateTime::Locale::uz_Cyrl" : { - "file" : "lib/DateTime/Locale/uz_Cyrl.pm", - "version" : 0 - }, - "DateTime::Locale::uz_Cyrl_UZ" : { - "file" : "lib/DateTime/Locale/uz_Cyrl_UZ.pm", - "version" : 0 - }, - "DateTime::Locale::uz_Latn" : { - "file" : "lib/DateTime/Locale/uz_Latn.pm", - "version" : 0 - }, - "DateTime::Locale::uz_Latn_UZ" : { - "file" : "lib/DateTime/Locale/uz_Latn_UZ.pm", - "version" : 0 - }, - "DateTime::Locale::uz_UZ" : { - "file" : "lib/DateTime/Locale/uz_UZ.pm", - "version" : 0 - }, - "DateTime::Locale::ve" : { - "file" : "lib/DateTime/Locale/ve.pm", - "version" : 0 - }, - "DateTime::Locale::ve_ZA" : { - "file" : "lib/DateTime/Locale/ve_ZA.pm", - "version" : 0 - }, - "DateTime::Locale::vi" : { - "file" : "lib/DateTime/Locale/vi.pm", - "version" : 0 - }, - "DateTime::Locale::vi_VN" : { - "file" : "lib/DateTime/Locale/vi_VN.pm", - "version" : 0 - }, - "DateTime::Locale::wal" : { - "file" : "lib/DateTime/Locale/wal.pm", - "version" : 0 - }, - "DateTime::Locale::wal_ET" : { - "file" : "lib/DateTime/Locale/wal_ET.pm", - "version" : 0 - }, - "DateTime::Locale::wo" : { - "file" : "lib/DateTime/Locale/wo.pm", - "version" : 0 - }, - "DateTime::Locale::wo_Latn" : { - "file" : "lib/DateTime/Locale/wo_Latn.pm", - "version" : 0 - }, - "DateTime::Locale::wo_Latn_SN" : { - "file" : "lib/DateTime/Locale/wo_Latn_SN.pm", - "version" : 0 - }, - "DateTime::Locale::wo_SN" : { - "file" : "lib/DateTime/Locale/wo_SN.pm", - "version" : 0 - }, - "DateTime::Locale::xh" : { - "file" : "lib/DateTime/Locale/xh.pm", - "version" : 0 - }, - "DateTime::Locale::xh_ZA" : { - "file" : "lib/DateTime/Locale/xh_ZA.pm", - "version" : 0 - }, - "DateTime::Locale::yo" : { - "file" : "lib/DateTime/Locale/yo.pm", - "version" : 0 - }, - "DateTime::Locale::yo_NG" : { - "file" : "lib/DateTime/Locale/yo_NG.pm", - "version" : 0 - }, - "DateTime::Locale::zh" : { - "file" : "lib/DateTime/Locale/zh.pm", - "version" : 0 - }, - "DateTime::Locale::zh_CN" : { - "file" : "lib/DateTime/Locale/zh_CN.pm", - "version" : 0 - }, - "DateTime::Locale::zh_HK" : { - "file" : "lib/DateTime/Locale/zh_HK.pm", - "version" : 0 - }, - "DateTime::Locale::zh_Hans" : { - "file" : "lib/DateTime/Locale/zh_Hans.pm", - "version" : 0 - }, - "DateTime::Locale::zh_Hans_CN" : { - "file" : "lib/DateTime/Locale/zh_Hans_CN.pm", - "version" : 0 - }, - "DateTime::Locale::zh_Hans_HK" : { - "file" : "lib/DateTime/Locale/zh_Hans_HK.pm", - "version" : 0 - }, - "DateTime::Locale::zh_Hans_MO" : { - "file" : "lib/DateTime/Locale/zh_Hans_MO.pm", - "version" : 0 - }, - "DateTime::Locale::zh_Hans_SG" : { - "file" : "lib/DateTime/Locale/zh_Hans_SG.pm", - "version" : 0 - }, - "DateTime::Locale::zh_Hant" : { - "file" : "lib/DateTime/Locale/zh_Hant.pm", - "version" : 0 - }, - "DateTime::Locale::zh_Hant_HK" : { - "file" : "lib/DateTime/Locale/zh_Hant_HK.pm", - "version" : 0 - }, - "DateTime::Locale::zh_Hant_MO" : { - "file" : "lib/DateTime/Locale/zh_Hant_MO.pm", - "version" : 0 - }, - "DateTime::Locale::zh_Hant_TW" : { - "file" : "lib/DateTime/Locale/zh_Hant_TW.pm", - "version" : 0 - }, - "DateTime::Locale::zh_MO" : { - "file" : "lib/DateTime/Locale/zh_MO.pm", - "version" : 0 - }, - "DateTime::Locale::zh_SG" : { - "file" : "lib/DateTime/Locale/zh_SG.pm", - "version" : 0 - }, - "DateTime::Locale::zh_TW" : { - "file" : "lib/DateTime/Locale/zh_TW.pm", - "version" : 0 - }, - "DateTime::Locale::zu" : { - "file" : "lib/DateTime/Locale/zu.pm", - "version" : 0 - }, - "DateTime::Locale::zu_ZA" : { - "file" : "lib/DateTime/Locale/zu_ZA.pm", - "version" : 0 - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=DateTime-Locale" - }, - "homepage" : "http://datetime.perl.org/", - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://hg.urth.org/hg/DateTime-Locale" - } - }, - "version" : "0.45" - }, - "name" : "DateTime::Locale", - "pathname" : "D/DR/DROLSKY/DateTime-Locale-0.45.tar.gz", - "provides" : { - "DateTime::Locale" : { - "file" : "DateTime/Locale.pm", - "version" : "0.45" - }, - "DateTime::Locale::Base" : { - "file" : "DateTime/Locale/Base.pm" - }, - "DateTime::Locale::Catalog" : { - "file" : "DateTime/Locale/Catalog.pm" - }, - "DateTime::Locale::aa" : { - "file" : "DateTime/Locale/aa.pm" - }, - "DateTime::Locale::aa_DJ" : { - "file" : "DateTime/Locale/aa_DJ.pm" - }, - "DateTime::Locale::aa_ER" : { - "file" : "DateTime/Locale/aa_ER.pm" - }, - "DateTime::Locale::aa_ER_SAAHO" : { - "file" : "DateTime/Locale/aa_ER_SAAHO.pm" - }, - "DateTime::Locale::aa_ET" : { - "file" : "DateTime/Locale/aa_ET.pm" - }, - "DateTime::Locale::af" : { - "file" : "DateTime/Locale/af.pm" - }, - "DateTime::Locale::af_NA" : { - "file" : "DateTime/Locale/af_NA.pm" - }, - "DateTime::Locale::af_ZA" : { - "file" : "DateTime/Locale/af_ZA.pm" - }, - "DateTime::Locale::ak" : { - "file" : "DateTime/Locale/ak.pm" - }, - "DateTime::Locale::ak_GH" : { - "file" : "DateTime/Locale/ak_GH.pm" - }, - "DateTime::Locale::am" : { - "file" : "DateTime/Locale/am.pm" - }, - "DateTime::Locale::am_ET" : { - "file" : "DateTime/Locale/am_ET.pm" - }, - "DateTime::Locale::ar" : { - "file" : "DateTime/Locale/ar.pm" - }, - "DateTime::Locale::ar_AE" : { - "file" : "DateTime/Locale/ar_AE.pm" - }, - "DateTime::Locale::ar_BH" : { - "file" : "DateTime/Locale/ar_BH.pm" - }, - "DateTime::Locale::ar_DZ" : { - "file" : "DateTime/Locale/ar_DZ.pm" - }, - "DateTime::Locale::ar_EG" : { - "file" : "DateTime/Locale/ar_EG.pm" - }, - "DateTime::Locale::ar_IQ" : { - "file" : "DateTime/Locale/ar_IQ.pm" - }, - "DateTime::Locale::ar_JO" : { - "file" : "DateTime/Locale/ar_JO.pm" - }, - "DateTime::Locale::ar_KW" : { - "file" : "DateTime/Locale/ar_KW.pm" - }, - "DateTime::Locale::ar_LB" : { - "file" : "DateTime/Locale/ar_LB.pm" - }, - "DateTime::Locale::ar_LY" : { - "file" : "DateTime/Locale/ar_LY.pm" - }, - "DateTime::Locale::ar_MA" : { - "file" : "DateTime/Locale/ar_MA.pm" - }, - "DateTime::Locale::ar_OM" : { - "file" : "DateTime/Locale/ar_OM.pm" - }, - "DateTime::Locale::ar_QA" : { - "file" : "DateTime/Locale/ar_QA.pm" - }, - "DateTime::Locale::ar_SA" : { - "file" : "DateTime/Locale/ar_SA.pm" - }, - "DateTime::Locale::ar_SD" : { - "file" : "DateTime/Locale/ar_SD.pm" - }, - "DateTime::Locale::ar_SY" : { - "file" : "DateTime/Locale/ar_SY.pm" - }, - "DateTime::Locale::ar_TN" : { - "file" : "DateTime/Locale/ar_TN.pm" - }, - "DateTime::Locale::ar_YE" : { - "file" : "DateTime/Locale/ar_YE.pm" - }, - "DateTime::Locale::as" : { - "file" : "DateTime/Locale/as.pm" - }, - "DateTime::Locale::as_IN" : { - "file" : "DateTime/Locale/as_IN.pm" - }, - "DateTime::Locale::az" : { - "file" : "DateTime/Locale/az.pm" - }, - "DateTime::Locale::az_AZ" : { - "file" : "DateTime/Locale/az_AZ.pm" - }, - "DateTime::Locale::az_Cyrl" : { - "file" : "DateTime/Locale/az_Cyrl.pm" - }, - "DateTime::Locale::az_Cyrl_AZ" : { - "file" : "DateTime/Locale/az_Cyrl_AZ.pm" - }, - "DateTime::Locale::az_Latn" : { - "file" : "DateTime/Locale/az_Latn.pm" - }, - "DateTime::Locale::az_Latn_AZ" : { - "file" : "DateTime/Locale/az_Latn_AZ.pm" - }, - "DateTime::Locale::be" : { - "file" : "DateTime/Locale/be.pm" - }, - "DateTime::Locale::be_BY" : { - "file" : "DateTime/Locale/be_BY.pm" - }, - "DateTime::Locale::bg" : { - "file" : "DateTime/Locale/bg.pm" - }, - "DateTime::Locale::bg_BG" : { - "file" : "DateTime/Locale/bg_BG.pm" - }, - "DateTime::Locale::bn" : { - "file" : "DateTime/Locale/bn.pm" - }, - "DateTime::Locale::bn_BD" : { - "file" : "DateTime/Locale/bn_BD.pm" - }, - "DateTime::Locale::bn_IN" : { - "file" : "DateTime/Locale/bn_IN.pm" - }, - "DateTime::Locale::bo" : { - "file" : "DateTime/Locale/bo.pm" - }, - "DateTime::Locale::bo_CN" : { - "file" : "DateTime/Locale/bo_CN.pm" - }, - "DateTime::Locale::bo_IN" : { - "file" : "DateTime/Locale/bo_IN.pm" - }, - "DateTime::Locale::bs" : { - "file" : "DateTime/Locale/bs.pm" - }, - "DateTime::Locale::bs_BA" : { - "file" : "DateTime/Locale/bs_BA.pm" - }, - "DateTime::Locale::byn" : { - "file" : "DateTime/Locale/byn.pm" - }, - "DateTime::Locale::byn_ER" : { - "file" : "DateTime/Locale/byn_ER.pm" - }, - "DateTime::Locale::ca" : { - "file" : "DateTime/Locale/ca.pm" - }, - "DateTime::Locale::ca_ES" : { - "file" : "DateTime/Locale/ca_ES.pm" - }, - "DateTime::Locale::cch" : { - "file" : "DateTime/Locale/cch.pm" - }, - "DateTime::Locale::cch_NG" : { - "file" : "DateTime/Locale/cch_NG.pm" - }, - "DateTime::Locale::cop" : { - "file" : "DateTime/Locale/cop.pm" - }, - "DateTime::Locale::cs" : { - "file" : "DateTime/Locale/cs.pm" - }, - "DateTime::Locale::cs_CZ" : { - "file" : "DateTime/Locale/cs_CZ.pm" - }, - "DateTime::Locale::cy" : { - "file" : "DateTime/Locale/cy.pm" - }, - "DateTime::Locale::cy_GB" : { - "file" : "DateTime/Locale/cy_GB.pm" - }, - "DateTime::Locale::da" : { - "file" : "DateTime/Locale/da.pm" - }, - "DateTime::Locale::da_DK" : { - "file" : "DateTime/Locale/da_DK.pm" - }, - "DateTime::Locale::de" : { - "file" : "DateTime/Locale/de.pm" - }, - "DateTime::Locale::de_AT" : { - "file" : "DateTime/Locale/de_AT.pm" - }, - "DateTime::Locale::de_BE" : { - "file" : "DateTime/Locale/de_BE.pm" - }, - "DateTime::Locale::de_CH" : { - "file" : "DateTime/Locale/de_CH.pm" - }, - "DateTime::Locale::de_DE" : { - "file" : "DateTime/Locale/de_DE.pm" - }, - "DateTime::Locale::de_LI" : { - "file" : "DateTime/Locale/de_LI.pm" - }, - "DateTime::Locale::de_LU" : { - "file" : "DateTime/Locale/de_LU.pm" - }, - "DateTime::Locale::dv" : { - "file" : "DateTime/Locale/dv.pm" - }, - "DateTime::Locale::dv_MV" : { - "file" : "DateTime/Locale/dv_MV.pm" - }, - "DateTime::Locale::dz" : { - "file" : "DateTime/Locale/dz.pm" - }, - "DateTime::Locale::dz_BT" : { - "file" : "DateTime/Locale/dz_BT.pm" - }, - "DateTime::Locale::ee" : { - "file" : "DateTime/Locale/ee.pm" - }, - "DateTime::Locale::ee_GH" : { - "file" : "DateTime/Locale/ee_GH.pm" - }, - "DateTime::Locale::ee_TG" : { - "file" : "DateTime/Locale/ee_TG.pm" - }, - "DateTime::Locale::el" : { - "file" : "DateTime/Locale/el.pm" - }, - "DateTime::Locale::el_CY" : { - "file" : "DateTime/Locale/el_CY.pm" - }, - "DateTime::Locale::el_GR" : { - "file" : "DateTime/Locale/el_GR.pm" - }, - "DateTime::Locale::el_POLYTON" : { - "file" : "DateTime/Locale/el_POLYTON.pm" - }, - "DateTime::Locale::en" : { - "file" : "DateTime/Locale/en.pm" - }, - "DateTime::Locale::en_AS" : { - "file" : "DateTime/Locale/en_AS.pm" - }, - "DateTime::Locale::en_AU" : { - "file" : "DateTime/Locale/en_AU.pm" - }, - "DateTime::Locale::en_BE" : { - "file" : "DateTime/Locale/en_BE.pm" - }, - "DateTime::Locale::en_BW" : { - "file" : "DateTime/Locale/en_BW.pm" - }, - "DateTime::Locale::en_BZ" : { - "file" : "DateTime/Locale/en_BZ.pm" - }, - "DateTime::Locale::en_CA" : { - "file" : "DateTime/Locale/en_CA.pm" - }, - "DateTime::Locale::en_Dsrt" : { - "file" : "DateTime/Locale/en_Dsrt.pm" - }, - "DateTime::Locale::en_Dsrt_US" : { - "file" : "DateTime/Locale/en_Dsrt_US.pm" - }, - "DateTime::Locale::en_GB" : { - "file" : "DateTime/Locale/en_GB.pm" - }, - "DateTime::Locale::en_GU" : { - "file" : "DateTime/Locale/en_GU.pm" - }, - "DateTime::Locale::en_HK" : { - "file" : "DateTime/Locale/en_HK.pm" - }, - "DateTime::Locale::en_IE" : { - "file" : "DateTime/Locale/en_IE.pm" - }, - "DateTime::Locale::en_IN" : { - "file" : "DateTime/Locale/en_IN.pm" - }, - "DateTime::Locale::en_JM" : { - "file" : "DateTime/Locale/en_JM.pm" - }, - "DateTime::Locale::en_MH" : { - "file" : "DateTime/Locale/en_MH.pm" - }, - "DateTime::Locale::en_MP" : { - "file" : "DateTime/Locale/en_MP.pm" - }, - "DateTime::Locale::en_MT" : { - "file" : "DateTime/Locale/en_MT.pm" - }, - "DateTime::Locale::en_NA" : { - "file" : "DateTime/Locale/en_NA.pm" - }, - "DateTime::Locale::en_NZ" : { - "file" : "DateTime/Locale/en_NZ.pm" - }, - "DateTime::Locale::en_PH" : { - "file" : "DateTime/Locale/en_PH.pm" - }, - "DateTime::Locale::en_PK" : { - "file" : "DateTime/Locale/en_PK.pm" - }, - "DateTime::Locale::en_SG" : { - "file" : "DateTime/Locale/en_SG.pm" - }, - "DateTime::Locale::en_Shaw" : { - "file" : "DateTime/Locale/en_Shaw.pm" - }, - "DateTime::Locale::en_TT" : { - "file" : "DateTime/Locale/en_TT.pm" - }, - "DateTime::Locale::en_UM" : { - "file" : "DateTime/Locale/en_UM.pm" - }, - "DateTime::Locale::en_US" : { - "file" : "DateTime/Locale/en_US.pm" - }, - "DateTime::Locale::en_US_POSIX" : { - "file" : "DateTime/Locale/en_US_POSIX.pm" - }, - "DateTime::Locale::en_VI" : { - "file" : "DateTime/Locale/en_VI.pm" - }, - "DateTime::Locale::en_ZA" : { - "file" : "DateTime/Locale/en_ZA.pm" - }, - "DateTime::Locale::en_ZW" : { - "file" : "DateTime/Locale/en_ZW.pm" - }, - "DateTime::Locale::eo" : { - "file" : "DateTime/Locale/eo.pm" - }, - "DateTime::Locale::es" : { - "file" : "DateTime/Locale/es.pm" - }, - "DateTime::Locale::es_AR" : { - "file" : "DateTime/Locale/es_AR.pm" - }, - "DateTime::Locale::es_BO" : { - "file" : "DateTime/Locale/es_BO.pm" - }, - "DateTime::Locale::es_CL" : { - "file" : "DateTime/Locale/es_CL.pm" - }, - "DateTime::Locale::es_CO" : { - "file" : "DateTime/Locale/es_CO.pm" - }, - "DateTime::Locale::es_CR" : { - "file" : "DateTime/Locale/es_CR.pm" - }, - "DateTime::Locale::es_DO" : { - "file" : "DateTime/Locale/es_DO.pm" - }, - "DateTime::Locale::es_EC" : { - "file" : "DateTime/Locale/es_EC.pm" - }, - "DateTime::Locale::es_ES" : { - "file" : "DateTime/Locale/es_ES.pm" - }, - "DateTime::Locale::es_GT" : { - "file" : "DateTime/Locale/es_GT.pm" - }, - "DateTime::Locale::es_HN" : { - "file" : "DateTime/Locale/es_HN.pm" - }, - "DateTime::Locale::es_MX" : { - "file" : "DateTime/Locale/es_MX.pm" - }, - "DateTime::Locale::es_NI" : { - "file" : "DateTime/Locale/es_NI.pm" - }, - "DateTime::Locale::es_PA" : { - "file" : "DateTime/Locale/es_PA.pm" - }, - "DateTime::Locale::es_PE" : { - "file" : "DateTime/Locale/es_PE.pm" - }, - "DateTime::Locale::es_PR" : { - "file" : "DateTime/Locale/es_PR.pm" - }, - "DateTime::Locale::es_PY" : { - "file" : "DateTime/Locale/es_PY.pm" - }, - "DateTime::Locale::es_SV" : { - "file" : "DateTime/Locale/es_SV.pm" - }, - "DateTime::Locale::es_US" : { - "file" : "DateTime/Locale/es_US.pm" - }, - "DateTime::Locale::es_UY" : { - "file" : "DateTime/Locale/es_UY.pm" - }, - "DateTime::Locale::es_VE" : { - "file" : "DateTime/Locale/es_VE.pm" - }, - "DateTime::Locale::et" : { - "file" : "DateTime/Locale/et.pm" - }, - "DateTime::Locale::et_EE" : { - "file" : "DateTime/Locale/et_EE.pm" - }, - "DateTime::Locale::eu" : { - "file" : "DateTime/Locale/eu.pm" - }, - "DateTime::Locale::eu_ES" : { - "file" : "DateTime/Locale/eu_ES.pm" - }, - "DateTime::Locale::fa" : { - "file" : "DateTime/Locale/fa.pm" - }, - "DateTime::Locale::fa_AF" : { - "file" : "DateTime/Locale/fa_AF.pm" - }, - "DateTime::Locale::fa_IR" : { - "file" : "DateTime/Locale/fa_IR.pm" - }, - "DateTime::Locale::fi" : { - "file" : "DateTime/Locale/fi.pm" - }, - "DateTime::Locale::fi_FI" : { - "file" : "DateTime/Locale/fi_FI.pm" - }, - "DateTime::Locale::fil" : { - "file" : "DateTime/Locale/fil.pm" - }, - "DateTime::Locale::fil_PH" : { - "file" : "DateTime/Locale/fil_PH.pm" - }, - "DateTime::Locale::fo" : { - "file" : "DateTime/Locale/fo.pm" - }, - "DateTime::Locale::fo_FO" : { - "file" : "DateTime/Locale/fo_FO.pm" - }, - "DateTime::Locale::fr" : { - "file" : "DateTime/Locale/fr.pm" - }, - "DateTime::Locale::fr_BE" : { - "file" : "DateTime/Locale/fr_BE.pm" - }, - "DateTime::Locale::fr_CA" : { - "file" : "DateTime/Locale/fr_CA.pm" - }, - "DateTime::Locale::fr_CH" : { - "file" : "DateTime/Locale/fr_CH.pm" - }, - "DateTime::Locale::fr_FR" : { - "file" : "DateTime/Locale/fr_FR.pm" - }, - "DateTime::Locale::fr_LU" : { - "file" : "DateTime/Locale/fr_LU.pm" - }, - "DateTime::Locale::fr_MC" : { - "file" : "DateTime/Locale/fr_MC.pm" - }, - "DateTime::Locale::fr_SN" : { - "file" : "DateTime/Locale/fr_SN.pm" - }, - "DateTime::Locale::fur" : { - "file" : "DateTime/Locale/fur.pm" - }, - "DateTime::Locale::fur_IT" : { - "file" : "DateTime/Locale/fur_IT.pm" - }, - "DateTime::Locale::ga" : { - "file" : "DateTime/Locale/ga.pm" - }, - "DateTime::Locale::ga_IE" : { - "file" : "DateTime/Locale/ga_IE.pm" - }, - "DateTime::Locale::gaa" : { - "file" : "DateTime/Locale/gaa.pm" - }, - "DateTime::Locale::gaa_GH" : { - "file" : "DateTime/Locale/gaa_GH.pm" - }, - "DateTime::Locale::gez" : { - "file" : "DateTime/Locale/gez.pm" - }, - "DateTime::Locale::gez_ER" : { - "file" : "DateTime/Locale/gez_ER.pm" - }, - "DateTime::Locale::gez_ET" : { - "file" : "DateTime/Locale/gez_ET.pm" - }, - "DateTime::Locale::gl" : { - "file" : "DateTime/Locale/gl.pm" - }, - "DateTime::Locale::gl_ES" : { - "file" : "DateTime/Locale/gl_ES.pm" - }, - "DateTime::Locale::gsw" : { - "file" : "DateTime/Locale/gsw.pm" - }, - "DateTime::Locale::gsw_CH" : { - "file" : "DateTime/Locale/gsw_CH.pm" - }, - "DateTime::Locale::gu" : { - "file" : "DateTime/Locale/gu.pm" - }, - "DateTime::Locale::gu_IN" : { - "file" : "DateTime/Locale/gu_IN.pm" - }, - "DateTime::Locale::gv" : { - "file" : "DateTime/Locale/gv.pm" - }, - "DateTime::Locale::gv_GB" : { - "file" : "DateTime/Locale/gv_GB.pm" - }, - "DateTime::Locale::ha" : { - "file" : "DateTime/Locale/ha.pm" - }, - "DateTime::Locale::ha_Arab" : { - "file" : "DateTime/Locale/ha_Arab.pm" - }, - "DateTime::Locale::ha_Arab_NG" : { - "file" : "DateTime/Locale/ha_Arab_NG.pm" - }, - "DateTime::Locale::ha_Arab_SD" : { - "file" : "DateTime/Locale/ha_Arab_SD.pm" - }, - "DateTime::Locale::ha_GH" : { - "file" : "DateTime/Locale/ha_GH.pm" - }, - "DateTime::Locale::ha_Latn" : { - "file" : "DateTime/Locale/ha_Latn.pm" - }, - "DateTime::Locale::ha_Latn_GH" : { - "file" : "DateTime/Locale/ha_Latn_GH.pm" - }, - "DateTime::Locale::ha_Latn_NE" : { - "file" : "DateTime/Locale/ha_Latn_NE.pm" - }, - "DateTime::Locale::ha_Latn_NG" : { - "file" : "DateTime/Locale/ha_Latn_NG.pm" - }, - "DateTime::Locale::ha_NE" : { - "file" : "DateTime/Locale/ha_NE.pm" - }, - "DateTime::Locale::ha_NG" : { - "file" : "DateTime/Locale/ha_NG.pm" - }, - "DateTime::Locale::ha_SD" : { - "file" : "DateTime/Locale/ha_SD.pm" - }, - "DateTime::Locale::haw" : { - "file" : "DateTime/Locale/haw.pm" - }, - "DateTime::Locale::haw_US" : { - "file" : "DateTime/Locale/haw_US.pm" - }, - "DateTime::Locale::he" : { - "file" : "DateTime/Locale/he.pm" - }, - "DateTime::Locale::he_IL" : { - "file" : "DateTime/Locale/he_IL.pm" - }, - "DateTime::Locale::hi" : { - "file" : "DateTime/Locale/hi.pm" - }, - "DateTime::Locale::hi_IN" : { - "file" : "DateTime/Locale/hi_IN.pm" - }, - "DateTime::Locale::hr" : { - "file" : "DateTime/Locale/hr.pm" - }, - "DateTime::Locale::hr_HR" : { - "file" : "DateTime/Locale/hr_HR.pm" - }, - "DateTime::Locale::hu" : { - "file" : "DateTime/Locale/hu.pm" - }, - "DateTime::Locale::hu_HU" : { - "file" : "DateTime/Locale/hu_HU.pm" - }, - "DateTime::Locale::hy" : { - "file" : "DateTime/Locale/hy.pm" - }, - "DateTime::Locale::hy_AM" : { - "file" : "DateTime/Locale/hy_AM.pm" - }, - "DateTime::Locale::hy_AM_REVISED" : { - "file" : "DateTime/Locale/hy_AM_REVISED.pm" - }, - "DateTime::Locale::ia" : { - "file" : "DateTime/Locale/ia.pm" - }, - "DateTime::Locale::id" : { - "file" : "DateTime/Locale/id.pm" - }, - "DateTime::Locale::id_ID" : { - "file" : "DateTime/Locale/id_ID.pm" - }, - "DateTime::Locale::ig" : { - "file" : "DateTime/Locale/ig.pm" - }, - "DateTime::Locale::ig_NG" : { - "file" : "DateTime/Locale/ig_NG.pm" - }, - "DateTime::Locale::ii" : { - "file" : "DateTime/Locale/ii.pm" - }, - "DateTime::Locale::ii_CN" : { - "file" : "DateTime/Locale/ii_CN.pm" - }, - "DateTime::Locale::is" : { - "file" : "DateTime/Locale/is.pm" - }, - "DateTime::Locale::is_IS" : { - "file" : "DateTime/Locale/is_IS.pm" - }, - "DateTime::Locale::it" : { - "file" : "DateTime/Locale/it.pm" - }, - "DateTime::Locale::it_CH" : { - "file" : "DateTime/Locale/it_CH.pm" - }, - "DateTime::Locale::it_IT" : { - "file" : "DateTime/Locale/it_IT.pm" - }, - "DateTime::Locale::iu" : { - "file" : "DateTime/Locale/iu.pm" - }, - "DateTime::Locale::ja" : { - "file" : "DateTime/Locale/ja.pm" - }, - "DateTime::Locale::ja_JP" : { - "file" : "DateTime/Locale/ja_JP.pm" - }, - "DateTime::Locale::ka" : { - "file" : "DateTime/Locale/ka.pm" - }, - "DateTime::Locale::ka_GE" : { - "file" : "DateTime/Locale/ka_GE.pm" - }, - "DateTime::Locale::kaj" : { - "file" : "DateTime/Locale/kaj.pm" - }, - "DateTime::Locale::kaj_NG" : { - "file" : "DateTime/Locale/kaj_NG.pm" - }, - "DateTime::Locale::kam" : { - "file" : "DateTime/Locale/kam.pm" - }, - "DateTime::Locale::kam_KE" : { - "file" : "DateTime/Locale/kam_KE.pm" - }, - "DateTime::Locale::kcg" : { - "file" : "DateTime/Locale/kcg.pm" - }, - "DateTime::Locale::kcg_NG" : { - "file" : "DateTime/Locale/kcg_NG.pm" - }, - "DateTime::Locale::kfo" : { - "file" : "DateTime/Locale/kfo.pm" - }, - "DateTime::Locale::kfo_CI" : { - "file" : "DateTime/Locale/kfo_CI.pm" - }, - "DateTime::Locale::kk" : { - "file" : "DateTime/Locale/kk.pm" - }, - "DateTime::Locale::kk_Cyrl" : { - "file" : "DateTime/Locale/kk_Cyrl.pm" - }, - "DateTime::Locale::kk_Cyrl_KZ" : { - "file" : "DateTime/Locale/kk_Cyrl_KZ.pm" - }, - "DateTime::Locale::kk_KZ" : { - "file" : "DateTime/Locale/kk_KZ.pm" - }, - "DateTime::Locale::kl" : { - "file" : "DateTime/Locale/kl.pm" - }, - "DateTime::Locale::kl_GL" : { - "file" : "DateTime/Locale/kl_GL.pm" - }, - "DateTime::Locale::km" : { - "file" : "DateTime/Locale/km.pm" - }, - "DateTime::Locale::km_KH" : { - "file" : "DateTime/Locale/km_KH.pm" - }, - "DateTime::Locale::kn" : { - "file" : "DateTime/Locale/kn.pm" - }, - "DateTime::Locale::kn_IN" : { - "file" : "DateTime/Locale/kn_IN.pm" - }, - "DateTime::Locale::ko" : { - "file" : "DateTime/Locale/ko.pm" - }, - "DateTime::Locale::ko_KR" : { - "file" : "DateTime/Locale/ko_KR.pm" - }, - "DateTime::Locale::kok" : { - "file" : "DateTime/Locale/kok.pm" - }, - "DateTime::Locale::kok_IN" : { - "file" : "DateTime/Locale/kok_IN.pm" - }, - "DateTime::Locale::kpe" : { - "file" : "DateTime/Locale/kpe.pm" - }, - "DateTime::Locale::kpe_GN" : { - "file" : "DateTime/Locale/kpe_GN.pm" - }, - "DateTime::Locale::kpe_LR" : { - "file" : "DateTime/Locale/kpe_LR.pm" - }, - "DateTime::Locale::ku" : { - "file" : "DateTime/Locale/ku.pm" - }, - "DateTime::Locale::ku_Arab" : { - "file" : "DateTime/Locale/ku_Arab.pm" - }, - "DateTime::Locale::ku_Arab_IQ" : { - "file" : "DateTime/Locale/ku_Arab_IQ.pm" - }, - "DateTime::Locale::ku_Arab_IR" : { - "file" : "DateTime/Locale/ku_Arab_IR.pm" - }, - "DateTime::Locale::ku_Arab_SY" : { - "file" : "DateTime/Locale/ku_Arab_SY.pm" - }, - "DateTime::Locale::ku_IQ" : { - "file" : "DateTime/Locale/ku_IQ.pm" - }, - "DateTime::Locale::ku_IR" : { - "file" : "DateTime/Locale/ku_IR.pm" - }, - "DateTime::Locale::ku_Latn" : { - "file" : "DateTime/Locale/ku_Latn.pm" - }, - "DateTime::Locale::ku_Latn_TR" : { - "file" : "DateTime/Locale/ku_Latn_TR.pm" - }, - "DateTime::Locale::ku_SY" : { - "file" : "DateTime/Locale/ku_SY.pm" - }, - "DateTime::Locale::ku_TR" : { - "file" : "DateTime/Locale/ku_TR.pm" - }, - "DateTime::Locale::kw" : { - "file" : "DateTime/Locale/kw.pm" - }, - "DateTime::Locale::kw_GB" : { - "file" : "DateTime/Locale/kw_GB.pm" - }, - "DateTime::Locale::ky" : { - "file" : "DateTime/Locale/ky.pm" - }, - "DateTime::Locale::ky_KG" : { - "file" : "DateTime/Locale/ky_KG.pm" - }, - "DateTime::Locale::ln" : { - "file" : "DateTime/Locale/ln.pm" - }, - "DateTime::Locale::ln_CD" : { - "file" : "DateTime/Locale/ln_CD.pm" - }, - "DateTime::Locale::ln_CG" : { - "file" : "DateTime/Locale/ln_CG.pm" - }, - "DateTime::Locale::lo" : { - "file" : "DateTime/Locale/lo.pm" - }, - "DateTime::Locale::lo_LA" : { - "file" : "DateTime/Locale/lo_LA.pm" - }, - "DateTime::Locale::lt" : { - "file" : "DateTime/Locale/lt.pm" - }, - "DateTime::Locale::lt_LT" : { - "file" : "DateTime/Locale/lt_LT.pm" - }, - "DateTime::Locale::lv" : { - "file" : "DateTime/Locale/lv.pm" - }, - "DateTime::Locale::lv_LV" : { - "file" : "DateTime/Locale/lv_LV.pm" - }, - "DateTime::Locale::mk" : { - "file" : "DateTime/Locale/mk.pm" - }, - "DateTime::Locale::mk_MK" : { - "file" : "DateTime/Locale/mk_MK.pm" - }, - "DateTime::Locale::ml" : { - "file" : "DateTime/Locale/ml.pm" - }, - "DateTime::Locale::ml_IN" : { - "file" : "DateTime/Locale/ml_IN.pm" - }, - "DateTime::Locale::mn" : { - "file" : "DateTime/Locale/mn.pm" - }, - "DateTime::Locale::mn_CN" : { - "file" : "DateTime/Locale/mn_CN.pm" - }, - "DateTime::Locale::mn_Cyrl" : { - "file" : "DateTime/Locale/mn_Cyrl.pm" - }, - "DateTime::Locale::mn_Cyrl_MN" : { - "file" : "DateTime/Locale/mn_Cyrl_MN.pm" - }, - "DateTime::Locale::mn_MN" : { - "file" : "DateTime/Locale/mn_MN.pm" - }, - "DateTime::Locale::mn_Mong" : { - "file" : "DateTime/Locale/mn_Mong.pm" - }, - "DateTime::Locale::mn_Mong_CN" : { - "file" : "DateTime/Locale/mn_Mong_CN.pm" - }, - "DateTime::Locale::mo" : { - "file" : "DateTime/Locale/mo.pm" - }, - "DateTime::Locale::mr" : { - "file" : "DateTime/Locale/mr.pm" - }, - "DateTime::Locale::mr_IN" : { - "file" : "DateTime/Locale/mr_IN.pm" - }, - "DateTime::Locale::ms" : { - "file" : "DateTime/Locale/ms.pm" - }, - "DateTime::Locale::ms_BN" : { - "file" : "DateTime/Locale/ms_BN.pm" - }, - "DateTime::Locale::ms_MY" : { - "file" : "DateTime/Locale/ms_MY.pm" - }, - "DateTime::Locale::mt" : { - "file" : "DateTime/Locale/mt.pm" - }, - "DateTime::Locale::mt_MT" : { - "file" : "DateTime/Locale/mt_MT.pm" - }, - "DateTime::Locale::my" : { - "file" : "DateTime/Locale/my.pm" - }, - "DateTime::Locale::my_MM" : { - "file" : "DateTime/Locale/my_MM.pm" - }, - "DateTime::Locale::nb" : { - "file" : "DateTime/Locale/nb.pm" - }, - "DateTime::Locale::nb_NO" : { - "file" : "DateTime/Locale/nb_NO.pm" - }, - "DateTime::Locale::nds" : { - "file" : "DateTime/Locale/nds.pm" - }, - "DateTime::Locale::nds_DE" : { - "file" : "DateTime/Locale/nds_DE.pm" - }, - "DateTime::Locale::ne" : { - "file" : "DateTime/Locale/ne.pm" - }, - "DateTime::Locale::ne_IN" : { - "file" : "DateTime/Locale/ne_IN.pm" - }, - "DateTime::Locale::ne_NP" : { - "file" : "DateTime/Locale/ne_NP.pm" - }, - "DateTime::Locale::nl" : { - "file" : "DateTime/Locale/nl.pm" - }, - "DateTime::Locale::nl_BE" : { - "file" : "DateTime/Locale/nl_BE.pm" - }, - "DateTime::Locale::nl_NL" : { - "file" : "DateTime/Locale/nl_NL.pm" - }, - "DateTime::Locale::nn" : { - "file" : "DateTime/Locale/nn.pm" - }, - "DateTime::Locale::nn_NO" : { - "file" : "DateTime/Locale/nn_NO.pm" - }, - "DateTime::Locale::no" : { - "file" : "DateTime/Locale/no.pm" - }, - "DateTime::Locale::nr" : { - "file" : "DateTime/Locale/nr.pm" - }, - "DateTime::Locale::nr_ZA" : { - "file" : "DateTime/Locale/nr_ZA.pm" - }, - "DateTime::Locale::nso" : { - "file" : "DateTime/Locale/nso.pm" - }, - "DateTime::Locale::nso_ZA" : { - "file" : "DateTime/Locale/nso_ZA.pm" - }, - "DateTime::Locale::ny" : { - "file" : "DateTime/Locale/ny.pm" - }, - "DateTime::Locale::ny_MW" : { - "file" : "DateTime/Locale/ny_MW.pm" - }, - "DateTime::Locale::oc" : { - "file" : "DateTime/Locale/oc.pm" - }, - "DateTime::Locale::oc_FR" : { - "file" : "DateTime/Locale/oc_FR.pm" - }, - "DateTime::Locale::om" : { - "file" : "DateTime/Locale/om.pm" - }, - "DateTime::Locale::om_ET" : { - "file" : "DateTime/Locale/om_ET.pm" - }, - "DateTime::Locale::om_KE" : { - "file" : "DateTime/Locale/om_KE.pm" - }, - "DateTime::Locale::or" : { - "file" : "DateTime/Locale/or.pm" - }, - "DateTime::Locale::or_IN" : { - "file" : "DateTime/Locale/or_IN.pm" - }, - "DateTime::Locale::pa" : { - "file" : "DateTime/Locale/pa.pm" - }, - "DateTime::Locale::pa_Arab" : { - "file" : "DateTime/Locale/pa_Arab.pm" - }, - "DateTime::Locale::pa_Arab_PK" : { - "file" : "DateTime/Locale/pa_Arab_PK.pm" - }, - "DateTime::Locale::pa_Guru" : { - "file" : "DateTime/Locale/pa_Guru.pm" - }, - "DateTime::Locale::pa_Guru_IN" : { - "file" : "DateTime/Locale/pa_Guru_IN.pm" - }, - "DateTime::Locale::pa_IN" : { - "file" : "DateTime/Locale/pa_IN.pm" - }, - "DateTime::Locale::pa_PK" : { - "file" : "DateTime/Locale/pa_PK.pm" - }, - "DateTime::Locale::pl" : { - "file" : "DateTime/Locale/pl.pm" - }, - "DateTime::Locale::pl_PL" : { - "file" : "DateTime/Locale/pl_PL.pm" - }, - "DateTime::Locale::ps" : { - "file" : "DateTime/Locale/ps.pm" - }, - "DateTime::Locale::ps_AF" : { - "file" : "DateTime/Locale/ps_AF.pm" - }, - "DateTime::Locale::pt" : { - "file" : "DateTime/Locale/pt.pm" - }, - "DateTime::Locale::pt_BR" : { - "file" : "DateTime/Locale/pt_BR.pm" - }, - "DateTime::Locale::pt_PT" : { - "file" : "DateTime/Locale/pt_PT.pm" - }, - "DateTime::Locale::ro" : { - "file" : "DateTime/Locale/ro.pm" - }, - "DateTime::Locale::ro_MD" : { - "file" : "DateTime/Locale/ro_MD.pm" - }, - "DateTime::Locale::ro_RO" : { - "file" : "DateTime/Locale/ro_RO.pm" - }, - "DateTime::Locale::root" : { - "file" : "DateTime/Locale/root.pm" - }, - "DateTime::Locale::ru" : { - "file" : "DateTime/Locale/ru.pm" - }, - "DateTime::Locale::ru_RU" : { - "file" : "DateTime/Locale/ru_RU.pm" - }, - "DateTime::Locale::ru_UA" : { - "file" : "DateTime/Locale/ru_UA.pm" - }, - "DateTime::Locale::rw" : { - "file" : "DateTime/Locale/rw.pm" - }, - "DateTime::Locale::rw_RW" : { - "file" : "DateTime/Locale/rw_RW.pm" - }, - "DateTime::Locale::sa" : { - "file" : "DateTime/Locale/sa.pm" - }, - "DateTime::Locale::sa_IN" : { - "file" : "DateTime/Locale/sa_IN.pm" - }, - "DateTime::Locale::se" : { - "file" : "DateTime/Locale/se.pm" - }, - "DateTime::Locale::se_FI" : { - "file" : "DateTime/Locale/se_FI.pm" - }, - "DateTime::Locale::se_NO" : { - "file" : "DateTime/Locale/se_NO.pm" - }, - "DateTime::Locale::sh" : { - "file" : "DateTime/Locale/sh.pm" - }, - "DateTime::Locale::sh_BA" : { - "file" : "DateTime/Locale/sh_BA.pm" - }, - "DateTime::Locale::sh_CS" : { - "file" : "DateTime/Locale/sh_CS.pm" - }, - "DateTime::Locale::sh_YU" : { - "file" : "DateTime/Locale/sh_YU.pm" - }, - "DateTime::Locale::si" : { - "file" : "DateTime/Locale/si.pm" - }, - "DateTime::Locale::si_LK" : { - "file" : "DateTime/Locale/si_LK.pm" - }, - "DateTime::Locale::sid" : { - "file" : "DateTime/Locale/sid.pm" - }, - "DateTime::Locale::sid_ET" : { - "file" : "DateTime/Locale/sid_ET.pm" - }, - "DateTime::Locale::sk" : { - "file" : "DateTime/Locale/sk.pm" - }, - "DateTime::Locale::sk_SK" : { - "file" : "DateTime/Locale/sk_SK.pm" - }, - "DateTime::Locale::sl" : { - "file" : "DateTime/Locale/sl.pm" - }, - "DateTime::Locale::sl_SI" : { - "file" : "DateTime/Locale/sl_SI.pm" - }, - "DateTime::Locale::so" : { - "file" : "DateTime/Locale/so.pm" - }, - "DateTime::Locale::so_DJ" : { - "file" : "DateTime/Locale/so_DJ.pm" - }, - "DateTime::Locale::so_ET" : { - "file" : "DateTime/Locale/so_ET.pm" - }, - "DateTime::Locale::so_KE" : { - "file" : "DateTime/Locale/so_KE.pm" - }, - "DateTime::Locale::so_SO" : { - "file" : "DateTime/Locale/so_SO.pm" - }, - "DateTime::Locale::sq" : { - "file" : "DateTime/Locale/sq.pm" - }, - "DateTime::Locale::sq_AL" : { - "file" : "DateTime/Locale/sq_AL.pm" - }, - "DateTime::Locale::sr" : { - "file" : "DateTime/Locale/sr.pm" - }, - "DateTime::Locale::sr_BA" : { - "file" : "DateTime/Locale/sr_BA.pm" - }, - "DateTime::Locale::sr_CS" : { - "file" : "DateTime/Locale/sr_CS.pm" - }, - "DateTime::Locale::sr_Cyrl" : { - "file" : "DateTime/Locale/sr_Cyrl.pm" - }, - "DateTime::Locale::sr_Cyrl_BA" : { - "file" : "DateTime/Locale/sr_Cyrl_BA.pm" - }, - "DateTime::Locale::sr_Cyrl_CS" : { - "file" : "DateTime/Locale/sr_Cyrl_CS.pm" - }, - "DateTime::Locale::sr_Cyrl_ME" : { - "file" : "DateTime/Locale/sr_Cyrl_ME.pm" - }, - "DateTime::Locale::sr_Cyrl_RS" : { - "file" : "DateTime/Locale/sr_Cyrl_RS.pm" - }, - "DateTime::Locale::sr_Cyrl_YU" : { - "file" : "DateTime/Locale/sr_Cyrl_YU.pm" - }, - "DateTime::Locale::sr_Latn" : { - "file" : "DateTime/Locale/sr_Latn.pm" - }, - "DateTime::Locale::sr_Latn_BA" : { - "file" : "DateTime/Locale/sr_Latn_BA.pm" - }, - "DateTime::Locale::sr_Latn_CS" : { - "file" : "DateTime/Locale/sr_Latn_CS.pm" - }, - "DateTime::Locale::sr_Latn_ME" : { - "file" : "DateTime/Locale/sr_Latn_ME.pm" - }, - "DateTime::Locale::sr_Latn_RS" : { - "file" : "DateTime/Locale/sr_Latn_RS.pm" - }, - "DateTime::Locale::sr_Latn_YU" : { - "file" : "DateTime/Locale/sr_Latn_YU.pm" - }, - "DateTime::Locale::sr_ME" : { - "file" : "DateTime/Locale/sr_ME.pm" - }, - "DateTime::Locale::sr_RS" : { - "file" : "DateTime/Locale/sr_RS.pm" - }, - "DateTime::Locale::sr_YU" : { - "file" : "DateTime/Locale/sr_YU.pm" - }, - "DateTime::Locale::ss" : { - "file" : "DateTime/Locale/ss.pm" - }, - "DateTime::Locale::ss_SZ" : { - "file" : "DateTime/Locale/ss_SZ.pm" - }, - "DateTime::Locale::ss_ZA" : { - "file" : "DateTime/Locale/ss_ZA.pm" - }, - "DateTime::Locale::st" : { - "file" : "DateTime/Locale/st.pm" - }, - "DateTime::Locale::st_LS" : { - "file" : "DateTime/Locale/st_LS.pm" - }, - "DateTime::Locale::st_ZA" : { - "file" : "DateTime/Locale/st_ZA.pm" - }, - "DateTime::Locale::sv" : { - "file" : "DateTime/Locale/sv.pm" - }, - "DateTime::Locale::sv_FI" : { - "file" : "DateTime/Locale/sv_FI.pm" - }, - "DateTime::Locale::sv_SE" : { - "file" : "DateTime/Locale/sv_SE.pm" - }, - "DateTime::Locale::sw" : { - "file" : "DateTime/Locale/sw.pm" - }, - "DateTime::Locale::sw_KE" : { - "file" : "DateTime/Locale/sw_KE.pm" - }, - "DateTime::Locale::sw_TZ" : { - "file" : "DateTime/Locale/sw_TZ.pm" - }, - "DateTime::Locale::syr" : { - "file" : "DateTime/Locale/syr.pm" - }, - "DateTime::Locale::syr_SY" : { - "file" : "DateTime/Locale/syr_SY.pm" - }, - "DateTime::Locale::ta" : { - "file" : "DateTime/Locale/ta.pm" - }, - "DateTime::Locale::ta_IN" : { - "file" : "DateTime/Locale/ta_IN.pm" - }, - "DateTime::Locale::te" : { - "file" : "DateTime/Locale/te.pm" - }, - "DateTime::Locale::te_IN" : { - "file" : "DateTime/Locale/te_IN.pm" - }, - "DateTime::Locale::tg" : { - "file" : "DateTime/Locale/tg.pm" - }, - "DateTime::Locale::tg_Cyrl" : { - "file" : "DateTime/Locale/tg_Cyrl.pm" - }, - "DateTime::Locale::tg_Cyrl_TJ" : { - "file" : "DateTime/Locale/tg_Cyrl_TJ.pm" - }, - "DateTime::Locale::tg_TJ" : { - "file" : "DateTime/Locale/tg_TJ.pm" - }, - "DateTime::Locale::th" : { - "file" : "DateTime/Locale/th.pm" - }, - "DateTime::Locale::th_TH" : { - "file" : "DateTime/Locale/th_TH.pm" - }, - "DateTime::Locale::ti" : { - "file" : "DateTime/Locale/ti.pm" - }, - "DateTime::Locale::ti_ER" : { - "file" : "DateTime/Locale/ti_ER.pm" - }, - "DateTime::Locale::ti_ET" : { - "file" : "DateTime/Locale/ti_ET.pm" - }, - "DateTime::Locale::tig" : { - "file" : "DateTime/Locale/tig.pm" - }, - "DateTime::Locale::tig_ER" : { - "file" : "DateTime/Locale/tig_ER.pm" - }, - "DateTime::Locale::tl" : { - "file" : "DateTime/Locale/tl.pm" - }, - "DateTime::Locale::tn" : { - "file" : "DateTime/Locale/tn.pm" - }, - "DateTime::Locale::tn_ZA" : { - "file" : "DateTime/Locale/tn_ZA.pm" - }, - "DateTime::Locale::to" : { - "file" : "DateTime/Locale/to.pm" - }, - "DateTime::Locale::to_TO" : { - "file" : "DateTime/Locale/to_TO.pm" - }, - "DateTime::Locale::tr" : { - "file" : "DateTime/Locale/tr.pm" - }, - "DateTime::Locale::tr_TR" : { - "file" : "DateTime/Locale/tr_TR.pm" - }, - "DateTime::Locale::trv" : { - "file" : "DateTime/Locale/trv.pm" - }, - "DateTime::Locale::trv_TW" : { - "file" : "DateTime/Locale/trv_TW.pm" - }, - "DateTime::Locale::ts" : { - "file" : "DateTime/Locale/ts.pm" - }, - "DateTime::Locale::ts_ZA" : { - "file" : "DateTime/Locale/ts_ZA.pm" - }, - "DateTime::Locale::tt" : { - "file" : "DateTime/Locale/tt.pm" - }, - "DateTime::Locale::tt_RU" : { - "file" : "DateTime/Locale/tt_RU.pm" - }, - "DateTime::Locale::ug" : { - "file" : "DateTime/Locale/ug.pm" - }, - "DateTime::Locale::ug_Arab" : { - "file" : "DateTime/Locale/ug_Arab.pm" - }, - "DateTime::Locale::ug_Arab_CN" : { - "file" : "DateTime/Locale/ug_Arab_CN.pm" - }, - "DateTime::Locale::ug_CN" : { - "file" : "DateTime/Locale/ug_CN.pm" - }, - "DateTime::Locale::uk" : { - "file" : "DateTime/Locale/uk.pm" - }, - "DateTime::Locale::uk_UA" : { - "file" : "DateTime/Locale/uk_UA.pm" - }, - "DateTime::Locale::ur" : { - "file" : "DateTime/Locale/ur.pm" - }, - "DateTime::Locale::ur_IN" : { - "file" : "DateTime/Locale/ur_IN.pm" - }, - "DateTime::Locale::ur_PK" : { - "file" : "DateTime/Locale/ur_PK.pm" - }, - "DateTime::Locale::uz" : { - "file" : "DateTime/Locale/uz.pm" - }, - "DateTime::Locale::uz_AF" : { - "file" : "DateTime/Locale/uz_AF.pm" - }, - "DateTime::Locale::uz_Arab" : { - "file" : "DateTime/Locale/uz_Arab.pm" - }, - "DateTime::Locale::uz_Arab_AF" : { - "file" : "DateTime/Locale/uz_Arab_AF.pm" - }, - "DateTime::Locale::uz_Cyrl" : { - "file" : "DateTime/Locale/uz_Cyrl.pm" - }, - "DateTime::Locale::uz_Cyrl_UZ" : { - "file" : "DateTime/Locale/uz_Cyrl_UZ.pm" - }, - "DateTime::Locale::uz_Latn" : { - "file" : "DateTime/Locale/uz_Latn.pm" - }, - "DateTime::Locale::uz_Latn_UZ" : { - "file" : "DateTime/Locale/uz_Latn_UZ.pm" - }, - "DateTime::Locale::uz_UZ" : { - "file" : "DateTime/Locale/uz_UZ.pm" - }, - "DateTime::Locale::ve" : { - "file" : "DateTime/Locale/ve.pm" - }, - "DateTime::Locale::ve_ZA" : { - "file" : "DateTime/Locale/ve_ZA.pm" - }, - "DateTime::Locale::vi" : { - "file" : "DateTime/Locale/vi.pm" - }, - "DateTime::Locale::vi_VN" : { - "file" : "DateTime/Locale/vi_VN.pm" - }, - "DateTime::Locale::wal" : { - "file" : "DateTime/Locale/wal.pm" - }, - "DateTime::Locale::wal_ET" : { - "file" : "DateTime/Locale/wal_ET.pm" - }, - "DateTime::Locale::wo" : { - "file" : "DateTime/Locale/wo.pm" - }, - "DateTime::Locale::wo_Latn" : { - "file" : "DateTime/Locale/wo_Latn.pm" - }, - "DateTime::Locale::wo_Latn_SN" : { - "file" : "DateTime/Locale/wo_Latn_SN.pm" - }, - "DateTime::Locale::wo_SN" : { - "file" : "DateTime/Locale/wo_SN.pm" - }, - "DateTime::Locale::xh" : { - "file" : "DateTime/Locale/xh.pm" - }, - "DateTime::Locale::xh_ZA" : { - "file" : "DateTime/Locale/xh_ZA.pm" - }, - "DateTime::Locale::yo" : { - "file" : "DateTime/Locale/yo.pm" - }, - "DateTime::Locale::yo_NG" : { - "file" : "DateTime/Locale/yo_NG.pm" - }, - "DateTime::Locale::zh" : { - "file" : "DateTime/Locale/zh.pm" - }, - "DateTime::Locale::zh_CN" : { - "file" : "DateTime/Locale/zh_CN.pm" - }, - "DateTime::Locale::zh_HK" : { - "file" : "DateTime/Locale/zh_HK.pm" - }, - "DateTime::Locale::zh_Hans" : { - "file" : "DateTime/Locale/zh_Hans.pm" - }, - "DateTime::Locale::zh_Hans_CN" : { - "file" : "DateTime/Locale/zh_Hans_CN.pm" - }, - "DateTime::Locale::zh_Hans_HK" : { - "file" : "DateTime/Locale/zh_Hans_HK.pm" - }, - "DateTime::Locale::zh_Hans_MO" : { - "file" : "DateTime/Locale/zh_Hans_MO.pm" - }, - "DateTime::Locale::zh_Hans_SG" : { - "file" : "DateTime/Locale/zh_Hans_SG.pm" - }, - "DateTime::Locale::zh_Hant" : { - "file" : "DateTime/Locale/zh_Hant.pm" - }, - "DateTime::Locale::zh_Hant_HK" : { - "file" : "DateTime/Locale/zh_Hant_HK.pm" - }, - "DateTime::Locale::zh_Hant_MO" : { - "file" : "DateTime/Locale/zh_Hant_MO.pm" - }, - "DateTime::Locale::zh_Hant_TW" : { - "file" : "DateTime/Locale/zh_Hant_TW.pm" - }, - "DateTime::Locale::zh_MO" : { - "file" : "DateTime/Locale/zh_MO.pm" - }, - "DateTime::Locale::zh_SG" : { - "file" : "DateTime/Locale/zh_SG.pm" - }, - "DateTime::Locale::zh_TW" : { - "file" : "DateTime/Locale/zh_TW.pm" - }, - "DateTime::Locale::zu" : { - "file" : "DateTime/Locale/zu.pm" - }, - "DateTime::Locale::zu_ZA" : { - "file" : "DateTime/Locale/zu_ZA.pm" - } - }, - "target" : "DateTime::Locale", - "version" : "0.45" - }, - "DateTime::TimeZone" : { - "dist" : "DateTime-TimeZone-1.42", - "mymeta" : { - "abstract" : "Time zone object base class and factory", - "author" : [ - "Dave Rolsky <autarch@urth.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.300002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "DateTime-TimeZone", - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.58" - } - }, - "runtime" : { - "requires" : { - "Class::Load" : 0, - "Class::Singleton" : "1.03", - "Cwd" : "3", - "Params::Validate" : "0.72", - "Pod::Man" : "1.14", - "parent" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=DateTime-TimeZone" - }, - "repository" : { - "type" : "git", - "url" : "git://git.urth.org/DateTime-TimeZone.git" - } - }, - "version" : "1.42" - }, - "name" : "DateTime::TimeZone", - "pathname" : "D/DR/DROLSKY/DateTime-TimeZone-1.42.tar.gz", - "provides" : { - "DateTime::TimeZone" : { - "file" : "DateTime/TimeZone.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Abidjan" : { - "file" : "DateTime/TimeZone/Africa/Abidjan.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Accra" : { - "file" : "DateTime/TimeZone/Africa/Accra.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Addis_Ababa" : { - "file" : "DateTime/TimeZone/Africa/Addis_Ababa.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Algiers" : { - "file" : "DateTime/TimeZone/Africa/Algiers.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Asmara" : { - "file" : "DateTime/TimeZone/Africa/Asmara.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Bamako" : { - "file" : "DateTime/TimeZone/Africa/Bamako.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Bangui" : { - "file" : "DateTime/TimeZone/Africa/Bangui.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Banjul" : { - "file" : "DateTime/TimeZone/Africa/Banjul.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Bissau" : { - "file" : "DateTime/TimeZone/Africa/Bissau.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Blantyre" : { - "file" : "DateTime/TimeZone/Africa/Blantyre.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Brazzaville" : { - "file" : "DateTime/TimeZone/Africa/Brazzaville.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Bujumbura" : { - "file" : "DateTime/TimeZone/Africa/Bujumbura.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Cairo" : { - "file" : "DateTime/TimeZone/Africa/Cairo.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Casablanca" : { - "file" : "DateTime/TimeZone/Africa/Casablanca.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Ceuta" : { - "file" : "DateTime/TimeZone/Africa/Ceuta.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Conakry" : { - "file" : "DateTime/TimeZone/Africa/Conakry.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Dakar" : { - "file" : "DateTime/TimeZone/Africa/Dakar.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Dar_es_Salaam" : { - "file" : "DateTime/TimeZone/Africa/Dar_es_Salaam.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Djibouti" : { - "file" : "DateTime/TimeZone/Africa/Djibouti.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Douala" : { - "file" : "DateTime/TimeZone/Africa/Douala.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::El_Aaiun" : { - "file" : "DateTime/TimeZone/Africa/El_Aaiun.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Freetown" : { - "file" : "DateTime/TimeZone/Africa/Freetown.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Gaborone" : { - "file" : "DateTime/TimeZone/Africa/Gaborone.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Harare" : { - "file" : "DateTime/TimeZone/Africa/Harare.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Johannesburg" : { - "file" : "DateTime/TimeZone/Africa/Johannesburg.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Juba" : { - "file" : "DateTime/TimeZone/Africa/Juba.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Kampala" : { - "file" : "DateTime/TimeZone/Africa/Kampala.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Khartoum" : { - "file" : "DateTime/TimeZone/Africa/Khartoum.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Kigali" : { - "file" : "DateTime/TimeZone/Africa/Kigali.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Kinshasa" : { - "file" : "DateTime/TimeZone/Africa/Kinshasa.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Lagos" : { - "file" : "DateTime/TimeZone/Africa/Lagos.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Libreville" : { - "file" : "DateTime/TimeZone/Africa/Libreville.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Lome" : { - "file" : "DateTime/TimeZone/Africa/Lome.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Luanda" : { - "file" : "DateTime/TimeZone/Africa/Luanda.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Lubumbashi" : { - "file" : "DateTime/TimeZone/Africa/Lubumbashi.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Lusaka" : { - "file" : "DateTime/TimeZone/Africa/Lusaka.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Malabo" : { - "file" : "DateTime/TimeZone/Africa/Malabo.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Maputo" : { - "file" : "DateTime/TimeZone/Africa/Maputo.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Maseru" : { - "file" : "DateTime/TimeZone/Africa/Maseru.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Mbabane" : { - "file" : "DateTime/TimeZone/Africa/Mbabane.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Mogadishu" : { - "file" : "DateTime/TimeZone/Africa/Mogadishu.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Monrovia" : { - "file" : "DateTime/TimeZone/Africa/Monrovia.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Nairobi" : { - "file" : "DateTime/TimeZone/Africa/Nairobi.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Ndjamena" : { - "file" : "DateTime/TimeZone/Africa/Ndjamena.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Niamey" : { - "file" : "DateTime/TimeZone/Africa/Niamey.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Nouakchott" : { - "file" : "DateTime/TimeZone/Africa/Nouakchott.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Ouagadougou" : { - "file" : "DateTime/TimeZone/Africa/Ouagadougou.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Porto_Novo" : { - "file" : "DateTime/TimeZone/Africa/Porto_Novo.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Sao_Tome" : { - "file" : "DateTime/TimeZone/Africa/Sao_Tome.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Tripoli" : { - "file" : "DateTime/TimeZone/Africa/Tripoli.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Tunis" : { - "file" : "DateTime/TimeZone/Africa/Tunis.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Africa::Windhoek" : { - "file" : "DateTime/TimeZone/Africa/Windhoek.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Adak" : { - "file" : "DateTime/TimeZone/America/Adak.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Anchorage" : { - "file" : "DateTime/TimeZone/America/Anchorage.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Anguilla" : { - "file" : "DateTime/TimeZone/America/Anguilla.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Antigua" : { - "file" : "DateTime/TimeZone/America/Antigua.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Araguaina" : { - "file" : "DateTime/TimeZone/America/Araguaina.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Argentina::Buenos_Aires" : { - "file" : "DateTime/TimeZone/America/Argentina/Buenos_Aires.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Argentina::Catamarca" : { - "file" : "DateTime/TimeZone/America/Argentina/Catamarca.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Argentina::Cordoba" : { - "file" : "DateTime/TimeZone/America/Argentina/Cordoba.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Argentina::Jujuy" : { - "file" : "DateTime/TimeZone/America/Argentina/Jujuy.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Argentina::La_Rioja" : { - "file" : "DateTime/TimeZone/America/Argentina/La_Rioja.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Argentina::Mendoza" : { - "file" : "DateTime/TimeZone/America/Argentina/Mendoza.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Argentina::Rio_Gallegos" : { - "file" : "DateTime/TimeZone/America/Argentina/Rio_Gallegos.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Argentina::Salta" : { - "file" : "DateTime/TimeZone/America/Argentina/Salta.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Argentina::San_Juan" : { - "file" : "DateTime/TimeZone/America/Argentina/San_Juan.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Argentina::San_Luis" : { - "file" : "DateTime/TimeZone/America/Argentina/San_Luis.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Argentina::Tucuman" : { - "file" : "DateTime/TimeZone/America/Argentina/Tucuman.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Argentina::Ushuaia" : { - "file" : "DateTime/TimeZone/America/Argentina/Ushuaia.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Aruba" : { - "file" : "DateTime/TimeZone/America/Aruba.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Asuncion" : { - "file" : "DateTime/TimeZone/America/Asuncion.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Atikokan" : { - "file" : "DateTime/TimeZone/America/Atikokan.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Bahia" : { - "file" : "DateTime/TimeZone/America/Bahia.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Bahia_Banderas" : { - "file" : "DateTime/TimeZone/America/Bahia_Banderas.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Barbados" : { - "file" : "DateTime/TimeZone/America/Barbados.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Belem" : { - "file" : "DateTime/TimeZone/America/Belem.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Belize" : { - "file" : "DateTime/TimeZone/America/Belize.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Blanc_Sablon" : { - "file" : "DateTime/TimeZone/America/Blanc_Sablon.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Boa_Vista" : { - "file" : "DateTime/TimeZone/America/Boa_Vista.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Bogota" : { - "file" : "DateTime/TimeZone/America/Bogota.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Boise" : { - "file" : "DateTime/TimeZone/America/Boise.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Cambridge_Bay" : { - "file" : "DateTime/TimeZone/America/Cambridge_Bay.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Campo_Grande" : { - "file" : "DateTime/TimeZone/America/Campo_Grande.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Cancun" : { - "file" : "DateTime/TimeZone/America/Cancun.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Caracas" : { - "file" : "DateTime/TimeZone/America/Caracas.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Cayenne" : { - "file" : "DateTime/TimeZone/America/Cayenne.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Cayman" : { - "file" : "DateTime/TimeZone/America/Cayman.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Chicago" : { - "file" : "DateTime/TimeZone/America/Chicago.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Chihuahua" : { - "file" : "DateTime/TimeZone/America/Chihuahua.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Costa_Rica" : { - "file" : "DateTime/TimeZone/America/Costa_Rica.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Cuiaba" : { - "file" : "DateTime/TimeZone/America/Cuiaba.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Curacao" : { - "file" : "DateTime/TimeZone/America/Curacao.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Danmarkshavn" : { - "file" : "DateTime/TimeZone/America/Danmarkshavn.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Dawson" : { - "file" : "DateTime/TimeZone/America/Dawson.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Dawson_Creek" : { - "file" : "DateTime/TimeZone/America/Dawson_Creek.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Denver" : { - "file" : "DateTime/TimeZone/America/Denver.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Detroit" : { - "file" : "DateTime/TimeZone/America/Detroit.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Dominica" : { - "file" : "DateTime/TimeZone/America/Dominica.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Edmonton" : { - "file" : "DateTime/TimeZone/America/Edmonton.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Eirunepe" : { - "file" : "DateTime/TimeZone/America/Eirunepe.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::El_Salvador" : { - "file" : "DateTime/TimeZone/America/El_Salvador.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Fortaleza" : { - "file" : "DateTime/TimeZone/America/Fortaleza.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Glace_Bay" : { - "file" : "DateTime/TimeZone/America/Glace_Bay.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Godthab" : { - "file" : "DateTime/TimeZone/America/Godthab.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Goose_Bay" : { - "file" : "DateTime/TimeZone/America/Goose_Bay.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Grand_Turk" : { - "file" : "DateTime/TimeZone/America/Grand_Turk.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Grenada" : { - "file" : "DateTime/TimeZone/America/Grenada.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Guadeloupe" : { - "file" : "DateTime/TimeZone/America/Guadeloupe.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Guatemala" : { - "file" : "DateTime/TimeZone/America/Guatemala.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Guayaquil" : { - "file" : "DateTime/TimeZone/America/Guayaquil.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Guyana" : { - "file" : "DateTime/TimeZone/America/Guyana.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Halifax" : { - "file" : "DateTime/TimeZone/America/Halifax.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Havana" : { - "file" : "DateTime/TimeZone/America/Havana.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Hermosillo" : { - "file" : "DateTime/TimeZone/America/Hermosillo.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Indiana::Indianapolis" : { - "file" : "DateTime/TimeZone/America/Indiana/Indianapolis.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Indiana::Knox" : { - "file" : "DateTime/TimeZone/America/Indiana/Knox.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Indiana::Marengo" : { - "file" : "DateTime/TimeZone/America/Indiana/Marengo.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Indiana::Petersburg" : { - "file" : "DateTime/TimeZone/America/Indiana/Petersburg.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Indiana::Tell_City" : { - "file" : "DateTime/TimeZone/America/Indiana/Tell_City.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Indiana::Vevay" : { - "file" : "DateTime/TimeZone/America/Indiana/Vevay.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Indiana::Vincennes" : { - "file" : "DateTime/TimeZone/America/Indiana/Vincennes.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Indiana::Winamac" : { - "file" : "DateTime/TimeZone/America/Indiana/Winamac.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Inuvik" : { - "file" : "DateTime/TimeZone/America/Inuvik.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Iqaluit" : { - "file" : "DateTime/TimeZone/America/Iqaluit.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Jamaica" : { - "file" : "DateTime/TimeZone/America/Jamaica.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Juneau" : { - "file" : "DateTime/TimeZone/America/Juneau.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Kentucky::Louisville" : { - "file" : "DateTime/TimeZone/America/Kentucky/Louisville.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Kentucky::Monticello" : { - "file" : "DateTime/TimeZone/America/Kentucky/Monticello.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::La_Paz" : { - "file" : "DateTime/TimeZone/America/La_Paz.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Lima" : { - "file" : "DateTime/TimeZone/America/Lima.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Los_Angeles" : { - "file" : "DateTime/TimeZone/America/Los_Angeles.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Maceio" : { - "file" : "DateTime/TimeZone/America/Maceio.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Managua" : { - "file" : "DateTime/TimeZone/America/Managua.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Manaus" : { - "file" : "DateTime/TimeZone/America/Manaus.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Martinique" : { - "file" : "DateTime/TimeZone/America/Martinique.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Matamoros" : { - "file" : "DateTime/TimeZone/America/Matamoros.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Mazatlan" : { - "file" : "DateTime/TimeZone/America/Mazatlan.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Menominee" : { - "file" : "DateTime/TimeZone/America/Menominee.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Merida" : { - "file" : "DateTime/TimeZone/America/Merida.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Metlakatla" : { - "file" : "DateTime/TimeZone/America/Metlakatla.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Mexico_City" : { - "file" : "DateTime/TimeZone/America/Mexico_City.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Miquelon" : { - "file" : "DateTime/TimeZone/America/Miquelon.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Moncton" : { - "file" : "DateTime/TimeZone/America/Moncton.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Monterrey" : { - "file" : "DateTime/TimeZone/America/Monterrey.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Montevideo" : { - "file" : "DateTime/TimeZone/America/Montevideo.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Montreal" : { - "file" : "DateTime/TimeZone/America/Montreal.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Montserrat" : { - "file" : "DateTime/TimeZone/America/Montserrat.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Nassau" : { - "file" : "DateTime/TimeZone/America/Nassau.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::New_York" : { - "file" : "DateTime/TimeZone/America/New_York.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Nipigon" : { - "file" : "DateTime/TimeZone/America/Nipigon.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Nome" : { - "file" : "DateTime/TimeZone/America/Nome.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Noronha" : { - "file" : "DateTime/TimeZone/America/Noronha.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::North_Dakota::Beulah" : { - "file" : "DateTime/TimeZone/America/North_Dakota/Beulah.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::North_Dakota::Center" : { - "file" : "DateTime/TimeZone/America/North_Dakota/Center.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::North_Dakota::New_Salem" : { - "file" : "DateTime/TimeZone/America/North_Dakota/New_Salem.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Ojinaga" : { - "file" : "DateTime/TimeZone/America/Ojinaga.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Panama" : { - "file" : "DateTime/TimeZone/America/Panama.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Pangnirtung" : { - "file" : "DateTime/TimeZone/America/Pangnirtung.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Paramaribo" : { - "file" : "DateTime/TimeZone/America/Paramaribo.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Phoenix" : { - "file" : "DateTime/TimeZone/America/Phoenix.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Port_au_Prince" : { - "file" : "DateTime/TimeZone/America/Port_au_Prince.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Port_of_Spain" : { - "file" : "DateTime/TimeZone/America/Port_of_Spain.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Porto_Velho" : { - "file" : "DateTime/TimeZone/America/Porto_Velho.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Puerto_Rico" : { - "file" : "DateTime/TimeZone/America/Puerto_Rico.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Rainy_River" : { - "file" : "DateTime/TimeZone/America/Rainy_River.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Rankin_Inlet" : { - "file" : "DateTime/TimeZone/America/Rankin_Inlet.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Recife" : { - "file" : "DateTime/TimeZone/America/Recife.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Regina" : { - "file" : "DateTime/TimeZone/America/Regina.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Resolute" : { - "file" : "DateTime/TimeZone/America/Resolute.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Rio_Branco" : { - "file" : "DateTime/TimeZone/America/Rio_Branco.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Santa_Isabel" : { - "file" : "DateTime/TimeZone/America/Santa_Isabel.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Santarem" : { - "file" : "DateTime/TimeZone/America/Santarem.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Santiago" : { - "file" : "DateTime/TimeZone/America/Santiago.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Santo_Domingo" : { - "file" : "DateTime/TimeZone/America/Santo_Domingo.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Sao_Paulo" : { - "file" : "DateTime/TimeZone/America/Sao_Paulo.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Scoresbysund" : { - "file" : "DateTime/TimeZone/America/Scoresbysund.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Sitka" : { - "file" : "DateTime/TimeZone/America/Sitka.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::St_Johns" : { - "file" : "DateTime/TimeZone/America/St_Johns.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::St_Kitts" : { - "file" : "DateTime/TimeZone/America/St_Kitts.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::St_Lucia" : { - "file" : "DateTime/TimeZone/America/St_Lucia.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::St_Thomas" : { - "file" : "DateTime/TimeZone/America/St_Thomas.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::St_Vincent" : { - "file" : "DateTime/TimeZone/America/St_Vincent.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Swift_Current" : { - "file" : "DateTime/TimeZone/America/Swift_Current.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Tegucigalpa" : { - "file" : "DateTime/TimeZone/America/Tegucigalpa.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Thule" : { - "file" : "DateTime/TimeZone/America/Thule.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Thunder_Bay" : { - "file" : "DateTime/TimeZone/America/Thunder_Bay.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Tijuana" : { - "file" : "DateTime/TimeZone/America/Tijuana.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Toronto" : { - "file" : "DateTime/TimeZone/America/Toronto.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Tortola" : { - "file" : "DateTime/TimeZone/America/Tortola.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Vancouver" : { - "file" : "DateTime/TimeZone/America/Vancouver.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Whitehorse" : { - "file" : "DateTime/TimeZone/America/Whitehorse.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Winnipeg" : { - "file" : "DateTime/TimeZone/America/Winnipeg.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Yakutat" : { - "file" : "DateTime/TimeZone/America/Yakutat.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::America::Yellowknife" : { - "file" : "DateTime/TimeZone/America/Yellowknife.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Antarctica::Casey" : { - "file" : "DateTime/TimeZone/Antarctica/Casey.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Antarctica::Davis" : { - "file" : "DateTime/TimeZone/Antarctica/Davis.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Antarctica::DumontDUrville" : { - "file" : "DateTime/TimeZone/Antarctica/DumontDUrville.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Antarctica::Macquarie" : { - "file" : "DateTime/TimeZone/Antarctica/Macquarie.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Antarctica::Mawson" : { - "file" : "DateTime/TimeZone/Antarctica/Mawson.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Antarctica::McMurdo" : { - "file" : "DateTime/TimeZone/Antarctica/McMurdo.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Antarctica::Palmer" : { - "file" : "DateTime/TimeZone/Antarctica/Palmer.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Antarctica::Rothera" : { - "file" : "DateTime/TimeZone/Antarctica/Rothera.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Antarctica::Syowa" : { - "file" : "DateTime/TimeZone/Antarctica/Syowa.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Antarctica::Vostok" : { - "file" : "DateTime/TimeZone/Antarctica/Vostok.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Aden" : { - "file" : "DateTime/TimeZone/Asia/Aden.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Almaty" : { - "file" : "DateTime/TimeZone/Asia/Almaty.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Amman" : { - "file" : "DateTime/TimeZone/Asia/Amman.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Anadyr" : { - "file" : "DateTime/TimeZone/Asia/Anadyr.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Aqtau" : { - "file" : "DateTime/TimeZone/Asia/Aqtau.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Aqtobe" : { - "file" : "DateTime/TimeZone/Asia/Aqtobe.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Ashgabat" : { - "file" : "DateTime/TimeZone/Asia/Ashgabat.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Baghdad" : { - "file" : "DateTime/TimeZone/Asia/Baghdad.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Bahrain" : { - "file" : "DateTime/TimeZone/Asia/Bahrain.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Baku" : { - "file" : "DateTime/TimeZone/Asia/Baku.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Bangkok" : { - "file" : "DateTime/TimeZone/Asia/Bangkok.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Beirut" : { - "file" : "DateTime/TimeZone/Asia/Beirut.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Bishkek" : { - "file" : "DateTime/TimeZone/Asia/Bishkek.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Brunei" : { - "file" : "DateTime/TimeZone/Asia/Brunei.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Choibalsan" : { - "file" : "DateTime/TimeZone/Asia/Choibalsan.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Chongqing" : { - "file" : "DateTime/TimeZone/Asia/Chongqing.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Colombo" : { - "file" : "DateTime/TimeZone/Asia/Colombo.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Damascus" : { - "file" : "DateTime/TimeZone/Asia/Damascus.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Dhaka" : { - "file" : "DateTime/TimeZone/Asia/Dhaka.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Dili" : { - "file" : "DateTime/TimeZone/Asia/Dili.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Dubai" : { - "file" : "DateTime/TimeZone/Asia/Dubai.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Dushanbe" : { - "file" : "DateTime/TimeZone/Asia/Dushanbe.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Gaza" : { - "file" : "DateTime/TimeZone/Asia/Gaza.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Harbin" : { - "file" : "DateTime/TimeZone/Asia/Harbin.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Hebron" : { - "file" : "DateTime/TimeZone/Asia/Hebron.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Ho_Chi_Minh" : { - "file" : "DateTime/TimeZone/Asia/Ho_Chi_Minh.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Hong_Kong" : { - "file" : "DateTime/TimeZone/Asia/Hong_Kong.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Hovd" : { - "file" : "DateTime/TimeZone/Asia/Hovd.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Irkutsk" : { - "file" : "DateTime/TimeZone/Asia/Irkutsk.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Jakarta" : { - "file" : "DateTime/TimeZone/Asia/Jakarta.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Jayapura" : { - "file" : "DateTime/TimeZone/Asia/Jayapura.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Jerusalem" : { - "file" : "DateTime/TimeZone/Asia/Jerusalem.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Kabul" : { - "file" : "DateTime/TimeZone/Asia/Kabul.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Kamchatka" : { - "file" : "DateTime/TimeZone/Asia/Kamchatka.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Karachi" : { - "file" : "DateTime/TimeZone/Asia/Karachi.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Kashgar" : { - "file" : "DateTime/TimeZone/Asia/Kashgar.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Kathmandu" : { - "file" : "DateTime/TimeZone/Asia/Kathmandu.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Kolkata" : { - "file" : "DateTime/TimeZone/Asia/Kolkata.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Krasnoyarsk" : { - "file" : "DateTime/TimeZone/Asia/Krasnoyarsk.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Kuala_Lumpur" : { - "file" : "DateTime/TimeZone/Asia/Kuala_Lumpur.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Kuching" : { - "file" : "DateTime/TimeZone/Asia/Kuching.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Kuwait" : { - "file" : "DateTime/TimeZone/Asia/Kuwait.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Macau" : { - "file" : "DateTime/TimeZone/Asia/Macau.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Magadan" : { - "file" : "DateTime/TimeZone/Asia/Magadan.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Makassar" : { - "file" : "DateTime/TimeZone/Asia/Makassar.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Manila" : { - "file" : "DateTime/TimeZone/Asia/Manila.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Muscat" : { - "file" : "DateTime/TimeZone/Asia/Muscat.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Nicosia" : { - "file" : "DateTime/TimeZone/Asia/Nicosia.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Novokuznetsk" : { - "file" : "DateTime/TimeZone/Asia/Novokuznetsk.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Novosibirsk" : { - "file" : "DateTime/TimeZone/Asia/Novosibirsk.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Omsk" : { - "file" : "DateTime/TimeZone/Asia/Omsk.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Oral" : { - "file" : "DateTime/TimeZone/Asia/Oral.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Phnom_Penh" : { - "file" : "DateTime/TimeZone/Asia/Phnom_Penh.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Pontianak" : { - "file" : "DateTime/TimeZone/Asia/Pontianak.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Pyongyang" : { - "file" : "DateTime/TimeZone/Asia/Pyongyang.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Qatar" : { - "file" : "DateTime/TimeZone/Asia/Qatar.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Qyzylorda" : { - "file" : "DateTime/TimeZone/Asia/Qyzylorda.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Rangoon" : { - "file" : "DateTime/TimeZone/Asia/Rangoon.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Riyadh" : { - "file" : "DateTime/TimeZone/Asia/Riyadh.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Sakhalin" : { - "file" : "DateTime/TimeZone/Asia/Sakhalin.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Samarkand" : { - "file" : "DateTime/TimeZone/Asia/Samarkand.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Seoul" : { - "file" : "DateTime/TimeZone/Asia/Seoul.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Shanghai" : { - "file" : "DateTime/TimeZone/Asia/Shanghai.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Singapore" : { - "file" : "DateTime/TimeZone/Asia/Singapore.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Taipei" : { - "file" : "DateTime/TimeZone/Asia/Taipei.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Tashkent" : { - "file" : "DateTime/TimeZone/Asia/Tashkent.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Tbilisi" : { - "file" : "DateTime/TimeZone/Asia/Tbilisi.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Tehran" : { - "file" : "DateTime/TimeZone/Asia/Tehran.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Thimphu" : { - "file" : "DateTime/TimeZone/Asia/Thimphu.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Tokyo" : { - "file" : "DateTime/TimeZone/Asia/Tokyo.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Ulaanbaatar" : { - "file" : "DateTime/TimeZone/Asia/Ulaanbaatar.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Urumqi" : { - "file" : "DateTime/TimeZone/Asia/Urumqi.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Vientiane" : { - "file" : "DateTime/TimeZone/Asia/Vientiane.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Vladivostok" : { - "file" : "DateTime/TimeZone/Asia/Vladivostok.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Yakutsk" : { - "file" : "DateTime/TimeZone/Asia/Yakutsk.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Yekaterinburg" : { - "file" : "DateTime/TimeZone/Asia/Yekaterinburg.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Asia::Yerevan" : { - "file" : "DateTime/TimeZone/Asia/Yerevan.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Atlantic::Azores" : { - "file" : "DateTime/TimeZone/Atlantic/Azores.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Atlantic::Bermuda" : { - "file" : "DateTime/TimeZone/Atlantic/Bermuda.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Atlantic::Canary" : { - "file" : "DateTime/TimeZone/Atlantic/Canary.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Atlantic::Cape_Verde" : { - "file" : "DateTime/TimeZone/Atlantic/Cape_Verde.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Atlantic::Faroe" : { - "file" : "DateTime/TimeZone/Atlantic/Faroe.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Atlantic::Madeira" : { - "file" : "DateTime/TimeZone/Atlantic/Madeira.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Atlantic::Reykjavik" : { - "file" : "DateTime/TimeZone/Atlantic/Reykjavik.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Atlantic::South_Georgia" : { - "file" : "DateTime/TimeZone/Atlantic/South_Georgia.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Atlantic::St_Helena" : { - "file" : "DateTime/TimeZone/Atlantic/St_Helena.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Atlantic::Stanley" : { - "file" : "DateTime/TimeZone/Atlantic/Stanley.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Australia::Adelaide" : { - "file" : "DateTime/TimeZone/Australia/Adelaide.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Australia::Brisbane" : { - "file" : "DateTime/TimeZone/Australia/Brisbane.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Australia::Broken_Hill" : { - "file" : "DateTime/TimeZone/Australia/Broken_Hill.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Australia::Currie" : { - "file" : "DateTime/TimeZone/Australia/Currie.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Australia::Darwin" : { - "file" : "DateTime/TimeZone/Australia/Darwin.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Australia::Eucla" : { - "file" : "DateTime/TimeZone/Australia/Eucla.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Australia::Hobart" : { - "file" : "DateTime/TimeZone/Australia/Hobart.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Australia::Lindeman" : { - "file" : "DateTime/TimeZone/Australia/Lindeman.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Australia::Lord_Howe" : { - "file" : "DateTime/TimeZone/Australia/Lord_Howe.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Australia::Melbourne" : { - "file" : "DateTime/TimeZone/Australia/Melbourne.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Australia::Perth" : { - "file" : "DateTime/TimeZone/Australia/Perth.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Australia::Sydney" : { - "file" : "DateTime/TimeZone/Australia/Sydney.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::CET" : { - "file" : "DateTime/TimeZone/CET.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::CST6CDT" : { - "file" : "DateTime/TimeZone/CST6CDT.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Catalog" : { - "file" : "DateTime/TimeZone/Catalog.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::EET" : { - "file" : "DateTime/TimeZone/EET.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::EST" : { - "file" : "DateTime/TimeZone/EST.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::EST5EDT" : { - "file" : "DateTime/TimeZone/EST5EDT.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Amsterdam" : { - "file" : "DateTime/TimeZone/Europe/Amsterdam.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Andorra" : { - "file" : "DateTime/TimeZone/Europe/Andorra.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Athens" : { - "file" : "DateTime/TimeZone/Europe/Athens.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Belgrade" : { - "file" : "DateTime/TimeZone/Europe/Belgrade.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Berlin" : { - "file" : "DateTime/TimeZone/Europe/Berlin.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Brussels" : { - "file" : "DateTime/TimeZone/Europe/Brussels.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Bucharest" : { - "file" : "DateTime/TimeZone/Europe/Bucharest.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Budapest" : { - "file" : "DateTime/TimeZone/Europe/Budapest.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Chisinau" : { - "file" : "DateTime/TimeZone/Europe/Chisinau.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Copenhagen" : { - "file" : "DateTime/TimeZone/Europe/Copenhagen.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Dublin" : { - "file" : "DateTime/TimeZone/Europe/Dublin.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Gibraltar" : { - "file" : "DateTime/TimeZone/Europe/Gibraltar.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Helsinki" : { - "file" : "DateTime/TimeZone/Europe/Helsinki.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Istanbul" : { - "file" : "DateTime/TimeZone/Europe/Istanbul.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Kaliningrad" : { - "file" : "DateTime/TimeZone/Europe/Kaliningrad.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Kiev" : { - "file" : "DateTime/TimeZone/Europe/Kiev.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Lisbon" : { - "file" : "DateTime/TimeZone/Europe/Lisbon.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::London" : { - "file" : "DateTime/TimeZone/Europe/London.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Luxembourg" : { - "file" : "DateTime/TimeZone/Europe/Luxembourg.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Madrid" : { - "file" : "DateTime/TimeZone/Europe/Madrid.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Malta" : { - "file" : "DateTime/TimeZone/Europe/Malta.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Minsk" : { - "file" : "DateTime/TimeZone/Europe/Minsk.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Monaco" : { - "file" : "DateTime/TimeZone/Europe/Monaco.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Moscow" : { - "file" : "DateTime/TimeZone/Europe/Moscow.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Oslo" : { - "file" : "DateTime/TimeZone/Europe/Oslo.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Paris" : { - "file" : "DateTime/TimeZone/Europe/Paris.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Prague" : { - "file" : "DateTime/TimeZone/Europe/Prague.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Riga" : { - "file" : "DateTime/TimeZone/Europe/Riga.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Rome" : { - "file" : "DateTime/TimeZone/Europe/Rome.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Samara" : { - "file" : "DateTime/TimeZone/Europe/Samara.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Simferopol" : { - "file" : "DateTime/TimeZone/Europe/Simferopol.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Sofia" : { - "file" : "DateTime/TimeZone/Europe/Sofia.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Stockholm" : { - "file" : "DateTime/TimeZone/Europe/Stockholm.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Tallinn" : { - "file" : "DateTime/TimeZone/Europe/Tallinn.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Tirane" : { - "file" : "DateTime/TimeZone/Europe/Tirane.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Uzhgorod" : { - "file" : "DateTime/TimeZone/Europe/Uzhgorod.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Vaduz" : { - "file" : "DateTime/TimeZone/Europe/Vaduz.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Vienna" : { - "file" : "DateTime/TimeZone/Europe/Vienna.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Vilnius" : { - "file" : "DateTime/TimeZone/Europe/Vilnius.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Volgograd" : { - "file" : "DateTime/TimeZone/Europe/Volgograd.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Warsaw" : { - "file" : "DateTime/TimeZone/Europe/Warsaw.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Zaporozhye" : { - "file" : "DateTime/TimeZone/Europe/Zaporozhye.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Europe::Zurich" : { - "file" : "DateTime/TimeZone/Europe/Zurich.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Floating" : { - "file" : "DateTime/TimeZone/Floating.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::HST" : { - "file" : "DateTime/TimeZone/HST.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Indian::Antananarivo" : { - "file" : "DateTime/TimeZone/Indian/Antananarivo.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Indian::Chagos" : { - "file" : "DateTime/TimeZone/Indian/Chagos.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Indian::Christmas" : { - "file" : "DateTime/TimeZone/Indian/Christmas.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Indian::Cocos" : { - "file" : "DateTime/TimeZone/Indian/Cocos.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Indian::Comoro" : { - "file" : "DateTime/TimeZone/Indian/Comoro.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Indian::Kerguelen" : { - "file" : "DateTime/TimeZone/Indian/Kerguelen.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Indian::Mahe" : { - "file" : "DateTime/TimeZone/Indian/Mahe.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Indian::Maldives" : { - "file" : "DateTime/TimeZone/Indian/Maldives.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Indian::Mauritius" : { - "file" : "DateTime/TimeZone/Indian/Mauritius.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Indian::Mayotte" : { - "file" : "DateTime/TimeZone/Indian/Mayotte.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Indian::Reunion" : { - "file" : "DateTime/TimeZone/Indian/Reunion.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Local" : { - "file" : "DateTime/TimeZone/Local.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Local::Unix" : { - "file" : "DateTime/TimeZone/Local/Unix.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Local::VMS" : { - "file" : "DateTime/TimeZone/Local/VMS.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Local::Win32" : { - "file" : "DateTime/TimeZone/Local/Win32.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::MET" : { - "file" : "DateTime/TimeZone/MET.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::MST" : { - "file" : "DateTime/TimeZone/MST.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::MST7MDT" : { - "file" : "DateTime/TimeZone/MST7MDT.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::OffsetOnly" : { - "file" : "DateTime/TimeZone/OffsetOnly.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::OlsonDB" : { - "file" : "DateTime/TimeZone/OlsonDB.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::OlsonDB::Change" : { - "file" : "DateTime/TimeZone/OlsonDB/Change.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::OlsonDB::Observance" : { - "file" : "DateTime/TimeZone/OlsonDB/Observance.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::OlsonDB::Rule" : { - "file" : "DateTime/TimeZone/OlsonDB/Rule.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::OlsonDB::Zone" : { - "file" : "DateTime/TimeZone/OlsonDB/Zone.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::PST8PDT" : { - "file" : "DateTime/TimeZone/PST8PDT.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Apia" : { - "file" : "DateTime/TimeZone/Pacific/Apia.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Auckland" : { - "file" : "DateTime/TimeZone/Pacific/Auckland.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Chatham" : { - "file" : "DateTime/TimeZone/Pacific/Chatham.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Chuuk" : { - "file" : "DateTime/TimeZone/Pacific/Chuuk.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Easter" : { - "file" : "DateTime/TimeZone/Pacific/Easter.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Efate" : { - "file" : "DateTime/TimeZone/Pacific/Efate.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Enderbury" : { - "file" : "DateTime/TimeZone/Pacific/Enderbury.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Fakaofo" : { - "file" : "DateTime/TimeZone/Pacific/Fakaofo.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Fiji" : { - "file" : "DateTime/TimeZone/Pacific/Fiji.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Funafuti" : { - "file" : "DateTime/TimeZone/Pacific/Funafuti.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Galapagos" : { - "file" : "DateTime/TimeZone/Pacific/Galapagos.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Gambier" : { - "file" : "DateTime/TimeZone/Pacific/Gambier.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Guadalcanal" : { - "file" : "DateTime/TimeZone/Pacific/Guadalcanal.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Guam" : { - "file" : "DateTime/TimeZone/Pacific/Guam.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Honolulu" : { - "file" : "DateTime/TimeZone/Pacific/Honolulu.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Johnston" : { - "file" : "DateTime/TimeZone/Pacific/Johnston.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Kiritimati" : { - "file" : "DateTime/TimeZone/Pacific/Kiritimati.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Kosrae" : { - "file" : "DateTime/TimeZone/Pacific/Kosrae.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Kwajalein" : { - "file" : "DateTime/TimeZone/Pacific/Kwajalein.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Majuro" : { - "file" : "DateTime/TimeZone/Pacific/Majuro.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Marquesas" : { - "file" : "DateTime/TimeZone/Pacific/Marquesas.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Midway" : { - "file" : "DateTime/TimeZone/Pacific/Midway.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Nauru" : { - "file" : "DateTime/TimeZone/Pacific/Nauru.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Niue" : { - "file" : "DateTime/TimeZone/Pacific/Niue.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Norfolk" : { - "file" : "DateTime/TimeZone/Pacific/Norfolk.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Noumea" : { - "file" : "DateTime/TimeZone/Pacific/Noumea.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Pago_Pago" : { - "file" : "DateTime/TimeZone/Pacific/Pago_Pago.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Palau" : { - "file" : "DateTime/TimeZone/Pacific/Palau.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Pitcairn" : { - "file" : "DateTime/TimeZone/Pacific/Pitcairn.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Pohnpei" : { - "file" : "DateTime/TimeZone/Pacific/Pohnpei.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Port_Moresby" : { - "file" : "DateTime/TimeZone/Pacific/Port_Moresby.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Rarotonga" : { - "file" : "DateTime/TimeZone/Pacific/Rarotonga.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Saipan" : { - "file" : "DateTime/TimeZone/Pacific/Saipan.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Tahiti" : { - "file" : "DateTime/TimeZone/Pacific/Tahiti.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Tarawa" : { - "file" : "DateTime/TimeZone/Pacific/Tarawa.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Tongatapu" : { - "file" : "DateTime/TimeZone/Pacific/Tongatapu.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Wake" : { - "file" : "DateTime/TimeZone/Pacific/Wake.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::Pacific::Wallis" : { - "file" : "DateTime/TimeZone/Pacific/Wallis.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::UTC" : { - "file" : "DateTime/TimeZone/UTC.pm", - "version" : "1.42" - }, - "DateTime::TimeZone::WET" : { - "file" : "DateTime/TimeZone/WET.pm", - "version" : "1.42" - } - }, - "target" : "DateTime::TimeZone", - "version" : "1.42" - }, - "Devel::Caller" : { - "dist" : "Devel-Caller-2.05", - "module" : "Devel::Caller", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.48, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Devel-Caller", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "PadWalker" : "0.08", - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "version" : "2.05" - }, - "name" : "Devel::Caller", - "pathname" : "R/RC/RCLAMP/Devel-Caller-2.05.tar.gz", - "provides" : { - "Devel::Caller" : { - "file" : "Devel/Caller.pm", - "version" : "2.05" - } - }, - "version" : "2.05" - }, - "Devel::GlobalDestruction" : { - "dist" : "Devel-GlobalDestruction-0.04", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.57_05, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Devel-GlobalDestruction", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Sub::Exporter" : 0, - "perl" : "5.006000" - } - } - }, - "release_status" : "stable", - "version" : "0.04" - }, - "name" : "Devel::GlobalDestruction", - "pathname" : "F/FL/FLORA/Devel-GlobalDestruction-0.04.tar.gz", - "provides" : { - "Devel::GlobalDestruction" : { - "file" : "Devel/GlobalDestruction.pm", - "version" : "0.04" - } - }, - "target" : "Devel::GlobalDestruction", - "version" : "0.04" - }, - "Devel::StackTrace" : { - "dist" : "Devel-StackTrace-1.27", - "module" : "Devel::StackTrace", - "mymeta" : { - "abstract" : "An object representing a stack trace", - "author" : [ - "Dave Rolsky <autarch@urth.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.200000, CPAN::Meta::Converter version 2.102400, CPAN::Meta::Converter version 2.112150", - "license" : [ - "artistic_2" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Devel-StackTrace", - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.31" - } - }, - "runtime" : { - "requires" : { - "File::Spec" : 0, - "Scalar::Util" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=Devel-StackTrace" - }, - "repository" : { - "url" : "http://hg.urth.org/hg/Devel-StackTrace" - } - }, - "version" : "1.27" - }, - "name" : "Devel::StackTrace", - "pathname" : "D/DR/DROLSKY/Devel-StackTrace-1.27.tar.gz", - "provides" : { - "Devel::StackTrace" : { - "file" : "Devel/StackTrace.pm", - "version" : "1.27" - }, - "Devel::StackTrace::Frame" : { - "file" : "Devel/StackTrace/Frame.pm", - "version" : "1.27" - } - }, - "version" : "1.27" - }, - "Digest::HMAC" : { - "dist" : "Digest-HMAC-1.03", - "mymeta" : { - "abstract" : "Keyed-Hashing for Message Authentication", - "author" : [ - "Gisle Aas <gisle@activestate.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.57_05, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Digest-HMAC", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Digest::MD5" : "2", - "Digest::SHA" : "1", - "perl" : "5.004" - } - } - }, - "release_status" : "stable", - "version" : "1.03" - }, - "name" : "Digest::HMAC", - "pathname" : "G/GA/GAAS/Digest-HMAC-1.03.tar.gz", - "provides" : { - "Digest::HMAC" : { - "file" : "Digest/HMAC.pm", - "version" : "1.03" - }, - "Digest::HMAC_MD5" : { - "file" : "Digest/HMAC_MD5.pm", - "version" : "1.01" - }, - "Digest::HMAC_SHA1" : { - "file" : "Digest/HMAC_SHA1.pm", - "version" : "1.03" - } - }, - "target" : "Digest::HMAC_MD5", - "version" : "1.03" - }, - "Digest::SHA1" : { - "dist" : "Digest-SHA1-2.13", - "mymeta" : { - "abstract" : "Perl interface to the SHA-1 algorithm", - "author" : [ - "Gisle Aas <gisle@activestate.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Digest-SHA1", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Digest::base" : "1.00", - "perl" : "5.004" - } - } - }, - "release_status" : "stable", - "version" : "2.13", - "x_repository" : "http://github.com/gisle/digest-sha1" - }, - "name" : "Digest::SHA1", - "pathname" : "G/GA/GAAS/Digest-SHA1-2.13.tar.gz", - "provides" : { - "Digest::SHA1" : { - "file" : "Digest/SHA1.pm", - "version" : "2.13" - } - }, - "target" : "Digest::SHA1", - "version" : "2.13" - }, - "Dir::Self" : { - "dist" : "Dir-Self-0.10", - "mymeta" : { - "abstract" : "a __DIR__ constant for the directory your source file is in", - "author" : [ - "Lukas Mai <l.mai @web.de>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.44, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Dir-Self", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "File::Spec" : 0, - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.10" - }, - "name" : "Dir::Self", - "pathname" : "M/MA/MAUKE/Dir-Self-0.10.tar.gz", - "provides" : { - "Dir::Self" : { - "file" : "Dir/Self.pm", - "version" : "0.10" - } - }, - "target" : "Dir::Self", - "version" : "0.10" - }, - "Dist::CheckConflicts" : { - "dist" : "Dist-CheckConflicts-0.02", - "mymeta" : { - "abstract" : "declare version conflicts for your dist", - "author" : [ - "Jesse Luehrs <doy at tozt dot net>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.200000, CPAN::Meta::Converter version 2.101670, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Dist-CheckConflicts", - "prereqs" : { - "build" : { - "requires" : { - "Test::Fatal" : 0, - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.31" - } - }, - "runtime" : { - "requires" : { - "List::MoreUtils" : "0.12", - "Sub::Exporter" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "type" : "git", - "url" : "git://github.com/doy/dist-checkconflicts.git" - } - }, - "version" : "0.02", - "x_Dist_Zilla" : { - "plugins" : [ - { - "class" : "Dist::Zilla::Plugin::GatherDir", - "name" : "@DOY/GatherDir", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::PruneCruft", - "name" : "@DOY/PruneCruft", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::ManifestSkip", - "name" : "@DOY/ManifestSkip", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::MetaYAML", - "name" : "@DOY/MetaYAML", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::License", - "name" : "@DOY/License", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::Readme", - "name" : "@DOY/Readme", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::ExtraTests", - "name" : "@DOY/ExtraTests", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::ExecDir", - "name" : "@DOY/ExecDir", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::ShareDir", - "name" : "@DOY/ShareDir", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::MakeMaker", - "name" : "@DOY/MakeMaker", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::Manifest", - "name" : "@DOY/Manifest", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::TestRelease", - "name" : "@DOY/TestRelease", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::ConfirmRelease", - "name" : "@DOY/ConfirmRelease", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::MetaConfig", - "name" : "@DOY/MetaConfig", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::MetaJSON", - "name" : "@DOY/MetaJSON", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::NextRelease", - "name" : "@DOY/NextRelease", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::CheckChangesHasContent", - "name" : "@DOY/CheckChangesHasContent", - "version" : "0.003" - }, - { - "class" : "Dist::Zilla::Plugin::PkgVersion", - "name" : "@DOY/PkgVersion", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::PodCoverageTests", - "name" : "@DOY/PodCoverageTests", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::PodSyntaxTests", - "name" : "@DOY/PodSyntaxTests", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::NoTabsTests", - "name" : "@DOY/NoTabsTests", - "version" : "0.01" - }, - { - "class" : "Dist::Zilla::Plugin::EOLTests", - "name" : "@DOY/EOLTests", - "version" : "0.02" - }, - { - "class" : "Dist::Zilla::Plugin::CompileTests", - "name" : "@DOY/CompileTests", - "version" : "1.101800" - }, - { - "class" : "Dist::Zilla::Plugin::Repository", - "name" : "@DOY/Repository", - "version" : "0.13" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Check", - "name" : "@DOY/Git::Check", - "version" : "1.103520" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Tag", - "name" : "@DOY/Git::Tag", - "version" : "1.103520" - }, - { - "class" : "Dist::Zilla::Plugin::BumpVersionFromGit", - "name" : "@DOY/BumpVersionFromGit", - "version" : "0.007" - }, - { - "class" : "Dist::Zilla::Plugin::PodWeaver", - "name" : "@DOY/PodWeaver", - "version" : "3.101640" - }, - { - "class" : "Dist::Zilla::Plugin::UploadToCPAN", - "name" : "@DOY/UploadToCPAN", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "runtime", - "type" : "requires" - } - }, - "name" : "Prereqs", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "test", - "type" : "requires" - } - }, - "name" : "TestRequires", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":InstallModules", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":TestFiles", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ExecFiles", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ShareFiles", - "version" : "4.200000" - } - ], - "zilla" : { - "class" : "Dist::Zilla::Dist::Builder", - "config" : { - "is_trial" : 0 - }, - "version" : "4.200000" - } - } - }, - "name" : "Dist::CheckConflicts", - "pathname" : "D/DO/DOY/Dist-CheckConflicts-0.02.tar.gz", - "provides" : { - "Dist::CheckConflicts" : { - "file" : "Dist/CheckConflicts.pm", - "version" : "0.02" - } - }, - "target" : "Dist::CheckConflicts", - "version" : "0.02" - }, - "Dist::Metadata" : { - "dist" : "Dist-Metadata-0.923", - "module" : "Dist::Metadata", - "mymeta" : { - "abstract" : "Information about a perl module distribution", - "author" : [ - "Randy Stauner <rwstauner@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.300018, CPAN::Meta::Converter version 2.120921, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Dist-Metadata", - "no_index" : { - "directory" : [ - "corpus", - "examples", - "inc", - "share", - "t", - "xt" - ], - "namespace" : [ - "Local", - "t::lib" - ], - "package" : [ - "DB" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0, - "File::Spec" : 0, - "File::Spec::Functions" : 0, - "Test::Fatal" : 0, - "Test::MockObject" : "1.09", - "Test::More" : "0.96" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.30" - } - }, - "runtime" : { - "requires" : { - "Archive::Tar" : "1", - "Archive::Zip" : "1.30", - "CPAN::DistnameInfo" : "0.12", - "CPAN::Meta" : "2.1", - "Carp" : 0, - "File::Basename" : 0, - "File::Find" : 0, - "File::Spec::Native" : "1.002", - "File::Temp" : "0.19", - "List::Util" : 0, - "Module::Metadata" : 0, - "Path::Class" : "0.24", - "Try::Tiny" : "0.09", - "constant" : 0, - "parent" : 0, - "strict" : 0, - "warnings" : 0 - } - } - }, - "provides" : { - "Dist::Metadata" : { - "file" : "lib/Dist/Metadata.pm", - "version" : "0.923" - }, - "Dist::Metadata::Archive" : { - "file" : "lib/Dist/Metadata/Archive.pm", - "version" : "0.923" - }, - "Dist::Metadata::Dir" : { - "file" : "lib/Dist/Metadata/Dir.pm", - "version" : "0.923" - }, - "Dist::Metadata::Dist" : { - "file" : "lib/Dist/Metadata/Dist.pm", - "version" : "0.923" - }, - "Dist::Metadata::Struct" : { - "file" : "lib/Dist/Metadata/Struct.pm", - "version" : "0.923" - }, - "Dist::Metadata::Tar" : { - "file" : "lib/Dist/Metadata/Tar.pm", - "version" : "0.923" - }, - "Dist::Metadata::Zip" : { - "file" : "lib/Dist/Metadata/Zip.pm", - "version" : "0.923" - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=Dist-Metadata" - }, - "homepage" : "https://github.com/rwstauner/Dist-Metadata", - "repository" : { - "url" : "https://github.com/rwstauner/Dist-Metadata.git" - } - }, - "version" : "0.923", - "x_Dist_Zilla" : { - "plugins" : [ - { - "class" : "Dist::Zilla::Plugin::Git::NextVersion", - "name" : "@Author::RWSTAUNER/Git::NextVersion", - "version" : "1.121010" - }, - { - "class" : "Dist::Zilla::Plugin::GenerateFile", - "name" : "@Author::RWSTAUNER/GenerateManifestSkip", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::GatherDir", - "name" : "@Author::RWSTAUNER/GatherDir", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::PruneCruft", - "name" : "@Author::RWSTAUNER/PruneCruft", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::ManifestSkip", - "name" : "@Author::RWSTAUNER/ManifestSkip", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::PruneFiles", - "name" : "@Author::RWSTAUNER/PruneDevelCoverDatabase", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::PruneFiles", - "name" : "@Author::RWSTAUNER/PruneCodeStatCollection", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::Authority", - "name" : "@Author::RWSTAUNER/Authority", - "version" : "1.006" - }, - { - "class" : "Dist::Zilla::Plugin::NextRelease", - "name" : "@Author::RWSTAUNER/NextRelease", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::PkgVersion", - "name" : "@Author::RWSTAUNER/PkgVersion", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::Prepender", - "name" : "@Author::RWSTAUNER/Prepender", - "version" : "1.112280" - }, - { - "class" : "Dist::Zilla::Plugin::PodWeaver", - "name" : "@Author::RWSTAUNER/PodWeaver", - "version" : "3.101641" - }, - { - "class" : "Dist::Zilla::Plugin::License", - "name" : "@Author::RWSTAUNER/License", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::Readme", - "name" : "@Author::RWSTAUNER/Readme", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::ReadmeAnyFromPod", - "name" : "@Author::RWSTAUNER/ReadmeAnyFromPod", - "version" : "0.120120" - }, - { - "class" : "Dist::Zilla::Plugin::Bugtracker", - "name" : "@Author::RWSTAUNER/Bugtracker", - "version" : "1.111080" - }, - { - "class" : "Dist::Zilla::Plugin::Repository", - "name" : "@Author::RWSTAUNER/Repository", - "version" : "0.18" - }, - { - "class" : "Dist::Zilla::Plugin::GithubMeta", - "name" : "@Author::RWSTAUNER/GithubMeta", - "version" : "0.28" - }, - { - "class" : "Dist::Zilla::Plugin::AutoPrereqs", - "name" : "@Author::RWSTAUNER/AutoPrereqs", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::MetaNoIndex", - "name" : "@Author::RWSTAUNER/MetaNoIndex", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::MetaProvides::Package", - "name" : "@Author::RWSTAUNER/MetaProvides::Package", - "version" : "1.14000001" - }, - { - "class" : "Dist::Zilla::Plugin::MinimumPerl", - "name" : "@Author::RWSTAUNER/MinimumPerl", - "version" : "1.003" - }, - { - "class" : "Dist::Zilla::Plugin::MetaConfig", - "name" : "@Author::RWSTAUNER/MetaConfig", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::MetaYAML", - "name" : "@Author::RWSTAUNER/MetaYAML", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::MetaJSON", - "name" : "@Author::RWSTAUNER/MetaJSON", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::ExecDir", - "name" : "@Author::RWSTAUNER/ExecDir", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::ShareDir", - "name" : "@Author::RWSTAUNER/ShareDir", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::MakeMaker", - "name" : "@Author::RWSTAUNER/MakeMaker", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::Test::PodSpelling", - "name" : "@Author::RWSTAUNER/Test::PodSpelling", - "version" : "2.002004" - }, - { - "class" : "Dist::Zilla::Plugin::Test::UnusedVars", - "name" : "@Author::RWSTAUNER/@TestingMania/Test::UnusedVars", - "version" : "2.000003" - }, - { - "class" : "Dist::Zilla::Plugin::Test::Synopsis", - "name" : "@Author::RWSTAUNER/@TestingMania/Test::Synopsis", - "version" : "2.000002" - }, - { - "class" : "Dist::Zilla::Plugin::Test::Version", - "name" : "@Author::RWSTAUNER/@TestingMania/Test::Version", - "version" : "0.002004" - }, - { - "class" : "Dist::Zilla::Plugin::PodCoverageTests", - "name" : "@Author::RWSTAUNER/@TestingMania/PodCoverageTests", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::Test::Perl::Critic", - "name" : "@Author::RWSTAUNER/@TestingMania/Test::Perl::Critic", - "version" : "2.112410" - }, - { - "class" : "Dist::Zilla::Plugin::Test::CPAN::Changes", - "name" : "@Author::RWSTAUNER/@TestingMania/Test::CPAN::Changes", - "version" : "0.005" - }, - { - "class" : "Dist::Zilla::Plugin::Test::CPAN::Meta::JSON", - "name" : "@Author::RWSTAUNER/@TestingMania/Test::CPAN::Meta::JSON", - "version" : "0.003" - }, - { - "class" : "Dist::Zilla::Plugin::Test::DistManifest", - "name" : "@Author::RWSTAUNER/@TestingMania/Test::DistManifest", - "version" : "2.000002" - }, - { - "class" : "Dist::Zilla::Plugin::MetaTests", - "name" : "@Author::RWSTAUNER/@TestingMania/MetaTests", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::Test::Compile", - "name" : "@Author::RWSTAUNER/@TestingMania/Test::Compile", - "version" : "1.112820" - }, - { - "class" : "Dist::Zilla::Plugin::Test::Kwalitee", - "name" : "@Author::RWSTAUNER/@TestingMania/Test::Kwalitee", - "version" : "2.03" - }, - { - "class" : "Dist::Zilla::Plugin::NoTabsTests", - "name" : "@Author::RWSTAUNER/@TestingMania/NoTabsTests", - "version" : "0.01" - }, - { - "class" : "Dist::Zilla::Plugin::Test::MinimumVersion", - "name" : "@Author::RWSTAUNER/@TestingMania/Test::MinimumVersion", - "version" : "2.000002" - }, - { - "class" : "Dist::Zilla::Plugin::Test::Pod::LinkCheck", - "name" : "@Author::RWSTAUNER/@TestingMania/Test::Pod::LinkCheck", - "version" : "1.001" - }, - { - "class" : "Dist::Zilla::Plugin::Test::EOL", - "name" : "@Author::RWSTAUNER/@TestingMania/Test::EOL", - "version" : "0.07" - }, - { - "class" : "Dist::Zilla::Plugin::PodSyntaxTests", - "name" : "@Author::RWSTAUNER/@TestingMania/PodSyntaxTests", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::MojibakeTests", - "name" : "@Author::RWSTAUNER/@TestingMania/MojibakeTests", - "version" : "0.3" - }, - { - "class" : "Dist::Zilla::Plugin::Manifest", - "name" : "@Author::RWSTAUNER/Manifest", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::CheckExtraTests", - "name" : "@Author::RWSTAUNER/CheckExtraTests", - "version" : "0.006" - }, - { - "class" : "Dist::Zilla::Plugin::CheckChangesHasContent", - "name" : "@Author::RWSTAUNER/CheckChangesHasContent", - "version" : "0.005" - }, - { - "class" : "Dist::Zilla::Plugin::TestRelease", - "name" : "@Author::RWSTAUNER/TestRelease", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Check", - "name" : "@Author::RWSTAUNER/@Git/Check", - "version" : "1.121010" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Commit", - "name" : "@Author::RWSTAUNER/@Git/Commit", - "version" : "1.121010" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Tag", - "name" : "@Author::RWSTAUNER/@Git/Tag", - "version" : "1.121010" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Push", - "name" : "@Author::RWSTAUNER/@Git/Push", - "version" : "1.121010" - }, - { - "class" : "Dist::Zilla::Plugin::ConfirmRelease", - "name" : "@Author::RWSTAUNER/ConfirmRelease", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::UploadToCPAN", - "name" : "@Author::RWSTAUNER/UploadToCPAN", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::InstallRelease", - "name" : "@Author::RWSTAUNER/InstallRelease", - "version" : "0.008" - }, - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "runtime", - "type" : "requires" - } - }, - "name" : "Prereqs", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::Run::BeforeBuild", - "name" : "Run::BeforeBuild", - "version" : "0.013" - }, - { - "class" : "Dist::Zilla::Plugin::Test::ReportPrereqs", - "name" : "Test::ReportPrereqs", - "version" : "0.004" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":InstallModules", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":IncModules", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":TestFiles", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ExecFiles", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ShareFiles", - "version" : "4.300018" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":MainModule", - "version" : "4.300018" - } - ], - "zilla" : { - "class" : "Dist::Zilla::Dist::Builder", - "config" : { - "is_trial" : "0" - }, - "version" : "4.300018" - } - }, - "x_authority" : "cpan:RWSTAUNER" - }, - "name" : "Dist::Metadata", - "pathname" : "R/RW/RWSTAUNER/Dist-Metadata-0.923.tar.gz", - "provides" : { - "Dist::Metadata" : { - "file" : "Dist/Metadata.pm", - "version" : "0.923" - }, - "Dist::Metadata::Archive" : { - "file" : "Dist/Metadata/Archive.pm", - "version" : "0.923" - }, - "Dist::Metadata::Dir" : { - "file" : "Dist/Metadata/Dir.pm", - "version" : "0.923" - }, - "Dist::Metadata::Dist" : { - "file" : "Dist/Metadata/Dist.pm", - "version" : "0.923" - }, - "Dist::Metadata::Struct" : { - "file" : "Dist/Metadata/Struct.pm", - "version" : "0.923" - }, - "Dist::Metadata::Tar" : { - "file" : "Dist/Metadata/Tar.pm", - "version" : "0.923" - }, - "Dist::Metadata::Zip" : { - "file" : "Dist/Metadata/Zip.pm", - "version" : "0.923" - } - }, - "version" : "0.923" - }, - "Distribution::Guess::BuildSystem" : { - "dist" : "Distribution-Guess-BuildSystem-0.12", - "mymeta" : { - "abstract" : "This is what the module does", - "author" : [ - "brian d foy <bdfoy@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.55_02, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Distribution-Guess-BuildSystem", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : 0, - "Test::Output" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.55" - } - }, - "runtime" : { - "requires" : { - "Module::Extract::Use" : 0, - "Module::Extract::VERSION" : 0, - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.12" - }, - "name" : "Distribution::Guess::BuildSystem", - "pathname" : "/authors/id/B/BD/BDFOY/Distribution-Guess-BuildSystem-0.12.tar.gz", - "provides" : { - "Distribution::Guess::BuildSystem" : { - "file" : "Distribution/Guess/BuildSystem.pm", - "version" : "0.12" - } - }, - "target" : "Distribution::Guess::BuildSystem", - "version" : "0.12" - }, - "Email::Address" : { - "dist" : "Email-Address-1.892", - "mymeta" : { - "abstract" : "RFC 2822 Address Parsing", - "author" : [ - "Casey West <casey@geeknest.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Email-Address", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::More" : "0.47" - } - } - }, - "release_status" : "stable", - "version" : "1.892" - }, - "name" : "Email::Address", - "pathname" : "R/RJ/RJBS/Email-Address-1.892.tar.gz", - "provides" : { - "Email::Address" : { - "file" : "Email/Address.pm", - "version" : "1.892" - } - }, - "target" : "Email::Address", - "version" : "1.892" - }, - "Email::Date::Format" : { - "dist" : "Email-Date-Format-1.002", - "mymeta" : { - "abstract" : "produce RFC 8822 date strings", - "author" : [ - "Ricardo SIGNES <rjbs@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.36_01, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Email-Date-Format", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::More" : "0.47", - "Time::Local" : 0 - } - } - }, - "release_status" : "stable", - "version" : "1.002" - }, - "name" : "Email::Date::Format", - "pathname" : "R/RJ/RJBS/Email-Date-Format-1.002.tar.gz", - "provides" : { - "Email::Date::Format" : { - "file" : "Email/Date/Format.pm", - "version" : "1.002" - } - }, - "target" : "Email::Date::Format", - "version" : "1.002" - }, - "Email::Send" : { - "dist" : "Email-Send-2.198", - "mymeta" : { - "abstract" : "Simply Sending Email", - "author" : [ - "Casey West <casey@geeknest.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.50, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Email-Send", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Email::Address" : "1.80", - "Email::Simple" : "1.92", - "File::Spec" : 0, - "Module::Pluggable" : "2.97", - "Return::Value" : "1.28", - "Scalar::Util" : "1.02", - "Symbol" : 0, - "Test::More" : "0.47" - } - } - }, - "release_status" : "stable", - "version" : "2.198" - }, - "name" : "Email::Send", - "pathname" : "R/RJ/RJBS/Email-Send-2.198.tar.gz", - "provides" : { - "Email::Send" : { - "file" : "Email/Send.pm", - "version" : "2.198" - }, - "Email::Send::NNTP" : { - "file" : "Email/Send/NNTP.pm", - "version" : "2.198" - }, - "Email::Send::Qmail" : { - "file" : "Email/Send/Qmail.pm", - "version" : "2.198" - }, - "Email::Send::SMTP" : { - "file" : "Email/Send/SMTP.pm", - "version" : "2.198" - }, - "Email::Send::Sendmail" : { - "file" : "Email/Send/Sendmail.pm", - "version" : "2.198" - }, - "Email::Send::Test" : { - "file" : "Email/Send/Test.pm", - "version" : "2.198" - } - }, - "target" : "Email::Send", - "version" : "2.198" - }, - "Email::Simple" : { - "dist" : "Email-Simple-2.100", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.55_02, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Email-Simple", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Email::Date::Format" : 0, - "Test::More" : "0.47" - } - } - }, - "release_status" : "stable", - "resources" : { - "x_Repository" : "http://github.com/rjbs/email-simple" - }, - "version" : "2.100" - }, - "name" : "Email::Simple", - "pathname" : "R/RJ/RJBS/Email-Simple-2.100.tar.gz", - "provides" : { - "Email::Simple" : { - "file" : "Email/Simple.pm", - "version" : "2.100" - }, - "Email::Simple::Creator" : { - "file" : "Email/Simple/Creator.pm", - "version" : "2.100" - }, - "Email::Simple::Header" : { - "file" : "Email/Simple/Header.pm", - "version" : "2.005" - } - }, - "target" : "Email::Simple", - "version" : "2.100" - }, - "Email::Valid" : { - "dist" : "Email-Valid-0.185", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.59, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Email-Valid", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Mail::Address" : 0, - "Net::DNS" : 0, - "Test::More" : 0, - "perl" : "5.006" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/rjbs/email-valid" - } - }, - "version" : "0.185" - }, - "name" : "Email::Valid", - "pathname" : "R/RJ/RJBS/Email-Valid-0.185.tar.gz", - "provides" : { - "Email::Valid" : { - "file" : "Email/Valid.pm", - "version" : "0.185" - } - }, - "target" : "Email::Valid", - "version" : "0.185" - }, - "Encode::Locale" : { - "dist" : "Encode-Locale-1.02", - "mymeta" : { - "abstract" : "Determine the locale encoding", - "author" : [ - "Gisle Aas <gisle@activestate.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Encode-Locale", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Test" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "recommends" : { - "I18N::Langinfo" : 0, - "Win32::Console" : 0 - }, - "requires" : { - "Encode" : "2", - "Encode::Alias" : 0, - "perl" : "5.008" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/gisle/encode-locale" - } - }, - "version" : "1.02" - }, - "name" : "Encode::Locale", - "pathname" : "G/GA/GAAS/Encode-Locale-1.02.tar.gz", - "provides" : { - "Encode::Locale" : { - "file" : "Encode/Locale.pm", - "version" : "1.02" - } - }, - "target" : "Encode::Locale", - "version" : "1.02" - }, - "Error" : { - "dist" : "Error-0.17018", - "module" : "Error", - "mymeta" : { - "abstract" : "Error/exception handling in an OO-ish way", - "author" : [ - "Shlomi Fish <shlomif@iglu.org.il>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Error", - "prereqs" : { - "configure" : { - "requires" : { - "Module::Build" : "0.38" - } - }, - "runtime" : { - "requires" : { - "Scalar::Util" : 0, - "perl" : "v5.6.0", - "warnings" : 0 - } - } - }, - "provides" : { - "Error" : { - "file" : "lib/Error.pm", - "version" : "0.17018" - }, - "Error::Simple" : { - "file" : "lib/Error.pm", - "version" : "0.17018" - }, - "Error::WarnDie" : { - "file" : "lib/Error.pm", - "version" : 0 - }, - "Error::subs" : { - "file" : "lib/Error.pm", - "version" : 0 - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.17018" - }, - "name" : "Error", - "pathname" : "S/SH/SHLOMIF/Error-0.17018.tar.gz", - "provides" : { - "Error" : { - "file" : "Error.pm", - "version" : "0.17018" - }, - "Error::Simple" : { - "file" : "Error.pm", - "version" : "0.17018" - }, - "Error::WarnDie" : { - "file" : "Error.pm" - }, - "Error::subs" : { - "file" : "Error.pm" - } - }, - "version" : "0.17018" - }, - "Eval::Closure" : { - "dist" : "Eval-Closure-0.06", - "mymeta" : { - "abstract" : "safely and cleanly create closures via string eval", - "author" : [ - "Jesse Luehrs <doy at tozt dot net>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.200006, CPAN::Meta::Converter version 2.110440, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Eval-Closure", - "prereqs" : { - "build" : { - "requires" : { - "Test::Fatal" : 0, - "Test::More" : "0.88", - "Test::Requires" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.30" - } - }, - "runtime" : { - "recommends" : { - "Perl::Tidy" : 0 - }, - "requires" : { - "Scalar::Util" : 0, - "Sub::Exporter" : 0, - "Try::Tiny" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "type" : "git", - "url" : "git://github.com/doy/eval-closure.git" - } - }, - "version" : "0.06", - "x_Dist_Zilla" : { - "plugins" : [ - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "test", - "type" : "requires" - } - }, - "name" : "@DOY/TestMoreDoneTesting", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::GatherDir", - "name" : "@DOY/GatherDir", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::PruneCruft", - "name" : "@DOY/PruneCruft", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::ManifestSkip", - "name" : "@DOY/ManifestSkip", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::MetaYAML", - "name" : "@DOY/MetaYAML", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::License", - "name" : "@DOY/License", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::Readme", - "name" : "@DOY/Readme", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::ExtraTests", - "name" : "@DOY/ExtraTests", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::ExecDir", - "name" : "@DOY/ExecDir", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::ShareDir", - "name" : "@DOY/ShareDir", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::MakeMaker", - "name" : "@DOY/MakeMaker", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::Manifest", - "name" : "@DOY/Manifest", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::TestRelease", - "name" : "@DOY/TestRelease", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::ConfirmRelease", - "name" : "@DOY/ConfirmRelease", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::MetaConfig", - "name" : "@DOY/MetaConfig", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::MetaJSON", - "name" : "@DOY/MetaJSON", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::NextRelease", - "name" : "@DOY/NextRelease", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::CheckChangesHasContent", - "name" : "@DOY/CheckChangesHasContent", - "version" : "0.003" - }, - { - "class" : "Dist::Zilla::Plugin::PkgVersion", - "name" : "@DOY/PkgVersion", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::PodCoverageTests", - "name" : "@DOY/PodCoverageTests", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::PodSyntaxTests", - "name" : "@DOY/PodSyntaxTests", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::NoTabsTests", - "name" : "@DOY/NoTabsTests", - "version" : "0.01" - }, - { - "class" : "Dist::Zilla::Plugin::EOLTests", - "name" : "@DOY/EOLTests", - "version" : "0.02" - }, - { - "class" : "Dist::Zilla::Plugin::CompileTests", - "name" : "@DOY/CompileTests", - "version" : "1.110930" - }, - { - "class" : "Dist::Zilla::Plugin::Repository", - "name" : "@DOY/Repository", - "version" : "0.18" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Check", - "name" : "@DOY/Git::Check", - "version" : "1.110500" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Tag", - "name" : "@DOY/Git::Tag", - "version" : "1.110500" - }, - { - "class" : "Dist::Zilla::Plugin::Git::NextVersion", - "name" : "@DOY/Git::NextVersion", - "version" : "1.110500" - }, - { - "class" : "Dist::Zilla::Plugin::PodWeaver", - "name" : "@DOY/PodWeaver", - "version" : "3.101641" - }, - { - "class" : "Dist::Zilla::Plugin::UploadToCPAN", - "name" : "@DOY/UploadToCPAN", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "runtime", - "type" : "requires" - } - }, - "name" : "Prereqs", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "test", - "type" : "requires" - } - }, - "name" : "TestRequires", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "runtime", - "type" : "recommends" - } - }, - "name" : "RuntimeRecommends", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":InstallModules", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":IncModules", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":TestFiles", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ExecFiles", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ShareFiles", - "version" : "4.200006" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":MainModule", - "version" : "4.200006" - } - ], - "zilla" : { - "class" : "Dist::Zilla::Dist::Builder", - "config" : { - "is_trial" : 0 - }, - "version" : "4.200006" - } - } - }, - "name" : "Eval::Closure", - "pathname" : "D/DO/DOY/Eval-Closure-0.06.tar.gz", - "provides" : { - "Eval::Closure" : { - "file" : "Eval/Closure.pm", - "version" : "0.06" - } - }, - "target" : "Eval::Closure", - "version" : "0.06" - }, - "Exception::Class" : { - "dist" : "Exception-Class-1.32", - "module" : "Exception::Class", - "mymeta" : { - "abstract" : "A module that allows you to declare real exception classes in Perl", - "author" : [ - "Dave Rolsky <autarch@urth.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.101740, CPAN::Meta::Converter version 2.101670, CPAN::Meta::Converter version 2.112150", - "license" : [ - "artistic_2" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Exception-Class", - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.31" - } - }, - "runtime" : { - "requires" : { - "Class::Data::Inheritable" : "0.02", - "Devel::StackTrace" : "1.20", - "Scalar::Util" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=Exception-Class" - }, - "repository" : { - "url" : "http://hg.urth.org/hg/Exception-Class" - } - }, - "version" : "1.32" - }, - "name" : "Exception::Class", - "pathname" : "D/DR/DROLSKY/Exception-Class-1.32.tar.gz", - "provides" : { - "Exception::Class" : { - "file" : "Exception/Class.pm", - "version" : "1.32" - }, - "Exception::Class::Base" : { - "file" : "Exception/Class/Base.pm", - "version" : "1.32" - } - }, - "version" : "1.32" - }, - "ExtUtils::CBuilder" : { - "dist" : "ExtUtils-CBuilder-0.280205", - "module" : "ExtUtils::CBuilder", - "mymeta" : { - "abstract" : "Compile and link C code for Perl modules", - "author" : [ - "Ken Williams <kwilliams@cpan.org>, The Perl 5 Porters" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.120351, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "ExtUtils-CBuilder", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : "0.47" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.30" - } - }, - "runtime" : { - "requires" : { - "Cwd" : 0, - "File::Basename" : 0, - "File::Spec" : "3.13", - "File::Temp" : 0, - "IO::File" : 0, - "IPC::Cmd" : 0, - "Perl::OSType" : 0, - "Text::ParseWords" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.280205" - }, - "name" : "ExtUtils::CBuilder", - "pathname" : "D/DA/DAGOLDEN/ExtUtils-CBuilder-0.280205.tar.gz", - "provides" : { - "ExtUtils::CBuilder" : { - "file" : "ExtUtils/CBuilder.pm", - "version" : "0.280205" - }, - "ExtUtils::CBuilder::Base" : { - "file" : "ExtUtils/CBuilder/Base.pm", - "version" : "0.280205" - }, - "ExtUtils::CBuilder::Platform::Unix" : { - "file" : "ExtUtils/CBuilder/Platform/Unix.pm", - "version" : "0.280205" - }, - "ExtUtils::CBuilder::Platform::VMS" : { - "file" : "ExtUtils/CBuilder/Platform/VMS.pm", - "version" : "0.280205" - }, - "ExtUtils::CBuilder::Platform::Windows" : { - "file" : "ExtUtils/CBuilder/Platform/Windows.pm", - "version" : "0.280205" - }, - "ExtUtils::CBuilder::Platform::Windows::BCC" : { - "file" : "ExtUtils/CBuilder/Platform/Windows/BCC.pm", - "version" : "0.280205" - }, - "ExtUtils::CBuilder::Platform::Windows::GCC" : { - "file" : "ExtUtils/CBuilder/Platform/Windows/GCC.pm", - "version" : "0.280205" - }, - "ExtUtils::CBuilder::Platform::Windows::MSVC" : { - "file" : "ExtUtils/CBuilder/Platform/Windows/MSVC.pm", - "version" : "0.280205" - }, - "ExtUtils::CBuilder::Platform::aix" : { - "file" : "ExtUtils/CBuilder/Platform/aix.pm", - "version" : "0.280205" - }, - "ExtUtils::CBuilder::Platform::cygwin" : { - "file" : "ExtUtils/CBuilder/Platform/cygwin.pm", - "version" : "0.280205" - }, - "ExtUtils::CBuilder::Platform::darwin" : { - "file" : "ExtUtils/CBuilder/Platform/darwin.pm", - "version" : "0.280205" - }, - "ExtUtils::CBuilder::Platform::dec_osf" : { - "file" : "ExtUtils/CBuilder/Platform/dec_osf.pm", - "version" : "0.280205" - }, - "ExtUtils::CBuilder::Platform::os2" : { - "file" : "ExtUtils/CBuilder/Platform/os2.pm", - "version" : "0.280205" - } - }, - "version" : "0.280205" - }, - "ExtUtils::MakeMaker" : { - "dist" : "ExtUtils-MakeMaker-6.62", - "module" : "ExtUtils::MakeMaker", - "mymeta" : { - "abstract" : "Create a module Makefile", - "author" : [ - "Michael G Schwern <schwern@pobox.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "ExtUtils-MakeMaker", - "no_index" : { - "directory" : [ - "t", - "inc", - "bundled", - "my" - ], - "package" : [ - "DynaLoader", - "in" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Data::Dumper" : 0 - } - }, - "configure" : { - "requires" : {} - }, - "runtime" : { - "requires" : { - "DirHandle" : 0, - "File::Basename" : 0, - "File::Spec" : "0.8", - "Pod::Man" : 0, - "perl" : "5.006" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker" - }, - "homepage" : "http://makemaker.org", - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker" - }, - "x_MailingList" : "makemaker@perl.org" - }, - "version" : "6.62" - }, - "name" : "ExtUtils::MakeMaker", - "pathname" : "M/MS/MSCHWERN/ExtUtils-MakeMaker-6.62.tar.gz", - "provides" : { - "CPAN::Meta" : { - "file" : "CPAN/Meta.pm", - "version" : "2.112150" - }, - "CPAN::Meta::Converter" : { - "file" : "CPAN/Meta/Converter.pm", - "version" : "2.112150" - }, - "CPAN::Meta::Feature" : { - "file" : "CPAN/Meta/Feature.pm", - "version" : "2.112150" - }, - "CPAN::Meta::History" : { - "file" : "CPAN/Meta/History.pm", - "version" : "2.112150" - }, - "CPAN::Meta::Prereqs" : { - "file" : "CPAN/Meta/Prereqs.pm", - "version" : "2.112150" - }, - "CPAN::Meta::Spec" : { - "file" : "CPAN/Meta/Spec.pm", - "version" : "2.112150" - }, - "CPAN::Meta::Validator" : { - "file" : "CPAN/Meta/Validator.pm", - "version" : "2.112150" - }, - "CPAN::Meta::YAML" : { - "file" : "CPAN/Meta/YAML.pm", - "version" : "0.003" - }, - "DynaLoader" : { - "file" : "ExtUtils/Mkbootstrap.pm" - }, - "ExtUtils::Command::MM" : { - "file" : "ExtUtils/Command/MM.pm", - "version" : "6.62" - }, - "ExtUtils::Liblist" : { - "file" : "ExtUtils/Liblist.pm", - "version" : "6.62" - }, - "ExtUtils::Liblist::Kid" : { - "file" : "ExtUtils/Liblist/Kid.pm", - "version" : "6.62" - }, - "ExtUtils::MM" : { - "file" : "ExtUtils/MM.pm", - "version" : "6.62" - }, - "ExtUtils::MM_AIX" : { - "file" : "ExtUtils/MM_AIX.pm", - "version" : "6.62" - }, - "ExtUtils::MM_Any" : { - "file" : "ExtUtils/MM_Any.pm", - "version" : "6.62" - }, - "ExtUtils::MM_BeOS" : { - "file" : "ExtUtils/MM_BeOS.pm", - "version" : "6.62" - }, - "ExtUtils::MM_Cygwin" : { - "file" : "ExtUtils/MM_Cygwin.pm", - "version" : "6.62" - }, - "ExtUtils::MM_DOS" : { - "file" : "ExtUtils/MM_DOS.pm", - "version" : "6.62" - }, - "ExtUtils::MM_Darwin" : { - "file" : "ExtUtils/MM_Darwin.pm", - "version" : "6.62" - }, - "ExtUtils::MM_MacOS" : { - "file" : "ExtUtils/MM_MacOS.pm", - "version" : "6.62" - }, - "ExtUtils::MM_NW5" : { - "file" : "ExtUtils/MM_NW5.pm", - "version" : "6.62" - }, - "ExtUtils::MM_OS2" : { - "file" : "ExtUtils/MM_OS2.pm", - "version" : "6.62" - }, - "ExtUtils::MM_QNX" : { - "file" : "ExtUtils/MM_QNX.pm", - "version" : "6.62" - }, - "ExtUtils::MM_UWIN" : { - "file" : "ExtUtils/MM_UWIN.pm", - "version" : "6.62" - }, - "ExtUtils::MM_Unix" : { - "file" : "ExtUtils/MM_Unix.pm", - "version" : "6.62" - }, - "ExtUtils::MM_VMS" : { - "file" : "ExtUtils/MM_VMS.pm", - "version" : "6.62" - }, - "ExtUtils::MM_VOS" : { - "file" : "ExtUtils/MM_VOS.pm", - "version" : "6.62" - }, - "ExtUtils::MM_Win32" : { - "file" : "ExtUtils/MM_Win32.pm", - "version" : "6.62" - }, - "ExtUtils::MM_Win95" : { - "file" : "ExtUtils/MM_Win95.pm", - "version" : "6.62" - }, - "ExtUtils::MY" : { - "file" : "ExtUtils/MY.pm", - "version" : "6.62" - }, - "ExtUtils::MakeMaker" : { - "file" : "ExtUtils/MakeMaker.pm", - "version" : "6.62" - }, - "ExtUtils::MakeMaker::Config" : { - "file" : "ExtUtils/MakeMaker/Config.pm", - "version" : "6.62" - }, - "ExtUtils::Manifest" : { - "file" : "ExtUtils/Manifest.pm", - "version" : "1.58" - }, - "ExtUtils::Mkbootstrap" : { - "file" : "ExtUtils/Mkbootstrap.pm", - "version" : "6.62" - }, - "ExtUtils::Mksymlists" : { - "file" : "ExtUtils/Mksymlists.pm", - "version" : "6.62" - }, - "ExtUtils::testlib" : { - "file" : "ExtUtils/testlib.pm", - "version" : "6.62" - }, - "JSON::PP" : { - "file" : "JSON/PP.pm", - "version" : "2.27104" - }, - "JSON::PP::Boolean" : { - "file" : "JSON/PP.pm" - }, - "JSON::PP::Compat5006" : { - "file" : "JSON/PP/Compat5006.pm", - "version" : "1.09" - }, - "JSON::PP::IncrParser" : { - "file" : "JSON/PP.pm", - "version" : "1.01" - }, - "MM" : { - "file" : "ExtUtils/MM.pm" - }, - "MY" : { - "file" : "ExtUtils/MakeMaker.pm" - }, - "Parse::CPAN::Meta" : { - "file" : "Parse/CPAN/Meta.pm", - "version" : "1.4401" - }, - "Version::Requirements" : { - "file" : "Version/Requirements.pm", - "version" : "0.101020" - }, - "charstar" : { - "file" : "version/vpp.pm" - }, - "version" : { - "file" : "version.pm", - "version" : "0.88" - }, - "version::vpp" : { - "file" : "version/vpp.pm", - "version" : "0.88" - }, - "warnings" : { - "file" : "version/vpp.pm" - } - }, - "version" : "6.62" - }, - "ExtUtils::ParseXS" : { - "dist" : "ExtUtils-ParseXS-3.15", - "module" : "ExtUtils::ParseXS", - "mymeta" : { - "abstract" : "converts Perl XS code into C code", - "author" : [ - "Ken Williams <ken@mathforum.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.113640, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "ExtUtils-ParseXS", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.46" - } - }, - "runtime" : { - "requires" : { - "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" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.perl.org/rt3/" - }, - "repository" : { - "type" : "git", - "url" : "git://perl5.git.perl.org/gitroot/perl.git" - } - }, - "version" : "3.15" - }, - "name" : "ExtUtils::ParseXS", - "pathname" : "S/SM/SMUELLER/ExtUtils-ParseXS-3.15.tar.gz", - "provides" : { - "ExtUtils::ParseXS" : { - "file" : "ExtUtils/ParseXS.pm", - "version" : "3.15" - }, - "ExtUtils::ParseXS::Constants" : { - "file" : "ExtUtils/ParseXS/Constants.pm", - "version" : "3.15" - }, - "ExtUtils::ParseXS::CountLines" : { - "file" : "ExtUtils/ParseXS/CountLines.pm", - "version" : "3.15" - }, - "ExtUtils::ParseXS::Utilities" : { - "file" : "ExtUtils/ParseXS/Utilities.pm", - "version" : "3.15" - }, - "ExtUtils::Typemaps" : { - "file" : "ExtUtils/Typemaps.pm", - "version" : "3.15" - }, - "ExtUtils::Typemaps::Cmd" : { - "file" : "ExtUtils/Typemaps/Cmd.pm", - "version" : "3.15" - }, - "ExtUtils::Typemaps::InputMap" : { - "file" : "ExtUtils/Typemaps/InputMap.pm", - "version" : "3.15" - }, - "ExtUtils::Typemaps::OutputMap" : { - "file" : "ExtUtils/Typemaps/OutputMap.pm", - "version" : "3.15" - }, - "ExtUtils::Typemaps::Type" : { - "file" : "ExtUtils/Typemaps/Type.pm", - "version" : "3.15" - } - }, - "version" : "3.15" - }, - "FCGI" : { - "dist" : "FCGI-0.74", - "mymeta" : { - "abstract" : "Fast CGI module", - "author" : [ - "Sven Verdoolaege (skimo@kotnet.org)" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.59, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "FCGI", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "type" : "git", - "url" : "git://git.shadowcat.co.uk/catagits/fcgi2.git" - } - }, - "version" : "0.74" - }, - "name" : "FCGI", - "pathname" : "F/FL/FLORA/FCGI-0.74.tar.gz", - "provides" : { - "FCGI" : { - "file" : "FCGI.pm", - "version" : "0.74" - }, - "FCGI::Stream" : { - "file" : "FCGI.pm" - } - }, - "target" : "FCGI", - "version" : "0.74" - }, - "File::ChangeNotify" : { - "dist" : "File-ChangeNotify-0.22", - "module" : "File::ChangeNotify", - "mymeta" : { - "abstract" : "Watch for changes to files, cross-platform style", - "author" : [ - "Dave Rolsky <autarch@urth.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "artistic_2" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "File-ChangeNotify", - "prereqs" : { - "build" : { - "requires" : { - "Data::Dumper" : 0, - "Exporter" : 0, - "File::Path" : 0, - "File::Temp" : 0, - "FindBin" : 0, - "Module::Build" : "0.3601", - "Test::Exception" : 0, - "Test::More" : 0, - "base" : 0 - } - }, - "configure" : { - "requires" : { - "Module::Build" : "0.3601" - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Class::Load" : 0, - "File::Find" : 0, - "File::Spec" : 0, - "List::MoreUtils" : 0, - "Module::Pluggable::Object" : 0, - "Moose" : 0, - "Moose::Util::TypeConstraints" : 0, - "MooseX::Params::Validate" : 0, - "MooseX::SemiAffordanceAccessor" : 0, - "Time::HiRes" : 0, - "namespace::autoclean" : 0, - "strict" : 0, - "warnings" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=File-ChangeNotify" - }, - "repository" : { - "type" : "git", - "url" : "git://git.urth.org/File-ChangeNotify.git" - } - }, - "version" : "0.22" - }, - "name" : "File::ChangeNotify", - "pathname" : "D/DR/DROLSKY/File-ChangeNotify-0.22.tar.gz", - "provides" : { - "File::ChangeNotify" : { - "file" : "File/ChangeNotify.pm", - "version" : "0.22" - }, - "File::ChangeNotify::ConfigData" : { - "file" : "File/ChangeNotify/ConfigData.pm" - }, - "File::ChangeNotify::Event" : { - "file" : "File/ChangeNotify/Event.pm", - "version" : "0.22" - }, - "File::ChangeNotify::Watcher" : { - "file" : "File/ChangeNotify/Watcher.pm", - "version" : "0.22" - }, - "File::ChangeNotify::Watcher::Default" : { - "file" : "File/ChangeNotify/Watcher/Default.pm", - "version" : "0.22" - }, - "File::ChangeNotify::Watcher::Inotify" : { - "file" : "File/ChangeNotify/Watcher/Inotify.pm", - "version" : "0.22" - }, - "File::ChangeNotify::Watcher::KQueue" : { - "file" : "File/ChangeNotify/Watcher/KQueue.pm", - "version" : "0.22" - } - }, - "version" : "0.22" - }, - "File::Copy::Recursive" : { - "dist" : "File-Copy-Recursive-0.38", - "module" : "File::Copy::Recursive", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.30, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "File-Copy-Recursive", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "File::Copy" : 0, - "File::Spec" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.38", - "x_installdirs" : "site", - "x_version_from" : "Recursive.pm" - }, - "name" : "File::Copy::Recursive", - "pathname" : "D/DM/DMUEY/File-Copy-Recursive-0.38.tar.gz", - "provides" : { - "File::Copy::Recursive" : { - "file" : "File/Copy/Recursive.pm", - "version" : "0.38" - } - }, - "version" : "0.38" - }, - "File::Find::Closures" : { - "dist" : "File-Find-Closures-1.09", - "mymeta" : { - "abstract" : "functions you can use with File::Find", - "author" : [ - "brian d foy <bdfoy@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.44, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "File-Find-Closures", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "File::Find" : 0 - } - } - }, - "release_status" : "stable", - "version" : "1.09" - }, - "name" : "File::Find::Closures", - "pathname" : "/authors/id/B/BD/BDFOY/File-Find-Closures-1.09.tar.gz", - "provides" : { - "File::Find::Closures" : { - "file" : "File/Find/Closures.pm", - "version" : "1.09" - } - }, - "target" : "File::Find::Closures", - "version" : "1.09" - }, - "File::Find::Rule" : { - "dist" : "File-Find-Rule-0.33", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.57_05, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "File-Find-Rule", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "File::Find" : 0, - "File::Spec" : 0, - "Number::Compare" : 0, - "Test::More" : 0, - "Text::Glob" : "0.07" - } - } - }, - "release_status" : "stable", - "version" : "0.33" - }, - "name" : "File::Find::Rule", - "pathname" : "R/RC/RCLAMP/File-Find-Rule-0.33.tar.gz", - "provides" : { - "File::Find::Rule" : { - "file" : "File/Find/Rule.pm", - "version" : "0.33" - } - }, - "target" : "File::Find::Rule", - "version" : "0.33" - }, - "File::Listing" : { - "dist" : "File-Listing-6.03", - "mymeta" : { - "abstract" : "parse directory listing", - "author" : [ - "Gisle Aas <gisle@activestate.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.57_05, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "File-Listing", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "HTTP::Date" : "6", - "perl" : "5.008008" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/gisle/libwww-perl/tree/File-Listing/master" - }, - "x_MailingList" : "mailto:libwww@perl.org" - }, - "version" : "6.03" - }, - "name" : "File::Listing", - "pathname" : "G/GA/GAAS/File-Listing-6.03.tar.gz", - "provides" : { - "File::Listing" : { - "file" : "File/Listing.pm", - "version" : "6.03" - }, - "File::Listing::apache" : { - "file" : "File/Listing.pm" - }, - "File::Listing::dosftp" : { - "file" : "File/Listing.pm" - }, - "File::Listing::netware" : { - "file" : "File/Listing.pm" - }, - "File::Listing::unix" : { - "file" : "File/Listing.pm" - }, - "File::Listing::vms" : { - "file" : "File/Listing.pm" - } - }, - "target" : "File::Listing", - "version" : "6.03" - }, - "File::Remove" : { - "dist" : "File-Remove-1.48", - "mymeta" : { - "abstract" : "Remove files and directories", - "author" : [ - "Adam Kennedy <adamk@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.00, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "File-Remove", - "no_index" : { - "directory" : [ - "inc", - "t", - "xt" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Test::More" : "0.42" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Cwd" : "3.2701", - "File::Spec" : "3.2701", - "perl" : "5.00503" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://svn.ali.as/cpan/trunk/File-Remove" - }, - "x_ChangeLog" : "http://fisheye2.atlassian.com/changelog/cpan/trunk/File-Remove" - }, - "version" : "1.48", - "x_module_name" : "File::Remove" - }, - "name" : "File::Remove", - "pathname" : "/authors/id/A/AD/ADAMK/File-Remove-1.48.tar.gz", - "provides" : { - "File::Remove" : { - "file" : "File/Remove.pm", - "version" : "1.48" - } - }, - "target" : "File::Remove", - "version" : "1.48" - }, - "File::ShareDir" : { - "dist" : "File-ShareDir-1.03", - "module" : "File::ShareDir", - "mymeta" : { - "abstract" : "Locate per-dist and per-module shared files", - "author" : [ - "Adam Kennedy <adamk@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.00, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "File-ShareDir", - "no_index" : { - "directory" : [ - "foo", - "inc", - "share", - "t", - "xt" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Test::More" : "0.47" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Class::Inspector" : "1.12", - "File::Spec" : "0.80", - "perl" : "5.005" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://svn.ali.as/cpan/trunk/File-ShareDir" - }, - "x_ChangeLog" : "http://fisheye2.atlassian.com/changelog/cpan/trunk/File-ShareDir" - }, - "version" : "1.03", - "x_module_name" : "File::ShareDir" - }, - "name" : "File::ShareDir", - "pathname" : "A/AD/ADAMK/File-ShareDir-1.03.tar.gz", - "provides" : { - "File::ShareDir" : { - "file" : "File/ShareDir.pm", - "version" : "1.03" - } - }, - "version" : "1.03" - }, - "File::Slurp" : { - "dist" : "File-Slurp-9999.19", - "mymeta" : { - "abstract" : "Simple and Efficient Reading/Writing/Modifying of Complete Files", - "author" : [ - "Uri Guttman <uri@stemsystems.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.42, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "File-Slurp", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Exporter" : 0, - "Fcntl" : 0, - "POSIX" : 0 - } - } - }, - "release_status" : "stable", - "version" : "9999.19" - }, - "name" : "File::Slurp", - "pathname" : "U/UR/URI/File-Slurp-9999.19.tar.gz", - "provides" : { - "File::Slurp" : { - "file" : "File/Slurp.pm", - "version" : "9999.19" - } - }, - "target" : "File::Slurp", - "version" : "9999.19" - }, - "File::Spec::Native" : { - "dist" : "File-Spec-Native-1.003", - "module" : "File::Spec::Native", - "mymeta" : { - "abstract" : "Use native OS implementation of File::Spec from a subclass", - "author" : [ - "Randy Stauner <rwstauner@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.200009, CPAN::Meta::Converter version 2.110930001, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "File-Spec-Native", - "no_index" : { - "directory" : [ - "corpus", - "examples", - "inc", - "share", - "t", - "xt" - ], - "namespace" : [ - "Local", - "t::lib" - ], - "package" : [ - "DB" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "File::Find" : 0, - "File::Spec::Functions" : 0, - "File::Temp" : 0, - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.30" - } - }, - "runtime" : { - "requires" : { - "File::Spec" : 0 - } - } - }, - "provides" : { - "File::Spec::Native" : { - "file" : "lib/File/Spec/Native.pm", - "version" : "1.003" - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=File-Spec-Native" - }, - "homepage" : "http://github.com/rwstauner/File-Spec-Native", - "repository" : { - "url" : "http://github.com/rwstauner/File-Spec-Native" - } - }, - "version" : "1.003", - "x_Dist_Zilla" : { - "plugins" : [ - { - "class" : "Dist::Zilla::Plugin::Git::NextVersion", - "name" : "@Author::RWSTAUNER/Git::NextVersion", - "version" : "1.111590" - }, - { - "class" : "Dist::Zilla::Plugin::GenerateFile", - "name" : "@Author::RWSTAUNER/GenerateManifestSkip", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::GatherDir", - "name" : "@Author::RWSTAUNER/GatherDir", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::PruneCruft", - "name" : "@Author::RWSTAUNER/PruneCruft", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::ManifestSkip", - "name" : "@Author::RWSTAUNER/ManifestSkip", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::PruneFiles", - "name" : "@Author::RWSTAUNER/PruneBuilderFiles", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::PruneFiles", - "name" : "@Author::RWSTAUNER/PruneRepoMetaFiles", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::PruneFiles", - "name" : "@Author::RWSTAUNER/PruneDevelCoverDatabase", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::Authority", - "name" : "@Author::RWSTAUNER/Authority", - "version" : "1.005" - }, - { - "class" : "Dist::Zilla::Plugin::NextRelease", - "name" : "@Author::RWSTAUNER/NextRelease", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::PkgVersion", - "name" : "@Author::RWSTAUNER/PkgVersion", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::Prepender", - "name" : "@Author::RWSTAUNER/Prepender", - "version" : "1.103470" - }, - { - "class" : "Dist::Zilla::Plugin::PodWeaver", - "name" : "@Author::RWSTAUNER/PodWeaver", - "version" : "3.101641" - }, - { - "class" : "Dist::Zilla::Plugin::License", - "name" : "@Author::RWSTAUNER/License", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::Readme", - "name" : "@Author::RWSTAUNER/Readme", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::Bugtracker", - "name" : "@Author::RWSTAUNER/Bugtracker", - "version" : "1.111080" - }, - { - "class" : "Dist::Zilla::Plugin::Repository", - "name" : "@Author::RWSTAUNER/Repository", - "version" : "0.18" - }, - { - "class" : "Dist::Zilla::Plugin::GithubMeta", - "name" : "@Author::RWSTAUNER/GithubMeta", - "version" : "0.14" - }, - { - "class" : "Dist::Zilla::Plugin::AutoPrereqs", - "name" : "@Author::RWSTAUNER/AutoPrereqs", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::MetaNoIndex", - "name" : "@Author::RWSTAUNER/MetaNoIndex", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::MetaProvides::Package", - "name" : "@Author::RWSTAUNER/MetaProvides::Package", - "version" : "1.12060501" - }, - { - "class" : "Dist::Zilla::Plugin::MinimumPerl", - "name" : "@Author::RWSTAUNER/MinimumPerl", - "version" : "1.003" - }, - { - "class" : "Dist::Zilla::Plugin::MetaConfig", - "name" : "@Author::RWSTAUNER/MetaConfig", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::MetaYAML", - "name" : "@Author::RWSTAUNER/MetaYAML", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::MetaJSON", - "name" : "@Author::RWSTAUNER/MetaJSON", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::ExecDir", - "name" : "@Author::RWSTAUNER/ExecDir", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::ShareDir", - "name" : "@Author::RWSTAUNER/ShareDir", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::MakeMaker", - "name" : "@Author::RWSTAUNER/MakeMaker", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::ReportVersions::Tiny", - "name" : "@Author::RWSTAUNER/ReportVersions::Tiny", - "version" : "1.03_01" - }, - { - "class" : "Dist::Zilla::Plugin::PodSpellingTests", - "name" : "@Author::RWSTAUNER/PodSpellingTests", - "version" : "1.111520" - }, - { - "class" : "Dist::Zilla::Plugin::UnusedVarsTests", - "name" : "@Author::RWSTAUNER/@TestingMania/UnusedVarsTests", - "version" : "1.100860" - }, - { - "class" : "Dist::Zilla::Plugin::PortabilityTests", - "name" : "@Author::RWSTAUNER/@TestingMania/PortabilityTests", - "version" : "1.111840" - }, - { - "class" : "Dist::Zilla::Plugin::Test::Version", - "name" : "@Author::RWSTAUNER/@TestingMania/Test::Version", - "version" : "0.1.2" - }, - { - "class" : "Dist::Zilla::Plugin::PodCoverageTests", - "name" : "@Author::RWSTAUNER/@TestingMania/PodCoverageTests", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::CompileTests", - "name" : "@Author::RWSTAUNER/@TestingMania/CompileTests", - "version" : "1.110930" - }, - { - "class" : "Dist::Zilla::Plugin::Test::CPAN::Changes", - "name" : "@Author::RWSTAUNER/@TestingMania/Test::CPAN::Changes", - "version" : "0.005" - }, - { - "class" : "Dist::Zilla::Plugin::MetaTests", - "name" : "@Author::RWSTAUNER/@TestingMania/MetaTests", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::KwaliteeTests", - "name" : "@Author::RWSTAUNER/@TestingMania/KwaliteeTests", - "version" : "1.101420" - }, - { - "class" : "Dist::Zilla::Plugin::MinimumVersionTests", - "name" : "@Author::RWSTAUNER/@TestingMania/MinimumVersionTests", - "version" : "1.101421" - }, - { - "class" : "Dist::Zilla::Plugin::CriticTests", - "name" : "@Author::RWSTAUNER/@TestingMania/CriticTests", - "version" : "1.111450" - }, - { - "class" : "Dist::Zilla::Plugin::DistManifestTests", - "name" : "@Author::RWSTAUNER/@TestingMania/DistManifestTests", - "version" : "1.101420" - }, - { - "class" : "Dist::Zilla::Plugin::Test::CPAN::Meta::JSON", - "name" : "@Author::RWSTAUNER/@TestingMania/Test::CPAN::Meta::JSON", - "version" : "0.003" - }, - { - "class" : "Dist::Zilla::Plugin::SynopsisTests", - "name" : "@Author::RWSTAUNER/@TestingMania/SynopsisTests", - "version" : "1.101420" - }, - { - "class" : "Dist::Zilla::Plugin::EOLTests", - "name" : "@Author::RWSTAUNER/@TestingMania/EOLTests", - "version" : "0.02" - }, - { - "class" : "Dist::Zilla::Plugin::Test::Pod::LinkCheck", - "name" : "@Author::RWSTAUNER/@TestingMania/Test::Pod::LinkCheck", - "version" : "1.001" - }, - { - "class" : "Dist::Zilla::Plugin::NoTabsTests", - "name" : "@Author::RWSTAUNER/@TestingMania/NoTabsTests", - "version" : "0.01" - }, - { - "class" : "Dist::Zilla::Plugin::MojibakeTests", - "name" : "@Author::RWSTAUNER/@TestingMania/MojibakeTests", - "version" : "0.3" - }, - { - "class" : "Dist::Zilla::Plugin::PodSyntaxTests", - "name" : "@Author::RWSTAUNER/@TestingMania/PodSyntaxTests", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::Manifest", - "name" : "@Author::RWSTAUNER/Manifest", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::CheckExtraTests", - "name" : "@Author::RWSTAUNER/CheckExtraTests", - "version" : "0.004" - }, - { - "class" : "Dist::Zilla::Plugin::CheckChangesHasContent", - "name" : "@Author::RWSTAUNER/CheckChangesHasContent", - "version" : "0.003" - }, - { - "class" : "Dist::Zilla::Plugin::TestRelease", - "name" : "@Author::RWSTAUNER/TestRelease", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::ConfirmRelease", - "name" : "@Author::RWSTAUNER/ConfirmRelease", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::UploadToCPAN", - "name" : "@Author::RWSTAUNER/UploadToCPAN", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Check", - "name" : "@Author::RWSTAUNER/@Git/Check", - "version" : "1.111590" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Commit", - "name" : "@Author::RWSTAUNER/@Git/Commit", - "version" : "1.111590" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Tag", - "name" : "@Author::RWSTAUNER/@Git/Tag", - "version" : "1.111590" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Push", - "name" : "@Author::RWSTAUNER/@Git/Push", - "version" : "1.111590" - }, - { - "class" : "Dist::Zilla::Plugin::InstallRelease", - "name" : "@Author::RWSTAUNER/InstallRelease", - "version" : "0.007" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":InstallModules", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":IncModules", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":TestFiles", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ExecFiles", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ShareFiles", - "version" : "4.200009" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":MainModule", - "version" : "4.200009" - } - ], - "zilla" : { - "class" : "Dist::Zilla::Dist::Builder", - "config" : { - "is_trial" : 0 - }, - "version" : "4.200009" - } - }, - "x_authority" : "cpan:RWSTAUNER" - }, - "name" : "File::Spec::Native", - "pathname" : "R/RW/RWSTAUNER/File-Spec-Native-1.003.tar.gz", - "provides" : { - "File::Spec::Native" : { - "file" : "File/Spec/Native.pm", - "version" : "1.003" - } - }, - "version" : "1.003" - }, - "File::chdir" : { - "dist" : "File-chdir-0.1006", - "module" : "File::chdir", - "mymeta" : { - "abstract" : "a more sensible way to change directories", - "author" : [ - "David A Golden <dagolden@cpan.org>", - "Michael G Schwern <schwern@pobox.com> (original author)" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.300002, CPAN::Meta::Converter version 2.112580, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "File-chdir", - "no_index" : { - "directory" : [ - "t", - "xt", - "examples", - "corpus" - ], - "package" : [ - "DB" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "File::Find" : 0, - "File::Temp" : 0, - "Test::More" : 0, - "warnings" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.30" - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Cwd" : "3.16", - "Exporter" : 0, - "File::Spec::Functions" : "3.27", - "strict" : 0, - "vars" : 0 - } - } - }, - "provides" : { - "File::chdir" : { - "file" : "lib/File/chdir.pm", - "version" : "0.1006" - }, - "File::chdir::ARRAY" : { - "file" : "lib/File/chdir.pm", - "version" : "0.1006" - }, - "File::chdir::SCALAR" : { - "file" : "lib/File/chdir.pm", - "version" : "0.1006" - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=File-chdir" - }, - "homepage" : "https://github.com/dagolden/file-chdir", - "repository" : { - "url" : "https://github.com/dagolden/file-chdir.git" - } - }, - "version" : "0.1006" - }, - "name" : "File::chdir", - "pathname" : "D/DA/DAGOLDEN/File-chdir-0.1006.tar.gz", - "provides" : { - "File::chdir" : { - "file" : "File/chdir.pm", - "version" : "0.1006" - }, - "File::chdir::ARRAY" : { - "file" : "File/chdir.pm" - }, - "File::chdir::SCALAR" : { - "file" : "File/chdir.pm" - } - }, - "version" : "0.1006" - }, - "Geography::NationalGrid" : { - "dist" : "Geography-NationalGrid-1.6", - "mymeta" : { - "abstract" : "Convert national grid references to/from lat/long", - "author" : [ - "P Kent (pause@selsyn.co.uk)" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Geography-NationalGrid", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "1.6" - }, - "name" : "Geography::NationalGrid", - "pathname" : "http:/backpan.perl.org/authors/id/P/PK/PKENT/Geography-NationalGrid-1.6.tar.gz", - "provides" : { - "Geography::NationalGrid" : { - "file" : "Geography/NationalGrid.pm", - "version" : "1.6" - }, - "Geography::NationalGrid::GB" : { - "file" : "Geography/NationalGrid/GB.pm", - "version" : "1.3" - }, - "Geography::NationalGrid::IE" : { - "file" : "Geography/NationalGrid/IE.pm", - "version" : "1.2" - } - }, - "target" : "Geography::NationalGrid", - "version" : "1.6" - }, - "Getopt::Long::Descriptive" : { - "dist" : "Getopt-Long-Descriptive-0.090", - "mymeta" : { - "abstract" : "Getopt::Long, but simpler and more powerful", - "author" : [ - "Hans Dieter Pearcey <hdp@cpan.org>", - "Ricardo Signes <rjbs@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.200005, CPAN::Meta::Converter version 2.110930, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Getopt-Long-Descriptive", - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : "0.96" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.31" - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "File::Basename" : 0, - "Getopt::Long" : "2.33", - "List::Util" : 0, - "Params::Validate" : "0.97", - "Scalar::Util" : 0, - "Sub::Exporter" : "0.972", - "Sub::Exporter::Util" : 0, - "overload" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "type" : "git", - "url" : "git://git.codesimply.com/Getopt-Long-Descriptive.git" - } - }, - "version" : "0.090", - "x_Dist_Zilla" : { - "plugins" : [ - { - "class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed", - "name" : "@RJBS/CheckPrereqsIndexed", - "version" : "0.002" - }, - { - "class" : "Dist::Zilla::Plugin::GatherDir", - "name" : "@RJBS/@Basic/GatherDir", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::PruneCruft", - "name" : "@RJBS/@Basic/PruneCruft", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::ManifestSkip", - "name" : "@RJBS/@Basic/ManifestSkip", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::MetaYAML", - "name" : "@RJBS/@Basic/MetaYAML", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::License", - "name" : "@RJBS/@Basic/License", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::Readme", - "name" : "@RJBS/@Basic/Readme", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::ExtraTests", - "name" : "@RJBS/@Basic/ExtraTests", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::ExecDir", - "name" : "@RJBS/@Basic/ExecDir", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::ShareDir", - "name" : "@RJBS/@Basic/ShareDir", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::MakeMaker", - "name" : "@RJBS/@Basic/MakeMaker", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::Manifest", - "name" : "@RJBS/@Basic/Manifest", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::TestRelease", - "name" : "@RJBS/@Basic/TestRelease", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::ConfirmRelease", - "name" : "@RJBS/@Basic/ConfirmRelease", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::UploadToCPAN", - "name" : "@RJBS/@Basic/UploadToCPAN", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::AutoPrereqs", - "name" : "@RJBS/AutoPrereqs", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::Git::NextVersion", - "name" : "@RJBS/Git::NextVersion", - "version" : "1.110500" - }, - { - "class" : "Dist::Zilla::Plugin::PkgVersion", - "name" : "@RJBS/PkgVersion", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::MetaConfig", - "name" : "@RJBS/MetaConfig", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::MetaJSON", - "name" : "@RJBS/MetaJSON", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::NextRelease", - "name" : "@RJBS/NextRelease", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::PodSyntaxTests", - "name" : "@RJBS/PodSyntaxTests", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::Repository", - "name" : "@RJBS/Repository", - "version" : "0.17" - }, - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "test", - "type" : "requires" - } - }, - "name" : "@RJBS/TestMoreWithSubtests", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::PodWeaver", - "name" : "@RJBS/PodWeaver", - "version" : "3.101641" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Check", - "name" : "@RJBS/@Git/Check", - "version" : "1.110500" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Commit", - "name" : "@RJBS/@Git/Commit", - "version" : "1.110500" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Tag", - "name" : "@RJBS/@Git/Tag", - "version" : "1.110500" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Push", - "name" : "@RJBS/@Git/Push", - "version" : "1.110500" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":InstallModules", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":TestFiles", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ExecFiles", - "version" : "4.200005" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ShareFiles", - "version" : "4.200005" - } - ], - "zilla" : { - "class" : "Dist::Zilla::Dist::Builder", - "config" : { - "is_trial" : 0 - }, - "version" : "4.200005" - } - } - }, - "name" : "Getopt::Long::Descriptive", - "pathname" : "R/RJ/RJBS/Getopt-Long-Descriptive-0.090.tar.gz", - "provides" : { - "Getopt::Long::Descriptive" : { - "file" : "Getopt/Long/Descriptive.pm", - "version" : "0.090" - }, - "Getopt::Long::Descriptive::Opts" : { - "file" : "Getopt/Long/Descriptive/Opts.pm", - "version" : "0.090" - }, - "Getopt::Long::Descriptive::Usage" : { - "file" : "Getopt/Long/Descriptive/Usage.pm", - "version" : "0.090" - } - }, - "target" : "Getopt::Long::Descriptive", - "version" : "0.090" - }, - "HTML::Form" : { - "dist" : "HTML-Form-6.00", - "mymeta" : { - "abstract" : "Class that represents an HTML form element", - "author" : [ - "Gisle Aas <gisle@activestate.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "HTML-Form", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Encode" : "2", - "HTML::TokeParser" : 0, - "HTTP::Request" : "6", - "HTTP::Request::Common" : "6", - "URI" : "1.10", - "perl" : "5.008008" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/gisle/libwww-perl" - }, - "x_MailingList" : "mailto:libwww@perl.org" - }, - "version" : "6.00" - }, - "name" : "HTML::Form", - "pathname" : "G/GA/GAAS/HTML-Form-6.00.tar.gz", - "provides" : { - "HTML::Form" : { - "file" : "HTML/Form.pm", - "version" : "6.00" - }, - "HTML::Form::FileInput" : { - "file" : "HTML/Form.pm" - }, - "HTML::Form::IgnoreInput" : { - "file" : "HTML/Form.pm" - }, - "HTML::Form::ImageInput" : { - "file" : "HTML/Form.pm" - }, - "HTML::Form::Input" : { - "file" : "HTML/Form.pm" - }, - "HTML::Form::KeygenInput" : { - "file" : "HTML/Form.pm" - }, - "HTML::Form::ListInput" : { - "file" : "HTML/Form.pm" - }, - "HTML::Form::SubmitInput" : { - "file" : "HTML/Form.pm" - }, - "HTML::Form::TextInput" : { - "file" : "HTML/Form.pm" - } - }, - "target" : "HTML::Form", - "version" : "6.00" - }, - "HTML::Parser" : { - "dist" : "HTML-Parser-3.69", - "mymeta" : { - "abstract" : "HTML parser class", - "author" : [ - "Gisle Aas <gisle@activestate.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.57_05, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "HTML-Parser", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "recommends" : { - "HTTP::Headers" : 0 - }, - "requires" : { - "HTML::Tagset" : "3", - "XSLoader" : 0, - "perl" : "5.008" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/gisle/html-parser" - }, - "x_MailingList" : "mailto:libwww@perl.org" - }, - "version" : "3.69" - }, - "name" : "HTML::Parser", - "pathname" : "G/GA/GAAS/HTML-Parser-3.69.tar.gz", - "provides" : { - "HTML::Entities" : { - "file" : "HTML/Entities.pm", - "version" : "3.69" - }, - "HTML::Filter" : { - "file" : "HTML/Filter.pm", - "version" : "3.57" - }, - "HTML::HeadParser" : { - "file" : "HTML/HeadParser.pm", - "version" : "3.69" - }, - "HTML::LinkExtor" : { - "file" : "HTML/LinkExtor.pm", - "version" : "3.69" - }, - "HTML::Parser" : { - "file" : "HTML/Parser.pm", - "version" : "3.69" - }, - "HTML::PullParser" : { - "file" : "HTML/PullParser.pm", - "version" : "3.57" - }, - "HTML::TokeParser" : { - "file" : "HTML/TokeParser.pm", - "version" : "3.69" - } - }, - "target" : "HTML::Parser", - "version" : "3.69" - }, - "HTML::Selector::XPath" : { - "dist" : "HTML-Selector-XPath-0.12", - "mymeta" : { - "abstract" : "CSS Selector to XPath compiler", - "author" : [ - "Tatsuhiko Miyagawa <miyagawa@bulknews.net>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.81, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "HTML-Selector-XPath", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.50" - } - }, - "runtime" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.62", - "Test::Base" : 0, - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.12" - }, - "name" : "HTML::Selector::XPath", - "pathname" : "C/CO/CORION/HTML-Selector-XPath-0.12.tar.gz", - "provides" : { - "HTML::Selector::XPath" : { - "file" : "HTML/Selector/XPath.pm", - "version" : "0.12" - } - }, - "target" : "HTML::Selector::XPath", - "version" : "0.12" - }, - "HTML::Tagset" : { - "dist" : "HTML-Tagset-3.20", - "mymeta" : { - "abstract" : "data tables useful in parsing HTML", - "author" : [ - "Andy Lester <andy@petdance.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.42, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "HTML-Tagset", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "3.20" - }, - "name" : "HTML::Tagset", - "pathname" : "P/PE/PETDANCE/HTML-Tagset-3.20.tar.gz", - "provides" : { - "HTML::Tagset" : { - "file" : "HTML/Tagset.pm", - "version" : "3.20" - } - }, - "target" : "HTML::Tagset", - "version" : "3.20" - }, - "HTML::Tree" : { - "dist" : "HTML-Tree-4.2", - "mymeta" : { - "abstract" : "Class for objects that represent HTML elements", - "author" : [ - "Jeff Fearn <jfearn@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "HTML-Tree", - "prereqs" : { - "build" : { - "requires" : { - "HTML::Parser" : "3.46", - "HTML::Tagset" : "3.02", - "Module::Build" : 0, - "Test::Exception" : 0, - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "Module::Build" : "0.36" - } - }, - "runtime" : { - "requires" : { - "HTML::Parser" : "3.46", - "HTML::Tagset" : "3.02", - "perl" : "v5.8.0" - } - } - }, - "provides" : { - "HTML::AsSubs" : { - "file" : "lib/HTML/AsSubs.pm", - "version" : "4.2" - }, - "HTML::Element" : { - "file" : "lib/HTML/Element.pm", - "version" : "4.2" - }, - "HTML::Element::traverse" : { - "file" : "lib/HTML/Element/traverse.pm", - "version" : "4.2" - }, - "HTML::Parse" : { - "file" : "lib/HTML/Parse.pm", - "version" : "4.2" - }, - "HTML::Tree" : { - "file" : "lib/HTML/Tree.pm", - "version" : "4.2" - }, - "HTML::TreeBuilder" : { - "file" : "lib/HTML/TreeBuilder.pm", - "version" : "4.2" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "4.2" - }, - "name" : "HTML::Tree", - "pathname" : "J/JF/JFEARN/HTML-Tree-4.2.tar.gz", - "provides" : { - "HTML::AsSubs" : { - "file" : "HTML/AsSubs.pm", - "version" : "4.2" - }, - "HTML::Element" : { - "file" : "HTML/Element.pm", - "version" : "4.2" - }, - "HTML::Element::traverse" : { - "file" : "HTML/Element/traverse.pm", - "version" : "4.2" - }, - "HTML::Parse" : { - "file" : "HTML/Parse.pm", - "version" : "4.2" - }, - "HTML::Tree" : { - "file" : "HTML/Tree.pm", - "version" : "4.2" - }, - "HTML::TreeBuilder" : { - "file" : "HTML/TreeBuilder.pm", - "version" : "4.2" - } - }, - "target" : "HTML::TreeBuilder", - "version" : "4.2" - }, - "HTML::TreeBuilder::XPath" : { - "dist" : "HTML-TreeBuilder-XPath-0.14", - "mymeta" : { - "abstract" : "add XPath support to HTML::TreeBuilder", - "author" : [ - "Michel Rodriguez <mrodrigu@localdomain>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.58, CPAN::Meta::Converter version 2.110930001, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "HTML-TreeBuilder-XPath", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "HTML::TreeBuilder" : 0, - "List::Util" : 0, - "XML::XPathEngine" : "0.12" - } - } - }, - "release_status" : "stable", - "version" : "0.14" - }, - "name" : "HTML::TreeBuilder::XPath", - "pathname" : "M/MI/MIROD/HTML-TreeBuilder-XPath-0.14.tar.gz", - "provides" : { - "HTML::Element" : { - "file" : "HTML/TreeBuilder/XPath.pm" - }, - "HTML::TreeBuilder::XPath" : { - "file" : "HTML/TreeBuilder/XPath.pm", - "version" : "0.14" - }, - "HTML::TreeBuilder::XPath::Attribute" : { - "file" : "HTML/TreeBuilder/XPath.pm" - }, - "HTML::TreeBuilder::XPath::Node" : { - "file" : "HTML/TreeBuilder/XPath.pm" - }, - "HTML::TreeBuilder::XPath::Root" : { - "file" : "HTML/TreeBuilder/XPath.pm" - }, - "HTML::TreeBuilder::XPath::TextNode" : { - "file" : "HTML/TreeBuilder/XPath.pm" - } - }, - "target" : "HTML::TreeBuilder::XPath", - "version" : "0.14" - }, - "HTTP::Body" : { - "dist" : "HTTP-Body-1.15", - "mymeta" : { - "abstract" : "HTTP Body Parser", - "author" : [ - "Christian Hansen, C<chansen@cpan.org>", - "Sebastian Riedel, C<sri@cpan.org>", - "Andy Grundman, C<andy@hybridized.org>", - "Torsten Raudssus, C<getty@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.300003, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "HTTP-Body", - "prereqs" : { - "build" : { - "requires" : { - "Test::Deep" : 0, - "Test::More" : "0.86" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.30" - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Digest::MD5" : 0, - "File::Temp" : "0.14", - "HTTP::Headers" : 0, - "IO::File" : "1.14" - } - } - }, - "release_status" : "stable", - "resources" : { - "X_mailing_list" : "http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst-dev", - "repository" : { - "url" : "https://dev.catalystframework.org/repos/Catalyst/trunk/HTTP-Body/" - } - }, - "version" : "1.15" - }, - "name" : "HTTP::Body", - "pathname" : "G/GE/GETTY/HTTP-Body-1.15.tar.gz", - "provides" : { - "HTTP::Body" : { - "file" : "HTTP/Body.pm", - "version" : "1.15" - }, - "HTTP::Body::MultiPart" : { - "file" : "HTTP/Body/MultiPart.pm", - "version" : "1.15" - }, - "HTTP::Body::OctetStream" : { - "file" : "HTTP/Body/OctetStream.pm", - "version" : "1.15" - }, - "HTTP::Body::UrlEncoded" : { - "file" : "HTTP/Body/UrlEncoded.pm", - "version" : "1.15" - }, - "HTTP::Body::XForms" : { - "file" : "HTTP/Body/XForms.pm", - "version" : "1.15" - }, - "HTTP::Body::XFormsMultipart" : { - "file" : "HTTP/Body/XFormsMultipart.pm", - "version" : "1.15" - } - }, - "target" : "HTTP::Body", - "version" : "1.15" - }, - "HTTP::Cookies" : { - "dist" : "HTTP-Cookies-6.00", - "mymeta" : { - "abstract" : "HTTP cookie jars", - "author" : [ - "Gisle Aas <gisle@activestate.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "HTTP-Cookies", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "HTTP::Date" : "6", - "HTTP::Headers::Util" : "6", - "Time::Local" : 0, - "perl" : "5.008008" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/gisle/libwww-perl" - }, - "x_MailingList" : "mailto:libwww@perl.org" - }, - "version" : "6.00" - }, - "name" : "HTTP::Cookies", - "pathname" : "G/GA/GAAS/HTTP-Cookies-6.00.tar.gz", - "provides" : { - "HTTP::Cookies" : { - "file" : "HTTP/Cookies.pm", - "version" : "6.00" - }, - "HTTP::Cookies::Microsoft" : { - "file" : "HTTP/Cookies/Microsoft.pm", - "version" : "6.00" - }, - "HTTP::Cookies::Netscape" : { - "file" : "HTTP/Cookies/Netscape.pm", - "version" : "6.00" - } - }, - "target" : "HTTP::Cookies", - "version" : "6.00" - }, - "HTTP::Daemon" : { - "dist" : "HTTP-Daemon-6.00", - "mymeta" : { - "abstract" : "a simple http server class", - "author" : [ - "Gisle Aas <gisle@activestate.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "HTTP-Daemon", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "HTTP::Date" : "6", - "HTTP::Request" : "6", - "HTTP::Response" : "6", - "HTTP::Status" : "6", - "IO::Socket" : 0, - "LWP::MediaTypes" : "6", - "Sys::Hostname" : 0, - "perl" : "5.008008" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/gisle/libwww-perl" - }, - "x_MailingList" : "mailto:libwww@perl.org" - }, - "version" : "6.00" - }, - "name" : "HTTP::Daemon", - "pathname" : "G/GA/GAAS/HTTP-Daemon-6.00.tar.gz", - "provides" : { - "HTTP::Daemon" : { - "file" : "HTTP/Daemon.pm", - "version" : "6.00" - }, - "HTTP::Daemon::ClientConn" : { - "file" : "HTTP/Daemon.pm" - } - }, - "target" : "HTTP::Daemon", - "version" : "6.00" - }, - "HTTP::Date" : { - "dist" : "HTTP-Date-6.00", - "mymeta" : { - "abstract" : "date conversion routines", - "author" : [ - "Gisle Aas <gisle@activestate.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "HTTP-Date", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "recommends" : { - "Time::Zone" : 0 - }, - "requires" : { - "Time::Local" : 0, - "perl" : "5.008008" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/gisle/libwww-perl" - }, - "x_MailingList" : "mailto:libwww@perl.org" - }, - "version" : "6.00" - }, - "name" : "HTTP::Date", - "pathname" : "G/GA/GAAS/HTTP-Date-6.00.tar.gz", - "provides" : { - "HTTP::Date" : { - "file" : "HTTP/Date.pm", - "version" : "6.00" - } - }, - "target" : "HTTP::Date", - "version" : "6.00" - }, - "HTTP::Message" : { - "dist" : "HTTP-Message-6.02", - "mymeta" : { - "abstract" : "HTTP style messages", - "author" : [ - "Gisle Aas <gisle@activestate.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "HTTP-Message", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Compress::Raw::Zlib" : 0, - "Encode" : "2.12", - "Encode::Locale" : "1", - "HTML::Parser" : "3.33", - "HTTP::Date" : "6", - "IO::Compress::Bzip2" : "2.021", - "IO::Compress::Deflate" : 0, - "IO::Compress::Gzip" : 0, - "IO::Uncompress::Bunzip2" : "2.021", - "IO::Uncompress::Gunzip" : 0, - "IO::Uncompress::Inflate" : 0, - "IO::Uncompress::RawInflate" : 0, - "LWP::MediaTypes" : "6", - "MIME::Base64" : "2.1", - "MIME::QuotedPrint" : 0, - "URI" : "1.10", - "perl" : "5.008008" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/gisle/libwww-perl/tree/HTTP-Message/master" - }, - "x_MailingList" : "mailto:libwww@perl.org" - }, - "version" : "6.02" - }, - "name" : "HTTP::Message", - "pathname" : "G/GA/GAAS/HTTP-Message-6.02.tar.gz", - "provides" : { - "HTTP::Config" : { - "file" : "HTTP/Config.pm", - "version" : "6.00" - }, - "HTTP::Headers" : { - "file" : "HTTP/Headers.pm", - "version" : "6.00" - }, - "HTTP::Headers::Auth" : { - "file" : "HTTP/Headers/Auth.pm", - "version" : "6.00" - }, - "HTTP::Headers::ETag" : { - "file" : "HTTP/Headers/ETag.pm", - "version" : "6.00" - }, - "HTTP::Headers::Util" : { - "file" : "HTTP/Headers/Util.pm", - "version" : "6.00" - }, - "HTTP::Message" : { - "file" : "HTTP/Message.pm", - "version" : "6.02" - }, - "HTTP::Request" : { - "file" : "HTTP/Request.pm", - "version" : "6.00" - }, - "HTTP::Request::Common" : { - "file" : "HTTP/Request/Common.pm", - "version" : "6.00" - }, - "HTTP::Response" : { - "file" : "HTTP/Response.pm", - "version" : "6.01" - }, - "HTTP::Status" : { - "file" : "HTTP/Status.pm", - "version" : "6.00" - } - }, - "target" : "HTTP::Status", - "version" : "6.02" - }, - "HTTP::Negotiate" : { - "dist" : "HTTP-Negotiate-6.00", - "mymeta" : { - "abstract" : "choose a variant to serve", - "author" : [ - "Gisle Aas <gisle@activestate.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "HTTP-Negotiate", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "HTTP::Headers" : "6", - "perl" : "5.008008" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/gisle/libwww-perl" - }, - "x_MailingList" : "mailto:libwww@perl.org" - }, - "version" : "6.00" - }, - "name" : "HTTP::Negotiate", - "pathname" : "G/GA/GAAS/HTTP-Negotiate-6.00.tar.gz", - "provides" : { - "HTTP::Negotiate" : { - "file" : "HTTP/Negotiate.pm", - "version" : "6.00" - } - }, - "target" : "HTTP::Negotiate", - "version" : "6.00" - }, - "HTTP::Request::AsCGI" : { - "dist" : "HTTP-Request-AsCGI-1.2", - "mymeta" : { - "abstract" : "Set up a CGI environment from an HTTP::Request", - "author" : [ - "Christian Hansen <ch@ngmedia.com>", - "Hans Dieter Pearcey <hdp@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 1.093400, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "HTTP-Request-AsCGI", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Class::Accessor" : 0, - "HTTP::Request" : 0, - "HTTP::Response" : "1.53", - "IO::File" : 0, - "Test::More" : 0, - "URI::Escape" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://dev.catalyst.perl.org/repos/Catalyst/HTTP-Request-AsCGI" - } - }, - "version" : "1.2" - }, - "name" : "HTTP::Request::AsCGI", - "pathname" : "F/FL/FLORA/HTTP-Request-AsCGI-1.2.tar.gz", - "provides" : { - "HTTP::Request::AsCGI" : { - "file" : "HTTP/Request/AsCGI.pm", - "version" : "1.2" - } - }, - "target" : "HTTP::Request::AsCGI", - "version" : "1.2" - }, - "HTTP::Server::Simple" : { - "dist" : "HTTP-Server-Simple-0.44", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.00, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "HTTP-Server-Simple", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "CGI" : 0, - "Socket" : 0, - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.44" - }, - "name" : "HTTP::Server::Simple", - "pathname" : "J/JE/JESSE/HTTP-Server-Simple-0.44.tar.gz", - "provides" : { - "HTTP::Server::Simple" : { - "file" : "HTTP/Server/Simple.pm", - "version" : "0.44" - }, - "HTTP::Server::Simple::CGI" : { - "file" : "HTTP/Server/Simple/CGI.pm", - "version" : "0" - }, - "HTTP::Server::Simple::CGI::Environment" : { - "file" : "HTTP/Server/Simple/CGI/Environment.pm", - "version" : "0" - } - }, - "target" : "HTTP::Server::Simple", - "version" : "0.44" - }, - "Hash::Merge" : { - "dist" : "Hash-Merge-0.12", - "mymeta" : { - "abstract" : "Merges arbitrarily deep hashes into a single hash", - "author" : [ - "Michael K. Neylon <mneylon-pm@masemware.com" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Hash-Merge", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Clone" : 0, - "Test::More" : "0.33" - } - } - }, - "release_status" : "stable", - "version" : "0.12" - }, - "name" : "Hash::Merge", - "pathname" : "D/DM/DMUEY/Hash-Merge-0.12.tar.gz", - "provides" : { - "Hash::Merge" : { - "file" : "Hash/Merge.pm", - "version" : "0.12" - } - }, - "target" : "Hash::Merge", - "version" : "0.12" - }, - "Hook::LexWrap" : { - "dist" : "Hook-LexWrap-0.24", - "mymeta" : { - "abstract" : "Lexically scoped subroutine wrappers", - "author" : [ - "Damian Conway (damian@conway.org)" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Hook-LexWrap", - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : 0 - } - }, - "runtime" : { - "requires" : { - "perl" : "5.006" - } - } - }, - "provides" : { - "Hook::LexWrap" : { - "file" : "lib/Hook/LexWrap.pm", - "version" : "0.24" - }, - "Hook::LexWrap::Cleanup" : { - "file" : "lib/Hook/LexWrap.pm", - "version" : 0 - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://github.com/chorny/Hook-LexWrap" - } - }, - "version" : "0.24" - }, - "name" : "Hook::LexWrap", - "pathname" : "/authors/id/C/CH/CHORNY/Hook-LexWrap-0.24.tar.gz", - "provides" : { - "Hook::LexWrap" : { - "file" : "Hook/LexWrap.pm", - "version" : "0.24" - }, - "Hook::LexWrap::Cleanup" : { - "file" : "Hook/LexWrap.pm" - } - }, - "target" : "Hook::LexWrap", - "version" : "0.24" - }, - "IO::Compress" : { - "dist" : "IO-Compress-2.048", - "mymeta" : { - "abstract" : "IO Interface to compressed data files/buffers", - "author" : [ - "Paul Marquess <pmqs@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "IO-Compress", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Compress::Raw::Bzip2" : "2.048", - "Compress::Raw::Zlib" : "2.048", - "Scalar::Util" : 0 - } - } - }, - "release_status" : "stable", - "version" : "2.048" - }, - "name" : "IO::Compress", - "pathname" : "P/PM/PMQS/IO-Compress-2.048.tar.gz", - "provides" : { - "Compress::Zlib" : { - "file" : "Compress/Zlib.pm", - "version" : "2.048" - }, - "File::GlobMapper" : { - "file" : "File/GlobMapper.pm", - "version" : "1.000" - }, - "IO::Compress" : {}, - "IO::Compress::Adapter::Bzip2" : { - "file" : "IO/Compress/Adapter/Bzip2.pm", - "version" : "2.048" - }, - "IO::Compress::Adapter::Deflate" : { - "file" : "IO/Compress/Adapter/Deflate.pm", - "version" : "2.048" - }, - "IO::Compress::Adapter::Identity" : { - "file" : "IO/Compress/Adapter/Identity.pm", - "version" : "2.048" - }, - "IO::Compress::Base" : { - "file" : "IO/Compress/Base.pm", - "version" : "2.048" - }, - "IO::Compress::Base::Common" : { - "file" : "IO/Compress/Base/Common.pm", - "version" : "2.048" - }, - "IO::Compress::Bzip2" : { - "file" : "IO/Compress/Bzip2.pm", - "version" : "2.048" - }, - "IO::Compress::Deflate" : { - "file" : "IO/Compress/Deflate.pm", - "version" : "2.048" - }, - "IO::Compress::Gzip" : { - "file" : "IO/Compress/Gzip.pm", - "version" : "2.048" - }, - "IO::Compress::Gzip::Constants" : { - "file" : "IO/Compress/Gzip/Constants.pm", - "version" : "2.048" - }, - "IO::Compress::RawDeflate" : { - "file" : "IO/Compress/RawDeflate.pm", - "version" : "2.048" - }, - "IO::Compress::Zip" : { - "file" : "IO/Compress/Zip.pm", - "version" : "2.048" - }, - "IO::Compress::Zip::Constants" : { - "file" : "IO/Compress/Zip/Constants.pm", - "version" : "2.048" - }, - "IO::Compress::Zlib::Constants" : { - "file" : "IO/Compress/Zlib/Constants.pm", - "version" : "2.048" - }, - "IO::Compress::Zlib::Extra" : { - "file" : "IO/Compress/Zlib/Extra.pm", - "version" : "2.048" - }, - "IO::Uncompress::Adapter::Bunzip2" : { - "file" : "IO/Uncompress/Adapter/Bunzip2.pm", - "version" : "2.048" - }, - "IO::Uncompress::Adapter::Identity" : { - "file" : "IO/Uncompress/Adapter/Identity.pm", - "version" : "2.048" - }, - "IO::Uncompress::Adapter::Inflate" : { - "file" : "IO/Uncompress/Adapter/Inflate.pm", - "version" : "2.048" - }, - "IO::Uncompress::AnyInflate" : { - "file" : "IO/Uncompress/AnyInflate.pm", - "version" : "2.048" - }, - "IO::Uncompress::AnyUncompress" : { - "file" : "IO/Uncompress/AnyUncompress.pm", - "version" : "2.048" - }, - "IO::Uncompress::Base" : { - "file" : "IO/Uncompress/Base.pm", - "version" : "2.048" - }, - "IO::Uncompress::Bunzip2" : { - "file" : "IO/Uncompress/Bunzip2.pm", - "version" : "2.048" - }, - "IO::Uncompress::Gunzip" : { - "file" : "IO/Uncompress/Gunzip.pm", - "version" : "2.048" - }, - "IO::Uncompress::Inflate" : { - "file" : "IO/Uncompress/Inflate.pm", - "version" : "2.048" - }, - "IO::Uncompress::RawInflate" : { - "file" : "IO/Uncompress/RawInflate.pm", - "version" : "2.048" - }, - "IO::Uncompress::Unzip" : { - "file" : "IO/Uncompress/Unzip.pm", - "version" : "2.048" - }, - "U64" : { - "file" : "IO/Compress/Base/Common.pm" - }, - "Zlib::OldDeflate" : { - "file" : "Compress/Zlib.pm" - }, - "Zlib::OldInflate" : { - "file" : "Compress/Zlib.pm" - } - }, - "target" : "IO::Compress::Bzip2", - "version" : "2.048" - }, - "IO::String" : { - "dist" : "IO-String-1.08", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "IO-String", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "1.08" - }, - "name" : "IO::String", - "pathname" : "G/GA/GAAS/IO-String-1.08.tar.gz", - "provides" : { - "IO::String" : { - "file" : "IO/String.pm", - "version" : "1.08" - } - }, - "target" : "IO::String", - "version" : "1.08" - }, - "IO::Stringy" : { - "dist" : "IO-stringy-2.110", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "IO-stringy", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "2.110" - }, - "name" : "IO::Stringy", - "pathname" : "D/DS/DSKOLL/IO-stringy-2.110.tar.gz", - "provides" : { - "IO::AtomicFile" : { - "file" : "IO/AtomicFile.pm", - "version" : "2.110" - }, - "IO::InnerFile" : { - "file" : "IO/InnerFile.pm", - "version" : "2.110" - }, - "IO::Lines" : { - "file" : "IO/Lines.pm", - "version" : "2.110" - }, - "IO::Scalar" : { - "file" : "IO/Scalar.pm", - "version" : "2.110" - }, - "IO::ScalarArray" : { - "file" : "IO/ScalarArray.pm", - "version" : "2.110" - }, - "IO::Stringy" : { - "file" : "IO/Stringy.pm", - "version" : "2.110" - }, - "IO::Wrap" : { - "file" : "IO/Wrap.pm", - "version" : "2.110" - }, - "IO::WrapTie" : { - "file" : "IO/WrapTie.pm", - "version" : "2.110" - }, - "IO::WrapTie::Master" : { - "file" : "IO/WrapTie.pm" - }, - "IO::WrapTie::Slave" : { - "file" : "IO/WrapTie.pm" - } - }, - "target" : "IO::Scalar", - "version" : "2.110" - }, - "IO::Tty" : { - "dist" : "IO-Tty-1.10", - "module" : "IO::Pty", - "mymeta" : { - "abstract" : "Pseudo ttys and constants", - "author" : [ - "Roland Giersig <RGiersig@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "IO-Tty", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "https://expectperl.svn.sourceforge.net/svnroot/expectperl/IO-Tty/trunk" - } - }, - "version" : "1.10" - }, - "name" : "IO::Tty", - "pathname" : "T/TO/TODDR/IO-Tty-1.10.tar.gz", - "provides" : { - "IO::Pty" : { - "file" : "IO/Pty.pm", - "version" : "1.10" - }, - "IO::Tty" : { - "file" : "IO/Tty.pm", - "version" : "1.10" - }, - "IO::Tty::Constant" : { - "file" : "IO/Tty/Constant.pm" - } - }, - "version" : "1.10" - }, - "IPC::Run" : { - "dist" : "IPC-Run-0.92", - "module" : "IPC::Run", - "mymeta" : { - "abstract" : "system() and background procs w/ piping, redirs, ptys (Unix, Win32)", - "author" : [ - "Barrie Slaymaker <barries@slaysys.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.120351, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "IPC-Run", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "recommends" : { - "IO::Pty" : "1.08" - }, - "requires" : { - "IO::Pty" : "1.08", - "Test::More" : "0.47" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "https://rt.cpan.org/NoAuth/Bugs.html?Dist=IPC-Run" - }, - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "https://github.com/toddr/IPC-Run" - } - }, - "version" : "0.92" - }, - "name" : "IPC::Run", - "pathname" : "T/TO/TODDR/IPC-Run-0.92.tar.gz", - "provides" : { - "IPC::Run" : { - "file" : "IPC/Run.pm", - "version" : "0.92" - }, - "IPC::Run::Debug" : { - "file" : "IPC/Run/Debug.pm", - "version" : "0.90" - }, - "IPC::Run::IO" : { - "file" : "IPC/Run/IO.pm", - "version" : "0.90" - }, - "IPC::Run::Timer" : { - "file" : "IPC/Run/Timer.pm", - "version" : "0.90" - }, - "IPC::Run::Win32Helper" : { - "file" : "IPC/Run/Win32Helper.pm", - "version" : "0.90" - }, - "IPC::Run::Win32IO" : { - "file" : "IPC/Run/Win32IO.pm", - "version" : "0.90" - }, - "IPC::Run::Win32Pump" : { - "file" : "IPC/Run/Win32Pump.pm", - "version" : "0.90" - } - }, - "version" : "0.92" - }, - "IPC::Run3" : { - "dist" : "IPC-Run3-0.044", - "mymeta" : { - "abstract" : "run a subprocess with input/ouput redirection", - "author" : [ - "Barrie Slaymaker <barries@slaysys.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "open_source" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "IPC-Run3", - "no_index" : { - "directory" : [ - "lib/IPC/Run3" - ], - "file" : [ - "bin/run3profpp" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::More" : "0.31", - "Time::HiRes" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/rjbs/ipc-run3/" - } - }, - "version" : "0.044" - }, - "name" : "IPC::Run3", - "pathname" : "R/RJ/RJBS/IPC-Run3-0.044.tar.gz", - "provides" : { - "IPC::Run3" : { - "file" : "IPC/Run3.pm", - "version" : "0.044" - }, - "IPC::Run3::ProfArrayBuffer" : { - "file" : "IPC/Run3/ProfArrayBuffer.pm", - "version" : "0.044" - }, - "IPC::Run3::ProfLogReader" : { - "file" : "IPC/Run3/ProfLogReader.pm", - "version" : "0.044" - }, - "IPC::Run3::ProfLogger" : { - "file" : "IPC/Run3/ProfLogger.pm", - "version" : "0.044" - }, - "IPC::Run3::ProfPP" : { - "file" : "IPC/Run3/ProfPP.pm", - "version" : "0.044" - }, - "IPC::Run3::ProfReporter" : { - "file" : "IPC/Run3/ProfReporter.pm", - "version" : "0.044" - } - }, - "target" : "IPC::Run3", - "version" : "0.044" - }, - "Image::Size" : { - "dist" : "Image-Size-3.230", - "mymeta" : { - "abstract" : "A library to extract height/width from images", - "author" : [ - "Randy J. Ray <rjray@blackperl.com>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.3607, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Image-Size", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "Module::Build" : "0.36" - } - }, - "runtime" : { - "recommends" : { - "Compress::Zlib" : "2" - }, - "requires" : { - "File::Spec" : "0.8", - "Module::Build" : "0.28", - "Test::More" : "0.80" - } - } - }, - "provides" : { - "Image::Size" : { - "file" : "lib/Image/Size.pm", - "version" : "3.230" - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=Image-Size" - }, - "homepage" : "http://search.cpan.org/dist/Image-Size", - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://github.com/rjray/image-size" - } - }, - "version" : "3.230" - }, - "name" : "Image::Size", - "pathname" : "R/RJ/RJRAY/Image-Size-3.230.tar.gz", - "provides" : { - "Image::Size" : { - "file" : "Image/Size.pm", - "version" : "3.230" - } - }, - "target" : "Image::Size", - "version" : "3.230" - }, - "JSON" : { - "dist" : "JSON-2.53", - "module" : "JSON", - "mymeta" : { - "abstract" : "JSON (JavaScript Object Notation) encoder/decoder", - "author" : [ - "Makamaka Hannyaharamitu, E<lt>makamaka[at]cpan.orgE<gt>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "JSON", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/makamaka/JSON" - } - }, - "version" : "2.53" - }, - "name" : "JSON", - "pathname" : "M/MA/MAKAMAKA/JSON-2.53.tar.gz", - "provides" : { - "JSON" : { - "file" : "JSON.pm", - "version" : "2.53" - }, - "JSON::Backend::PP" : { - "file" : "JSON.pm" - }, - "JSON::Boolean" : { - "file" : "JSON.pm" - }, - "JSON::PP" : { - "file" : "JSON/backportPP.pm", - "version" : "2.27200" - }, - "JSON::PP5005" : { - "file" : "JSON/backportPP/Compat5005.pm", - "version" : "1.10" - }, - "JSON::PP56" : { - "file" : "JSON/backportPP/Compat5006.pm", - "version" : "1.08" - }, - "JSON::PP::IncrParser" : { - "file" : "JSON/backportPP.pm", - "version" : "1.01" - }, - "JSON::backportPP::Boolean" : { - "file" : "JSON/backportPP.pm" - } - }, - "version" : "2.53" - }, - "LWP" : { - "dist" : "libwww-perl-6.03", - "mymeta" : { - "abstract" : "The World-Wide Web library for Perl", - "author" : [ - "Gisle Aas <gisle@activestate.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.57_05, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "libwww-perl", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "recommends" : { - "Authen::NTLM" : "1.02", - "Data::Dump" : 0, - "LWP::Protocol::https" : "6.02" - }, - "requires" : { - "Digest::MD5" : 0, - "Encode" : "2.12", - "Encode::Locale" : 0, - "File::Listing" : "6", - "HTML::Entities" : 0, - "HTML::HeadParser" : 0, - "HTTP::Cookies" : "6", - "HTTP::Daemon" : "6", - "HTTP::Date" : "6", - "HTTP::Negotiate" : "6", - "HTTP::Request" : "6", - "HTTP::Request::Common" : "6", - "HTTP::Response" : "6", - "HTTP::Status" : "6", - "IO::Select" : 0, - "IO::Socket" : 0, - "LWP::MediaTypes" : "6", - "MIME::Base64" : "2.1", - "Net::FTP" : "2.58", - "Net::HTTP" : "6", - "URI" : "1.10", - "URI::Escape" : 0, - "WWW::RobotRules" : "6", - "perl" : "5.008008" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/gisle/libwww-perl" - }, - "x_MailingList" : "mailto:libwww@perl.org" - }, - "version" : "6.03" - }, - "name" : "LWP", - "pathname" : "G/GA/GAAS/libwww-perl-6.03.tar.gz", - "provides" : { - "LWP" : { - "file" : "LWP.pm", - "version" : "6.03" - }, - "LWP::Authen::Basic" : { - "file" : "LWP/Authen/Basic.pm" - }, - "LWP::Authen::Digest" : { - "file" : "LWP/Authen/Digest.pm" - }, - "LWP::Authen::Ntlm" : { - "file" : "LWP/Authen/Ntlm.pm", - "version" : "6.00" - }, - "LWP::ConnCache" : { - "file" : "LWP/ConnCache.pm", - "version" : "6.02" - }, - "LWP::Debug" : { - "file" : "LWP/Debug.pm" - }, - "LWP::DebugFile" : { - "file" : "LWP/DebugFile.pm" - }, - "LWP::MemberMixin" : { - "file" : "LWP/MemberMixin.pm" - }, - "LWP::Protocol" : { - "file" : "LWP/Protocol.pm", - "version" : "6.00" - }, - "LWP::Protocol::GHTTP" : { - "file" : "LWP/Protocol/GHTTP.pm" - }, - "LWP::Protocol::MyFTP" : { - "file" : "LWP/Protocol/ftp.pm" - }, - "LWP::Protocol::cpan" : { - "file" : "LWP/Protocol/cpan.pm" - }, - "LWP::Protocol::data" : { - "file" : "LWP/Protocol/data.pm" - }, - "LWP::Protocol::file" : { - "file" : "LWP/Protocol/file.pm" - }, - "LWP::Protocol::ftp" : { - "file" : "LWP/Protocol/ftp.pm" - }, - "LWP::Protocol::gopher" : { - "file" : "LWP/Protocol/gopher.pm" - }, - "LWP::Protocol::http" : { - "file" : "LWP/Protocol/http.pm" - }, - "LWP::Protocol::http::Socket" : { - "file" : "LWP/Protocol/http.pm" - }, - "LWP::Protocol::http::SocketMethods" : { - "file" : "LWP/Protocol/http.pm" - }, - "LWP::Protocol::loopback" : { - "file" : "LWP/Protocol/loopback.pm" - }, - "LWP::Protocol::mailto" : { - "file" : "LWP/Protocol/mailto.pm" - }, - "LWP::Protocol::nntp" : { - "file" : "LWP/Protocol/nntp.pm" - }, - "LWP::Protocol::nogo" : { - "file" : "LWP/Protocol/nogo.pm" - }, - "LWP::RobotUA" : { - "file" : "LWP/RobotUA.pm", - "version" : "6.03" - }, - "LWP::Simple" : { - "file" : "LWP/Simple.pm", - "version" : "6.00" - }, - "LWP::UserAgent" : { - "file" : "LWP/UserAgent.pm", - "version" : "6.03" - } - }, - "target" : "LWP", - "version" : "6.03" - }, - "LWP::MediaTypes" : { - "dist" : "LWP-MediaTypes-6.01", - "mymeta" : { - "abstract" : "guess media type for a file or a URL", - "author" : [ - "Gisle Aas <gisle@activestate.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "LWP-MediaTypes", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "perl" : "5.008008" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/gisle/libwww-perl" - }, - "x_MailingList" : "mailto:libwww@perl.org" - }, - "version" : "6.01" - }, - "name" : "LWP::MediaTypes", - "pathname" : "G/GA/GAAS/LWP-MediaTypes-6.01.tar.gz", - "provides" : { - "LWP::MediaTypes" : { - "file" : "LWP/MediaTypes.pm", - "version" : "6.01" - } - }, - "target" : "LWP::MediaTypes", - "version" : "6.01" - }, - "Lingua::EN::Inflect" : { - "dist" : "Lingua-EN-Inflect-1.893", - "mymeta" : { - "abstract" : "Convert singular to plural. Select \"a\" or \"an\".", - "author" : [ - "Damian Conway <DCONWAY@CPAN.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Lingua-EN-Inflect", - "prereqs" : { - "runtime" : { - "requires" : { - "Test::More" : 0, - "version" : 0 - } - } - }, - "release_status" : "stable", - "version" : "1.893" - }, - "name" : "Lingua::EN::Inflect", - "pathname" : "D/DC/DCONWAY/Lingua-EN-Inflect-1.893.tar.gz", - "provides" : { - "Lingua::EN::Inflect" : { - "file" : "Lingua/EN/Inflect.pm", - "version" : "1.893" - } - }, - "target" : "Lingua::EN::Inflect", - "version" : "1.893" - }, - "Lingua::EN::Inflect::Number" : { - "dist" : "Lingua-EN-Inflect-Number-1.1", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Lingua-EN-Inflect-Number", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Lingua::EN::Inflect" : 0 - } - } - }, - "release_status" : "stable", - "version" : "1.1" - }, - "name" : "Lingua::EN::Inflect::Number", - "pathname" : "S/SI/SIMON/Lingua-EN-Inflect-Number-1.1.tar.gz", - "provides" : { - "Lingua::EN::Inflect::Number" : { - "file" : "Lingua/EN/Inflect/Number.pm", - "version" : "1.1" - } - }, - "target" : "Lingua::EN::Inflect::Number", - "version" : "1.1" - }, - "Lingua::EN::Inflect::Phrase" : { - "dist" : "Lingua-EN-Inflect-Phrase-0.12", - "mymeta" : { - "abstract" : "Inflect short English Phrases", - "author" : [ - "Rafael Kitover <rkitover@cpan.org>", - "Rafael Kitover <rkitover@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.04, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Lingua-EN-Inflect-Phrase", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.36", - "Test::More" : "0.94" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.36" - } - }, - "runtime" : { - "requires" : { - "Exporter" : "5.63", - "Lingua::EN::Inflect" : "1.891", - "Lingua::EN::Inflect::Number" : "1.1", - "Lingua::EN::Tagger" : "0.15", - "Test::More" : "0.94" - } - } - }, - "provides" : { - "Lingua::EN::Inflect::Phrase" : { - "file" : "lib/Lingua/EN/Inflect/Phrase.pm", - "version" : "0.12" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://github.com/rkitover/lingua-en-inflect-phrase.git" - } - }, - "version" : "0.12" - }, - "name" : "Lingua::EN::Inflect::Phrase", - "pathname" : "R/RK/RKITOVER/Lingua-EN-Inflect-Phrase-0.12.tar.gz", - "provides" : { - "Lingua::EN::Inflect::Phrase" : { - "file" : "Lingua/EN/Inflect/Phrase.pm", - "version" : "0.12" - } - }, - "target" : "Lingua::EN::Inflect::Phrase", - "version" : "0.12" - }, - "Lingua::EN::Tagger" : { - "dist" : "Lingua-EN-Tagger-0.16", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "Maciej Ceglowski and Aaron Coburn <maciej@ceglowski.com>, <aaron@coburncuadrado.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Lingua-EN-Tagger", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "File::Spec" : "0.84", - "HTML::Parser" : "3.45", - "Lingua::Stem" : "0.81", - "Memoize" : "1.01", - "Memoize::ExpireLRU" : "0.55", - "Storable" : "2.10" - } - } - }, - "release_status" : "stable", - "version" : "0.16" - }, - "name" : "Lingua::EN::Tagger", - "pathname" : "A/AC/ACOBURN/Lingua-EN-Tagger-0.16.tar.gz", - "provides" : { - "Lingua::EN::Tagger" : { - "file" : "Lingua/EN/Tagger.pm", - "version" : "0.16" - } - }, - "target" : "Lingua::EN::Tagger", - "version" : "0.16" - }, - "Lingua::PT::Stemmer" : { - "dist" : "Lingua-PT-Stemmer-0.01", - "mymeta" : { - "abstract" : "Portuguese language stemming", - "author" : [ - "xern <xern@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Lingua-PT-Stemmer", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "0.01" - }, - "name" : "Lingua::PT::Stemmer", - "pathname" : "X/XE/XERN/Lingua-PT-Stemmer-0.01.tar.gz", - "provides" : { - "Lingua::GL::Stemmer" : { - "file" : "Lingua/GL/Stemmer.pm", - "version" : "0.01" - }, - "Lingua::PT::Stemmer" : { - "file" : "Lingua/PT/Stemmer.pm", - "version" : "0.01" - } - }, - "target" : "Lingua::PT::Stemmer", - "version" : "0.01" - }, - "Lingua::Stem" : { - "dist" : "Lingua-Stem-0.84", - "mymeta" : { - "abstract" : "Stemming of words in various languages", - "author" : [ - "Benjamin Franz <snowhare@nihongo.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Lingua-Stem", - "prereqs" : { - "runtime" : { - "requires" : { - "Carp" : 0, - "Lingua::GL::Stemmer" : 0, - "Lingua::PT::Stemmer" : 0, - "Lingua::Stem::Fr" : "0.02", - "Lingua::Stem::It" : 0, - "Lingua::Stem::Ru" : 0, - "Lingua::Stem::Snowball::Da" : "1.01", - "Lingua::Stem::Snowball::No" : "1.00", - "Lingua::Stem::Snowball::Se" : "1.01", - "Text::German" : 0 - } - } - }, - "provides" : { - "Lingua::Stem" : { - "file" : "lib/Lingua/Stem.pm", - "version" : "0.84" - }, - "Lingua::Stem::AutoLoader" : { - "file" : "lib/Lingua/Stem/AutoLoader.pm", - "version" : "1.02" - }, - "Lingua::Stem::Da" : { - "file" : "lib/Lingua/Stem/Da.pm", - "version" : "1.01" - }, - "Lingua::Stem::De" : { - "file" : "lib/Lingua/Stem/De.pm", - "version" : "1.01" - }, - "Lingua::Stem::En" : { - "file" : "lib/Lingua/Stem/En.pm", - "version" : "2.16" - }, - "Lingua::Stem::EnBroken" : { - "file" : "lib/Lingua/Stem/EnBroken.pm", - "version" : "2.13" - }, - "Lingua::Stem::Gl" : { - "file" : "lib/Lingua/Stem/Gl.pm", - "version" : "1.02" - }, - "Lingua::Stem::No" : { - "file" : "lib/Lingua/Stem/No.pm", - "version" : "1.01" - }, - "Lingua::Stem::Pt" : { - "file" : "lib/Lingua/Stem/Pt.pm", - "version" : "1.01" - }, - "Lingua::Stem::Sv" : { - "file" : "lib/Lingua/Stem/Sv.pm", - "version" : "1.01" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.84" - }, - "name" : "Lingua::Stem", - "pathname" : "S/SN/SNOWHARE/Lingua-Stem-0.84.tar.gz", - "provides" : { - "Lingua::Stem" : { - "file" : "Lingua/Stem.pm", - "version" : "0.84" - }, - "Lingua::Stem::AutoLoader" : { - "file" : "Lingua/Stem/AutoLoader.pm", - "version" : "1.02" - }, - "Lingua::Stem::Da" : { - "file" : "Lingua/Stem/Da.pm", - "version" : "1.01" - }, - "Lingua::Stem::De" : { - "file" : "Lingua/Stem/De.pm", - "version" : "1.01" - }, - "Lingua::Stem::En" : { - "file" : "Lingua/Stem/En.pm", - "version" : "2.16" - }, - "Lingua::Stem::EnBroken" : { - "file" : "Lingua/Stem/EnBroken.pm", - "version" : "2.13" - }, - "Lingua::Stem::Gl" : { - "file" : "Lingua/Stem/Gl.pm", - "version" : "1.02" - }, - "Lingua::Stem::No" : { - "file" : "Lingua/Stem/No.pm", - "version" : "1.01" - }, - "Lingua::Stem::Pt" : { - "file" : "Lingua/Stem/Pt.pm", - "version" : "1.01" - }, - "Lingua::Stem::Sv" : { - "file" : "Lingua/Stem/Sv.pm", - "version" : "1.01" - } - }, - "target" : "Lingua::Stem", - "version" : "0.84" - }, - "Lingua::Stem::Fr" : { - "dist" : "Lingua-Stem-Fr-0.02", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Lingua-Stem-Fr", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "0.02" - }, - "name" : "Lingua::Stem::Fr", - "pathname" : "S/SD/SDP/Lingua-Stem-Fr-0.02.tar.gz", - "provides" : { - "Lingua::Stem::Fr" : { - "file" : "Lingua/Stem/Fr.pm", - "version" : "0.02" - } - }, - "target" : "Lingua::Stem::Fr", - "version" : "0.02" - }, - "Lingua::Stem::It" : { - "dist" : "Lingua-Stem-It-0.02", - "mymeta" : { - "abstract" : "Porter's stemming algorithm for Italian", - "author" : [ - "Aldo Calpini <dada@perl.it>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Lingua-Stem-It", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "0.02" - }, - "name" : "Lingua::Stem::It", - "pathname" : "A/AC/ACALPINI/Lingua-Stem-It-0.02.tar.gz", - "provides" : { - "Lingua::Stem::It" : { - "file" : "Lingua/Stem/It.pm", - "version" : "0.02" - } - }, - "target" : "Lingua::Stem::It", - "version" : "0.02" - }, - "Lingua::Stem::Ru" : { - "dist" : "Lingua-Stem-Ru-0.01", - "mymeta" : { - "abstract" : "Porter's stemming algorithm for Russian", - "author" : [ - "Aleksandr Guidrevitch <pillgrim@mail.ru>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Lingua-Stem-Ru", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "0.01" - }, - "name" : "Lingua::Stem::Ru", - "pathname" : "A/AL/ALGDR/Lingua-Stem-Ru-0.01.tar.gz", - "provides" : { - "Lingua::Stem::Ru" : { - "file" : "Lingua/Stem/Ru.pm", - "version" : "0.01" - } - }, - "target" : "Lingua::Stem::Ru", - "version" : "0.01" - }, - "Lingua::Stem::Snowball::Da" : { - "dist" : "Lingua-Stem-Snowball-Da-1.01", - "mymeta" : { - "abstract" : "Porters stemming algorithm for Denmark", - "author" : [ - "Dennis Haney <davh@davh.dk>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Lingua-Stem-Snowball-Da", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "1.01" - }, - "name" : "Lingua::Stem::Snowball::Da", - "pathname" : "C/CI/CINE/Lingua-Stem-Snowball-Da-1.01.tar.gz", - "provides" : { - "Lingua::Stem::Snowball::Da" : { - "file" : "Lingua/Stem/Snowball/Da.pm", - "version" : "1.01" - } - }, - "target" : "Lingua::Stem::Snowball::Da", - "version" : "1.01" - }, - "Lingua::Stem::Snowball::No" : { - "dist" : "Snowball-Norwegian-1.2", - "mymeta" : { - "abstract" : "Porters stemming algorithm for norwegian.", - "author" : [ - "Ask Solem <ASKSH@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Snowball-Norwegian", - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : "0.42" - } - } - }, - "provides" : { - "Lingua::Stem::Snowball::No" : { - "file" : "lib/Lingua/Stem/Snowball/No.pm", - "version" : "1.2" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "1.2" - }, - "name" : "Lingua::Stem::Snowball::No", - "pathname" : "A/AS/ASKSH/Snowball-Norwegian-1.2.tar.gz", - "provides" : { - "Lingua::Stem::Snowball::No" : { - "file" : "Lingua/Stem/Snowball/No.pm", - "version" : "1.2" - } - }, - "target" : "Lingua::Stem::Snowball::No", - "version" : "1.2" - }, - "Lingua::Stem::Snowball::Se" : { - "dist" : "Snowball-Swedish-1.2", - "mymeta" : { - "abstract" : "Porters stemming algorithm for swedish.", - "author" : [ - "Ask Solem <ASKSH@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Snowball-Swedish", - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : "0.42" - } - } - }, - "provides" : { - "Lingua::Stem::Snowball::Se" : { - "file" : "lib/Lingua/Stem/Snowball/Se.pm", - "version" : "1.2" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "1.2" - }, - "name" : "Lingua::Stem::Snowball::Se", - "pathname" : "A/AS/ASKSH/Snowball-Swedish-1.2.tar.gz", - "provides" : { - "Lingua::Stem::Snowball::Se" : { - "file" : "Lingua/Stem/Snowball/Se.pm", - "version" : "1.2" - } - }, - "target" : "Lingua::Stem::Snowball::Se", - "version" : "1.2" - }, - "List::MoreUtils" : { - "dist" : "List-MoreUtils-0.33", - "mymeta" : { - "abstract" : "Provide the stuff missing in List::Util", - "author" : [ - "Tassilo von Parseval <tassilo.von.parseval@rwth-aachen.de>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "List-MoreUtils", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : "0.42" - } - }, - "configure" : { - "requires" : { - "ExtUtils::CBuilder" : "0.27", - "ExtUtils::MakeMaker" : "6.52" - } - }, - "runtime" : { - "requires" : { - "Test::More" : "0.82", - "perl" : "5.00503" - } - } - }, - "release_status" : "stable", - "version" : "0.33" - }, - "name" : "List::MoreUtils", - "pathname" : "A/AD/ADAMK/List-MoreUtils-0.33.tar.gz", - "provides" : { - "List::MoreUtils" : { - "file" : "List/MoreUtils.pm", - "version" : "0.33" - } - }, - "target" : "List::MoreUtils", - "version" : "0.33" - }, - "Log::Log4perl" : { - "dist" : "Log-Log4perl-1.34", - "mymeta" : { - "abstract" : "Log4j implementation for Perl", - "author" : [ - "Mike Schilli <m@perlmeister.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.55_02, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Log-Log4perl", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "File::Spec" : "0.82", - "Test::More" : "0.45" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/mschilli/log4perl" - }, - "x_MailingList" : "mailto:log4perl-devel@lists.sourceforge.net" - }, - "version" : "1.34" - }, - "name" : "Log::Log4perl", - "pathname" : "M/MS/MSCHILLI/Log-Log4perl-1.34.tar.gz", - "provides" : { - "Log::Log4perl" : { - "file" : "Log/Log4perl.pm", - "version" : "1.34" - }, - "Log::Log4perl::Appender" : { - "file" : "Log/Log4perl/Appender.pm" - }, - "Log::Log4perl::Appender::Buffer" : { - "file" : "Log/Log4perl/Appender/Buffer.pm", - "version" : "0" - }, - "Log::Log4perl::Appender::DBI" : { - "file" : "Log/Log4perl/Appender/DBI.pm" - }, - "Log::Log4perl::Appender::File" : { - "file" : "Log/Log4perl/Appender/File.pm" - }, - "Log::Log4perl::Appender::Limit" : { - "file" : "Log/Log4perl/Appender/Limit.pm", - "version" : "0" - }, - "Log::Log4perl::Appender::RRDs" : { - "file" : "Log/Log4perl/Appender/RRDs.pm" - }, - "Log::Log4perl::Appender::Screen" : { - "file" : "Log/Log4perl/Appender/Screen.pm" - }, - "Log::Log4perl::Appender::ScreenColoredLevels" : { - "file" : "Log/Log4perl/Appender/ScreenColoredLevels.pm" - }, - "Log::Log4perl::Appender::Socket" : { - "file" : "Log/Log4perl/Appender/Socket.pm" - }, - "Log::Log4perl::Appender::String" : { - "file" : "Log/Log4perl/Appender/String.pm" - }, - "Log::Log4perl::Appender::Synchronized" : { - "file" : "Log/Log4perl/Appender/Synchronized.pm", - "version" : "0" - }, - "Log::Log4perl::Appender::TestArrayBuffer" : { - "file" : "Log/Log4perl/Appender/TestArrayBuffer.pm" - }, - "Log::Log4perl::Appender::TestBuffer" : { - "file" : "Log/Log4perl/Appender/TestBuffer.pm" - }, - "Log::Log4perl::Appender::TestFileCreeper" : { - "file" : "Log/Log4perl/Appender/TestFileCreeper.pm" - }, - "Log::Log4perl::Catalyst" : { - "file" : "Log/Log4perl/Catalyst.pm", - "version" : "0" - }, - "Log::Log4perl::Config" : { - "file" : "Log/Log4perl/Config.pm" - }, - "Log::Log4perl::Config::BaseConfigurator" : { - "file" : "Log/Log4perl/Config/BaseConfigurator.pm" - }, - "Log::Log4perl::Config::DOMConfigurator" : { - "file" : "Log/Log4perl/Config/DOMConfigurator.pm", - "version" : "0.03" - }, - "Log::Log4perl::Config::PropertyConfigurator" : { - "file" : "Log/Log4perl/Config/PropertyConfigurator.pm" - }, - "Log::Log4perl::Config::Watch" : { - "file" : "Log/Log4perl/Config/Watch.pm" - }, - "Log::Log4perl::DateFormat" : { - "file" : "Log/Log4perl/DateFormat.pm" - }, - "Log::Log4perl::Filter" : { - "file" : "Log/Log4perl/Filter.pm" - }, - "Log::Log4perl::Filter::Boolean" : { - "file" : "Log/Log4perl/Filter/Boolean.pm" - }, - "Log::Log4perl::Filter::LevelMatch" : { - "file" : "Log/Log4perl/Filter/LevelMatch.pm" - }, - "Log::Log4perl::Filter::LevelRange" : { - "file" : "Log/Log4perl/Filter/LevelRange.pm" - }, - "Log::Log4perl::Filter::StringMatch" : { - "file" : "Log/Log4perl/Filter/StringMatch.pm" - }, - "Log::Log4perl::InternalDebug" : { - "file" : "Log/Log4perl/InternalDebug.pm" - }, - "Log::Log4perl::JavaMap" : { - "file" : "Log/Log4perl/JavaMap.pm" - }, - "Log::Log4perl::JavaMap::ConsoleAppender" : { - "file" : "Log/Log4perl/JavaMap/ConsoleAppender.pm" - }, - "Log::Log4perl::JavaMap::FileAppender" : { - "file" : "Log/Log4perl/JavaMap/FileAppender.pm" - }, - "Log::Log4perl::JavaMap::JDBCAppender" : { - "file" : "Log/Log4perl/JavaMap/JDBCAppender.pm" - }, - "Log::Log4perl::JavaMap::NTEventLogAppender" : { - "file" : "Log/Log4perl/JavaMap/NTEventLogAppender.pm" - }, - "Log::Log4perl::JavaMap::RollingFileAppender" : { - "file" : "Log/Log4perl/JavaMap/RollingFileAppender.pm" - }, - "Log::Log4perl::JavaMap::SyslogAppender" : { - "file" : "Log/Log4perl/JavaMap/SyslogAppender.pm" - }, - "Log::Log4perl::JavaMap::TestBuffer" : { - "file" : "Log/Log4perl/JavaMap/TestBuffer.pm" - }, - "Log::Log4perl::Layout" : { - "file" : "Log/Log4perl/Layout.pm" - }, - "Log::Log4perl::Layout::NoopLayout" : { - "file" : "Log/Log4perl/Layout/NoopLayout.pm" - }, - "Log::Log4perl::Layout::PatternLayout" : { - "file" : "Log/Log4perl/Layout/PatternLayout.pm" - }, - "Log::Log4perl::Layout::PatternLayout::Multiline" : { - "file" : "Log/Log4perl/Layout/PatternLayout/Multiline.pm" - }, - "Log::Log4perl::Layout::SimpleLayout" : { - "file" : "Log/Log4perl/Layout/SimpleLayout.pm" - }, - "Log::Log4perl::Level" : { - "file" : "Log/Log4perl/Level.pm" - }, - "Log::Log4perl::Logger" : { - "file" : "Log/Log4perl/Logger.pm" - }, - "Log::Log4perl::MDC" : { - "file" : "Log/Log4perl/MDC.pm" - }, - "Log::Log4perl::NDC" : { - "file" : "Log/Log4perl/NDC.pm" - }, - "Log::Log4perl::Resurrector" : { - "file" : "Log/Log4perl/Resurrector.pm" - }, - "Log::Log4perl::Util" : { - "file" : "Log/Log4perl/Util.pm" - }, - "Log::Log4perl::Util::Semaphore" : { - "file" : "Log/Log4perl/Util/Semaphore.pm" - }, - "Log::Log4perl::Util::TimeTracker" : { - "file" : "Log/Log4perl/Util/TimeTracker.pm" - } - }, - "target" : "Log::Log4perl", - "version" : "1.34" - }, - "MIME::Types" : { - "dist" : "MIME-Types-1.32", - "mymeta" : { - "abstract" : "Definition of MIME types", - "author" : [ - "Mark Overmeer" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "MIME-Types", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::More" : "0.47" - } - } - }, - "release_status" : "stable", - "version" : "1.32" - }, - "name" : "MIME::Types", - "pathname" : "M/MA/MARKOV/MIME-Types-1.32.tar.gz", - "provides" : { - "MIME::Type" : { - "file" : "MIME/Type.pm", - "version" : "1.32" - }, - "MIME::Types" : { - "file" : "MIME/Types.pm", - "version" : "1.32" - } - }, - "target" : "MIME::Types", - "version" : "1.32" - }, - "MRO::Compat" : { - "dist" : "MRO-Compat-0.11", - "mymeta" : { - "abstract" : "mro::* interface compatibility for Perls < 5.9.5", - "author" : [ - "Brandon L. Black, <blblack@gmail.com>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.91, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "MRO-Compat", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Test::More" : "0.47" - } - } - }, - "provides" : { - "MRO::Compat" : { - "file" : "lib/MRO/Compat.pm", - "version" : "0.11" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.11" - }, - "name" : "MRO::Compat", - "pathname" : "F/FL/FLORA/MRO-Compat-0.11.tar.gz", - "provides" : { - "MRO::Compat" : { - "file" : "MRO/Compat.pm", - "version" : "0.11" - } - }, - "target" : "MRO::Compat", - "version" : "0.11" - }, - "Mail" : { - "dist" : "MailTools-2.08", - "mymeta" : { - "abstract" : "Various e-mail related modules", - "author" : [ - "Mark Overmeer <perl@overmeer.net>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "MailTools", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Date::Format" : 0, - "Date::Parse" : 0, - "IO::Handle" : 0, - "Net::Domain" : "1.05", - "Net::SMTP" : "1.03", - "Test::More" : 0, - "Test::Pod" : "1" - } - } - }, - "release_status" : "stable", - "version" : "2.08" - }, - "name" : "Mail", - "pathname" : "M/MA/MARKOV/MailTools-2.08.tar.gz", - "provides" : { - "Mail" : {}, - "Mail::Address" : { - "file" : "Mail/Address.pm", - "version" : "2.08" - }, - "Mail::Cap" : { - "file" : "Mail/Cap.pm", - "version" : "2.08" - }, - "Mail::Field" : { - "file" : "Mail/Field.pm", - "version" : "2.08" - }, - "Mail::Field::AddrList" : { - "file" : "Mail/Field/AddrList.pm", - "version" : "2.08" - }, - "Mail::Field::Date" : { - "file" : "Mail/Field/Date.pm", - "version" : "2.08" - }, - "Mail::Field::Generic" : { - "file" : "Mail/Field/Generic.pm", - "version" : "2.08" - }, - "Mail::Filter" : { - "file" : "Mail/Filter.pm", - "version" : "2.08" - }, - "Mail::Header" : { - "file" : "Mail/Header.pm", - "version" : "2.08" - }, - "Mail::Internet" : { - "file" : "Mail/Internet.pm", - "version" : "2.08" - }, - "Mail::Mailer" : { - "file" : "Mail/Mailer.pm", - "version" : "2.08" - }, - "Mail::Mailer::qmail" : { - "file" : "Mail/Mailer/qmail.pm", - "version" : "2.08" - }, - "Mail::Mailer::rfc822" : { - "file" : "Mail/Mailer/rfc822.pm", - "version" : "2.08" - }, - "Mail::Mailer::sendmail" : { - "file" : "Mail/Mailer/sendmail.pm", - "version" : "2.08" - }, - "Mail::Mailer::smtp" : { - "file" : "Mail/Mailer/smtp.pm", - "version" : "2.08" - }, - "Mail::Mailer::smtp::pipe" : { - "file" : "Mail/Mailer/smtp.pm", - "version" : "2.08" - }, - "Mail::Mailer::smtps" : { - "file" : "Mail/Mailer/smtps.pm", - "version" : "2.08" - }, - "Mail::Mailer::smtps::pipe" : { - "file" : "Mail/Mailer/smtps.pm", - "version" : "2.08" - }, - "Mail::Mailer::testfile" : { - "file" : "Mail/Mailer/testfile.pm", - "version" : "2.08" - }, - "Mail::Mailer::testfile::pipe" : { - "file" : "Mail/Mailer/testfile.pm", - "version" : "2.08" - }, - "Mail::Send" : { - "file" : "Mail/Send.pm", - "version" : "2.08" - }, - "Mail::Util" : { - "file" : "Mail/Util.pm", - "version" : "2.08" - } - }, - "target" : "Mail::Address", - "version" : "2.08" - }, - "Math::Round" : { - "dist" : "Math-Round-0.06", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Math-Round", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "0.06" - }, - "name" : "Math::Round", - "pathname" : "G/GR/GROMMEL/Math-Round-0.06.tar.gz", - "provides" : { - "Math::Round" : { - "file" : "Math/Round.pm", - "version" : "0.06" - } - }, - "target" : "Math::Round", - "version" : "0.06" - }, - "Memoize::ExpireLRU" : { - "dist" : "Memoize-ExpireLRU-0.55", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Memoize-ExpireLRU", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Memoize" : "0.52" - } - } - }, - "release_status" : "stable", - "version" : "0.55" - }, - "name" : "Memoize::ExpireLRU", - "pathname" : "B/BP/BPOWERS/Memoize-ExpireLRU-0.55.tar.gz", - "provides" : { - "Memoize::ExpireLRU" : { - "file" : "Memoize/ExpireLRU.pm", - "version" : "0.55" - } - }, - "target" : "Memoize::ExpireLRU", - "version" : "0.55" - }, - "Module::Build" : { - "dist" : "Module-Build-0.4002", - "module" : "Module::Build", - "mymeta" : { - "abstract" : "Build and install Perl modules", - "author" : [ - "Ken Williams <kwilliams@cpan.org>", - "Module-Build mailing list at <module-build@perl.org>." - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Module-Build", - "prereqs" : { - "build" : { - "requires" : { - "CPAN::Meta::YAML" : "0.003", - "File::Temp" : "0.15", - "Parse::CPAN::Meta" : "1.4401", - "Test::Harness" : "3.16", - "Test::More" : "0.49" - } - }, - "runtime" : { - "recommends" : { - "ExtUtils::Install" : "0.3", - "ExtUtils::Manifest" : "1.54" - }, - "requires" : { - "CPAN::Meta" : "2.110420", - "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", - "Getopt::Long" : 0, - "IO::File" : 0, - "Module::Metadata" : "1.000002", - "Perl::OSType" : "1", - "Test::Harness" : 0, - "Text::Abbrev" : 0, - "Text::ParseWords" : 0, - "perl" : "5.006001", - "version" : "0.87" - } - } - }, - "provides" : { - "Module::Build" : { - "file" : "lib/Module/Build.pm", - "version" : "0.4002" - }, - "Module::Build::Base" : { - "file" : "lib/Module/Build/Base.pm", - "version" : "0.4002" - }, - "Module::Build::Compat" : { - "file" : "lib/Module/Build/Compat.pm", - "version" : "0.4002" - }, - "Module::Build::Config" : { - "file" : "lib/Module/Build/Config.pm", - "version" : "0.4002" - }, - "Module::Build::Cookbook" : { - "file" : "lib/Module/Build/Cookbook.pm", - "version" : "0.4002" - }, - "Module::Build::Dumper" : { - "file" : "lib/Module/Build/Dumper.pm", - "version" : "0.4002" - }, - "Module::Build::ModuleInfo" : { - "file" : "lib/Module/Build/ModuleInfo.pm", - "version" : "0.4002" - }, - "Module::Build::Notes" : { - "file" : "lib/Module/Build/Notes.pm", - "version" : "0.4002" - }, - "Module::Build::PPMMaker" : { - "file" : "lib/Module/Build/PPMMaker.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::Amiga" : { - "file" : "lib/Module/Build/Platform/Amiga.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::Default" : { - "file" : "lib/Module/Build/Platform/Default.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::EBCDIC" : { - "file" : "lib/Module/Build/Platform/EBCDIC.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::MPEiX" : { - "file" : "lib/Module/Build/Platform/MPEiX.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::MacOS" : { - "file" : "lib/Module/Build/Platform/MacOS.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::RiscOS" : { - "file" : "lib/Module/Build/Platform/RiscOS.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::Unix" : { - "file" : "lib/Module/Build/Platform/Unix.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::VMS" : { - "file" : "lib/Module/Build/Platform/VMS.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::VOS" : { - "file" : "lib/Module/Build/Platform/VOS.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::Windows" : { - "file" : "lib/Module/Build/Platform/Windows.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::aix" : { - "file" : "lib/Module/Build/Platform/aix.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::cygwin" : { - "file" : "lib/Module/Build/Platform/cygwin.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::darwin" : { - "file" : "lib/Module/Build/Platform/darwin.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::os2" : { - "file" : "lib/Module/Build/Platform/os2.pm", - "version" : "0.4002" - }, - "Module::Build::PodParser" : { - "file" : "lib/Module/Build/PodParser.pm", - "version" : "0.4002" - }, - "Module::Build::Version" : { - "file" : "lib/Module/Build/Version.pm", - "version" : "0.87" - }, - "Module::Build::YAML" : { - "file" : "lib/Module/Build/YAML.pm", - "version" : "1.41" - }, - "inc::latest" : { - "file" : "lib/inc/latest.pm", - "version" : "0.4002" - }, - "inc::latest::private" : { - "file" : "lib/inc/latest/private.pm", - "version" : "0.4002" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "https://github.com/Perl-Toolchain-Gang/Module-Build" - }, - "x_MailingList" : "mailto:module-build@perl.org" - }, - "version" : "0.4002" - }, - "name" : "Module::Build", - "pathname" : "L/LE/LEONT/Module-Build-0.4002.tar.gz", - "provides" : { - "Module::Build" : { - "file" : "Module/Build.pm", - "version" : "0.4002" - }, - "Module::Build::Base" : { - "file" : "Module/Build/Base.pm", - "version" : "0.4002" - }, - "Module::Build::Compat" : { - "file" : "Module/Build/Compat.pm", - "version" : "0.4002" - }, - "Module::Build::Config" : { - "file" : "Module/Build/Config.pm", - "version" : "0.4002" - }, - "Module::Build::ConfigData" : { - "file" : "Module/Build/ConfigData.pm" - }, - "Module::Build::Cookbook" : { - "file" : "Module/Build/Cookbook.pm", - "version" : "0.4002" - }, - "Module::Build::Dumper" : { - "file" : "Module/Build/Dumper.pm", - "version" : "0.4002" - }, - "Module::Build::ModuleInfo" : { - "file" : "Module/Build/ModuleInfo.pm", - "version" : "0.4002" - }, - "Module::Build::Notes" : { - "file" : "Module/Build/Notes.pm", - "version" : "0.4002" - }, - "Module::Build::PPMMaker" : { - "file" : "Module/Build/PPMMaker.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::Amiga" : { - "file" : "Module/Build/Platform/Amiga.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::Default" : { - "file" : "Module/Build/Platform/Default.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::EBCDIC" : { - "file" : "Module/Build/Platform/EBCDIC.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::MPEiX" : { - "file" : "Module/Build/Platform/MPEiX.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::MacOS" : { - "file" : "Module/Build/Platform/MacOS.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::RiscOS" : { - "file" : "Module/Build/Platform/RiscOS.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::Unix" : { - "file" : "Module/Build/Platform/Unix.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::VMS" : { - "file" : "Module/Build/Platform/VMS.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::VOS" : { - "file" : "Module/Build/Platform/VOS.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::Windows" : { - "file" : "Module/Build/Platform/Windows.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::aix" : { - "file" : "Module/Build/Platform/aix.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::cygwin" : { - "file" : "Module/Build/Platform/cygwin.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::darwin" : { - "file" : "Module/Build/Platform/darwin.pm", - "version" : "0.4002" - }, - "Module::Build::Platform::os2" : { - "file" : "Module/Build/Platform/os2.pm", - "version" : "0.4002" - }, - "Module::Build::PodParser" : { - "file" : "Module/Build/PodParser.pm", - "version" : "0.4002" - }, - "Module::Build::Version" : { - "file" : "Module/Build/Version.pm", - "version" : "0.87" - }, - "Module::Build::YAML" : { - "file" : "Module/Build/YAML.pm", - "version" : "1.41" - }, - "inc::latest" : { - "file" : "inc/latest.pm", - "version" : "0.4002" - }, - "inc::latest::private" : { - "file" : "inc/latest/private.pm", - "version" : "0.4002" - } - }, - "version" : "0.4002" - }, - "Module::Extract::Namespaces" : { - "dist" : "Module-Extract-Namespaces-0.14", - "mymeta" : { - "abstract" : "This is what the module does", - "author" : [ - "brian d foy <bdfoy@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.44, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Module-Extract-Namespaces", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "PPI" : 0, - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.14" - }, - "name" : "Module::Extract::Namespaces", - "pathname" : "/authors/id/B/BD/BDFOY/Module-Extract-Namespaces-0.14.tar.gz", - "provides" : { - "Module::Extract::Namespaces" : { - "file" : "Module/Extract/Namespaces.pm", - "version" : "0.14" - } - }, - "target" : "Module::Extract::Namespaces", - "version" : "0.14" - }, - "Module::Extract::Use" : { - "dist" : "Module-Extract-Use-0.17", - "mymeta" : { - "abstract" : "Extract the modules that a modules uses", - "author" : [ - "brian d foy <bdfoy@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.48, CPAN::Meta::Converter version 2.112150", - "keywords" : [ - "ppi", - "parsing", - "static-analysis", - "modules" - ], - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Module-Extract-Use", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "PPI" : 0, - "Test::More" : 0, - "Test::Output" : 0, - "perl" : "5.006" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "type" : "git", - "url" : "git://github.com/briandfoy/module--extract--use.git" - } - }, - "version" : "0.17" - }, - "name" : "Module::Extract::Use", - "pathname" : "/authors/id/B/BD/BDFOY/Module-Extract-Use-0.17.tar.gz", - "provides" : { - "Module::Extract::Use" : { - "file" : "Module/Extract/Use.pm", - "version" : "0.17" - } - }, - "target" : "Module::Extract::Use", - "version" : "0.17" - }, - "Module::Extract::VERSION" : { - "dist" : "Module-Extract-VERSION-0.13", - "mymeta" : { - "abstract" : "Extract ERSION from module source code", - "author" : [ - "brian d foy <bdfoy@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.48, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Module-Extract-VERSION", - "no_index" : { - "directory" : [ - "t", - "inc", - "t", - "inc", - "corpus" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.13" - }, - "name" : "Module::Extract::VERSION", - "pathname" : "/authors/id/B/BD/BDFOY/Module-Extract-VERSION-0.13.tar.gz", - "provides" : { - "Module::Extract::VERSION" : { - "file" : "Module/Extract/VERSION.pm", - "version" : "0.13" - } - }, - "target" : "Module::Extract::VERSION", - "version" : "0.13" - }, - "Module::Find" : { - "dist" : "Module-Find-0.10", - "mymeta" : { - "abstract" : "Find and use installed modules in a (sub)category", - "author" : [ - "Christian Renz <crenz@web42.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.52, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Module-Find", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "recommends" : { - "Test::Pod" : "1.14", - "Test::Pod::Coverage" : "1.04" - }, - "requires" : { - "File::Find" : 0, - "File::Spec" : 0, - "perl" : "5.006001" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/crenz/Module-Find" - } - }, - "version" : "0.10" - }, - "name" : "Module::Find", - "pathname" : "/authors/id/C/CR/CRENZ/Module-Find-0.10.tar.gz", - "provides" : { - "Module::Find" : { - "file" : "Module/Find.pm", - "version" : "0.10" - } - }, - "target" : "Module::Find", - "version" : "0.10" - }, - "Module::Install" : { - "dist" : "Module-Install-1.06", - "module" : "Module::Install", - "mymeta" : { - "abstract" : "Standalone, extensible Perl module installer", - "author" : [ - "Adam Kennedy <adamk@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.06, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Module-Install", - "no_index" : { - "directory" : [ - "inc", - "t", - "xt" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.36", - "Test::Harness" : "3.13", - "Test::More" : "0.86", - "YAML::Tiny" : "1.33" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.36", - "YAML::Tiny" : "1.33" - } - }, - "runtime" : { - "requires" : { - "Archive::Tar" : "1.44", - "Devel::PPPort" : "3.16", - "ExtUtils::Install" : "1.52", - "ExtUtils::MakeMaker" : "6.59", - "ExtUtils::ParseXS" : "2.19", - "File::Remove" : "1.42", - "File::Spec" : "3.28", - "JSON" : "2.14", - "LWP::UserAgent" : "5.812", - "Module::Build" : "0.29", - "Module::CoreList" : "2.17", - "Module::ScanDeps" : "0.89", - "PAR::Dist" : "0.29", - "Parse::CPAN::Meta" : "1.39", - "YAML::Tiny" : "1.38", - "perl" : "5.005" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://svn.ali.as/cpan/trunk/Module-Install" - }, - "x_ChangeLog" : "http://fisheye2.atlassian.com/changelog/cpan/trunk/Module-Install" - }, - "version" : "1.06" - }, - "name" : "Module::Install", - "pathname" : "A/AD/ADAMK/Module-Install-1.06.tar.gz", - "provides" : { - "Module::AutoInstall" : { - "file" : "Module/AutoInstall.pm", - "version" : "1.06" - }, - "Module::Install" : { - "file" : "Module/Install.pm", - "version" : "1.06" - }, - "Module::Install::Admin" : { - "file" : "Module/Install/Admin.pm", - "version" : "1.06" - }, - "Module::Install::Admin::Bundle" : { - "file" : "Module/Install/Admin/Bundle.pm", - "version" : "1.06" - }, - "Module::Install::Admin::Compiler" : { - "file" : "Module/Install/Admin/Compiler.pm", - "version" : "1.06" - }, - "Module::Install::Admin::Find" : { - "file" : "Module/Install/Admin/Find.pm", - "version" : "1.06" - }, - "Module::Install::Admin::Include" : { - "file" : "Module/Install/Admin/Include.pm", - "version" : "1.06" - }, - "Module::Install::Admin::Makefile" : { - "file" : "Module/Install/Admin/Makefile.pm", - "version" : "1.06" - }, - "Module::Install::Admin::Manifest" : { - "file" : "Module/Install/Admin/Manifest.pm", - "version" : "1.06" - }, - "Module::Install::Admin::Metadata" : { - "file" : "Module/Install/Admin/Metadata.pm", - "version" : "1.06" - }, - "Module::Install::Admin::ScanDeps" : { - "file" : "Module/Install/Admin/ScanDeps.pm", - "version" : "1.06" - }, - "Module::Install::Admin::WriteAll" : { - "file" : "Module/Install/Admin/WriteAll.pm", - "version" : "1.06" - }, - "Module::Install::AutoInstall" : { - "file" : "Module/Install/AutoInstall.pm", - "version" : "1.06" - }, - "Module::Install::Base" : { - "file" : "Module/Install/Base.pm", - "version" : "1.06" - }, - "Module::Install::Base::FakeAdmin" : { - "file" : "Module/Install/Base.pm", - "version" : "0" - }, - "Module::Install::Bundle" : { - "file" : "Module/Install/Bundle.pm", - "version" : "1.06" - }, - "Module::Install::Can" : { - "file" : "Module/Install/Can.pm", - "version" : "1.06" - }, - "Module::Install::Compiler" : { - "file" : "Module/Install/Compiler.pm", - "version" : "1.06" - }, - "Module::Install::DSL" : { - "file" : "Module/Install/DSL.pm", - "version" : "1.06" - }, - "Module::Install::Deprecated" : { - "file" : "Module/Install/Deprecated.pm", - "version" : "1.06" - }, - "Module::Install::External" : { - "file" : "Module/Install/External.pm", - "version" : "1.06" - }, - "Module::Install::Fetch" : { - "file" : "Module/Install/Fetch.pm", - "version" : "1.06" - }, - "Module::Install::Include" : { - "file" : "Module/Install/Include.pm", - "version" : "1.06" - }, - "Module::Install::Inline" : { - "file" : "Module/Install/Inline.pm", - "version" : "1.06" - }, - "Module::Install::MakeMaker" : { - "file" : "Module/Install/MakeMaker.pm", - "version" : "1.06" - }, - "Module::Install::Makefile" : { - "file" : "Module/Install/Makefile.pm", - "version" : "1.06" - }, - "Module::Install::Metadata" : { - "file" : "Module/Install/Metadata.pm", - "version" : "1.06" - }, - "Module::Install::PAR" : { - "file" : "Module/Install/PAR.pm", - "version" : "1.06" - }, - "Module::Install::Run" : { - "file" : "Module/Install/Run.pm", - "version" : "1.06" - }, - "Module::Install::Scripts" : { - "file" : "Module/Install/Scripts.pm", - "version" : "1.06" - }, - "Module::Install::Share" : { - "file" : "Module/Install/Share.pm", - "version" : "1.06" - }, - "Module::Install::Win32" : { - "file" : "Module/Install/Win32.pm", - "version" : "1.06" - }, - "Module::Install::With" : { - "file" : "Module/Install/With.pm", - "version" : "1.06" - }, - "Module::Install::WriteAll" : { - "file" : "Module/Install/WriteAll.pm", - "version" : "1.06" - }, - "inc::Module::Install" : { - "file" : "inc/Module/Install.pm", - "version" : "1.06" - }, - "inc::Module::Install::DSL" : { - "file" : "inc/Module/Install/DSL.pm", - "version" : "1.06" - } - }, - "version" : "1.06" - }, - "Module::Metadata" : { - "dist" : "Module-Metadata-1.000010", - "module" : "Module::Metadata", - "mymeta" : { - "abstract" : "Gather package and POD information from perl module files", - "author" : [ - "Ken Williams <kwilliams@cpan.org>, Randy W. Sims <RandyS@ThePierianSpring.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter version 2.120921, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Module-Metadata", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "File::Find" : 0, - "File::Spec" : 0, - "IO::File" : 0, - "strict" : 0, - "vars" : 0, - "version" : "0.87", - "warnings" : 0 - } - } - }, - "release_status" : "stable", - "version" : "1.000010" - }, - "name" : "Module::Metadata", - "pathname" : "V/VP/VPIT/Module-Metadata-1.000010.tar.gz", - "provides" : { - "Module::Metadata" : { - "file" : "Module/Metadata.pm", - "version" : "1.000010" - } - }, - "version" : "1.000010" - }, - "Module::Runtime" : { - "dist" : "Module-Runtime-0.011", - "mymeta" : { - "abstract" : "runtime module handling", - "author" : [ - "Andrew Main (Zefram) <zefram@fysh.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Module-Runtime", - "prereqs" : { - "build" : { - "requires" : { - "Module::Build" : 0, - "Test::More" : 0, - "perl" : "5.006", - "strict" : 0, - "warnings" : 0 - } - }, - "configure" : { - "requires" : { - "Module::Build" : 0, - "perl" : "5.006", - "strict" : 0, - "warnings" : 0 - } - }, - "runtime" : { - "requires" : { - "Exporter" : 0, - "Params::Classify" : 0, - "parent" : 0, - "perl" : "5.006", - "strict" : 0, - "warnings" : 0 - } - } - }, - "provides" : { - "Module::Runtime" : { - "file" : "lib/Module/Runtime.pm", - "version" : "0.011" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.011" - }, - "name" : "Module::Runtime", - "pathname" : "Z/ZE/ZEFRAM/Module-Runtime-0.011.tar.gz", - "provides" : { - "Module::Runtime" : { - "file" : "Module/Runtime.pm", - "version" : "0.011" - } - }, - "target" : "Module::Runtime", - "version" : "0.011" - }, - "Module::ScanDeps" : { - "dist" : "Module-ScanDeps-1.08", - "module" : "Module::ScanDeps", - "mymeta" : { - "abstract" : "Recursively scan Perl code for dependencies", - "author" : [ - "Audrey Tang <cpan@audreyt.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.04, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Module-ScanDeps", - "no_index" : { - "directory" : [ - "inc", - "t" - ], - "x_module" : [ - "Module::ScanDeps::Cache", - "Module::ScanDeps::DataFeed" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.62", - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.57" - } - }, - "runtime" : { - "requires" : { - "File::Spec" : 0, - "File::Temp" : 0, - "Module::Build::ModuleInfo" : 0, - "perl" : "5.008001", - "version" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://svn.openfoundry.org/par/Module-ScanDeps/trunk/" - } - }, - "version" : "1.08" - }, - "name" : "Module::ScanDeps", - "pathname" : "R/RS/RSCHUPP/Module-ScanDeps-1.08.tar.gz", - "provides" : { - "Module::ScanDeps" : { - "file" : "Module/ScanDeps.pm", - "version" : "1.08" - }, - "Module::ScanDeps::Cache" : { - "file" : "Module/ScanDeps/Cache.pm" - }, - "Module::ScanDeps::DataFeed" : { - "file" : "Module/ScanDeps/DataFeed.pm" - } - }, - "version" : "1.08" - }, - "Module::Signature" : { - "dist" : "Module-Signature-0.68", - "module" : "Module::Signature", - "mymeta" : { - "abstract" : "Module signature file manipulation", - "author" : [ - "唐鳳 <cpan@audreyt.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.00, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Module-Signature", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "IPC::Run" : 0, - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "IO::Socket::INET" : 0, - "perl" : "5.005" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/audreyt/module-signature" - } - }, - "version" : "0.68" - }, - "name" : "Module::Signature", - "pathname" : "F/FL/FLORA/Module-Signature-0.68.tar.gz", - "provides" : { - "Module::Signature" : { - "file" : "Module/Signature.pm", - "version" : "0.68" - } - }, - "version" : "0.68" - }, - "Moose" : { - "dist" : "Moose-2.0401", - "mymeta" : { - "abstract" : "A postmodern object system for Perl 5", - "author" : [ - "Moose is maintained by the Moose Cabal, along with the help of many contributors. See L<Moose/CABAL> and L<Moose/CONTRIBUTORS> for details." - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.300002, CPAN::Meta::Converter version 2.110440, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Moose", - "no_index" : { - "directory" : [ - "benchmarks" - ], - "namespace" : [ - "Class::MOP::Mixin", - "Moose::Meta::Method::Accessor::Native", - "Moose::Meta::Mixin" - ], - "package" : [ - "Class::MOP::Class::Immutable::Trait", - "Class::MOP::Deprecated", - "Class::MOP::MiniTrait", - "Class::MOP::Mixin", - "Moose::Deprecated", - "Moose::Error::Util", - "Moose::Meta::Attribute::Native::Trait", - "Moose::Meta::Class::Immutable::Trait", - "Moose::Meta::Method::Accessor::Native", - "Moose::Meta::Object::Trait", - "Moose::Util::TypeConstraints::OptimizedConstraints", - "Moose::Util::TypeConstraints::Builtins" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Test::Fatal" : "0.001", - "Test::More" : "0.88", - "Test::Requires" : "0.05" - } - }, - "configure" : { - "requires" : { - "Dist::CheckConflicts" : "0.02", - "ExtUtils::MakeMaker" : "6.30" - } - }, - "runtime" : { - "recommends" : { - "Devel::PartialDump" : "0.14" - }, - "requires" : { - "Class::Load" : "0.09", - "Class::Load::XS" : "0.01", - "Data::OptList" : "0.107", - "Devel::GlobalDestruction" : 0, - "Dist::CheckConflicts" : "0.02", - "Eval::Closure" : "0.04", - "List::MoreUtils" : "0.28", - "MRO::Compat" : "0.05", - "Package::DeprecationManager" : "0.11", - "Package::Stash" : "0.32", - "Package::Stash::XS" : "0.24", - "Params::Util" : "1.00", - "Scalar::Util" : "1.19", - "Sub::Exporter" : "0.980", - "Sub::Name" : "0.05", - "Task::Weaken" : 0, - "Try::Tiny" : "0.02" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=Moose" - }, - "repository" : { - "type" : "git", - "url" : "git://git.moose.perl.org/Moose.git" - } - }, - "version" : "2.0401", - "x_authority" : "cpan:STEVAN", - "x_conflicts" : { - "Catalyst" : "5.80028", - "Devel::REPL" : "1.003008", - "Fey" : "0.36", - "Fey::ORM" : "0.42", - "File::ChangeNotify" : "0.15", - "KiokuDB" : "0.51", - "Markdent" : "0.16", - "MooseX::Aliases" : "0.08", - "MooseX::AlwaysCoerce" : "0.13", - "MooseX::Attribute::Deflator" : "2.1.7", - "MooseX::Attribute::Dependent" : "1.1.0", - "MooseX::Attribute::Prototype" : "0.10", - "MooseX::AttributeHelpers" : "0.22", - "MooseX::AttributeIndexes" : "1.0.0", - "MooseX::AttributeInflate" : "0.02", - "MooseX::CascadeClearing" : "0.03", - "MooseX::ClassAttribute" : "0.25", - "MooseX::Constructor::AllErrors" : "0.012", - "MooseX::FollowPBP" : "0.02", - "MooseX::HasDefaults" : "0.02", - "MooseX::InstanceTracking" : "0.04", - "MooseX::LazyRequire" : "0.06", - "MooseX::Meta::Attribute::Index" : "0.04", - "MooseX::Meta::Attribute::Lvalue" : "0.05", - "MooseX::MethodAttributes" : "0.22", - "MooseX::NonMoose" : "0.17", - "MooseX::POE" : "0.211", - "MooseX::Params::Validate" : "0.05", - "MooseX::PrivateSetters" : "0.03", - "MooseX::Role::Cmd" : "0.06", - "MooseX::Role::Parameterized" : "0.23", - "MooseX::Role::WithOverloading" : "0.07", - "MooseX::SemiAffordanceAccessor" : "0.05", - "MooseX::SetOnce" : "0.100473", - "MooseX::Singleton" : "0.25", - "MooseX::SlurpyConstructor" : "1.1", - "MooseX::StrictConstructor" : "0.12", - "MooseX::Types" : "0.19", - "MooseX::Types::Parameterizable" : "0.05", - "MooseX::Types::Signal" : "1.101930", - "MooseX::UndefTolerant" : "0.11", - "PRANG" : "0.14", - "Pod::Elemental" : "0.093280", - "Reaction" : "0.002003", - "Test::Able" : "0.10", - "namespace::autoclean" : "0.08" - } - }, - "name" : "Moose", - "pathname" : "D/DO/DOY/Moose-2.0401.tar.gz", - "provides" : { - "Class::MOP" : { - "file" : "Class/MOP.pm", - "version" : "2.0401" - }, - "Class::MOP::Attribute" : { - "file" : "Class/MOP/Attribute.pm", - "version" : "2.0401" - }, - "Class::MOP::Class" : { - "file" : "Class/MOP/Class.pm", - "version" : "2.0401" - }, - "Class::MOP::Class::Immutable::Trait" : { - "file" : "Class/MOP/Class/Immutable/Trait.pm", - "version" : "2.0401" - }, - "Class::MOP::Deprecated" : { - "file" : "Class/MOP/Deprecated.pm", - "version" : "2.0401" - }, - "Class::MOP::Instance" : { - "file" : "Class/MOP/Instance.pm", - "version" : "2.0401" - }, - "Class::MOP::Method" : { - "file" : "Class/MOP/Method.pm", - "version" : "2.0401" - }, - "Class::MOP::Method::Accessor" : { - "file" : "Class/MOP/Method/Accessor.pm", - "version" : "2.0401" - }, - "Class::MOP::Method::Constructor" : { - "file" : "Class/MOP/Method/Constructor.pm", - "version" : "2.0401" - }, - "Class::MOP::Method::Generated" : { - "file" : "Class/MOP/Method/Generated.pm", - "version" : "2.0401" - }, - "Class::MOP::Method::Inlined" : { - "file" : "Class/MOP/Method/Inlined.pm", - "version" : "2.0401" - }, - "Class::MOP::Method::Meta" : { - "file" : "Class/MOP/Method/Meta.pm", - "version" : "2.0401" - }, - "Class::MOP::Method::Wrapped" : { - "file" : "Class/MOP/Method/Wrapped.pm", - "version" : "2.0401" - }, - "Class::MOP::MiniTrait" : { - "file" : "Class/MOP/MiniTrait.pm", - "version" : "2.0401" - }, - "Class::MOP::Mixin" : { - "file" : "Class/MOP/Mixin.pm", - "version" : "2.0401" - }, - "Class::MOP::Mixin::AttributeCore" : { - "file" : "Class/MOP/Mixin/AttributeCore.pm", - "version" : "2.0401" - }, - "Class::MOP::Mixin::HasAttributes" : { - "file" : "Class/MOP/Mixin/HasAttributes.pm", - "version" : "2.0401" - }, - "Class::MOP::Mixin::HasMethods" : { - "file" : "Class/MOP/Mixin/HasMethods.pm", - "version" : "2.0401" - }, - "Class::MOP::Module" : { - "file" : "Class/MOP/Module.pm", - "version" : "2.0401" - }, - "Class::MOP::Object" : { - "file" : "Class/MOP/Object.pm", - "version" : "2.0401" - }, - "Class::MOP::Package" : { - "file" : "Class/MOP/Package.pm", - "version" : "2.0401" - }, - "Moose" : { - "file" : "Moose.pm", - "version" : "2.0401" - }, - "Moose::Deprecated" : { - "file" : "Moose/Deprecated.pm", - "version" : "2.0401" - }, - "Moose::Error::Confess" : { - "file" : "Moose/Error/Confess.pm", - "version" : "2.0401" - }, - "Moose::Error::Croak" : { - "file" : "Moose/Error/Croak.pm", - "version" : "2.0401" - }, - "Moose::Error::Default" : { - "file" : "Moose/Error/Default.pm", - "version" : "2.0401" - }, - "Moose::Exporter" : { - "file" : "Moose/Exporter.pm", - "version" : "2.0401" - }, - "Moose::Meta::Attribute" : { - "file" : "Moose/Meta/Attribute.pm", - "version" : "2.0401" - }, - "Moose::Meta::Attribute::Custom::Moose" : { - "file" : "Moose/Meta/Attribute.pm", - "version" : "2.0401" - }, - "Moose::Meta::Attribute::Native" : { - "file" : "Moose/Meta/Attribute/Native.pm", - "version" : "2.0401" - }, - "Moose::Meta::Attribute::Native::Trait" : { - "file" : "Moose/Meta/Attribute/Native/Trait.pm", - "version" : "2.0401" - }, - "Moose::Meta::Attribute::Native::Trait::Array" : { - "file" : "Moose/Meta/Attribute/Native/Trait/Array.pm", - "version" : "2.0401" - }, - "Moose::Meta::Attribute::Native::Trait::Bool" : { - "file" : "Moose/Meta/Attribute/Native/Trait/Bool.pm", - "version" : "2.0401" - }, - "Moose::Meta::Attribute::Native::Trait::Code" : { - "file" : "Moose/Meta/Attribute/Native/Trait/Code.pm", - "version" : "2.0401" - }, - "Moose::Meta::Attribute::Native::Trait::Counter" : { - "file" : "Moose/Meta/Attribute/Native/Trait/Counter.pm", - "version" : "2.0401" - }, - "Moose::Meta::Attribute::Native::Trait::Hash" : { - "file" : "Moose/Meta/Attribute/Native/Trait/Hash.pm", - "version" : "2.0401" - }, - "Moose::Meta::Attribute::Native::Trait::Number" : { - "file" : "Moose/Meta/Attribute/Native/Trait/Number.pm", - "version" : "2.0401" - }, - "Moose::Meta::Attribute::Native::Trait::String" : { - "file" : "Moose/Meta/Attribute/Native/Trait/String.pm", - "version" : "2.0401" - }, - "Moose::Meta::Class" : { - "file" : "Moose/Meta/Class.pm", - "version" : "2.0401" - }, - "Moose::Meta::Class::Immutable::Trait" : { - "file" : "Moose/Meta/Class/Immutable/Trait.pm", - "version" : "2.0401" - }, - "Moose::Meta::Instance" : { - "file" : "Moose/Meta/Instance.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method" : { - "file" : "Moose/Meta/Method.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor" : { - "file" : "Moose/Meta/Method/Accessor.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native" : { - "file" : "Moose/Meta/Method/Accessor/Native.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::Writer" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/Writer.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::accessor" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/accessor.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::clear" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/clear.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::count" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/count.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::delete" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/delete.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::elements" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/elements.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::first" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/first.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::first_index" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/first_index.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::get" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/get.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::grep" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/grep.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::insert" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/insert.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::is_empty" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/is_empty.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::join" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/join.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::map" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/map.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::natatime" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/natatime.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::pop" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/pop.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::push" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/push.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::reduce" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/reduce.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::set" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/set.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::shallow_clone" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/shallow_clone.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::shift" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/shift.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::shuffle" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/shuffle.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::sort" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/sort.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::sort_in_place" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/sort_in_place.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::splice" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/splice.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::uniq" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/uniq.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Array::unshift" : { - "file" : "Moose/Meta/Method/Accessor/Native/Array/unshift.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Bool::not" : { - "file" : "Moose/Meta/Method/Accessor/Native/Bool/not.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Bool::set" : { - "file" : "Moose/Meta/Method/Accessor/Native/Bool/set.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Bool::toggle" : { - "file" : "Moose/Meta/Method/Accessor/Native/Bool/toggle.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Bool::unset" : { - "file" : "Moose/Meta/Method/Accessor/Native/Bool/unset.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Code::execute" : { - "file" : "Moose/Meta/Method/Accessor/Native/Code/execute.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Code::execute_method" : { - "file" : "Moose/Meta/Method/Accessor/Native/Code/execute_method.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Collection" : { - "file" : "Moose/Meta/Method/Accessor/Native/Collection.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Counter::Writer" : { - "file" : "Moose/Meta/Method/Accessor/Native/Counter/Writer.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Counter::dec" : { - "file" : "Moose/Meta/Method/Accessor/Native/Counter/dec.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Counter::inc" : { - "file" : "Moose/Meta/Method/Accessor/Native/Counter/inc.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Counter::reset" : { - "file" : "Moose/Meta/Method/Accessor/Native/Counter/reset.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Counter::set" : { - "file" : "Moose/Meta/Method/Accessor/Native/Counter/set.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Hash" : { - "file" : "Moose/Meta/Method/Accessor/Native/Hash.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Hash::Writer" : { - "file" : "Moose/Meta/Method/Accessor/Native/Hash/Writer.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Hash::accessor" : { - "file" : "Moose/Meta/Method/Accessor/Native/Hash/accessor.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Hash::clear" : { - "file" : "Moose/Meta/Method/Accessor/Native/Hash/clear.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Hash::count" : { - "file" : "Moose/Meta/Method/Accessor/Native/Hash/count.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Hash::defined" : { - "file" : "Moose/Meta/Method/Accessor/Native/Hash/defined.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Hash::delete" : { - "file" : "Moose/Meta/Method/Accessor/Native/Hash/delete.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Hash::elements" : { - "file" : "Moose/Meta/Method/Accessor/Native/Hash/elements.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Hash::exists" : { - "file" : "Moose/Meta/Method/Accessor/Native/Hash/exists.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Hash::get" : { - "file" : "Moose/Meta/Method/Accessor/Native/Hash/get.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Hash::is_empty" : { - "file" : "Moose/Meta/Method/Accessor/Native/Hash/is_empty.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Hash::keys" : { - "file" : "Moose/Meta/Method/Accessor/Native/Hash/keys.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Hash::kv" : { - "file" : "Moose/Meta/Method/Accessor/Native/Hash/kv.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Hash::set" : { - "file" : "Moose/Meta/Method/Accessor/Native/Hash/set.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Hash::shallow_clone" : { - "file" : "Moose/Meta/Method/Accessor/Native/Hash/shallow_clone.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Hash::values" : { - "file" : "Moose/Meta/Method/Accessor/Native/Hash/values.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Number::abs" : { - "file" : "Moose/Meta/Method/Accessor/Native/Number/abs.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Number::add" : { - "file" : "Moose/Meta/Method/Accessor/Native/Number/add.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Number::div" : { - "file" : "Moose/Meta/Method/Accessor/Native/Number/div.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Number::mod" : { - "file" : "Moose/Meta/Method/Accessor/Native/Number/mod.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Number::mul" : { - "file" : "Moose/Meta/Method/Accessor/Native/Number/mul.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Number::set" : { - "file" : "Moose/Meta/Method/Accessor/Native/Number/set.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Number::sub" : { - "file" : "Moose/Meta/Method/Accessor/Native/Number/sub.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Reader" : { - "file" : "Moose/Meta/Method/Accessor/Native/Reader.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::String::append" : { - "file" : "Moose/Meta/Method/Accessor/Native/String/append.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::String::chomp" : { - "file" : "Moose/Meta/Method/Accessor/Native/String/chomp.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::String::chop" : { - "file" : "Moose/Meta/Method/Accessor/Native/String/chop.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::String::clear" : { - "file" : "Moose/Meta/Method/Accessor/Native/String/clear.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::String::inc" : { - "file" : "Moose/Meta/Method/Accessor/Native/String/inc.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::String::length" : { - "file" : "Moose/Meta/Method/Accessor/Native/String/length.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::String::match" : { - "file" : "Moose/Meta/Method/Accessor/Native/String/match.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::String::prepend" : { - "file" : "Moose/Meta/Method/Accessor/Native/String/prepend.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::String::replace" : { - "file" : "Moose/Meta/Method/Accessor/Native/String/replace.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::String::substr" : { - "file" : "Moose/Meta/Method/Accessor/Native/String/substr.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Accessor::Native::Writer" : { - "file" : "Moose/Meta/Method/Accessor/Native/Writer.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Augmented" : { - "file" : "Moose/Meta/Method/Augmented.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Constructor" : { - "file" : "Moose/Meta/Method/Constructor.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Delegation" : { - "file" : "Moose/Meta/Method/Delegation.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Destructor" : { - "file" : "Moose/Meta/Method/Destructor.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Meta" : { - "file" : "Moose/Meta/Method/Meta.pm", - "version" : "2.0401" - }, - "Moose::Meta::Method::Overridden" : { - "file" : "Moose/Meta/Method/Overridden.pm", - "version" : "2.0401" - }, - "Moose::Meta::Mixin::AttributeCore" : { - "file" : "Moose/Meta/Mixin/AttributeCore.pm", - "version" : "2.0401" - }, - "Moose::Meta::Object::Trait" : { - "file" : "Moose/Meta/Object/Trait.pm", - "version" : "2.0401" - }, - "Moose::Meta::Role" : { - "file" : "Moose/Meta/Role.pm", - "version" : "2.0401" - }, - "Moose::Meta::Role::Application" : { - "file" : "Moose/Meta/Role/Application.pm", - "version" : "2.0401" - }, - "Moose::Meta::Role::Application::RoleSummation" : { - "file" : "Moose/Meta/Role/Application/RoleSummation.pm", - "version" : "2.0401" - }, - "Moose::Meta::Role::Application::ToClass" : { - "file" : "Moose/Meta/Role/Application/ToClass.pm", - "version" : "2.0401" - }, - "Moose::Meta::Role::Application::ToInstance" : { - "file" : "Moose/Meta/Role/Application/ToInstance.pm", - "version" : "2.0401" - }, - "Moose::Meta::Role::Application::ToRole" : { - "file" : "Moose/Meta/Role/Application/ToRole.pm", - "version" : "2.0401" - }, - "Moose::Meta::Role::Attribute" : { - "file" : "Moose/Meta/Role/Attribute.pm", - "version" : "2.0401" - }, - "Moose::Meta::Role::Composite" : { - "file" : "Moose/Meta/Role/Composite.pm", - "version" : "2.0401" - }, - "Moose::Meta::Role::Method" : { - "file" : "Moose/Meta/Role/Method.pm", - "version" : "2.0401" - }, - "Moose::Meta::Role::Method::Conflicting" : { - "file" : "Moose/Meta/Role/Method/Conflicting.pm", - "version" : "2.0401" - }, - "Moose::Meta::Role::Method::Required" : { - "file" : "Moose/Meta/Role/Method/Required.pm", - "version" : "2.0401" - }, - "Moose::Meta::TypeCoercion" : { - "file" : "Moose/Meta/TypeCoercion.pm", - "version" : "2.0401" - }, - "Moose::Meta::TypeCoercion::Union" : { - "file" : "Moose/Meta/TypeCoercion/Union.pm", - "version" : "2.0401" - }, - "Moose::Meta::TypeConstraint" : { - "file" : "Moose/Meta/TypeConstraint.pm", - "version" : "2.0401" - }, - "Moose::Meta::TypeConstraint::Class" : { - "file" : "Moose/Meta/TypeConstraint/Class.pm", - "version" : "2.0401" - }, - "Moose::Meta::TypeConstraint::DuckType" : { - "file" : "Moose/Meta/TypeConstraint/DuckType.pm", - "version" : "2.0401" - }, - "Moose::Meta::TypeConstraint::Enum" : { - "file" : "Moose/Meta/TypeConstraint/Enum.pm", - "version" : "2.0401" - }, - "Moose::Meta::TypeConstraint::Parameterizable" : { - "file" : "Moose/Meta/TypeConstraint/Parameterizable.pm", - "version" : "2.0401" - }, - "Moose::Meta::TypeConstraint::Parameterized" : { - "file" : "Moose/Meta/TypeConstraint/Parameterized.pm", - "version" : "2.0401" - }, - "Moose::Meta::TypeConstraint::Registry" : { - "file" : "Moose/Meta/TypeConstraint/Registry.pm", - "version" : "2.0401" - }, - "Moose::Meta::TypeConstraint::Role" : { - "file" : "Moose/Meta/TypeConstraint/Role.pm", - "version" : "2.0401" - }, - "Moose::Meta::TypeConstraint::Union" : { - "file" : "Moose/Meta/TypeConstraint/Union.pm", - "version" : "2.0401" - }, - "Moose::Object" : { - "file" : "Moose/Object.pm", - "version" : "2.0401" - }, - "Moose::Role" : { - "file" : "Moose/Role.pm", - "version" : "2.0401" - }, - "Moose::Util" : { - "file" : "Moose/Util.pm", - "version" : "2.0401" - }, - "Moose::Util::MetaRole" : { - "file" : "Moose/Util/MetaRole.pm", - "version" : "2.0401" - }, - "Moose::Util::TypeConstraints" : { - "file" : "Moose/Util/TypeConstraints.pm", - "version" : "2.0401" - }, - "Moose::Util::TypeConstraints::Builtins" : { - "file" : "Moose/Util/TypeConstraints/Builtins.pm", - "version" : "2.0401" - }, - "Test::Moose" : { - "file" : "Test/Moose.pm", - "version" : "2.0401" - }, - "metaclass" : { - "file" : "metaclass.pm", - "version" : "2.0401" - }, - "oose" : { - "file" : "oose.pm", - "version" : "2.0401" - } - }, - "target" : "Moose::Role", - "version" : "2.0401" - }, - "MooseX::Emulate::Class::Accessor::Fast" : { - "dist" : "MooseX-Emulate-Class-Accessor-Fast-0.00903", - "mymeta" : { - "abstract" : "Emulate Class::Accessor::Fast behavior using Moose attributes", - "author" : [ - "Guillermo Roditi (groditi) <groditi@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.91, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "MooseX-Emulate-Class-Accessor-Fast", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Moose" : "0.84", - "Test::Exception" : 0, - "Test::More" : 0, - "namespace::clean" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.00903" - }, - "name" : "MooseX::Emulate::Class::Accessor::Fast", - "pathname" : "F/FL/FLORA/MooseX-Emulate-Class-Accessor-Fast-0.00903.tar.gz", - "provides" : { - "MooseX::Adopt::Class::Accessor::Fast" : { - "file" : "MooseX/Adopt/Class/Accessor/Fast.pm", - "version" : "0.00200" - }, - "MooseX::Emulate::Class::Accessor::Fast" : { - "file" : "MooseX/Emulate/Class/Accessor/Fast.pm", - "version" : "0.00903" - }, - "MooseX::Emulate::Class::Accessor::Fast::Meta::Accessor" : { - "file" : "MooseX/Emulate/Class/Accessor/Fast/Meta/Accessor.pm" - }, - "MooseX::Emulate::Class::Accessor::Fast::Meta::Role::Attribute" : { - "file" : "MooseX/Emulate/Class/Accessor/Fast/Meta/Role/Attribute.pm" - } - }, - "target" : "MooseX::Emulate::Class::Accessor::Fast", - "version" : "0.00903" - }, - "MooseX::Getopt" : { - "dist" : "MooseX-Getopt-0.35", - "mymeta" : { - "abstract" : "A Moose role for processing command line options", - "author" : [ - "Stevan Little <stevan@iinteractive.com>", - "Brandon L. Black <blblack@gmail.com>", - "Yuval Kogman <nothingmuch@woobling.org>", - "Ryan D Johnson <ryan@innerfence.com>", - "Drew Taylor <drew@drewtaylor.com>", - "Tomas Doran <bobtfish@bobtfish.net>", - "Florian Ragwitz <rafl@debian.org>", - "Dagfinn Ilmari MannsÃ¥ker <ilmari@ilmari.org>", - "Ãvar Arnfjörð Bjarmason <avar@cpan.org>", - "Chris Prather <perigrin@cpan.org>", - "Karen Etheridge <ether@cpan.org>", - "Jonathan Swartz <swartz@pobox.com>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.200001, CPAN::Meta::Converter version 2.101610, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "MooseX-Getopt", - "prereqs" : { - "build" : { - "requires" : { - "Test::Fatal" : "0.003", - "Test::More" : "0.88", - "Test::Requires" : "0.05", - "Test::Warn" : "0.21" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.31" - } - }, - "runtime" : { - "requires" : { - "Getopt::Long" : "2.37", - "Getopt::Long::Descriptive" : "0.081", - "Moose" : "0.56" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-Getopt" - }, - "homepage" : "http://search.cpan.org/dist/MooseX-Getopt", - "repository" : { - "type" : "git", - "url" : "git://git.moose.perl.org/MooseX-Getopt.git" - } - }, - "version" : "0.35", - "x_Dist_Zilla" : { - "plugins" : [ - { - "class" : "Dist::Zilla::Plugin::GatherDir", - "name" : "@FLORA/@Basic/GatherDir", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::PruneCruft", - "name" : "@FLORA/@Basic/PruneCruft", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::ManifestSkip", - "name" : "@FLORA/@Basic/ManifestSkip", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::MetaYAML", - "name" : "@FLORA/@Basic/MetaYAML", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::License", - "name" : "@FLORA/@Basic/License", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::Readme", - "name" : "@FLORA/@Basic/Readme", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::ExtraTests", - "name" : "@FLORA/@Basic/ExtraTests", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::ExecDir", - "name" : "@FLORA/@Basic/ExecDir", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::ShareDir", - "name" : "@FLORA/@Basic/ShareDir", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::MakeMaker", - "name" : "@FLORA/@Basic/MakeMaker", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::Manifest", - "name" : "@FLORA/@Basic/Manifest", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::TestRelease", - "name" : "@FLORA/@Basic/TestRelease", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::ConfirmRelease", - "name" : "@FLORA/@Basic/ConfirmRelease", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::UploadToCPAN", - "name" : "@FLORA/@Basic/UploadToCPAN", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::MetaConfig", - "name" : "@FLORA/MetaConfig", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::MetaJSON", - "name" : "@FLORA/MetaJSON", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::PkgVersion", - "name" : "@FLORA/PkgVersion", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::PodSyntaxTests", - "name" : "@FLORA/PodSyntaxTests", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::NoTabsTests", - "name" : "@FLORA/NoTabsTests", - "version" : "0.01" - }, - { - "class" : "Dist::Zilla::Plugin::PodCoverageTests", - "name" : "@FLORA/PodCoverageTests", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::MetaResources", - "name" : "@FLORA/MetaResources", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::Authority", - "name" : "@FLORA/Authority", - "version" : "0.01" - }, - { - "class" : "Dist::Zilla::Plugin::EOLTests", - "name" : "@FLORA/EOLTests", - "version" : "0.02" - }, - { - "class" : "Dist::Zilla::Plugin::PodWeaver", - "name" : "@FLORA/PodWeaver", - "version" : "3.101640" - }, - { - "class" : "Dist::Zilla::Plugin::Prereq", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "runtime", - "type" : "requires" - } - }, - "name" : "Prereq", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::Prereq", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "test", - "type" : "requires" - } - }, - "name" : "TestRequires", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":InstallModules", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":TestFiles", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ExecFiles", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ShareFiles", - "version" : "4.200001" - } - ], - "zilla" : { - "class" : "Dist::Zilla::Dist::Builder", - "config" : { - "is_trial" : 0 - }, - "version" : "4.200001" - } - }, - "x_authority" : "cpan:STEVAN" - }, - "name" : "MooseX::Getopt", - "pathname" : "/authors/id/B/BO/BOBTFISH/MooseX-Getopt-0.35.tar.gz", - "provides" : { - "MooseX::Getopt" : { - "file" : "MooseX/Getopt.pm", - "version" : "0.35" - }, - "MooseX::Getopt::Basic" : { - "file" : "MooseX/Getopt/Basic.pm", - "version" : "0.35" - }, - "MooseX::Getopt::Dashes" : { - "file" : "MooseX/Getopt/Dashes.pm", - "version" : "0.35" - }, - "MooseX::Getopt::GLD" : { - "file" : "MooseX/Getopt/GLD.pm", - "version" : "0.35" - }, - "MooseX::Getopt::Meta::Attribute" : { - "file" : "MooseX/Getopt/Meta/Attribute.pm", - "version" : "0.35" - }, - "MooseX::Getopt::Meta::Attribute::NoGetopt" : { - "file" : "MooseX/Getopt/Meta/Attribute/NoGetopt.pm", - "version" : "0.35" - }, - "MooseX::Getopt::Meta::Attribute::Trait" : { - "file" : "MooseX/Getopt/Meta/Attribute/Trait.pm", - "version" : "0.35" - }, - "MooseX::Getopt::Meta::Attribute::Trait::NoGetopt" : { - "file" : "MooseX/Getopt/Meta/Attribute/Trait/NoGetopt.pm", - "version" : "0.35" - }, - "MooseX::Getopt::OptionTypeMap" : { - "file" : "MooseX/Getopt/OptionTypeMap.pm", - "version" : "0.35" - }, - "MooseX::Getopt::ProcessedArgv" : { - "file" : "MooseX/Getopt/ProcessedArgv.pm", - "version" : "0.35" - }, - "MooseX::Getopt::Strict" : { - "file" : "MooseX/Getopt/Strict.pm", - "version" : "0.35" - } - }, - "target" : "MooseX::Getopt", - "version" : "0.35" - }, - "MooseX::MethodAttributes" : { - "dist" : "MooseX-MethodAttributes-0.25", - "mymeta" : { - "abstract" : "code attribute introspection", - "author" : [ - "Florian Ragwitz <rafl@debian.org>", - "Tomas Doran <bobtfish@bobtfish.net>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.200007, CPAN::Meta::Converter version 2.110440, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "MooseX-MethodAttributes", - "prereqs" : { - "build" : { - "requires" : { - "Test::Exception" : 0, - "Test::More" : "0.88", - "namespace::autoclean" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.30" - } - }, - "runtime" : { - "requires" : { - "Moose" : "0.98", - "MooseX::Types::Moose" : "0.21", - "namespace::clean" : "0.10" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-MethodAttributes" - }, - "homepage" : "http://search.cpan.org/dist/MooseX-MethodAttributes", - "repository" : { - "type" : "git", - "url" : "git://github.com/rafl/moosex-methodattributes.git" - } - }, - "version" : "0.25", - "x_Dist_Zilla" : { - "plugins" : [ - { - "class" : "Dist::Zilla::Plugin::Prereq", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "runtime", - "type" : "requires" - } - }, - "name" : "Prereq", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::Prereq", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "test", - "type" : "requires" - } - }, - "name" : "TestRequires", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::GatherDir", - "name" : "@FLORA/@Basic/GatherDir", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::PruneCruft", - "name" : "@FLORA/@Basic/PruneCruft", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::ManifestSkip", - "name" : "@FLORA/@Basic/ManifestSkip", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::MetaYAML", - "name" : "@FLORA/@Basic/MetaYAML", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::License", - "name" : "@FLORA/@Basic/License", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::Readme", - "name" : "@FLORA/@Basic/Readme", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::ExtraTests", - "name" : "@FLORA/@Basic/ExtraTests", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::ExecDir", - "name" : "@FLORA/@Basic/ExecDir", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::ShareDir", - "name" : "@FLORA/@Basic/ShareDir", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::MakeMaker", - "name" : "@FLORA/@Basic/MakeMaker", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::Manifest", - "name" : "@FLORA/@Basic/Manifest", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::TestRelease", - "name" : "@FLORA/@Basic/TestRelease", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::ConfirmRelease", - "name" : "@FLORA/@Basic/ConfirmRelease", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::UploadToCPAN", - "name" : "@FLORA/@Basic/UploadToCPAN", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::MetaConfig", - "name" : "@FLORA/MetaConfig", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::MetaJSON", - "name" : "@FLORA/MetaJSON", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::PkgVersion", - "name" : "@FLORA/PkgVersion", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::PodSyntaxTests", - "name" : "@FLORA/PodSyntaxTests", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::NoTabsTests", - "name" : "@FLORA/NoTabsTests", - "version" : "0.01" - }, - { - "class" : "Dist::Zilla::Plugin::PodCoverageTests", - "name" : "@FLORA/PodCoverageTests", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::MetaResources", - "name" : "@FLORA/MetaResources", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::Authority", - "name" : "@FLORA/Authority", - "version" : "1.005" - }, - { - "class" : "Dist::Zilla::Plugin::EOLTests", - "name" : "@FLORA/EOLTests", - "version" : "0.02" - }, - { - "class" : "Dist::Zilla::Plugin::PodWeaver", - "name" : "@FLORA/PodWeaver", - "version" : "3.101641" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":InstallModules", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":IncModules", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":TestFiles", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ExecFiles", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ShareFiles", - "version" : "4.200007" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":MainModule", - "version" : "4.200007" - } - ], - "zilla" : { - "class" : "Dist::Zilla::Dist::Builder", - "config" : { - "is_trial" : 0 - }, - "version" : "4.200007" - } - }, - "x_authority" : "cpan:FLORA" - }, - "name" : "MooseX::MethodAttributes", - "pathname" : "B/BO/BOBTFISH/MooseX-MethodAttributes-0.25.tar.gz", - "provides" : { - "MooseX::MethodAttributes" : { - "file" : "MooseX/MethodAttributes.pm", - "version" : "0.25" - }, - "MooseX::MethodAttributes::Inheritable" : { - "file" : "MooseX/MethodAttributes/Inheritable.pm", - "version" : "0.25" - }, - "MooseX::MethodAttributes::Role" : { - "file" : "MooseX/MethodAttributes/Role.pm", - "version" : "0.25" - }, - "MooseX::MethodAttributes::Role::AttrContainer" : { - "file" : "MooseX/MethodAttributes/Role/AttrContainer.pm", - "version" : "0.25" - }, - "MooseX::MethodAttributes::Role::AttrContainer::Inheritable" : { - "file" : "MooseX/MethodAttributes/Role/AttrContainer/Inheritable.pm", - "version" : "0.25" - }, - "MooseX::MethodAttributes::Role::Meta::Class" : { - "file" : "MooseX/MethodAttributes/Role/Meta/Class.pm", - "version" : "0.25" - }, - "MooseX::MethodAttributes::Role::Meta::Map" : { - "file" : "MooseX/MethodAttributes/Role/Meta/Map.pm", - "version" : "0.25" - }, - "MooseX::MethodAttributes::Role::Meta::Method" : { - "file" : "MooseX/MethodAttributes/Role/Meta/Method.pm", - "version" : "0.25" - }, - "MooseX::MethodAttributes::Role::Meta::Method::MaybeWrapped" : { - "file" : "MooseX/MethodAttributes/Role/Meta/Method/MaybeWrapped.pm", - "version" : "0.25" - }, - "MooseX::MethodAttributes::Role::Meta::Method::Wrapped" : { - "file" : "MooseX/MethodAttributes/Role/Meta/Method/Wrapped.pm", - "version" : "0.25" - }, - "MooseX::MethodAttributes::Role::Meta::Role" : { - "file" : "MooseX/MethodAttributes/Role/Meta/Role.pm", - "version" : "0.25" - }, - "MooseX::MethodAttributes::Role::Meta::Role::Application" : { - "file" : "MooseX/MethodAttributes/Role/Meta/Role/Application.pm", - "version" : "0.25" - }, - "MooseX::MethodAttributes::Role::Meta::Role::Application::Summation" : { - "file" : "MooseX/MethodAttributes/Role/Meta/Role/Application/Summation.pm", - "version" : "0.25" - } - }, - "target" : "MooseX::MethodAttributes::Inheritable", - "version" : "0.25" - }, - "MooseX::Params::Validate" : { - "dist" : "MooseX-Params-Validate-0.16", - "module" : "MooseX::Params::Validate", - "mymeta" : { - "abstract" : "an extension of Params::Validate using Moose's types", - "author" : [ - "Stevan Little <stevan.little@iinteractive.com>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.200001, CPAN::Meta::Converter version 2.102400, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "MooseX-Params-Validate", - "prereqs" : { - "build" : { - "requires" : { - "Test::Fatal" : "0.001", - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.31" - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Devel::Caller" : 0, - "Moose" : "0.58", - "Params::Validate" : "0.88", - "Scalar::Util" : 0, - "Sub::Exporter" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooseX::Params::Validate" - }, - "repository" : { - "type" : "git", - "url" : "git://git.moose.perl.org/MooseX-Params-Validate.git" - } - }, - "version" : "0.16", - "x_authority" : "cpan:STEVAN" - }, - "name" : "MooseX::Params::Validate", - "pathname" : "D/DR/DROLSKY/MooseX-Params-Validate-0.16.tar.gz", - "provides" : { - "MooseX::Params::Validate" : { - "file" : "MooseX/Params/Validate.pm", - "version" : "0.16" - } - }, - "version" : "0.16" - }, - "MooseX::Role::WithOverloading" : { - "dist" : "MooseX-Role-WithOverloading-0.09", - "mymeta" : { - "abstract" : "Roles which support overloading", - "author" : [ - "Florian Ragwitz <rafl@debian.org>", - "Tomas Doran <bobtfish@bobtfish.net>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.200000, CPAN::Meta::Converter version 2.102400, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "MooseX-Role-WithOverloading", - "prereqs" : { - "build" : { - "requires" : { - "FindBin" : 0, - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.31" - } - }, - "runtime" : { - "requires" : { - "Moose" : "0.94", - "Moose::Exporter" : 0, - "Moose::Role" : "1.15", - "Moose::Util::MetaRole" : 0, - "MooseX::Types::Moose" : 0, - "XSLoader" : 0, - "aliased" : 0, - "namespace::autoclean" : 0, - "namespace::clean" : 0, - "overload" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-Role-WithOverloading" - }, - "homepage" : "http://search.cpan.org/dist/MooseX-Role-WithOverloading", - "repository" : { - "type" : "git", - "url" : "git://github.com/rafl/moosex-role-withoverloading.git" - } - }, - "version" : "0.09", - "x_Dist_Zilla" : { - "plugins" : [ - { - "class" : "Dist::Zilla::Plugin::GatherDir", - "name" : "@FLORA/@Basic/GatherDir", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::PruneCruft", - "name" : "@FLORA/@Basic/PruneCruft", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::ManifestSkip", - "name" : "@FLORA/@Basic/ManifestSkip", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::MetaYAML", - "name" : "@FLORA/@Basic/MetaYAML", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::License", - "name" : "@FLORA/@Basic/License", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::Readme", - "name" : "@FLORA/@Basic/Readme", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::ExtraTests", - "name" : "@FLORA/@Basic/ExtraTests", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::ExecDir", - "name" : "@FLORA/@Basic/ExecDir", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::ShareDir", - "name" : "@FLORA/@Basic/ShareDir", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::MakeMaker", - "name" : "@FLORA/@Basic/MakeMaker", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::Manifest", - "name" : "@FLORA/@Basic/Manifest", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::TestRelease", - "name" : "@FLORA/@Basic/TestRelease", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::ConfirmRelease", - "name" : "@FLORA/@Basic/ConfirmRelease", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::UploadToCPAN", - "name" : "@FLORA/@Basic/UploadToCPAN", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::MetaConfig", - "name" : "@FLORA/MetaConfig", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::MetaJSON", - "name" : "@FLORA/MetaJSON", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::PkgVersion", - "name" : "@FLORA/PkgVersion", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::PodSyntaxTests", - "name" : "@FLORA/PodSyntaxTests", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::NoTabsTests", - "name" : "@FLORA/NoTabsTests", - "version" : "0.01" - }, - { - "class" : "Dist::Zilla::Plugin::PodCoverageTests", - "name" : "@FLORA/PodCoverageTests", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::MetaResources", - "name" : "@FLORA/MetaResources", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::Authority", - "name" : "@FLORA/Authority", - "version" : "1.002" - }, - { - "class" : "Dist::Zilla::Plugin::EOLTests", - "name" : "@FLORA/EOLTests", - "version" : "0.02" - }, - { - "class" : "Dist::Zilla::Plugin::PodWeaver", - "name" : "@FLORA/PodWeaver", - "version" : "3.101641" - }, - { - "class" : "Dist::Zilla::Plugin::AutoPrereqs", - "name" : "@FLORA/AutoPrereqs", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":InstallModules", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":TestFiles", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ExecFiles", - "version" : "4.200000" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ShareFiles", - "version" : "4.200000" - } - ], - "zilla" : { - "class" : "Dist::Zilla::Dist::Builder", - "config" : { - "is_trial" : 0 - }, - "version" : "4.200000" - } - }, - "x_authority" : "cpan:FLORA" - }, - "name" : "MooseX::Role::WithOverloading", - "pathname" : "F/FL/FLORA/MooseX-Role-WithOverloading-0.09.tar.gz", - "provides" : { - "MooseX::Role::WithOverloading" : { - "file" : "MooseX/Role/WithOverloading.pm", - "version" : "0.09" - }, - "MooseX::Role::WithOverloading::Meta::Role" : { - "file" : "MooseX/Role/WithOverloading/Meta/Role.pm", - "version" : "0.09" - }, - "MooseX::Role::WithOverloading::Meta::Role::Application" : { - "file" : "MooseX/Role/WithOverloading/Meta/Role/Application.pm", - "version" : "0.09" - }, - "MooseX::Role::WithOverloading::Meta::Role::Application::Composite" : { - "file" : "MooseX/Role/WithOverloading/Meta/Role/Application/Composite.pm", - "version" : "0.09" - }, - "MooseX::Role::WithOverloading::Meta::Role::Application::Composite::ToClass" : { - "file" : "MooseX/Role/WithOverloading/Meta/Role/Application/Composite/ToClass.pm", - "version" : "0.09" - }, - "MooseX::Role::WithOverloading::Meta::Role::Application::Composite::ToInstance" : { - "file" : "MooseX/Role/WithOverloading/Meta/Role/Application/Composite/ToInstance.pm", - "version" : "0.09" - }, - "MooseX::Role::WithOverloading::Meta::Role::Application::Composite::ToRole" : { - "file" : "MooseX/Role/WithOverloading/Meta/Role/Application/Composite/ToRole.pm", - "version" : "0.09" - }, - "MooseX::Role::WithOverloading::Meta::Role::Application::FixOverloadedRefs" : { - "file" : "MooseX/Role/WithOverloading/Meta/Role/Application/FixOverloadedRefs.pm", - "version" : "0.09" - }, - "MooseX::Role::WithOverloading::Meta::Role::Application::ToClass" : { - "file" : "MooseX/Role/WithOverloading/Meta/Role/Application/ToClass.pm", - "version" : "0.09" - }, - "MooseX::Role::WithOverloading::Meta::Role::Application::ToInstance" : { - "file" : "MooseX/Role/WithOverloading/Meta/Role/Application/ToInstance.pm", - "version" : "0.09" - }, - "MooseX::Role::WithOverloading::Meta::Role::Application::ToRole" : { - "file" : "MooseX/Role/WithOverloading/Meta/Role/Application/ToRole.pm", - "version" : "0.09" - }, - "MooseX::Role::WithOverloading::Meta::Role::Composite" : { - "file" : "MooseX/Role/WithOverloading/Meta/Role/Composite.pm", - "version" : "0.09" - } - }, - "target" : "MooseX::Role::WithOverloading", - "version" : "0.09" - }, - "MooseX::SemiAffordanceAccessor" : { - "dist" : "MooseX-SemiAffordanceAccessor-0.09", - "module" : "MooseX::SemiAffordanceAccessor", - "mymeta" : { - "abstract" : "Name your accessors foo() and set_foo()", - "author" : [ - "Dave Rolsky <autarch@urth.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.200004, CPAN::Meta::Converter version 2.110240, CPAN::Meta::Converter version 2.112150", - "license" : [ - "artistic_2" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "MooseX-SemiAffordanceAccessor", - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.31" - } - }, - "runtime" : { - "requires" : { - "Moose" : "1.16" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooseX-SemiAffordanceAccessor" - }, - "repository" : { - "type" : "git", - "url" : "git://git.moose.perl.org/MooseX-SemiAffordanceAccessor.git" - } - }, - "version" : "0.09" - }, - "name" : "MooseX::SemiAffordanceAccessor", - "pathname" : "D/DR/DROLSKY/MooseX-SemiAffordanceAccessor-0.09.tar.gz", - "provides" : { - "MooseX::SemiAffordanceAccessor" : { - "file" : "MooseX/SemiAffordanceAccessor.pm", - "version" : "0.09" - }, - "MooseX::SemiAffordanceAccessor::Role::Attribute" : { - "file" : "MooseX/SemiAffordanceAccessor/Role/Attribute.pm", - "version" : "0.09" - } - }, - "version" : "0.09" - }, - "MooseX::Traits::Pluggable" : { - "dist" : "MooseX-Traits-Pluggable-0.10", - "mymeta" : { - "abstract" : "trait loading and resolution for Moose", - "author" : [ - "Rafael Kitover C<< <rkitover@cpan.org> >>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.00, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "MooseX-Traits-Pluggable", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Test::Exception" : 0, - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Class::MOP" : "0.84", - "List::MoreUtils" : 0, - "Moose" : 0, - "Moose::Role" : 0, - "Scalar::Util" : 0, - "Test::Exception" : 0, - "Test::More" : 0, - "namespace::autoclean" : 0 - } - } - }, - "provides" : { - "MooseX::Traits::Pluggable" : { - "file" : "lib/MooseX/Traits/Pluggable.pm", - "version" : "0.10" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://github.com/rkitover/moosex-traits-pluggable.git" - } - }, - "version" : "0.10" - }, - "name" : "MooseX::Traits::Pluggable", - "pathname" : "R/RK/RKITOVER/MooseX-Traits-Pluggable-0.10.tar.gz", - "provides" : { - "MooseX::Traits::Pluggable" : { - "file" : "MooseX/Traits/Pluggable.pm", - "version" : "0.10" - } - }, - "target" : "MooseX::Traits::Pluggable", - "version" : "0.10" - }, - "MooseX::Types" : { - "dist" : "MooseX-Types-0.30", - "mymeta" : { - "abstract" : "Organise your Moose types in libraries", - "author" : [ - "Robert \"phaylon\" Sedlacek <rs@474.at>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.300000, CPAN::Meta::Converter version 2.110930, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "MooseX-Types", - "prereqs" : { - "build" : { - "requires" : { - "FindBin" : 0, - "Test::Fatal" : 0, - "Test::Moose" : 0, - "Test::More" : "0.88", - "Test::Requires" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.30" - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Carp::Clan" : "6.00", - "Moose" : "1.06", - "Scalar::Util" : "1.19", - "Sub::Install" : "0.924", - "Sub::Name" : 0, - "namespace::clean" : "0.19" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooseX-Types" - }, - "repository" : { - "type" : "git", - "url" : "git://git.moose.perl.org/MooseX-Types.git" - } - }, - "version" : "0.30" - }, - "name" : "MooseX::Types", - "pathname" : "D/DR/DROLSKY/MooseX-Types-0.30.tar.gz", - "provides" : { - "MooseX::Types" : { - "file" : "MooseX/Types.pm", - "version" : "0.30" - }, - "MooseX::Types::Base" : { - "file" : "MooseX/Types/Base.pm", - "version" : "0.30" - }, - "MooseX::Types::CheckedUtilExports" : { - "file" : "MooseX/Types/CheckedUtilExports.pm", - "version" : "0.30" - }, - "MooseX::Types::Combine" : { - "file" : "MooseX/Types/Combine.pm", - "version" : "0.30" - }, - "MooseX::Types::Moose" : { - "file" : "MooseX/Types/Moose.pm", - "version" : "0.30" - }, - "MooseX::Types::TypeDecorator" : { - "file" : "MooseX/Types/TypeDecorator.pm", - "version" : "0.30" - }, - "MooseX::Types::UndefinedType" : { - "file" : "MooseX/Types/UndefinedType.pm", - "version" : "0.30" - }, - "MooseX::Types::Util" : { - "file" : "MooseX/Types/Util.pm", - "version" : "0.30" - }, - "MooseX::Types::Wrapper" : { - "file" : "MooseX/Types/Wrapper.pm", - "version" : "0.30" - } - }, - "target" : "MooseX::Types::Moose", - "version" : "0.30" - }, - "MooseX::Types::Common" : { - "dist" : "MooseX-Types-Common-0.001004", - "mymeta" : { - "abstract" : "A library of commonly used type constraints", - "author" : [ - "This distribution was extracted from the L<Reaction> code base by Guillermo" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.04, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "MooseX-Types-Common", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.36", - "Test::Fatal" : 0, - "Test::More" : "0.62" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.36" - } - }, - "runtime" : { - "requires" : { - "Moose" : "0.39", - "MooseX::Types" : "0.04" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://git.moose.perl.org/MooseX-Types-Common.git" - }, - "x_IRC" : "irc://irc.perl.org/#moose" - }, - "version" : "0.001004" - }, - "name" : "MooseX::Types::Common", - "pathname" : "A/AR/ARCANEZ/MooseX-Types-Common-0.001004.tar.gz", - "provides" : { - "MooseX::Types::Common" : { - "file" : "MooseX/Types/Common.pm", - "version" : "0.001004" - }, - "MooseX::Types::Common::Numeric" : { - "file" : "MooseX/Types/Common/Numeric.pm", - "version" : "0.001004" - }, - "MooseX::Types::Common::String" : { - "file" : "MooseX/Types/Common/String.pm", - "version" : "0.001004" - } - }, - "target" : "MooseX::Types::Common::Numeric", - "version" : "0.001004" - }, - "MyCPAN::App::DPAN" : { - "dist" : "MyCPAN-App-DPAN-1.28", - "mymeta" : { - "abstract" : "Create a custom, private DarkPAN repository that looks just like a real CPAN", - "author" : [ - "brian d foy <bdfoy@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.50, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "MyCPAN-App-DPAN", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "CPAN::Checksums" : 0, - "CPAN::PackageDetails" : "0.24", - "Log::Log4perl" : 0, - "MyCPAN::Indexer" : "1.28", - "Test::Output" : "0.13", - "version" : 0 - } - } - }, - "release_status" : "stable", - "version" : "1.28" - }, - "name" : "MyCPAN::App::DPAN", - "pathname" : "/authors/id/B/BD/BDFOY/MyCPAN-App-DPAN-1.28.tar.gz", - "provides" : { - "CPAN::Modulelist" : { - "file" : "MyCPAN/App/DPAN/Reporter/AsYAML.pm" - }, - "MyCPAN::App::DPAN" : { - "file" : "MyCPAN/App/DPAN.pm", - "version" : "1.28" - }, - "MyCPAN::App::DPAN::Indexer" : { - "file" : "MyCPAN/App/DPAN/Indexer.pm", - "version" : "1.28" - }, - "MyCPAN::App::DPAN::Reporter::AsYAML" : { - "file" : "MyCPAN/App/DPAN/Reporter/AsYAML.pm", - "version" : "1.28" - }, - "MyCPAN::App::DPAN::Reporter::Minimal" : { - "file" : "MyCPAN/App/DPAN/Reporter/Minimal.pm", - "version" : "1.28" - }, - "MyCPAN::App::DPAN::SkipQueue" : { - "file" : "MyCPAN/App/DPAN/SkipQueue.pm", - "version" : "1.28" - } - }, - "target" : "MyCPAN::App::DPAN", - "version" : "1.28" - }, - "MyCPAN::Indexer" : { - "dist" : "MyCPAN-Indexer-1.28", - "mymeta" : { - "abstract" : "Index a Perl distribution", - "author" : [ - "brian d foy <bdfoy@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.50, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "MyCPAN-Indexer", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Archive::Extract" : 0, - "Archive::Tar" : 0, - "CPAN::Checksums" : 0, - "CPAN::PackageDetails" : "0.21", - "ConfigReader::Simple" : 0, - "Data::UUID" : 0, - "Digest::MD5" : 0, - "Distribution::Guess::BuildSystem" : "0.11", - "File::Find" : 0, - "File::Find::Closures" : 0, - "Log::Log4perl" : 0, - "Module::Extract::Namespaces" : "0.14", - "Module::Extract::Use" : "0.13", - "Module::Extract::VERSION" : "0.13", - "Parallel::ForkManager" : 0, - "Probe::Perl" : 0, - "Test::More" : 0, - "Test::Output" : "0.13", - "YAML" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "homepage" : "http://github.com/briandfoy/mycpan-indexer/tree/master", - "repository" : { - "type" : "git", - "url" : "git://github.com/briandfoy/mycpan-indexer.git" - } - }, - "version" : "1.28" - }, - "name" : "MyCPAN::Indexer", - "pathname" : "/authors/id/B/BD/BDFOY/MyCPAN-Indexer-1.28.tar.gz", - "provides" : { - "MyCPAN::App::BackPAN::Indexer" : { - "file" : "MyCPAN/App/BackPAN/Indexer.pm", - "version" : "1.28" - }, - "MyCPAN::Indexer" : { - "file" : "MyCPAN/Indexer.pm", - "version" : "1.28" - }, - "MyCPAN::Indexer::Component" : { - "file" : "MyCPAN/Indexer/Component.pm", - "version" : "1.28" - }, - "MyCPAN::Indexer::Coordinator" : { - "file" : "MyCPAN/Indexer/Coordinator.pm", - "version" : "1.28" - }, - "MyCPAN::Indexer::Dispatcher::Parallel" : { - "file" : "MyCPAN/Indexer/Dispatcher/Parallel.pm", - "version" : "1.28" - }, - "MyCPAN::Indexer::Dispatcher::Serial" : { - "file" : "MyCPAN/Indexer/Dispatcher/Serial.pm", - "version" : "1.28" - }, - "MyCPAN::Indexer::Interface::Curses" : { - "file" : "MyCPAN/Indexer/Interface/Curses.pm", - "version" : "1.28" - }, - "MyCPAN::Indexer::Interface::Text" : { - "file" : "MyCPAN/Indexer/Interface/Text.pm", - "version" : "1.28" - }, - "MyCPAN::Indexer::Interface::Tk" : { - "file" : "MyCPAN/Indexer/Interface/Tk.pm", - "version" : "1.28" - }, - "MyCPAN::Indexer::Notes" : { - "file" : "MyCPAN/Indexer/Notes.pm", - "version" : "1.28" - }, - "MyCPAN::Indexer::NullTester" : { - "file" : "MyCPAN/Indexer/NullTester.pm", - "version" : "1.28" - }, - "MyCPAN::Indexer::NullTester::Dispatcher" : { - "file" : "MyCPAN/Indexer/NullTester.pm" - }, - "MyCPAN::Indexer::Queue" : { - "file" : "MyCPAN/Indexer/Queue.pm", - "version" : "1.28" - }, - "MyCPAN::Indexer::Reporter::AsYAML" : { - "file" : "MyCPAN/Indexer/Reporter/AsYAML.pm", - "version" : "1.28" - }, - "MyCPAN::Indexer::Reporter::Base" : { - "file" : "MyCPAN/Indexer/Reporter/Base.pm", - "version" : "1.28" - }, - "MyCPAN::Indexer::TestCensus" : { - "file" : "MyCPAN/Indexer/TestCensus.pm", - "version" : "1.28" - }, - "MyCPAN::Indexer::Tutorial" : { - "file" : "MyCPAN/Indexer/Tutorial.pm", - "version" : "1.28" - }, - "MyCPAN::Indexer::Worker" : { - "file" : "MyCPAN/Indexer/Worker.pm", - "version" : "1.28" - } - }, - "target" : "MyCPAN::Indexer", - "version" : "1.28" - }, - "Net::DNS" : { - "dist" : "Net-DNS-0.68", - "mymeta" : { - "abstract" : "Perl DNS resolver module", - "author" : [ - "Olaf Kolkman <olaf@net-dns.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Net-DNS", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Digest::HMAC_MD5" : "1", - "Digest::MD5" : "2.12", - "Digest::SHA" : "5.23", - "IO::Socket" : 0, - "MIME::Base64" : "2.11", - "Test::More" : "0.18" - } - } - }, - "release_status" : "stable", - "version" : "0.68" - }, - "name" : "Net::DNS", - "pathname" : "O/OL/OLAF/Net-DNS-0.68.tar.gz", - "provides" : { - "Net::DNS" : { - "file" : "Net/DNS.pm", - "version" : "0.68" - }, - "Net::DNS::Domain" : { - "file" : "Net/DNS/Domain.pm", - "version" : "964" - }, - "Net::DNS::DomainName" : { - "file" : "Net/DNS/DomainName.pm", - "version" : "964" - }, - "Net::DNS::DomainName1035" : { - "file" : "Net/DNS/DomainName.pm" - }, - "Net::DNS::DomainName2535" : { - "file" : "Net/DNS/DomainName.pm" - }, - "Net::DNS::Header" : { - "file" : "Net/DNS/Header.pm", - "version" : "968" - }, - "Net::DNS::Mailbox" : { - "file" : "Net/DNS/Mailbox.pm", - "version" : "970" - }, - "Net::DNS::Mailbox1035" : { - "file" : "Net/DNS/Mailbox.pm" - }, - "Net::DNS::Mailbox2535" : { - "file" : "Net/DNS/Mailbox.pm" - }, - "Net::DNS::Nameserver" : { - "file" : "Net/DNS/Nameserver.pm", - "version" : "970" - }, - "Net::DNS::Packet" : { - "file" : "Net/DNS/Packet.pm", - "version" : "969" - }, - "Net::DNS::Question" : { - "file" : "Net/DNS/Question.pm", - "version" : "971" - }, - "Net::DNS::RR" : { - "file" : "Net/DNS/RR.pm", - "version" : "969" - }, - "Net::DNS::RR::A" : { - "file" : "Net/DNS/RR/A.pm", - "version" : "932" - }, - "Net::DNS::RR::AAAA" : { - "file" : "Net/DNS/RR/AAAA.pm", - "version" : "932" - }, - "Net::DNS::RR::AFSDB" : { - "file" : "Net/DNS/RR/AFSDB.pm", - "version" : "932" - }, - "Net::DNS::RR::APL" : { - "file" : "Net/DNS/RR/APL.pm", - "version" : "684" - }, - "Net::DNS::RR::APL::ApItem" : { - "file" : "Net/DNS/RR/APL/ApItem.pm", - "version" : "684" - }, - "Net::DNS::RR::CERT" : { - "file" : "Net/DNS/RR/CERT.pm", - "version" : "932" - }, - "Net::DNS::RR::CNAME" : { - "file" : "Net/DNS/RR/CNAME.pm", - "version" : "932" - }, - "Net::DNS::RR::DHCID" : { - "file" : "Net/DNS/RR/DHCID.pm", - "version" : "718" - }, - "Net::DNS::RR::DNAME" : { - "file" : "Net/DNS/RR/DNAME.pm", - "version" : "932" - }, - "Net::DNS::RR::EID" : { - "file" : "Net/DNS/RR/EID.pm", - "version" : "932" - }, - "Net::DNS::RR::HINFO" : { - "file" : "Net/DNS/RR/HINFO.pm", - "version" : "932" - }, - "Net::DNS::RR::HIP" : { - "file" : "Net/DNS/RR/HIP.pm", - "version" : "718" - }, - "Net::DNS::RR::IPSECKEY" : { - "file" : "Net/DNS/RR/IPSECKEY.pm", - "version" : "932" - }, - "Net::DNS::RR::ISDN" : { - "file" : "Net/DNS/RR/ISDN.pm", - "version" : "932" - }, - "Net::DNS::RR::KX" : { - "file" : "Net/DNS/RR/KX.pm", - "version" : "684" - }, - "Net::DNS::RR::LOC" : { - "file" : "Net/DNS/RR/LOC.pm", - "version" : "932" - }, - "Net::DNS::RR::MB" : { - "file" : "Net/DNS/RR/MB.pm", - "version" : "932" - }, - "Net::DNS::RR::MG" : { - "file" : "Net/DNS/RR/MG.pm", - "version" : "932" - }, - "Net::DNS::RR::MINFO" : { - "file" : "Net/DNS/RR/MINFO.pm", - "version" : "932" - }, - "Net::DNS::RR::MR" : { - "file" : "Net/DNS/RR/MR.pm", - "version" : "932" - }, - "Net::DNS::RR::MX" : { - "file" : "Net/DNS/RR/MX.pm", - "version" : "932" - }, - "Net::DNS::RR::NAPTR" : { - "file" : "Net/DNS/RR/NAPTR.pm", - "version" : "932" - }, - "Net::DNS::RR::NIMLOC" : { - "file" : "Net/DNS/RR/NIMLOC.pm", - "version" : "932" - }, - "Net::DNS::RR::NS" : { - "file" : "Net/DNS/RR/NS.pm", - "version" : "932" - }, - "Net::DNS::RR::NSAP" : { - "file" : "Net/DNS/RR/NSAP.pm", - "version" : "932" - }, - "Net::DNS::RR::NULL" : { - "file" : "Net/DNS/RR/NULL.pm", - "version" : "932" - }, - "Net::DNS::RR::OPT" : { - "file" : "Net/DNS/RR/OPT.pm", - "version" : "932" - }, - "Net::DNS::RR::PTR" : { - "file" : "Net/DNS/RR/PTR.pm", - "version" : "966" - }, - "Net::DNS::RR::PX" : { - "file" : "Net/DNS/RR/PX.pm", - "version" : "932" - }, - "Net::DNS::RR::RP" : { - "file" : "Net/DNS/RR/RP.pm", - "version" : "932" - }, - "Net::DNS::RR::RT" : { - "file" : "Net/DNS/RR/RT.pm", - "version" : "932" - }, - "Net::DNS::RR::SOA" : { - "file" : "Net/DNS/RR/SOA.pm", - "version" : "932" - }, - "Net::DNS::RR::SPF" : { - "file" : "Net/DNS/RR/SPF.pm", - "version" : "932" - }, - "Net::DNS::RR::SRV" : { - "file" : "Net/DNS/RR/SRV.pm", - "version" : "932" - }, - "Net::DNS::RR::SSHFP" : { - "file" : "Net/DNS/RR/SSHFP.pm", - "version" : "932" - }, - "Net::DNS::RR::TKEY" : { - "file" : "Net/DNS/RR/TKEY.pm", - "version" : "932" - }, - "Net::DNS::RR::TSIG" : { - "file" : "Net/DNS/RR/TSIG.pm", - "version" : "932" - }, - "Net::DNS::RR::TXT" : { - "file" : "Net/DNS/RR/TXT.pm", - "version" : "932" - }, - "Net::DNS::RR::Unknown" : { - "file" : "Net/DNS/RR/Unknown.pm", - "version" : "932" - }, - "Net::DNS::RR::X25" : { - "file" : "Net/DNS/RR/X25.pm", - "version" : "932" - }, - "Net::DNS::Resolver" : { - "file" : "Net/DNS/Resolver.pm", - "version" : "955" - }, - "Net::DNS::Resolver::Base" : { - "file" : "Net/DNS/Resolver/Base.pm", - "version" : "932" - }, - "Net::DNS::Resolver::Cygwin" : { - "file" : "Net/DNS/Resolver/Cygwin.pm", - "version" : "932" - }, - "Net::DNS::Resolver::Recurse" : { - "file" : "Net/DNS/Resolver/Recurse.pm", - "version" : "932" - }, - "Net::DNS::Resolver::UNIX" : { - "file" : "Net/DNS/Resolver/UNIX.pm", - "version" : "932" - }, - "Net::DNS::Resolver::Win32" : { - "file" : "Net/DNS/Resolver/Win32.pm", - "version" : "932" - }, - "Net::DNS::Text" : { - "file" : "Net/DNS/Text.pm", - "version" : "965" - }, - "Net::DNS::Update" : { - "file" : "Net/DNS/Update.pm", - "version" : "970" - } - }, - "target" : "Net::DNS", - "version" : "0.68" - }, - "Net::Domain::TLD" : { - "dist" : "Net-Domain-TLD-1.68", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.30, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Net-Domain-TLD", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Storable" : 0 - } - } - }, - "release_status" : "stable", - "version" : "1.68", - "x_installdirs" : "site", - "x_version_from" : "lib/Net/Domain/TLD.pm" - }, - "name" : "Net::Domain::TLD", - "pathname" : "/authors/id/A/AL/ALEXP/Net-Domain-TLD-1.68.tar.gz", - "provides" : { - "Net::Domain::TLD" : { - "file" : "Net/Domain/TLD.pm", - "version" : "1.68" - } - }, - "target" : "Net::Domain::TLD", - "version" : "1.68" - }, - "Net::HTTP" : { - "dist" : "Net-HTTP-6.02", - "mymeta" : { - "abstract" : "Low-level HTTP connection (client)", - "author" : [ - "Gisle Aas <gisle@activestate.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.57_05, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Net-HTTP", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "recommends" : { - "IO::Socket::SSL" : "1.38" - }, - "requires" : { - "Compress::Raw::Zlib" : 0, - "IO::Compress::Gzip" : 0, - "IO::Select" : 0, - "IO::Socket::INET" : 0, - "perl" : "5.008008" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/gisle/libwww-perl/tree/Net-HTTP/master" - }, - "x_MailingList" : "mailto:libwww@perl.org" - }, - "version" : "6.02" - }, - "name" : "Net::HTTP", - "pathname" : "G/GA/GAAS/Net-HTTP-6.02.tar.gz", - "provides" : { - "Net::HTTP" : { - "file" : "Net/HTTP.pm", - "version" : "6.02" - }, - "Net::HTTP::Methods" : { - "file" : "Net/HTTP/Methods.pm", - "version" : "6.00" - }, - "Net::HTTP::NB" : { - "file" : "Net/HTTP/NB.pm", - "version" : "6.00" - }, - "Net::HTTPS" : { - "file" : "Net/HTTPS.pm", - "version" : "6.02" - } - }, - "target" : "Net::HTTP", - "version" : "6.02" - }, - "Number::Compare" : { - "dist" : "Number-Compare-0.03", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.57_05, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Number-Compare", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.03" - }, - "name" : "Number::Compare", - "pathname" : "R/RC/RCLAMP/Number-Compare-0.03.tar.gz", - "provides" : { - "Number::Compare" : { - "file" : "Number/Compare.pm", - "version" : "0.03" - } - }, - "target" : "Number::Compare", - "version" : "0.03" - }, - "Object::Signature" : { - "dist" : "Object-Signature-1.05", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "Adam Kennedy <adamk@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.64, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Object-Signature", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Digest::MD5" : "2.00", - "Storable" : "2.11", - "Test::More" : "0.47" - } - } - }, - "release_status" : "stable", - "version" : "1.05" - }, - "name" : "Object::Signature", - "pathname" : "/authors/id/A/AD/ADAMK/Object-Signature-1.05.tar.gz", - "provides" : { - "Object::Signature" : { - "file" : "Object/Signature.pm", - "version" : "1.05" - } - }, - "target" : "Object::Signature", - "version" : "1.05" - }, - "PAR::Dist" : { - "dist" : "PAR-Dist-0.48", - "module" : "PAR::Dist", - "mymeta" : { - "abstract" : "Create and manipulate PAR distributions", - "author" : [ - "Audrey Tang <cpan@audreyt.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.58, CPAN::Meta::Converter version 2.110930, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "PAR-Dist", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "File::Find" : 0, - "File::Path" : 0, - "File::Spec" : 0, - "File::Temp" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.48" - }, - "name" : "PAR::Dist", - "pathname" : "S/SM/SMUELLER/PAR-Dist-0.48.tar.gz", - "provides" : { - "PAR::Dist" : { - "file" : "PAR/Dist.pm", - "version" : "0.48" - } - }, - "version" : "0.48" - }, - "PPI" : { - "dist" : "PPI-1.215", - "mymeta" : { - "abstract" : "Parse, Analyze and Manipulate Perl (without perl)", - "author" : [ - "Adam Kennedy <adamk@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.00, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "PPI", - "no_index" : { - "directory" : [ - "inc", - "t", - "xt" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Class::Inspector" : "1.22", - "ExtUtils::MakeMaker" : "6.42", - "File::Remove" : "1.42", - "Test::More" : "0.86", - "Test::NoWarnings" : "0.084", - "Test::Object" : "0.07", - "Test::SubCalls" : "1.07" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Clone" : "0.30", - "Digest::MD5" : "2.35", - "File::Spec" : "0.84", - "IO::String" : "1.07", - "List::MoreUtils" : "0.16", - "List::Util" : "1.20", - "Params::Util" : "1.00", - "Storable" : "2.17", - "Task::Weaken" : 0, - "perl" : "5.006" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://svn.ali.as/cpan/trunk/PPI" - }, - "x_ChangeLog" : "http://fisheye2.atlassian.com/changelog/cpan/trunk/PPI" - }, - "version" : "1.215", - "x_module_name" : "PPI" - }, - "name" : "PPI", - "pathname" : "/authors/id/A/AD/ADAMK/PPI-1.215.tar.gz", - "provides" : { - "PPI" : { - "file" : "PPI.pm", - "version" : "1.215" - }, - "PPI::Cache" : { - "file" : "PPI/Cache.pm", - "version" : "1.215" - }, - "PPI::Document" : { - "file" : "PPI/Document.pm", - "version" : "1.215" - }, - "PPI::Document::File" : { - "file" : "PPI/Document/File.pm", - "version" : "1.215" - }, - "PPI::Document::Fragment" : { - "file" : "PPI/Document/Fragment.pm", - "version" : "1.215" - }, - "PPI::Document::Normalized" : { - "file" : "PPI/Document/Normalized.pm", - "version" : "1.215" - }, - "PPI::Dumper" : { - "file" : "PPI/Dumper.pm", - "version" : "1.215" - }, - "PPI::Element" : { - "file" : "PPI/Element.pm", - "version" : "1.215" - }, - "PPI::Exception" : { - "file" : "PPI/Exception.pm", - "version" : "1.215" - }, - "PPI::Exception::ParserRejection" : { - "file" : "PPI/Exception/ParserRejection.pm", - "version" : "1.215" - }, - "PPI::Exception::ParserTimeout" : { - "file" : "PPI/Exception/ParserTimeout.pm", - "version" : "1.215" - }, - "PPI::Find" : { - "file" : "PPI/Find.pm", - "version" : "1.215" - }, - "PPI::Lexer" : { - "file" : "PPI/Lexer.pm", - "version" : "1.215" - }, - "PPI::Node" : { - "file" : "PPI/Node.pm", - "version" : "1.215" - }, - "PPI::Normal" : { - "file" : "PPI/Normal.pm", - "version" : "1.215" - }, - "PPI::Normal::Standard" : { - "file" : "PPI/Normal/Standard.pm", - "version" : "1.215" - }, - "PPI::Statement" : { - "file" : "PPI/Statement.pm", - "version" : "1.215" - }, - "PPI::Statement::Break" : { - "file" : "PPI/Statement/Break.pm", - "version" : "1.215" - }, - "PPI::Statement::Compound" : { - "file" : "PPI/Statement/Compound.pm", - "version" : "1.215" - }, - "PPI::Statement::Data" : { - "file" : "PPI/Statement/Data.pm", - "version" : "1.215" - }, - "PPI::Statement::End" : { - "file" : "PPI/Statement/End.pm", - "version" : "1.215" - }, - "PPI::Statement::Expression" : { - "file" : "PPI/Statement/Expression.pm", - "version" : "1.215" - }, - "PPI::Statement::Given" : { - "file" : "PPI/Statement/Given.pm", - "version" : "1.215" - }, - "PPI::Statement::Include" : { - "file" : "PPI/Statement/Include.pm", - "version" : "1.215" - }, - "PPI::Statement::Include::Perl6" : { - "file" : "PPI/Statement/Include/Perl6.pm", - "version" : "1.215" - }, - "PPI::Statement::Null" : { - "file" : "PPI/Statement/Null.pm", - "version" : "1.215" - }, - "PPI::Statement::Package" : { - "file" : "PPI/Statement/Package.pm", - "version" : "1.215" - }, - "PPI::Statement::Scheduled" : { - "file" : "PPI/Statement/Scheduled.pm", - "version" : "1.215" - }, - "PPI::Statement::Sub" : { - "file" : "PPI/Statement/Sub.pm", - "version" : "1.215" - }, - "PPI::Statement::Unknown" : { - "file" : "PPI/Statement/Unknown.pm", - "version" : "1.215" - }, - "PPI::Statement::UnmatchedBrace" : { - "file" : "PPI/Statement/UnmatchedBrace.pm", - "version" : "1.215" - }, - "PPI::Statement::Variable" : { - "file" : "PPI/Statement/Variable.pm", - "version" : "1.215" - }, - "PPI::Statement::When" : { - "file" : "PPI/Statement/When.pm", - "version" : "1.215" - }, - "PPI::Structure" : { - "file" : "PPI/Structure.pm", - "version" : "1.215" - }, - "PPI::Structure::Block" : { - "file" : "PPI/Structure/Block.pm", - "version" : "1.215" - }, - "PPI::Structure::Condition" : { - "file" : "PPI/Structure/Condition.pm", - "version" : "1.215" - }, - "PPI::Structure::Constructor" : { - "file" : "PPI/Structure/Constructor.pm", - "version" : "1.215" - }, - "PPI::Structure::For" : { - "file" : "PPI/Structure/For.pm", - "version" : "1.215" - }, - "PPI::Structure::Given" : { - "file" : "PPI/Structure/Given.pm", - "version" : "1.215" - }, - "PPI::Structure::List" : { - "file" : "PPI/Structure/List.pm", - "version" : "1.215" - }, - "PPI::Structure::Subscript" : { - "file" : "PPI/Structure/Subscript.pm", - "version" : "1.215" - }, - "PPI::Structure::Unknown" : { - "file" : "PPI/Structure/Unknown.pm", - "version" : "1.215" - }, - "PPI::Structure::When" : { - "file" : "PPI/Structure/When.pm", - "version" : "1.215" - }, - "PPI::Token" : { - "file" : "PPI/Token.pm", - "version" : "1.215" - }, - "PPI::Token::ArrayIndex" : { - "file" : "PPI/Token/ArrayIndex.pm", - "version" : "1.215" - }, - "PPI::Token::Attribute" : { - "file" : "PPI/Token/Attribute.pm", - "version" : "1.215" - }, - "PPI::Token::BOM" : { - "file" : "PPI/Token/BOM.pm", - "version" : "1.215" - }, - "PPI::Token::Cast" : { - "file" : "PPI/Token/Cast.pm", - "version" : "1.215" - }, - "PPI::Token::Comment" : { - "file" : "PPI/Token/Comment.pm", - "version" : "1.215" - }, - "PPI::Token::DashedWord" : { - "file" : "PPI/Token/DashedWord.pm", - "version" : "1.215" - }, - "PPI::Token::Data" : { - "file" : "PPI/Token/Data.pm", - "version" : "1.215" - }, - "PPI::Token::End" : { - "file" : "PPI/Token/End.pm", - "version" : "1.215" - }, - "PPI::Token::HereDoc" : { - "file" : "PPI/Token/HereDoc.pm", - "version" : "1.215" - }, - "PPI::Token::Label" : { - "file" : "PPI/Token/Label.pm", - "version" : "1.215" - }, - "PPI::Token::Magic" : { - "file" : "PPI/Token/Magic.pm", - "version" : "1.215" - }, - "PPI::Token::Number" : { - "file" : "PPI/Token/Number.pm", - "version" : "1.215" - }, - "PPI::Token::Number::Binary" : { - "file" : "PPI/Token/Number/Binary.pm", - "version" : "1.215" - }, - "PPI::Token::Number::Exp" : { - "file" : "PPI/Token/Number/Exp.pm", - "version" : "1.215" - }, - "PPI::Token::Number::Float" : { - "file" : "PPI/Token/Number/Float.pm", - "version" : "1.215" - }, - "PPI::Token::Number::Hex" : { - "file" : "PPI/Token/Number/Hex.pm", - "version" : "1.215" - }, - "PPI::Token::Number::Octal" : { - "file" : "PPI/Token/Number/Octal.pm", - "version" : "1.215" - }, - "PPI::Token::Number::Version" : { - "file" : "PPI/Token/Number/Version.pm", - "version" : "1.215" - }, - "PPI::Token::Operator" : { - "file" : "PPI/Token/Operator.pm", - "version" : "1.215" - }, - "PPI::Token::Pod" : { - "file" : "PPI/Token/Pod.pm", - "version" : "1.215" - }, - "PPI::Token::Prototype" : { - "file" : "PPI/Token/Prototype.pm", - "version" : "1.215" - }, - "PPI::Token::Quote" : { - "file" : "PPI/Token/Quote.pm", - "version" : "1.215" - }, - "PPI::Token::Quote::Double" : { - "file" : "PPI/Token/Quote/Double.pm", - "version" : "1.215" - }, - "PPI::Token::Quote::Interpolate" : { - "file" : "PPI/Token/Quote/Interpolate.pm", - "version" : "1.215" - }, - "PPI::Token::Quote::Literal" : { - "file" : "PPI/Token/Quote/Literal.pm", - "version" : "1.215" - }, - "PPI::Token::Quote::Single" : { - "file" : "PPI/Token/Quote/Single.pm", - "version" : "1.215" - }, - "PPI::Token::QuoteLike" : { - "file" : "PPI/Token/QuoteLike.pm", - "version" : "1.215" - }, - "PPI::Token::QuoteLike::Backtick" : { - "file" : "PPI/Token/QuoteLike/Backtick.pm", - "version" : "1.215" - }, - "PPI::Token::QuoteLike::Command" : { - "file" : "PPI/Token/QuoteLike/Command.pm", - "version" : "1.215" - }, - "PPI::Token::QuoteLike::Readline" : { - "file" : "PPI/Token/QuoteLike/Readline.pm", - "version" : "1.215" - }, - "PPI::Token::QuoteLike::Regexp" : { - "file" : "PPI/Token/QuoteLike/Regexp.pm", - "version" : "1.215" - }, - "PPI::Token::QuoteLike::Words" : { - "file" : "PPI/Token/QuoteLike/Words.pm", - "version" : "1.215" - }, - "PPI::Token::Regexp" : { - "file" : "PPI/Token/Regexp.pm", - "version" : "1.215" - }, - "PPI::Token::Regexp::Match" : { - "file" : "PPI/Token/Regexp/Match.pm", - "version" : "1.215" - }, - "PPI::Token::Regexp::Substitute" : { - "file" : "PPI/Token/Regexp/Substitute.pm", - "version" : "1.215" - }, - "PPI::Token::Regexp::Transliterate" : { - "file" : "PPI/Token/Regexp/Transliterate.pm", - "version" : "1.215" - }, - "PPI::Token::Separator" : { - "file" : "PPI/Token/Separator.pm", - "version" : "1.215" - }, - "PPI::Token::Structure" : { - "file" : "PPI/Token/Structure.pm", - "version" : "1.215" - }, - "PPI::Token::Symbol" : { - "file" : "PPI/Token/Symbol.pm", - "version" : "1.215" - }, - "PPI::Token::Unknown" : { - "file" : "PPI/Token/Unknown.pm", - "version" : "1.215" - }, - "PPI::Token::Whitespace" : { - "file" : "PPI/Token/Whitespace.pm", - "version" : "1.215" - }, - "PPI::Token::Word" : { - "file" : "PPI/Token/Word.pm", - "version" : "1.215" - }, - "PPI::Tokenizer" : { - "file" : "PPI/Tokenizer.pm", - "version" : "1.215" - }, - "PPI::Transform" : { - "file" : "PPI/Transform.pm", - "version" : "1.215" - }, - "PPI::Transform::UpdateCopyright" : { - "file" : "PPI/Transform/UpdateCopyright.pm", - "version" : "1.215" - }, - "PPI::Util" : { - "file" : "PPI/Util.pm", - "version" : "1.215" - }, - "PPI::XSAccessor" : { - "file" : "PPI/XSAccessor.pm", - "version" : "1.215" - } - }, - "target" : "PPI", - "version" : "1.215" - }, - "Package::DeprecationManager" : { - "dist" : "Package-DeprecationManager-0.11", - "mymeta" : { - "abstract" : "Manage deprecation warnings for your distribution", - "author" : [ - "Dave Rolsky <autarch@urth.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.200006, CPAN::Meta::Converter version 2.110930, CPAN::Meta::Converter version 2.112150", - "license" : [ - "artistic_2" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Package-DeprecationManager", - "prereqs" : { - "build" : { - "requires" : { - "Test::Fatal" : 0, - "Test::More" : "0.88", - "Test::Requires" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.30" - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "List::MoreUtils" : 0, - "Params::Util" : 0, - "Sub::Install" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=Package-DeprecationManager" - }, - "repository" : { - "type" : "git", - "url" : "git://git.moose.perl.org/Package-DeprecationManager.git" - } - }, - "version" : "0.11" - }, - "name" : "Package::DeprecationManager", - "pathname" : "D/DR/DROLSKY/Package-DeprecationManager-0.11.tar.gz", - "provides" : { - "Package::DeprecationManager" : { - "file" : "Package/DeprecationManager.pm", - "version" : "0.11" - } - }, - "target" : "Package::DeprecationManager", - "version" : "0.11" - }, - "Package::Stash" : { - "dist" : "Package-Stash-0.33", - "mymeta" : { - "abstract" : "routines for manipulating stashes", - "author" : [ - "Jesse Luehrs <doy at tozt dot net>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.300002, CPAN::Meta::Converter version 2.110440, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Package-Stash", - "prereqs" : { - "build" : { - "requires" : { - "Test::Fatal" : 0, - "Test::More" : "0.88", - "Test::Requires" : 0 - } - }, - "configure" : { - "requires" : { - "Dist::CheckConflicts" : "0.02", - "ExtUtils::MakeMaker" : "6.30" - } - }, - "runtime" : { - "recommends" : { - "Package::Stash::XS" : "0.24" - }, - "requires" : { - "Dist::CheckConflicts" : "0.02", - "Package::DeprecationManager" : 0, - "Package::Stash::XS" : "0.24", - "Scalar::Util" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "type" : "git", - "url" : "git://github.com/doy/package-stash.git" - } - }, - "version" : "0.33", - "x_Dist_Zilla" : { - "plugins" : [ - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "test", - "type" : "requires" - } - }, - "name" : "@DOY/TestMoreDoneTesting", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::GatherDir", - "name" : "@DOY/GatherDir", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::PruneCruft", - "name" : "@DOY/PruneCruft", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::ManifestSkip", - "name" : "@DOY/ManifestSkip", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::MetaYAML", - "name" : "@DOY/MetaYAML", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::License", - "name" : "@DOY/License", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::Readme", - "name" : "@DOY/Readme", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::ExtraTests", - "name" : "@DOY/ExtraTests", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::ExecDir", - "name" : "@DOY/ExecDir", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::ShareDir", - "name" : "@DOY/ShareDir", - "version" : "4.300002" - }, - { - "class" : "inc::MMPackageStash", - "name" : "@DOY/=inc::MMPackageStash", - "version" : null - }, - { - "class" : "Dist::Zilla::Plugin::Manifest", - "name" : "@DOY/Manifest", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::TestRelease", - "name" : "@DOY/TestRelease", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::ConfirmRelease", - "name" : "@DOY/ConfirmRelease", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::MetaConfig", - "name" : "@DOY/MetaConfig", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::MetaJSON", - "name" : "@DOY/MetaJSON", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::NextRelease", - "name" : "@DOY/NextRelease", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::CheckChangesHasContent", - "name" : "@DOY/CheckChangesHasContent", - "version" : "0.003" - }, - { - "class" : "Dist::Zilla::Plugin::PkgVersion", - "name" : "@DOY/PkgVersion", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::PodCoverageTests", - "name" : "@DOY/PodCoverageTests", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::PodSyntaxTests", - "name" : "@DOY/PodSyntaxTests", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::NoTabsTests", - "name" : "@DOY/NoTabsTests", - "version" : "0.01" - }, - { - "class" : "Dist::Zilla::Plugin::EOLTests", - "name" : "@DOY/EOLTests", - "version" : "0.02" - }, - { - "class" : "Dist::Zilla::Plugin::CompileTests", - "name" : "@DOY/CompileTests", - "version" : "1.110930" - }, - { - "class" : "Dist::Zilla::Plugin::Repository", - "name" : "@DOY/Repository", - "version" : "0.18" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Check", - "name" : "@DOY/Git::Check", - "version" : "1.111590" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Tag", - "name" : "@DOY/Git::Tag", - "version" : "1.111590" - }, - { - "class" : "Dist::Zilla::Plugin::Git::NextVersion", - "name" : "@DOY/Git::NextVersion", - "version" : "1.111590" - }, - { - "class" : "Dist::Zilla::Plugin::PodWeaver", - "name" : "@DOY/PodWeaver", - "version" : "3.101641" - }, - { - "class" : "Dist::Zilla::Plugin::UploadToCPAN", - "name" : "@DOY/UploadToCPAN", - "version" : "4.300002" - }, - { - "class" : "inc::DistMeta", - "name" : "=inc::DistMeta", - "version" : null - }, - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "runtime", - "type" : "requires" - } - }, - "name" : "Prereqs", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "runtime", - "type" : "recommends" - } - }, - "name" : "RuntimeRecommends", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "test", - "type" : "requires" - } - }, - "name" : "TestRequires", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "develop", - "type" : "requires" - } - }, - "name" : "DevelopRequires", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::Conflicts", - "name" : "Conflicts", - "version" : "0.08" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":InstallModules", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":IncModules", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":TestFiles", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ExecFiles", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ShareFiles", - "version" : "4.300002" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":MainModule", - "version" : "4.300002" - } - ], - "zilla" : { - "class" : "Dist::Zilla::Dist::Builder", - "config" : { - "is_trial" : "0" - }, - "version" : "4.300002" - } - }, - "x_conflicts" : { - "Class::MOP" : "1.08", - "MooseX::Method::Signatures" : "0.36", - "MooseX::Role::WithOverloading" : "0.08", - "namespace::clean" : "0.18" - } - }, - "name" : "Package::Stash", - "pathname" : "D/DO/DOY/Package-Stash-0.33.tar.gz", - "provides" : { - "Package::Stash" : { - "file" : "Package/Stash.pm", - "version" : "0.33" - }, - "Package::Stash::PP" : { - "file" : "Package/Stash/PP.pm", - "version" : "0.33" - } - }, - "target" : "Package::Stash", - "version" : "0.33" - }, - "Package::Stash::XS" : { - "dist" : "Package-Stash-XS-0.25", - "mymeta" : { - "abstract" : "faster and more correct implementation of the Package::Stash API", - "author" : [ - "Jesse Luehrs <doy at tozt dot net>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.200012, CPAN::Meta::Converter version 2.110440, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Package-Stash-XS", - "prereqs" : { - "build" : { - "requires" : { - "Test::Fatal" : 0, - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.30" - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "type" : "git", - "url" : "git://github.com/doy/package-stash-xs.git" - } - }, - "version" : "0.25", - "x_Dist_Zilla" : { - "plugins" : [ - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "test", - "type" : "requires" - } - }, - "name" : "@DOY/TestMoreDoneTesting", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::GatherDir", - "name" : "@DOY/GatherDir", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::PruneCruft", - "name" : "@DOY/PruneCruft", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::ManifestSkip", - "name" : "@DOY/ManifestSkip", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::MetaYAML", - "name" : "@DOY/MetaYAML", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::License", - "name" : "@DOY/License", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::Readme", - "name" : "@DOY/Readme", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::ExtraTests", - "name" : "@DOY/ExtraTests", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::ExecDir", - "name" : "@DOY/ExecDir", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::ShareDir", - "name" : "@DOY/ShareDir", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::MakeMaker", - "name" : "@DOY/MakeMaker", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::Manifest", - "name" : "@DOY/Manifest", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::TestRelease", - "name" : "@DOY/TestRelease", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::ConfirmRelease", - "name" : "@DOY/ConfirmRelease", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::MetaConfig", - "name" : "@DOY/MetaConfig", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::MetaJSON", - "name" : "@DOY/MetaJSON", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::NextRelease", - "name" : "@DOY/NextRelease", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::CheckChangesHasContent", - "name" : "@DOY/CheckChangesHasContent", - "version" : "0.003" - }, - { - "class" : "Dist::Zilla::Plugin::PkgVersion", - "name" : "@DOY/PkgVersion", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::PodCoverageTests", - "name" : "@DOY/PodCoverageTests", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::PodSyntaxTests", - "name" : "@DOY/PodSyntaxTests", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::NoTabsTests", - "name" : "@DOY/NoTabsTests", - "version" : "0.01" - }, - { - "class" : "Dist::Zilla::Plugin::EOLTests", - "name" : "@DOY/EOLTests", - "version" : "0.02" - }, - { - "class" : "Dist::Zilla::Plugin::CompileTests", - "name" : "@DOY/CompileTests", - "version" : "1.110930" - }, - { - "class" : "Dist::Zilla::Plugin::Repository", - "name" : "@DOY/Repository", - "version" : "0.18" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Check", - "name" : "@DOY/Git::Check", - "version" : "1.111590" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Tag", - "name" : "@DOY/Git::Tag", - "version" : "1.111590" - }, - { - "class" : "Dist::Zilla::Plugin::Git::NextVersion", - "name" : "@DOY/Git::NextVersion", - "version" : "1.111590" - }, - { - "class" : "Dist::Zilla::Plugin::PodWeaver", - "name" : "@DOY/PodWeaver", - "version" : "3.101641" - }, - { - "class" : "Dist::Zilla::Plugin::UploadToCPAN", - "name" : "@DOY/UploadToCPAN", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "runtime", - "type" : "requires" - } - }, - "name" : "Prereqs", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "test", - "type" : "requires" - } - }, - "name" : "TestRequires", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "develop", - "type" : "requires" - } - }, - "name" : "DevelopRequires", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::PruneFiles", - "name" : "PruneFiles", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":InstallModules", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":IncModules", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":TestFiles", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ExecFiles", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ShareFiles", - "version" : "4.200012" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":MainModule", - "version" : "4.200012" - } - ], - "zilla" : { - "class" : "Dist::Zilla::Dist::Builder", - "config" : { - "is_trial" : "0" - }, - "version" : "4.200012" - } - } - }, - "name" : "Package::Stash::XS", - "pathname" : "D/DO/DOY/Package-Stash-XS-0.25.tar.gz", - "provides" : { - "Package::Stash::XS" : { - "file" : "Package/Stash/XS.pm", - "version" : "0.25" - } - }, - "target" : "Package::Stash::XS", - "version" : "0.25" - }, - "PadWalker" : { - "dist" : "PadWalker-1.94", - "module" : "PadWalker", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter version 2.120921, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "PadWalker", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "perl" : "5.008002" - } - } - }, - "release_status" : "stable", - "version" : "1.94" - }, - "name" : "PadWalker", - "pathname" : "R/RO/ROBIN/PadWalker-1.94.tar.gz", - "provides" : { - "PadWalker" : { - "file" : "PadWalker.pm", - "version" : "1.94" - } - }, - "version" : "1.94" - }, - "Parallel::ForkManager" : { - "dist" : "Parallel-ForkManager-0.7.9", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.48, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Parallel-ForkManager", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "0.7.9" - }, - "name" : "Parallel::ForkManager", - "pathname" : "D/DL/DLUX/Parallel-ForkManager-0.7.9.tar.gz", - "provides" : { - "Parallel::ForkManager" : { - "file" : "Parallel/ForkManager.pm", - "version" : "v0.7.9" - } - }, - "target" : "Parallel::ForkManager", - "version" : "v0.7.9" - }, - "Params::Classify" : { - "dist" : "Params-Classify-0.013", - "mymeta" : { - "abstract" : "argument type classification", - "author" : [ - "Andrew Main (Zefram) <zefram@fysh.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Params-Classify", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::ParseXS" : "2.2006", - "Module::Build" : 0, - "Test::More" : 0, - "perl" : "5.006001", - "strict" : 0, - "warnings" : 0 - } - }, - "configure" : { - "requires" : { - "Module::Build" : 0, - "perl" : "5.006001", - "strict" : 0, - "warnings" : 0 - } - }, - "runtime" : { - "recommends" : { - "XSLoader" : 0 - }, - "requires" : { - "Exporter" : 0, - "Scalar::Util" : "1.01", - "parent" : 0, - "perl" : "5.006001", - "strict" : 0, - "warnings" : 0 - } - } - }, - "provides" : { - "Params::Classify" : { - "file" : "lib/Params/Classify.pm", - "version" : "0.013" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.013" - }, - "name" : "Params::Classify", - "pathname" : "Z/ZE/ZEFRAM/Params-Classify-0.013.tar.gz", - "provides" : { - "Params::Classify" : { - "file" : "Params/Classify.pm", - "version" : "0.013" - } - }, - "target" : "Params::Classify", - "version" : "0.013" - }, - "Params::Util" : { - "dist" : "Params-Util-1.03", - "mymeta" : { - "abstract" : "Simple, compact and correct param-checking functions", - "author" : [ - "Adam Kennedy <adamk@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Params-Util", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.52", - "File::Spec" : "0.80", - "Test::More" : "0.42" - } - }, - "configure" : { - "requires" : { - "ExtUtils::CBuilder" : "0.27", - "ExtUtils::MakeMaker" : "6.52" - } - }, - "runtime" : { - "requires" : { - "Scalar::Util" : "1.18", - "perl" : "5.00503" - } - } - }, - "release_status" : "stable", - "version" : "1.03" - }, - "name" : "Params::Util", - "pathname" : "/authors/id/A/AD/ADAMK/Params-Util-1.03.tar.gz", - "provides" : { - "Params::Util" : { - "file" : "Params/Util.pm", - "version" : "1.03" - } - }, - "target" : "Params::Util", - "version" : "1.03" - }, - "Params::Validate" : { - "dist" : "Params-Validate-1.00", - "mymeta" : { - "abstract" : "Validate method/function parameters", - "author" : [ - "Dave Rolsky, <autarch@urth.org> and Ilya Martynov <ilya@martynov.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "artistic_2" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Params-Validate", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::CBuilder" : 0, - "Module::Build" : "0.3601", - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "Module::Build" : "0.3601" - } - }, - "runtime" : { - "requires" : { - "Attribute::Handlers" : "0.79", - "Scalar::Util" : "1.10", - "perl" : "v5.8.1" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=Params-Validate" - }, - "repository" : { - "type" : "git", - "url" : "git://git.urth.org/Params-Validate.git" - } - }, - "version" : "1.00" - }, - "name" : "Params::Validate", - "pathname" : "D/DR/DROLSKY/Params-Validate-1.00.tar.gz", - "provides" : { - "Attribute::Params::Validate" : { - "file" : "Attribute/Params/Validate.pm", - "version" : "1.07" - }, - "Params::Validate" : { - "file" : "Params/Validate.pm", - "version" : "1.00" - } - }, - "target" : "Params::Validate", - "version" : "1.00" - }, - "Path::Class" : { - "dist" : "Path-Class-0.26", - "module" : "Path::Class", - "mymeta" : { - "abstract" : "Cross-platform path specification manipulation", - "author" : [ - "Ken Williams <kwilliams@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Path-Class", - "prereqs" : { - "build" : { - "requires" : { - "Module::Build" : "0.3601", - "Test" : 0, - "Test::More" : 0, - "warnings" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.30", - "Module::Build" : "0.3601" - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Cwd" : 0, - "Exporter" : 0, - "File::Path" : 0, - "File::Spec" : "0.87", - "File::Temp" : 0, - "File::stat" : 0, - "IO::Dir" : 0, - "IO::File" : 0, - "base" : 0, - "overload" : 0, - "strict" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=Path-Class" - }, - "repository" : { - "type" : "git", - "url" : "git://github.com/kenahoo/Path-Class.git" - } - }, - "version" : "0.26" - }, - "name" : "Path::Class", - "pathname" : "K/KW/KWILLIAMS/Path-Class-0.26.tar.gz", - "provides" : { - "Path::Class" : { - "file" : "Path/Class.pm", - "version" : "0.26" - }, - "Path::Class::Dir" : { - "file" : "Path/Class/Dir.pm", - "version" : "0.26" - }, - "Path::Class::Entity" : { - "file" : "Path/Class/Entity.pm", - "version" : "0.26" - }, - "Path::Class::File" : { - "file" : "Path/Class/File.pm", - "version" : "0.26" - } - }, - "version" : "0.26" - }, - "Perl::OSType" : { - "dist" : "Perl-OSType-1.002", - "module" : "Perl::OSType", - "mymeta" : { - "abstract" : "Map Perl operating system names to generic types", - "author" : [ - "David Golden <dagolden@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.102341, CPAN::Meta::Converter version 2.102400, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Perl-OSType", - "no_index" : { - "directory" : [ - "t", - "xt", - "examples", - "corpus" - ], - "package" : [ - "DB" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "File::Find" : 0, - "File::Temp" : 0, - "Test::More" : "0.88", - "constant" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.31" - } - }, - "runtime" : { - "requires" : { - "Exporter" : 0 - } - } - }, - "provides" : { - "Perl::OSType" : { - "file" : "lib/Perl/OSType.pm", - "version" : "1.002" - } - }, - "release_status" : "stable", - "resources" : { - "homepage" : "http://github.com/dagolden/perl-ostype/tree", - "repository" : { - "type" : "git", - "url" : "git://github.com/dagolden/perl-ostype.git" - } - }, - "version" : "1.002" - }, - "name" : "Perl::OSType", - "pathname" : "D/DA/DAGOLDEN/Perl-OSType-1.002.tar.gz", - "provides" : { - "Perl::OSType" : { - "file" : "Perl/OSType.pm", - "version" : "1.002" - } - }, - "version" : "1.002" - }, - "Probe::Perl" : { - "dist" : "Probe-Perl-0.01", - "mymeta" : { - "abstract" : "Information about the currently running perl", - "author" : [ - "Randy W. Sims <randys@thepierianspring.org>", - "Based partly on code from the Module::Build project, by Ken Williams\n<kwilliams@cpan.org> and others." - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Probe-Perl", - "prereqs" : { - "build" : { - "requires" : { - "Test" : 0 - } - }, - "runtime" : { - "requires" : { - "Config" : 0 - } - } - }, - "provides" : { - "Probe::Perl" : { - "file" : "lib/Probe/Perl.pm", - "version" : "0.01" - } - }, - "release_status" : "stable", - "version" : "0.01" - }, - "name" : "Probe::Perl", - "pathname" : "K/KW/KWILLIAMS/Probe-Perl-0.01.tar.gz", - "provides" : { - "Probe::Perl" : { - "file" : "Probe/Perl.pm", - "version" : "0.01" - } - }, - "target" : "Probe::Perl", - "version" : "0.01" - }, - "Readonly" : { - "dist" : "Readonly-1.03", - "mymeta" : { - "abstract" : "Facility for creating read-only scalars, arrays, hashes.", - "author" : [ - "Eric J. Roode <roode@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Readonly", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "1.03" - }, - "name" : "Readonly", - "pathname" : "R/RO/ROODE/Readonly-1.03.tar.gz", - "provides" : { - "Readonly" : { - "file" : "Readonly.pm", - "version" : "1.03" - }, - "Readonly::Array" : { - "file" : "Readonly.pm" - }, - "Readonly::Hash" : { - "file" : "Readonly.pm" - }, - "Readonly::Scalar" : { - "file" : "Readonly.pm" - } - }, - "target" : "Readonly", - "version" : "1.03" - }, - "Regexp::Common" : { - "dist" : "Regexp-Common-2011121001", - "mymeta" : { - "abstract" : "Provide commonly requested regular expressions", - "author" : [ - "Abigail <regexp-common@abigail.be>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "keywords" : [ - "regular expression", - "pattern" - ], - "license" : [ - "mit" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Regexp-Common", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0, - "strict" : 0 - } - }, - "runtime" : { - "requires" : { - "perl" : "5.00473", - "strict" : 0, - "vars" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "type" : "git", - "url" : "git://github.com/Abigail/Regexp--Common.git" - } - }, - "version" : "2011121001", - "x_test_requires" : { - "strict" : "0" - } - }, - "name" : "Regexp::Common", - "pathname" : "A/AB/ABIGAIL/Regexp-Common-2011121001.tar.gz", - "provides" : { - "Regexp::Common" : { - "file" : "Regexp/Common.pm", - "version" : "2011121001" - }, - "Regexp::Common::CC" : { - "file" : "Regexp/Common/CC.pm", - "version" : "2010010201" - }, - "Regexp::Common::Entry" : { - "file" : "Regexp/Common.pm" - }, - "Regexp::Common::SEN" : { - "file" : "Regexp/Common/SEN.pm", - "version" : "2010010201" - }, - "Regexp::Common::URI" : { - "file" : "Regexp/Common/URI.pm", - "version" : "2010010201" - }, - "Regexp::Common::URI::RFC1035" : { - "file" : "Regexp/Common/URI/RFC1035.pm", - "version" : "2010010201" - }, - "Regexp::Common::URI::RFC1738" : { - "file" : "Regexp/Common/URI/RFC1738.pm", - "version" : "2010010201" - }, - "Regexp::Common::URI::RFC1808" : { - "file" : "Regexp/Common/URI/RFC1808.pm", - "version" : "2010010201" - }, - "Regexp::Common::URI::RFC2384" : { - "file" : "Regexp/Common/URI/RFC2384.pm", - "version" : "2010010201" - }, - "Regexp::Common::URI::RFC2396" : { - "file" : "Regexp/Common/URI/RFC2396.pm", - "version" : "2010010201" - }, - "Regexp::Common::URI::RFC2806" : { - "file" : "Regexp/Common/URI/RFC2806.pm", - "version" : "2010010201" - }, - "Regexp::Common::URI::fax" : { - "file" : "Regexp/Common/URI/fax.pm", - "version" : "2010010201" - }, - "Regexp::Common::URI::file" : { - "file" : "Regexp/Common/URI/file.pm", - "version" : "2010010201" - }, - "Regexp::Common::URI::ftp" : { - "file" : "Regexp/Common/URI/ftp.pm", - "version" : "2010010201" - }, - "Regexp::Common::URI::gopher" : { - "file" : "Regexp/Common/URI/gopher.pm", - "version" : "2010010201" - }, - "Regexp::Common::URI::http" : { - "file" : "Regexp/Common/URI/http.pm", - "version" : "2010010201" - }, - "Regexp::Common::URI::news" : { - "file" : "Regexp/Common/URI/news.pm", - "version" : "2010010201" - }, - "Regexp::Common::URI::pop" : { - "file" : "Regexp/Common/URI/pop.pm", - "version" : "2010010201" - }, - "Regexp::Common::URI::prospero" : { - "file" : "Regexp/Common/URI/prospero.pm", - "version" : "2010010201" - }, - "Regexp::Common::URI::tel" : { - "file" : "Regexp/Common/URI/tel.pm", - "version" : "2010010201" - }, - "Regexp::Common::URI::telnet" : { - "file" : "Regexp/Common/URI/telnet.pm", - "version" : "2010010201" - }, - "Regexp::Common::URI::tv" : { - "file" : "Regexp/Common/URI/tv.pm", - "version" : "2010010201" - }, - "Regexp::Common::URI::wais" : { - "file" : "Regexp/Common/URI/wais.pm", - "version" : "2010010201" - }, - "Regexp::Common::balanced" : { - "file" : "Regexp/Common/balanced.pm", - "version" : "2010010201" - }, - "Regexp::Common::comment" : { - "file" : "Regexp/Common/comment.pm", - "version" : "2010010201" - }, - "Regexp::Common::delimited" : { - "file" : "Regexp/Common/delimited.pm", - "version" : "2010010201" - }, - "Regexp::Common::lingua" : { - "file" : "Regexp/Common/lingua.pm", - "version" : "2010010201" - }, - "Regexp::Common::list" : { - "file" : "Regexp/Common/list.pm", - "version" : "2010010201" - }, - "Regexp::Common::net" : { - "file" : "Regexp/Common/net.pm", - "version" : "2010010201" - }, - "Regexp::Common::number" : { - "file" : "Regexp/Common/number.pm", - "version" : "2010010201" - }, - "Regexp::Common::profanity" : { - "file" : "Regexp/Common/profanity.pm", - "version" : "2010010201" - }, - "Regexp::Common::whitespace" : { - "file" : "Regexp/Common/whitespace.pm", - "version" : "2010010201" - }, - "Regexp::Common::zip" : { - "file" : "Regexp/Common/zip.pm", - "version" : "2010010201" - } - }, - "target" : "Regexp::Common", - "version" : "2011121001" - }, - "Return::Value" : { - "dist" : "Return-Value-1.666001", - "mymeta" : { - "abstract" : "Polymorphic Return Values", - "author" : [ - "Casey West <casey@geeknest.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.50, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Return-Value", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::More" : "0.47" - } - } - }, - "release_status" : "stable", - "version" : "1.666001" - }, - "name" : "Return::Value", - "pathname" : "R/RJ/RJBS/Return-Value-1.666001.tar.gz", - "provides" : { - "Return::Value" : { - "file" : "Return/Value.pm", - "version" : "1.666001" - } - }, - "target" : "Return::Value", - "version" : "1.666001" - }, - "SOAP::WSDL" : { - "dist" : "SOAP-WSDL-2.00.10", - "mymeta" : { - "abstract" : "SOAP with WSDL support", - "author" : [ - "Martin Kutter <martin.kutter@fen-net.de>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "artistic_1" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "SOAP-WSDL", - "no_index" : { - "directory" : [ - "lib/SOAP/WSDL/Generator/Template/XSD/" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Class::Std::Fast" : "v0.0.5", - "Cwd" : 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", - "Test::More" : 0, - "XML::Parser::Expat" : 0 - } - }, - "runtime" : { - "requires" : { - "Class::Std::Fast" : "v0.0.5", - "Data::Dumper" : 0, - "Date::Format" : 0, - "Date::Parse" : 0, - "File::Basename" : 0, - "File::Path" : 0, - "Getopt::Long" : 0, - "LWP::UserAgent" : 0, - "List::Util" : 0, - "Template" : "2.18", - "Term::ReadKey" : 0, - "URI" : 0, - "XML::Parser::Expat" : 0, - "perl" : "v5.8.0" - } - } - }, - "provides" : { - "SOAP::WSDL" : { - "file" : "lib/SOAP/WSDL.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Base" : { - "file" : "lib/SOAP/WSDL/Base.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Binding" : { - "file" : "lib/SOAP/WSDL/Binding.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Client" : { - "file" : "lib/SOAP/WSDL/Client.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Client::Base" : { - "file" : "lib/SOAP/WSDL/Client/Base.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Definitions" : { - "file" : "lib/SOAP/WSDL/Definitions.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Deserializer::Hash" : { - "file" : "lib/SOAP/WSDL/Deserializer/Hash.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Deserializer::SOM" : { - "file" : "lib/SOAP/WSDL/Deserializer/SOM.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Deserializer::XSD" : { - "file" : "lib/SOAP/WSDL/Deserializer/XSD.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Expat::Base" : { - "file" : "lib/SOAP/WSDL/Expat/Base.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Expat::Message2Hash" : { - "file" : "lib/SOAP/WSDL/Expat/Message2Hash.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Expat::MessageParser" : { - "file" : "lib/SOAP/WSDL/Expat/MessageParser.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Expat::MessageStreamParser" : { - "file" : "lib/SOAP/WSDL/Expat/MessageStreamParser.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Expat::WSDLParser" : { - "file" : "lib/SOAP/WSDL/Expat/WSDLParser.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Factory::Deserializer" : { - "file" : "lib/SOAP/WSDL/Factory/Deserializer.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Factory::Generator" : { - "file" : "lib/SOAP/WSDL/Factory/Generator.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Factory::Serializer" : { - "file" : "lib/SOAP/WSDL/Factory/Serializer.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Factory::Transport" : { - "file" : "lib/SOAP/WSDL/Factory/Transport.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Generator::Iterator::WSDL11" : { - "file" : "lib/SOAP/WSDL/Generator/Iterator/WSDL11.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Generator::PrefixResolver" : { - "file" : "lib/SOAP/WSDL/Generator/PrefixResolver.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Generator::Template" : { - "file" : "lib/SOAP/WSDL/Generator/Template.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Generator::Template::Plugin::XSD" : { - "file" : "lib/SOAP/WSDL/Generator/Template/Plugin/XSD.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Generator::Template::XSD" : { - "file" : "lib/SOAP/WSDL/Generator/Template/XSD.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Generator::Visitor" : { - "file" : "lib/SOAP/WSDL/Generator/Visitor.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Generator::Visitor::Typemap" : { - "file" : "lib/SOAP/WSDL/Generator/Visitor/Typemap.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Message" : { - "file" : "lib/SOAP/WSDL/Message.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::OpMessage" : { - "file" : "lib/SOAP/WSDL/OpMessage.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Operation" : { - "file" : "lib/SOAP/WSDL/Operation.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Part" : { - "file" : "lib/SOAP/WSDL/Part.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Port" : { - "file" : "lib/SOAP/WSDL/Port.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::PortType" : { - "file" : "lib/SOAP/WSDL/PortType.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::SOAP::Address" : { - "file" : "lib/SOAP/WSDL/SOAP/Address.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::SOAP::Body" : { - "file" : "lib/SOAP/WSDL/SOAP/Body.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::SOAP::Header" : { - "file" : "lib/SOAP/WSDL/SOAP/Header.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::SOAP::HeaderFault" : { - "file" : "lib/SOAP/WSDL/SOAP/HeaderFault.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::SOAP::Operation" : { - "file" : "lib/SOAP/WSDL/SOAP/Operation.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::SOAP::Typelib::Fault" : { - "file" : "lib/SOAP/WSDL/SOAP/Typelib/Fault.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::SOAP::Typelib::Fault11" : { - "file" : "lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::SOAP::Typelib::Fault11Detail" : { - "file" : "lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm", - "version" : 0 - }, - "SOAP::WSDL::Serializer::XSD" : { - "file" : "lib/SOAP/WSDL/Serializer/XSD.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Server" : { - "file" : "lib/SOAP/WSDL/Server.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Server::CGI" : { - "file" : "lib/SOAP/WSDL/Server/CGI.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Server::Mod_Perl2" : { - "file" : "lib/SOAP/WSDL/Server/Mod_Perl2.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Server::Simple" : { - "file" : "lib/SOAP/WSDL/Server/Simple.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Service" : { - "file" : "lib/SOAP/WSDL/Service.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Transport::HTTP" : { - "file" : "lib/SOAP/WSDL/Transport/HTTP.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Transport::Loopback" : { - "file" : "lib/SOAP/WSDL/Transport/Loopback.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Transport::Test" : { - "file" : "lib/SOAP/WSDL/Transport/Test.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::TypeLookup" : { - "file" : "lib/SOAP/WSDL/TypeLookup.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Types" : { - "file" : "lib/SOAP/WSDL/Types.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Annotation" : { - "file" : "lib/SOAP/WSDL/XSD/Annotation.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Attribute" : { - "file" : "lib/SOAP/WSDL/XSD/Attribute.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::AttributeGroup" : { - "file" : "lib/SOAP/WSDL/XSD/AttributeGroup.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Builtin" : { - "file" : "lib/SOAP/WSDL/XSD/Builtin.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::ComplexType" : { - "file" : "lib/SOAP/WSDL/XSD/ComplexType.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Element" : { - "file" : "lib/SOAP/WSDL/XSD/Element.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Enumeration" : { - "file" : "lib/SOAP/WSDL/XSD/Enumeration.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::FractionDigits" : { - "file" : "lib/SOAP/WSDL/XSD/FractionDigits.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Group" : { - "file" : "lib/SOAP/WSDL/XSD/Group.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Length" : { - "file" : "lib/SOAP/WSDL/XSD/Length.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::MaxExclusive" : { - "file" : "lib/SOAP/WSDL/XSD/MaxExclusive.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::MaxInclusive" : { - "file" : "lib/SOAP/WSDL/XSD/MaxInclusive.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::MaxLength" : { - "file" : "lib/SOAP/WSDL/XSD/MaxLength.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::MinExclusive" : { - "file" : "lib/SOAP/WSDL/XSD/MinExclusive.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::MinInclusive" : { - "file" : "lib/SOAP/WSDL/XSD/MinInclusive.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::MinLength" : { - "file" : "lib/SOAP/WSDL/XSD/MinLength.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Pattern" : { - "file" : "lib/SOAP/WSDL/XSD/Pattern.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Schema" : { - "file" : "lib/SOAP/WSDL/XSD/Schema.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Schema::Builtin" : { - "file" : "lib/SOAP/WSDL/XSD/Schema/Builtin.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::SimpleType" : { - "file" : "lib/SOAP/WSDL/XSD/SimpleType.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::TotalDigits" : { - "file" : "lib/SOAP/WSDL/XSD/TotalDigits.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::Attribute" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Attribute.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::AttributeSet" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/AttributeSet.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::Builtin" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::ENTITY" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/ENTITY.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::ID" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/ID.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::IDREF" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/IDREF.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::IDREFS" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/IDREFS.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::NCName" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/NCName.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::NMTOKEN" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/NMTOKEN.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::NMTOKENS" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/NMTOKENS.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::NOTATION" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/NOTATION.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::Name" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/Name.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::QName" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/QName.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/anySimpleType.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::anyType" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/anyType.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::anyURI" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/anyURI.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::base64Binary" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/base64Binary.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::boolean" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/boolean.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::byte" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/byte.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::date" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/date.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::dateTime" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/dateTime.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::decimal" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/decimal.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::double" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/double.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::duration" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/duration.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::float" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/float.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::gDay" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/gDay.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::gMonth" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/gMonth.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::gMonthDay" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/gMonthDay.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::gYear" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/gYear.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::gYearMonth" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/gYearMonth.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::hexBinary" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/hexBinary.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::int" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/int.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::integer" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/integer.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::language" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/language.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::list" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/list.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::long" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/long.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::negativeInteger" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/negativeInteger.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::nonNegativeInteger" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/nonNegativeInteger.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::nonPositiveInteger" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/nonPositiveInteger.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::normalizedString" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/normalizedString.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::positiveInteger" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/positiveInteger.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::short" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/short.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::string" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/string.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::time" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/time.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::token" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/token.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::unsignedByte" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedByte.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::unsignedInt" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedInt.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::unsignedLong" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedLong.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::Builtin::unsignedShort" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedShort.pm", - "version" : 0 - }, - "SOAP::WSDL::XSD::Typelib::ComplexType" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::Element" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/Element.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::SimpleType" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::SimpleType::restriction" : { - "file" : "lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::WhiteSpace" : { - "file" : "lib/SOAP/WSDL/XSD/WhiteSpace.pm", - "version" : "v2.0.10" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://opensource.org/licenses/artistic-license.php" - ] - }, - "version" : "2.00.10" - }, - "name" : "SOAP::WSDL", - "pathname" : "M/MK/MKUTTER/SOAP-WSDL-2.00.10.tar.gz", - "provides" : { - "SOAP::WSDL" : { - "file" : "SOAP/WSDL.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Base" : { - "file" : "SOAP/WSDL/Base.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Binding" : { - "file" : "SOAP/WSDL/Binding.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Client" : { - "file" : "SOAP/WSDL/Client.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Client::Base" : { - "file" : "SOAP/WSDL/Client/Base.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Definitions" : { - "file" : "SOAP/WSDL/Definitions.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Deserializer::Hash" : { - "file" : "SOAP/WSDL/Deserializer/Hash.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Deserializer::SOM" : { - "file" : "SOAP/WSDL/Deserializer/SOM.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Deserializer::XSD" : { - "file" : "SOAP/WSDL/Deserializer/XSD.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Expat::Base" : { - "file" : "SOAP/WSDL/Expat/Base.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Expat::Message2Hash" : { - "file" : "SOAP/WSDL/Expat/Message2Hash.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Expat::MessageParser" : { - "file" : "SOAP/WSDL/Expat/MessageParser.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Expat::MessageStreamParser" : { - "file" : "SOAP/WSDL/Expat/MessageStreamParser.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Expat::WSDLParser" : { - "file" : "SOAP/WSDL/Expat/WSDLParser.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Factory::Deserializer" : { - "file" : "SOAP/WSDL/Factory/Deserializer.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Factory::Generator" : { - "file" : "SOAP/WSDL/Factory/Generator.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Factory::Serializer" : { - "file" : "SOAP/WSDL/Factory/Serializer.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Factory::Transport" : { - "file" : "SOAP/WSDL/Factory/Transport.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Generator::Iterator::WSDL11" : { - "file" : "SOAP/WSDL/Generator/Iterator/WSDL11.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Generator::PrefixResolver" : { - "file" : "SOAP/WSDL/Generator/PrefixResolver.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Generator::Template" : { - "file" : "SOAP/WSDL/Generator/Template.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Generator::Template::Plugin::XSD" : { - "file" : "SOAP/WSDL/Generator/Template/Plugin/XSD.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Generator::Template::XSD" : { - "file" : "SOAP/WSDL/Generator/Template/XSD.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Generator::Visitor" : { - "file" : "SOAP/WSDL/Generator/Visitor.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Generator::Visitor::Typemap" : { - "file" : "SOAP/WSDL/Generator/Visitor/Typemap.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Message" : { - "file" : "SOAP/WSDL/Message.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::OpMessage" : { - "file" : "SOAP/WSDL/OpMessage.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Operation" : { - "file" : "SOAP/WSDL/Operation.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Part" : { - "file" : "SOAP/WSDL/Part.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Port" : { - "file" : "SOAP/WSDL/Port.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::PortType" : { - "file" : "SOAP/WSDL/PortType.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::SOAP::Address" : { - "file" : "SOAP/WSDL/SOAP/Address.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::SOAP::Body" : { - "file" : "SOAP/WSDL/SOAP/Body.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::SOAP::Header" : { - "file" : "SOAP/WSDL/SOAP/Header.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::SOAP::HeaderFault" : { - "file" : "SOAP/WSDL/SOAP/HeaderFault.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::SOAP::Operation" : { - "file" : "SOAP/WSDL/SOAP/Operation.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::SOAP::Typelib::Fault" : { - "file" : "SOAP/WSDL/SOAP/Typelib/Fault.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::SOAP::Typelib::Fault11" : { - "file" : "SOAP/WSDL/SOAP/Typelib/Fault11.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::SOAP::Typelib::Fault11Detail" : { - "file" : "SOAP/WSDL/SOAP/Typelib/Fault11.pm" - }, - "SOAP::WSDL::Serializer::XSD" : { - "file" : "SOAP/WSDL/Serializer/XSD.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Server" : { - "file" : "SOAP/WSDL/Server.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Server::CGI" : { - "file" : "SOAP/WSDL/Server/CGI.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Server::Mod_Perl2" : { - "file" : "SOAP/WSDL/Server/Mod_Perl2.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Server::Simple" : { - "file" : "SOAP/WSDL/Server/Simple.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Service" : { - "file" : "SOAP/WSDL/Service.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Transport::HTTP" : { - "file" : "SOAP/WSDL/Transport/HTTP.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Transport::Loopback" : { - "file" : "SOAP/WSDL/Transport/Loopback.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Transport::Test" : { - "file" : "SOAP/WSDL/Transport/Test.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::TypeLookup" : { - "file" : "SOAP/WSDL/TypeLookup.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::Types" : { - "file" : "SOAP/WSDL/Types.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Annotation" : { - "file" : "SOAP/WSDL/XSD/Annotation.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Attribute" : { - "file" : "SOAP/WSDL/XSD/Attribute.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::AttributeGroup" : { - "file" : "SOAP/WSDL/XSD/AttributeGroup.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Builtin" : { - "file" : "SOAP/WSDL/XSD/Builtin.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::ComplexType" : { - "file" : "SOAP/WSDL/XSD/ComplexType.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Element" : { - "file" : "SOAP/WSDL/XSD/Element.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Enumeration" : { - "file" : "SOAP/WSDL/XSD/Enumeration.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::FractionDigits" : { - "file" : "SOAP/WSDL/XSD/FractionDigits.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Group" : { - "file" : "SOAP/WSDL/XSD/Group.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Length" : { - "file" : "SOAP/WSDL/XSD/Length.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::MaxExclusive" : { - "file" : "SOAP/WSDL/XSD/MaxExclusive.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::MaxInclusive" : { - "file" : "SOAP/WSDL/XSD/MaxInclusive.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::MaxLength" : { - "file" : "SOAP/WSDL/XSD/MaxLength.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::MinExclusive" : { - "file" : "SOAP/WSDL/XSD/MinExclusive.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::MinInclusive" : { - "file" : "SOAP/WSDL/XSD/MinInclusive.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::MinLength" : { - "file" : "SOAP/WSDL/XSD/MinLength.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Pattern" : { - "file" : "SOAP/WSDL/XSD/Pattern.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Schema" : { - "file" : "SOAP/WSDL/XSD/Schema.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Schema::Builtin" : { - "file" : "SOAP/WSDL/XSD/Schema/Builtin.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::SimpleType" : { - "file" : "SOAP/WSDL/XSD/SimpleType.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::TotalDigits" : { - "file" : "SOAP/WSDL/XSD/TotalDigits.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::Attribute" : { - "file" : "SOAP/WSDL/XSD/Typelib/Attribute.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::AttributeSet" : { - "file" : "SOAP/WSDL/XSD/Typelib/AttributeSet.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::Builtin" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::ENTITY" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/ENTITY.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::ID" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/ID.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::IDREF" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/IDREF.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::IDREFS" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/IDREFS.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::NCName" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/NCName.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::NMTOKEN" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/NMTOKEN.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::NMTOKENS" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/NMTOKENS.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::NOTATION" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/NOTATION.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::Name" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/Name.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::QName" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/QName.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/anySimpleType.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::anyType" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/anyType.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::anyURI" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/anyURI.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::base64Binary" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/base64Binary.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::boolean" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/boolean.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::byte" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/byte.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::date" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/date.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::dateTime" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/dateTime.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::decimal" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/decimal.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::double" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/double.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::duration" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/duration.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::float" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/float.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::gDay" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/gDay.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::gMonth" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/gMonth.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::gMonthDay" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/gMonthDay.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::gYear" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/gYear.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::gYearMonth" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/gYearMonth.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::hexBinary" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/hexBinary.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::int" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/int.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::integer" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/integer.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::language" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/language.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::list" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/list.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::long" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/long.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::negativeInteger" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/negativeInteger.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::nonNegativeInteger" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/nonNegativeInteger.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::nonPositiveInteger" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/nonPositiveInteger.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::normalizedString" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/normalizedString.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::positiveInteger" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/positiveInteger.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::short" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/short.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::string" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/string.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::time" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/time.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::token" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/token.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::unsignedByte" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/unsignedByte.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::unsignedInt" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/unsignedInt.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::unsignedLong" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/unsignedLong.pm" - }, - "SOAP::WSDL::XSD::Typelib::Builtin::unsignedShort" : { - "file" : "SOAP/WSDL/XSD/Typelib/Builtin/unsignedShort.pm" - }, - "SOAP::WSDL::XSD::Typelib::ComplexType" : { - "file" : "SOAP/WSDL/XSD/Typelib/ComplexType.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::Element" : { - "file" : "SOAP/WSDL/XSD/Typelib/Element.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::SimpleType" : { - "file" : "SOAP/WSDL/XSD/Typelib/SimpleType.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::Typelib::SimpleType::restriction" : { - "file" : "SOAP/WSDL/XSD/Typelib/SimpleType.pm", - "version" : "v2.0.10" - }, - "SOAP::WSDL::XSD::WhiteSpace" : { - "file" : "SOAP/WSDL/XSD/WhiteSpace.pm", - "version" : "v2.0.10" - } - }, - "target" : "SOAP::WSDL", - "version" : "v2.0.10" - }, - "SQL::Abstract" : { - "dist" : "SQL-Abstract-1.72", - "mymeta" : { - "abstract" : "Generate SQL from Perl data structures", - "author" : [ - "Nathan Wiger <nate@wiger.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.00, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "SQL-Abstract", - "no_index" : { - "directory" : [ - "examples", - "inc", - "t" - ], - "package" : [ - "DBIx::Class::Storage::Debug::PrettyPrint" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Storable" : 0, - "Test::Deep" : "0.106", - "Test::Exception" : 0, - "Test::More" : "0.92", - "Test::Warn" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Class::Accessor::Grouped" : "0.10002", - "Getopt::Long::Descriptive" : "0.086", - "Hash::Merge" : "0.12", - "List::Util" : 0, - "Scalar::Util" : 0, - "Storable" : 0, - "Test::Deep" : "0.106", - "Test::Exception" : 0, - "Test::More" : "0.92", - "Test::Warn" : 0, - "perl" : "5.006002" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=SQL-Abstract" - }, - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://git.shadowcat.co.uk/dbsrgits/SQL-Abstract.git" - } - }, - "version" : "1.72" - }, - "name" : "SQL::Abstract", - "pathname" : "F/FR/FREW/SQL-Abstract-1.72.tar.gz", - "provides" : { - "DBIx::Class::Storage::Debug::PrettyPrint" : { - "file" : "DBIx/Class/Storage/Debug/PrettyPrint.pm" - }, - "SQL::Abstract" : { - "file" : "SQL/Abstract.pm", - "version" : "1.72" - }, - "SQL::Abstract::Test" : { - "file" : "SQL/Abstract/Test.pm" - }, - "SQL::Abstract::Tree" : { - "file" : "SQL/Abstract/Tree.pm" - } - }, - "target" : "SQL::Abstract", - "version" : "1.72" - }, - "Scope::Guard" : { - "dist" : "Scope-Guard-0.20", - "mymeta" : { - "abstract" : "lexically-scoped resource management", - "author" : [ - "chocolateboy <chocolate@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Scope-Guard", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "perl" : "5.006001" - } - } - }, - "release_status" : "stable", - "version" : "0.20" - }, - "name" : "Scope::Guard", - "pathname" : "/authors/id/C/CH/CHOCOLATE/Scope-Guard-0.20.tar.gz", - "provides" : { - "Scope::Guard" : { - "file" : "Scope/Guard.pm", - "version" : "0.20" - } - }, - "target" : "Scope::Guard", - "version" : "0.20" - }, - "Sort::Key" : { - "dist" : "Sort-Key-1.28", - "mymeta" : { - "abstract" : "the fastest way to sort anything in Perl", - "author" : [ - "Salvador Fandino <sfandino@yahoo.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.32, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Sort-Key", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::More" : "0.54" - } - } - }, - "release_status" : "stable", - "version" : "1.28" - }, - "name" : "Sort::Key", - "pathname" : "S/SA/SALVA/Sort-Key-1.28.tar.gz", - "provides" : { - "Sort::Key" : { - "file" : "Sort/Key.pm", - "version" : "1.28" - }, - "Sort::Key::Maker" : { - "file" : "Sort/Key/Maker.pm", - "version" : "0.02" - }, - "Sort::Key::Multi" : { - "file" : "Sort/Key/Multi.pm", - "version" : "1.25" - }, - "Sort::Key::Natural" : { - "file" : "Sort/Key/Natural.pm", - "version" : "0.03" - }, - "Sort::Key::Register" : { - "file" : "Sort/Key/Register.pm", - "version" : "0.14" - } - }, - "target" : "Sort::Key", - "version" : "1.28" - }, - "Spiffy" : { - "dist" : "Spiffy-0.30", - "mymeta" : { - "abstract" : "Spiffy Perl Interface Framework For You", - "author" : [ - "Ingy döt Net <ingy@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.54, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Spiffy", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Filter::Util::Call" : 0, - "Scalar::Util" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.25" - }, - "name" : "Spiffy", - "pathname" : "I/IN/INGY/Spiffy-0.30.tar.gz", - "provides" : { - "Spiffy" : { - "file" : "Spiffy.pm", - "version" : "0.30" - } - }, - "target" : "Spiffy", - "version" : "0.30" - }, - "Statistics::Distributions" : { - "dist" : "Statistics-Distributions-1.02", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Statistics-Distributions", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "1.02" - }, - "name" : "Statistics::Distributions", - "pathname" : "M/MI/MIKEK/Statistics-Distributions-1.02.tar.gz", - "provides" : { - "Statistics::Distributions" : { - "file" : "Statistics/Distributions.pm", - "version" : "1.02" - } - }, - "target" : "Statistics::Distributions", - "version" : "1.02" - }, - "String::CRC32" : { - "dist" : "String-CRC32-1.4", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "String-CRC32", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "1.4" - }, - "name" : "String::CRC32", - "pathname" : "S/SO/SOENKE/String-CRC32-1.4.tar.gz", - "provides" : { - "String::CRC32" : { - "file" : "String/CRC32.pm", - "version" : "1.4" - } - }, - "target" : "String::CRC32", - "version" : "1.4" - }, - "String::CamelCase" : { - "dist" : "String-CamelCase-0.02", - "mymeta" : { - "abstract" : "camelcase, de-camelcase", - "author" : [ - "YAMASHINA Hio <hio@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MY_Metafile version 0.09, EUMM-6.17., CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "String-CamelCase", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.02", - "x_installdirs" : "site", - "x_version_from" : "lib/String/CamelCase.pm" - }, - "name" : "String::CamelCase", - "pathname" : "H/HI/HIO/String-CamelCase-0.02.tar.gz", - "provides" : { - "String::CamelCase" : { - "file" : "String/CamelCase.pm", - "version" : "0.02" - } - }, - "target" : "String::CamelCase", - "version" : "0.02" - }, - "String::RewritePrefix" : { - "dist" : "String-RewritePrefix-0.006", - "mymeta" : { - "abstract" : "rewrite strings based on a set of known prefixes", - "author" : [ - "Ricardo Signes <rjbs@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.102342, CPAN::Meta::Converter version 2.102400, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "String-RewritePrefix", - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : "0.96" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.31" - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Sub::Exporter" : "0.972" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "type" : "git", - "url" : "git://git.codesimply.com/String-RewritePrefix.git" - } - }, - "version" : "0.006", - "x_Dist_Zilla" : { - "plugins" : [ - { - "class" : "Dist::Zilla::Plugin::GatherDir", - "name" : "@RJBS/@Basic/GatherDir", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::PruneCruft", - "name" : "@RJBS/@Basic/PruneCruft", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::ManifestSkip", - "name" : "@RJBS/@Basic/ManifestSkip", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::MetaYAML", - "name" : "@RJBS/@Basic/MetaYAML", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::License", - "name" : "@RJBS/@Basic/License", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::Readme", - "name" : "@RJBS/@Basic/Readme", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::ExtraTests", - "name" : "@RJBS/@Basic/ExtraTests", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::ExecDir", - "name" : "@RJBS/@Basic/ExecDir", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::ShareDir", - "name" : "@RJBS/@Basic/ShareDir", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::MakeMaker", - "name" : "@RJBS/@Basic/MakeMaker", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::Manifest", - "name" : "@RJBS/@Basic/Manifest", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::TestRelease", - "name" : "@RJBS/@Basic/TestRelease", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::ConfirmRelease", - "name" : "@RJBS/@Basic/ConfirmRelease", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::UploadToCPAN", - "name" : "@RJBS/@Basic/UploadToCPAN", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::AutoPrereqs", - "name" : "@RJBS/AutoPrereqs", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::Git::NextVersion", - "name" : "@RJBS/Git::NextVersion", - "version" : "1.102810" - }, - { - "class" : "Dist::Zilla::Plugin::PkgVersion", - "name" : "@RJBS/PkgVersion", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::MetaConfig", - "name" : "@RJBS/MetaConfig", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::MetaJSON", - "name" : "@RJBS/MetaJSON", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::NextRelease", - "name" : "@RJBS/NextRelease", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::PodSyntaxTests", - "name" : "@RJBS/PodSyntaxTests", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::Repository", - "name" : "@RJBS/Repository", - "version" : "0.14" - }, - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "test", - "type" : "requires" - } - }, - "name" : "@RJBS/TestMoreWithSubtests", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::PodWeaver", - "name" : "@RJBS/PodWeaver", - "version" : "3.101641" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Check", - "name" : "@RJBS/@Git/Check", - "version" : "1.102810" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Commit", - "name" : "@RJBS/@Git/Commit", - "version" : "1.102810" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Tag", - "name" : "@RJBS/@Git/Tag", - "version" : "1.102810" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Push", - "name" : "@RJBS/@Git/Push", - "version" : "1.102810" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":InstallModules", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":TestFiles", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ExecFiles", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ShareFiles", - "version" : "4.102342" - } - ], - "zilla" : { - "class" : "Dist::Zilla::Dist::Builder", - "config" : { - "is_trial" : 0 - }, - "version" : "4.102342" - } - } - }, - "name" : "String::RewritePrefix", - "pathname" : "R/RJ/RJBS/String-RewritePrefix-0.006.tar.gz", - "provides" : { - "String::RewritePrefix" : { - "file" : "String/RewritePrefix.pm", - "version" : "0.006" - } - }, - "target" : "String::RewritePrefix", - "version" : "0.006" - }, - "String::ToIdentifier::EN" : { - "dist" : "String-ToIdentifier-EN-0.07", - "mymeta" : { - "abstract" : "Convert Strings to English Program Identifiers", - "author" : [ - "Rafael Kitover, C<< <rkitover@cpan.org> >>", - "Rafael Kitover <rkitover@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.04, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "String-ToIdentifier-EN", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.62", - "Test::More" : "0.92" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.62" - } - }, - "runtime" : { - "requires" : { - "Exporter" : "5.57", - "Lingua::EN::Inflect::Phrase" : "0.07", - "Test::More" : "0.92", - "Text::Unidecode" : "0.04", - "namespace::clean" : "0.20", - "perl" : "5.008001" - } - } - }, - "provides" : { - "String::ToIdentifier::EN" : { - "file" : "lib/String/ToIdentifier/EN.pm", - "version" : "0.07" - }, - "String::ToIdentifier::EN::Unicode" : { - "file" : "lib/String/ToIdentifier/EN/Unicode.pm", - "version" : 0 - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://github.com/rkitover/string-toidentifier-en.git" - } - }, - "version" : "0.07" - }, - "name" : "String::ToIdentifier::EN", - "pathname" : "R/RK/RKITOVER/String-ToIdentifier-EN-0.07.tar.gz", - "provides" : { - "String::ToIdentifier::EN" : { - "file" : "String/ToIdentifier/EN.pm", - "version" : "0.07" - }, - "String::ToIdentifier::EN::Unicode" : { - "file" : "String/ToIdentifier/EN/Unicode.pm" - } - }, - "target" : "String::ToIdentifier::EN", - "version" : "0.07" - }, - "Sub::Exporter" : { - "dist" : "Sub-Exporter-0.982", - "mymeta" : { - "abstract" : "a sophisticated exporter for custom-built routines", - "author" : [ - "Ricardo SIGNES, C<< <rjbs@cpan.org> >>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.77, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Sub-Exporter", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Data::OptList" : "0.1", - "ExtUtils::MakeMaker" : "6.62", - "Params::Util" : "0.14", - "Sub::Install" : "0.92" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://github.com/rjbs/sub-exporter" - } - }, - "version" : "0.982", - "x_module_name" : "Sub::Exporter" - }, - "name" : "Sub::Exporter", - "pathname" : "R/RJ/RJBS/Sub-Exporter-0.982.tar.gz", - "provides" : { - "Sub::Exporter" : { - "file" : "Sub/Exporter.pm", - "version" : "0.982" - }, - "Sub::Exporter::Util" : { - "file" : "Sub/Exporter/Util.pm", - "version" : "0.982" - } - }, - "target" : "Sub::Exporter", - "version" : "0.982" - }, - "Sub::Install" : { - "dist" : "Sub-Install-0.925", - "mymeta" : { - "abstract" : "install subroutines into packages easily", - "author" : [ - "Ricardo Signes <rjbs@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.48, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Sub-Install", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Scalar::Util" : 0, - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "x_Repository" : "http://github.com/rjbs/sub-install" - }, - "version" : "0.925" - }, - "name" : "Sub::Install", - "pathname" : "R/RJ/RJBS/Sub-Install-0.925.tar.gz", - "provides" : { - "Sub::Install" : { - "file" : "Sub/Install.pm", - "version" : "0.925" - } - }, - "target" : "Sub::Install", - "version" : "0.925" - }, - "Sub::Name" : { - "dist" : "Sub-Name-0.05", - "mymeta" : { - "abstract" : "(re)name a sub", - "author" : [ - "Matthijs van Duin <xmath@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Sub-Name", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "0.05" - }, - "name" : "Sub::Name", - "pathname" : "F/FL/FLORA/Sub-Name-0.05.tar.gz", - "provides" : { - "Sub::Name" : { - "file" : "Sub/Name.pm", - "version" : "0.05" - } - }, - "target" : "Sub::Name", - "version" : "0.05" - }, - "Sub::Override" : { - "dist" : "Sub-Override-0.08", - "mymeta" : { - "abstract" : "Perl extension for easily overriding subroutines", - "author" : [ - "Curtis Poe <eop_divo_sitruc@yahoo.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Sub-Override", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Sub::Uplevel" : 0, - "Test::Exception" : "0.21", - "Test::More" : "0.47" - } - } - }, - "release_status" : "stable", - "version" : "0.08" - }, - "name" : "Sub::Override", - "pathname" : "O/OV/OVID/Sub-Override-0.08.tar.gz", - "provides" : { - "Sub::Override" : { - "file" : "Sub/Override.pm", - "version" : "0.08" - } - }, - "target" : "Sub::Override", - "version" : "0.08" - }, - "Sub::Uplevel" : { - "dist" : "Sub-Uplevel-0.22", - "mymeta" : { - "abstract" : "apparently run a function in a higher stack frame", - "author" : [ - "David A. Golden <dagolden@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Sub-Uplevel", - "no_index" : { - "directory" : [ - "examples", - "inc" - ], - "package" : [ - "DB" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Carp" : 0, - "Test::More" : "0.47" - } - }, - "configure" : { - "requires" : { - "Module::Build" : "0.35" - } - }, - "runtime" : { - "requires" : { - "perl" : "5.006" - } - } - }, - "provides" : { - "DB" : { - "file" : "lib/Sub/Uplevel.pm", - "version" : 0 - }, - "Sub::Uplevel" : { - "file" : "lib/Sub/Uplevel.pm", - "version" : "0.22" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://github.com/dagolden/sub-uplevel" - } - }, - "version" : "0.22" - }, - "name" : "Sub::Uplevel", - "pathname" : "D/DA/DAGOLDEN/Sub-Uplevel-0.22.tar.gz", - "provides" : { - "Sub::Uplevel" : { - "file" : "Sub/Uplevel.pm", - "version" : "0.22" - } - }, - "target" : "Sub::Uplevel", - "version" : "0.22" - }, - "Task::Weaken" : { - "dist" : "Task-Weaken-1.04", - "mymeta" : { - "abstract" : "Ensure that a platform has weaken support", - "author" : [ - "Adam Kennedy <adamk@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.00, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Task-Weaken", - "no_index" : { - "directory" : [ - "inc", - "t", - "xt" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "File::Spec" : "0.80", - "Test::More" : "0.42" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Scalar::Util" : "1.14", - "perl" : "5.005" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://svn.ali.as/cpan/trunk/Task-Weaken" - }, - "x_ChangeLog" : "http://fisheye2.atlassian.com/changelog/cpan/trunk/Task-Weaken" - }, - "version" : "1.04", - "x_module_name" : "Task::Weaken" - }, - "name" : "Task::Weaken", - "pathname" : "/authors/id/A/AD/ADAMK/Task-Weaken-1.04.tar.gz", - "provides" : { - "Task::Weaken" : { - "file" : "Task/Weaken.pm", - "version" : "1.04" - } - }, - "target" : "Task::Weaken", - "version" : "1.04" - }, - "Template" : { - "dist" : "Template-Toolkit-2.22", - "mymeta" : { - "abstract" : "comprehensive template processing system", - "author" : [ - "Andy Wardley <abw@wardley.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.48, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Template-Toolkit", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "AppConfig" : "1.56", - "File::Spec" : "0.8", - "File::Temp" : "0.12", - "Scalar::Util" : 0 - } - } - }, - "release_status" : "stable", - "version" : "2.22" - }, - "name" : "Template", - "pathname" : "/authors/id/A/AB/ABW/Template-Toolkit-2.22.tar.gz", - "provides" : { - "Template" : { - "file" : "Template.pm", - "version" : "2.22" - }, - "Template::Base" : { - "file" : "Template/Base.pm", - "version" : "2.78" - }, - "Template::Config" : { - "file" : "Template/Config.pm", - "version" : "2.75" - }, - "Template::Constants" : { - "file" : "Template/Constants.pm", - "version" : "2.75" - }, - "Template::Context" : { - "file" : "Template/Context.pm", - "version" : "2.98" - }, - "Template::Directive" : { - "file" : "Template/Directive.pm", - "version" : "2.2" - }, - "Template::Document" : { - "file" : "Template/Document.pm", - "version" : "2.79" - }, - "Template::Exception" : { - "file" : "Template/Exception.pm", - "version" : "2.7" - }, - "Template::Filters" : { - "file" : "Template/Filters.pm", - "version" : "2.87" - }, - "Template::Grammar" : { - "file" : "Template/Grammar.pm", - "version" : "2.25" - }, - "Template::Iterator" : { - "file" : "Template/Iterator.pm", - "version" : "2.68" - }, - "Template::Monad::Assert" : { - "file" : "Template/Plugin/Assert.pm" - }, - "Template::Monad::Scalar" : { - "file" : "Template/Plugin/Scalar.pm" - }, - "Template::Namespace::Constants" : { - "file" : "Template/Namespace/Constants.pm", - "version" : "1.27" - }, - "Template::Parser" : { - "file" : "Template/Parser.pm", - "version" : "2.89" - }, - "Template::Perl" : { - "file" : "Template/Filters.pm" - }, - "Template::Plugin" : { - "file" : "Template/Plugin.pm", - "version" : "2.7" - }, - "Template::Plugin::Assert" : { - "file" : "Template/Plugin/Assert.pm", - "version" : "1" - }, - "Template::Plugin::CGI" : { - "file" : "Template/Plugin/CGI.pm", - "version" : "2.7" - }, - "Template::Plugin::Datafile" : { - "file" : "Template/Plugin/Datafile.pm", - "version" : "2.72" - }, - "Template::Plugin::Date" : { - "file" : "Template/Plugin/Date.pm", - "version" : "2.78" - }, - "Template::Plugin::Date::Calc" : { - "file" : "Template/Plugin/Date.pm" - }, - "Template::Plugin::Date::Manip" : { - "file" : "Template/Plugin/Date.pm" - }, - "Template::Plugin::Directory" : { - "file" : "Template/Plugin/Directory.pm", - "version" : "2.7" - }, - "Template::Plugin::Dumper" : { - "file" : "Template/Plugin/Dumper.pm", - "version" : "2.7" - }, - "Template::Plugin::File" : { - "file" : "Template/Plugin/File.pm", - "version" : "2.71" - }, - "Template::Plugin::Filter" : { - "file" : "Template/Plugin/Filter.pm", - "version" : "1.38" - }, - "Template::Plugin::Format" : { - "file" : "Template/Plugin/Format.pm", - "version" : "2.7" - }, - "Template::Plugin::HTML" : { - "file" : "Template/Plugin/HTML.pm", - "version" : "2.62" - }, - "Template::Plugin::Image" : { - "file" : "Template/Plugin/Image.pm", - "version" : "1.21" - }, - "Template::Plugin::Iterator" : { - "file" : "Template/Plugin/Iterator.pm", - "version" : "2.68" - }, - "Template::Plugin::Math" : { - "file" : "Template/Plugin/Math.pm", - "version" : "1.16" - }, - "Template::Plugin::Pod" : { - "file" : "Template/Plugin/Pod.pm", - "version" : "2.69" - }, - "Template::Plugin::Procedural" : { - "file" : "Template/Plugin/Procedural.pm", - "version" : "1.17" - }, - "Template::Plugin::Scalar" : { - "file" : "Template/Plugin/Scalar.pm", - "version" : "1" - }, - "Template::Plugin::String" : { - "file" : "Template/Plugin/String.pm", - "version" : "2.4" - }, - "Template::Plugin::Table" : { - "file" : "Template/Plugin/Table.pm", - "version" : "2.71" - }, - "Template::Plugin::URL" : { - "file" : "Template/Plugin/URL.pm", - "version" : "2.74" - }, - "Template::Plugin::View" : { - "file" : "Template/Plugin/View.pm", - "version" : "2.68" - }, - "Template::Plugin::Wrap" : { - "file" : "Template/Plugin/Wrap.pm", - "version" : "2.68" - }, - "Template::Plugins" : { - "file" : "Template/Plugins.pm", - "version" : "2.77" - }, - "Template::Provider" : { - "file" : "Template/Provider.pm", - "version" : "2.94" - }, - "Template::Service" : { - "file" : "Template/Service.pm", - "version" : "2.8" - }, - "Template::Stash" : { - "file" : "Template/Stash.pm", - "version" : "2.91" - }, - "Template::Stash::Context" : { - "file" : "Template/Stash/Context.pm", - "version" : "1.63" - }, - "Template::Stash::XS" : { - "file" : "Template/Stash/XS.pm" - }, - "Template::Test" : { - "file" : "Template/Test.pm", - "version" : "2.75" - }, - "Template::TieString" : { - "file" : "Template/Config.pm" - }, - "Template::VMethods" : { - "file" : "Template/VMethods.pm", - "version" : "2.16" - }, - "Template::View" : { - "file" : "Template/View.pm", - "version" : "2.91" - }, - "bytes" : { - "file" : "Template/Provider.pm" - } - }, - "target" : "Template", - "version" : "2.22" - }, - "Template::Plugin::Comma" : { - "dist" : "Template-Plugin-Comma-0.04", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Template-Plugin-Comma", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Template" : "2.07", - "Test::More" : "0.32" - } - } - }, - "release_status" : "stable", - "version" : "0.04" - }, - "name" : "Template::Plugin::Comma", - "pathname" : "M/MI/MIYAGAWA/Template-Plugin-Comma-0.04.tar.gz", - "provides" : { - "Template::Plugin::Comma" : { - "file" : "Template/Plugin/Comma.pm", - "version" : "0.04" - } - }, - "target" : "Template::Plugin::Comma", - "version" : "0.04" - }, - "Template::Plugin::DateTime::Format" : { - "dist" : "Template-Plugin-DateTime-Format-0.02", - "mymeta" : { - "abstract" : "format DateTime objects from inside TT with C<DateTime::Format>-style formatters", - "author" : [ - "Jonathan Rockway <jrockway@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.102342, CPAN::Meta::Converter version 2.101670, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Template-Plugin-DateTime-Format", - "prereqs" : { - "build" : { - "requires" : { - "Template" : 0, - "Test::Exception" : 0, - "Test::More" : 0, - "ok" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.31" - } - }, - "runtime" : { - "requires" : { - "Class::MOP" : 0, - "DateTime" : 0, - "Template::Plugin" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/jrockway/template-plugin-datetime-format" - } - }, - "version" : "0.02", - "x_Dist_Zilla" : { - "plugins" : [ - { - "class" : "Dist::Zilla::Plugin::BeJROCKWAY", - "name" : "@JROCKWAY/BeJROCKWAY", - "version" : "1.102911" - }, - { - "class" : "Dist::Zilla::Plugin::AutoPrereqs", - "name" : "@JROCKWAY/AutoPrereqs", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::PkgVersion", - "name" : "@JROCKWAY/PkgVersion", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::PodSyntaxTests", - "name" : "@JROCKWAY/PodSyntaxTests", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::PodWeaver", - "name" : "@JROCKWAY/PodWeaver", - "version" : "3.101640" - }, - { - "class" : "Dist::Zilla::Plugin::Repository", - "name" : "@JROCKWAY/Repository", - "version" : "0.13" - }, - { - "class" : "Dist::Zilla::Plugin::GatherDir", - "name" : "@JROCKWAY/GatherDir", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::PruneCruft", - "name" : "@JROCKWAY/PruneCruft", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::ManifestSkip", - "name" : "@JROCKWAY/ManifestSkip", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::MetaConfig", - "name" : "@JROCKWAY/MetaConfig", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::MetaJSON", - "name" : "@JROCKWAY/MetaJSON", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::MetaYAML", - "name" : "@JROCKWAY/MetaYAML", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::License", - "name" : "@JROCKWAY/License", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::Readme", - "name" : "@JROCKWAY/Readme", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::ExtraTests", - "name" : "@JROCKWAY/ExtraTests", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::ExecDir", - "name" : "@JROCKWAY/ExecDir", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::ShareDir", - "name" : "@JROCKWAY/ShareDir", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::MakeMaker", - "name" : "@JROCKWAY/MakeMaker", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::Manifest", - "name" : "@JROCKWAY/Manifest", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::TestRelease", - "name" : "@JROCKWAY/TestRelease", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::ConfirmRelease", - "name" : "@JROCKWAY/ConfirmRelease", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::UploadToCPAN", - "name" : "@JROCKWAY/UploadToCPAN", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::NextRelease", - "name" : "@JROCKWAY/NextRelease", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::Git::NextVersion", - "name" : "@JROCKWAY/Git::NextVersion", - "version" : "1.102810" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Check", - "name" : "@JROCKWAY/@Git/Check", - "version" : "1.102810" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Commit", - "name" : "@JROCKWAY/@Git/Commit", - "version" : "1.102810" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Tag", - "name" : "@JROCKWAY/@Git/Tag", - "version" : "1.102810" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Push", - "name" : "@JROCKWAY/@Git/Push", - "version" : "1.102810" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":InstallModules", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":TestFiles", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ExecFiles", - "version" : "4.102342" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ShareFiles", - "version" : "4.102342" - } - ], - "zilla" : { - "class" : "Dist::Zilla::Dist::Builder", - "config" : { - "is_trial" : 0 - }, - "version" : "4.102342" - } - } - }, - "name" : "Template::Plugin::DateTime::Format", - "pathname" : "J/JR/JROCKWAY/Template-Plugin-DateTime-Format-0.02.tar.gz", - "provides" : { - "Template::Plugin::DateTime::Format" : { - "file" : "Template/Plugin/DateTime/Format.pm", - "version" : "0.02" - } - }, - "target" : "Template::Plugin::DateTime::Format", - "version" : "0.02" - }, - "Template::Timer" : { - "dist" : "Template-Timer-1.00", - "mymeta" : { - "abstract" : "Rudimentary profiling for Template Toolkit", - "author" : [ - "Andy Lester <andy@petdance.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.44, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Template-Timer", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Template" : 0, - "Test::More" : 0, - "Time::HiRes" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "x_Repository" : "http://github.com/petdance/template-timer/" - }, - "version" : "1.00" - }, - "name" : "Template::Timer", - "pathname" : "P/PE/PETDANCE/Template-Timer-1.00.tar.gz", - "provides" : { - "Template::Timer" : { - "file" : "Template/Timer.pm", - "version" : "1.00" - } - }, - "target" : "Template::Timer", - "version" : "1.00" - }, - "Term::ReadKey" : { - "dist" : "TermReadKey-2.30", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "TermReadKey", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "2.30" - }, - "name" : "Term::ReadKey", - "pathname" : "J/JS/JSTOWE/TermReadKey-2.30.tar.gz", - "provides" : { - "Term::ReadKey" : { - "file" : "Term/ReadKey.pm", - "version" : "2.30" - } - }, - "target" : "Term::ReadKey", - "version" : "2.30" - }, - "Test::Base" : { - "dist" : "Test-Base-0.60", - "mymeta" : { - "abstract" : "A Data Driven Testing Framework", - "author" : [ - "Ingy döt Net <ingy@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.00, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Test-Base", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "recommends" : { - "Test::Deep" : 0 - }, - "requires" : { - "Filter::Util::Call" : 0, - "Spiffy" : "0.30", - "Test::More" : "0.62", - "perl" : "5.006001" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.60" - }, - "name" : "Test::Base", - "pathname" : "I/IN/INGY/Test-Base-0.60.tar.gz", - "provides" : { - "Module::Install::TestBase" : { - "file" : "Module/Install/TestBase.pm", - "version" : "0.60" - }, - "Test::Base" : { - "file" : "Test/Base.pm", - "version" : "0.60" - }, - "Test::Base::Block" : { - "file" : "Test/Base.pm" - }, - "Test::Base::Filter" : { - "file" : "Test/Base/Filter.pm" - }, - "Test::Base::Handle" : { - "file" : "Test/Base.pm" - } - }, - "target" : "Test::Base", - "version" : "0.60" - }, - "Test::Deep" : { - "dist" : "Test-Deep-0.108", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "Fergal Daly <fergal@esatclear.ie>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Test-Deep", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "List::Util" : "1.09", - "Scalar::Util" : "1.09", - "Test::More" : 0, - "Test::NoWarnings" : "0.02", - "Test::Tester" : "0.04" - } - } - }, - "release_status" : "stable", - "version" : "0.108" - }, - "name" : "Test::Deep", - "pathname" : "R/RJ/RJBS/Test-Deep-0.108.tar.gz", - "provides" : { - "Test::Deep" : { - "file" : "Test/Deep.pm", - "version" : "0.108" - }, - "Test::Deep::All" : { - "file" : "Test/Deep/All.pm" - }, - "Test::Deep::Any" : { - "file" : "Test/Deep/Any.pm" - }, - "Test::Deep::Array" : { - "file" : "Test/Deep/Array.pm" - }, - "Test::Deep::ArrayEach" : { - "file" : "Test/Deep/ArrayEach.pm" - }, - "Test::Deep::ArrayElementsOnly" : { - "file" : "Test/Deep/ArrayElementsOnly.pm" - }, - "Test::Deep::ArrayLength" : { - "file" : "Test/Deep/ArrayLength.pm" - }, - "Test::Deep::ArrayLengthOnly" : { - "file" : "Test/Deep/ArrayLengthOnly.pm" - }, - "Test::Deep::Blessed" : { - "file" : "Test/Deep/Blessed.pm" - }, - "Test::Deep::Boolean" : { - "file" : "Test/Deep/Boolean.pm" - }, - "Test::Deep::Cache" : { - "file" : "Test/Deep/Cache.pm" - }, - "Test::Deep::Cache::Simple" : { - "file" : "Test/Deep/Cache/Simple.pm" - }, - "Test::Deep::Class" : { - "file" : "Test/Deep/Class.pm" - }, - "Test::Deep::Cmp" : { - "file" : "Test/Deep/Cmp.pm" - }, - "Test::Deep::Code" : { - "file" : "Test/Deep/Code.pm" - }, - "Test::Deep::Hash" : { - "file" : "Test/Deep/Hash.pm" - }, - "Test::Deep::HashEach" : { - "file" : "Test/Deep/HashEach.pm" - }, - "Test::Deep::HashElements" : { - "file" : "Test/Deep/HashElements.pm" - }, - "Test::Deep::HashKeys" : { - "file" : "Test/Deep/HashKeys.pm" - }, - "Test::Deep::HashKeysOnly" : { - "file" : "Test/Deep/HashKeysOnly.pm" - }, - "Test::Deep::Ignore" : { - "file" : "Test/Deep/Ignore.pm" - }, - "Test::Deep::Isa" : { - "file" : "Test/Deep/Isa.pm" - }, - "Test::Deep::ListMethods" : { - "file" : "Test/Deep/ListMethods.pm" - }, - "Test::Deep::MM" : { - "file" : "Test/Deep/MM.pm" - }, - "Test::Deep::Methods" : { - "file" : "Test/Deep/Methods.pm" - }, - "Test::Deep::NoTest" : { - "file" : "Test/Deep/NoTest.pm" - }, - "Test::Deep::Number" : { - "file" : "Test/Deep/Number.pm" - }, - "Test::Deep::Ref" : { - "file" : "Test/Deep/Ref.pm" - }, - "Test::Deep::RefType" : { - "file" : "Test/Deep/RefType.pm" - }, - "Test::Deep::Regexp" : { - "file" : "Test/Deep/Regexp.pm" - }, - "Test::Deep::RegexpMatches" : { - "file" : "Test/Deep/RegexpMatches.pm" - }, - "Test::Deep::RegexpRef" : { - "file" : "Test/Deep/RegexpRef.pm" - }, - "Test::Deep::RegexpRefOnly" : { - "file" : "Test/Deep/RegexpRefOnly.pm" - }, - "Test::Deep::RegexpVersion" : { - "file" : "Test/Deep/RegexpVersion.pm" - }, - "Test::Deep::ScalarRef" : { - "file" : "Test/Deep/ScalarRef.pm" - }, - "Test::Deep::ScalarRefOnly" : { - "file" : "Test/Deep/ScalarRefOnly.pm" - }, - "Test::Deep::Set" : { - "file" : "Test/Deep/Set.pm" - }, - "Test::Deep::Shallow" : { - "file" : "Test/Deep/Shallow.pm" - }, - "Test::Deep::Stack" : { - "file" : "Test/Deep/Stack.pm" - }, - "Test::Deep::String" : { - "file" : "Test/Deep/String.pm" - }, - "Test::Deep::SubHash" : { - "file" : "Test/Deep/Hash.pm" - }, - "Test::Deep::SubHashElements" : { - "file" : "Test/Deep/HashElements.pm" - }, - "Test::Deep::SubHashKeys" : { - "file" : "Test/Deep/HashKeys.pm" - }, - "Test::Deep::SubHashKeysOnly" : { - "file" : "Test/Deep/HashKeysOnly.pm" - }, - "Test::Deep::SuperHash" : { - "file" : "Test/Deep/Hash.pm" - }, - "Test::Deep::SuperHashElements" : { - "file" : "Test/Deep/HashElements.pm" - }, - "Test::Deep::SuperHashKeys" : { - "file" : "Test/Deep/HashKeys.pm" - }, - "Test::Deep::SuperHashKeysOnly" : { - "file" : "Test/Deep/HashKeysOnly.pm" - } - }, - "target" : "Test::Deep", - "version" : "0.108" - }, - "Test::Exception" : { - "dist" : "Test-Exception-0.31", - "module" : "Test::Exception", - "mymeta" : { - "abstract" : "Test exception based code", - "author" : [ - "Adrian Howard <adrianh@quietstars.com>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Test-Exception", - "prereqs" : { - "configure" : { - "requires" : { - "Module::Build" : "0.36" - } - }, - "runtime" : { - "requires" : { - "Sub::Uplevel" : "0.18", - "Test::Builder" : "0.7", - "Test::Builder::Tester" : "1.07", - "Test::Harness" : "2.03", - "Test::More" : "0.7", - "Test::Simple" : "0.7" - } - } - }, - "provides" : { - "Test::Exception" : { - "file" : "lib/Test/Exception.pm", - "version" : "0.31" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.31" - }, - "name" : "Test::Exception", - "pathname" : "A/AD/ADIE/Test-Exception-0.31.tar.gz", - "provides" : { - "Test::Exception" : { - "file" : "Test/Exception.pm", - "version" : "0.31" - } - }, - "version" : "0.31" - }, - "Test::Fatal" : { - "dist" : "Test-Fatal-0.010", - "module" : "Test::Fatal", - "mymeta" : { - "abstract" : "incredibly simple helpers for testing code with exceptions", - "author" : [ - "Ricardo Signes <rjbs@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.300007, CPAN::Meta::Converter version 2.120351, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Test-Fatal", - "prereqs" : { - "build" : { - "requires" : { - "Test::Builder::Tester" : 0, - "Test::More" : "0.47", - "overload" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.30" - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Exporter" : "5.57", - "Test::Builder" : 0, - "Try::Tiny" : "0.07", - "strict" : 0, - "warnings" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "homepage" : "https://github.com/rjbs/test-fatal", - "repository" : { - "url" : "https://github.com/rjbs/test-fatal.git" - } - }, - "version" : "0.010", - "x_Dist_Zilla" : { - "plugins" : [ - { - "class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed", - "name" : "@RJBS/CheckPrereqsIndexed", - "version" : "0.007" - }, - { - "class" : "Dist::Zilla::Plugin::GatherDir", - "name" : "@RJBS/@Basic/GatherDir", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::PruneCruft", - "name" : "@RJBS/@Basic/PruneCruft", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::ManifestSkip", - "name" : "@RJBS/@Basic/ManifestSkip", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::MetaYAML", - "name" : "@RJBS/@Basic/MetaYAML", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::License", - "name" : "@RJBS/@Basic/License", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::Readme", - "name" : "@RJBS/@Basic/Readme", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::ExtraTests", - "name" : "@RJBS/@Basic/ExtraTests", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::ExecDir", - "name" : "@RJBS/@Basic/ExecDir", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::ShareDir", - "name" : "@RJBS/@Basic/ShareDir", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::MakeMaker", - "name" : "@RJBS/@Basic/MakeMaker", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::Manifest", - "name" : "@RJBS/@Basic/Manifest", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::TestRelease", - "name" : "@RJBS/@Basic/TestRelease", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::ConfirmRelease", - "name" : "@RJBS/@Basic/ConfirmRelease", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::UploadToCPAN", - "name" : "@RJBS/@Basic/UploadToCPAN", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::AutoPrereqs", - "name" : "@RJBS/AutoPrereqs", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::Git::NextVersion", - "name" : "@RJBS/Git::NextVersion", - "version" : "1.120370" - }, - { - "class" : "Dist::Zilla::Plugin::PkgVersion", - "name" : "@RJBS/PkgVersion", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::MetaConfig", - "name" : "@RJBS/MetaConfig", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::MetaJSON", - "name" : "@RJBS/MetaJSON", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::NextRelease", - "name" : "@RJBS/NextRelease", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::PodSyntaxTests", - "name" : "@RJBS/PodSyntaxTests", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::Repository", - "name" : "@RJBS/Repository", - "version" : "0.18" - }, - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "test", - "type" : "requires" - } - }, - "name" : "@RJBS/TestMoreWithSubtests", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::PodWeaver", - "name" : "@RJBS/PodWeaver", - "version" : "3.101641" - }, - { - "class" : "Dist::Zilla::Plugin::GithubMeta", - "name" : "@RJBS/GithubMeta", - "version" : "0.28" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Check", - "name" : "@RJBS/@Git/Check", - "version" : "1.120370" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Commit", - "name" : "@RJBS/@Git/Commit", - "version" : "1.120370" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Tag", - "name" : "@RJBS/@Git/Tag", - "version" : "1.120370" - }, - { - "class" : "Dist::Zilla::Plugin::Git::Push", - "name" : "@RJBS/@Git/Push", - "version" : "1.120370" - }, - { - "class" : "Dist::Zilla::Plugin::RemovePrereqs", - "config" : { - "Dist::Zilla::Plugin::RemovePrereqs" : { - "modules_to_remove" : [ - "Test::More" - ] - } - }, - "name" : "RemovePrereqs", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "test", - "type" : "requires" - } - }, - "name" : "TestRequires", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":InstallModules", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":IncModules", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":TestFiles", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ExecFiles", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ShareFiles", - "version" : "4.300007" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":MainModule", - "version" : "4.300007" - } - ], - "zilla" : { - "class" : "Dist::Zilla::Dist::Builder", - "config" : { - "is_trial" : "0" - }, - "version" : "4.300007" - } - } - }, - "name" : "Test::Fatal", - "pathname" : "R/RJ/RJBS/Test-Fatal-0.010.tar.gz", - "provides" : { - "Test::Fatal" : { - "file" : "Test/Fatal.pm", - "version" : "0.010" - } - }, - "version" : "0.010" - }, - "Test::LongString" : { - "dist" : "Test-LongString-0.15", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "Rafael Garcia-Suarez <rgs@consttype.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.55_02, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Test-LongString", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::Builder" : "0.12", - "Test::Builder::Tester" : "1.04" - } - } - }, - "release_status" : "stable", - "version" : "0.15" - }, - "name" : "Test::LongString", - "pathname" : "R/RG/RGARCIA/Test-LongString-0.15.tar.gz", - "provides" : { - "Test::LongString" : { - "file" : "Test/LongString.pm", - "version" : "0.15" - } - }, - "target" : "Test::LongString", - "version" : "0.15" - }, - "Test::Manifest" : { - "dist" : "Test-Manifest-1.23", - "mymeta" : { - "abstract" : "interact with a t/test_manifest file", - "author" : [ - "brian d foy <bdfoy@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.50, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Test-Manifest", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.03", - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "version" : "1.23" - }, - "name" : "Test::Manifest", - "pathname" : "B/BD/BDFOY/Test-Manifest-1.23.tar.gz", - "provides" : { - "Test::Manifest" : { - "file" : "Test/Manifest.pm", - "version" : "1.23" - } - }, - "target" : "Test::Manifest", - "version" : "1.23" - }, - "Test::MockObject" : { - "dist" : "Test-MockObject-1.20120301", - "module" : "Test::MockObject", - "mymeta" : { - "abstract" : "Perl extension for emulating troublesome interfaces", - "author" : [ - "chromatic" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.300009, CPAN::Meta::Converter version 2.120530, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Test-MockObject", - "prereqs" : { - "build" : { - "requires" : { - "Test::Exception" : 0, - "Test::More" : "0.98", - "Test::Warn" : "0.23", - "base" : 0, - "overload" : 0, - "vars" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.30" - } - }, - "runtime" : { - "requires" : { - "CGI" : 0, - "Carp" : 0, - "Devel::Peek" : 0, - "Scalar::Util" : 0, - "Test::Builder" : 0, - "Test::Exception" : "0.31", - "Test::More" : "0.98", - "Test::Warn" : "0.23", - "UNIVERSAL::can" : "1.20110617", - "UNIVERSAL::isa" : "1.20110614", - "strict" : 0, - "warnings" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=Test-MockObject" - }, - "repository" : { - "url" : "https://github.com/chromatic/Test-MockObject.git" - } - }, - "version" : "1.20120301" - }, - "name" : "Test::MockObject", - "pathname" : "C/CH/CHROMATIC/Test-MockObject-1.20120301.tar.gz", - "provides" : { - "Test::MockObject" : { - "file" : "Test/MockObject.pm", - "version" : "1.20120301" - }, - "Test::MockObject::Extends" : { - "file" : "Test/MockObject/Extends.pm", - "version" : "1.20120301" - } - }, - "version" : "1.20120301" - }, - "Test::NoWarnings" : { - "dist" : "Test-NoWarnings-1.04", - "mymeta" : { - "abstract" : "Make sure you didn't emit any warnings while testing", - "author" : [ - "Fergal Daly <fergal@esatclear.ie>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112621, CPAN::Meta::Converter version 2.112150", - "license" : [ - "open_source" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Test-NoWarnings", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : "0.47", - "Test::Tester" : "0.107" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::Builder" : "0.86", - "perl" : "5.006" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://svn.ali.as/cpan/trunk/Test-NoWarnings" - } - }, - "version" : "1.04" - }, - "name" : "Test::NoWarnings", - "pathname" : "A/AD/ADAMK/Test-NoWarnings-1.04.tar.gz", - "provides" : { - "Test::NoWarnings" : { - "file" : "Test/NoWarnings.pm", - "version" : "1.04" - }, - "Test::NoWarnings::Warning" : { - "file" : "Test/NoWarnings/Warning.pm", - "version" : "1.04" - } - }, - "target" : "Test::NoWarnings", - "version" : "1.04" - }, - "Test::Object" : { - "dist" : "Test-Object-0.07", - "mymeta" : { - "abstract" : "Thoroughly testing objects via registered handlers", - "author" : [ - "Adam Kennedy <cpan@ali.as>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.64, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Test-Object", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Exporter" : 0, - "File::Spec" : "0.80", - "Scalar::Util" : "1.16", - "Test::Builder" : "0.33", - "Test::Builder::Tester" : "1.02", - "Test::More" : "0.42", - "overload" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.07" - }, - "name" : "Test::Object", - "pathname" : "/authors/id/A/AD/ADAMK/Test-Object-0.07.tar.gz", - "provides" : { - "Test::Object" : { - "file" : "Test/Object.pm", - "version" : "0.07" - }, - "Test::Object::Test" : { - "file" : "Test/Object/Test.pm", - "version" : "0.07" - } - }, - "target" : "Test::Object", - "version" : "0.07" - }, - "Test::Output" : { - "dist" : "Test-Output-0.16", - "mymeta" : { - "abstract" : "Utilities to test STDOUT and STDERR messages.", - "author" : [ - "brian d foy <bdfoy@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.48, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Test-Output", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "File::Temp" : "0.21", - "Sub::Exporter" : 0, - "Test::More" : 0, - "Test::Tester" : "0.107" - } - } - }, - "release_status" : "stable", - "version" : "0.16" - }, - "name" : "Test::Output", - "pathname" : "/authors/id/B/BD/BDFOY/Test-Output-0.16.tar.gz", - "provides" : { - "Test::Output" : { - "file" : "Test/Output.pm", - "version" : "0.16" - }, - "Test::Output::Tie" : { - "file" : "Test/Output/Tie.pm", - "version" : "0.14" - } - }, - "target" : "Test::Output", - "version" : "0.16" - }, - "Test::Pod" : { - "dist" : "Test-Pod-1.45", - "mymeta" : { - "abstract" : "check for POD errors in files", - "author" : [ - "Currently maintained by David E. Wheeler, C<< <david@justatheory.com> >>." - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Test-Pod", - "prereqs" : { - "build" : { - "requires" : { - "File::Spec" : 0, - "Pod::Simple" : "3.05", - "Test::More" : "0.62" - } - }, - "configure" : { - "requires" : { - "Module::Build" : "0.30" - } - }, - "runtime" : { - "requires" : { - "File::Spec" : 0, - "Pod::Simple" : "3.05", - "Test::Builder::Tester" : "1.02", - "Test::More" : "0.62" - } - } - }, - "provides" : { - "Test::Pod" : { - "file" : "lib/Test/Pod.pm", - "version" : "1.45" - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://github.com/theory/test-pod/issues/" - }, - "homepage" : "http://search.cpan.org/dist/Test-Pod/", - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://github.com/theory/test-pod/tree/" - } - }, - "version" : "1.45" - }, - "name" : "Test::Pod", - "pathname" : "D/DW/DWHEELER/Test-Pod-1.45.tar.gz", - "provides" : { - "Test::Pod" : { - "file" : "Test/Pod.pm", - "version" : "1.45" - } - }, - "target" : "Test::Pod", - "version" : "1.45" - }, - "Test::Requires" : { - "dist" : "Test-Requires-0.06", - "module" : "Test::Requires", - "mymeta" : { - "abstract" : "Checks to see if the module can be loaded", - "author" : [ - "Tokuhiro Matsuno <tokuhirom @*(#RJKLFHFSDLJF gmail.com>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.00, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Test-Requires", - "no_index" : { - "directory" : [ - "inc", - "t", - "xt" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Test::More" : "0.61", - "perl" : "5.006" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.06" - }, - "name" : "Test::Requires", - "pathname" : "T/TO/TOKUHIROM/Test-Requires-0.06.tar.gz", - "provides" : { - "Test::Requires" : { - "file" : "Test/Requires.pm", - "version" : "0.06" - } - }, - "version" : "0.06" - }, - "Test::Simple" : { - "dist" : "Test-Simple-0.98", - "module" : "Test::More", - "mymeta" : { - "abstract" : "Basic utilities for writing tests.", - "author" : [ - "Michael G Schwern <schwern@pobox.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.57_06, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Test-Simple", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::Harness" : "2.03", - "perl" : "5.006" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://github.com/schwern/test-more/issues" - }, - "homepage" : "http://test-more.googlecode.com", - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://github.com/schwern/test-more/tree/master" - }, - "x_MailingList" : "http://groups.google.com/group/test-more-users" - }, - "version" : "0.98" - }, - "name" : "Test::Simple", - "pathname" : "M/MS/MSCHWERN/Test-Simple-0.98.tar.gz", - "provides" : { - "Test::Builder" : { - "file" : "Test/Builder.pm", - "version" : "0.98" - }, - "Test::Builder::IO::Scalar" : { - "file" : "Test/Builder/IO/Scalar.pm", - "version" : "2.110" - }, - "Test::Builder::Module" : { - "file" : "Test/Builder/Module.pm", - "version" : "0.98" - }, - "Test::Builder::Tester" : { - "file" : "Test/Builder/Tester.pm", - "version" : "1.22" - }, - "Test::Builder::Tester::Color" : { - "file" : "Test/Builder/Tester/Color.pm", - "version" : "1.22" - }, - "Test::Builder::Tester::Tie" : { - "file" : "Test/Builder/Tester.pm" - }, - "Test::More" : { - "file" : "Test/More.pm", - "version" : "0.98" - }, - "Test::Simple" : { - "file" : "Test/Simple.pm", - "version" : "0.98" - } - }, - "version" : "0.98" - }, - "Test::SubCalls" : { - "dist" : "Test-SubCalls-1.09", - "mymeta" : { - "abstract" : "Track the number of times subs are called", - "author" : [ - "Adam Kennedy <adamk@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.85, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Test-SubCalls", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "File::Spec" : "0.80", - "Hook::LexWrap" : "0.20", - "Test::Builder::Tester" : "1.02", - "Test::More" : "0.42" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://svn.ali.as/cpan/trunk/Test-SubCalls" - }, - "x_ChangeLog" : "http://fisheye2.atlassian.com/changelog/cpan/trunk/Test-SubCalls" - }, - "version" : "1.09", - "x_module_name" : "Test::SubCalls" - }, - "name" : "Test::SubCalls", - "pathname" : "/authors/id/A/AD/ADAMK/Test-SubCalls-1.09.tar.gz", - "provides" : { - "Test::SubCalls" : { - "file" : "Test/SubCalls.pm", - "version" : "1.09" - } - }, - "target" : "Test::SubCalls", - "version" : "1.09" - }, - "Test::Tester" : { - "dist" : "Test-Tester-0.108", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.30_01, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Test-Tester", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::Builder" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.108", - "x_installdirs" : "perl", - "x_version_from" : "./lib/Test/Tester.pm" - }, - "name" : "Test::Tester", - "pathname" : "F/FD/FDALY/Test-Tester-0.108.tar.gz", - "provides" : { - "Test::Tester" : { - "file" : "Test/Tester.pm", - "version" : "0.108" - }, - "Test::Tester::Capture" : { - "file" : "Test/Tester/Capture.pm" - }, - "Test::Tester::CaptureRunner" : { - "file" : "Test/Tester/CaptureRunner.pm" - }, - "Test::Tester::Delegate" : { - "file" : "Test/Tester/Delegate.pm" - } - }, - "target" : "Test::Tester", - "version" : "0.108" - }, - "Test::WWW::Mechanize" : { - "dist" : "Test-WWW-Mechanize-1.38", - "mymeta" : { - "abstract" : "Testing-specific WWW::Mechanize subclass", - "author" : [ - "Andy Lester <andy@petdance.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112621, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Test-WWW-Mechanize", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Carp::Assert::More" : 0, - "HTML::TreeBuilder" : 0, - "HTTP::Server::Simple" : "0.42", - "HTTP::Server::Simple::CGI" : 0, - "LWP" : "6.02", - "Test::Builder::Tester" : "1.09", - "Test::LongString" : "0.15", - "Test::More" : 0, - "URI::file" : 0, - "WWW::Mechanize" : "1.68", - "perl" : "5.008" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://code.google.com/p/www-mechanize/issues/list" - }, - "homepage" : "https://github.com/petdance/test-www-mechanize", - "license" : [ - "http://www.opensource.org/licenses/artistic-license-2.0" - ], - "repository" : { - "url" : "https://github.com/petdance/test-www-mechanize" - } - }, - "version" : "1.38" - }, - "name" : "Test::WWW::Mechanize", - "pathname" : "P/PE/PETDANCE/Test-WWW-Mechanize-1.38.tar.gz", - "provides" : { - "Test::WWW::Mechanize" : { - "file" : "Test/WWW/Mechanize.pm", - "version" : "1.38" - } - }, - "target" : "Test::WWW::Mechanize", - "version" : "1.38" - }, - "Test::WWW::Mechanize::Catalyst" : { - "dist" : "Test-WWW-Mechanize-Catalyst-0.53", - "mymeta" : { - "abstract" : "Test::WWW::Mechanize for Catalyst", - "author" : [ - "Ash Berlin C<< <ash@cpan.org> >> (current maintiner)" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.99, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Test-WWW-Mechanize-Catalyst", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Catalyst::Plugin::Session::State::Cookie" : 0, - "Catalyst::Plugin::Session::Store::Dummy" : 0, - "ExtUtils::MakeMaker" : "6.42", - "Test::Exception" : 0, - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Catalyst" : "5.00", - "LWP" : "5.816", - "Moose" : "0.67", - "Test::WWW::Mechanize" : "1.14", - "WWW::Mechanize" : "1.54", - "namespace::clean" : "0.09" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://dev.catalyst.perl.org/repos/Catalyst/Test-WWW-Mechanize-Catalyst/trunk/" - } - }, - "version" : "0.53" - }, - "name" : "Test::WWW::Mechanize::Catalyst", - "pathname" : "/authors/id/B/BO/BOBTFISH/Test-WWW-Mechanize-Catalyst-0.53.tar.gz", - "provides" : { - "Test::WWW::Mechanize::Catalyst" : { - "file" : "Test/WWW/Mechanize/Catalyst.pm", - "version" : "0.53" - } - }, - "target" : "Test::WWW::Mechanize::Catalyst", - "version" : "0.53" - }, - "Test::Warn" : { - "dist" : "Test-Warn-0.24", - "module" : "Test::Warn", - "mymeta" : { - "abstract" : "Perl extension to test methods for warnings", - "author" : [ - "Alexandr Ciornii <alexchorny@gmail.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "keywords" : [ - "testing", - "warnings" - ], - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Test-Warn", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "File::Spec" : 0, - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Carp" : "1.22", - "Sub::Uplevel" : "0.12", - "Test::Builder" : "0.13", - "Test::Builder::Tester" : "1.02", - "Tree::DAG_Node" : "1.02", - "perl" : "5.006" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/chorny/test-warn/tree" - } - }, - "version" : "0.24" - }, - "name" : "Test::Warn", - "pathname" : "C/CH/CHORNY/Test-Warn-0.24.tar.gz", - "provides" : { - "Test::Warn" : { - "file" : "Test/Warn.pm", - "version" : "0.24" - }, - "Test::Warn::Categorization" : { - "file" : "Test/Warn.pm" - }, - "Test::Warn::DAG_Node_Tree" : { - "file" : "Test/Warn.pm" - } - }, - "version" : "0.24" - }, - "Test::use::ok" : { - "dist" : "Test-use-ok-0.02", - "mymeta" : { - "abstract" : "Alternative to Test::More::use_ok", - "author" : [ - ", 2006 by Audrey Tang <cpan@audreyt.org>." - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.64, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Test-use-ok", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.02" - }, - "name" : "Test::use::ok", - "pathname" : "/authors/id/A/AU/AUDREYT/Test-use-ok-0.02.tar.gz", - "provides" : { - "Test::use::ok" : { - "file" : "Test/use/ok.pm", - "version" : "0.02" - }, - "ok" : { - "file" : "ok.pm", - "version" : "0.02" - } - }, - "target" : "ok", - "version" : "0.02" - }, - "Text::German" : { - "dist" : "Text-German-0.06", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Text-German", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "0.06" - }, - "name" : "Text::German", - "pathname" : "U/UL/ULPFR/Text-German-0.06.tar.gz", - "provides" : { - "Text::German" : { - "file" : "Text/German.pm", - "version" : "0.06" - }, - "Text::German::Adjektiv" : { - "file" : "Text/German/Adjektiv.pm" - }, - "Text::German::Ausnahme" : { - "file" : "Text/German/Ausnahme.pm" - }, - "Text::German::Cache" : { - "file" : "Text/German/Cache.pm" - }, - "Text::German::Endung" : { - "file" : "Text/German/Endung.pm" - }, - "Text::German::Regel" : { - "file" : "Text/German/Regel.pm" - }, - "Text::German::Util" : { - "file" : "Text/German/Util.pm" - }, - "Text::German::Verb" : { - "file" : "Text/German/Verb.pm" - }, - "Text::German::Vorsilbe" : { - "file" : "Text/German/Vorsilbe.pm" - } - }, - "target" : "Text::German", - "version" : "0.06" - }, - "Text::Glob" : { - "dist" : "Text-Glob-0.09", - "mymeta" : { - "abstract" : "match globbing patterns against text", - "author" : [ - "Richard Clamp <richardc@unixbeard.net>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Text-Glob", - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "Module::Build" : "0.36" - } - } - }, - "provides" : { - "Text::Glob" : { - "file" : "lib/Text/Glob.pm", - "version" : "0.09" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "0.09" - }, - "name" : "Text::Glob", - "pathname" : "R/RC/RCLAMP/Text-Glob-0.09.tar.gz", - "provides" : { - "Text::Glob" : { - "file" : "Text/Glob.pm", - "version" : "0.09" - } - }, - "target" : "Text::Glob", - "version" : "0.09" - }, - "Text::SimpleTable" : { - "dist" : "Text-SimpleTable-2.03", - "mymeta" : { - "abstract" : "Simple eyecandy ASCII tables", - "author" : [ - "Sebastian Riedel <sri@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.54, CPAN::Meta::Converter version 2.112150", - "license" : [ - "artistic_2" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Text-SimpleTable", - "no_index" : { - "directory" : [ - "t", - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : {} - }, - "runtime" : { - "requires" : { - "ExtUtils::MakeMaker" : 0, - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://github.com/kraih/text-simpletable/tree/master" - } - }, - "version" : "2.03" - }, - "name" : "Text::SimpleTable", - "pathname" : "M/MR/MRAMBERG/Text-SimpleTable-2.03.tar.gz", - "provides" : { - "Text::SimpleTable" : { - "file" : "Text/SimpleTable.pm", - "version" : "2.03" - } - }, - "target" : "Text::SimpleTable", - "version" : "2.03" - }, - "Text::Template" : { - "dist" : "Text-Template-1.45", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.30_01, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Text-Template", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "1.45", - "x_installdirs" : "site", - "x_version_from" : "lib/Text/Template.pm" - }, - "name" : "Text::Template", - "pathname" : "M/MJ/MJD/Text-Template-1.45.tar.gz", - "provides" : { - "Text::Template" : { - "file" : "Text/Template.pm", - "version" : "1.45" - }, - "Text::Template::Preprocess" : { - "file" : "Text/Template/Preprocess.pm", - "version" : "1.45" - } - }, - "target" : "Text::Template", - "version" : "1.45" - }, - "Text::Unidecode" : { - "dist" : "Text-Unidecode-0.04", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Text-Unidecode", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "version" : "0.04" - }, - "name" : "Text::Unidecode", - "pathname" : "S/SB/SBURKE/Text-Unidecode-0.04.tar.gz", - "provides" : { - "Text::Unidecode" : { - "file" : "Text/Unidecode.pm", - "version" : "0.04" - } - }, - "target" : "Text::Unidecode", - "version" : "0.04" - }, - "Tie::IxHash" : { - "dist" : "Tie-IxHash-1.22", - "mymeta" : { - "abstract" : "ordered associative arrays for Perl", - "author" : [ - "Gurusamy Sarathy gsar@umich.edu" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Tie-IxHash", - "prereqs" : { - "runtime" : { - "requires" : { - "perl" : "5.003" - } - } - }, - "provides" : { - "Tie::IxHash" : { - "file" : "lib/Tie/IxHash.pm", - "version" : "1.22" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://github.com/chorny/Tie-IxHash.git" - } - }, - "version" : "1.22" - }, - "name" : "Tie::IxHash", - "pathname" : "/authors/id/C/CH/CHORNY/Tie-IxHash-1.22.tar.gz", - "provides" : { - "Tie::IxHash" : { - "file" : "Tie/IxHash.pm", - "version" : "1.22" - } - }, - "target" : "Tie::IxHash", - "version" : "1.22" - }, - "Tie::ToObject" : { - "dist" : "Tie-ToObject-0.03", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.42, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Tie-ToObject", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Scalar::Util" : 0, - "Test::More" : 0, - "Test::use::ok" : 0, - "Tie::RefHash" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.03" - }, - "name" : "Tie::ToObject", - "pathname" : "N/NU/NUFFIN/Tie-ToObject-0.03.tar.gz", - "provides" : { - "Tie::ToObject" : { - "file" : "Tie/ToObject.pm", - "version" : "0.03" - } - }, - "target" : "Tie::ToObject", - "version" : "0.03" - }, - "TimeDate" : { - "dist" : "TimeDate-1.20", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "Graham Barr <gbarr@pobox.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.48, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "TimeDate", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/gbarr/perl-TimeDate" - } - }, - "version" : "1.20" - }, - "name" : "TimeDate", - "pathname" : "G/GB/GBARR/TimeDate-1.20.tar.gz", - "provides" : { - "Date::Format" : { - "file" : "Date/Format.pm", - "version" : "2.24" - }, - "Date::Format::Generic" : { - "file" : "Date/Format.pm" - }, - "Date::Language" : { - "file" : "Date/Language.pm", - "version" : "1.10" - }, - "Date::Language::Afar" : { - "file" : "Date/Language/Afar.pm", - "version" : "0.99" - }, - "Date::Language::Amharic" : { - "file" : "Date/Language/Amharic.pm", - "version" : "1.00" - }, - "Date::Language::Austrian" : { - "file" : "Date/Language/Austrian.pm", - "version" : "1.01" - }, - "Date::Language::Brazilian" : { - "file" : "Date/Language/Brazilian.pm", - "version" : "1.01" - }, - "Date::Language::Chinese" : { - "file" : "Date/Language/Chinese.pm", - "version" : "1.00" - }, - "Date::Language::Chinese_GB" : { - "file" : "Date/Language/Chinese_GB.pm", - "version" : "1.01" - }, - "Date::Language::Czech" : { - "file" : "Date/Language/Czech.pm", - "version" : "1.01" - }, - "Date::Language::Danish" : { - "file" : "Date/Language/Danish.pm", - "version" : "1.01" - }, - "Date::Language::Dutch" : { - "file" : "Date/Language/Dutch.pm", - "version" : "1.02" - }, - "Date::Language::English" : { - "file" : "Date/Language/English.pm", - "version" : "1.01" - }, - "Date::Language::Finnish" : { - "file" : "Date/Language/Finnish.pm", - "version" : "1.01" - }, - "Date::Language::French" : { - "file" : "Date/Language/French.pm", - "version" : "1.04" - }, - "Date::Language::Gedeo" : { - "file" : "Date/Language/Gedeo.pm", - "version" : "0.99" - }, - "Date::Language::German" : { - "file" : "Date/Language/German.pm", - "version" : "1.02" - }, - "Date::Language::Greek" : { - "file" : "Date/Language/Greek.pm", - "version" : "1.00" - }, - "Date::Language::Hungarian" : { - "file" : "Date/Language/Hungarian.pm", - "version" : "1.01" - }, - "Date::Language::Icelandic" : { - "file" : "Date/Language/Icelandic.pm", - "version" : "1.01" - }, - "Date::Language::Italian" : { - "file" : "Date/Language/Italian.pm", - "version" : "1.01" - }, - "Date::Language::Norwegian" : { - "file" : "Date/Language/Norwegian.pm", - "version" : "1.01" - }, - "Date::Language::Oromo" : { - "file" : "Date/Language/Oromo.pm", - "version" : "0.99" - }, - "Date::Language::Romanian" : { - "file" : "Date/Language/Romanian.pm", - "version" : "1.01" - }, - "Date::Language::Russian" : { - "file" : "Date/Language/Russian.pm", - "version" : "1.01" - }, - "Date::Language::Russian_cp1251" : { - "file" : "Date/Language/Russian_cp1251.pm", - "version" : "1.01" - }, - "Date::Language::Russian_koi8r" : { - "file" : "Date/Language/Russian_koi8r.pm", - "version" : "1.01" - }, - "Date::Language::Sidama" : { - "file" : "Date/Language/Sidama.pm", - "version" : "0.99" - }, - "Date::Language::Somali" : { - "file" : "Date/Language/Somali.pm", - "version" : "0.99" - }, - "Date::Language::Spanish" : { - "file" : "Date/Language/Spanish.pm", - "version" : "1.00" - }, - "Date::Language::Swedish" : { - "file" : "Date/Language/Swedish.pm", - "version" : "1.01" - }, - "Date::Language::Tigrinya" : { - "file" : "Date/Language/Tigrinya.pm", - "version" : "1.00" - }, - "Date::Language::TigrinyaEritrean" : { - "file" : "Date/Language/TigrinyaEritrean.pm", - "version" : "1.00" - }, - "Date::Language::TigrinyaEthiopian" : { - "file" : "Date/Language/TigrinyaEthiopian.pm", - "version" : "1.00" - }, - "Date::Language::Turkish" : { - "file" : "Date/Language/Turkish.pm", - "version" : "1.0" - }, - "Date::Parse" : { - "file" : "Date/Parse.pm", - "version" : "2.30" - }, - "Time::Zone" : { - "file" : "Time/Zone.pm", - "version" : "2.24" - }, - "TimeDate" : {} - }, - "target" : "Date::Format", - "version" : "1.20" - }, - "Tree::DAG_Node" : { - "dist" : "Tree-DAG_Node-1.06", - "module" : "Tree::DAG_Node", - "mymeta" : { - "abstract" : "(super)class for representing nodes in a tree", - "author" : [ - "David Hand, <cogent@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.36, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Tree-DAG_Node", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "strict" : 0, - "vars" : 0 - } - } - }, - "release_status" : "stable", - "version" : "1.06" - }, - "name" : "Tree::DAG_Node", - "pathname" : "C/CO/COGENT/Tree-DAG_Node-1.06.tar.gz", - "provides" : { - "Tree::DAG_Node" : { - "file" : "Tree/DAG_Node.pm", - "version" : "1.06" - } - }, - "version" : "1.06" - }, - "Tree::Simple" : { - "dist" : "Tree-Simple-1.18", - "mymeta" : { - "abstract" : "A simple tree object", - "author" : [ - "Stevan Little, E<lt>stevan@iinteractive.comE<gt>", - "Rob Kinyon, E<lt>rob@iinteractive.comE<gt>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Tree-Simple", - "prereqs" : { - "build" : { - "requires" : { - "Test::Exception" : "0.15", - "Test::More" : "0.47" - } - }, - "runtime" : { - "requires" : { - "Scalar::Util" : "1.18", - "perl" : "v5.6.0" - } - } - }, - "provides" : { - "Tree::Simple" : { - "file" : "lib/Tree/Simple.pm", - "version" : "1.18" - }, - "Tree::Simple::Visitor" : { - "file" : "lib/Tree/Simple/Visitor.pm", - "version" : "1.11" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ] - }, - "version" : "1.18" - }, - "name" : "Tree::Simple", - "pathname" : "S/ST/STEVAN/Tree-Simple-1.18.tar.gz", - "provides" : { - "Tree::Simple" : { - "file" : "Tree/Simple.pm", - "version" : "1.18" - }, - "Tree::Simple::Visitor" : { - "file" : "Tree/Simple/Visitor.pm", - "version" : "1.11" - } - }, - "target" : "Tree::Simple", - "version" : "1.18" - }, - "Tree::Simple::VisitorFactory" : { - "dist" : "Tree-Simple-VisitorFactory-0.10", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Tree-Simple-VisitorFactory", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "File::Spec" : "0.6", - "Scalar::Util" : "1.1", - "Test::Exception" : "0.15", - "Test::More" : "0.47", - "Tree::Simple" : "1.12" - } - } - }, - "release_status" : "stable", - "version" : "0.10" - }, - "name" : "Tree::Simple::VisitorFactory", - "pathname" : "S/ST/STEVAN/Tree-Simple-VisitorFactory-0.10.tar.gz", - "provides" : { - "Tree::Simple::Visitor::BreadthFirstTraversal" : { - "file" : "Tree/Simple/Visitor/BreadthFirstTraversal.pm", - "version" : "0.02" - }, - "Tree::Simple::Visitor::CreateDirectoryTree" : { - "file" : "Tree/Simple/Visitor/CreateDirectoryTree.pm", - "version" : "0.02" - }, - "Tree::Simple::Visitor::FindByNodeValue" : { - "file" : "Tree/Simple/Visitor/FindByNodeValue.pm", - "version" : "0.02" - }, - "Tree::Simple::Visitor::FindByPath" : { - "file" : "Tree/Simple/Visitor/FindByPath.pm", - "version" : "0.03" - }, - "Tree::Simple::Visitor::FindByUID" : { - "file" : "Tree/Simple/Visitor/FindByUID.pm", - "version" : "0.02" - }, - "Tree::Simple::Visitor::FromNestedArray" : { - "file" : "Tree/Simple/Visitor/FromNestedArray.pm", - "version" : "0.02" - }, - "Tree::Simple::Visitor::FromNestedHash" : { - "file" : "Tree/Simple/Visitor/FromNestedHash.pm", - "version" : "0.03" - }, - "Tree::Simple::Visitor::GetAllDescendents" : { - "file" : "Tree/Simple/Visitor/GetAllDescendents.pm", - "version" : "0.02" - }, - "Tree::Simple::Visitor::LoadClassHierarchy" : { - "file" : "Tree/Simple/Visitor/LoadClassHierarchy.pm", - "version" : "0.02" - }, - "Tree::Simple::Visitor::LoadDirectoryTree" : { - "file" : "Tree/Simple/Visitor/LoadDirectoryTree.pm", - "version" : "0.02" - }, - "Tree::Simple::Visitor::PathToRoot" : { - "file" : "Tree/Simple/Visitor/PathToRoot.pm", - "version" : "0.02" - }, - "Tree::Simple::Visitor::PostOrderTraversal" : { - "file" : "Tree/Simple/Visitor/PostOrderTraversal.pm", - "version" : "0.02" - }, - "Tree::Simple::Visitor::PreOrderTraversal" : { - "file" : "Tree/Simple/Visitor/PreOrderTraversal.pm", - "version" : "0.01" - }, - "Tree::Simple::Visitor::Sort" : { - "file" : "Tree/Simple/Visitor/Sort.pm", - "version" : "0.03" - }, - "Tree::Simple::Visitor::ToNestedArray" : { - "file" : "Tree/Simple/Visitor/ToNestedArray.pm", - "version" : "0.02" - }, - "Tree::Simple::Visitor::ToNestedHash" : { - "file" : "Tree/Simple/Visitor/ToNestedHash.pm", - "version" : "0.02" - }, - "Tree::Simple::Visitor::VariableDepthClone" : { - "file" : "Tree/Simple/Visitor/VariableDepthClone.pm", - "version" : "0.03" - }, - "Tree::Simple::VisitorFactory" : { - "file" : "Tree/Simple/VisitorFactory.pm", - "version" : "0.10" - } - }, - "target" : "Tree::Simple::Visitor::FindByPath", - "version" : "0.10" - }, - "Try::Tiny" : { - "dist" : "Try-Tiny-0.11", - "module" : "Try::Tiny", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Try-Tiny", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.11" - }, - "name" : "Try::Tiny", - "pathname" : "D/DO/DOY/Try-Tiny-0.11.tar.gz", - "provides" : { - "Try::Tiny" : { - "file" : "Try/Tiny.pm", - "version" : "0.11" - } - }, - "version" : "0.11" - }, - "UNIVERSAL::can" : { - "dist" : "UNIVERSAL-can-1.20120726", - "module" : "UNIVERSAL::can", - "mymeta" : { - "abstract" : "work around buggy code calling UNIVERSAL::can() as a function", - "author" : [ - "chromatic" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.300020, CPAN::Meta::Converter version 2.120921, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "UNIVERSAL-can", - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : 0, - "overload" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.30" - } - }, - "runtime" : { - "requires" : { - "Scalar::Util" : 0, - "strict" : 0, - "vars" : 0, - "warnings" : 0, - "warnings::register" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "homepage" : "https://github.com/chromatic/UNIVERSAL-can", - "repository" : { - "url" : "https://github.com/chromatic/UNIVERSAL-can.git" - } - }, - "version" : "1.20120726" - }, - "name" : "UNIVERSAL::can", - "pathname" : "C/CH/CHROMATIC/UNIVERSAL-can-1.20120726.tar.gz", - "provides" : { - "UNIVERSAL::can" : { - "file" : "UNIVERSAL/can.pm", - "version" : "1.20120726" - } - }, - "version" : "1.20120726" - }, - "UNIVERSAL::isa" : { - "dist" : "UNIVERSAL-isa-1.20120726", - "module" : "UNIVERSAL::isa", - "mymeta" : { - "abstract" : "Attempt to recover from people calling UNIVERSAL::isa as a function", - "author" : [ - "chromatic" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.300020, CPAN::Meta::Converter version 2.120921, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "UNIVERSAL-isa", - "prereqs" : { - "build" : { - "requires" : { - "CGI" : 0, - "Test::More" : 0, - "overload" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.30" - } - }, - "runtime" : { - "requires" : { - "Scalar::Util" : 0, - "UNIVERSAL" : 0, - "strict" : 0, - "vars" : 0, - "warnings" : 0, - "warnings::register" : 0 - } - } - }, - "release_status" : "stable", - "resources" : { - "homepage" : "https://github.com/chromatic/UNIVERSAL-isa", - "repository" : { - "url" : "https://github.com/chromatic/UNIVERSAL-isa.git" - } - }, - "version" : "1.20120726" - }, - "name" : "UNIVERSAL::isa", - "pathname" : "C/CH/CHROMATIC/UNIVERSAL-isa-1.20120726.tar.gz", - "provides" : { - "UNIVERSAL::isa" : { - "file" : "UNIVERSAL/isa.pm", - "version" : "1.20120726" - } - }, - "version" : "1.20120726" - }, - "UNIVERSAL::require" : { - "dist" : "UNIVERSAL-require-0.13", - "mymeta" : { - "abstract" : "require() modules from a variable", - "author" : [ - "Michael G Schwern <schwern@pobox.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.50, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "UNIVERSAL-require", - "no_index" : { - "directory" : [ - "t", - "inc" - ], - "package" : [ - "UNIVERSAL" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::More" : "0.47" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=UNIVERSAL-require" - }, - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://svn.schwern.org/repos/CPAN/UNIVERSAL-require/trunk/" - } - }, - "version" : "0.13" - }, - "name" : "UNIVERSAL::require", - "pathname" : "M/MS/MSCHWERN/UNIVERSAL-require-0.13.tar.gz", - "provides" : { - "UNIVERSAL" : { - "file" : "UNIVERSAL/require.pm" - }, - "UNIVERSAL::require" : { - "file" : "UNIVERSAL/require.pm", - "version" : "0.13" - } - }, - "target" : "UNIVERSAL::require", - "version" : "0.13" - }, - "URI" : { - "dist" : "URI-1.59", - "mymeta" : { - "abstract" : "Uniform Resource Identifiers (absolute and relative)", - "author" : [ - "Gisle Aas <gisle@activestate.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.57_05, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "URI", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0, - "Test" : 0, - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "recommends" : { - "Business::ISBN" : 0 - }, - "requires" : { - "MIME::Base64" : "2", - "perl" : "5.008001" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://gitorious.org/projects/perl-uri" - }, - "x_MailingList" : "mailto:libwww@perl.org" - }, - "version" : "1.59" - }, - "name" : "URI", - "pathname" : "G/GA/GAAS/URI-1.59.tar.gz", - "provides" : { - "URI" : { - "file" : "URI.pm", - "version" : "1.59" - }, - "URI::Escape" : { - "file" : "URI/Escape.pm", - "version" : "3.31" - }, - "URI::Heuristic" : { - "file" : "URI/Heuristic.pm", - "version" : "4.20" - }, - "URI::IRI" : { - "file" : "URI/IRI.pm" - }, - "URI::QueryParam" : { - "file" : "URI/QueryParam.pm" - }, - "URI::Split" : { - "file" : "URI/Split.pm" - }, - "URI::URL" : { - "file" : "URI/URL.pm", - "version" : "5.04" - }, - "URI::WithBase" : { - "file" : "URI/WithBase.pm", - "version" : "2.20" - }, - "URI::data" : { - "file" : "URI/data.pm" - }, - "URI::file" : { - "file" : "URI/file.pm", - "version" : "4.21" - }, - "URI::file::Base" : { - "file" : "URI/file/Base.pm" - }, - "URI::file::FAT" : { - "file" : "URI/file/FAT.pm" - }, - "URI::file::Mac" : { - "file" : "URI/file/Mac.pm" - }, - "URI::file::OS2" : { - "file" : "URI/file/OS2.pm" - }, - "URI::file::QNX" : { - "file" : "URI/file/QNX.pm" - }, - "URI::file::Unix" : { - "file" : "URI/file/Unix.pm" - }, - "URI::file::Win32" : { - "file" : "URI/file/Win32.pm" - }, - "URI::ftp" : { - "file" : "URI/ftp.pm" - }, - "URI::gopher" : { - "file" : "URI/gopher.pm" - }, - "URI::http" : { - "file" : "URI/http.pm" - }, - "URI::https" : { - "file" : "URI/https.pm" - }, - "URI::ldap" : { - "file" : "URI/ldap.pm", - "version" : "1.12" - }, - "URI::ldapi" : { - "file" : "URI/ldapi.pm" - }, - "URI::ldaps" : { - "file" : "URI/ldaps.pm" - }, - "URI::mailto" : { - "file" : "URI/mailto.pm" - }, - "URI::mms" : { - "file" : "URI/mms.pm" - }, - "URI::news" : { - "file" : "URI/news.pm" - }, - "URI::nntp" : { - "file" : "URI/nntp.pm" - }, - "URI::pop" : { - "file" : "URI/pop.pm" - }, - "URI::rlogin" : { - "file" : "URI/rlogin.pm" - }, - "URI::rsync" : { - "file" : "URI/rsync.pm" - }, - "URI::rtsp" : { - "file" : "URI/rtsp.pm" - }, - "URI::rtspu" : { - "file" : "URI/rtspu.pm" - }, - "URI::sip" : { - "file" : "URI/sip.pm", - "version" : "0.11" - }, - "URI::sips" : { - "file" : "URI/sips.pm" - }, - "URI::snews" : { - "file" : "URI/snews.pm" - }, - "URI::ssh" : { - "file" : "URI/ssh.pm" - }, - "URI::telnet" : { - "file" : "URI/telnet.pm" - }, - "URI::tn3270" : { - "file" : "URI/tn3270.pm" - }, - "URI::urn" : { - "file" : "URI/urn.pm" - }, - "URI::urn::isbn" : { - "file" : "URI/urn/isbn.pm" - }, - "URI::urn::oid" : { - "file" : "URI/urn/oid.pm" - } - }, - "target" : "URI::Escape", - "version" : "1.59" - }, - "URI::SmartURI" : { - "dist" : "URI-SmartURI-0.031", - "mymeta" : { - "abstract" : "Subclassable and hostless URIs", - "author" : [ - "Rafael Kitover, C<< <rkitover at cpan.org> >>", - "Rafael Kitover <rkitover@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.00, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "URI-SmartURI", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "Class::C3::Componentised" : 0, - "File::Find::Rule" : 0, - "List::MoreUtils" : 0, - "List::Util" : 0, - "Moose" : 0, - "Scalar::Util" : 0, - "Test::More" : 0, - "URI" : "1.51", - "namespace::clean" : 0, - "perl" : "5.008001" - } - } - }, - "provides" : { - "URI::SmartURI" : { - "file" : "lib/URI/SmartURI.pm", - "version" : "0.031" - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://github.com/rkitover/uri-smarturi.git" - } - }, - "version" : "0.031" - }, - "name" : "URI::SmartURI", - "pathname" : "R/RK/RKITOVER/URI-SmartURI-0.031.tar.gz", - "provides" : { - "URI::SmartURI" : { - "file" : "URI/SmartURI.pm", - "version" : "0.031" - } - }, - "target" : "URI::SmartURI", - "version" : "0.031" - }, - "Variable::Magic" : { - "dist" : "Variable-Magic-0.47", - "mymeta" : { - "abstract" : "Associate user-defined magic to variables from Perl.", - "author" : [ - "Vincent Pit <perl@profvince.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.59, CPAN::Meta::Converter version 2.112621, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Variable-Magic", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "Config" : 0, - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "Exporter" : 0, - "XSLoader" : 0, - "base" : 0, - "perl" : "5.008" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Variable-Magic" - }, - "homepage" : "http://search.cpan.org/dist/Variable-Magic/", - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "http://git.profvince.com/?p=perl%2Fmodules%2FVariable-Magic.git" - } - }, - "version" : "0.47" - }, - "name" : "Variable::Magic", - "pathname" : "V/VP/VPIT/Variable-Magic-0.47.tar.gz", - "provides" : { - "Variable::Magic" : { - "file" : "Variable/Magic.pm", - "version" : "0.47" - } - }, - "target" : "Variable::Magic", - "version" : "0.47" - }, - "WWW::Mechanize" : { - "dist" : "WWW-Mechanize-1.71", - "mymeta" : { - "abstract" : "Handy web browsing in a Perl object", - "author" : [ - "Jesse Vincent <jesse@bestpractical.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.59, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "WWW-Mechanize", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Carp" : 0, - "File::Temp" : 0, - "FindBin" : 0, - "Getopt::Long" : 0, - "HTML::Form" : "1.038", - "HTML::HeadParser" : 0, - "HTML::Parser" : "3.33", - "HTML::TokeParser" : "2.28", - "HTML::TreeBuilder" : 0, - "HTTP::Daemon" : 0, - "HTTP::Request" : "1.3", - "HTTP::Server::Simple" : "0.35", - "HTTP::Server::Simple::CGI" : 0, - "HTTP::Status" : 0, - "LWP" : "5.829", - "LWP::UserAgent" : "5.829", - "Pod::Usage" : 0, - "Test::More" : "0.34", - "Test::Warn" : "0.11", - "URI" : "1.36", - "URI::URL" : 0, - "URI::file" : 0, - "perl" : "5.008" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://code.google.com/p/www-mechanize/issues/list" - }, - "homepage" : "https://github.com/bestpractical/www-mechanize", - "license" : [ - "http://dev.perl.org/licenses/" - ], - "x_MailingList" : "http://groups.google.com/group/www-mechanize-users", - "x_Repository" : "https://github.com/bestpractical/www-mechanize" - }, - "version" : "1.71" - }, - "name" : "WWW::Mechanize", - "pathname" : "J/JE/JESSE/WWW-Mechanize-1.71.tar.gz", - "provides" : { - "WWW::Mechanize" : { - "file" : "WWW/Mechanize.pm", - "version" : "1.71" - }, - "WWW::Mechanize::Image" : { - "file" : "WWW/Mechanize/Image.pm" - }, - "WWW::Mechanize::Link" : { - "file" : "WWW/Mechanize/Link.pm" - } - }, - "target" : "WWW::Mechanize", - "version" : "1.71" - }, - "WWW::RobotRules" : { - "dist" : "WWW-RobotRules-6.01", - "mymeta" : { - "abstract" : "database of robots.txt-derived permissions", - "author" : [ - "Gisle Aas <gisle@activestate.com>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "WWW-RobotRules", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "AnyDBM_File" : 0, - "Fcntl" : 0, - "URI" : "1.10", - "perl" : "5.008008" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/gisle/libwww-perl/tree/WWW-RobotRules/master" - }, - "x_MailingList" : "mailto:libwww@perl.org" - }, - "version" : "6.01" - }, - "name" : "WWW::RobotRules", - "pathname" : "G/GA/GAAS/WWW-RobotRules-6.01.tar.gz", - "provides" : { - "WWW::RobotRules" : { - "file" : "WWW/RobotRules.pm", - "version" : "6.01" - }, - "WWW::RobotRules::AnyDBM_File" : { - "file" : "WWW/RobotRules/AnyDBM_File.pm", - "version" : "6.00" - }, - "WWW::RobotRules::InCore" : { - "file" : "WWW/RobotRules.pm" - } - }, - "target" : "WWW::RobotRules", - "version" : "6.01" - }, - "Web::Scraper" : { - "dist" : "Web-Scraper-0.36", - "mymeta" : { - "abstract" : "Web Scraping Toolkit using HTML and CSS Selectors or XPath expressions", - "author" : [ - "Tatsuhiko Miyagawa <miyagawa@bulknews.net>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.04, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Web-Scraper", - "no_index" : { - "directory" : [ - "inc", - "t", - "xt" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.62", - "Test::Base" : 0, - "Test::More" : 0, - "Test::Requires" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.62" - } - }, - "runtime" : { - "requires" : { - "HTML::Entities" : 0, - "HTML::Selector::XPath" : "0.03", - "HTML::Tagset" : 0, - "HTML::TreeBuilder" : "3.23", - "HTML::TreeBuilder::XPath" : "0.08", - "LWP" : "5.827", - "Scalar::Util" : 0, - "UNIVERSAL::require" : 0, - "URI" : 0, - "XML::XPathEngine" : "0.08", - "YAML" : 0, - "perl" : "5.008001" - } - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://github.com/miyagawa/web-scraper.git" - } - }, - "version" : "0.36" - }, - "name" : "Web::Scraper", - "pathname" : "M/MI/MIYAGAWA/Web-Scraper-0.36.tar.gz", - "provides" : { - "Web::Scraper" : { - "file" : "Web/Scraper.pm", - "version" : "0.36" - }, - "Web::Scraper::Filter" : { - "file" : "Web/Scraper/Filter.pm" - }, - "Web::Scraper::LibXML" : { - "file" : "Web/Scraper/LibXML.pm" - } - }, - "target" : "Web::Scraper", - "version" : "0.36" - }, - "XML::NamespaceSupport" : { - "dist" : "XML-NamespaceSupport-1.11", - "mymeta" : { - "abstract" : "a simple generic namespace support class", - "author" : [ - "Robin Berjon, robin@knowscape.com, with lots of it having been done" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 0.95, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "XML-NamespaceSupport", - "no_index" : { - "directory" : [ - "inc", - "t" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42", - "Test::More" : "0.47" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://github.com/perigrin/xml-namespacesupport.git" - } - }, - "version" : "1.11" - }, - "name" : "XML::NamespaceSupport", - "pathname" : "P/PE/PERIGRIN/XML-NamespaceSupport-1.11.tar.gz", - "provides" : { - "XML::NamespaceSupport" : { - "file" : "XML/NamespaceSupport.pm", - "version" : "1.11" - } - }, - "target" : "XML::NamespaceSupport", - "version" : "1.11" - }, - "XML::Parser" : { - "dist" : "XML-Parser-2.41", - "mymeta" : { - "abstract" : "A perl module for parsing XML documents", - "author" : [ - "Clark Cooper (coopercc@netheaven.com)" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.56, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "XML-Parser", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "LWP" : 0, - "perl" : "5.00405" - } - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "url" : "http://github.com/chorny/XML-Parser" - } - }, - "version" : "2.41" - }, - "name" : "XML::Parser", - "pathname" : "T/TO/TODDR/XML-Parser-2.41.tar.gz", - "provides" : { - "XML::Parser" : { - "file" : "XML/Parser.pm", - "version" : "2.41" - }, - "XML::Parser::Expat" : { - "file" : "XML/Parser/Expat.pm", - "version" : "2.41" - }, - "XML::Parser::Style::Debug" : { - "file" : "XML/Parser/Style/Debug.pm" - }, - "XML::Parser::Style::Objects" : { - "file" : "XML/Parser/Style/Objects.pm" - }, - "XML::Parser::Style::Stream" : { - "file" : "XML/Parser/Style/Stream.pm" - }, - "XML::Parser::Style::Subs" : { - "file" : "XML/Parser/Style/Subs.pm" - }, - "XML::Parser::Style::Tree" : { - "file" : "XML/Parser/Style/Tree.pm" - } - }, - "target" : "XML::Parser::Expat", - "version" : "2.41" - }, - "XML::RSS" : { - "dist" : "XML-RSS-1.49", - "mymeta" : { - "abstract" : "creates and updates RSS files", - "author" : [ - "Shlomi Fish <shlomif@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "keywords" : [ - "feed", - "feeds", - "generate", - "generating", - "parse", - "parsing", - "rss", - "RSS", - "web-feed", - "web-feeds", - "xml" - ], - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "XML-RSS", - "prereqs" : { - "build" : { - "requires" : { - "Test::Manifest" : "0.9", - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "Module::Build" : "0.36" - } - }, - "runtime" : { - "requires" : { - "DateTime" : 0, - "DateTime::Format::Mail" : 0, - "DateTime::Format::W3CDTF" : 0, - "HTML::Entities" : 0, - "XML::Parser" : "2.23", - "perl" : "5.008" - } - } - }, - "provides" : { - "XML::RSS" : { - "file" : "lib/XML/RSS.pm", - "version" : "1.49" - }, - "XML::RSS::Private::Output::Base" : { - "file" : "lib/XML/RSS/Private/Output/Base.pm", - "version" : 0 - }, - "XML::RSS::Private::Output::Roles::ImageDims" : { - "file" : "lib/XML/RSS/Private/Output/Roles/ImageDims.pm", - "version" : 0 - }, - "XML::RSS::Private::Output::Roles::ModulesElems" : { - "file" : "lib/XML/RSS/Private/Output/Roles/ModulesElems.pm", - "version" : 0 - }, - "XML::RSS::Private::Output::V0_9" : { - "file" : "lib/XML/RSS/Private/Output/V0_9.pm", - "version" : 0 - }, - "XML::RSS::Private::Output::V0_91" : { - "file" : "lib/XML/RSS/Private/Output/V0_91.pm", - "version" : 0 - }, - "XML::RSS::Private::Output::V1_0" : { - "file" : "lib/XML/RSS/Private/Output/V1_0.pm", - "version" : 0 - }, - "XML::RSS::Private::Output::V2_0" : { - "file" : "lib/XML/RSS/Private/Output/V2_0.pm", - "version" : 0 - } - }, - "release_status" : "stable", - "resources" : { - "homepage" : "http://perl-rss.sourceforge.net/", - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "url" : "https://svn.perl.org/modules/XML-RSS/trunk" - } - }, - "version" : "1.49" - }, - "name" : "XML::RSS", - "pathname" : "S/SH/SHLOMIF/XML-RSS-1.49.tar.gz", - "provides" : { - "XML::RSS" : { - "file" : "XML/RSS.pm", - "version" : "1.49" - }, - "XML::RSS::Private::Output::Base" : { - "file" : "XML/RSS/Private/Output/Base.pm" - }, - "XML::RSS::Private::Output::Roles::ImageDims" : { - "file" : "XML/RSS/Private/Output/Roles/ImageDims.pm" - }, - "XML::RSS::Private::Output::Roles::ModulesElems" : { - "file" : "XML/RSS/Private/Output/Roles/ModulesElems.pm" - }, - "XML::RSS::Private::Output::V0_9" : { - "file" : "XML/RSS/Private/Output/V0_9.pm" - }, - "XML::RSS::Private::Output::V0_91" : { - "file" : "XML/RSS/Private/Output/V0_91.pm" - }, - "XML::RSS::Private::Output::V1_0" : { - "file" : "XML/RSS/Private/Output/V1_0.pm" - }, - "XML::RSS::Private::Output::V2_0" : { - "file" : "XML/RSS/Private/Output/V2_0.pm" - } - }, - "target" : "XML::RSS", - "version" : "1.49" - }, - "XML::SAX" : { - "dist" : "XML-SAX-0.99", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.55_02, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "XML-SAX", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "File::Temp" : 0, - "XML::NamespaceSupport" : "0.03", - "XML::SAX::Base" : "1.05" - } - } - }, - "release_status" : "stable", - "version" : "0.99" - }, - "name" : "XML::SAX", - "pathname" : "G/GR/GRANTM/XML-SAX-0.99.tar.gz", - "provides" : { - "XML::SAX" : { - "file" : "XML/SAX.pm", - "version" : "0.99" - }, - "XML::SAX::DocumentLocator" : { - "file" : "XML/SAX/DocumentLocator.pm" - }, - "XML::SAX::ParserFactory" : { - "file" : "XML/SAX/ParserFactory.pm", - "version" : "1.01" - }, - "XML::SAX::PurePerl" : { - "file" : "XML/SAX/PurePerl.pm", - "version" : "0.99" - }, - "XML::SAX::PurePerl::DebugHandler" : { - "file" : "XML/SAX/PurePerl/DebugHandler.pm" - }, - "XML::SAX::PurePerl::Exception" : { - "file" : "XML/SAX/PurePerl/Exception.pm" - }, - "XML::SAX::PurePerl::Productions" : { - "file" : "XML/SAX/PurePerl/Productions.pm" - }, - "XML::SAX::PurePerl::Reader" : { - "file" : "XML/SAX/PurePerl/Reader.pm" - }, - "XML::SAX::PurePerl::Reader::Stream" : { - "file" : "XML/SAX/PurePerl/Reader/Stream.pm" - }, - "XML::SAX::PurePerl::Reader::String" : { - "file" : "XML/SAX/PurePerl/Reader/String.pm" - }, - "XML::SAX::PurePerl::Reader::URI" : { - "file" : "XML/SAX/PurePerl/Reader/URI.pm" - } - }, - "target" : "XML::SAX", - "version" : "0.99" - }, - "XML::SAX::Base" : { - "dist" : "XML-SAX-Base-1.08", - "mymeta" : { - "abstract" : "Base class for SAX Drivers and Filters", - "author" : [ - "Grant McLean <grantm@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.200004, CPAN::Meta::Converter version 2.101670, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "XML-SAX-Base", - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.31" - } - }, - "runtime" : { - "requires" : {} - } - }, - "release_status" : "stable", - "resources" : { - "repository" : { - "type" : "git", - "url" : "git://github.com/grantm/XML-SAX-Base.git" - } - }, - "version" : "1.08" - }, - "name" : "XML::SAX::Base", - "pathname" : "G/GR/GRANTM/XML-SAX-Base-1.08.tar.gz", - "provides" : { - "XML::SAX::Base" : { - "file" : "XML/SAX/Base.pm", - "version" : "1.08" - }, - "XML::SAX::Base::NoHandler" : { - "file" : "XML/SAX/Base.pm", - "version" : "1.08" - }, - "XML::SAX::Exception" : { - "file" : "XML/SAX/Exception.pm", - "version" : "1.08" - } - }, - "target" : "XML::SAX::Base", - "version" : "1.08" - }, - "XML::SAX::Expat" : { - "dist" : "XML-SAX-Expat-0.40", - "module" : "XML::SAX::Expat", - "mymeta" : { - "abstract" : "SAX Driver for Expat", - "author" : [ - "Robin Berjon" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.44, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "XML-SAX-Expat", - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "XML::NamespaceSupport" : "0.03", - "XML::Parser" : "2.27", - "XML::SAX" : "0.03", - "XML::SAX::Base" : "1.00" - } - } - }, - "release_status" : "stable", - "version" : "0.40" - }, - "name" : "XML::SAX::Expat", - "pathname" : "B/BJ/BJOERN/XML-SAX-Expat-0.40.tar.gz", - "provides" : { - "XML::SAX::Expat" : { - "file" : "XML/SAX/Expat.pm", - "version" : "0.40" - } - }, - "version" : "0.40" - }, - "XML::Simple" : { - "dist" : "XML-Simple-2.18", - "mymeta" : { - "abstract" : "Easy API to maintain XML (esp config files)", - "author" : [ - "Grant McLean <grantm@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "XML-Simple", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::Simple" : "0.41", - "XML::NamespaceSupport" : "1.04", - "XML::SAX" : 0 - } - } - }, - "release_status" : "stable", - "version" : "2.18" - }, - "name" : "XML::Simple", - "pathname" : "G/GR/GRANTM/XML-Simple-2.18.tar.gz", - "provides" : { - "XML::Simple" : { - "file" : "XML/Simple.pm", - "version" : "2.18" - } - }, - "target" : "XML::Simple", - "version" : "2.18" - }, - "XML::XPathEngine" : { - "dist" : "XML-XPathEngine-0.13", - "mymeta" : { - "abstract" : "a re-usable XPath engine for DOM-like trees", - "author" : [ - "Michel Rodriguez <mirod@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.59, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "XML-XPathEngine", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::More" : 0 - } - } - }, - "release_status" : "stable", - "version" : "0.13" - }, - "name" : "XML::XPathEngine", - "pathname" : "M/MI/MIROD/XML-XPathEngine-0.13.tar.gz", - "provides" : { - "XML::XPathEngine" : { - "file" : "XML/XPathEngine.pm", - "version" : "0.13" - }, - "XML::XPathEngine::Boolean" : { - "file" : "XML/XPathEngine/Boolean.pm" - }, - "XML::XPathEngine::Expr" : { - "file" : "XML/XPathEngine/Expr.pm" - }, - "XML::XPathEngine::Function" : { - "file" : "XML/XPathEngine/Function.pm" - }, - "XML::XPathEngine::Literal" : { - "file" : "XML/XPathEngine/Literal.pm" - }, - "XML::XPathEngine::LocationPath" : { - "file" : "XML/XPathEngine/LocationPath.pm" - }, - "XML::XPathEngine::NodeSet" : { - "file" : "XML/XPathEngine/NodeSet.pm" - }, - "XML::XPathEngine::Number" : { - "file" : "XML/XPathEngine/Number.pm" - }, - "XML::XPathEngine::Root" : { - "file" : "XML/XPathEngine/Root.pm" - }, - "XML::XPathEngine::Step" : { - "file" : "XML/XPathEngine/Step.pm" - }, - "XML::XPathEngine::Variable" : { - "file" : "XML/XPathEngine/Variable.pm" - } - }, - "target" : "XML::XPathEngine", - "version" : "0.13" - }, - "YAML" : { - "dist" : "YAML-0.77", - "mymeta" : { - "abstract" : "YAML Ain't Markup Language (tm)", - "author" : [ - "Ingy döt Net <ingy@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.01, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "YAML", - "no_index" : { - "directory" : [ - "inc", - "t", - "xt" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "perl" : "5.008001" - } - } - }, - "release_status" : "stable", - "resources" : { - "homepage" : "http://github.com/ingydotnet/yaml-pm/tree", - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://github.com/ingydotnet/yaml-pm.git" - } - }, - "version" : "0.77", - "x_module_name" : "YAML" - }, - "name" : "YAML", - "pathname" : "I/IN/INGY/YAML-0.77.tar.gz", - "provides" : { - "Test::YAML" : { - "file" : "Test/YAML.pm", - "version" : "0.77" - }, - "Test::YAML::Filter" : { - "file" : "Test/YAML.pm" - }, - "YAML" : { - "file" : "YAML.pm", - "version" : "0.77" - }, - "YAML::Any" : { - "file" : "YAML/Any.pm", - "version" : "0.77" - }, - "YAML::Dumper" : { - "file" : "YAML/Dumper.pm", - "version" : "0.77" - }, - "YAML::Dumper::Base" : { - "file" : "YAML/Dumper/Base.pm", - "version" : "0.77" - }, - "YAML::Error" : { - "file" : "YAML/Error.pm", - "version" : "0.77" - }, - "YAML::Loader" : { - "file" : "YAML/Loader.pm", - "version" : "0.77" - }, - "YAML::Loader::Base" : { - "file" : "YAML/Loader/Base.pm", - "version" : "0.77" - }, - "YAML::Marshall" : { - "file" : "YAML/Marshall.pm", - "version" : "0.77" - }, - "YAML::Mo" : { - "file" : "YAML/Mo.pm" - }, - "YAML::Node" : { - "file" : "YAML/Node.pm", - "version" : "0.77" - }, - "YAML::Tag" : { - "file" : "YAML/Tag.pm", - "version" : "0.77" - }, - "YAML::Type::blessed" : { - "file" : "YAML/Types.pm" - }, - "YAML::Type::code" : { - "file" : "YAML/Types.pm" - }, - "YAML::Type::glob" : { - "file" : "YAML/Types.pm" - }, - "YAML::Type::ref" : { - "file" : "YAML/Types.pm" - }, - "YAML::Type::regexp" : { - "file" : "YAML/Types.pm" - }, - "YAML::Type::undef" : { - "file" : "YAML/Types.pm" - }, - "YAML::Types" : { - "file" : "YAML/Types.pm", - "version" : "0.77" - }, - "YAML::Warning" : { - "file" : "YAML/Error.pm" - }, - "yaml_mapping" : { - "file" : "YAML/Node.pm" - }, - "yaml_scalar" : { - "file" : "YAML/Node.pm" - }, - "yaml_sequence" : { - "file" : "YAML/Node.pm" - } - }, - "target" : "YAML", - "version" : "0.77" - }, - "YAML::Tiny" : { - "dist" : "YAML-Tiny-1.51", - "module" : "YAML::Tiny", - "mymeta" : { - "abstract" : "Read/Write YAML files with as little code as possible", - "author" : [ - "Adam Kennedy <adamk@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112621, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "YAML-Tiny", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "File::Spec" : "0.80", - "Test::More" : "0.47" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "perl" : "5.004" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/ReportBug.html?Queue=YAML-Tiny" - }, - "repository" : { - "url" : "http://svn.ali.as/cpan/trunk/YAML-Tiny" - } - }, - "version" : "1.51" - }, - "name" : "YAML::Tiny", - "pathname" : "A/AD/ADAMK/YAML-Tiny-1.51.tar.gz", - "provides" : { - "YAML::Tiny" : { - "file" : "YAML/Tiny.pm", - "version" : "1.51" - } - }, - "version" : "1.51" - }, - "aliased" : { - "dist" : "aliased-0.30", - "mymeta" : { - "abstract" : "Use shorter versions of class names.", - "author" : [ - "Curtis \"Ovid\" Poe <ovid@cpan.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Build version 0.4002, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "aliased", - "prereqs" : { - "runtime" : { - "requires" : { - "Test::More" : 0 - } - } - }, - "provides" : { - "aliased" : { - "file" : "lib/aliased.pm", - "version" : "0.30" - } - }, - "release_status" : "stable", - "resources" : {}, - "version" : "0.30" - }, - "name" : "aliased", - "pathname" : "O/OV/OVID/aliased-0.30.tar.gz", - "provides" : { - "aliased" : { - "file" : "aliased.pm", - "version" : "0.30" - } - }, - "target" : "aliased", - "version" : "0.30" - }, - "carton" : { - "dist" : "carton-v0.9.3", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "Tatsuhiko Miyagawa" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.03, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "carton", - "no_index" : { - "directory" : [ - "inc", - "t", - "xt" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.62", - "Test::More" : "0.88", - "Test::Requires" : 0, - "version" : "0.77" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.59", - "version" : "0.77" - } - }, - "runtime" : { - "requires" : { - "App::cpanminus" : "1.5", - "CPAN::Meta" : "2.112", - "Exception::Class" : "1.32", - "ExtUtils::MakeMaker" : "6.59", - "JSON" : "2.53", - "Module::Build" : "0.38", - "Module::Metadata" : "1.000003", - "Term::ANSIColor" : "1.12", - "Try::Tiny" : "0.09", - "local::lib" : "1.008", - "parent" : "0.223", - "perl" : "5.008001" - } - } - }, - "provides" : { - "Carton" : { - "file" : "lib/Carton.pm", - "version" : "v0.9.3" - }, - "Carton::CLI" : { - "file" : "lib/Carton/CLI.pm", - "version" : 0 - }, - "Carton::Error" : { - "file" : "lib/Carton/Error.pm", - "version" : 0 - }, - "Carton::Tree" : { - "file" : "lib/Carton/Tree.pm", - "version" : 0 - }, - "Carton::TreeNode" : { - "file" : "lib/Carton/Tree.pm", - "version" : 0 - }, - "Carton::Util" : { - "file" : "lib/Carton/Util.pm", - "version" : 0 - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "https://github.com/miyagawa/carton/issues" - }, - "homepage" : "https://github.com/miyagawa/carton", - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://github.com/miyagawa/carton.git" - } - }, - "version" : "v0.9.3" - }, - "name" : "carton", - "pathname" : "M/MI/MIYAGAWA/carton-v0.9.3.tar.gz", - "provides" : { - "Carton" : { - "file" : "Carton.pm", - "version" : "v0.9.3" - }, - "Carton::CLI" : { - "file" : "Carton/CLI.pm" - }, - "Carton::Error" : { - "file" : "Carton/Error.pm" - }, - "Carton::Tree" : { - "file" : "Carton/Tree.pm" - }, - "Carton::TreeNode" : { - "file" : "Carton/Tree.pm" - }, - "Carton::Util" : { - "file" : "Carton/Util.pm" - }, - "carton" : {} - }, - "target" : "carton", - "version" : "v0.9.3" - }, - "local::lib" : { - "dist" : "local-lib-1.008004", - "module" : "local::lib", - "mymeta" : { - "abstract" : "create and use a local lib/ for perl modules with PERL5LIB", - "author" : [ - "Matt S Trout <mst@shadowcat.co.uk> http://www.shadowcat.co.uk/" - ], - "dynamic_config" : 0, - "generated_by" : "Module::Install version 1.00, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "local-lib", - "no_index" : { - "directory" : [ - "inc", - "t", - "xt" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.42" - } - }, - "runtime" : { - "requires" : { - "CPAN" : "1.82", - "ExtUtils::Install" : "1.43", - "ExtUtils::MakeMaker" : "6.31", - "Module::Build" : "0.36", - "perl" : "5.008001" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=local-lib" - }, - "homepage" : "http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit/local-lib.git", - "license" : [ - "http://dev.perl.org/licenses/" - ], - "repository" : { - "type" : "git", - "url" : "git://git.shadowcat.co.uk/p5sagit/local-lib.git" - } - }, - "version" : "1.008004" - }, - "name" : "local::lib", - "pathname" : "A/AP/APEIRON/local-lib-1.008004.tar.gz", - "provides" : { - "lib::core::only" : { - "file" : "lib/core/only.pm" - }, - "local::lib" : { - "file" : "local/lib.pm", - "version" : "1.008004" - } - }, - "version" : "1.008004" - }, - "namespace::autoclean" : { - "dist" : "namespace-autoclean-0.12", - "mymeta" : { - "abstract" : "Keep imports out of your namespace", - "author" : [ - "Florian Ragwitz <rafl@debian.org>" - ], - "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.200001, CPAN::Meta::Converter version 2.101610, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "namespace-autoclean", - "prereqs" : { - "build" : { - "requires" : { - "Moose::Role" : 0, - "Sub::Name" : 0, - "Test::More" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "6.31" - } - }, - "runtime" : { - "requires" : { - "B::Hooks::EndOfScope" : 0, - "Class::MOP" : "0.80", - "List::Util" : 0, - "namespace::clean" : "0.20" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=namespace_autoclean" - }, - "homepage" : "http://search.cpan.org/dist/namespace_autoclean", - "repository" : { - "type" : "git", - "url" : "git://github.com/rafl/namespace_autoclean.git" - } - }, - "version" : "0.12", - "x_Dist_Zilla" : { - "plugins" : [ - { - "class" : "Dist::Zilla::Plugin::GatherDir", - "name" : "@FLORA/@Basic/GatherDir", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::PruneCruft", - "name" : "@FLORA/@Basic/PruneCruft", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::ManifestSkip", - "name" : "@FLORA/@Basic/ManifestSkip", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::MetaYAML", - "name" : "@FLORA/@Basic/MetaYAML", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::License", - "name" : "@FLORA/@Basic/License", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::Readme", - "name" : "@FLORA/@Basic/Readme", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::ExtraTests", - "name" : "@FLORA/@Basic/ExtraTests", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::ExecDir", - "name" : "@FLORA/@Basic/ExecDir", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::ShareDir", - "name" : "@FLORA/@Basic/ShareDir", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::MakeMaker", - "name" : "@FLORA/@Basic/MakeMaker", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::Manifest", - "name" : "@FLORA/@Basic/Manifest", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::TestRelease", - "name" : "@FLORA/@Basic/TestRelease", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::ConfirmRelease", - "name" : "@FLORA/@Basic/ConfirmRelease", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::UploadToCPAN", - "name" : "@FLORA/@Basic/UploadToCPAN", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::MetaConfig", - "name" : "@FLORA/MetaConfig", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::MetaJSON", - "name" : "@FLORA/MetaJSON", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::PkgVersion", - "name" : "@FLORA/PkgVersion", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::PodSyntaxTests", - "name" : "@FLORA/PodSyntaxTests", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::NoTabsTests", - "name" : "@FLORA/NoTabsTests", - "version" : "0.01" - }, - { - "class" : "Dist::Zilla::Plugin::PodCoverageTests", - "name" : "@FLORA/PodCoverageTests", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::MetaResources", - "name" : "@FLORA/MetaResources", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::Authority", - "name" : "@FLORA/Authority", - "version" : "0.01" - }, - { - "class" : "Dist::Zilla::Plugin::EOLTests", - "name" : "@FLORA/EOLTests", - "version" : "0.02" - }, - { - "class" : "Dist::Zilla::Plugin::PodWeaver", - "name" : "@FLORA/PodWeaver", - "version" : "3.101640" - }, - { - "class" : "Dist::Zilla::Plugin::AutoPrereqs", - "name" : "@FLORA/AutoPrereqs", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":InstallModules", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":TestFiles", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ExecFiles", - "version" : "4.200001" - }, - { - "class" : "Dist::Zilla::Plugin::FinderCode", - "name" : ":ShareFiles", - "version" : "4.200001" - } - ], - "zilla" : { - "class" : "Dist::Zilla::Dist::Builder", - "config" : { - "is_trial" : 0 - }, - "version" : "4.200001" - } - }, - "x_authority" : "cpan:FLORA" - }, - "name" : "namespace::autoclean", - "pathname" : "/authors/id/B/BO/BOBTFISH/namespace-autoclean-0.12.tar.gz", - "provides" : { - "namespace::autoclean" : { - "file" : "namespace/autoclean.pm", - "version" : "0.12" - } - }, - "target" : "namespace::autoclean", - "version" : "0.12" - }, - "namespace::clean" : { - "dist" : "namespace-clean-0.21", - "mymeta" : { - "abstract" : "Keep imports and functions out of your namespace", - "author" : [ - "Robert 'phaylon' Sedlacek <rs@474.at>, Florian Ragwitz <rafl@debian.org>, Jesse Luehrs <doy@tozt.net>" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.57_05, CPAN::Meta::Converter version 2.112150", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "namespace-clean", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "Test::More" : "0.88" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "B::Hooks::EndOfScope" : "0.07", - "Package::Stash" : "0.23" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=namespace-clean" - }, - "homepage" : "http://search.cpan.org/dist/namespace-clean", - "repository" : { - "type" : "git", - "url" : "git://git.shadowcat.co.uk/p5sagit/namespace-clean.git" - } - }, - "version" : "0.21" - }, - "name" : "namespace::clean", - "pathname" : "R/RI/RIBASUSHI/namespace-clean-0.21.tar.gz", - "provides" : { - "namespace::clean" : { - "file" : "namespace/clean.pm", - "version" : "0.21" - } - }, - "target" : "namespace::clean", - "version" : "0.21" - }, - "parent" : { - "dist" : "parent-0.225", - "module" : "parent", - "mymeta" : { - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 6.50, CPAN::Meta::Converter version 2.112150", - "license" : [ - "unknown" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "parent", - "no_index" : { - "directory" : [ - "t", - "inc" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : 0 - } - }, - "runtime" : { - "requires" : { - "Test::More" : "0.4" - } - } - }, - "release_status" : "stable", - "version" : "0.225" - }, - "name" : "parent", - "pathname" : "C/CO/CORION/parent-0.225.tar.gz", - "provides" : { - "parent" : { - "file" : "parent.pm", - "version" : "0.225" - } - }, - "version" : "0.225" - } - }, - "version" : "0.9" -} diff --git a/commonlib b/commonlib -Subproject e832140e07bba7697726cae50ec0da26fb54788 +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/apache-vhost.conf.example b/conf/apache-vhost.conf.example index 97a34fe66..583eb0cde 100644 --- a/conf/apache-vhost.conf.example +++ b/conf/apache-vhost.conf.example @@ -1,6 +1,10 @@ # An example Apache virtualhost configuration file. # -# See our installation help at http://code.fixmystreet.com/ +# See our installation help at http://fixmystreet.org/ +# +# Hopefully you can use either mod_fastcgi or mod_fcgid. +# Ubuntu has mod_fcgid by default, with mod_fastcgi in multiverse. +# Debian has both. <VirtualHost *:80> ServerName fixmystreet.yourservername @@ -11,9 +15,13 @@ <Directory /home/yourname/fixmystreet/web> # You also need to enable cgi files to run as CGI scripts. For example: - # on production servers these are run under fastcgi Options +ExecCGI - AddHandler cgi-script .cgi + + AddHandler your-handler .cgi + # mod_fastcgi: AddHandler fastcgi-script .cgi + # mod_fcgid: AddHandler fcgid-script .cgi + # CGI: AddHandler cgi-script .cgi + AllowOverride None </Directory> 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 a88e774d2..000000000 --- a/conf/crontab.ugly +++ /dev/null @@ -1,48 +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 -!!(* } *)!! - -# On only one server -!!(* if ($vhost eq 'reportemptyhomes.com') { *)!! - -*/5 * * * * !!(*= $user *)!! run-with-lockfile -n /data/vhost/!!(*= $vhost *)!!/send-reports.lock "/data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/cron-wrapper send-reports --verbose" || echo "stalled?" -#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?" - -!!(* } elsif (($vhost eq 'www.fixmystreet.com') || ($vhost eq 'bromley.test.mysociety.org') || ($vhost eq 'barnet.fixmystreet.staging.mysociety.org') || ($vhost eq 'fixmybarangay.test.mysociety.org') || ($vhost eq 'demo.fixmybarangay.com') || ($vhost eq 'www.fixmybarangay.com') || ($vhost eq 'stevenage.test.mysociety.org')) { *)!! -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?" -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?" -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 0-7,9-23 * * * !!(*= $user *)!! run-with-lockfile -n /data/vhost/!!(*= $vhost *)!!/fetch-comments.lock "/data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/cron-wrapper fetch-comments" || echo "stalled?" -10,15,20,25,30,35,40,45,50,55 8 * * * !!(*= $user *)!! run-with-lockfile -n /data/vhost/!!(*= $vhost *)!!/fetch-comments.lock "/data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/cron-wrapper fetch-comments" || echo "stalled?" -5 8 * * * !!(*= $user *)!! run-with-lockfile -n /data/vhost/!!(*= $vhost *)!!/fetch-comments.lock "/data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/cron-wrapper fetch-comments --verbose" || echo "stalled?" -5 1 * * * !!(*= $user *)!! run-with-lockfile -n /data/vhost/!!(*= $vhost *)!!/fetch-comments.lock "/data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/cron-wrapper fetch-comments-24hs" || echo "stalled?" - -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 *)!! diff --git a/conf/general.yml-example b/conf/general.yml-example index 8d5018362..f5fb89b64 100644 --- a/conf/general.yml-example +++ b/conf/general.yml-example @@ -22,9 +22,19 @@ BASE_URL: 'http://www.example.org' EMAIL_DOMAIN: 'example.org' CONTACT_EMAIL: 'team@example.org' CONTACT_NAME: 'FixMyStreet' +# Address used for emails you don't expect a reply to (e.g. confirmation +# emails); can be same as CONTACT_EMAIL above, of course, if you don't have a +# special address. +DO_NOT_REPLY_EMAIL: 'do-not-reply@example.org' -# Whether this is a development site or not. +# Whether this is a development site or not. It will mean e.g. templates/ +# CSS modified times aren't cached STAGING_SITE: 1 +# Normally, a staging site will route all reports to CONTACT_EMAIL on a +# development site (when STAGING_SITE is 1), to guard against sending fake +# reports to live places. Set this to 1 if you want a dev site to route +# reports as normal. +SEND_REPORTS_ON_STAGING: 0 # What to use as front page/alert example places placeholder # Defaults to High Street, Main Street @@ -62,6 +72,12 @@ GEO_CACHE: '../cache/' MAPIT_URL: '' MAPIT_TYPES: [ 'ZZZ' ] +# If you are using global MapIt, you might want to restrict FixMyStreet usage +# to only one or more areas, rather than all O04, for example. Provide MapIt +# IDs here in a list that FixMyStreet should recognise. +# MAPIT_ID_WHITELIST: [ 240838, 246176, 246733 ] +MAPIT_ID_WHITELIST: [] + # If your MapIt has the concept of council wards (subareas of councils, where # people can sign up for alerts, but not report things), then you can give the # MapIt type codes for them here. @@ -69,8 +85,12 @@ MAPIT_TYPES: [ 'ZZZ' ] # MAPIT_TYPES_CHILDREN: [ 'DIW', 'LBW', 'MTW', 'UTE', 'UTW', 'CED', 'COP', 'LGW' ] MAPIT_TYPES_CHILDREN: '' +# Which service to use to look up results from e.g. front page searches. +# Possible choices are Google, Bing, or OSM (blank will use OSM by default). +GEOCODER: '' + # If you wish to use Google Maps or Bing Maps Geocoding, get and put the -# relevant key here. Without a key, geocoding will use OSM's Nominatim. +# relevant key here. GOOGLE_MAPS_API_KEY: '' BING_MAPS_API_KEY: '' @@ -101,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 +# 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: 'moon.example.org' +# - 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. @@ -146,3 +179,4 @@ LONDON_REPORTIT_KEY: '' LONDON_REPORTIT_SECRET: '' AUTH_SHARED_SECRET: '' HEARFROMYOURMP_BASE_URL: '' + diff --git a/conf/httpd.conf-example b/conf/httpd.conf-example index ab17dcec3..d86517333 100644 --- a/conf/httpd.conf-example +++ b/conf/httpd.conf-example @@ -4,7 +4,7 @@ # example of such a virtualhost configuration file can be found in the # file apache-vhost.conf.example in this directory. # -# See our installation help at http://code.fixmystreet.com/ +# See our installation help at http://fixmystreet.org/ RewriteEngine on # RewriteLog /var/log/apache2/rewrite.log diff --git a/conf/nginx.conf.example b/conf/nginx.conf.example index 7b26afdbf..dce26e8f9 100644 --- a/conf/nginx.conf.example +++ b/conf/nginx.conf.example @@ -3,7 +3,7 @@ # An example sysvinit script to help with this is shown given in the file # sysvinit-catalyst-fastcgi.example in this directory. # -# See our installation help at http://code.fixmystreet.com/ +# See our installation help at http://fixmystreet.org/ server { 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 new file mode 100644 index 000000000..618d3be43 --- /dev/null +++ b/conf/packages.debian-wheezy @@ -0,0 +1,15 @@ +make +jhead +liberror-perl +liblocale-gettext-perl +libsoap-lite-perl +memcached +perl +perlmagick +libmath-bigint-gmp-perl +gettext +ruby-compass +postgresql-server-dev-9.1 | postgresql-server-dev-8.4 +gnuplot +ttf-bitstream-vera +libexpat1-dev diff --git a/cpanfile b/cpanfile new file mode 100644 index 000000000..158e10cd1 --- /dev/null +++ b/cpanfile @@ -0,0 +1,115 @@ +# setenv script +requires 'List::MoreUtils'; +requires 'local::lib'; +requires 'Class::Unload'; + +# Catalyst itself, and modules/plugins used +requires 'Catalyst', '5.80031'; +requires 'Catalyst::Action::RenderView'; +requires 'Catalyst::Authentication::Store::DBIx::Class'; +requires 'Catalyst::Devel'; +requires 'Catalyst::Model::Adaptor'; +requires 'Catalyst::Plugin::Authentication'; +requires 'Catalyst::Plugin::Session::State::Cookie'; +requires 'Catalyst::Plugin::Session::Store::DBIC'; +requires 'Catalyst::Plugin::SmartURI'; +requires 'Catalyst::Plugin::Static::Simple'; +requires 'Catalyst::Plugin::Unicode::Encoding'; +requires 'Catalyst::View::TT'; + +# Modules used by FixMyStreet +requires 'Cache::Memcached'; +requires 'Carp'; +requires 'CGI'; +requires 'Crypt::Eksblowfish::Bcrypt'; +requires 'DateTime'; +requires 'DateTime::Format::HTTP'; +requires 'DateTime::Format::ISO8601'; +requires 'DateTime::Format::Pg'; +requires 'DateTime::Format::W3CDTF'; +requires 'DateTime::TimeZone'; +requires 'DBD::Pg', '2.9.2'; +requires 'DBI'; +requires 'DBIx::Class::EncodedColumn::Crypt::Eksblowfish::Bcrypt'; +requires 'DBIx::Class::FilterColumn'; +requires 'DBIx::Class::InflateColumn::DateTime'; +requires 'DBIx::Class::ResultSet'; +requires 'DBIx::Class::Schema::Loader'; +requires 'Digest::MD5'; +requires 'Digest::SHA'; +requires 'Email::Send'; +requires 'Email::Send::SMTP'; +requires 'Email::Simple'; +requires 'Email::Valid'; +requires 'Error'; +requires 'FCGI'; +requires 'File::Find'; +requires 'File::Path'; +requires 'File::Slurp'; +requires 'Geography::NationalGrid'; +requires 'Getopt::Long::Descriptive'; +requires 'HTML::Entities'; +requires 'HTTP::Request::Common'; +requires 'Image::Size'; +requires 'IO::String'; +requires 'JSON'; +requires 'JSON::XS'; +requires 'LWP::Simple'; +requires 'LWP::UserAgent'; +requires 'Math::Trig'; +requires 'Module::Pluggable'; +requires 'Moose'; +requires 'namespace::autoclean'; +requires 'Net::Domain::TLD'; +requires 'Path::Class'; +requires 'POSIX'; +requires 'Readonly'; +requires 'Regexp::Common'; +requires 'Scalar::Util'; +requires 'SOAP::Lite'; +requires 'Statistics::Distributions'; +requires 'Storable'; +requires 'Template::Plugin::Comma'; +requires 'Text::CSV'; +requires 'URI'; +requires 'URI::Escape'; +requires 'URI::QueryParam'; +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 + # TODO: This can perhaps be removed since Barnet switched to email for problem reports + requires 'SOAP::WSDL'; +}; + +#feature 'zurich', 'Zueri wie neu specific requirements' => sub { +# # Geocoder +# requires 'SOAP::Lite'; +#}; + +# Modules used by css watcher +requires 'File::ChangeNotify'; +requires 'Path::Tiny'; +requires 'File::Find::Rule'; + +# Modules used by the test suite +requires 'CGI::Simple'; +requires 'HTTP::Headers'; +requires 'HTTP::Response'; +requires 'Sort::Key'; +requires 'Sub::Override'; +requires 'Test::Exception'; +requires 'Test::LongString'; +requires 'Test::MockTime'; +requires 'Test::More', '0.88'; +requires 'Test::Warn'; +requires 'Test::WWW::Mechanize::Catalyst'; +requires 'Web::Scraper'; + diff --git a/cpanfile.snapshot b/cpanfile.snapshot new file mode 100644 index 000000000..d64ba4c63 --- /dev/null +++ b/cpanfile.snapshot @@ -0,0 +1,6255 @@ +# carton snapshot format: version 1.0 +DISTRIBUTIONS + Algorithm-C3-0.08 + pathname: F/FL/FLORA/Algorithm-C3-0.08.tar.gz + provides: + Algorithm::C3 0.08 + requirements: + Carp 0.01 + Test::More 0.47 + Algorithm-Diff-1.1902 + pathname: T/TY/TYEMQ/Algorithm-Diff-1.1902.tar.gz + provides: + Algorithm::Diff 1.1902 + Algorithm::Diff::_impl 1.1902 + Algorithm::DiffOld 1.1 + requirements: + ExtUtils::MakeMaker 0 + AppConfig-1.66 + pathname: A/AB/ABW/AppConfig-1.66.tar.gz + provides: + AppConfig 1.66 + AppConfig::Args 1.65 + AppConfig::CGI 1.65 + AppConfig::File 1.65 + AppConfig::Getopt 1.65 + AppConfig::State 1.65 + AppConfig::Sys 1.65 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0 + B-Hooks-EndOfScope-0.12 + pathname: B/BO/BOBTFISH/B-Hooks-EndOfScope-0.12.tar.gz + provides: + B::Hooks::EndOfScope 0.12 + B::Hooks::EndOfScope::PP 0.12 + B::Hooks::EndOfScope::XS 0.12 + requirements: + ExtUtils::CBuilder 0.26 + ExtUtils::MakeMaker 6.30 + Module::Implementation 0.05 + Module::Runtime 0.012 + Sub::Exporter::Progressive 0.001006 + Test::More 0.88 + Variable::Magic 0.48 + CGI-Simple-1.113 + pathname: A/AN/ANDYA/CGI-Simple-1.113.tar.gz + provides: + CGI::Simple 1.113 + CGI::Simple::Cookie 1.113 + CGI::Simple::Standard 1.113 + CGI::Simple::Util 1.113 + requirements: + IO::Scalar 0 + Module::Build 0.36 + Test::More 0 + CPAN-Meta-2.132140 + pathname: D/DA/DAGOLDEN/CPAN-Meta-2.132140.tar.gz + provides: + CPAN::Meta 2.132140 + CPAN::Meta::Converter 2.132140 + CPAN::Meta::Feature 2.132140 + CPAN::Meta::History 2.132140 + CPAN::Meta::Prereqs 2.132140 + 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: + CPAN::Meta::Check 0.004 + requirements: + CPAN::Meta 2.120920 + CPAN::Meta::Requirements 2.120920 + Exporter 5.57 + ExtUtils::MakeMaker 6.30 + File::Find 0 + File::Temp 0 + Module::Metadata 0 + Test::Differences 0 + Test::More 0.88 + strict 0 + warnings 0 + CPAN-Meta-Requirements-2.122 + pathname: D/DA/DAGOLDEN/CPAN-Meta-Requirements-2.122.tar.gz + 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: + Cache::Memcached 1.30 + Cache::Memcached::GetParser undef + requirements: + Encode 0 + ExtUtils::MakeMaker 0 + Storable 0 + String::CRC32 0 + Time::HiRes 0 + Carp-1.26 + pathname: Z/ZE/ZEFRAM/Carp-1.26.tar.gz + provides: + Carp 1.26 + Carp::Heavy 1.26 + requirements: + Exporter 0 + ExtUtils::MakeMaker 0 + IPC::Open3 1.0103 + Test::More 0 + strict 0 + warnings 0 + Carp-Assert-0.20 + pathname: M/MS/MSCHWERN/Carp-Assert-0.20.tar.gz + provides: + Carp::Assert 0.20 + requirements: + Carp 0 + ExtUtils::MakeMaker 0 + Test::More 0.4 + Carp-Assert-More-1.14 + pathname: P/PE/PETDANCE/Carp-Assert-More-1.14.tar.gz + provides: + Carp::Assert::More 1.14 + requirements: + Carp 0 + Carp::Assert 0 + ExtUtils::MakeMaker 0 + Scalar::Util 0 + Test::Exception 0 + Test::More 0.18 + Carp-Clan-6.04 + pathname: S/ST/STBEY/Carp-Clan-6.04.tar.gz + provides: + Carp::Clan 6.04 + requirements: + ExtUtils::MakeMaker 0 + Test::Exception 0 + Catalyst-Action-RenderView-0.16 + pathname: B/BO/BOBTFISH/Catalyst-Action-RenderView-0.16.tar.gz + provides: + Catalyst::Action::RenderView 0.16 + requirements: + Catalyst::Runtime 5.80030 + Data::Visitor 0.24 + ExtUtils::MakeMaker 6.42 + HTTP::Request::AsCGI 0 + MRO::Compat 0 + Test::More 0.88 + Catalyst-Authentication-Store-DBIx-Class-0.1503 + pathname: B/BO/BOBTFISH/Catalyst-Authentication-Store-DBIx-Class-0.1503.tar.gz + provides: + Catalyst::Authentication::Realm::SimpleDB undef + Catalyst::Authentication::Store::DBIx::Class 0.1503 + Catalyst::Authentication::Store::DBIx::Class::User undef + requirements: + Catalyst::Model::DBIC::Schema 0.18 + Catalyst::Plugin::Authentication 0.10008 + Catalyst::Runtime 5.8 + DBIx::Class 0.08 + ExtUtils::MakeMaker 6.42 + List::MoreUtils 0 + Moose 0 + Test::More 0 + Try::Tiny 0 + namespace::autoclean 0 + perl 5.008001 + Catalyst-Component-InstancePerContext-0.001001 + pathname: G/GR/GRODITI/Catalyst-Component-InstancePerContext-0.001001.tar.gz + provides: + Catalyst::Component::InstancePerContext 0.001001 + requirements: + Catalyst 0 + ExtUtils::MakeMaker 0 + Moose 0 + Scalar::Util 0 + Test::More 0 + Catalyst-Devel-1.37 + pathname: B/BO/BOBTFISH/Catalyst-Devel-1.37.tar.gz + provides: + Catalyst::Devel 1.37 + Catalyst::Helper 1.37 + Catalyst::Module::Install undef + Catalyst::Restarter undef + Catalyst::Restarter::Forking undef + Catalyst::Restarter::Win32 undef + Module::Install::Catalyst undef + requirements: + Catalyst 5.90001 + Catalyst::Action::RenderView 0.10 + Catalyst::Plugin::ConfigLoader 0.30 + Catalyst::Plugin::Static::Simple 0.28 + Config::General 2.42 + ExtUtils::MakeMaker 6.36 + File::ChangeNotify 0.07 + File::Copy::Recursive 0 + File::ShareDir 0 + Module::Install 1.02 + Moose 0 + MooseX::Daemonize 0 + MooseX::Emulate::Class::Accessor::Fast 0 + Path::Class 0.09 + Starman 0 + Template 2.14 + Test::Fatal 0.003 + Test::More 0.94 + namespace::autoclean 0 + namespace::clean 0 + Catalyst-Model-Adaptor-0.10 + pathname: B/BO/BOBTFISH/Catalyst-Model-Adaptor-0.10.tar.gz + provides: + Catalyst::Helper::Model::Adaptor undef + Catalyst::Helper::Model::Factory undef + Catalyst::Helper::Model::Factory::PerRequest undef + Catalyst::Model::Adaptor 0.10 + Catalyst::Model::Adaptor::Base undef + Catalyst::Model::Factory 0.10 + Catalyst::Model::Factory::PerRequest 0.10 + requirements: + Catalyst::Runtime 0 + ExtUtils::MakeMaker 6.42 + MRO::Compat 0 + Test::More 0 + ok 0 + Catalyst-Model-DBIC-Schema-0.60 + pathname: R/RK/RKITOVER/Catalyst-Model-DBIC-Schema-0.60.tar.gz + provides: + Catalyst::Helper::Model::DBIC::Schema 0.60 + Catalyst::Model::DBIC::Schema 0.60 + Catalyst::TraitFor::Model::DBIC::Schema::Caching undef + Catalyst::TraitFor::Model::DBIC::Schema::PerRequestSchema undef + Catalyst::TraitFor::Model::DBIC::Schema::Replicated undef + Catalyst::TraitFor::Model::DBIC::Schema::SchemaProxy undef + requirements: + Carp::Clan 0 + Catalyst::Component::InstancePerContext 0 + Catalyst::Devel 1.0 + Catalyst::Runtime 5.80005 + CatalystX::Component::Traits 0.14 + DBD::SQLite 0 + DBIx::Class 0.08114 + ExtUtils::MakeMaker 6.59 + Hash::Merge 0 + List::MoreUtils 0 + Moose 1.12 + MooseX::Types 0 + Storable 0 + Test::Exception 0 + Test::More 0.94 + Test::Requires 0 + Tie::IxHash 0 + Try::Tiny 0 + namespace::autoclean 0.09 + namespace::clean 0 + perl 5.008001 + Catalyst-Plugin-Authentication-0.10022 + pathname: B/BO/BOBTFISH/Catalyst-Plugin-Authentication-0.10022.tar.gz + provides: + Catalyst::Authentication::Credential::NoPassword undef + Catalyst::Authentication::Credential::Password undef + Catalyst::Authentication::Credential::Remote undef + Catalyst::Authentication::Realm undef + Catalyst::Authentication::Realm::Compatibility undef + Catalyst::Authentication::Realm::Progressive undef + Catalyst::Authentication::Store::Minimal undef + Catalyst::Authentication::Store::Null undef + Catalyst::Authentication::User undef + Catalyst::Authentication::User::Hash undef + Catalyst::Plugin::Authentication 0.10022 + Catalyst::Plugin::Authentication::Credential::Password undef + Catalyst::Plugin::Authentication::Store::Minimal undef + Catalyst::Plugin::Authentication::User undef + Catalyst::Plugin::Authentication::User::Hash undef + requirements: + Catalyst::Plugin::Session 0.10 + Catalyst::Runtime 0 + Class::Inspector 0 + Class::MOP 0 + ExtUtils::MakeMaker 6.59 + MRO::Compat 0 + Moose 0 + MooseX::Emulate::Class::Accessor::Fast 0 + String::RewritePrefix 0 + Test::Exception 0 + Test::More 0.88 + Try::Tiny 0 + namespace::autoclean 0 + perl 5.008001 + Catalyst-Plugin-ConfigLoader-0.32 + pathname: B/BO/BOBTFISH/Catalyst-Plugin-ConfigLoader-0.32.tar.gz + provides: + Catalyst::Plugin::ConfigLoader 0.32 + requirements: + Catalyst::Runtime 5.7008 + Config::Any 0.20 + Data::Visitor 0.24 + ExtUtils::MakeMaker 6.59 + MRO::Compat 0.09 + Test::More 0 + perl 5.008 + Catalyst-Plugin-Session-0.37 + pathname: B/BO/BOBTFISH/Catalyst-Plugin-Session-0.37.tar.gz + provides: + Catalyst::Plugin::Session 0.37 + Catalyst::Plugin::Session::State undef + Catalyst::Plugin::Session::Store undef + Catalyst::Plugin::Session::Store::Dummy undef + Catalyst::Plugin::Session::Test::Store 123 + requirements: + Catalyst::Runtime 5.71001 + Digest 0 + ExtUtils::MakeMaker 6.59 + File::Spec 0 + File::Temp 0 + MRO::Compat 0 + Moose 0.76 + MooseX::Emulate::Class::Accessor::Fast 0.00801 + Object::Signature 0 + Test::Deep 0 + Test::Exception 0 + Test::More 0.88 + Test::WWW::Mechanize::PSGI 0 + Tie::RefHash 1.34 + namespace::clean 0.10 + perl 5.008 + Catalyst-Plugin-Session-State-Cookie-0.17 + pathname: M/MS/MSTROUT/Catalyst-Plugin-Session-State-Cookie-0.17.tar.gz + provides: + Catalyst::Plugin::Session::State::Cookie 0.17 + requirements: + Catalyst 5.80005 + Catalyst::Plugin::Session 0.27 + ExtUtils::MakeMaker 6.42 + MRO::Compat 0 + Moose 0 + Test::More 0 + namespace::autoclean 0 + Catalyst-Plugin-Session-Store-DBIC-0.12 + pathname: F/FL/FLORA/Catalyst-Plugin-Session-Store-DBIC-0.12.tar.gz + provides: + Catalyst::Plugin::Session::Store::DBIC 0.12 + Catalyst::Plugin::Session::Store::DBIC::Delegate undef + requirements: + Carp 0 + Catalyst 5.65 + Catalyst::Exception 0 + Catalyst::Plugin::Session::Store::Delegate 0.05 + Class::Accessor::Fast 0 + DBIx::Class 0.07000 + ExtUtils::MakeMaker 0 + FindBin 0 + MIME::Base64 0 + MRO::Compat 0 + Scalar::Util 0 + Storable 0 + Test::More 0 + Test::Warn 0.20 + Catalyst-Plugin-Session-Store-Delegate-0.06 + pathname: B/BO/BOBTFISH/Catalyst-Plugin-Session-Store-Delegate-0.06.tar.gz + provides: + Catalyst::Plugin::Session::Store::Delegate 0.06 + requirements: + Catalyst::Plugin::Session 0.27 + ExtUtils::MakeMaker 6.42 + MRO::Compat 0 + Moose 0 + MooseX::Emulate::Class::Accessor::Fast 0 + Test::More 0 + Test::use::ok 0 + namespace::clean 0 + Catalyst-Plugin-SmartURI-0.036 + pathname: R/RK/RKITOVER/Catalyst-Plugin-SmartURI-0.036.tar.gz + provides: + Catalyst::Plugin::SmartURI 0.036 + Catalyst::Request::SmartURI undef + requirements: + Catalyst 5.80002 + Class::C3::Componentised 0 + ExtUtils::MakeMaker 6.42 + Moose 0 + Task::Weaken 0 + Test::More 0 + URI::SmartURI 0 + namespace::clean 0 + parent 0 + Catalyst-Plugin-Static-Simple-0.30 + pathname: A/AB/ABRAXXA/Catalyst-Plugin-Static-Simple-0.30.tar.gz + provides: + Catalyst::Plugin::Static::Simple 0.30 + requirements: + Catalyst::Runtime 5.80008 + ExtUtils::MakeMaker 6.36 + MIME::Types 1.25 + Moose 0 + MooseX::Types 0 + Test::More 0 + namespace::autoclean 0 + Catalyst-Plugin-Unicode-Encoding-1.9 + pathname: B/BO/BOBTFISH/Catalyst-Plugin-Unicode-Encoding-1.9.tar.gz + provides: + Catalyst::Plugin::Unicode::Encoding 1.9 + requirements: + Catalyst 5.90015 + Class::Data::Inheritable 0 + Encode 2.49 + ExtUtils::MakeMaker 6.36 + HTTP::Status 0 + IO::Scalar 0 + LWP 5.837 + Test::More 0.88 + Try::Tiny 0 + URI 1.36 + Catalyst-Runtime-5.90020 + pathname: J/JJ/JJNAPIORK/Catalyst-Runtime-5.90020.tar.gz + provides: + Catalyst 5.90020 + Catalyst::Action undef + Catalyst::ActionChain undef + Catalyst::ActionContainer undef + Catalyst::ActionRole::HTTPMethods undef + Catalyst::Base undef + Catalyst::ClassData undef + Catalyst::Component undef + Catalyst::Component::ApplicationAttribute undef + Catalyst::Component::ContextClosure undef + Catalyst::Controller undef + Catalyst::DispatchType undef + Catalyst::DispatchType::Chained undef + Catalyst::DispatchType::Default undef + Catalyst::DispatchType::Index undef + Catalyst::DispatchType::Path undef + Catalyst::DispatchType::Regex undef + Catalyst::Dispatcher undef + Catalyst::Engine undef + Catalyst::EngineLoader undef + Catalyst::Exception undef + Catalyst::Exception::Base undef + Catalyst::Exception::Basic undef + Catalyst::Exception::Detach undef + Catalyst::Exception::Go undef + Catalyst::Exception::Interface undef + Catalyst::Log undef + Catalyst::Model undef + Catalyst::Request undef + Catalyst::Request::Upload undef + Catalyst::Response undef + Catalyst::Runtime 5.90020 + Catalyst::Script::CGI undef + Catalyst::Script::Create undef + Catalyst::Script::FastCGI undef + Catalyst::Script::Server undef + Catalyst::Script::Test undef + Catalyst::ScriptRole undef + Catalyst::ScriptRunner undef + Catalyst::Stats undef + Catalyst::Test 3.4 + Catalyst::Utils undef + Catalyst::View undef + requirements: + CGI::Simple::Cookie 1.109 + Carp 0 + Class::C3::Adopt::NEXT 0.07 + Class::Data::Inheritable 0 + Class::Load 0.12 + Class::MOP 0.95 + Data::Dump 0 + Data::OptList 0 + ExtUtils::MakeMaker 6.59 + HTML::Entities 0 + HTML::HeadParser 0 + HTTP::Body 1.06 + HTTP::Headers 1.64 + HTTP::Request 5.814 + HTTP::Request::AsCGI 1.0 + HTTP::Request::Common 0 + HTTP::Response 5.813 + LWP::UserAgent 0 + List::MoreUtils 0 + MRO::Compat 0 + Module::Pluggable 3.9 + Moose 1.03 + MooseX::Emulate::Class::Accessor::Fast 0.00903 + MooseX::Getopt 0.48 + MooseX::MethodAttributes::Inheritable 0.24 + MooseX::Role::WithOverloading 0.09 + Path::Class 0.09 + Plack 0.9991 + Plack::Middleware::ReverseProxy 0.04 + Plack::Test::ExternalServer 0 + Safe::Isa 0 + Scalar::Util 0 + String::RewritePrefix 0.004 + Sub::Exporter 0 + Task::Weaken 0 + Test::Exception 0 + Test::More 0.88 + Text::Balanced 0 + Text::SimpleTable 0.03 + Time::HiRes 0 + Tree::Simple 1.15 + Tree::Simple::Visitor::FindByPath 0 + Try::Tiny 0 + URI 1.35 + namespace::autoclean 0.09 + namespace::clean 0.23 + perl 5.008003 + Catalyst-View-TT-0.41 + pathname: J/JJ/JJNAPIORK/Catalyst-View-TT-0.41.tar.gz + provides: + Catalyst::Helper::View::TT undef + Catalyst::Helper::View::TTSite undef + Catalyst::View::TT 0.41 + requirements: + Catalyst 5.7 + Class::Accessor 0 + ExtUtils::MakeMaker 6.59 + MRO::Compat 0 + Path::Class 0 + Template 0 + Template::Timer 0 + Test::More 0 + perl 5.008001 + CatalystX-Component-Traits-0.16 + pathname: B/BO/BOBTFISH/CatalystX-Component-Traits-0.16.tar.gz + provides: + CatalystX::Component::Traits 0.16 + requirements: + Catalyst::Runtime 5.80005 + ExtUtils::MakeMaker 6.42 + List::MoreUtils 0 + Module::Pluggable 3.9 + MooseX::Traits::Pluggable 0.08 + Scalar::Util 0 + Test::More 0.88 + namespace::autoclean 0 + Class-Accessor-0.34 + pathname: K/KA/KASEI/Class-Accessor-0.34.tar.gz + provides: + Class::Accessor 0.34 + Class::Accessor::Fast 0.34 + Class::Accessor::Faster 0.34 + requirements: + ExtUtils::MakeMaker 0 + base 1.01 + Class-Accessor-Chained-0.01 + pathname: R/RC/RCLAMP/Class-Accessor-Chained-0.01.tar.gz + provides: + Class::Accessor::Chained 0.01 + Class::Accessor::Chained::Fast undef + requirements: + Class::Accessor 0 + Test::More 0 + Class-Accessor-Grouped-0.10009 + pathname: R/RI/RIBASUSHI/Class-Accessor-Grouped-0.10009.tar.gz + provides: + Class::Accessor::Grouped 0.10009 + requirements: + Carp 0 + Class::XSAccessor 1.15 + ExtUtils::CBuilder 0.27 + ExtUtils::MakeMaker 6.59 + Module::Runtime 0.012 + Scalar::Util 0 + Sub::Name 0.05 + Test::Exception 0.31 + Test::More 0.94 + perl 5.006 + Class-C3-0.24 + pathname: F/FL/FLORA/Class-C3-0.24.tar.gz + provides: + Class::C3 0.24 + requirements: + Algorithm::C3 0.07 + ExtUtils::CBuilder 0.27 + ExtUtils::MakeMaker 6.59 + Scalar::Util 0 + Test::More 0.47 + perl 5.006002 + Class-C3-Adopt-NEXT-0.13 + pathname: F/FL/FLORA/Class-C3-Adopt-NEXT-0.13.tar.gz + provides: + C3NT undef + C3NT::Bar undef + C3NT::Baz undef + C3NT::Child undef + C3NT::Foo undef + C3NT::Quux undef + C3NT_nowarn undef + Class::C3::Adopt::NEXT 0.13 + requirements: + ExtUtils::MakeMaker 6.31 + FindBin 0 + List::MoreUtils 0 + MRO::Compat 0 + NEXT 0 + Test::Exception 0.27 + Test::More 0 + vars 0 + warnings::register 0 + Class-C3-Componentised-1.001000 + pathname: F/FR/FREW/Class-C3-Componentised-1.001000.tar.gz + provides: + Class::C3::Componentised 1.001000 + Class::C3::Componentised::ApplyHooks undef + requirements: + Carp 0 + Class::C3 0.20 + Class::Inspector 0 + ExtUtils::MakeMaker 6.42 + MRO::Compat 0 + Test::Exception 0 + perl 5.006002 + Class-Data-Inheritable-0.08 + pathname: T/TM/TMTM/Class-Data-Inheritable-0.08.tar.gz + provides: + Class::Data::Inheritable 0.08 + requirements: + ExtUtils::MakeMaker 0 + Class-Factory-Util-1.7 + pathname: D/DR/DROLSKY/Class-Factory-Util-1.7.tar.gz + provides: + Class::Factory::Util 1.7 + requirements: + Class-Inspector-1.28 + pathname: A/AD/ADAMK/Class-Inspector-1.28.tar.gz + provides: + Class::Inspector 1.28 + Class::Inspector::Functions 1.28 + requirements: + ExtUtils::MakeMaker 6.59 + File::Spec 0.80 + Test::More 0.47 + perl 5.006 + Class-Load-0.20 + pathname: D/DR/DROLSKY/Class-Load-0.20.tar.gz + provides: + Class::Load 0.20 + Class::Load::Error::DieAfterBeginIsa undef + Class::Load::Error::DieAfterIsa undef + Class::Load::Error::SyntaxErrorAfterIsa undef + Class::Load::OK undef + Class::Load::PP 0.20 + Class::Load::Stash undef + Class::Load::Stash::Sub undef + Class::Load::SyntaxError undef + Class::Load::VersionCheck 42 + Class::Load::VersionCheck2 42 + requirements: + Carp 0 + Data::OptList 0 + Exporter 0 + ExtUtils::MakeMaker 6.30 + Module::Implementation 0.04 + Module::Runtime 0.012 + Package::Stash 0.14 + Scalar::Util 0 + Test::Fatal 0 + Test::More 0.88 + Test::Requires 0 + Try::Tiny 0 + base 0 + constant 0 + strict 0 + version 0 + warnings 0 + Class-Load-XS-0.06 + pathname: D/DR/DROLSKY/Class-Load-XS-0.06.tar.gz + provides: + Class::Load::Error::DieAfterBeginIsa undef + Class::Load::Error::DieAfterIsa undef + Class::Load::Error::SyntaxErrorAfterIsa undef + Class::Load::OK undef + Class::Load::Stash undef + Class::Load::Stash::Sub undef + Class::Load::SyntaxError undef + Class::Load::VersionCheck 42 + Class::Load::VersionCheck2 42 + Class::Load::XS 0.06 + requirements: + Class::Load 0.20 + ExtUtils::CBuilder 0 + Module::Build 0.3601 + Module::Implementation 0.04 + Test::Fatal 0 + Test::More 0.88 + Test::Requires 0 + XSLoader 0 + constant 0 + strict 0 + version 0 + warnings 0 + Class-Method-Modifiers-2.04 + pathname: E/ET/ETHER/Class-Method-Modifiers-2.04.tar.gz + provides: + Class::Method::Modifiers 2.04 + requirements: + ExtUtils::MakeMaker 6.59 + Test::Fatal 0 + Test::More 0 + perl 5.006 + Class-Mix-0.005 + pathname: Z/ZE/ZEFRAM/Class-Mix-0.005.tar.gz + provides: + Class::Mix 0.005 + requirements: + Carp 0 + Exporter 0 + Module::Build 0 + Params::Classify 0 + Test::More 0 + constant 0 + if 0 + parent 0 + perl 5.006 + strict 0 + warnings 0 + Class-Singleton-1.4 + pathname: A/AB/ABW/Class-Singleton-1.4.tar.gz + provides: + 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: + Class::Unload 0.07 + requirements: + Class::Inspector 0 + ExtUtils::MakeMaker 6.31 + Test::More 0 + Class-XSAccessor-1.16 + pathname: S/SM/SMUELLER/Class-XSAccessor-1.16.tar.gz + provides: + Class::XSAccessor 1.16 + Class::XSAccessor::Array 1.14 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0 + XSLoader 0 + perl 5.008 + Clone-0.34 + pathname: G/GA/GARU/Clone-0.34.tar.gz + provides: + Clone 0.34 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0 + Compress-Raw-Bzip2-2.060 + pathname: P/PM/PMQS/Compress-Raw-Bzip2-2.060.tar.gz + provides: + Compress::Raw::Bzip2 2.060 + requirements: + ExtUtils::MakeMaker 0 + Compress-Raw-Zlib-2.060 + pathname: P/PM/PMQS/Compress-Raw-Zlib-2.060.tar.gz + provides: + Compress::Raw::Zlib 2.060 + requirements: + ExtUtils::MakeMaker 0 + Config-Any-0.23 + pathname: B/BR/BRICAS/Config-Any-0.23.tar.gz + provides: + Config::Any 0.23 + Config::Any::Base undef + Config::Any::General undef + Config::Any::INI undef + Config::Any::JSON undef + Config::Any::Perl undef + Config::Any::XML undef + Config::Any::YAML undef + requirements: + ExtUtils::MakeMaker 6.42 + Module::Pluggable 3.01 + Test::More 0 + perl 5.006 + Config-General-2.51 + pathname: T/TL/TLINDEN/Config-General-2.51.tar.gz + provides: + Config::General 2.51 + Config::General::Extended 2.05 + Config::General::Interpolated 2.14 + requirements: + ExtUtils::MakeMaker 0 + File::Glob 0 + File::Spec::Functions 0 + FileHandle 0 + IO::File 0 + Context-Preserve-0.01 + pathname: J/JR/JROCKWAY/Context-Preserve-0.01.tar.gz + provides: + Context::Preserve 0.01 + requirements: + Exporter 0 + ExtUtils::MakeMaker 0 + Test::Exception 0 + Test::More 0 + ok 0 + Crypt-Eksblowfish-0.009 + pathname: Z/ZE/ZEFRAM/Crypt-Eksblowfish-0.009.tar.gz + provides: + Crypt::Eksblowfish 0.009 + Crypt::Eksblowfish::Bcrypt 0.009 + Crypt::Eksblowfish::Blowfish 0.009 + Crypt::Eksblowfish::Family 0.009 + Crypt::Eksblowfish::Subkeyed 0.009 + Crypt::Eksblowfish::Uklblowfish 0.009 + requirements: + Carp 0 + Class::Mix 0.001 + Exporter 0 + ExtUtils::CBuilder 0.15 + MIME::Base64 2.21 + Module::Build 0 + Test::More 0 + XSLoader 0 + parent 0 + perl 5.006 + strict 0 + warnings 0 + Crypt-SSLeay-0.64 + pathname: N/NA/NANIS/Crypt-SSLeay-0.64.tar.gz + provides: + Crypt::SSLeay 0.64 + Crypt::SSLeay::CTX undef + Crypt::SSLeay::Conn undef + Crypt::SSLeay::Err undef + Crypt::SSLeay::MainContext undef + Crypt::SSLeay::X509 undef + Net::SSL 2.85 + requirements: + ExtUtils::MakeMaker 0 + LWP::Protocol::https 6.02 + MIME::Base64 0 + Test::More 0.88 + Try::Tiny 0.09 + DBD-Pg-2.19.3 + pathname: T/TU/TURNSTEP/DBD-Pg-2.19.3.tar.gz + provides: + Bundle::DBD::Pg 2.019003 + DBD::Pg 2.019003 + requirements: + DBI 1.52 + ExtUtils::MakeMaker 6.11 + Test::More 0.61 + Time::HiRes 0 + version 0 + DBD-SQLite-1.37 + pathname: A/AD/ADAMK/DBD-SQLite-1.37.tar.gz + provides: + DBD::SQLite 1.37 + DBD::SQLite::_WriteOnceHash 1.37 + DBD::SQLite::db 1.37 + DBD::SQLite::dr 1.37 + requirements: + DBI 1.57 + ExtUtils::MakeMaker 6.48 + File::Spec 0.82 + Test::Builder 0.86 + Test::More 0.47 + Tie::Hash 0 + perl 5.006 + DBI-1.623 + pathname: T/TI/TIMB/DBI-1.623.tar.gz + provides: + Bundle::DBI 12.008695 + DBD::DBM 0.08 + DBD::DBM::Statement 0.08 + DBD::DBM::Table 0.08 + DBD::DBM::db 0.08 + DBD::DBM::dr 0.08 + DBD::DBM::st 0.08 + DBD::ExampleP 12.014310 + DBD::ExampleP::db 12.014310 + DBD::ExampleP::dr 12.014310 + DBD::ExampleP::st 12.014310 + DBD::File 0.41 + DBD::File::DataSource::File 0.41 + DBD::File::DataSource::Stream 0.41 + DBD::File::Statement 0.41 + DBD::File::Table 0.41 + DBD::File::TableSource::FileSystem 0.41 + DBD::File::db 0.41 + DBD::File::dr 0.41 + DBD::File::st 0.41 + DBD::Gofer 0.015326 + DBD::Gofer::Policy::Base 0.010087 + DBD::Gofer::Policy::classic 0.010087 + DBD::Gofer::Policy::pedantic 0.010087 + DBD::Gofer::Policy::rush 0.010087 + DBD::Gofer::Transport::Base 0.014120 + DBD::Gofer::Transport::corostream undef + DBD::Gofer::Transport::null 0.010087 + DBD::Gofer::Transport::pipeone 0.010087 + DBD::Gofer::Transport::stream 0.014598 + DBD::Gofer::db 0.015326 + DBD::Gofer::dr 0.015326 + DBD::Gofer::st 0.015326 + DBD::NullP 12.014714 + DBD::NullP::db 12.014714 + DBD::NullP::dr 12.014714 + DBD::NullP::st 12.014714 + DBD::Proxy 0.2004 + DBD::Proxy::RPC::PlClient 0.2004 + DBD::Proxy::db 0.2004 + DBD::Proxy::dr 0.2004 + DBD::Proxy::st 0.2004 + DBD::Sponge 12.010002 + DBD::Sponge::db 12.010002 + DBD::Sponge::dr 12.010002 + DBD::Sponge::st 12.010002 + DBDI 12.015128 + DBI 1.623 + DBI::Const::GetInfo::ANSI 2.008696 + DBI::Const::GetInfo::ODBC 2.011373 + DBI::Const::GetInfoReturn 2.008696 + DBI::Const::GetInfoType 2.008696 + DBI::DBD 12.015128 + DBI::DBD::Metadata 2.014213 + DBI::DBD::SqlEngine 0.05 + DBI::DBD::SqlEngine::DataSource 0.05 + DBI::DBD::SqlEngine::Statement 0.05 + DBI::DBD::SqlEngine::Table 0.05 + DBI::DBD::SqlEngine::TableSource 0.05 + DBI::DBD::SqlEngine::TieMeta 0.05 + DBI::DBD::SqlEngine::TieTables 0.05 + DBI::DBD::SqlEngine::db 0.05 + DBI::DBD::SqlEngine::dr 0.05 + DBI::DBD::SqlEngine::st 0.05 + DBI::FAQ 1.014934 + DBI::Gofer::Execute 0.014282 + DBI::Gofer::Request 0.012536 + DBI::Gofer::Response 0.011565 + DBI::Gofer::Serializer::Base 0.009949 + DBI::Gofer::Serializer::DataDumper 0.009949 + DBI::Gofer::Serializer::Storable 0.009949 + DBI::Gofer::Transport::Base 0.012536 + DBI::Gofer::Transport::pipeone 0.012536 + DBI::Gofer::Transport::stream 0.012536 + DBI::Profile 2.015064 + DBI::ProfileData 2.010007 + DBI::ProfileDumper 2.015324 + DBI::ProfileDumper::Apache 2.014120 + DBI::ProfileSubs 0.009395 + DBI::ProxyServer 0.3005 + DBI::ProxyServer::db 0.3005 + DBI::ProxyServer::dr 0.3005 + DBI::ProxyServer::st 0.3005 + DBI::SQL::Nano 1.015542 + DBI::SQL::Nano::Statement_ 1.015542 + DBI::SQL::Nano::Table_ 1.015542 + DBI::Util::CacheMemory 0.010314 + DBI::Util::_accessor 0.009478 + DBI::common 1.623 + requirements: + ExtUtils::MakeMaker 6.48 + Test::Simple 0.90 + perl 5.008 + DBIx-Class-0.08209 + pathname: A/AB/ABRAXXA/DBIx-Class-0.08209.tar.gz + provides: + DBIx::Class 0.08209 + DBIx::Class::AccessorGroup undef + DBIx::Class::Admin undef + DBIx::Class::CDBICompat undef + DBIx::Class::Core undef + DBIx::Class::Cursor undef + DBIx::Class::DB undef + DBIx::Class::Exception undef + DBIx::Class::FilterColumn undef + DBIx::Class::InflateColumn undef + DBIx::Class::InflateColumn::DateTime undef + DBIx::Class::InflateColumn::File undef + DBIx::Class::Optional::Dependencies undef + DBIx::Class::Ordered undef + DBIx::Class::PK undef + DBIx::Class::PK::Auto undef + DBIx::Class::Relationship undef + DBIx::Class::Relationship::Base undef + DBIx::Class::ResultClass::HashRefInflator undef + DBIx::Class::ResultSet undef + DBIx::Class::ResultSetColumn undef + DBIx::Class::ResultSetManager undef + DBIx::Class::ResultSource undef + DBIx::Class::ResultSource::Table undef + DBIx::Class::ResultSource::View undef + DBIx::Class::ResultSourceHandle undef + DBIx::Class::ResultSourceProxy::Table undef + DBIx::Class::Row undef + DBIx::Class::SQLMaker undef + DBIx::Class::SQLMaker::LimitDialects undef + DBIx::Class::SQLMaker::OracleJoins undef + DBIx::Class::Schema undef + DBIx::Class::Schema::Versioned undef + DBIx::Class::Serialize::Storable undef + DBIx::Class::StartupCheck undef + DBIx::Class::Storage undef + DBIx::Class::Storage::DBI undef + DBIx::Class::Storage::DBI::ACCESS undef + DBIx::Class::Storage::DBI::ADO undef + DBIx::Class::Storage::DBI::ADO::MS_Jet undef + DBIx::Class::Storage::DBI::ADO::MS_Jet::Cursor undef + DBIx::Class::Storage::DBI::ADO::Microsoft_SQL_Server undef + DBIx::Class::Storage::DBI::ADO::Microsoft_SQL_Server::Cursor undef + DBIx::Class::Storage::DBI::AutoCast undef + DBIx::Class::Storage::DBI::Cursor undef + DBIx::Class::Storage::DBI::DB2 undef + DBIx::Class::Storage::DBI::Firebird undef + DBIx::Class::Storage::DBI::Firebird::Common undef + DBIx::Class::Storage::DBI::IdentityInsert undef + DBIx::Class::Storage::DBI::Informix undef + DBIx::Class::Storage::DBI::InterBase undef + DBIx::Class::Storage::DBI::MSSQL undef + DBIx::Class::Storage::DBI::NoBindVars undef + DBIx::Class::Storage::DBI::ODBC undef + DBIx::Class::Storage::DBI::ODBC::ACCESS undef + DBIx::Class::Storage::DBI::ODBC::DB2_400_SQL undef + DBIx::Class::Storage::DBI::ODBC::Firebird undef + DBIx::Class::Storage::DBI::ODBC::Microsoft_SQL_Server undef + DBIx::Class::Storage::DBI::ODBC::SQL_Anywhere undef + DBIx::Class::Storage::DBI::Oracle undef + DBIx::Class::Storage::DBI::Oracle::Generic undef + DBIx::Class::Storage::DBI::Oracle::WhereJoins undef + DBIx::Class::Storage::DBI::Pg undef + DBIx::Class::Storage::DBI::Replicated undef + DBIx::Class::Storage::DBI::Replicated::Balancer undef + DBIx::Class::Storage::DBI::Replicated::Balancer::First undef + DBIx::Class::Storage::DBI::Replicated::Balancer::Random undef + DBIx::Class::Storage::DBI::Replicated::Pool undef + DBIx::Class::Storage::DBI::Replicated::Replicant undef + DBIx::Class::Storage::DBI::Replicated::WithDSN undef + DBIx::Class::Storage::DBI::SQLAnywhere undef + DBIx::Class::Storage::DBI::SQLAnywhere::Cursor undef + DBIx::Class::Storage::DBI::SQLite undef + DBIx::Class::Storage::DBI::Sybase undef + DBIx::Class::Storage::DBI::Sybase::ASE undef + DBIx::Class::Storage::DBI::Sybase::ASE::NoBindVars undef + DBIx::Class::Storage::DBI::Sybase::FreeTDS undef + DBIx::Class::Storage::DBI::Sybase::MSSQL undef + DBIx::Class::Storage::DBI::Sybase::Microsoft_SQL_Server undef + DBIx::Class::Storage::DBI::Sybase::Microsoft_SQL_Server::NoBindVars undef + DBIx::Class::Storage::DBI::UniqueIdentifier undef + DBIx::Class::Storage::DBI::mysql undef + DBIx::Class::Storage::Statistics undef + DBIx::Class::Storage::TxnScopeGuard undef + DBIx::Class::UTF8Columns undef + SQL::Translator::Parser::DBIx::Class 1.10 + SQL::Translator::Producer::DBIx::Class::File 0.1 + requirements: + Class::Accessor::Grouped 0.10009 + Class::C3::Componentised 1.0009 + Class::Inspector 1.24 + Config::Any 0.20 + Context::Preserve 0.01 + DBD::SQLite 1.29 + DBI 1.57 + Data::Compare 1.22 + Data::Dumper::Concise 2.020 + Data::Page 2.00 + Devel::GlobalDestruction 0.09 + ExtUtils::MakeMaker 6.59 + File::Spec 3.30 + File::Temp 0.22 + Hash::Merge 0.12 + List::Util 1.16 + MRO::Compat 0.12 + Module::Find 0.07 + Moo 1.000006 + Package::Stash 0.28 + Path::Class 0.18 + SQL::Abstract 1.73 + Scope::Guard 0.03 + Sub::Name 0.04 + Test::Builder 0.94 + Test::Exception 0.31 + Test::More 0.94 + Test::Warn 0.21 + Text::Balanced 2.00 + Try::Tiny 0.07 + namespace::clean 0.24 + perl 5.008001 + DBIx-Class-EncodedColumn-0.00011 + pathname: W/WR/WREIS/DBIx-Class-EncodedColumn-0.00011.tar.gz + provides: + DBIx::Class::EncodedColumn 0.00011 + DBIx::Class::EncodedColumn::Crypt 0.01 + DBIx::Class::EncodedColumn::Crypt::Eksblowfish::Bcrypt 0.00001 + DBIx::Class::EncodedColumn::Crypt::OpenPGP 0.01 + DBIx::Class::EncodedColumn::Digest 0.00001 + requirements: + DBD::SQLite 0 + DBIx::Class 0.06002 + Dir::Self 0 + ExtUtils::MakeMaker 6.42 + File::Spec 0 + File::Temp 0 + Sub::Name 0.04 + Test::More 0 + DBIx-Class-IntrospectableM2M-0.001001 + pathname: G/GR/GRODITI/DBIx-Class-IntrospectableM2M-0.001001.tar.gz + provides: + DBIx::Class::IntrospectableM2M 0.001001 + requirements: + DBIx::Class 0 + ExtUtils::MakeMaker 6.72 + Test::More 0 + DBIx-Class-Schema-Loader-0.07035 + pathname: G/GE/GENEHACK/DBIx-Class-Schema-Loader-0.07035.tar.gz + provides: + DBIx::Class::Schema::Loader 0.07035 + DBIx::Class::Schema::Loader::Base 0.07035 + DBIx::Class::Schema::Loader::DBI 0.07035 + DBIx::Class::Schema::Loader::DBI::ADO 0.07035 + DBIx::Class::Schema::Loader::DBI::ADO::MS_Jet 0.07035 + DBIx::Class::Schema::Loader::DBI::ADO::Microsoft_SQL_Server 0.07035 + DBIx::Class::Schema::Loader::DBI::Component::QuotedDefault 0.07035 + DBIx::Class::Schema::Loader::DBI::DB2 0.07035 + DBIx::Class::Schema::Loader::DBI::Firebird 0.07035 + DBIx::Class::Schema::Loader::DBI::Informix 0.07035 + DBIx::Class::Schema::Loader::DBI::InterBase 0.07035 + DBIx::Class::Schema::Loader::DBI::MSSQL 0.07035 + DBIx::Class::Schema::Loader::DBI::ODBC 0.07035 + DBIx::Class::Schema::Loader::DBI::ODBC::ACCESS 0.07035 + DBIx::Class::Schema::Loader::DBI::ODBC::Firebird 0.07035 + DBIx::Class::Schema::Loader::DBI::ODBC::Microsoft_SQL_Server 0.07035 + DBIx::Class::Schema::Loader::DBI::ODBC::SQL_Anywhere 0.07035 + DBIx::Class::Schema::Loader::DBI::Oracle 0.07035 + DBIx::Class::Schema::Loader::DBI::Pg 0.07035 + DBIx::Class::Schema::Loader::DBI::SQLAnywhere 0.07035 + DBIx::Class::Schema::Loader::DBI::SQLite 0.07035 + DBIx::Class::Schema::Loader::DBI::Sybase 0.07035 + DBIx::Class::Schema::Loader::DBI::Sybase::Common 0.07035 + DBIx::Class::Schema::Loader::DBI::Sybase::Microsoft_SQL_Server 0.07035 + DBIx::Class::Schema::Loader::DBI::Writing 0.07035 + DBIx::Class::Schema::Loader::DBI::mysql 0.07035 + DBIx::Class::Schema::Loader::DBObject undef + DBIx::Class::Schema::Loader::DBObject::Informix undef + DBIx::Class::Schema::Loader::DBObject::Sybase undef + DBIx::Class::Schema::Loader::Optional::Dependencies undef + DBIx::Class::Schema::Loader::RelBuilder 0.07035 + DBIx::Class::Schema::Loader::RelBuilder::Compat::v0_040 0.07035 + DBIx::Class::Schema::Loader::RelBuilder::Compat::v0_05 0.07035 + DBIx::Class::Schema::Loader::RelBuilder::Compat::v0_06 0.07035 + DBIx::Class::Schema::Loader::RelBuilder::Compat::v0_07 0.07035 + DBIx::Class::Schema::Loader::Table undef + DBIx::Class::Schema::Loader::Table::Informix undef + DBIx::Class::Schema::Loader::Table::Sybase undef + requirements: + Carp::Clan 0 + Class::Accessor::Grouped 0.10008 + Class::C3::Componentised 1.0008 + Class::Inspector 1.27 + Class::Unload 0.07 + DBD::SQLite 1.29 + DBIx::Class 0.08127 + DBIx::Class::IntrospectableM2M 0 + Data::Dump 1.06 + Digest::MD5 2.36 + Exporter 5.63 + ExtUtils::MakeMaker 6.59 + File::Path 2.07 + File::Temp 0.16 + Hash::Merge 0.12 + Lingua::EN::Inflect::Number 1.1 + Lingua::EN::Inflect::Phrase 0.15 + Lingua::EN::Tagger 0.23 + List::MoreUtils 0.32 + MRO::Compat 0.09 + Scope::Guard 0.20 + String::CamelCase 0.02 + String::ToIdentifier::EN 0.05 + Sub::Name 0 + Test::Exception 0.31 + Test::More 0.94 + Test::Warn 0.21 + Try::Tiny 0 + namespace::clean 0.23 + perl 5.008001 + Data-Compare-1.22 + pathname: D/DC/DCANTRELL/Data-Compare-1.22.tar.gz + provides: + Data::Compare 1.22 + Data::Compare::Plugins::Scalar::Properties 1 + requirements: + ExtUtils::MakeMaker 0 + File::Find::Rule 0.1 + Scalar::Util 0 + Data-Dump-1.21 + pathname: G/GA/GAAS/Data-Dump-1.21.tar.gz + provides: + Data::Dump 1.21 + Data::Dump::FilterContext undef + Data::Dump::Filtered undef + Data::Dump::Trace 0.02 + Data::Dump::Trace::Call 0.02 + Data::Dump::Trace::Wrapper 0.02 + requirements: + ExtUtils::MakeMaker 0 + Symbol 0 + Test 0 + perl 5.006 + Data-Dumper-2.145 + pathname: S/SM/SMUELLER/Data-Dumper-2.145.tar.gz + provides: + Data::Dumper 2.145 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0.98 + Data-Dumper-Concise-2.020 + pathname: F/FR/FREW/Data-Dumper-Concise-2.020.tar.gz + provides: + Data::Dumper::Concise 2.020 + Data::Dumper::Concise::Sugar undef + Devel::Dwarn undef + requirements: + ExtUtils::MakeMaker 6.42 + perl 5.006 + Data-OptList-0.107 + pathname: R/RJ/RJBS/Data-OptList-0.107.tar.gz + provides: + Data::OptList 0.107 + requirements: + ExtUtils::MakeMaker 6.30 + List::Util 0 + Params::Util 0 + Sub::Install 0.921 + Test::More 0.96 + Data-Page-2.02 + pathname: L/LB/LBROCARD/Data-Page-2.02.tar.gz + provides: + Data::Page 2.02 + requirements: + Class::Accessor::Chained::Fast 0 + Module::Build 0.35 + Test::Exception 0 + Test::More 0 + Data-Visitor-0.28 + pathname: D/DO/DOY/Data-Visitor-0.28.tar.gz + provides: + Data::Visitor 0.28 + Data::Visitor::Callback 0.28 + requirements: + Class::Load 0.06 + ExtUtils::MakeMaker 6.30 + Moose 0.89 + Task::Weaken 0 + Test::More 0.88 + Test::Requires 0 + Tie::ToObject 0.01 + namespace::clean 0.19 + DateTime-0.78 + pathname: D/DR/DROLSKY/DateTime-0.78.tar.gz + provides: + DateTime 0.78 + DateTime::Duration 0.78 + DateTime::Helpers 0.78 + DateTime::Infinite 0.78 + DateTime::Infinite::Future 0.78 + DateTime::Infinite::Past 0.78 + DateTime::LeapSecond 0.78 + inc::MyModuleBuild undef + requirements: + Carp 0 + DateTime::Locale 0.41 + DateTime::TimeZone 1.09 + ExtUtils::CBuilder 0 + Module::Build 0.3601 + POSIX 0 + Params::Validate 0.76 + Scalar::Util 0 + Storable 0 + Test::Fatal 0 + Test::More 0.88 + XSLoader 0 + base 0 + constant 0 + integer 0 + overload 0 + perl 5.008001 + strict 0 + utf8 0 + vars 0 + warnings 0 + DateTime-Format-Builder-0.80 + pathname: D/DR/DROLSKY/DateTime-Format-Builder-0.80.tar.gz + provides: + DateTime::Format::Builder 0.80 + DateTime::Format::Builder::Parser 0.77 + DateTime::Format::Builder::Parser::Dispatch 0.78 + DateTime::Format::Builder::Parser::Quick 0.77 + DateTime::Format::Builder::Parser::Regex 0.77 + DateTime::Format::Builder::Parser::Strptime 0.77 + DateTime::Format::Builder::Parser::generic 0.77 + requirements: + Class::Factory::Util 1.6 + DateTime 0.12 + DateTime::Format::Strptime 1.04 + Module::Build 0.36 + Params::Validate 0.72 + Task::Weaken 0 + DateTime-Format-HTTP-0.40 + pathname: C/CK/CKRAS/DateTime-Format-HTTP-0.40.tar.gz + provides: + DateTime::Format::HTTP 0.40 + requirements: + DateTime 0.17 + HTTP::Date 1.44 + Module::Build 0.36 + Test::More 0.47 + DateTime-Format-ISO8601-0.08 + pathname: J/JH/JHOBLITT/DateTime-Format-ISO8601-0.08.tar.gz + provides: + DateTime::Format::ISO8601 0.08 + requirements: + DateTime 0.18 + DateTime::Format::Builder 0.77 + Module::Build 0.38 + DateTime-Format-Mail-0.3001 + pathname: D/DR/DROLSKY/DateTime-Format-Mail-0.3001.tar.gz + provides: + DateTime::Format::Mail 0.3001 + requirements: + DateTime 0.1705 + Module::Build 0 + Params::Validate 0.67 + Test::More 0.47 + DateTime-Format-Pg-0.16008 + pathname: D/DM/DMAKI/DateTime-Format-Pg-0.16008.tar.gz + provides: + DateTime::Format::Pg 0.16008 + requirements: + DateTime 0.10 + DateTime::Format::Builder 0.72 + DateTime::TimeZone 0.05 + ExtUtils::MakeMaker 6.36 + Test::More 0 + DateTime-Format-Strptime-1.52 + pathname: D/DR/DROLSKY/DateTime-Format-Strptime-1.52.tar.gz + provides: + DateTime::Format::Strptime 1.52 + requirements: + Carp 0 + DateTime 0.44 + DateTime::Locale 0.45 + DateTime::TimeZone 0.79 + Exporter 0 + ExtUtils::MakeMaker 6.30 + Params::Validate 0.64 + Test::More 0.88 + strict 0 + vars 0 + DateTime-Format-W3CDTF-0.06 + pathname: G/GW/GWILLIAMS/DateTime-Format-W3CDTF-0.06.tar.gz + provides: + DateTime::Format::W3CDTF 0.06 + requirements: + DateTime 0 + ExtUtils::MakeMaker 6.42 + Test::More 0.61 + DateTime-Locale-0.45 + pathname: D/DR/DROLSKY/DateTime-Locale-0.45.tar.gz + provides: + DateTime::Locale 0.45 + DateTime::Locale::Base undef + DateTime::Locale::Catalog undef + DateTime::Locale::aa undef + DateTime::Locale::aa_DJ undef + DateTime::Locale::aa_ER undef + DateTime::Locale::aa_ER_SAAHO undef + DateTime::Locale::aa_ET undef + DateTime::Locale::af undef + DateTime::Locale::af_NA undef + DateTime::Locale::af_ZA undef + DateTime::Locale::ak undef + DateTime::Locale::ak_GH undef + DateTime::Locale::am undef + DateTime::Locale::am_ET undef + DateTime::Locale::ar undef + DateTime::Locale::ar_AE undef + DateTime::Locale::ar_BH undef + DateTime::Locale::ar_DZ undef + DateTime::Locale::ar_EG undef + DateTime::Locale::ar_IQ undef + DateTime::Locale::ar_JO undef + DateTime::Locale::ar_KW undef + DateTime::Locale::ar_LB undef + DateTime::Locale::ar_LY undef + DateTime::Locale::ar_MA undef + DateTime::Locale::ar_OM undef + DateTime::Locale::ar_QA undef + DateTime::Locale::ar_SA undef + DateTime::Locale::ar_SD undef + DateTime::Locale::ar_SY undef + DateTime::Locale::ar_TN undef + DateTime::Locale::ar_YE undef + DateTime::Locale::as undef + DateTime::Locale::as_IN undef + DateTime::Locale::az undef + DateTime::Locale::az_AZ undef + DateTime::Locale::az_Cyrl undef + DateTime::Locale::az_Cyrl_AZ undef + DateTime::Locale::az_Latn undef + DateTime::Locale::az_Latn_AZ undef + DateTime::Locale::be undef + DateTime::Locale::be_BY undef + DateTime::Locale::bg undef + DateTime::Locale::bg_BG undef + DateTime::Locale::bn undef + DateTime::Locale::bn_BD undef + DateTime::Locale::bn_IN undef + DateTime::Locale::bo undef + DateTime::Locale::bo_CN undef + DateTime::Locale::bo_IN undef + DateTime::Locale::bs undef + DateTime::Locale::bs_BA undef + DateTime::Locale::byn undef + DateTime::Locale::byn_ER undef + DateTime::Locale::ca undef + DateTime::Locale::ca_ES undef + DateTime::Locale::cch undef + DateTime::Locale::cch_NG undef + DateTime::Locale::cop undef + DateTime::Locale::cs undef + DateTime::Locale::cs_CZ undef + DateTime::Locale::cy undef + DateTime::Locale::cy_GB undef + DateTime::Locale::da undef + DateTime::Locale::da_DK undef + DateTime::Locale::de undef + DateTime::Locale::de_AT undef + DateTime::Locale::de_BE undef + DateTime::Locale::de_CH undef + DateTime::Locale::de_DE undef + DateTime::Locale::de_LI undef + DateTime::Locale::de_LU undef + DateTime::Locale::dv undef + DateTime::Locale::dv_MV undef + DateTime::Locale::dz undef + DateTime::Locale::dz_BT undef + DateTime::Locale::ee undef + DateTime::Locale::ee_GH undef + DateTime::Locale::ee_TG undef + DateTime::Locale::el undef + DateTime::Locale::el_CY undef + DateTime::Locale::el_GR undef + DateTime::Locale::el_POLYTON undef + DateTime::Locale::en undef + DateTime::Locale::en_AS undef + DateTime::Locale::en_AU undef + DateTime::Locale::en_BE undef + DateTime::Locale::en_BW undef + DateTime::Locale::en_BZ undef + DateTime::Locale::en_CA undef + DateTime::Locale::en_Dsrt undef + DateTime::Locale::en_Dsrt_US undef + DateTime::Locale::en_GB undef + DateTime::Locale::en_GU undef + DateTime::Locale::en_HK undef + DateTime::Locale::en_IE undef + DateTime::Locale::en_IN undef + DateTime::Locale::en_JM undef + DateTime::Locale::en_MH undef + DateTime::Locale::en_MP undef + DateTime::Locale::en_MT undef + DateTime::Locale::en_NA undef + DateTime::Locale::en_NZ undef + DateTime::Locale::en_PH undef + DateTime::Locale::en_PK undef + DateTime::Locale::en_SG undef + DateTime::Locale::en_Shaw undef + DateTime::Locale::en_TT undef + DateTime::Locale::en_UM undef + DateTime::Locale::en_US undef + DateTime::Locale::en_US_POSIX undef + DateTime::Locale::en_VI undef + DateTime::Locale::en_ZA undef + DateTime::Locale::en_ZW undef + DateTime::Locale::eo undef + DateTime::Locale::es undef + DateTime::Locale::es_AR undef + DateTime::Locale::es_BO undef + DateTime::Locale::es_CL undef + DateTime::Locale::es_CO undef + DateTime::Locale::es_CR undef + DateTime::Locale::es_DO undef + DateTime::Locale::es_EC undef + DateTime::Locale::es_ES undef + DateTime::Locale::es_GT undef + DateTime::Locale::es_HN undef + DateTime::Locale::es_MX undef + DateTime::Locale::es_NI undef + DateTime::Locale::es_PA undef + DateTime::Locale::es_PE undef + DateTime::Locale::es_PR undef + DateTime::Locale::es_PY undef + DateTime::Locale::es_SV undef + DateTime::Locale::es_US undef + DateTime::Locale::es_UY undef + DateTime::Locale::es_VE undef + DateTime::Locale::et undef + DateTime::Locale::et_EE undef + DateTime::Locale::eu undef + DateTime::Locale::eu_ES undef + DateTime::Locale::fa undef + DateTime::Locale::fa_AF undef + DateTime::Locale::fa_IR undef + DateTime::Locale::fi undef + DateTime::Locale::fi_FI undef + DateTime::Locale::fil undef + DateTime::Locale::fil_PH undef + DateTime::Locale::fo undef + DateTime::Locale::fo_FO undef + DateTime::Locale::fr undef + DateTime::Locale::fr_BE undef + DateTime::Locale::fr_CA undef + DateTime::Locale::fr_CH undef + DateTime::Locale::fr_FR undef + DateTime::Locale::fr_LU undef + DateTime::Locale::fr_MC undef + DateTime::Locale::fr_SN undef + DateTime::Locale::fur undef + DateTime::Locale::fur_IT undef + DateTime::Locale::ga undef + DateTime::Locale::ga_IE undef + DateTime::Locale::gaa undef + DateTime::Locale::gaa_GH undef + DateTime::Locale::gez undef + DateTime::Locale::gez_ER undef + DateTime::Locale::gez_ET undef + DateTime::Locale::gl undef + DateTime::Locale::gl_ES undef + DateTime::Locale::gsw undef + DateTime::Locale::gsw_CH undef + DateTime::Locale::gu undef + DateTime::Locale::gu_IN undef + DateTime::Locale::gv undef + DateTime::Locale::gv_GB undef + DateTime::Locale::ha undef + DateTime::Locale::ha_Arab undef + DateTime::Locale::ha_Arab_NG undef + DateTime::Locale::ha_Arab_SD undef + DateTime::Locale::ha_GH undef + DateTime::Locale::ha_Latn undef + DateTime::Locale::ha_Latn_GH undef + DateTime::Locale::ha_Latn_NE undef + DateTime::Locale::ha_Latn_NG undef + DateTime::Locale::ha_NE undef + DateTime::Locale::ha_NG undef + DateTime::Locale::ha_SD undef + DateTime::Locale::haw undef + DateTime::Locale::haw_US undef + DateTime::Locale::he undef + DateTime::Locale::he_IL undef + DateTime::Locale::hi undef + DateTime::Locale::hi_IN undef + DateTime::Locale::hr undef + DateTime::Locale::hr_HR undef + DateTime::Locale::hu undef + DateTime::Locale::hu_HU undef + DateTime::Locale::hy undef + DateTime::Locale::hy_AM undef + DateTime::Locale::hy_AM_REVISED undef + DateTime::Locale::ia undef + DateTime::Locale::id undef + DateTime::Locale::id_ID undef + DateTime::Locale::ig undef + DateTime::Locale::ig_NG undef + DateTime::Locale::ii undef + DateTime::Locale::ii_CN undef + DateTime::Locale::is undef + DateTime::Locale::is_IS undef + DateTime::Locale::it undef + DateTime::Locale::it_CH undef + DateTime::Locale::it_IT undef + DateTime::Locale::iu undef + DateTime::Locale::ja undef + DateTime::Locale::ja_JP undef + DateTime::Locale::ka undef + DateTime::Locale::ka_GE undef + DateTime::Locale::kaj undef + DateTime::Locale::kaj_NG undef + DateTime::Locale::kam undef + DateTime::Locale::kam_KE undef + DateTime::Locale::kcg undef + DateTime::Locale::kcg_NG undef + DateTime::Locale::kfo undef + DateTime::Locale::kfo_CI undef + DateTime::Locale::kk undef + DateTime::Locale::kk_Cyrl undef + DateTime::Locale::kk_Cyrl_KZ undef + DateTime::Locale::kk_KZ undef + DateTime::Locale::kl undef + DateTime::Locale::kl_GL undef + DateTime::Locale::km undef + DateTime::Locale::km_KH undef + DateTime::Locale::kn undef + DateTime::Locale::kn_IN undef + DateTime::Locale::ko undef + DateTime::Locale::ko_KR undef + DateTime::Locale::kok undef + DateTime::Locale::kok_IN undef + DateTime::Locale::kpe undef + DateTime::Locale::kpe_GN undef + DateTime::Locale::kpe_LR undef + DateTime::Locale::ku undef + DateTime::Locale::ku_Arab undef + DateTime::Locale::ku_Arab_IQ undef + DateTime::Locale::ku_Arab_IR undef + DateTime::Locale::ku_Arab_SY undef + DateTime::Locale::ku_IQ undef + DateTime::Locale::ku_IR undef + DateTime::Locale::ku_Latn undef + DateTime::Locale::ku_Latn_TR undef + DateTime::Locale::ku_SY undef + DateTime::Locale::ku_TR undef + DateTime::Locale::kw undef + DateTime::Locale::kw_GB undef + DateTime::Locale::ky undef + DateTime::Locale::ky_KG undef + DateTime::Locale::ln undef + DateTime::Locale::ln_CD undef + DateTime::Locale::ln_CG undef + DateTime::Locale::lo undef + DateTime::Locale::lo_LA undef + DateTime::Locale::lt undef + DateTime::Locale::lt_LT undef + DateTime::Locale::lv undef + DateTime::Locale::lv_LV undef + DateTime::Locale::mk undef + DateTime::Locale::mk_MK undef + DateTime::Locale::ml undef + DateTime::Locale::ml_IN undef + DateTime::Locale::mn undef + DateTime::Locale::mn_CN undef + DateTime::Locale::mn_Cyrl undef + DateTime::Locale::mn_Cyrl_MN undef + DateTime::Locale::mn_MN undef + DateTime::Locale::mn_Mong undef + DateTime::Locale::mn_Mong_CN undef + DateTime::Locale::mo undef + DateTime::Locale::mr undef + DateTime::Locale::mr_IN undef + DateTime::Locale::ms undef + DateTime::Locale::ms_BN undef + DateTime::Locale::ms_MY undef + DateTime::Locale::mt undef + DateTime::Locale::mt_MT undef + DateTime::Locale::my undef + DateTime::Locale::my_MM undef + DateTime::Locale::nb undef + DateTime::Locale::nb_NO undef + DateTime::Locale::nds undef + DateTime::Locale::nds_DE undef + DateTime::Locale::ne undef + DateTime::Locale::ne_IN undef + DateTime::Locale::ne_NP undef + DateTime::Locale::nl undef + DateTime::Locale::nl_BE undef + DateTime::Locale::nl_NL undef + DateTime::Locale::nn undef + DateTime::Locale::nn_NO undef + DateTime::Locale::no undef + DateTime::Locale::nr undef + DateTime::Locale::nr_ZA undef + DateTime::Locale::nso undef + DateTime::Locale::nso_ZA undef + DateTime::Locale::ny undef + DateTime::Locale::ny_MW undef + DateTime::Locale::oc undef + DateTime::Locale::oc_FR undef + DateTime::Locale::om undef + DateTime::Locale::om_ET undef + DateTime::Locale::om_KE undef + DateTime::Locale::or undef + DateTime::Locale::or_IN undef + DateTime::Locale::pa undef + DateTime::Locale::pa_Arab undef + DateTime::Locale::pa_Arab_PK undef + DateTime::Locale::pa_Guru undef + DateTime::Locale::pa_Guru_IN undef + DateTime::Locale::pa_IN undef + DateTime::Locale::pa_PK undef + DateTime::Locale::pl undef + DateTime::Locale::pl_PL undef + DateTime::Locale::ps undef + DateTime::Locale::ps_AF undef + DateTime::Locale::pt undef + DateTime::Locale::pt_BR undef + DateTime::Locale::pt_PT undef + DateTime::Locale::ro undef + DateTime::Locale::ro_MD undef + DateTime::Locale::ro_RO undef + DateTime::Locale::root undef + DateTime::Locale::ru undef + DateTime::Locale::ru_RU undef + DateTime::Locale::ru_UA undef + DateTime::Locale::rw undef + DateTime::Locale::rw_RW undef + DateTime::Locale::sa undef + DateTime::Locale::sa_IN undef + DateTime::Locale::se undef + DateTime::Locale::se_FI undef + DateTime::Locale::se_NO undef + DateTime::Locale::sh undef + DateTime::Locale::sh_BA undef + DateTime::Locale::sh_CS undef + DateTime::Locale::sh_YU undef + DateTime::Locale::si undef + DateTime::Locale::si_LK undef + DateTime::Locale::sid undef + DateTime::Locale::sid_ET undef + DateTime::Locale::sk undef + DateTime::Locale::sk_SK undef + DateTime::Locale::sl undef + DateTime::Locale::sl_SI undef + DateTime::Locale::so undef + DateTime::Locale::so_DJ undef + DateTime::Locale::so_ET undef + DateTime::Locale::so_KE undef + DateTime::Locale::so_SO undef + DateTime::Locale::sq undef + DateTime::Locale::sq_AL undef + DateTime::Locale::sr undef + DateTime::Locale::sr_BA undef + DateTime::Locale::sr_CS undef + DateTime::Locale::sr_Cyrl undef + DateTime::Locale::sr_Cyrl_BA undef + DateTime::Locale::sr_Cyrl_CS undef + DateTime::Locale::sr_Cyrl_ME undef + DateTime::Locale::sr_Cyrl_RS undef + DateTime::Locale::sr_Cyrl_YU undef + DateTime::Locale::sr_Latn undef + DateTime::Locale::sr_Latn_BA undef + DateTime::Locale::sr_Latn_CS undef + DateTime::Locale::sr_Latn_ME undef + DateTime::Locale::sr_Latn_RS undef + DateTime::Locale::sr_Latn_YU undef + DateTime::Locale::sr_ME undef + DateTime::Locale::sr_RS undef + DateTime::Locale::sr_YU undef + DateTime::Locale::ss undef + DateTime::Locale::ss_SZ undef + DateTime::Locale::ss_ZA undef + DateTime::Locale::st undef + DateTime::Locale::st_LS undef + DateTime::Locale::st_ZA undef + DateTime::Locale::sv undef + DateTime::Locale::sv_FI undef + DateTime::Locale::sv_SE undef + DateTime::Locale::sw undef + DateTime::Locale::sw_KE undef + DateTime::Locale::sw_TZ undef + DateTime::Locale::syr undef + DateTime::Locale::syr_SY undef + DateTime::Locale::ta undef + DateTime::Locale::ta_IN undef + DateTime::Locale::te undef + DateTime::Locale::te_IN undef + DateTime::Locale::tg undef + DateTime::Locale::tg_Cyrl undef + DateTime::Locale::tg_Cyrl_TJ undef + DateTime::Locale::tg_TJ undef + DateTime::Locale::th undef + DateTime::Locale::th_TH undef + DateTime::Locale::ti undef + DateTime::Locale::ti_ER undef + DateTime::Locale::ti_ET undef + DateTime::Locale::tig undef + DateTime::Locale::tig_ER undef + DateTime::Locale::tl undef + DateTime::Locale::tn undef + DateTime::Locale::tn_ZA undef + DateTime::Locale::to undef + DateTime::Locale::to_TO undef + DateTime::Locale::tr undef + DateTime::Locale::tr_TR undef + DateTime::Locale::trv undef + DateTime::Locale::trv_TW undef + DateTime::Locale::ts undef + DateTime::Locale::ts_ZA undef + DateTime::Locale::tt undef + DateTime::Locale::tt_RU undef + DateTime::Locale::ug undef + DateTime::Locale::ug_Arab undef + DateTime::Locale::ug_Arab_CN undef + DateTime::Locale::ug_CN undef + DateTime::Locale::uk undef + DateTime::Locale::uk_UA undef + DateTime::Locale::ur undef + DateTime::Locale::ur_IN undef + DateTime::Locale::ur_PK undef + DateTime::Locale::uz undef + DateTime::Locale::uz_AF undef + DateTime::Locale::uz_Arab undef + DateTime::Locale::uz_Arab_AF undef + DateTime::Locale::uz_Cyrl undef + DateTime::Locale::uz_Cyrl_UZ undef + DateTime::Locale::uz_Latn undef + DateTime::Locale::uz_Latn_UZ undef + DateTime::Locale::uz_UZ undef + DateTime::Locale::ve undef + DateTime::Locale::ve_ZA undef + DateTime::Locale::vi undef + DateTime::Locale::vi_VN undef + DateTime::Locale::wal undef + DateTime::Locale::wal_ET undef + DateTime::Locale::wo undef + DateTime::Locale::wo_Latn undef + DateTime::Locale::wo_Latn_SN undef + DateTime::Locale::wo_SN undef + DateTime::Locale::xh undef + DateTime::Locale::xh_ZA undef + DateTime::Locale::yo undef + DateTime::Locale::yo_NG undef + DateTime::Locale::zh undef + DateTime::Locale::zh_CN undef + DateTime::Locale::zh_HK undef + DateTime::Locale::zh_Hans undef + DateTime::Locale::zh_Hans_CN undef + DateTime::Locale::zh_Hans_HK undef + DateTime::Locale::zh_Hans_MO undef + DateTime::Locale::zh_Hans_SG undef + DateTime::Locale::zh_Hant undef + DateTime::Locale::zh_Hant_HK undef + DateTime::Locale::zh_Hant_MO undef + DateTime::Locale::zh_Hant_TW undef + DateTime::Locale::zh_MO undef + DateTime::Locale::zh_SG undef + DateTime::Locale::zh_TW undef + DateTime::Locale::zu undef + DateTime::Locale::zu_ZA undef + requirements: + List::MoreUtils 0 + Module::Build 0.36 + Params::Validate 0.91 + perl 5.006 + DateTime-TimeZone-1.58 + pathname: D/DR/DROLSKY/DateTime-TimeZone-1.58.tar.gz + provides: + DateTime::TimeZone 1.58 + DateTime::TimeZone::Africa::Abidjan 1.58 + DateTime::TimeZone::Africa::Accra 1.58 + DateTime::TimeZone::Africa::Addis_Ababa 1.58 + DateTime::TimeZone::Africa::Algiers 1.58 + DateTime::TimeZone::Africa::Asmara 1.58 + DateTime::TimeZone::Africa::Bamako 1.58 + DateTime::TimeZone::Africa::Bangui 1.58 + DateTime::TimeZone::Africa::Banjul 1.58 + DateTime::TimeZone::Africa::Bissau 1.58 + DateTime::TimeZone::Africa::Blantyre 1.58 + DateTime::TimeZone::Africa::Brazzaville 1.58 + DateTime::TimeZone::Africa::Bujumbura 1.58 + DateTime::TimeZone::Africa::Cairo 1.58 + DateTime::TimeZone::Africa::Casablanca 1.58 + DateTime::TimeZone::Africa::Ceuta 1.58 + DateTime::TimeZone::Africa::Conakry 1.58 + DateTime::TimeZone::Africa::Dakar 1.58 + DateTime::TimeZone::Africa::Dar_es_Salaam 1.58 + DateTime::TimeZone::Africa::Djibouti 1.58 + DateTime::TimeZone::Africa::Douala 1.58 + DateTime::TimeZone::Africa::El_Aaiun 1.58 + DateTime::TimeZone::Africa::Freetown 1.58 + DateTime::TimeZone::Africa::Gaborone 1.58 + DateTime::TimeZone::Africa::Harare 1.58 + DateTime::TimeZone::Africa::Johannesburg 1.58 + DateTime::TimeZone::Africa::Juba 1.58 + DateTime::TimeZone::Africa::Kampala 1.58 + DateTime::TimeZone::Africa::Khartoum 1.58 + DateTime::TimeZone::Africa::Kigali 1.58 + DateTime::TimeZone::Africa::Kinshasa 1.58 + DateTime::TimeZone::Africa::Lagos 1.58 + DateTime::TimeZone::Africa::Libreville 1.58 + DateTime::TimeZone::Africa::Lome 1.58 + DateTime::TimeZone::Africa::Luanda 1.58 + DateTime::TimeZone::Africa::Lubumbashi 1.58 + DateTime::TimeZone::Africa::Lusaka 1.58 + DateTime::TimeZone::Africa::Malabo 1.58 + DateTime::TimeZone::Africa::Maputo 1.58 + DateTime::TimeZone::Africa::Maseru 1.58 + DateTime::TimeZone::Africa::Mbabane 1.58 + DateTime::TimeZone::Africa::Mogadishu 1.58 + DateTime::TimeZone::Africa::Monrovia 1.58 + DateTime::TimeZone::Africa::Nairobi 1.58 + DateTime::TimeZone::Africa::Ndjamena 1.58 + DateTime::TimeZone::Africa::Niamey 1.58 + DateTime::TimeZone::Africa::Nouakchott 1.58 + DateTime::TimeZone::Africa::Ouagadougou 1.58 + DateTime::TimeZone::Africa::Porto_Novo 1.58 + DateTime::TimeZone::Africa::Sao_Tome 1.58 + DateTime::TimeZone::Africa::Tripoli 1.58 + DateTime::TimeZone::Africa::Tunis 1.58 + DateTime::TimeZone::Africa::Windhoek 1.58 + DateTime::TimeZone::America::Adak 1.58 + DateTime::TimeZone::America::Anchorage 1.58 + DateTime::TimeZone::America::Anguilla 1.58 + DateTime::TimeZone::America::Antigua 1.58 + DateTime::TimeZone::America::Araguaina 1.58 + DateTime::TimeZone::America::Argentina::Buenos_Aires 1.58 + DateTime::TimeZone::America::Argentina::Catamarca 1.58 + DateTime::TimeZone::America::Argentina::Cordoba 1.58 + DateTime::TimeZone::America::Argentina::Jujuy 1.58 + DateTime::TimeZone::America::Argentina::La_Rioja 1.58 + DateTime::TimeZone::America::Argentina::Mendoza 1.58 + DateTime::TimeZone::America::Argentina::Rio_Gallegos 1.58 + DateTime::TimeZone::America::Argentina::Salta 1.58 + DateTime::TimeZone::America::Argentina::San_Juan 1.58 + DateTime::TimeZone::America::Argentina::San_Luis 1.58 + DateTime::TimeZone::America::Argentina::Tucuman 1.58 + DateTime::TimeZone::America::Argentina::Ushuaia 1.58 + DateTime::TimeZone::America::Aruba 1.58 + DateTime::TimeZone::America::Asuncion 1.58 + DateTime::TimeZone::America::Atikokan 1.58 + DateTime::TimeZone::America::Bahia 1.58 + DateTime::TimeZone::America::Bahia_Banderas 1.58 + DateTime::TimeZone::America::Barbados 1.58 + DateTime::TimeZone::America::Belem 1.58 + DateTime::TimeZone::America::Belize 1.58 + DateTime::TimeZone::America::Blanc_Sablon 1.58 + DateTime::TimeZone::America::Boa_Vista 1.58 + DateTime::TimeZone::America::Bogota 1.58 + DateTime::TimeZone::America::Boise 1.58 + DateTime::TimeZone::America::Cambridge_Bay 1.58 + DateTime::TimeZone::America::Campo_Grande 1.58 + DateTime::TimeZone::America::Cancun 1.58 + DateTime::TimeZone::America::Caracas 1.58 + DateTime::TimeZone::America::Cayenne 1.58 + DateTime::TimeZone::America::Cayman 1.58 + DateTime::TimeZone::America::Chicago 1.58 + DateTime::TimeZone::America::Chihuahua 1.58 + DateTime::TimeZone::America::Costa_Rica 1.58 + DateTime::TimeZone::America::Creston 1.58 + DateTime::TimeZone::America::Cuiaba 1.58 + DateTime::TimeZone::America::Curacao 1.58 + DateTime::TimeZone::America::Danmarkshavn 1.58 + DateTime::TimeZone::America::Dawson 1.58 + DateTime::TimeZone::America::Dawson_Creek 1.58 + DateTime::TimeZone::America::Denver 1.58 + DateTime::TimeZone::America::Detroit 1.58 + DateTime::TimeZone::America::Dominica 1.58 + DateTime::TimeZone::America::Edmonton 1.58 + DateTime::TimeZone::America::Eirunepe 1.58 + DateTime::TimeZone::America::El_Salvador 1.58 + DateTime::TimeZone::America::Fortaleza 1.58 + DateTime::TimeZone::America::Glace_Bay 1.58 + DateTime::TimeZone::America::Godthab 1.58 + DateTime::TimeZone::America::Goose_Bay 1.58 + DateTime::TimeZone::America::Grand_Turk 1.58 + DateTime::TimeZone::America::Grenada 1.58 + DateTime::TimeZone::America::Guadeloupe 1.58 + DateTime::TimeZone::America::Guatemala 1.58 + DateTime::TimeZone::America::Guayaquil 1.58 + DateTime::TimeZone::America::Guyana 1.58 + DateTime::TimeZone::America::Halifax 1.58 + DateTime::TimeZone::America::Havana 1.58 + DateTime::TimeZone::America::Hermosillo 1.58 + DateTime::TimeZone::America::Indiana::Indianapolis 1.58 + DateTime::TimeZone::America::Indiana::Knox 1.58 + DateTime::TimeZone::America::Indiana::Marengo 1.58 + DateTime::TimeZone::America::Indiana::Petersburg 1.58 + DateTime::TimeZone::America::Indiana::Tell_City 1.58 + DateTime::TimeZone::America::Indiana::Vevay 1.58 + DateTime::TimeZone::America::Indiana::Vincennes 1.58 + DateTime::TimeZone::America::Indiana::Winamac 1.58 + DateTime::TimeZone::America::Inuvik 1.58 + DateTime::TimeZone::America::Iqaluit 1.58 + DateTime::TimeZone::America::Jamaica 1.58 + DateTime::TimeZone::America::Juneau 1.58 + DateTime::TimeZone::America::Kentucky::Louisville 1.58 + DateTime::TimeZone::America::Kentucky::Monticello 1.58 + DateTime::TimeZone::America::La_Paz 1.58 + DateTime::TimeZone::America::Lima 1.58 + DateTime::TimeZone::America::Los_Angeles 1.58 + DateTime::TimeZone::America::Maceio 1.58 + DateTime::TimeZone::America::Managua 1.58 + DateTime::TimeZone::America::Manaus 1.58 + DateTime::TimeZone::America::Martinique 1.58 + DateTime::TimeZone::America::Matamoros 1.58 + DateTime::TimeZone::America::Mazatlan 1.58 + DateTime::TimeZone::America::Menominee 1.58 + DateTime::TimeZone::America::Merida 1.58 + DateTime::TimeZone::America::Metlakatla 1.58 + DateTime::TimeZone::America::Mexico_City 1.58 + DateTime::TimeZone::America::Miquelon 1.58 + DateTime::TimeZone::America::Moncton 1.58 + DateTime::TimeZone::America::Monterrey 1.58 + DateTime::TimeZone::America::Montevideo 1.58 + DateTime::TimeZone::America::Montreal 1.58 + DateTime::TimeZone::America::Montserrat 1.58 + DateTime::TimeZone::America::Nassau 1.58 + DateTime::TimeZone::America::New_York 1.58 + DateTime::TimeZone::America::Nipigon 1.58 + DateTime::TimeZone::America::Nome 1.58 + DateTime::TimeZone::America::Noronha 1.58 + DateTime::TimeZone::America::North_Dakota::Beulah 1.58 + DateTime::TimeZone::America::North_Dakota::Center 1.58 + DateTime::TimeZone::America::North_Dakota::New_Salem 1.58 + DateTime::TimeZone::America::Ojinaga 1.58 + DateTime::TimeZone::America::Panama 1.58 + DateTime::TimeZone::America::Pangnirtung 1.58 + DateTime::TimeZone::America::Paramaribo 1.58 + DateTime::TimeZone::America::Phoenix 1.58 + DateTime::TimeZone::America::Port_au_Prince 1.58 + DateTime::TimeZone::America::Port_of_Spain 1.58 + DateTime::TimeZone::America::Porto_Velho 1.58 + DateTime::TimeZone::America::Puerto_Rico 1.58 + DateTime::TimeZone::America::Rainy_River 1.58 + DateTime::TimeZone::America::Rankin_Inlet 1.58 + DateTime::TimeZone::America::Recife 1.58 + DateTime::TimeZone::America::Regina 1.58 + DateTime::TimeZone::America::Resolute 1.58 + DateTime::TimeZone::America::Rio_Branco 1.58 + DateTime::TimeZone::America::Santa_Isabel 1.58 + DateTime::TimeZone::America::Santarem 1.58 + DateTime::TimeZone::America::Santiago 1.58 + DateTime::TimeZone::America::Santo_Domingo 1.58 + DateTime::TimeZone::America::Sao_Paulo 1.58 + DateTime::TimeZone::America::Scoresbysund 1.58 + DateTime::TimeZone::America::Sitka 1.58 + DateTime::TimeZone::America::St_Johns 1.58 + DateTime::TimeZone::America::St_Kitts 1.58 + DateTime::TimeZone::America::St_Lucia 1.58 + DateTime::TimeZone::America::St_Thomas 1.58 + DateTime::TimeZone::America::St_Vincent 1.58 + DateTime::TimeZone::America::Swift_Current 1.58 + DateTime::TimeZone::America::Tegucigalpa 1.58 + DateTime::TimeZone::America::Thule 1.58 + DateTime::TimeZone::America::Thunder_Bay 1.58 + DateTime::TimeZone::America::Tijuana 1.58 + DateTime::TimeZone::America::Toronto 1.58 + DateTime::TimeZone::America::Tortola 1.58 + DateTime::TimeZone::America::Vancouver 1.58 + DateTime::TimeZone::America::Whitehorse 1.58 + DateTime::TimeZone::America::Winnipeg 1.58 + DateTime::TimeZone::America::Yakutat 1.58 + DateTime::TimeZone::America::Yellowknife 1.58 + DateTime::TimeZone::Antarctica::Casey 1.58 + DateTime::TimeZone::Antarctica::Davis 1.58 + DateTime::TimeZone::Antarctica::DumontDUrville 1.58 + DateTime::TimeZone::Antarctica::Macquarie 1.58 + DateTime::TimeZone::Antarctica::Mawson 1.58 + DateTime::TimeZone::Antarctica::McMurdo 1.58 + DateTime::TimeZone::Antarctica::Palmer 1.58 + DateTime::TimeZone::Antarctica::Rothera 1.58 + DateTime::TimeZone::Antarctica::Syowa 1.58 + DateTime::TimeZone::Antarctica::Vostok 1.58 + DateTime::TimeZone::Asia::Aden 1.58 + DateTime::TimeZone::Asia::Almaty 1.58 + DateTime::TimeZone::Asia::Amman 1.58 + DateTime::TimeZone::Asia::Anadyr 1.58 + DateTime::TimeZone::Asia::Aqtau 1.58 + DateTime::TimeZone::Asia::Aqtobe 1.58 + DateTime::TimeZone::Asia::Ashgabat 1.58 + DateTime::TimeZone::Asia::Baghdad 1.58 + DateTime::TimeZone::Asia::Bahrain 1.58 + DateTime::TimeZone::Asia::Baku 1.58 + DateTime::TimeZone::Asia::Bangkok 1.58 + DateTime::TimeZone::Asia::Beirut 1.58 + DateTime::TimeZone::Asia::Bishkek 1.58 + DateTime::TimeZone::Asia::Brunei 1.58 + DateTime::TimeZone::Asia::Choibalsan 1.58 + DateTime::TimeZone::Asia::Chongqing 1.58 + DateTime::TimeZone::Asia::Colombo 1.58 + DateTime::TimeZone::Asia::Damascus 1.58 + DateTime::TimeZone::Asia::Dhaka 1.58 + DateTime::TimeZone::Asia::Dili 1.58 + DateTime::TimeZone::Asia::Dubai 1.58 + DateTime::TimeZone::Asia::Dushanbe 1.58 + DateTime::TimeZone::Asia::Gaza 1.58 + DateTime::TimeZone::Asia::Harbin 1.58 + DateTime::TimeZone::Asia::Hebron 1.58 + DateTime::TimeZone::Asia::Ho_Chi_Minh 1.58 + DateTime::TimeZone::Asia::Hong_Kong 1.58 + DateTime::TimeZone::Asia::Hovd 1.58 + DateTime::TimeZone::Asia::Irkutsk 1.58 + DateTime::TimeZone::Asia::Jakarta 1.58 + DateTime::TimeZone::Asia::Jayapura 1.58 + DateTime::TimeZone::Asia::Jerusalem 1.58 + DateTime::TimeZone::Asia::Kabul 1.58 + DateTime::TimeZone::Asia::Kamchatka 1.58 + DateTime::TimeZone::Asia::Karachi 1.58 + DateTime::TimeZone::Asia::Kashgar 1.58 + DateTime::TimeZone::Asia::Kathmandu 1.58 + DateTime::TimeZone::Asia::Khandyga 1.58 + DateTime::TimeZone::Asia::Kolkata 1.58 + DateTime::TimeZone::Asia::Krasnoyarsk 1.58 + DateTime::TimeZone::Asia::Kuala_Lumpur 1.58 + DateTime::TimeZone::Asia::Kuching 1.58 + DateTime::TimeZone::Asia::Kuwait 1.58 + DateTime::TimeZone::Asia::Macau 1.58 + DateTime::TimeZone::Asia::Magadan 1.58 + DateTime::TimeZone::Asia::Makassar 1.58 + DateTime::TimeZone::Asia::Manila 1.58 + DateTime::TimeZone::Asia::Muscat 1.58 + DateTime::TimeZone::Asia::Nicosia 1.58 + DateTime::TimeZone::Asia::Novokuznetsk 1.58 + DateTime::TimeZone::Asia::Novosibirsk 1.58 + DateTime::TimeZone::Asia::Omsk 1.58 + DateTime::TimeZone::Asia::Oral 1.58 + DateTime::TimeZone::Asia::Phnom_Penh 1.58 + DateTime::TimeZone::Asia::Pontianak 1.58 + DateTime::TimeZone::Asia::Pyongyang 1.58 + DateTime::TimeZone::Asia::Qatar 1.58 + DateTime::TimeZone::Asia::Qyzylorda 1.58 + DateTime::TimeZone::Asia::Rangoon 1.58 + DateTime::TimeZone::Asia::Riyadh 1.58 + DateTime::TimeZone::Asia::Sakhalin 1.58 + DateTime::TimeZone::Asia::Samarkand 1.58 + DateTime::TimeZone::Asia::Seoul 1.58 + DateTime::TimeZone::Asia::Shanghai 1.58 + DateTime::TimeZone::Asia::Singapore 1.58 + DateTime::TimeZone::Asia::Taipei 1.58 + DateTime::TimeZone::Asia::Tashkent 1.58 + DateTime::TimeZone::Asia::Tbilisi 1.58 + DateTime::TimeZone::Asia::Tehran 1.58 + DateTime::TimeZone::Asia::Thimphu 1.58 + DateTime::TimeZone::Asia::Tokyo 1.58 + DateTime::TimeZone::Asia::Ulaanbaatar 1.58 + DateTime::TimeZone::Asia::Urumqi 1.58 + DateTime::TimeZone::Asia::Ust_Nera 1.58 + DateTime::TimeZone::Asia::Vientiane 1.58 + DateTime::TimeZone::Asia::Vladivostok 1.58 + DateTime::TimeZone::Asia::Yakutsk 1.58 + DateTime::TimeZone::Asia::Yekaterinburg 1.58 + DateTime::TimeZone::Asia::Yerevan 1.58 + DateTime::TimeZone::Atlantic::Azores 1.58 + DateTime::TimeZone::Atlantic::Bermuda 1.58 + DateTime::TimeZone::Atlantic::Canary 1.58 + DateTime::TimeZone::Atlantic::Cape_Verde 1.58 + DateTime::TimeZone::Atlantic::Faroe 1.58 + DateTime::TimeZone::Atlantic::Madeira 1.58 + DateTime::TimeZone::Atlantic::Reykjavik 1.58 + DateTime::TimeZone::Atlantic::South_Georgia 1.58 + DateTime::TimeZone::Atlantic::St_Helena 1.58 + DateTime::TimeZone::Atlantic::Stanley 1.58 + DateTime::TimeZone::Australia::Adelaide 1.58 + DateTime::TimeZone::Australia::Brisbane 1.58 + DateTime::TimeZone::Australia::Broken_Hill 1.58 + DateTime::TimeZone::Australia::Currie 1.58 + DateTime::TimeZone::Australia::Darwin 1.58 + DateTime::TimeZone::Australia::Eucla 1.58 + DateTime::TimeZone::Australia::Hobart 1.58 + DateTime::TimeZone::Australia::Lindeman 1.58 + DateTime::TimeZone::Australia::Lord_Howe 1.58 + DateTime::TimeZone::Australia::Melbourne 1.58 + DateTime::TimeZone::Australia::Perth 1.58 + DateTime::TimeZone::Australia::Sydney 1.58 + DateTime::TimeZone::CET 1.58 + DateTime::TimeZone::CST6CDT 1.58 + DateTime::TimeZone::Catalog 1.58 + DateTime::TimeZone::EET 1.58 + DateTime::TimeZone::EST 1.58 + DateTime::TimeZone::EST5EDT 1.58 + DateTime::TimeZone::Europe::Amsterdam 1.58 + DateTime::TimeZone::Europe::Andorra 1.58 + DateTime::TimeZone::Europe::Athens 1.58 + DateTime::TimeZone::Europe::Belgrade 1.58 + DateTime::TimeZone::Europe::Berlin 1.58 + DateTime::TimeZone::Europe::Brussels 1.58 + DateTime::TimeZone::Europe::Bucharest 1.58 + DateTime::TimeZone::Europe::Budapest 1.58 + DateTime::TimeZone::Europe::Chisinau 1.58 + DateTime::TimeZone::Europe::Copenhagen 1.58 + DateTime::TimeZone::Europe::Dublin 1.58 + DateTime::TimeZone::Europe::Gibraltar 1.58 + DateTime::TimeZone::Europe::Helsinki 1.58 + DateTime::TimeZone::Europe::Istanbul 1.58 + DateTime::TimeZone::Europe::Kaliningrad 1.58 + DateTime::TimeZone::Europe::Kiev 1.58 + DateTime::TimeZone::Europe::Lisbon 1.58 + DateTime::TimeZone::Europe::London 1.58 + DateTime::TimeZone::Europe::Luxembourg 1.58 + DateTime::TimeZone::Europe::Madrid 1.58 + DateTime::TimeZone::Europe::Malta 1.58 + DateTime::TimeZone::Europe::Minsk 1.58 + DateTime::TimeZone::Europe::Monaco 1.58 + DateTime::TimeZone::Europe::Moscow 1.58 + DateTime::TimeZone::Europe::Oslo 1.58 + DateTime::TimeZone::Europe::Paris 1.58 + DateTime::TimeZone::Europe::Prague 1.58 + DateTime::TimeZone::Europe::Riga 1.58 + DateTime::TimeZone::Europe::Rome 1.58 + DateTime::TimeZone::Europe::Samara 1.58 + DateTime::TimeZone::Europe::Simferopol 1.58 + DateTime::TimeZone::Europe::Sofia 1.58 + DateTime::TimeZone::Europe::Stockholm 1.58 + DateTime::TimeZone::Europe::Tallinn 1.58 + DateTime::TimeZone::Europe::Tirane 1.58 + DateTime::TimeZone::Europe::Uzhgorod 1.58 + DateTime::TimeZone::Europe::Vaduz 1.58 + DateTime::TimeZone::Europe::Vienna 1.58 + DateTime::TimeZone::Europe::Vilnius 1.58 + DateTime::TimeZone::Europe::Volgograd 1.58 + DateTime::TimeZone::Europe::Warsaw 1.58 + DateTime::TimeZone::Europe::Zaporozhye 1.58 + DateTime::TimeZone::Europe::Zurich 1.58 + DateTime::TimeZone::Floating 1.58 + DateTime::TimeZone::HST 1.58 + DateTime::TimeZone::Indian::Antananarivo 1.58 + DateTime::TimeZone::Indian::Chagos 1.58 + DateTime::TimeZone::Indian::Christmas 1.58 + DateTime::TimeZone::Indian::Cocos 1.58 + DateTime::TimeZone::Indian::Comoro 1.58 + DateTime::TimeZone::Indian::Kerguelen 1.58 + DateTime::TimeZone::Indian::Mahe 1.58 + DateTime::TimeZone::Indian::Maldives 1.58 + DateTime::TimeZone::Indian::Mauritius 1.58 + DateTime::TimeZone::Indian::Mayotte 1.58 + DateTime::TimeZone::Indian::Reunion 1.58 + DateTime::TimeZone::Local 1.58 + DateTime::TimeZone::Local::Unix 1.58 + DateTime::TimeZone::Local::VMS 1.58 + DateTime::TimeZone::Local::Win32 1.58 + DateTime::TimeZone::MET 1.58 + DateTime::TimeZone::MST 1.58 + DateTime::TimeZone::MST7MDT 1.58 + DateTime::TimeZone::OffsetOnly 1.58 + DateTime::TimeZone::OlsonDB 1.58 + DateTime::TimeZone::OlsonDB::Change 1.58 + DateTime::TimeZone::OlsonDB::Observance 1.58 + DateTime::TimeZone::OlsonDB::Rule 1.58 + DateTime::TimeZone::OlsonDB::Zone 1.58 + DateTime::TimeZone::PST8PDT 1.58 + DateTime::TimeZone::Pacific::Apia 1.58 + DateTime::TimeZone::Pacific::Auckland 1.58 + DateTime::TimeZone::Pacific::Chatham 1.58 + DateTime::TimeZone::Pacific::Chuuk 1.58 + DateTime::TimeZone::Pacific::Easter 1.58 + DateTime::TimeZone::Pacific::Efate 1.58 + DateTime::TimeZone::Pacific::Enderbury 1.58 + DateTime::TimeZone::Pacific::Fakaofo 1.58 + DateTime::TimeZone::Pacific::Fiji 1.58 + DateTime::TimeZone::Pacific::Funafuti 1.58 + DateTime::TimeZone::Pacific::Galapagos 1.58 + DateTime::TimeZone::Pacific::Gambier 1.58 + DateTime::TimeZone::Pacific::Guadalcanal 1.58 + DateTime::TimeZone::Pacific::Guam 1.58 + DateTime::TimeZone::Pacific::Honolulu 1.58 + DateTime::TimeZone::Pacific::Johnston 1.58 + DateTime::TimeZone::Pacific::Kiritimati 1.58 + DateTime::TimeZone::Pacific::Kosrae 1.58 + DateTime::TimeZone::Pacific::Kwajalein 1.58 + DateTime::TimeZone::Pacific::Majuro 1.58 + DateTime::TimeZone::Pacific::Marquesas 1.58 + DateTime::TimeZone::Pacific::Midway 1.58 + DateTime::TimeZone::Pacific::Nauru 1.58 + DateTime::TimeZone::Pacific::Niue 1.58 + DateTime::TimeZone::Pacific::Norfolk 1.58 + DateTime::TimeZone::Pacific::Noumea 1.58 + DateTime::TimeZone::Pacific::Pago_Pago 1.58 + DateTime::TimeZone::Pacific::Palau 1.58 + DateTime::TimeZone::Pacific::Pitcairn 1.58 + DateTime::TimeZone::Pacific::Pohnpei 1.58 + DateTime::TimeZone::Pacific::Port_Moresby 1.58 + DateTime::TimeZone::Pacific::Rarotonga 1.58 + DateTime::TimeZone::Pacific::Saipan 1.58 + DateTime::TimeZone::Pacific::Tahiti 1.58 + DateTime::TimeZone::Pacific::Tarawa 1.58 + DateTime::TimeZone::Pacific::Tongatapu 1.58 + DateTime::TimeZone::Pacific::Wake 1.58 + DateTime::TimeZone::Pacific::Wallis 1.58 + DateTime::TimeZone::UTC 1.58 + DateTime::TimeZone::WET 1.58 + requirements: + Class::Load 0 + Class::Singleton 1.03 + Cwd 3 + ExtUtils::MakeMaker 6.30 + File::Basename 0 + File::Compare 0 + File::Copy 0 + File::Find 0 + File::Spec 0 + List::Util 0 + Params::Validate 0.72 + Storable 0 + Sys::Hostname 0 + Test::More 0.88 + Test::Output 0 + base 0 + constant 0 + overload 0 + parent 0 + strict 0 + vars 0 + warnings 0 + Devel-Caller-2.06 + pathname: R/RC/RCLAMP/Devel-Caller-2.06.tar.gz + provides: + Devel::Caller 2.06 + requirements: + ExtUtils::MakeMaker 0 + PadWalker 0.08 + Test::More 0 + Devel-GlobalDestruction-0.11 + pathname: H/HA/HAARG/Devel-GlobalDestruction-0.11.tar.gz + provides: + Devel::GlobalDestruction 0.11 + requirements: + Devel::GlobalDestruction::XS 0 + ExtUtils::CBuilder 0.27 + ExtUtils::MakeMaker 0 + Sub::Exporter::Progressive 0.001006 + perl 5.006 + Devel-GlobalDestruction-XS-0.01 + pathname: R/RI/RIBASUSHI/Devel-GlobalDestruction-XS-0.01.tar.gz + provides: + Devel::GlobalDestruction::XS 0.01 + requirements: + ExtUtils::CBuilder 0.27 + ExtUtils::MakeMaker 0 + perl 5.006 + Devel-StackTrace-1.30 + pathname: D/DR/DROLSKY/Devel-StackTrace-1.30.tar.gz + provides: + Devel::StackTrace 1.30 + Devel::StackTrace::Frame 1.30 + requirements: + ExtUtils::MakeMaker 6.30 + File::Spec 0 + Scalar::Util 0 + Test::More 0.88 + base 0 + bytes 0 + overload 0 + strict 0 + warnings 0 + Devel-StackTrace-AsHTML-0.14 + pathname: M/MI/MIYAGAWA/Devel-StackTrace-AsHTML-0.14.tar.gz + provides: + Devel::StackTrace::AsHTML 0.14 + requirements: + Devel::StackTrace 0 + ExtUtils::MakeMaker 6.59 + Filter::Util::Call 0 + Test::More 0 + perl 5.008001 + Digest-HMAC-1.03 + pathname: G/GA/GAAS/Digest-HMAC-1.03.tar.gz + provides: + Digest::HMAC 1.03 + Digest::HMAC_MD5 1.01 + Digest::HMAC_SHA1 1.03 + requirements: + Digest::MD5 2 + Digest::SHA 1 + ExtUtils::MakeMaker 0 + perl 5.004 + Dir-Self-0.10 + pathname: M/MA/MAUKE/Dir-Self-0.10.tar.gz + provides: + Dir::Self undef + requirements: + Carp 0 + ExtUtils::MakeMaker 0 + File::Spec 0 + Test::More 0 + 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 + ExtUtils::MakeMaker 6.30 + List::MoreUtils 0.12 + Module::Runtime 0 + base 0 + strict 0 + warnings 0 + Email-Address-1.898 + pathname: R/RJ/RJBS/Email-Address-1.898.tar.gz + provides: + Email::Address 1.898 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0.47 + Email-Date-Format-1.002 + pathname: R/RJ/RJBS/Email-Date-Format-1.002.tar.gz + provides: + Email::Date::Format 1.002 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0.47 + Time::Local 0.000 + Email-Send-2.198 + pathname: R/RJ/RJBS/Email-Send-2.198.tar.gz + provides: + Email::Send 2.198 + Email::Send::NNTP 2.198 + Email::Send::Qmail 2.198 + Email::Send::SMTP 2.198 + Email::Send::Sendmail 2.198 + Email::Send::Test 2.198 + requirements: + Email::Address 1.80 + Email::Simple 1.92 + ExtUtils::MakeMaker 0 + File::Spec 0 + Module::Pluggable 2.97 + Return::Value 1.28 + Scalar::Util 1.02 + Symbol 0.00 + Test::More 0.47 + Email-Simple-2.102 + pathname: R/RJ/RJBS/Email-Simple-2.102.tar.gz + provides: + Email::Simple 2.102 + Email::Simple::Creator 2.102 + Email::Simple::Header 2.102 + requirements: + Email::Date::Format 0 + ExtUtils::MakeMaker 0 + Test::More 0.47 + Email-Valid-0.190 + pathname: R/RJ/RJBS/Email-Valid-0.190.tar.gz + provides: + Email::Valid 0.190 + requirements: + ExtUtils::MakeMaker 0 + Mail::Address 0 + Net::DNS 0 + Scalar::Util 0 + Test::More 0 + perl 5.006 + Encode-2.49 + pathname: D/DA/DANKOGAI/Encode-2.49.tar.gz + provides: + Encode 2.49 + Encode::Alias 2.16 + Encode::Byte 2.04 + Encode::CJKConstants 2.02 + Encode::CN 2.03 + Encode::CN::HZ 2.05 + Encode::Config 2.05 + Encode::EBCDIC 2.02 + Encode::Encoder 2.02 + Encode::Encoding 2.05 + Encode::GSM0338 2.02 + Encode::Guess 2.05 + Encode::Internal 2.49 + Encode::JP 2.04 + Encode::JP::H2Z 2.02 + Encode::JP::JIS7 2.04 + Encode::KR 2.03 + Encode::KR::2022_KR 2.02 + Encode::MIME::Header 2.13 + Encode::MIME::Header::ISO_2022_JP 1.03 + Encode::MIME::Name 1.01 + Encode::Symbol 2.02 + Encode::TW 2.03 + Encode::UTF_EBCDIC 2.49 + Encode::Unicode 2.07 + Encode::Unicode::UTF7 2.06 + Encode::utf8 2.49 + requirements: + ExtUtils::MakeMaker 0 + Encode-Locale-1.03 + pathname: G/GA/GAAS/Encode-Locale-1.03.tar.gz + provides: + Encode::Locale 1.03 + requirements: + Encode 2 + Encode::Alias 0 + ExtUtils::MakeMaker 0 + Test 0 + perl 5.008 + Error-0.17019 + pathname: S/SH/SHLOMIF/Error-0.17019.tar.gz + provides: + Error 0.17019 + requirements: + Module::Build 0.39 + Scalar::Util 0 + perl v5.6.0 + warnings 0 + Eval-Closure-0.08 + pathname: D/DO/DOY/Eval-Closure-0.08.tar.gz + provides: + Eval::Closure 0.08 + requirements: + ExtUtils::MakeMaker 6.30 + Scalar::Util 0 + Sub::Exporter 0 + Test::Fatal 0 + Test::More 0.88 + Test::Requires 0 + Try::Tiny 0 + ExtUtils-CBuilder-0.280205 + pathname: D/DA/DAGOLDEN/ExtUtils-CBuilder-0.280205.tar.gz + provides: + ExtUtils::CBuilder 0.280205 + ExtUtils::CBuilder::Base 0.280205 + ExtUtils::CBuilder::Platform::Unix 0.280205 + ExtUtils::CBuilder::Platform::VMS 0.280205 + ExtUtils::CBuilder::Platform::Windows 0.280205 + ExtUtils::CBuilder::Platform::Windows::BCC 0.280205 + ExtUtils::CBuilder::Platform::Windows::GCC 0.280205 + ExtUtils::CBuilder::Platform::Windows::MSVC 0.280205 + ExtUtils::CBuilder::Platform::aix 0.280205 + ExtUtils::CBuilder::Platform::cygwin 0.280205 + ExtUtils::CBuilder::Platform::darwin 0.280205 + 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 6.72 + ExtUtils::Command::MM 6.72 + ExtUtils::Liblist 6.72 + ExtUtils::Liblist::Kid 6.72 + ExtUtils::MM 6.72 + ExtUtils::MM_AIX 6.72 + ExtUtils::MM_Any 6.72 + ExtUtils::MM_BeOS 6.72 + ExtUtils::MM_Cygwin 6.72 + ExtUtils::MM_DOS 6.72 + ExtUtils::MM_Darwin 6.72 + ExtUtils::MM_MacOS 6.72 + ExtUtils::MM_NW5 6.72 + ExtUtils::MM_OS2 6.72 + ExtUtils::MM_QNX 6.72 + ExtUtils::MM_UWIN 6.72 + ExtUtils::MM_Unix 6.72 + ExtUtils::MM_VMS 6.72 + ExtUtils::MM_VOS 6.72 + ExtUtils::MM_Win32 6.72 + ExtUtils::MM_Win95 6.72 + ExtUtils::MY 6.72 + ExtUtils::MakeMaker 6.72 + ExtUtils::MakeMaker::Config 6.72 + ExtUtils::MakeMaker::_version 6.72 + ExtUtils::Mkbootstrap 6.72 + ExtUtils::Mksymlists 6.72 + ExtUtils::testlib 6.72 + MM 6.72 + MY 6.72 + in 6.72 + requirements: + Data::Dumper 0 + DirHandle 0 + File::Basename 0 + File::Spec 0.8 + Pod::Man 0 + perl 5.006 + ExtUtils-ParseXS-3.21 + pathname: S/SM/SMUELLER/ExtUtils-ParseXS-3.21.tar.gz + provides: + ExtUtils::ParseXS 3.21 + ExtUtils::ParseXS::Constants 3.21 + ExtUtils::ParseXS::CountLines 3.21 + ExtUtils::ParseXS::Eval 3.21 + ExtUtils::ParseXS::Utilities 3.21 + ExtUtils::Typemaps 3.21 + ExtUtils::Typemaps::Cmd 3.21 + ExtUtils::Typemaps::InputMap 3.21 + 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: + FCGI 0.74 + requirements: + ExtUtils::MakeMaker 0 + File-ChangeNotify-0.23 + pathname: D/DR/DROLSKY/File-ChangeNotify-0.23.tar.gz + provides: + File::ChangeNotify 0.23 + File::ChangeNotify::Event 0.23 + File::ChangeNotify::TestHelper undef + File::ChangeNotify::Watcher 0.23 + File::ChangeNotify::Watcher::Default 0.23 + File::ChangeNotify::Watcher::Inotify 0.23 + File::ChangeNotify::Watcher::KQueue 0.23 + inc::MyModuleBuild undef + requirements: + Carp 0 + Class::Load 0 + Data::Dumper 0 + Exporter 0 + File::Find 0 + File::Path 0 + File::Spec 0 + File::Temp 0 + FindBin 0 + List::MoreUtils 0 + Module::Build 0.3601 + Module::Pluggable::Object 0 + Moose 0 + Moose::Util::TypeConstraints 0 + MooseX::Params::Validate 0 + MooseX::SemiAffordanceAccessor 0 + Test::Exception 0 + Test::More 0 + Time::HiRes 0 + base 0 + namespace::autoclean 0 + strict 0 + warnings 0 + File-Copy-Recursive-0.38 + pathname: D/DM/DMUEY/File-Copy-Recursive-0.38.tar.gz + provides: + File::Copy::Recursive 0.38 + requirements: + ExtUtils::MakeMaker 0 + File::Copy 0 + File::Spec 0 + File-Find-Rule-0.33 + pathname: R/RC/RCLAMP/File-Find-Rule-0.33.tar.gz + provides: + File::Find::Rule 0.33 + File::Find::Rule::Test::ATeam undef + requirements: + ExtUtils::MakeMaker 0 + File::Find 0 + File::Spec 0 + Number::Compare 0 + Test::More 0 + Text::Glob 0.07 + File-Listing-6.04 + pathname: G/GA/GAAS/File-Listing-6.04.tar.gz + provides: + File::Listing 6.04 + File::Listing::apache 6.04 + File::Listing::dosftp 6.04 + File::Listing::netware 6.04 + File::Listing::unix 6.04 + File::Listing::vms 6.04 + requirements: + ExtUtils::MakeMaker 0 + HTTP::Date 6 + perl 5.006002 + File-Remove-1.52 + pathname: A/AD/ADAMK/File-Remove-1.52.tar.gz + provides: + File::Remove 1.52 + requirements: + Cwd 3.29 + ExtUtils::MakeMaker 6.36 + File::Spec 3.29 + Test::More 0.42 + perl 5.00503 + File-ShareDir-1.03 + pathname: A/AD/ADAMK/File-ShareDir-1.03.tar.gz + provides: + File::ShareDir 1.03 + requirements: + Carp 0 + Class::Inspector 1.12 + ExtUtils::MakeMaker 6.42 + File::Spec 0.80 + Test::More 0.47 + perl 5.005 + File-Slurp-9999.19 + pathname: U/UR/URI/File-Slurp-9999.19.tar.gz + provides: + File::Slurp 9999.19 + FileSlurp_12 9999.13 + requirements: + Carp 0 + Exporter 0 + ExtUtils::MakeMaker 0 + Fcntl 0 + POSIX 0 + Filesys-Notify-Simple-0.10 + pathname: M/MI/MIYAGAWA/Filesys-Notify-Simple-0.10.tar.gz + provides: + Filesys::Notify::Simple 0.10 + requirements: + ExtUtils::MakeMaker 6.59 + Test::More 0 + Test::SharedFork 0 + perl 5.008001 + Geography-NationalGrid-1.6 + pathname: P/PK/PKENT/Geography-NationalGrid-1.6.tar.gz + provides: + Geography::NationalGrid 1.6 + Geography::NationalGrid::GB 1.3 + Geography::NationalGrid::IE 1.2 + requirements: + ExtUtils::MakeMaker 0 + Getopt-Long-Descriptive-0.093 + pathname: R/RJ/RJBS/Getopt-Long-Descriptive-0.093.tar.gz + provides: + Getopt::Long::Descriptive 0.093 + Getopt::Long::Descriptive::Opts 0.093 + Getopt::Long::Descriptive::Usage 0.093 + requirements: + Carp 0 + ExtUtils::MakeMaker 6.30 + File::Basename 0 + File::Find 0 + File::Temp 0 + Getopt::Long 2.33 + List::Util 0 + Params::Validate 0.97 + Scalar::Util 0 + Sub::Exporter 0.972 + Sub::Exporter::Util 0 + Test::More 0.96 + overload 0 + strict 0 + warnings 0 + HTML-Form-6.03 + pathname: G/GA/GAAS/HTML-Form-6.03.tar.gz + provides: + HTML::Form 6.03 + HTML::Form::FileInput 6.03 + HTML::Form::IgnoreInput 6.03 + HTML::Form::ImageInput 6.03 + HTML::Form::Input 6.03 + HTML::Form::KeygenInput 6.03 + HTML::Form::ListInput 6.03 + HTML::Form::SubmitInput 6.03 + HTML::Form::TextInput 6.03 + requirements: + Encode 2 + ExtUtils::MakeMaker 0 + HTML::TokeParser 0 + HTTP::Request 6 + HTTP::Request::Common 6.03 + URI 1.10 + perl 5.008001 + HTML-Parser-3.69 + pathname: G/GA/GAAS/HTML-Parser-3.69.tar.gz + provides: + HTML::Entities 3.69 + HTML::Filter 3.57 + HTML::HeadParser 3.69 + HTML::LinkExtor 3.69 + HTML::Parser 3.69 + HTML::PullParser 3.57 + HTML::TokeParser 3.69 + requirements: + ExtUtils::MakeMaker 0 + HTML::Tagset 3 + XSLoader 0 + perl 5.008 + HTML-Selector-XPath-0.15 + pathname: C/CO/CORION/HTML-Selector-XPath-0.15.tar.gz + provides: + HTML::Selector::XPath 0.15 + requirements: + ExtUtils::MakeMaker 6.59 + Test::Base 0 + Test::More 0 + perl 5.008001 + HTML-Tagset-3.20 + pathname: P/PE/PETDANCE/HTML-Tagset-3.20.tar.gz + provides: + HTML::Tagset 3.20 + requirements: + ExtUtils::MakeMaker 0 + HTML-Tree-5.03 + pathname: C/CJ/CJM/HTML-Tree-5.03.tar.gz + provides: + HTML::AsSubs 5.03 + HTML::Element 5.03 + HTML::Element::traverse 5.03 + HTML::Parse 5.03 + HTML::Tree 5.03 + HTML::TreeBuilder 5.03 + requirements: + Carp 0 + Encode 0 + Exporter 0 + HTML::Entities 0 + HTML::Parser 3.46 + HTML::Tagset 3.02 + Module::Build 0.2808 + Scalar::Util 0 + Test::Fatal 0 + Test::More 0 + base 0 + integer 0 + perl 5.008 + HTML-TreeBuilder-XPath-0.14 + pathname: M/MI/MIROD/HTML-TreeBuilder-XPath-0.14.tar.gz + provides: + HTML::Element 0.14 + HTML::TreeBuilder::XPath 0.14 + HTML::TreeBuilder::XPath::Attribute 0.14 + HTML::TreeBuilder::XPath::Node 0.14 + HTML::TreeBuilder::XPath::Root 0.14 + HTML::TreeBuilder::XPath::TextNode 0.14 + requirements: + ExtUtils::MakeMaker 0 + HTML::TreeBuilder 0 + List::Util 0 + XML::XPathEngine 0.12 + HTTP-Body-1.17 + pathname: G/GE/GETTY/HTTP-Body-1.17.tar.gz + provides: + HTTP::Body 1.17 + HTTP::Body::MultiPart 1.17 + HTTP::Body::OctetStream 1.17 + HTTP::Body::UrlEncoded 1.17 + HTTP::Body::XForms 1.17 + HTTP::Body::XFormsMultipart 1.17 + PAML undef + requirements: + Carp 0 + Digest::MD5 0 + ExtUtils::MakeMaker 6.30 + File::Temp 0.14 + HTTP::Headers 0 + IO::File 1.14 + Test::Deep 0 + Test::More 0.86 + HTTP-Cookies-6.01 + pathname: G/GA/GAAS/HTTP-Cookies-6.01.tar.gz + provides: + HTTP::Cookies 6.01 + HTTP::Cookies::Microsoft 6.00 + HTTP::Cookies::Netscape 6.00 + requirements: + ExtUtils::MakeMaker 0 + HTTP::Date 6 + HTTP::Headers::Util 6 + Time::Local 0 + perl 5.008001 + HTTP-Daemon-6.01 + pathname: G/GA/GAAS/HTTP-Daemon-6.01.tar.gz + provides: + HTTP::Daemon 6.01 + HTTP::Daemon::ClientConn 6.01 + requirements: + ExtUtils::MakeMaker 0 + HTTP::Date 6 + HTTP::Request 6 + HTTP::Response 6 + HTTP::Status 6 + IO::Socket 0 + LWP::MediaTypes 6 + Sys::Hostname 0 + perl 5.008001 + HTTP-Date-6.02 + pathname: G/GA/GAAS/HTTP-Date-6.02.tar.gz + provides: + HTTP::Date 6.02 + requirements: + ExtUtils::MakeMaker 0 + Time::Local 0 + perl 5.006002 + HTTP-Message-6.06 + pathname: G/GA/GAAS/HTTP-Message-6.06.tar.gz + provides: + HTTP::Config 6.00 + HTTP::Headers 6.05 + HTTP::Headers::Auth 6.00 + HTTP::Headers::ETag 6.00 + HTTP::Headers::Util 6.03 + HTTP::Message 6.06 + HTTP::Request 6.00 + HTTP::Request::Common 6.04 + HTTP::Response 6.04 + HTTP::Status 6.03 + requirements: + Compress::Raw::Zlib 0 + Encode 2.21 + Encode::Locale 1 + ExtUtils::MakeMaker 0 + HTTP::Date 6 + IO::Compress::Bzip2 2.021 + IO::Compress::Deflate 0 + IO::Compress::Gzip 0 + IO::HTML 0 + IO::Uncompress::Bunzip2 2.021 + IO::Uncompress::Gunzip 0 + IO::Uncompress::Inflate 0 + IO::Uncompress::RawInflate 0 + LWP::MediaTypes 6 + MIME::Base64 2.1 + MIME::QuotedPrint 0 + URI 1.10 + perl 5.008001 + HTTP-Negotiate-6.01 + pathname: G/GA/GAAS/HTTP-Negotiate-6.01.tar.gz + provides: + HTTP::Negotiate 6.01 + requirements: + ExtUtils::MakeMaker 0 + HTTP::Headers 6 + perl 5.008001 + HTTP-Parser-XS-0.15 + pathname: K/KA/KAZUHO/HTTP-Parser-XS-0.15.tar.gz + provides: + HTTP::Parser::XS 0.15 + HTTP::Parser::XS::PP undef + requirements: + ExtUtils::MakeMaker 6.42 + Test::More 0.96 + HTTP-Request-AsCGI-1.2 + pathname: F/FL/FLORA/HTTP-Request-AsCGI-1.2.tar.gz + provides: + HTTP::Request::AsCGI 1.2 + requirements: + Carp 0 + Class::Accessor 0 + ExtUtils::MakeMaker 0 + HTTP::Request 0 + HTTP::Response 1.53 + IO::File 0 + Test::More 0 + URI::Escape 0 + HTTP-Server-Simple-0.44 + pathname: J/JE/JESSE/HTTP-Server-Simple-0.44.tar.gz + provides: + HTTP::Server::Simple 0.44 + HTTP::Server::Simple::CGI undef + HTTP::Server::Simple::CGI::Environment undef + requirements: + CGI 0 + ExtUtils::MakeMaker 6.42 + Socket 0 + Test::More 0 + Hash-Merge-0.12 + pathname: D/DM/DMUEY/Hash-Merge-0.12.tar.gz + provides: + Hash::Merge 0.12 + requirements: + Clone 0 + ExtUtils::MakeMaker 0 + Test::More 0.33 + Hash-MultiValue-0.13 + pathname: M/MI/MIYAGAWA/Hash-MultiValue-0.13.tar.gz + provides: + Hash::MultiValue 0.13 + requirements: + ExtUtils::MakeMaker 6.59 + Filter::Util::Call 0 + Test::More 0 + perl 5.006002 + IO-Compress-2.060 + pathname: P/PM/PMQS/IO-Compress-2.060.tar.gz + provides: + Compress::Zlib 2.060 + File::GlobMapper 1.000 + IO::Compress undef + IO::Compress::Adapter::Bzip2 2.060 + IO::Compress::Adapter::Deflate 2.060 + IO::Compress::Adapter::Identity 2.060 + IO::Compress::Base 2.060 + IO::Compress::Base::Common 2.060 + IO::Compress::Bzip2 2.060 + IO::Compress::Deflate 2.060 + IO::Compress::Gzip 2.060 + IO::Compress::Gzip::Constants 2.060 + IO::Compress::RawDeflate 2.060 + IO::Compress::Zip 2.060 + IO::Compress::Zip::Constants 2.060 + IO::Compress::Zlib::Constants 2.060 + IO::Compress::Zlib::Extra 2.060 + IO::Uncompress::Adapter::Bunzip2 2.060 + IO::Uncompress::Adapter::Identity 2.060 + IO::Uncompress::Adapter::Inflate 2.060 + IO::Uncompress::AnyInflate 2.060 + IO::Uncompress::AnyUncompress 2.060 + IO::Uncompress::Base 2.060 + IO::Uncompress::Bunzip2 2.060 + IO::Uncompress::Gunzip 2.060 + IO::Uncompress::Inflate 2.060 + IO::Uncompress::RawInflate 2.060 + IO::Uncompress::Unzip 2.060 + U64 2.060 + Zlib::OldDeflate 2.060 + Zlib::OldInflate 2.060 + requirements: + Compress::Raw::Bzip2 2.060 + Compress::Raw::Zlib 2.060 + ExtUtils::MakeMaker 0 + Scalar::Util 0 + IO-HTML-1.00 + pathname: C/CJ/CJM/IO-HTML-1.00.tar.gz + provides: + IO::HTML 1.00 + requirements: + Carp 0 + Encode 2.10 + Exporter 5.57 + ExtUtils::MakeMaker 6.30 + File::Temp 0 + Scalar::Util 0 + Test::More 0.88 + IO-Socket-SSL-1.84 + pathname: S/SU/SULLR/IO-Socket-SSL-1.84.tar.gz + provides: + IO::Socket::SSL 1.84 + IO::Socket::SSL::SSL_Context 1.84 + IO::Socket::SSL::SSL_HANDLE 1.84 + IO::Socket::SSL::Session_Cache 1.84 + requirements: + ExtUtils::MakeMaker 0 + Net::SSLeay 1.21 + Scalar::Util 0 + IO-String-1.08 + pathname: G/GA/GAAS/IO-String-1.08.tar.gz + provides: + IO::String 1.08 + requirements: + ExtUtils::MakeMaker 0 + IO-stringy-2.110 + pathname: D/DS/DSKOLL/IO-stringy-2.110.tar.gz + provides: + Common undef + ExtUtils::TBone 1.1 + IO::AtomicFile 2.110 + IO::Clever 1.01 + IO::InnerFile 2.110 + IO::Lines 2.110 + IO::Scalar 2.110 + IO::ScalarArray 2.110 + IO::Stringy 2.110 + IO::Wrap 2.110 + IO::WrapTie 2.110 + IO::WrapTie::Master 2.110 + IO::WrapTie::Slave 2.110 + requirements: + ExtUtils::MakeMaker 0 + Image-Size-3.232 + pathname: R/RJ/RJRAY/Image-Size-3.232.tar.gz + provides: + Image::Size 3.232 + requirements: + ExtUtils::MakeMaker 0 + File::Spec 0.8 + Module::Build 0.4 + Test::More 0.80 + JSON-2.59 + pathname: M/MA/MAKAMAKA/JSON-2.59.tar.gz + provides: + JSON 2.59 + JSON::Backend::PP 2.59 + JSON::Boolean 2.59 + JSON::backportPP::Boolean 2.27202 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0 + JSON-PP-2.27202 + pathname: M/MA/MAKAMAKA/JSON-PP-2.27202.tar.gz + provides: + JSON::PP 2.27202 + 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: + JSON::XS 2.33 + JSON::XS::Boolean 2.33 + requirements: + ExtUtils::MakeMaker 0 + common::sense 0 + LWP-MediaTypes-6.02 + pathname: G/GA/GAAS/LWP-MediaTypes-6.02.tar.gz + provides: + LWP::MediaTypes 6.02 + requirements: + ExtUtils::MakeMaker 0 + perl 5.006002 + LWP-Protocol-https-6.03 + pathname: G/GA/GAAS/LWP-Protocol-https-6.03.tar.gz + provides: + LWP::Protocol::https 6.03 + LWP::Protocol::https::Socket 6.03 + requirements: + ExtUtils::MakeMaker 0 + IO::Socket::SSL 1.54 + LWP::UserAgent 6.04 + Mozilla::CA 20110101 + Net::HTTPS 6 + perl 5.008001 + Lingua-EN-FindNumber-1.2 + pathname: T/TM/TMTM/Lingua-EN-FindNumber-1.2.tar.gz + provides: + Lingua::EN::FindNumber 1.2 + requirements: + ExtUtils::MakeMaker 0 + Lingua::EN::Words2Nums 0 + Lingua-EN-Inflect-1.895 + pathname: D/DC/DCONWAY/Lingua-EN-Inflect-1.895.tar.gz + provides: + Lingua::EN::Inflect 1.895 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0 + version 0 + Lingua-EN-Inflect-Number-1.1 + pathname: S/SI/SIMON/Lingua-EN-Inflect-Number-1.1.tar.gz + provides: + Lingua::EN::Inflect::Number 1.1 + requirements: + ExtUtils::MakeMaker 0 + Lingua::EN::Inflect 0 + Lingua-EN-Inflect-Phrase-0.18 + pathname: R/RK/RKITOVER/Lingua-EN-Inflect-Phrase-0.18.tar.gz + provides: + Lingua::EN::Inflect::Phrase 0.18 + requirements: + Exporter 0 + ExtUtils::MakeMaker 6.30 + File::Find 0 + File::Temp 0 + Lingua::EN::FindNumber 0 + Lingua::EN::Inflect 0 + Lingua::EN::Inflect::Number 0 + Lingua::EN::Number::IsOrdinal 0 + Lingua::EN::Tagger 0 + Test::More 0 + Test::NoWarnings 0 + strict 0 + warnings 0 + Lingua-EN-Number-IsOrdinal-0.04 + pathname: R/RK/RKITOVER/Lingua-EN-Number-IsOrdinal-0.04.tar.gz + provides: + Lingua::EN::Number::IsOrdinal 0.04 + requirements: + Exporter 0 + ExtUtils::MakeMaker 6.30 + File::Find 0 + File::Temp 0 + Lingua::EN::FindNumber 0 + Test::Fatal 0 + Test::More 0 + Try::Tiny 0 + strict 0 + warnings 0 + Lingua-EN-Tagger-0.23 + pathname: A/AC/ACOBURN/Lingua-EN-Tagger-0.23.tar.gz + provides: + Lingua::EN::Tagger 0.23 + requirements: + ExtUtils::MakeMaker 0 + File::Spec 0.84 + HTML::Parser 3.45 + HTML::Tagset 3.20 + Lingua::Stem 0.81 + Memoize 1.01 + Memoize::ExpireLRU 0.55 + Storable 2.10 + perl 5.008001 + Lingua-EN-Words2Nums-0.18 + pathname: J/JO/JOEY/Lingua-EN-Words2Nums-0.18.tar.gz + provides: + Lingua::EN::Words2Nums undef + requirements: + ExtUtils::MakeMaker 0 + Lingua-PT-Stemmer-0.01 + pathname: X/XE/XERN/Lingua-PT-Stemmer-0.01.tar.gz + provides: + Lingua::GL::Stemmer 0.01 + Lingua::PT::Stemmer 0.01 + requirements: + ExtUtils::MakeMaker 0 + Lingua-Stem-0.84 + pathname: S/SN/SNOWHARE/Lingua-Stem-0.84.tar.gz + provides: + Lingua::Stem 0.84 + Lingua::Stem::AutoLoader 1.02 + Lingua::Stem::Da 1.01 + Lingua::Stem::De 1.01 + Lingua::Stem::En 2.16 + Lingua::Stem::EnBroken 2.13 + Lingua::Stem::Gl 1.02 + Lingua::Stem::No 1.01 + Lingua::Stem::Pt 1.01 + Lingua::Stem::Sv 1.01 + requirements: + Carp 0 + Lingua::GL::Stemmer 0 + Lingua::PT::Stemmer 0 + Lingua::Stem::Fr 0.02 + Lingua::Stem::It 0 + Lingua::Stem::Ru 0 + Lingua::Stem::Snowball::Da 1.01 + Lingua::Stem::Snowball::No 1.00 + Lingua::Stem::Snowball::Se 1.01 + Text::German 0 + Lingua-Stem-Fr-0.02 + pathname: S/SD/SDP/Lingua-Stem-Fr-0.02.tar.gz + provides: + Lingua::Stem::Fr 0.02 + requirements: + ExtUtils::MakeMaker 0 + Lingua-Stem-It-0.02 + pathname: A/AC/ACALPINI/Lingua-Stem-It-0.02.tar.gz + provides: + Lingua::Stem::It 0.02 + requirements: + ExtUtils::MakeMaker 0 + Lingua-Stem-Ru-0.01 + pathname: A/AL/ALGDR/Lingua-Stem-Ru-0.01.tar.gz + provides: + Lingua::Stem::Ru 0.01 + requirements: + ExtUtils::MakeMaker 0 + Lingua-Stem-Snowball-Da-1.01 + pathname: C/CI/CINE/Lingua-Stem-Snowball-Da-1.01.tar.gz + provides: + Lingua::Stem::Snowball::Da 1.01 + requirements: + ExtUtils::MakeMaker 0 + List-MoreUtils-0.33 + pathname: A/AD/ADAMK/List-MoreUtils-0.33.tar.gz + provides: + List::MoreUtils 0.33 + requirements: + ExtUtils::CBuilder 0.27 + ExtUtils::MakeMaker 6.52 + Test::More 0.82 + perl 5.00503 + MIME-Types-1.38 + pathname: M/MA/MARKOV/MIME-Types-1.38.tar.gz + provides: + MIME::Type 1.38 + MIME::Types 1.38 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0.47 + MIME-tools-5.504 + pathname: D/DS/DSKOLL/MIME-tools-5.504.tar.gz + provides: + MIME::Body 5.504 + MIME::Body::File 5.504 + MIME::Body::InCore 5.504 + MIME::Body::Scalar 5.504 + MIME::Decoder 5.504 + MIME::Decoder::Base64 5.504 + MIME::Decoder::BinHex 5.504 + MIME::Decoder::Binary 5.504 + MIME::Decoder::Gzip64 5.504 + MIME::Decoder::NBit 5.504 + MIME::Decoder::QuotedPrint 5.504 + MIME::Decoder::UU 5.504 + MIME::Entity 5.504 + MIME::Field::ConTraEnc 5.504 + MIME::Field::ContDisp 5.504 + MIME::Field::ContType 5.504 + MIME::Field::ParamVal 5.504 + MIME::Head 5.504 + MIME::Parser 5.504 + MIME::Parser::FileInto undef + MIME::Parser::FileUnder undef + MIME::Parser::Filer undef + MIME::Parser::Reader undef + MIME::Parser::Results undef + MIME::Tools 5.504 + MIME::WordDecoder undef + MIME::WordDecoder::ISO_8859 undef + MIME::WordDecoder::US_ASCII undef + MIME::WordDecoder::UTF_8 undef + MIME::Words 5.504 + requirements: + ExtUtils::MakeMaker 6.42 + File::Path 1 + File::Spec 0.6 + File::Temp 0.18 + IO::File 1.13 + IO::Handle 0 + MIME::Base64 2.2 + Mail::Field 1.05 + Mail::Header 1.01 + Mail::Internet 1.0203 + Test::Deep 0 + Test::More 0 + perl 5.008 + MRO-Compat-0.12 + pathname: B/BO/BOBTFISH/MRO-Compat-0.12.tar.gz + provides: + MRO::Compat 0.12 + requirements: + ExtUtils::MakeMaker 6.59 + Test::More 0.47 + perl 5.006 + MailTools-2.12 + pathname: M/MA/MARKOV/MailTools-2.12.tar.gz + provides: + Mail undef + Mail::Address 2.12 + Mail::Cap 2.12 + Mail::Field 2.12 + Mail::Field::AddrList 2.12 + Mail::Field::Date 2.12 + Mail::Field::Generic 2.12 + Mail::Filter 2.12 + Mail::Header 2.12 + Mail::Internet 2.12 + Mail::Mailer 2.12 + Mail::Mailer::qmail 2.12 + Mail::Mailer::rfc822 2.12 + Mail::Mailer::sendmail 2.12 + Mail::Mailer::smtp 2.12 + Mail::Mailer::smtp::pipe 2.12 + Mail::Mailer::smtps 2.12 + Mail::Mailer::smtps::pipe 2.12 + Mail::Mailer::testfile 2.12 + Mail::Mailer::testfile::pipe 2.12 + Mail::Send 2.12 + Mail::Util 2.12 + requirements: + Date::Format 0 + Date::Parse 0 + ExtUtils::MakeMaker 0 + IO::Handle 0 + Net::Domain 1.05 + Net::SMTP 1.03 + Test::More 0 + Memoize-ExpireLRU-0.55 + pathname: B/BP/BPOWERS/Memoize-ExpireLRU-0.55.tar.gz + provides: + Memoize::ExpireLRU 0.55 + requirements: + ExtUtils::MakeMaker 0 + Memoize 0.52 + Module-Build-0.4007 + pathname: L/LE/LEONT/Module-Build-0.4007.tar.gz + provides: + Module::Build 0.4007 + Module::Build::Base 0.4007 + Module::Build::Compat 0.4007 + Module::Build::Config 0.4007 + Module::Build::Cookbook 0.4007 + Module::Build::Dumper 0.4007 + Module::Build::ModuleInfo 0.4007 + Module::Build::Notes 0.4007 + Module::Build::PPMMaker 0.4007 + Module::Build::Platform::Default 0.4007 + Module::Build::Platform::MacOS 0.4007 + Module::Build::Platform::Unix 0.4007 + Module::Build::Platform::VMS 0.4007 + Module::Build::Platform::VOS 0.4007 + Module::Build::Platform::Windows 0.4007 + Module::Build::Platform::aix 0.4007 + Module::Build::Platform::cygwin 0.4007 + Module::Build::Platform::darwin 0.4007 + Module::Build::Platform::os2 0.4007 + Module::Build::PodParser 0.4007 + Module::Build::Version 0.87 + Module::Build::YAML 1.41 + inc::latest 0.4007 + inc::latest::private 0.4007 + requirements: + 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: + Module::Find 0.11 + ModuleFindTest undef + ModuleFindTest::SubMod undef + ModuleFindTest::SubMod::SubSubMod undef + requirements: + ExtUtils::MakeMaker 0 + File::Find 0 + File::Spec 0 + Test::More 0 + perl 5.006001 + Module-Implementation-0.06 + pathname: D/DR/DROLSKY/Module-Implementation-0.06.tar.gz + provides: + Module::Implementation 0.06 + T::Impl1 undef + T::Impl2 undef + T::ImplFails1 undef + T::ImplFails2 undef + requirements: + Carp 0 + ExtUtils::MakeMaker 6.30 + Module::Runtime 0.012 + Test::Fatal 0 + Test::More 0.88 + Test::Requires 0 + Try::Tiny 0 + strict 0 + warnings 0 + Module-Install-1.06 + pathname: A/AD/ADAMK/Module-Install-1.06.tar.gz + provides: + Module::AutoInstall 1.06 + Module::Install 1.06 + Module::Install::Admin 1.06 + Module::Install::Admin::Bundle 1.06 + Module::Install::Admin::Compiler 1.06 + Module::Install::Admin::Find 1.06 + Module::Install::Admin::Include 1.06 + Module::Install::Admin::Makefile 1.06 + Module::Install::Admin::Manifest 1.06 + Module::Install::Admin::Metadata 1.06 + Module::Install::Admin::ScanDeps 1.06 + Module::Install::Admin::WriteAll 1.06 + Module::Install::AutoInstall 1.06 + Module::Install::Base 1.06 + Module::Install::Base::FakeAdmin 1.06 + Module::Install::Bundle 1.06 + Module::Install::Can 1.06 + Module::Install::Compiler 1.06 + Module::Install::DSL 1.06 + Module::Install::Deprecated 1.06 + Module::Install::External 1.06 + Module::Install::Fetch 1.06 + Module::Install::Include 1.06 + Module::Install::Inline 1.06 + Module::Install::MakeMaker 1.06 + Module::Install::Makefile 1.06 + Module::Install::Metadata 1.06 + Module::Install::PAR 1.06 + Module::Install::Run 1.06 + Module::Install::Scripts 1.06 + Module::Install::Share 1.06 + Module::Install::Win32 1.06 + Module::Install::With 1.06 + Module::Install::WriteAll 1.06 + inc::Module::Install 1.06 + inc::Module::Install::DSL 1.06 + requirements: + Archive::Tar 1.44 + Devel::PPPort 3.16 + ExtUtils::Install 1.52 + ExtUtils::MakeMaker 6.59 + ExtUtils::ParseXS 2.19 + File::Remove 1.42 + File::Spec 3.28 + JSON 2.14 + LWP::UserAgent 5.812 + Module::Build 0.29 + Module::CoreList 2.17 + Module::ScanDeps 0.89 + PAR::Dist 0.29 + Parse::CPAN::Meta 1.39 + Test::Harness 3.13 + Test::More 0.86 + YAML::Tiny 1.38 + perl 5.005 + Module-Metadata-1.000014 + pathname: B/BO/BOBTFISH/Module-Metadata-1.000014.tar.gz + provides: + Module::Metadata 1.000014 + requirements: + 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: + Module::Runtime 0.013 + requirements: + Module::Build 0 + Test::More 0 + perl 5.006 + strict 0 + warnings 0 + Module-ScanDeps-1.10 + pathname: R/RS/RSCHUPP/Module-ScanDeps-1.10.tar.gz + provides: + Module::ScanDeps 1.10 + Module::ScanDeps::Cache undef + Module::ScanDeps::DataFeed undef + requirements: + ExtUtils::MakeMaker 6.59 + File::Spec 0 + File::Temp 0 + Module::Build::ModuleInfo 0 + Test::More 0 + perl 5.008001 + version 0 + Moo-1.003000 + pathname: H/HA/HAARG/Moo-1.003000.tar.gz + provides: + Method::Generate::Accessor undef + Method::Generate::BuildAll undef + Method::Generate::Constructor undef + Method::Generate::DemolishAll undef + Method::Inliner undef + Moo 1.003000 + Moo::HandleMoose undef + Moo::HandleMoose::FakeConstructor undef + 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 + oo undef + requirements: + Class::Method::Modifiers 1.1 + Devel::GlobalDestruction 0.11 + Dist::CheckConflicts 0.02 + ExtUtils::MakeMaker 0 + Module::Runtime 0.012 + Role::Tiny 1.003 + strictures 1.004003 + Moose-2.0604 + pathname: D/DO/DOY/Moose-2.0604.tar.gz + provides: + Bar undef + Bar7::Meta::Trait undef + Bar7::Meta::Trait2 undef + BinaryTree 0.02 + Class::MOP 2.0604 + Class::MOP::Attribute 2.0604 + Class::MOP::Class 2.0604 + Class::MOP::Class::Immutable::Trait 2.0604 + Class::MOP::Deprecated 2.0604 + Class::MOP::Instance 2.0604 + Class::MOP::Method 2.0604 + Class::MOP::Method::Accessor 2.0604 + Class::MOP::Method::Constructor 2.0604 + Class::MOP::Method::Generated 2.0604 + Class::MOP::Method::Inlined 2.0604 + Class::MOP::Method::Meta 2.0604 + Class::MOP::Method::Overload 2.0604 + Class::MOP::Method::Wrapped 2.0604 + Class::MOP::MiniTrait 2.0604 + Class::MOP::Mixin 2.0604 + Class::MOP::Mixin::AttributeCore 2.0604 + Class::MOP::Mixin::HasAttributes 2.0604 + Class::MOP::Mixin::HasMethods 2.0604 + Class::MOP::Module 2.0604 + Class::MOP::Object 2.0604 + Class::MOP::Package 2.0604 + Foo undef + MMHelper undef + MY undef + Moose 2.0604 + Moose::Cookbook::Legacy::Debugging_BaseClassReplacement 2.0604 + Moose::Cookbook::Meta::Labeled_AttributeMetaclass 2.0604 + Moose::Deprecated 2.0604 + Moose::Error::Confess 2.0604 + Moose::Error::Croak 2.0604 + Moose::Error::Default 2.0604 + Moose::Exporter 2.0604 + Moose::Meta::Attribute 2.0604 + Moose::Meta::Attribute::Custom::Bar undef + Moose::Meta::Attribute::Custom::Foo undef + Moose::Meta::Attribute::Custom::Moose 2.0604 + Moose::Meta::Attribute::Custom::Trait::Bar undef + Moose::Meta::Attribute::Custom::Trait::Foo undef + Moose::Meta::Attribute::Native 2.0604 + Moose::Meta::Attribute::Native::Trait 2.0604 + Moose::Meta::Attribute::Native::Trait::Array 2.0604 + Moose::Meta::Attribute::Native::Trait::Bool 2.0604 + Moose::Meta::Attribute::Native::Trait::Code 2.0604 + Moose::Meta::Attribute::Native::Trait::Counter 2.0604 + Moose::Meta::Attribute::Native::Trait::Hash 2.0604 + Moose::Meta::Attribute::Native::Trait::Number 2.0604 + Moose::Meta::Attribute::Native::Trait::String 2.0604 + Moose::Meta::Class 2.0604 + Moose::Meta::Class::Immutable::Trait 2.0604 + Moose::Meta::Instance 2.0604 + Moose::Meta::Method 2.0604 + Moose::Meta::Method::Accessor 2.0604 + Moose::Meta::Method::Accessor::Native 2.0604 + Moose::Meta::Method::Accessor::Native::Array 2.0604 + Moose::Meta::Method::Accessor::Native::Array::Writer 2.0604 + Moose::Meta::Method::Accessor::Native::Array::accessor 2.0604 + Moose::Meta::Method::Accessor::Native::Array::clear 2.0604 + Moose::Meta::Method::Accessor::Native::Array::count 2.0604 + Moose::Meta::Method::Accessor::Native::Array::delete 2.0604 + Moose::Meta::Method::Accessor::Native::Array::elements 2.0604 + Moose::Meta::Method::Accessor::Native::Array::first 2.0604 + Moose::Meta::Method::Accessor::Native::Array::first_index 2.0604 + Moose::Meta::Method::Accessor::Native::Array::get 2.0604 + Moose::Meta::Method::Accessor::Native::Array::grep 2.0604 + Moose::Meta::Method::Accessor::Native::Array::insert 2.0604 + Moose::Meta::Method::Accessor::Native::Array::is_empty 2.0604 + Moose::Meta::Method::Accessor::Native::Array::join 2.0604 + Moose::Meta::Method::Accessor::Native::Array::map 2.0604 + Moose::Meta::Method::Accessor::Native::Array::natatime 2.0604 + Moose::Meta::Method::Accessor::Native::Array::pop 2.0604 + Moose::Meta::Method::Accessor::Native::Array::push 2.0604 + Moose::Meta::Method::Accessor::Native::Array::reduce 2.0604 + Moose::Meta::Method::Accessor::Native::Array::set 2.0604 + Moose::Meta::Method::Accessor::Native::Array::shallow_clone 2.0604 + Moose::Meta::Method::Accessor::Native::Array::shift 2.0604 + Moose::Meta::Method::Accessor::Native::Array::shuffle 2.0604 + Moose::Meta::Method::Accessor::Native::Array::sort 2.0604 + Moose::Meta::Method::Accessor::Native::Array::sort_in_place 2.0604 + Moose::Meta::Method::Accessor::Native::Array::splice 2.0604 + Moose::Meta::Method::Accessor::Native::Array::uniq 2.0604 + Moose::Meta::Method::Accessor::Native::Array::unshift 2.0604 + Moose::Meta::Method::Accessor::Native::Bool::not 2.0604 + Moose::Meta::Method::Accessor::Native::Bool::set 2.0604 + Moose::Meta::Method::Accessor::Native::Bool::toggle 2.0604 + Moose::Meta::Method::Accessor::Native::Bool::unset 2.0604 + Moose::Meta::Method::Accessor::Native::Code::execute 2.0604 + Moose::Meta::Method::Accessor::Native::Code::execute_method 2.0604 + Moose::Meta::Method::Accessor::Native::Collection 2.0604 + Moose::Meta::Method::Accessor::Native::Counter::Writer 2.0604 + Moose::Meta::Method::Accessor::Native::Counter::dec 2.0604 + Moose::Meta::Method::Accessor::Native::Counter::inc 2.0604 + Moose::Meta::Method::Accessor::Native::Counter::reset 2.0604 + Moose::Meta::Method::Accessor::Native::Counter::set 2.0604 + Moose::Meta::Method::Accessor::Native::Hash 2.0604 + Moose::Meta::Method::Accessor::Native::Hash::Writer 2.0604 + Moose::Meta::Method::Accessor::Native::Hash::accessor 2.0604 + Moose::Meta::Method::Accessor::Native::Hash::clear 2.0604 + Moose::Meta::Method::Accessor::Native::Hash::count 2.0604 + Moose::Meta::Method::Accessor::Native::Hash::defined 2.0604 + Moose::Meta::Method::Accessor::Native::Hash::delete 2.0604 + Moose::Meta::Method::Accessor::Native::Hash::elements 2.0604 + Moose::Meta::Method::Accessor::Native::Hash::exists 2.0604 + Moose::Meta::Method::Accessor::Native::Hash::get 2.0604 + Moose::Meta::Method::Accessor::Native::Hash::is_empty 2.0604 + Moose::Meta::Method::Accessor::Native::Hash::keys 2.0604 + Moose::Meta::Method::Accessor::Native::Hash::kv 2.0604 + Moose::Meta::Method::Accessor::Native::Hash::set 2.0604 + Moose::Meta::Method::Accessor::Native::Hash::shallow_clone 2.0604 + Moose::Meta::Method::Accessor::Native::Hash::values 2.0604 + Moose::Meta::Method::Accessor::Native::Number::abs 2.0604 + Moose::Meta::Method::Accessor::Native::Number::add 2.0604 + Moose::Meta::Method::Accessor::Native::Number::div 2.0604 + Moose::Meta::Method::Accessor::Native::Number::mod 2.0604 + Moose::Meta::Method::Accessor::Native::Number::mul 2.0604 + Moose::Meta::Method::Accessor::Native::Number::set 2.0604 + Moose::Meta::Method::Accessor::Native::Number::sub 2.0604 + Moose::Meta::Method::Accessor::Native::Reader 2.0604 + Moose::Meta::Method::Accessor::Native::String::append 2.0604 + Moose::Meta::Method::Accessor::Native::String::chomp 2.0604 + Moose::Meta::Method::Accessor::Native::String::chop 2.0604 + Moose::Meta::Method::Accessor::Native::String::clear 2.0604 + Moose::Meta::Method::Accessor::Native::String::inc 2.0604 + Moose::Meta::Method::Accessor::Native::String::length 2.0604 + Moose::Meta::Method::Accessor::Native::String::match 2.0604 + Moose::Meta::Method::Accessor::Native::String::prepend 2.0604 + Moose::Meta::Method::Accessor::Native::String::replace 2.0604 + Moose::Meta::Method::Accessor::Native::String::substr 2.0604 + Moose::Meta::Method::Accessor::Native::Writer 2.0604 + Moose::Meta::Method::Augmented 2.0604 + Moose::Meta::Method::Constructor 2.0604 + Moose::Meta::Method::Delegation 2.0604 + Moose::Meta::Method::Destructor 2.0604 + Moose::Meta::Method::Meta 2.0604 + Moose::Meta::Method::Overridden 2.0604 + Moose::Meta::Mixin::AttributeCore 2.0604 + Moose::Meta::Object::Trait 2.0604 + Moose::Meta::Role 2.0604 + Moose::Meta::Role::Application 2.0604 + Moose::Meta::Role::Application::RoleSummation 2.0604 + Moose::Meta::Role::Application::ToClass 2.0604 + Moose::Meta::Role::Application::ToInstance 2.0604 + Moose::Meta::Role::Application::ToRole 2.0604 + Moose::Meta::Role::Attribute 2.0604 + Moose::Meta::Role::Composite 2.0604 + Moose::Meta::Role::Method 2.0604 + Moose::Meta::Role::Method::Conflicting 2.0604 + Moose::Meta::Role::Method::Required 2.0604 + Moose::Meta::TypeCoercion 2.0604 + Moose::Meta::TypeCoercion::Union 2.0604 + Moose::Meta::TypeConstraint 2.0604 + Moose::Meta::TypeConstraint::Class 2.0604 + Moose::Meta::TypeConstraint::DuckType 2.0604 + Moose::Meta::TypeConstraint::Enum 2.0604 + Moose::Meta::TypeConstraint::Parameterizable 2.0604 + Moose::Meta::TypeConstraint::Parameterized 2.0604 + Moose::Meta::TypeConstraint::Registry 2.0604 + Moose::Meta::TypeConstraint::Role 2.0604 + Moose::Meta::TypeConstraint::Union 2.0604 + Moose::Object 2.0604 + Moose::Role 2.0604 + Moose::Util 2.0604 + Moose::Util::MetaRole 2.0604 + Moose::Util::TypeConstraints 2.0604 + Moose::Util::TypeConstraints::Builtins 2.0604 + My::Bar undef + My::Content undef + My::Extract undef + My::Output undef + My::Trait::Bar undef + MyExporter undef + MyInline undef + MyMetaClass undef + MyMetaClass::Attribute undef + MyMetaClass::Instance undef + MyMetaClass::Method undef + MyMetaClass::Random undef + MyMetaclassRole undef + MyMooseA undef + MyMooseB undef + MyMooseObject undef + NoInlineAccessor undef + NoInlineAttribute undef + Role::Child undef + Role::Interface undef + Role::Parent undef + SyntaxError undef + Test::Moose 2.0604 + inc::CheckDelta undef + inc::Clean undef + inc::ExtractInlineTests undef + inc::GatherDir undef + inc::GitUpToDate undef + inc::MakeMaker undef + inc::RequireAuthorDeps undef + inc::TestRelease undef + metaclass 2.0604 + oose 2.0604 + requirements: + Carp 1.22 + Class::Load 0.09 + Class::Load::XS 0.01 + Data::OptList 0.107 + Devel::GlobalDestruction 0 + Dist::CheckConflicts 0.02 + Eval::Closure 0.04 + ExtUtils::MakeMaker 6.30 + List::MoreUtils 0.28 + MRO::Compat 0.05 + Package::DeprecationManager 0.11 + Package::Stash 0.32 + Package::Stash::XS 0.24 + Params::Util 1.00 + Scalar::Util 1.19 + Sub::Exporter 0.980 + Sub::Name 0.05 + Task::Weaken 0 + Test::Fatal 0.001 + Test::More 0.88 + Test::Requires 0.05 + Try::Tiny 0.02 + MooseX-Daemonize-0.15 + pathname: M/MI/MICHAELR/MooseX-Daemonize-0.15.tar.gz + provides: + MooseX::Daemonize 0.15 + MooseX::Daemonize::Core 0.15 + MooseX::Daemonize::Pid 0.15 + MooseX::Daemonize::Pid::File 0.15 + MooseX::Daemonize::WithPidFile 0.15 + Test::MooseX::Daemonize 0.15 + Test::MooseX::Daemonize::Testable 0.15 + requirements: + ExtUtils::MakeMaker 6.36 + Moose 0.33 + MooseX::Getopt 0.07 + MooseX::Types::Path::Class 0 + Test::Moose 0 + Test::More 0 + MooseX-Emulate-Class-Accessor-Fast-0.00903 + pathname: F/FL/FLORA/MooseX-Emulate-Class-Accessor-Fast-0.00903.tar.gz + provides: + MooseX::Adopt::Class::Accessor::Fast 0.00200 + MooseX::Emulate::Class::Accessor::Fast 0.00903 + MooseX::Emulate::Class::Accessor::Fast::Meta::Accessor undef + MooseX::Emulate::Class::Accessor::Fast::Meta::Role::Attribute undef + requirements: + ExtUtils::MakeMaker 6.42 + Moose 0.84 + Test::Exception 0 + Test::More 0 + namespace::clean 0 + MooseX-Getopt-0.56 + pathname: E/ET/ETHER/MooseX-Getopt-0.56.tar.gz + provides: + MooseX::Getopt 0.56 + MooseX::Getopt::Basic 0.56 + MooseX::Getopt::Dashes 0.56 + MooseX::Getopt::GLD 0.56 + MooseX::Getopt::Meta::Attribute 0.56 + MooseX::Getopt::Meta::Attribute::NoGetopt 0.56 + MooseX::Getopt::Meta::Attribute::Trait 0.56 + MooseX::Getopt::Meta::Attribute::Trait::NoGetopt 0.56 + MooseX::Getopt::OptionTypeMap 0.56 + MooseX::Getopt::ProcessedArgv 0.56 + MooseX::Getopt::Strict 0.56 + requirements: + Carp 0 + Config::Any::YAML 0 + ExtUtils::MakeMaker 6.30 + File::Find 0 + File::Temp 0 + Getopt::Long 2.37 + Getopt::Long::Descriptive 0.081 + Moose 0 + Moose::Meta::Attribute 0 + Moose::Meta::Class 0 + Moose::Role 0.56 + Moose::Util::TypeConstraints 0 + MooseX::Role::Parameterized 0 + Path::Tiny 0.009 + Scalar::Util 0 + Test::CheckDeps 0.002 + Test::Deep 0 + Test::Fatal 0.003 + Test::Moose 0 + Test::More 0.88 + Test::NoWarnings 1.04 + Test::Requires 0 + Test::Trap 0 + Test::Warn 0.21 + Try::Tiny 0 + strict 0 + warnings 0 + MooseX-MethodAttributes-0.28 + pathname: E/ET/ETHER/MooseX-MethodAttributes-0.28.tar.gz + provides: + MooseX::MethodAttributes 0.28 + MooseX::MethodAttributes::Inheritable 0.28 + MooseX::MethodAttributes::Role 0.28 + MooseX::MethodAttributes::Role::AttrContainer 0.28 + MooseX::MethodAttributes::Role::AttrContainer::Inheritable 0.28 + MooseX::MethodAttributes::Role::Meta::Class 0.28 + MooseX::MethodAttributes::Role::Meta::Map 0.28 + MooseX::MethodAttributes::Role::Meta::Method 0.28 + MooseX::MethodAttributes::Role::Meta::Method::MaybeWrapped 0.28 + MooseX::MethodAttributes::Role::Meta::Method::Wrapped 0.28 + MooseX::MethodAttributes::Role::Meta::Role 0.28 + MooseX::MethodAttributes::Role::Meta::Role::Application 0.28 + MooseX::MethodAttributes::Role::Meta::Role::Application::Summation 0.28 + requirements: + ExtUtils::MakeMaker 6.30 + Moose 0.98 + MooseX::Types::Moose 0.21 + Test::CheckDeps 0.002 + Test::Exception 0 + Test::More 0.88 + namespace::autoclean 0 + namespace::clean 0.10 + MooseX-Params-Validate-0.18 + pathname: D/DR/DROLSKY/MooseX-Params-Validate-0.18.tar.gz + provides: + MooseX::Params::Validate 0.18 + requirements: + Carp 0 + Devel::Caller 0 + ExtUtils::MakeMaker 6.30 + Moose 0.58 + Moose::Role 0 + Moose::Util::TypeConstraints 0 + Params::Validate 0.88 + Scalar::Util 0 + Sub::Exporter 0 + Test::Fatal 0 + Test::More 0.88 + overload 0 + strict 0 + warnings 0 + MooseX-Role-Parameterized-1.00 + pathname: S/SA/SARTAK/MooseX-Role-Parameterized-1.00.tar.gz + provides: + MooseX::Role::Parameterized 1.00 + MooseX::Role::Parameterized::Meta::Role::Parameterizable 0.27 + MooseX::Role::Parameterized::Meta::Role::Parameterized 0.27 + MooseX::Role::Parameterized::Meta::Trait::Parameterized 0.27 + MooseX::Role::Parameterized::Parameters 0.27 + requirements: + ExtUtils::MakeMaker 6.42 + Moose 2.0300 + Test::Fatal 0 + Test::Moose 0 + Test::More 0.96 + perl 5.008001 + MooseX-Role-WithOverloading-0.13 + pathname: E/ET/ETHER/MooseX-Role-WithOverloading-0.13.tar.gz + provides: + MooseX::Role::WithOverloading 0.13 + MooseX::Role::WithOverloading::Meta::Role 0.13 + MooseX::Role::WithOverloading::Meta::Role::Application 0.13 + MooseX::Role::WithOverloading::Meta::Role::Application::Composite 0.13 + MooseX::Role::WithOverloading::Meta::Role::Application::Composite::ToClass 0.13 + MooseX::Role::WithOverloading::Meta::Role::Application::Composite::ToInstance 0.13 + MooseX::Role::WithOverloading::Meta::Role::Application::Composite::ToRole 0.13 + MooseX::Role::WithOverloading::Meta::Role::Application::FixOverloadedRefs 0.13 + MooseX::Role::WithOverloading::Meta::Role::Application::ToClass 0.13 + MooseX::Role::WithOverloading::Meta::Role::Application::ToInstance 0.13 + MooseX::Role::WithOverloading::Meta::Role::Application::ToRole 0.13 + MooseX::Role::WithOverloading::Meta::Role::Composite 0.13 + requirements: + ExtUtils::MakeMaker 6.30 + Moose 0.94 + Moose::Role 1.15 + Test::CheckDeps 0.002 + Test::More 0.88 + Test::NoWarnings 1.04 + aliased 0 + namespace::autoclean 0.12 + namespace::clean 0 + MooseX-SemiAffordanceAccessor-0.09 + pathname: D/DR/DROLSKY/MooseX-SemiAffordanceAccessor-0.09.tar.gz + provides: + MooseX::SemiAffordanceAccessor 0.09 + MooseX::SemiAffordanceAccessor::Role::Attribute 0.09 + requirements: + ExtUtils::MakeMaker 6.31 + Moose 1.16 + Test::More 0.88 + MooseX-Traits-Pluggable-0.10 + pathname: R/RK/RKITOVER/MooseX-Traits-Pluggable-0.10.tar.gz + provides: + MooseX::Traits::Pluggable 0.10 + requirements: + Class::MOP 0.84 + ExtUtils::MakeMaker 6.42 + List::MoreUtils 0 + Moose 0 + Moose::Role 0 + Scalar::Util 0 + Test::Exception 0 + Test::More 0 + namespace::autoclean 0 + MooseX-Types-0.35 + pathname: D/DR/DROLSKY/MooseX-Types-0.35.tar.gz + provides: + Combined undef + DecoratorLibrary undef + Empty undef + IntrospectTypeExports undef + MooseX::Types 0.35 + MooseX::Types::Base 0.35 + MooseX::Types::CheckedUtilExports 0.35 + MooseX::Types::Combine 0.35 + MooseX::Types::Moose 0.35 + MooseX::Types::TypeDecorator 0.35 + MooseX::Types::UndefinedType 0.35 + MooseX::Types::Util 0.35 + MooseX::Types::Wrapper 0.35 + SubExporterCompatibility undef + TestLibrary undef + TestLibrary2 undef + TestNamespaceSep undef + TestWrapper undef + requirements: + Carp 0 + Carp::Clan 6.00 + ExtUtils::MakeMaker 6.30 + FindBin 0 + Moose 1.06 + Scalar::Util 1.19 + Sub::Install 0.924 + Sub::Name 0 + Test::Fatal 0 + Test::Moose 0 + Test::More 0.88 + Test::Requires 0 + namespace::clean 0.19 + MooseX-Types-Path-Class-0.06 + pathname: T/TH/THEPLER/MooseX-Types-Path-Class-0.06.tar.gz + provides: + MooseX::Types::Path::Class 0.06 + requirements: + Class::MOP 0 + ExtUtils::MakeMaker 6.30 + Moose 0.39 + MooseX::Types 0.04 + Path::Class 0.16 + Test::More 0.88 + Mozilla-CA-20130114 + pathname: A/AB/ABH/Mozilla-CA-20130114.tar.gz + provides: + Mozilla::CA 20130114 + requirements: + ExtUtils::MakeMaker 0 + Test 0 + perl 5.006 + Net-DNS-0.72 + pathname: N/NL/NLNETLABS/Net-DNS-0.72.tar.gz + provides: + Net::DNS 0.72 + Net::DNS::Domain 1096 + Net::DNS::DomainName 1096 + Net::DNS::DomainName1035 1096 + Net::DNS::DomainName2535 1096 + Net::DNS::Header 1086 + Net::DNS::Mailbox 1096 + Net::DNS::Mailbox1035 1096 + Net::DNS::Mailbox2535 1096 + Net::DNS::Nameserver 1096 + Net::DNS::Packet 1086 + Net::DNS::Parameters 1074 + Net::DNS::Question 1074 + Net::DNS::RR 1094 + Net::DNS::RR::A 1096 + Net::DNS::RR::AAAA 1096 + Net::DNS::RR::AFSDB 1096 + Net::DNS::RR::APL 1096 + Net::DNS::RR::APL::Item 1096 + Net::DNS::RR::CERT 1073 + Net::DNS::RR::CNAME 1096 + Net::DNS::RR::DHCID 1096 + Net::DNS::RR::DNAME 1096 + Net::DNS::RR::EID 1096 + Net::DNS::RR::HINFO 1096 + Net::DNS::RR::HIP 1096 + Net::DNS::RR::IPSECKEY 1096 + Net::DNS::RR::ISDN 1096 + Net::DNS::RR::KX 1096 + Net::DNS::RR::L32 1096 + Net::DNS::RR::L64 1096 + Net::DNS::RR::LOC 1075 + Net::DNS::RR::LP 1096 + Net::DNS::RR::MB 1096 + Net::DNS::RR::MG 1096 + Net::DNS::RR::MINFO 1096 + Net::DNS::RR::MR 1096 + Net::DNS::RR::MX 1096 + Net::DNS::RR::NAPTR 1096 + Net::DNS::RR::NID 1096 + Net::DNS::RR::NIMLOC 1096 + Net::DNS::RR::NS 1096 + Net::DNS::RR::NSAP 1096 + Net::DNS::RR::NULL 1096 + Net::DNS::RR::OPT 1096 + Net::DNS::RR::PTR 1096 + Net::DNS::RR::PX 1096 + Net::DNS::RR::RP 1096 + Net::DNS::RR::RT 1096 + Net::DNS::RR::SOA 1096 + Net::DNS::RR::SPF 1096 + Net::DNS::RR::SRV 1096 + Net::DNS::RR::SSHFP 1096 + Net::DNS::RR::TKEY 1096 + Net::DNS::RR::TLSA 1096 + Net::DNS::RR::TSIG 1090 + Net::DNS::RR::TXT 1079 + Net::DNS::RR::X25 1096 + Net::DNS::Resolver 1088 + Net::DNS::Resolver::Base 1094 + Net::DNS::Resolver::MSWin32 1096 + Net::DNS::Resolver::Recurse 1096 + Net::DNS::Resolver::UNIX 1096 + Net::DNS::Resolver::cygwin 1096 + Net::DNS::Resolver::os2 1096 + Net::DNS::Text 1079 + Net::DNS::Update 1096 + Net::DNS::ZoneFile 1094 + Net::DNS::ZoneFile::Generator 1094 + Net::DNS::ZoneFile::Text 1094 + requirements: + Digest::HMAC_MD5 1 + Digest::MD5 2.12 + Digest::SHA 5.23 + ExtUtils::MakeMaker 0 + IO::Socket 0 + MIME::Base64 2.11 + Test::More 0.18 + Net-Domain-TLD-1.69 + pathname: A/AL/ALEXP/Net-Domain-TLD-1.69.tar.gz + provides: + Net::Domain::TLD 1.69 + requirements: + Carp 0 + ExtUtils::MakeMaker 0 + Storable 0 + Net-HTTP-6.06 + pathname: G/GA/GAAS/Net-HTTP-6.06.tar.gz + provides: + Net::HTTP 6.06 + Net::HTTP::Methods 6.06 + Net::HTTP::NB 6.04 + Net::HTTPS 6.04 + requirements: + Compress::Raw::Zlib 0 + ExtUtils::MakeMaker 0 + IO::Compress::Gzip 0 + IO::Select 0 + IO::Socket::INET 0 + perl 5.006002 + Net-SSLeay-1.52 + pathname: M/MI/MIKEM/Net-SSLeay-1.52.tar.gz + provides: + Net::SSLeay 1.52 + Net::SSLeay::Handle 0.61 + requirements: + ExtUtils::MakeMaker 6.36 + MIME::Base64 0 + Test::More 0.60_01 + perl 5.005 + Net-Server-2.007 + pathname: R/RH/RHANDOM/Net-Server-2.007.tar.gz + provides: + Net::Server 2.007 + Net::Server::Daemonize 0.06 + Net::Server::Fork undef + Net::Server::HTTP undef + Net::Server::INET undef + Net::Server::INET::Handle undef + Net::Server::Log::Log::Log4perl undef + Net::Server::Log::Sys::Syslog undef + Net::Server::MultiType undef + Net::Server::Multiplex undef + Net::Server::Multiplex::MUX undef + Net::Server::PSGI undef + Net::Server::PreFork undef + Net::Server::PreForkSimple undef + Net::Server::Proto undef + Net::Server::Proto::SSL undef + Net::Server::Proto::SSLEAY undef + Net::Server::Proto::TCP undef + Net::Server::Proto::UDP undef + Net::Server::Proto::UNIX undef + Net::Server::Proto::UNIXDGRAM undef + Net::Server::SIG 0.03 + Net::Server::Single undef + Net::Server::TiedHandle 2.007 + requirements: + ExtUtils::MakeMaker 0 + IO::Socket 0 + POSIX 0 + Socket 0 + Number-Compare-0.03 + pathname: R/RC/RCLAMP/Number-Compare-0.03.tar.gz + provides: + Number::Compare 0.03 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0 + Object-Signature-1.07 + pathname: A/AD/ADAMK/Object-Signature-1.07.tar.gz + provides: + Object::Signature 1.07 + Object::Signature::File 1.07 + requirements: + Digest::MD5 2.00 + ExtUtils::MakeMaker 6.42 + Storable 2.11 + Test::More 0.47 + perl 5.005 + PAR-Dist-0.49 + pathname: R/RS/RSCHUPP/PAR-Dist-0.49.tar.gz + provides: + PAR::Dist 0.49 + requirements: + ExtUtils::MakeMaker 0 + File::Find 0 + File::Path 0 + File::Spec 0 + File::Temp 0 + Package-DeprecationManager-0.13 + pathname: D/DR/DROLSKY/Package-DeprecationManager-0.13.tar.gz + provides: + Package::DeprecationManager 0.13 + requirements: + Carp 0 + ExtUtils::MakeMaker 6.30 + List::MoreUtils 0 + Params::Util 0 + Sub::Install 0 + Test::Fatal 0 + Test::More 0.88 + Test::Requires 0 + strict 0 + warnings 0 + Package-Stash-0.34 + pathname: D/DO/DOY/Package-Stash-0.34.tar.gz + provides: + CompileTime undef + Package::Stash 0.34 + Package::Stash::PP 0.34 + inc::DistMeta undef + inc::MMPackageStash undef + requirements: + B 0 + Carp 0 + Dist::CheckConflicts 0.02 + ExtUtils::MakeMaker 6.30 + File::Find 0 + File::Temp 0 + Module::Implementation 0.06 + Package::DeprecationManager 0 + Package::Stash::XS 0.26 + Scalar::Util 0 + Symbol 0 + Test::Fatal 0 + Test::More 0.88 + Test::Requires 0 + base 0 + constant 0 + strict 0 + warnings 0 + Package-Stash-XS-0.26 + pathname: D/DO/DOY/Package-Stash-XS-0.26.tar.gz + provides: + CompileTime undef + Package::Stash::XS 0.26 + requirements: + B 0 + ExtUtils::MakeMaker 6.30 + File::Find 0 + File::Temp 0 + Scalar::Util 0 + Symbol 0 + Test::Fatal 0 + Test::More 0.88 + Test::Requires 0 + XSLoader 0 + base 0 + constant 0 + strict 0 + warnings 0 + PadWalker-1.96 + pathname: R/RO/ROBIN/PadWalker-1.96.tar.gz + provides: + PadWalker 1.96 + requirements: + ExtUtils::MakeMaker 0 + perl 5.008001 + Params-Classify-0.013 + pathname: Z/ZE/ZEFRAM/Params-Classify-0.013.tar.gz + provides: + Params::Classify 0.013 + requirements: + Exporter 0 + ExtUtils::ParseXS 2.2006 + Module::Build 0 + Scalar::Util 1.01 + Test::More 0 + parent 0 + perl 5.006001 + strict 0 + warnings 0 + Params-Util-1.07 + pathname: A/AD/ADAMK/Params-Util-1.07.tar.gz + provides: + Params::Util 1.07 + requirements: + ExtUtils::CBuilder 0.27 + ExtUtils::MakeMaker 6.52 + File::Spec 0.80 + Scalar::Util 1.18 + Test::More 0.42 + perl 5.00503 + Params-Validate-1.07 + pathname: D/DR/DROLSKY/Params-Validate-1.07.tar.gz + provides: + Attribute::Params::Validate 1.07 + Bar undef + Baz undef + Foo undef + PVTests undef + PVTests::Callbacks undef + PVTests::Defaults undef + PVTests::Regex undef + PVTests::Standard undef + PVTests::With undef + Params::Validate 1.07 + Params::Validate::Constants 1.07 + Params::Validate::PP 1.07 + Params::Validate::XS 1.07 + Quux undef + Testing::X undef + Yadda undef + inc::MyModuleBuild undef + requirements: + Attribute::Handlers 0.79 + Carp 0 + Devel::Peek 0 + Exporter 0 + ExtUtils::CBuilder 0 + File::Spec 0 + File::Temp 0 + Module::Build 0.3601 + Module::Implementation 0 + Scalar::Util 1.10 + Test::Fatal 0 + Test::More 0.88 + Tie::Array 0 + Tie::Hash 0 + XSLoader 0 + attributes 0 + base 0 + overload 0 + perl 5.008001 + strict 0 + vars 0 + warnings 0 + Parse-CPAN-Meta-1.4405 + pathname: D/DA/DAGOLDEN/Parse-CPAN-Meta-1.4405.tar.gz + 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: + Path::Class 0.31 + Path::Class::Dir 0.31 + Path::Class::Entity 0.31 + Path::Class::File 0.31 + requirements: + Carp 0 + Cwd 0 + Exporter 0 + ExtUtils::MakeMaker 6.30 + File::Path 0 + File::Spec 0.87 + File::Temp 0 + File::stat 0 + IO::Dir 0 + IO::File 0 + Module::Build 0.3601 + Scalar::Util 0 + Test 0 + Test::More 0 + base 0 + overload 0 + strict 0 + warnings 0 + Path-Tiny-0.028 + pathname: D/DA/DAGOLDEN/Path-Tiny-0.028.tar.gz + 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: + Cwd 3.40 + File::Spec 3.40 + File::Spec::Cygwin 3.40 + File::Spec::Epoc 3.40 + File::Spec::Functions 3.40 + File::Spec::Mac 3.40 + File::Spec::OS2 3.40 + File::Spec::Unix 3.40 + 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: + HTTP::Message::PSGI undef + HTTP::Server::PSGI undef + Plack 1.0018 + Plack::App::CGIBin undef + Plack::App::Cascade undef + Plack::App::Directory undef + Plack::App::File undef + Plack::App::PSGIBin undef + Plack::App::URLMap undef + Plack::App::WrapCGI undef + Plack::Builder undef + Plack::Component undef + Plack::HTTPParser undef + Plack::HTTPParser::PP undef + Plack::Handler undef + Plack::Handler::Apache1 undef + Plack::Handler::Apache2 undef + Plack::Handler::Apache2::Registry undef + Plack::Handler::CGI undef + Plack::Handler::CGI::Writer undef + Plack::Handler::FCGI undef + Plack::Handler::HTTP::Server::PSGI undef + Plack::Handler::HTTP::Server::Simple undef + Plack::Handler::HTTP::Server::Simple::PSGIServer undef + Plack::Handler::Standalone undef + Plack::Loader undef + Plack::Loader::Delayed undef + Plack::Loader::Restarter undef + Plack::Loader::Shotgun undef + Plack::MIME undef + Plack::Middleware undef + Plack::Middleware::AccessLog undef + Plack::Middleware::AccessLog::Timed undef + Plack::Middleware::Auth::Basic undef + Plack::Middleware::BufferedStreaming undef + Plack::Middleware::Chunked undef + Plack::Middleware::Conditional undef + Plack::Middleware::ConditionalGET undef + Plack::Middleware::ContentLength undef + Plack::Middleware::ContentMD5 undef + Plack::Middleware::ErrorDocument undef + Plack::Middleware::HTTPExceptions undef + Plack::Middleware::Head undef + Plack::Middleware::IIS6ScriptNameFix undef + Plack::Middleware::IIS7KeepAliveFix undef + Plack::Middleware::JSONP undef + Plack::Middleware::LighttpdScriptNameFix undef + Plack::Middleware::Lint undef + Plack::Middleware::Log4perl undef + Plack::Middleware::LogDispatch undef + Plack::Middleware::NullLogger undef + Plack::Middleware::RearrangeHeaders undef + Plack::Middleware::Recursive undef + Plack::Middleware::Refresh undef + Plack::Middleware::Runtime undef + Plack::Middleware::SimpleContentFilter undef + Plack::Middleware::SimpleLogger undef + Plack::Middleware::StackTrace undef + Plack::Middleware::Static undef + Plack::Middleware::XFramework undef + Plack::Middleware::XSendfile undef + Plack::Recursive::ForwardRequest undef + Plack::Request 1.0018 + Plack::Request::Upload undef + Plack::Response 1.0018 + Plack::Runner undef + Plack::TempBuffer undef + Plack::Test undef + Plack::Test::MockHTTP undef + Plack::Test::Server undef + Plack::Test::Suite undef + Plack::Util undef + Plack::Util::Accessor undef + Plack::Util::IOWithPath undef + Plack::Util::Prototype undef + requirements: + Devel::StackTrace 1.23 + Devel::StackTrace::AsHTML 0.11 + ExtUtils::MakeMaker 6.59 + File::ShareDir 1.00 + Filesys::Notify::Simple 0 + HTTP::Body 1.06 + HTTP::Message 5.814 + Hash::MultiValue 0.05 + LWP::UserAgent 5.814 + Pod::Usage 1.36 + Stream::Buffered 0.02 + Test::More 0.88 + Test::Requires 0 + Test::TCP 1.02 + Try::Tiny 0 + URI 1.59 + parent 0 + perl 5.008001 + Plack-Middleware-ReverseProxy-0.15 + pathname: M/MI/MIYAGAWA/Plack-Middleware-ReverseProxy-0.15.tar.gz + provides: + Plack::Middleware::ReverseProxy 0.15 + requirements: + ExtUtils::MakeMaker 6.59 + Plack 0.9988 + Plack::Middleware 0 + Plack::Request 0 + Test::More 0 + parent 0 + perl 5.008001 + Plack-Test-ExternalServer-0.01 + pathname: F/FL/FLORA/Plack-Test-ExternalServer-0.01.tar.gz + provides: + Plack::Test::ExternalServer 0.01 + requirements: + ExtUtils::MakeMaker 0 + HTTP::Request::Common 0 + LWP::UserAgent 0 + Plack::Loader 0 + Plack::Test 0 + Test::More 0.89 + Test::TCP 0 + URI 0 + Readonly-1.03 + pathname: R/RO/ROODE/Readonly-1.03.tar.gz + provides: + Readonly 1.03 + Readonly::Array 1.03 + Readonly::Hash 1.03 + Readonly::Scalar 1.03 + requirements: + ExtUtils::MakeMaker 0 + Regexp-Common-2013031301 + pathname: A/AB/ABIGAIL/Regexp-Common-2013031301.tar.gz + provides: + Regexp::Common 2013031301 + Regexp::Common::CC 2010010201 + Regexp::Common::Entry 2013031301 + Regexp::Common::SEN 2010010201 + Regexp::Common::URI 2010010201 + Regexp::Common::URI::RFC1035 2010010201 + Regexp::Common::URI::RFC1738 2010010201 + Regexp::Common::URI::RFC1808 2010010201 + Regexp::Common::URI::RFC2384 2010010201 + Regexp::Common::URI::RFC2396 2010010201 + Regexp::Common::URI::RFC2806 2010010201 + Regexp::Common::URI::fax 2010010201 + Regexp::Common::URI::file 2010010201 + Regexp::Common::URI::ftp 2010010201 + Regexp::Common::URI::gopher 2010010201 + Regexp::Common::URI::http 2010010201 + Regexp::Common::URI::news 2010010201 + Regexp::Common::URI::pop 2010010201 + Regexp::Common::URI::prospero 2010010201 + Regexp::Common::URI::tel 2010010201 + Regexp::Common::URI::telnet 2010010201 + Regexp::Common::URI::tv 2010010201 + Regexp::Common::URI::wais 2010010201 + Regexp::Common::_support 2010010201 + Regexp::Common::balanced 2013030901 + Regexp::Common::comment 2010010201 + Regexp::Common::delimited 2010010201 + Regexp::Common::lingua 2010010201 + Regexp::Common::list 2010010201 + Regexp::Common::net 2013031301 + Regexp::Common::number 2013031101 + Regexp::Common::profanity 2010010201 + Regexp::Common::whitespace 2010010201 + Regexp::Common::zip 2010010201 + requirements: + ExtUtils::MakeMaker 0 + perl 5.00473 + strict 0 + vars 0 + Return-Value-1.666002 + pathname: R/RJ/RJBS/Return-Value-1.666002.tar.gz + provides: + Return::Value 1.666002 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0.47 + Role-Tiny-1.003001 + pathname: H/HA/HAARG/Role-Tiny-1.003001.tar.gz + provides: + Role::Tiny 1.003001 + Role::Tiny::With undef + requirements: + ExtUtils::MakeMaker 0 + Test::Fatal 0.003 + Test::More 0.96 + SOAP-Lite-0.715 + pathname: M/MK/MKUTTER/SOAP-Lite-0.715.tar.gz + provides: + Apache::SOAP 0.715 + Apache::XMLRPC::Lite 0.715 + LWP::Protocol 0.715 + My::Chat undef + My::Examples undef + My::Parameters undef + My::PersistentIterator undef + My::PingPong undef + My::SessionIterator undef + SOAP 0.715 + SOAP::Apache undef + SOAP::Client 0.715 + SOAP::Cloneable 0.715 + SOAP::Constants 0.715 + SOAP::Custom::XML::Data 0.715 + SOAP::Custom::XML::Deserializer 0.715 + SOAP::Data 0.715 + SOAP::Deserializer 0.715 + SOAP::Fault 0.715 + SOAP::Header 0.715 + SOAP::Lite 0.715 + SOAP::Lite::COM 0.715 + SOAP::Lite::Deserializer::XMLSchema1999 undef + SOAP::Lite::Deserializer::XMLSchema2001 undef + SOAP::Lite::Deserializer::XMLSchemaSOAP1_1 undef + SOAP::Lite::Deserializer::XMLSchemaSOAP1_2 undef + SOAP::Lite::Packager undef + SOAP::Lite::Packager::DIME undef + SOAP::Lite::Packager::MIME undef + SOAP::Lite::Utils undef + SOAP::Packager 0.715 + SOAP::Packager::DIME 0.715 + SOAP::Packager::MIME 0.715 + SOAP::Parser 0.715 + SOAP::SOM 0.715 + SOAP::Schema 0.715 + SOAP::Schema::Deserializer 0.715 + SOAP::Schema::WSDL 0.715 + SOAP::Serializer 0.715 + SOAP::Server 0.715 + SOAP::Server::Object 0.715 + SOAP::Server::Parameters 0.715 + SOAP::Test 0.715 + SOAP::Test::Server 0.715 + SOAP::Trace 0.715 + SOAP::Transport 0.715 + SOAP::Transport::HTTP 0.715 + SOAP::Transport::HTTP::Apache 0.715 + SOAP::Transport::HTTP::CGI 0.715 + SOAP::Transport::HTTP::Client 0.715 + SOAP::Transport::HTTP::Daemon 0.715 + SOAP::Transport::HTTP::Daemon::ForkAfterProcessing undef + SOAP::Transport::HTTP::Daemon::ForkOnAccept undef + SOAP::Transport::HTTP::FCGI 0.715 + SOAP::Transport::HTTP::Server 0.715 + SOAP::Transport::IO 0.715 + SOAP::Transport::IO::Server 0.715 + SOAP::Transport::LOCAL 0.715 + SOAP::Transport::LOCAL::Client 0.715 + SOAP::Transport::LOOPBACK undef + SOAP::Transport::LOOPBACK::Client undef + SOAP::Transport::MAILTO 0.715 + SOAP::Transport::MAILTO::Client 0.715 + SOAP::Transport::POP3 0.715 + SOAP::Transport::POP3::Server 0.715 + SOAP::Utils 0.715 + SOAP::XMLSchema1999::Serializer 0.715 + SOAP::XMLSchema2001::Serializer 0.715 + SOAP::XMLSchema::Serializer 0.715 + SOAP::XMLSchemaApacheSOAP::Deserializer 0.715 + UDDI::Constants 0.715 + UDDI::Data 0.715 + UDDI::Deserializer 0.715 + UDDI::Lite 0.715 + UDDI::SOM 0.715 + UDDI::Serializer 0.715 + XML::Parser::Lite 0.715 + XMLRPC 0.715 + XMLRPC::Constants 0.715 + XMLRPC::Data 0.715 + XMLRPC::Deserializer 0.715 + XMLRPC::Lite 0.715 + XMLRPC::SOM 0.715 + XMLRPC::Serializer 0.715 + XMLRPC::Server 0.715 + XMLRPC::Server::Parameters 0.715 + XMLRPC::Test 0.715 + XMLRPC::Test::Server 0.715 + XMLRPC::Transport::HTTP 0.715 + XMLRPC::Transport::HTTP::Apache 0.715 + XMLRPC::Transport::HTTP::CGI 0.715 + XMLRPC::Transport::HTTP::Daemon 0.715 + XMLRPC::Transport::POP3 0.715 + XMLRPC::Transport::POP3::Server 0.715 + XMLRPC::Transport::TCP 0.715 + XMLRPC::Transport::TCP::Server 0.715 + requirements: + Class::Inspector 0 + Compress::Zlib 0 + Crypt::SSLeay 0 + ExtUtils::MakeMaker 0 + FCGI 0 + HTTP::Daemon 0 + IO::File 0 + IO::Socket::SSL 0 + LWP::UserAgent 0 + MIME::Base64 0 + MIME::Parser 0 + Net::POP3 0 + Scalar::Util 0 + Task::Weaken 0 + Test::More 0 + URI 0 + 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: + DBIx::Class::Storage::Debug::PrettyPrint undef + SQL::Abstract 1.73 + SQL::Abstract::Test undef + SQL::Abstract::Tree undef + requirements: + Class::Accessor::Grouped 0.10005 + ExtUtils::MakeMaker 6.59 + Getopt::Long::Descriptive 0.091 + Hash::Merge 0.12 + List::Util 0 + Scalar::Util 0 + Storable 0 + Test::Exception 0 + Test::More 0.92 + Test::Warn 0 + perl 5.006002 + Safe-Isa-1.000002 + pathname: M/MS/MSTROUT/Safe-Isa-1.000002.tar.gz + provides: + Safe::Isa 1.000002 + requirements: + ExtUtils::MakeMaker 0 + Scope-Guard-0.20 + pathname: C/CH/CHOCOLATE/Scope-Guard-0.20.tar.gz + provides: + Scope::Guard 0.20 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0 + perl 5.006001 + Snowball-Norwegian-1.2 + pathname: A/AS/ASKSH/Snowball-Norwegian-1.2.tar.gz + provides: + Lingua::Stem::Snowball::No 1.2 + requirements: + Test::More 0.42 + Snowball-Swedish-1.2 + pathname: A/AS/ASKSH/Snowball-Swedish-1.2.tar.gz + provides: + Lingua::Stem::Snowball::Se 1.2 + requirements: + Test::More 0.42 + Sort-Key-1.32 + pathname: S/SA/SALVA/Sort-Key-1.32.tar.gz + provides: + Sort::Key 1.32 + Sort::Key::Maker 0.02 + Sort::Key::Multi 1.30 + Sort::Key::Natural 0.04 + Sort::Key::Register 1.30 + Sort::Key::Types 1.30 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0.54 + Spiffy-0.31 + pathname: I/IN/INGY/Spiffy-0.31.tar.gz + provides: + Spiffy 0.31 + Spiffy::mixin undef + requirements: + ExtUtils::MakeMaker 6.59 + perl 5.006001 + Starman-0.3006 + pathname: M/MI/MIYAGAWA/Starman-0.3006.tar.gz + provides: + HTTP::Server::PSGI::Net::Server::PreFork undef + Plack::Handler::Starman undef + Starman 0.3006 + Starman::Server undef + requirements: + Data::Dump 0 + ExtUtils::MakeMaker 6.59 + HTTP::Date 0 + HTTP::Parser::XS 0 + HTTP::Status 0 + Net::Server 0.91 + Plack 0.9971 + Test::More 0 + Test::Requires 0 + Test::TCP 1.11 + parent 0 + perl 5.008001 + Statistics-Distributions-1.02 + pathname: M/MI/MIKEK/Statistics-Distributions-1.02.tar.gz + provides: + Statistics::Distributions 1.02 + requirements: + ExtUtils::MakeMaker 0 + Stream-Buffered-0.02 + pathname: D/DO/DOY/Stream-Buffered-0.02.tar.gz + provides: + Stream::Buffered 0.02 + Stream::Buffered::Auto undef + Stream::Buffered::File undef + Stream::Buffered::PerlIO undef + requirements: + ExtUtils::MakeMaker 6.36 + String-CRC32-1.4 + pathname: S/SO/SOENKE/String-CRC32-1.4.tar.gz + provides: + String::CRC32 1.4 + requirements: + ExtUtils::MakeMaker 0 + String-CamelCase-0.02 + pathname: H/HI/HIO/String-CamelCase-0.02.tar.gz + provides: + String::CamelCase 0.02 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0 + String-RewritePrefix-0.006 + pathname: R/RJ/RJBS/String-RewritePrefix-0.006.tar.gz + provides: + String::RewritePrefix 0.006 + requirements: + Carp 0 + ExtUtils::MakeMaker 6.31 + Sub::Exporter 0.972 + Test::More 0.96 + String-ToIdentifier-EN-0.09 + pathname: R/RK/RKITOVER/String-ToIdentifier-EN-0.09.tar.gz + provides: + String::ToIdentifier::EN 0.09 + String::ToIdentifier::EN::Unicode undef + requirements: + Exporter 5.57 + ExtUtils::MakeMaker 6.59 + Lingua::EN::Inflect::Phrase 0.16 + Test::More 0.92 + Text::Unidecode 0.04 + namespace::clean 0.20 + perl 5.008001 + Sub-Exporter-0.985 + pathname: R/RJ/RJBS/Sub-Exporter-0.985.tar.gz + provides: + Sub::Exporter 0.985 + Sub::Exporter::Util 0.985 + Test::SubExporter::DashSetup undef + Test::SubExporter::Faux undef + Test::SubExporter::GroupGen undef + Test::SubExporter::GroupGenSubclass undef + Test::SubExporter::ObjGen undef + Test::SubExporter::ObjGen::Obj undef + Test::SubExporter::s_e undef + requirements: + Carp 0 + Data::OptList 0.100 + Exporter 0 + ExtUtils::MakeMaker 6.30 + File::Find 0 + File::Temp 0 + Params::Util 0.14 + Sub::Install 0.92 + Test::More 0.96 + base 0 + overload 0 + strict 0 + subs 0 + warnings 0 + Sub-Exporter-Progressive-0.001010 + pathname: F/FR/FREW/Sub-Exporter-Progressive-0.001010.tar.gz + provides: + Sub::Exporter::Progressive 0.001010 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0.88 + Sub-Identify-0.04 + pathname: R/RG/RGARCIA/Sub-Identify-0.04.tar.gz + provides: + Sub::Identify 0.04 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0 + Sub-Install-0.926 + pathname: R/RJ/RJBS/Sub-Install-0.926.tar.gz + provides: + Sub::Install 0.926 + requirements: + ExtUtils::MakeMaker 0 + Scalar::Util 0 + Test::More 0 + Sub-Name-0.05 + pathname: F/FL/FLORA/Sub-Name-0.05.tar.gz + provides: + Sub::Name 0.05 + requirements: + ExtUtils::MakeMaker 0 + Sub-Override-0.09 + pathname: O/OV/OVID/Sub-Override-0.09.tar.gz + provides: + Sub::Override 0.09 + requirements: + ExtUtils::MakeMaker 0 + Test::Fatal 0.010 + Test::More 0.47 + Sub-Uplevel-0.24 + pathname: D/DA/DAGOLDEN/Sub-Uplevel-0.24.tar.gz + provides: + Sub::Uplevel 0.24 + requirements: + Carp 0 + Exporter 0 + ExtUtils::MakeMaker 6.30 + File::Find 0 + File::Temp 0 + Test::More 0 + constant 0 + strict 0 + warnings 0 + Task-Weaken-1.04 + pathname: A/AD/ADAMK/Task-Weaken-1.04.tar.gz + provides: + Task::Weaken 1.04 + requirements: + ExtUtils::MakeMaker 6.42 + File::Spec 0.80 + Scalar::Util 1.14 + Test::More 0.42 + perl 5.005 + Template-Plugin-Comma-0.04 + pathname: M/MI/MIYAGAWA/Template-Plugin-Comma-0.04.tar.gz + provides: + Template::Plugin::Comma 0.04 + requirements: + ExtUtils::MakeMaker 0 + Template 2.07 + Test::More 0.32 + Template-Timer-1.00 + pathname: P/PE/PETDANCE/Template-Timer-1.00.tar.gz + provides: + Template::Timer 1.00 + requirements: + ExtUtils::MakeMaker 0 + Template 0 + Test::More 0 + Time::HiRes 0 + Template-Toolkit-2.24 + pathname: A/AB/ABW/Template-Toolkit-2.24.tar.gz + provides: + Template 2.24 + Template::Base 2.78 + Template::Config 2.75 + Template::Constants 2.75 + Template::Context 2.98 + Template::Directive 2.2 + Template::Document 2.79 + Template::Exception 2.7 + Template::Filters 2.87 + Template::Grammar 2.25 + Template::Iterator 2.68 + Template::Monad::Assert 1 + Template::Monad::Scalar 1 + Template::Namespace::Constants 1.27 + Template::Parser 2.89 + Template::Perl 2.2 + Template::Plugin 2.7 + Template::Plugin::Assert 1 + Template::Plugin::CGI 2.7 + Template::Plugin::Datafile 2.72 + Template::Plugin::Date 2.78 + Template::Plugin::Date::Calc 2.78 + Template::Plugin::Date::Manip 2.78 + Template::Plugin::Directory 2.7 + Template::Plugin::Dumper 2.7 + Template::Plugin::File 2.71 + Template::Plugin::Filter 1.38 + Template::Plugin::Format 2.7 + Template::Plugin::HTML 2.62 + Template::Plugin::Image 1.21 + Template::Plugin::Iterator 2.68 + Template::Plugin::Math 1.16 + Template::Plugin::Pod 2.69 + Template::Plugin::Procedural 1.17 + Template::Plugin::Scalar 1 + Template::Plugin::String 2.4 + Template::Plugin::Table 2.71 + Template::Plugin::URL 2.74 + Template::Plugin::View 2.68 + Template::Plugin::Wrap 2.68 + Template::Plugins 2.77 + Template::Provider 2.94 + Template::Service 2.8 + Template::Stash 2.91 + Template::Stash::Context 1.63 + Template::Stash::XS undef + Template::Test 2.75 + Template::TieString 2.75 + Template::VMethods 2.16 + Template::View 2.91 + bytes 2.94 + requirements: + AppConfig 1.56 + ExtUtils::MakeMaker 0 + 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: + Module::Install::TestBase 0.60 + Test::Base 0.60 + Test::Base::Block 0.60 + Test::Base::Filter undef + Test::Base::Handle 0.60 + requirements: + ExtUtils::MakeMaker 6.42 + Filter::Util::Call 0 + Spiffy 0.30 + Test::More 0.62 + perl 5.006001 + Test-CheckDeps-0.002 + pathname: L/LE/LEONT/Test-CheckDeps-0.002.tar.gz + provides: + Test::CheckDeps 0.002 + requirements: + CPAN::Meta 0 + CPAN::Meta::Check 0 + Exporter 5.57 + ExtUtils::MakeMaker 6.30 + File::Find 0 + File::Temp 0 + List::Util 0 + Module::Metadata 0 + Test::Builder 0 + Test::More 0.88 + strict 0 + warnings 0 + Test-Deep-0.110 + pathname: R/RJ/RJBS/Test-Deep-0.110.tar.gz + provides: + Test::Deep 0.110 + Test::Deep::All undef + Test::Deep::Any undef + Test::Deep::Array undef + Test::Deep::ArrayEach undef + Test::Deep::ArrayElementsOnly undef + Test::Deep::ArrayLength undef + Test::Deep::ArrayLengthOnly undef + Test::Deep::Blessed undef + Test::Deep::Boolean undef + Test::Deep::Cache undef + Test::Deep::Cache::Simple undef + Test::Deep::Class undef + Test::Deep::Cmp undef + Test::Deep::Code undef + Test::Deep::Hash undef + Test::Deep::HashEach undef + Test::Deep::HashElements undef + Test::Deep::HashKeys undef + Test::Deep::HashKeysOnly undef + Test::Deep::Ignore undef + Test::Deep::Isa undef + Test::Deep::ListMethods undef + Test::Deep::MM undef + Test::Deep::Methods undef + Test::Deep::NoTest undef + Test::Deep::Number undef + Test::Deep::Ref undef + Test::Deep::RefType undef + Test::Deep::Regexp undef + Test::Deep::RegexpMatches undef + Test::Deep::RegexpRef undef + Test::Deep::RegexpRefOnly undef + Test::Deep::RegexpVersion undef + Test::Deep::ScalarRef undef + Test::Deep::ScalarRefOnly undef + Test::Deep::Set undef + Test::Deep::Shallow undef + Test::Deep::Stack undef + Test::Deep::String undef + Test::Deep::SubHash undef + Test::Deep::SubHashElements undef + Test::Deep::SubHashKeys undef + Test::Deep::SubHashKeysOnly undef + Test::Deep::SuperHash undef + Test::Deep::SuperHashElements undef + 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: + Test::Differences 0.61 + requirements: + Data::Dumper 2.126 + Module::Build 0.36 + Test::More 0 + Text::Diff 0.35 + Test-Exception-0.31 + pathname: A/AD/ADIE/Test-Exception-0.31.tar.gz + provides: + Test::Exception 0.31 + requirements: + Module::Build 0.36 + Sub::Uplevel 0.18 + Test::Builder 0.7 + Test::Builder::Tester 1.07 + Test::Harness 2.03 + Test::More 0.7 + Test::Simple 0.7 + 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: + Test::LongString 0.15 + requirements: + ExtUtils::MakeMaker 0 + Test::Builder 0.12 + Test::Builder::Tester 1.04 + Test-Manifest-1.23 + pathname: B/BD/BDFOY/Test-Manifest-1.23.tar.gz + provides: + Test::Manifest 1.23 + requirements: + ExtUtils::MakeMaker 6.03 + Test::More 0 + Test-MockTime-0.12 + pathname: D/DD/DDICK/Test-MockTime-0.12.tar.gz + provides: + Test::MockTime 0.12 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0 + Time::Local 0 + Time::Piece 1.08 + Test-NoWarnings-1.04 + pathname: A/AD/ADAMK/Test-NoWarnings-1.04.tar.gz + provides: + Test::NoWarnings 1.04 + Test::NoWarnings::Warning 1.04 + requirements: + ExtUtils::MakeMaker 0 + Test::Builder 0.86 + Test::More 0.47 + Test::Tester 0.107 + perl 5.006 + Test-Output-1.01 + pathname: B/BD/BDFOY/Test-Output-1.01.tar.gz + provides: + Test::Output 1.01 + Test::Output::Tie 1.01 + requirements: + ExtUtils::MakeMaker 0 + File::Temp 0.17 + Sub::Exporter 0 + Test::More 0 + Test::Tester 0.107 + perl 5.006 + Test-Requires-0.06 + pathname: T/TO/TOKUHIROM/Test-Requires-0.06.tar.gz + provides: + Test::Requires 0.06 + requirements: + ExtUtils::MakeMaker 6.42 + Test::More 0.61 + perl 5.006 + Test-SharedFork-0.21 + pathname: T/TO/TOKUHIROM/Test-SharedFork-0.21.tar.gz + provides: + Test::SharedFork 0.21 + Test::SharedFork::Array undef + Test::SharedFork::Scalar undef + Test::SharedFork::Store undef + requirements: + App::Prove 0 + ExtUtils::MakeMaker 6.59 + Test::More 0.88 + Test::Requires 0 + Time::HiRes 0 + perl 5.008 + Test-Simple-0.98 + pathname: M/MS/MSCHWERN/Test-Simple-0.98.tar.gz + provides: + Test::Builder 0.98 + Test::Builder::IO::Scalar 2.110 + Test::Builder::Module 0.98 + Test::Builder::Tester 1.22 + Test::Builder::Tester::Color 1.22 + 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: + Net::EmptyPort undef + Test::TCP 1.21 + Test::TCP::CheckPort undef + requirements: + ExtUtils::MakeMaker 6.59 + IO::Socket::INET 0 + Test::More 0.98 + Test::SharedFork 0.19 + perl 5.00800 + Test-Tester-0.109 + pathname: F/FD/FDALY/Test-Tester-0.109.tar.gz + provides: + Test::Tester 0.109 + Test::Tester::Capture undef + 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: + Test::Trap 0.002002 + Test::Trap::Builder 0.002002 + Test::Trap::Builder::PerlIO 0.002002 + Test::Trap::Builder::SystemSafe 0.002002 + Test::Trap::Builder::TempFile 0.002002 + requirements: + Carp 0 + Data::Dump 0 + Exporter 0 + File::Temp 0 + IO::Handle 0 + Module::Build 0.36 + Test::Builder 0 + Test::More 0 + Test::Tester 0.107 + base 0 + constant 0 + lib 0 + perl v5.6.2 + strict 0 + version 0 + warnings 0 + Test-WWW-Mechanize-1.44 + pathname: P/PE/PETDANCE/Test-WWW-Mechanize-1.44.tar.gz + provides: + Test::WWW::Mechanize 1.44 + requirements: + Carp::Assert::More 0 + ExtUtils::MakeMaker 0 + HTML::TreeBuilder 0 + HTTP::Server::Simple 0.42 + HTTP::Server::Simple::CGI 0 + LWP 6.02 + Test::Builder::Tester 1.09 + Test::LongString 0.15 + Test::More 0.96 + URI::file 0 + WWW::Mechanize 1.68 + perl 5.008 + Test-WWW-Mechanize-Catalyst-0.58 + pathname: B/BO/BOBTFISH/Test-WWW-Mechanize-Catalyst-0.58.tar.gz + provides: + Test::WWW::Mechanize::Catalyst 0.58 + requirements: + Catalyst 5.90 + Catalyst::Plugin::Session::State::Cookie 0 + Catalyst::Plugin::Session::Store::Dummy 0 + ExtUtils::MakeMaker 6.59 + LWP 5.816 + Moose 0.67 + Test::Exception 0 + Test::More 0.88 + Test::WWW::Mechanize 1.14 + Test::utf8 0 + WWW::Mechanize 1.54 + namespace::clean 0.09 + perl 5.008004 + Test-WWW-Mechanize-PSGI-0.35 + pathname: L/LB/LBROCARD/Test-WWW-Mechanize-PSGI-0.35.tar.gz + provides: + Test::WWW::Mechanize::PSGI 0.35 + requirements: + ExtUtils::MakeMaker 0 + HTTP::Message::PSGI 0 + Test::More 0 + Test::WWW::Mechanize 0 + Try::Tiny 0 + Test-Warn-0.24 + pathname: C/CH/CHORNY/Test-Warn-0.24.tar.gz + provides: + Test::Warn 0.24 + Test::Warn::Categorization 0.24 + Test::Warn::DAG_Node_Tree 0.24 + requirements: + Carp 1.22 + ExtUtils::MakeMaker 0 + File::Spec 0 + Sub::Uplevel 0.12 + Test::Builder 0.13 + Test::Builder::Tester 1.02 + Test::More 0 + Tree::DAG_Node 1.02 + perl 5.006 + Test-use-ok-0.11 + pathname: A/AU/AUDREYT/Test-use-ok-0.11.tar.gz + provides: + Test::use::ok 0.11 + ok 0.11 + requirements: + ExtUtils::MakeMaker 6.36 + perl 5.005 + Test-utf8-1.00 + pathname: M/MA/MARKF/Test-utf8-1.00.tar.gz + provides: + Test::utf8 1.00 + requirements: + ExtUtils::MakeMaker 6.42 + 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: + Text::Diff 1.41 + Text::Diff::Base 1.41 + Text::Diff::Config 1.41 + Text::Diff::Table 1.41 + requirements: + Algorithm::Diff 1.19 + Exporter 0 + ExtUtils::MakeMaker 0 + Text-German-0.06 + pathname: U/UL/ULPFR/Text-German-0.06.tar.gz + provides: + Text::German 0.06 + Text::German::Adjektiv undef + Text::German::Ausnahme undef + Text::German::Cache undef + Text::German::Endung undef + Text::German::Regel undef + Text::German::Util undef + Text::German::Verb undef + Text::German::Vorsilbe undef + requirements: + ExtUtils::MakeMaker 0 + Text-Glob-0.09 + pathname: R/RC/RCLAMP/Text-Glob-0.09.tar.gz + provides: + Text::Glob 0.09 + requirements: + Module::Build 0.36 + Test::More 0 + Text-SimpleTable-2.03 + pathname: M/MR/MRAMBERG/Text-SimpleTable-2.03.tar.gz + provides: + Text::SimpleTable 2.03 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0 + Text-Unidecode-0.04 + pathname: S/SB/SBURKE/Text-Unidecode-0.04.tar.gz + provides: + Text::Unidecode 0.04 + requirements: + ExtUtils::MakeMaker 0 + Tie-IxHash-1.23 + pathname: C/CH/CHORNY/Tie-IxHash-1.23.tar.gz + provides: + Tie::IxHash 1.23 + requirements: + Test::More 0 + perl 5.005 + Tie-ToObject-0.03 + pathname: N/NU/NUFFIN/Tie-ToObject-0.03.tar.gz + provides: + Tie::ToObject 0.03 + requirements: + ExtUtils::MakeMaker 0 + Scalar::Util 0 + Test::More 0 + Test::use::ok 0 + Tie::RefHash 0 + TimeDate-2.30 + pathname: G/GB/GBARR/TimeDate-2.30.tar.gz + provides: + Date::Format 2.24 + Date::Format::Generic 2.24 + Date::Language 1.10 + Date::Language::Afar 0.99 + Date::Language::Amharic 1.00 + Date::Language::Austrian 1.01 + Date::Language::Brazilian 1.01 + Date::Language::Bulgarian 1.01 + Date::Language::Chinese 1.00 + Date::Language::Chinese_GB 1.01 + Date::Language::Czech 1.01 + Date::Language::Danish 1.01 + Date::Language::Dutch 1.02 + Date::Language::English 1.01 + Date::Language::Finnish 1.01 + Date::Language::French 1.04 + Date::Language::Gedeo 0.99 + Date::Language::German 1.02 + Date::Language::Greek 1.00 + Date::Language::Hungarian 1.01 + Date::Language::Icelandic 1.01 + Date::Language::Italian 1.01 + Date::Language::Norwegian 1.01 + Date::Language::Oromo 0.99 + Date::Language::Romanian 1.01 + Date::Language::Russian 1.01 + Date::Language::Russian_cp1251 1.01 + Date::Language::Russian_koi8r 1.01 + Date::Language::Sidama 0.99 + Date::Language::Somali 0.99 + Date::Language::Spanish 1.00 + Date::Language::Swedish 1.01 + Date::Language::Tigrinya 1.00 + Date::Language::TigrinyaEritrean 1.00 + Date::Language::TigrinyaEthiopian 1.00 + Date::Language::Turkish 1.0 + Date::Parse 2.30 + Time::Zone 2.24 + requirements: + ExtUtils::MakeMaker 0 + Tree-DAG_Node-1.11 + pathname: R/RS/RSAVAGE/Tree-DAG_Node-1.11.tgz + provides: + Tree::DAG_Node 1.11 + requirements: + Module::Build 0.38 + Test::More 0.98 + strict 0 + warnings 0 + Tree-Simple-1.18 + pathname: S/ST/STEVAN/Tree-Simple-1.18.tar.gz + provides: + Tree::Simple 1.18 + Tree::Simple::Visitor 1.11 + requirements: + Scalar::Util 1.18 + Test::Exception 0.15 + Test::More 0.47 + perl v5.6.0 + Tree-Simple-VisitorFactory-0.10 + pathname: S/ST/STEVAN/Tree-Simple-VisitorFactory-0.10.tar.gz + provides: + Tree::Simple::Visitor::BreadthFirstTraversal 0.02 + Tree::Simple::Visitor::CreateDirectoryTree 0.02 + Tree::Simple::Visitor::FindByNodeValue 0.02 + Tree::Simple::Visitor::FindByPath 0.03 + Tree::Simple::Visitor::FindByUID 0.02 + Tree::Simple::Visitor::FromNestedArray 0.02 + Tree::Simple::Visitor::FromNestedHash 0.03 + Tree::Simple::Visitor::GetAllDescendents 0.02 + Tree::Simple::Visitor::LoadClassHierarchy 0.02 + Tree::Simple::Visitor::LoadDirectoryTree 0.02 + Tree::Simple::Visitor::PathToRoot 0.02 + Tree::Simple::Visitor::PostOrderTraversal 0.02 + Tree::Simple::Visitor::PreOrderTraversal 0.01 + Tree::Simple::Visitor::Sort 0.03 + Tree::Simple::Visitor::ToNestedArray 0.02 + Tree::Simple::Visitor::ToNestedHash 0.02 + Tree::Simple::Visitor::VariableDepthClone 0.03 + Tree::Simple::VisitorFactory 0.10 + requirements: + ExtUtils::MakeMaker 0 + File::Spec 0.6 + Scalar::Util 1.1 + Test::Exception 0.15 + Test::More 0.47 + Tree::Simple 1.12 + Try-Tiny-0.16 + pathname: D/DO/DOY/Try-Tiny-0.16.tar.gz + 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: + UNIVERSAL 0.13 + UNIVERSAL::require 0.13 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0.47 + URI-1.60 + pathname: G/GA/GAAS/URI-1.60.tar.gz + provides: + URI 1.60 + URI::Escape 3.31 + URI::Heuristic 4.20 + URI::IRI undef + URI::QueryParam undef + URI::Split undef + URI::URL 5.04 + URI::WithBase 2.20 + URI::_foreign undef + URI::_generic undef + URI::_idna undef + URI::_ldap 1.12 + URI::_login undef + URI::_punycode 0.04 + URI::_query undef + URI::_segment undef + URI::_server undef + URI::_userpass undef + URI::data undef + URI::file 4.21 + URI::file::Base undef + URI::file::FAT undef + URI::file::Mac undef + URI::file::OS2 undef + URI::file::QNX undef + URI::file::Unix undef + URI::file::Win32 undef + URI::ftp undef + URI::gopher undef + URI::http undef + URI::https undef + URI::ldap 1.12 + URI::ldapi undef + URI::ldaps undef + URI::mailto undef + URI::mms undef + URI::news undef + URI::nntp undef + URI::pop undef + URI::rlogin undef + URI::rsync undef + URI::rtsp undef + URI::rtspu undef + URI::sip 0.11 + URI::sips undef + URI::snews undef + URI::ssh undef + URI::telnet undef + URI::tn3270 undef + URI::urn undef + URI::urn::isbn undef + URI::urn::oid undef + requirements: + ExtUtils::MakeMaker 0 + MIME::Base64 2 + Test 0 + Test::More 0 + perl 5.008001 + URI-SmartURI-0.032 + pathname: R/RK/RKITOVER/URI-SmartURI-0.032.tar.gz + provides: + URI::SmartURI 0.032 + requirements: + Class::C3::Componentised 0 + ExtUtils::MakeMaker 6.59 + File::Find::Rule 0 + List::MoreUtils 0 + List::Util 0 + Moose 0 + Scalar::Util 0 + Test::Fatal 0 + Test::More 0.94 + Test::NoWarnings 0 + URI 1.51 + namespace::clean 0 + perl 5.008001 + Variable-Magic-0.52 + pathname: V/VP/VPIT/Variable-Magic-0.52.tar.gz + provides: + Variable::Magic 0.52 + requirements: + Carp 0 + Config 0 + Exporter 0 + ExtUtils::MakeMaker 0 + Test::More 0 + XSLoader 0 + base 0 + perl 5.008 + WWW-Mechanize-1.72 + pathname: J/JE/JESSE/WWW-Mechanize-1.72.tar.gz + provides: + WWW::Mechanize 1.72 + WWW::Mechanize::Image undef + WWW::Mechanize::Link undef + requirements: + Carp 0 + ExtUtils::MakeMaker 0 + File::Temp 0 + FindBin 0 + Getopt::Long 0 + HTML::Form 6 + HTML::HeadParser 0 + HTML::Parser 3.33 + HTML::TokeParser 2.28 + HTML::TreeBuilder 0 + HTTP::Daemon 0 + HTTP::Request 1.3 + HTTP::Server::Simple 0.35 + HTTP::Server::Simple::CGI 0 + HTTP::Status 0 + LWP 5.829 + LWP::UserAgent 5.829 + Pod::Usage 0 + Test::More 0.34 + Test::Warn 0.11 + URI 1.36 + URI::URL 0 + URI::file 0 + perl 5.008 + WWW-RobotRules-6.02 + pathname: G/GA/GAAS/WWW-RobotRules-6.02.tar.gz + provides: + WWW::RobotRules 6.02 + WWW::RobotRules::AnyDBM_File 6.00 + WWW::RobotRules::InCore 6.02 + requirements: + AnyDBM_File 0 + ExtUtils::MakeMaker 0 + Fcntl 0 + URI 1.10 + perl 5.008001 + Web-Scraper-0.37 + pathname: M/MI/MIYAGAWA/Web-Scraper-0.37.tar.gz + provides: + Web::Scraper 0.37 + Web::Scraper::Filter undef + Web::Scraper::LibXML undef + requirements: + ExtUtils::MakeMaker 6.59 + HTML::Entities 0 + HTML::Selector::XPath 0.03 + HTML::Tagset 0 + HTML::TreeBuilder 3.23 + HTML::TreeBuilder::XPath 0.08 + LWP 5.827 + Scalar::Util 0 + Test::Base 0 + Test::More 0 + Test::Requires 0 + UNIVERSAL::require 0 + URI 0 + XML::XPathEngine 0.08 + YAML 0 + perl 5.008001 + XML-NamespaceSupport-1.11 + pathname: P/PE/PERIGRIN/XML-NamespaceSupport-1.11.tar.gz + provides: + XML::NamespaceSupport 1.11 + requirements: + ExtUtils::MakeMaker 6.42 + Test::More 0.47 + XML-Parser-2.41 + pathname: T/TO/TODDR/XML-Parser-2.41.tar.gz + provides: + XML::Parser 2.41 + XML::Parser::Expat 2.41 + XML::Parser::Style::Debug undef + XML::Parser::Style::Objects undef + XML::Parser::Style::Stream undef + XML::Parser::Style::Subs undef + XML::Parser::Style::Tree undef + requirements: + ExtUtils::MakeMaker 0 + LWP 0 + perl 5.00405 + XML-RSS-1.49 + pathname: S/SH/SHLOMIF/XML-RSS-1.49.tar.gz + provides: + XML::RSS 1.49 + XML::RSS::Private::Output::Base undef + XML::RSS::Private::Output::Roles::ImageDims undef + XML::RSS::Private::Output::Roles::ModulesElems undef + XML::RSS::Private::Output::V0_9 undef + XML::RSS::Private::Output::V0_91 undef + XML::RSS::Private::Output::V1_0 undef + XML::RSS::Private::Output::V2_0 undef + requirements: + DateTime 0 + DateTime::Format::Mail 0 + DateTime::Format::W3CDTF 0 + HTML::Entities 0 + Module::Build 0.36 + Test::Manifest 0.9 + Test::More 0 + XML::Parser 2.23 + perl 5.008 + XML-SAX-0.99 + pathname: G/GR/GRANTM/XML-SAX-0.99.tar.gz + provides: + XML::SAX 0.99 + XML::SAX::DocumentLocator undef + XML::SAX::ParserFactory 1.01 + XML::SAX::PurePerl 0.99 + XML::SAX::PurePerl::DebugHandler undef + XML::SAX::PurePerl::Exception undef + XML::SAX::PurePerl::Productions undef + XML::SAX::PurePerl::Reader undef + XML::SAX::PurePerl::Reader::Stream undef + XML::SAX::PurePerl::Reader::String undef + XML::SAX::PurePerl::Reader::URI undef + requirements: + ExtUtils::MakeMaker 0 + File::Temp 0 + XML::NamespaceSupport 0.03 + XML::SAX::Base 1.05 + XML-SAX-Base-1.08 + pathname: G/GR/GRANTM/XML-SAX-Base-1.08.tar.gz + provides: + XML::SAX::Base 1.08 + XML::SAX::Base::NoHandler 1.08 + XML::SAX::Exception 1.08 + requirements: + ExtUtils::MakeMaker 6.31 + Test::More 0.88 + XML-SAX-Expat-0.40 + pathname: B/BJ/BJOERN/XML-SAX-Expat-0.40.tar.gz + provides: + XML::SAX::Expat 0.40 + requirements: + ExtUtils::MakeMaker 0 + XML::NamespaceSupport 0.03 + XML::Parser 2.27 + XML::SAX 0.03 + XML::SAX::Base 1.00 + XML-Simple-2.20 + pathname: G/GR/GRANTM/XML-Simple-2.20.tar.gz + provides: + TagsToUpper undef + XML::Simple 2.20 + requirements: + ExtUtils::MakeMaker 6.31 + Test::More 0.88 + XML::NamespaceSupport 1.04 + XML::SAX 0.15 + XML::SAX::Expat 0 + XML-XPathEngine-0.13 + pathname: M/MI/MIROD/XML-XPathEngine-0.13.tar.gz + provides: + XML::XPathEngine 0.13 + XML::XPathEngine::Boolean undef + XML::XPathEngine::Expr undef + XML::XPathEngine::Function undef + XML::XPathEngine::Literal undef + XML::XPathEngine::LocationPath undef + XML::XPathEngine::NodeSet undef + XML::XPathEngine::Number undef + XML::XPathEngine::Root undef + XML::XPathEngine::Step undef + XML::XPathEngine::Variable undef + requirements: + ExtUtils::MakeMaker 0 + Test::More 0 + YAML-0.84 + pathname: M/MS/MSTROUT/YAML-0.84.tar.gz + provides: + Test::YAML 0.84 + Test::YAML::Filter 0.84 + YAML 0.84 + YAML::Any 0.84 + YAML::Dumper 0.84 + YAML::Dumper::Base 0.84 + YAML::Error 0.84 + YAML::Loader 0.84 + YAML::Loader::Base 0.84 + YAML::Marshall 0.84 + YAML::Mo 0.84 + YAML::Node 0.84 + YAML::Tag 0.84 + YAML::Type::blessed 0.84 + YAML::Type::code 0.84 + YAML::Type::glob 0.84 + YAML::Type::ref 0.84 + YAML::Type::regexp 0.84 + YAML::Type::undef 0.84 + YAML::Types 0.84 + YAML::Warning 0.84 + yaml_mapping 0.84 + yaml_scalar 0.84 + yaml_sequence 0.84 + requirements: + ExtUtils::MakeMaker 6.59 + perl 5.008001 + YAML-Tiny-1.51 + pathname: A/AD/ADAMK/YAML-Tiny-1.51.tar.gz + provides: + YAML::Tiny 1.51 + requirements: + ExtUtils::MakeMaker 0 + File::Spec 0.80 + Test::More 0.47 + perl 5.004 + aliased-0.31 + pathname: O/OV/OVID/aliased-0.31.tar.gz + provides: + aliased 0.31 + requirements: + Module::Build 0.40 + Test::More 0 + 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 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: + common::sense 3.6 + requirements: + ExtUtils::MakeMaker 0 + libwww-perl-6.05 + pathname: G/GA/GAAS/libwww-perl-6.05.tar.gz + provides: + LWP 6.05 + LWP::Authen::Basic undef + LWP::Authen::Digest undef + LWP::Authen::Ntlm 6.00 + LWP::ConnCache 6.02 + LWP::Debug undef + LWP::DebugFile undef + LWP::MemberMixin undef + LWP::Protocol 6.00 + LWP::Protocol::GHTTP undef + LWP::Protocol::MyFTP undef + LWP::Protocol::cpan undef + LWP::Protocol::data undef + LWP::Protocol::file undef + LWP::Protocol::ftp undef + LWP::Protocol::gopher undef + LWP::Protocol::http undef + LWP::Protocol::http::Socket undef + LWP::Protocol::http::SocketMethods undef + LWP::Protocol::loopback undef + LWP::Protocol::mailto undef + LWP::Protocol::nntp undef + LWP::Protocol::nogo undef + LWP::RobotUA 6.03 + LWP::Simple 6.00 + LWP::UserAgent 6.05 + requirements: + Digest::MD5 0 + Encode 2.12 + Encode::Locale 0 + ExtUtils::MakeMaker 0 + File::Listing 6 + HTML::Entities 0 + HTML::HeadParser 0 + HTTP::Cookies 6 + HTTP::Daemon 6 + HTTP::Date 6 + HTTP::Negotiate 6 + HTTP::Request 6 + HTTP::Request::Common 6 + HTTP::Response 6 + HTTP::Status 6 + IO::Select 0 + IO::Socket 0 + LWP::MediaTypes 6 + MIME::Base64 2.1 + Net::FTP 2.58 + Net::HTTP 6.04 + URI 1.10 + URI::Escape 0 + WWW::RobotRules 6 + perl 5.008001 + local-lib-1.008011 + pathname: E/ET/ETHER/local-lib-1.008011.tar.gz + provides: + lib::core::only undef + local::lib 1.008011 + requirements: + ExtUtils::Install 1.43 + ExtUtils::MakeMaker 6.59 + Module::Build 0.36 + perl 5.008001 + namespace-autoclean-0.13 + pathname: B/BO/BOBTFISH/namespace-autoclean-0.13.tar.gz + provides: + namespace::autoclean 0.13 + requirements: + B::Hooks::EndOfScope 0 + Class::MOP 0.80 + ExtUtils::MakeMaker 6.30 + List::Util 0 + Moose::Role 0 + Sub::Name 0 + Test::More 0 + namespace::clean 0.20 + strict 0 + warnings 0 + namespace-clean-0.24 + pathname: R/RI/RIBASUSHI/namespace-clean-0.24.tar.gz + provides: + namespace::clean 0.24 + requirements: + B::Hooks::EndOfScope 0.12 + ExtUtils::CBuilder 0.27 + Package::Stash 0.23 + Sub::Identify 0.04 + Sub::Name 0.04 + Test::More 0.88 + strictures-1.004004 + pathname: E/ET/ETHER/strictures-1.004004.tar.gz + provides: + strictures 1.004004 + requirements: + ExtUtils::MakeMaker 0 + 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/data/zurich/openlayers.zurich.cfg b/data/zurich/openlayers.zurich.cfg new file mode 100644 index 000000000..7046384f2 --- /dev/null +++ b/data/zurich/openlayers.zurich.cfg @@ -0,0 +1,42 @@ +# 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/SphericalMercator.js # For 4326 +OpenLayers/Layer/Vector.js +OpenLayers/Layer/XYZ.js +OpenLayers/Popup/FramedCloud.js + +# Zurich things +OpenLayers/Format/WMTSCapabilities/v1_0_0.js +OpenLayers/Format/WMTSCapabilities.js +OpenLayers/Layer/WMTS.js + +[exclude] + diff --git a/db/alert_types.sql b/db/alert_types.sql index 4116d29dc..4022ddaf7 100644 --- a/db/alert_types.sql +++ b/db/alert_types.sql @@ -17,7 +17,13 @@ insert into alert_type item_title, item_link, item_description, template) values ('new_problems', '', '', 'New problems on FixMyStreet', '/', 'The latest problems reported by users', - 'problem', 'problem.non_public = ''f'' and problem.state in (''confirmed'', ''investigating'', ''planned'', ''in progress'', ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'')', 'created desc', + 'problem', + 'problem.non_public = ''f'' and problem.state in + (''confirmed'', ''investigating'', ''planned'', ''in progress'', + ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'' + ''action scheduled'', ''not responsible'', ''duplicate'', ''unable to fix'', + ''internal referral'' )', + 'created desc', '{{title}}, {{confirmed}}', '/report/{{id}}', '{{detail}}', 'alert-problem'); -- New fixed problems anywhere on the site @@ -39,7 +45,13 @@ insert into alert_type item_title, item_link, item_description, template) values ('local_problems', '', '', 'New local problems on FixMyStreet', '/', 'The latest local problems reported by users', - 'problem_find_nearby(?, ?, ?) as nearby,problem', 'nearby.problem_id = problem.id and problem.non_public = ''f'' and problem.state in (''confirmed'', ''investigating'', ''planned'', ''in progress'', ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'')', 'created desc', + 'problem_find_nearby(?, ?, ?) as nearby,problem', + 'nearby.problem_id = problem.id and problem.non_public = ''f'' and problem.state in + (''confirmed'', ''investigating'', ''planned'', ''in progress'', + ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'', + ''action scheduled'', ''not responsible'', ''duplicate'', ''unable to fix'', + ''internal referral'')', + 'created desc', '{{title}}, {{confirmed}}', '/report/{{id}}', '{{detail}}', 'alert-problem-nearby'); -- New problems around a location @@ -61,7 +73,13 @@ insert into alert_type item_title, item_link, item_description, template) values ('postcode_local_problems', '', '', 'New problems near {{POSTCODE}} on FixMyStreet', '/', 'The latest local problems reported by users', - 'problem_find_nearby(?, ?, ?) as nearby,problem', 'nearby.problem_id = problem.id and problem.non_public = ''f'' and problem.state in (''confirmed'', ''investigating'', ''planned'', ''in progress'', ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'')', 'created desc', + 'problem_find_nearby(?, ?, ?) as nearby,problem', + 'nearby.problem_id = problem.id and problem.non_public = ''f'' and problem.state in + (''confirmed'', ''investigating'', ''planned'', ''in progress'', + ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'', + ''action scheduled'', ''not responsible'', ''duplicate'', ''unable to fix'', + ''internal referral'')', + 'created desc', '{{title}}, {{confirmed}}', '/report/{{id}}', '{{detail}}', 'alert-problem-nearby'); -- New problems around a postcode with a particular state @@ -83,8 +101,15 @@ insert into alert_type item_title, item_link, item_description, template) values ('council_problems', '', '', 'New problems to {{COUNCIL}} on FixMyStreet', '/reports', 'The latest problems for {{COUNCIL}} reported by users', - 'problem', 'problem.non_public = ''f'' and problem.state in (''confirmed'', ''investigating'', ''planned'', ''in progress'', ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'') and (council like ''%''||?||''%'' - or council is null) and areas like ''%,''||?||'',%''', 'created desc', + 'problem', + 'problem.non_public = ''f'' and problem.state in + (''confirmed'', ''investigating'', ''planned'', ''in progress'', + ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'', + ''action scheduled'', ''not responsible'', ''duplicate'', ''unable to fix'', + ''internal referral'' ) AND + (bodies_str like ''%''||?||''%'' or bodies_str is null) and + areas like ''%,''||?||'',%''', + 'created desc', '{{title}}, {{confirmed}}', '/report/{{id}}', '{{detail}}', 'alert-problem-council' ); @@ -97,8 +122,15 @@ insert into alert_type values ('ward_problems', '', '', 'New problems for {{COUNCIL}} within {{WARD}} ward on FixMyStreet', '/reports', 'The latest problems for {{COUNCIL}} within {{WARD}} ward reported by users', - 'problem', 'problem.non_public = ''f'' and problem.state in (''confirmed'', ''investigating'', ''planned'', ''in progress'', ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'') and (council like ''%''||?||''%'' - or council is null) and areas like ''%,''||?||'',%''', 'created desc', + 'problem', + 'problem.non_public = ''f'' and problem.state in + (''confirmed'', ''investigating'', ''planned'', ''in progress'', + ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'', + ''action scheduled'', ''not responsible'', ''duplicate'', ''unable to fix'', + ''internal referral'' ) AND + (bodies_str like ''%''||?||''%'' or bodies_str is null) and + areas like ''%,''||?||'',%''', + 'created desc', '{{title}}, {{confirmed}}', '/report/{{id}}', '{{detail}}', 'alert-problem-ward' ); @@ -111,7 +143,13 @@ insert into alert_type values ('area_problems', '', '', 'New problems within {{NAME}}''s boundary on FixMyStreet', '/reports', 'The latest problems within {{NAME}}''s boundary reported by users', 'problem', - 'problem.non_public = ''f'' and problem.state in (''confirmed'', ''investigating'', ''planned'', ''in progress'', ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'') and areas like ''%,''||?||'',%''', 'created desc', + 'problem.non_public = ''f'' and problem.state in + (''confirmed'', ''investigating'', ''planned'', ''in progress'', + ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'', + ''action scheduled'', ''not responsible'', ''duplicate'', ''unable to fix'', + ''internal referral'' ) AND + areas like ''%,''||?||'',%''', + 'created desc', '{{title}}, {{confirmed}}', '/report/{{id}}', '{{detail}}', 'alert-problem-area' ); diff --git a/db/alert_types_eha.sql b/db/alert_types_eha.sql index af074717b..e4ec0c986 100644 --- a/db/alert_types_eha.sql +++ b/db/alert_types_eha.sql @@ -61,8 +61,8 @@ insert into alert_type item_title, item_link, item_description, template) values ('council_problems', '', '', 'New reports to {{COUNCIL}} on reportemptyhomes.com', '/reports', 'The latest reports for {{COUNCIL}} reported by users', - 'problem', 'problem.state in (''confirmed'', ''investigating'', ''planned'', ''in progress'', ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'') and (council like ''%''||?||''%'' - or council is null) and areas like ''%,''||?||'',%''', 'created desc', + 'problem', 'problem.state in (''confirmed'', ''investigating'', ''planned'', ''in progress'', ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'') and (bodies_str like ''%''||?||''%'' + or bodies_str is null) and areas like ''%,''||?||'',%''', 'created desc', '{{title}}, {{confirmed}}', '/report/{{id}}', '{{detail}}', 'alert-problem-council' ); @@ -75,8 +75,8 @@ insert into alert_type values ('ward_problems', '', '', 'New reports for {{COUNCIL}} within {{WARD}} ward on reportemptyhomes.com', '/reports', 'The latest reports for {{COUNCIL}} within {{WARD}} ward reported by users', - 'problem', 'problem.state in (''confirmed'', ''investigating'', ''planned'', ''in progress'', ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'') and (council like ''%''||?||''%'' - or council is null) and areas like ''%,''||?||'',%''', 'created desc', + 'problem', 'problem.state in (''confirmed'', ''investigating'', ''planned'', ''in progress'', ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'') and (bodies_str like ''%''||?||''%'' + or bodies_str is null) and areas like ''%,''||?||'',%''', 'created desc', '{{title}}, {{confirmed}}', '/report/{{id}}', '{{detail}}', 'alert-problem-ward' ); diff --git a/db/schema.sql b/db/schema.sql index 87e785de2..6ddb7bae6 100644 --- a/db/schema.sql +++ b/db/schema.sql @@ -4,8 +4,6 @@ -- Copyright (c) 2006 UK Citizens Online Democracy. All rights reserved. -- Email: matthew@mysociety.org; WWW: http://www.mysociety.org/ -- --- $Id: schema.sql,v 1.49 2009-11-10 13:53:33 louise Exp $ --- -- secret -- A random secret. @@ -19,22 +17,6 @@ create table debugdate ( override_today date ); --- Returns the date of "today", which can be overriden for testing. -create function ms_current_date() - returns date as ' - declare - today date; - begin - today = (select override_today from debugdate); - if today is not null then - return today; - else - return current_date; - end if; - - end; -' language 'plpgsql' stable; - -- Returns the timestamp of current time, but with possibly overriden "today". create function ms_current_timestamp() returns timestamp as ' @@ -50,24 +32,57 @@ create function ms_current_timestamp() end; ' language 'plpgsql'; +-- table for sessions - needed by Catalyst::Plugin::Session::Store::DBIC +create table sessions ( + id char(72) primary key, + session_data text, + expires integer +); --- users, but call the table person rather than user so we don't have to quote --- its name in every statement.... --- create table person ( --- id serial not null primary key, --- name text, --- email text not null, --- password text, --- website text, --- numlogins integer not null default 0 --- ); --- --- create unique index person_email_idx on person(email); - --- Who to send problems for a specific MaPit area ID to +-- users table +create table users ( + id serial not null primary key, + email text not null unique, + name text, + phone text, + password text not null default '', + from_body integer, + flagged boolean not null default 'f', + title text +); + +-- Record details of reporting bodies, including open311 configuration details +create table body ( + id serial primary key, + name text not null, + external_url text, + parent integer references body(id), + endpoint text, + jurisdiction text, + api_key text, + send_method text, + send_comments boolean not null default 'f', + 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', + deleted boolean not null default 'f' +); + +create table body_areas ( + body_id integer not null references body(id), + area_id integer not null +); +create unique index body_areas_body_id_area_id_idx on body_areas(body_id, area_id); + +-- Now can create reference from users to body +ALTER TABLE users ADD CONSTRAINT users_from_body_fkey + FOREIGN KEY (from_body) REFERENCES body(id); + +-- The contact for a category within a particular body create table contacts ( id serial primary key, - area_id integer not null, + body_id integer not null references body(id), category text not null default 'Other', email text not null, confirmed boolean not null, @@ -92,7 +107,7 @@ create table contacts ( api_key text default '', send_method text ); -create unique index contacts_area_id_category_idx on contacts(area_id, category); +create unique index contacts_body_id_category_idx on contacts(body_id, category); -- History of changes to contacts - automatically updated -- whenever contacts is changed, using trigger below. @@ -100,7 +115,7 @@ create table contacts_history ( contacts_history_id serial not null primary key, contact_id integer not null, - area_id integer not null, + body_id integer not null, category text not null default 'Other', email text not null, confirmed boolean not null, @@ -119,7 +134,7 @@ create table contacts_history ( create function contacts_updated() returns trigger as ' begin - insert into contacts_history (contact_id, area_id, category, email, editor, whenedited, note, confirmed, deleted) values (new.id, new.area_id, new.category, new.email, new.editor, new.whenedited, new.note, new.confirmed, new.deleted); + insert into contacts_history (contact_id, body_id, category, email, editor, whenedited, note, confirmed, deleted) values (new.id, new.body_id, new.category, new.email, new.editor, new.whenedited, new.note, new.confirmed, new.deleted); return new; end; ' language 'plpgsql'; @@ -129,25 +144,6 @@ create trigger contacts_update_trigger after update on contacts create trigger contacts_insert_trigger after insert on contacts for each row execute procedure contacts_updated(); --- table for sessions - needed by Catalyst::Plugin::Session::Store::DBIC -create table sessions ( - id char(72) primary key, - session_data text, - expires integer -); - --- users table -create table users ( - id serial not null primary key, - email text not null unique, - name text, - phone text, - password text not null default '', - from_council integer, -- id of council user is from or null/0 if not - flagged boolean not null default 'f', - title text -); - -- Problems reported by users of site create table problem ( id serial not null primary key, @@ -156,8 +152,8 @@ create table problem ( postcode text not null, latitude double precision not null, longitude double precision not null, - council text, -- the council(s) we'll report this problem to - areas text not null, -- the voting areas this location is in + bodies_str text, -- the body(s) we'll report this problem to + areas text not null, -- the mapit areas this location is in category text not null default 'Other', title text not null, detail text not null, @@ -183,12 +179,17 @@ create table problem ( or state = 'investigating' or state = 'planned' or state = 'in progress' + or state = 'action scheduled' or state = 'closed' or state = 'fixed' or state = 'fixed - council' or state = 'fixed - user' or state = 'hidden' or state = 'partial' + or state = 'unable to fix' + or state = 'not responsible' + or state = 'duplicate' + or state = 'internal referral' ), lang text not null default 'en-gb', service text not null default '', @@ -331,10 +332,15 @@ create table comment ( or problem_state = 'investigating' or problem_state = 'planned' or problem_state = 'in progress' + or problem_state = 'action scheduled' or problem_state = 'closed' or problem_state = 'fixed' or problem_state = 'fixed - council' or problem_state = 'fixed - user' + or problem_state = 'unable to fix' + or problem_state = 'not responsible' + or problem_state = 'duplicate' + or problem_state = 'internal referral' ), -- other fields? one to indicate whether this was written by the council -- and should be highlighted in the display? @@ -443,24 +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() ); - --- Record open 311 configuration details - -create table open311conf ( - id serial primary key, - area_id integer not null unique, - endpoint text not null, - jurisdiction text, - api_key text, - send_method text, - send_comments boolean not null default 'f', - comment_user_id int references users(id), - suppress_alerts boolean not null default 'f', - can_be_devolved boolean not null default 'f' -); diff --git a/db/schema_0022-add_interest_count_to_problems.sql b/db/schema_0022-add_interest_count_to_problems.sql index 62092aa0a..4a4703ae1 100644 --- a/db/schema_0022-add_interest_count_to_problems.sql +++ b/db/schema_0022-add_interest_count_to_problems.sql @@ -1,6 +1,6 @@ begin; ALTER table problem - ADD COLUMN interest_count integer; + ADD COLUMN interest_count integer DEFAULT 0; commit; diff --git a/db/schema_0024-add_non_public_categories_and_problems.sql b/db/schema_0024-add_non_public_categories_and_problems.sql index c133b3ef2..89367610a 100644 --- a/db/schema_0024-add_non_public_categories_and_problems.sql +++ b/db/schema_0024-add_non_public_categories_and_problems.sql @@ -34,4 +34,3 @@ BEGIN; commit; -COMMIT; diff --git a/db/schema_0025-add_more_statuses_to_problem.sql b/db/schema_0025-add_more_statuses_to_problem.sql new file mode 100644 index 000000000..f450bd8a9 --- /dev/null +++ b/db/schema_0025-add_more_statuses_to_problem.sql @@ -0,0 +1,83 @@ +BEGIN; + + ALTER TABLE problem DROP CONSTRAINT problem_state_check; + + ALTER TABLE problem ADD CONSTRAINT problem_state_check CHECK ( + state = 'unconfirmed' + or state = 'confirmed' + or state = 'investigating' + or state = 'planned' + or state = 'in progress' + or state = 'action scheduled' + or state = 'closed' + or state = 'fixed' + or state = 'fixed - council' + or state = 'fixed - user' + or state = 'hidden' + or state = 'partial' + or state = 'unable to fix' + or state = 'not responsible' + or state = 'duplicate' + or state = 'internal referral' + ); + + + ALTER TABLE comment DROP CONSTRAINT comment_problem_state_check; + + ALTER TABLE comment ADD CONSTRAINT comment_problem_state_check CHECK ( + problem_state = 'confirmed' + or problem_state = 'investigating' + or problem_state = 'planned' + or problem_state = 'in progress' + or problem_state = 'action scheduled' + or problem_state = 'closed' + or problem_state = 'fixed' + or problem_state = 'fixed - council' + or problem_state = 'fixed - user' + or problem_state = 'unable to fix' + or problem_state = 'not responsible' + or problem_state = 'duplicate' + or problem_state = 'internal referral' + ); + + UPDATE alert_type set item_where = 'nearby.problem_id = problem.id and problem.non_public = ''f'' and problem.state in + (''confirmed'', ''investigating'', ''planned'', ''in progress'', + ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'', + ''action scheduled'', ''not responsible'', ''duplicate'', ''unable to fix'', + ''internal referral'')' + WHERE ref = 'postcode_local_problems'; + UPDATE alert_type set item_where = 'problem.non_public = ''f'' and problem.state in + (''confirmed'', ''investigating'', ''planned'', ''in progress'', + ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'' + ''action scheduled'', ''not responsible'', ''duplicate'', ''unable to fix'', + ''internal referral'' )' + WHERE ref = 'new_problems'; + UPDATE alert_type set item_where = 'problem.non_public = ''f'' and problem.state in (''fixed'', ''fixed - user'', ''fixed - council'')' WHERE ref = 'new_fixed_problems'; + UPDATE alert_type set item_where = 'nearby.problem_id = problem.id and problem.non_public = ''f'' and problem.state in + (''confirmed'', ''investigating'', ''planned'', ''in progress'', + ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'', + ''action scheduled'', ''not responsible'', ''duplicate'', ''unable to fix'', + ''internal referral'')' + WHERE ref = 'local_problems'; + UPDATE alert_type set item_where = 'problem.non_public = ''f'' and problem.state in + (''confirmed'', ''investigating'', ''planned'', ''in progress'', + ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'', + ''action scheduled'', ''not responsible'', ''duplicate'', ''unable to fix'', + ''internal referral'' ) AND + (council like ''%''||?||''%'' or council is null) and + areas like ''%,''||?||'',%''' WHERE ref = 'council_problems'; + UPDATE alert_type set item_where = 'problem.non_public = ''f'' and problem.state in + (''confirmed'', ''investigating'', ''planned'', ''in progress'', + ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'', + ''action scheduled'', ''not responsible'', ''duplicate'', ''unable to fix'', + ''internal referral'' ) AND + (council like ''%''||?||''%'' or council is null) and + areas like ''%,''||?||'',%''' WHERE ref = 'ward_problems'; + UPDATE alert_type set item_where = 'problem.non_public = ''f'' and problem.state in + (''confirmed'', ''investigating'', ''planned'', ''in progress'', + ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'', + ''action scheduled'', ''not responsible'', ''duplicate'', ''unable to fix'', + ''internal referral'' ) AND + areas like ''%,''||?||'',%''' WHERE ref = 'area_problems'; + +COMMIT; diff --git a/db/schema_0026-add_send_extended_comments_to_open311conf.sql b/db/schema_0026-add_send_extended_comments_to_open311conf.sql new file mode 100644 index 000000000..ee7b44b75 --- /dev/null +++ b/db/schema_0026-add_send_extended_comments_to_open311conf.sql @@ -0,0 +1,6 @@ +begin; + +ALTER table open311conf + ADD column send_extended_statuses BOOL NOT NULL DEFAULT 'f'; + +commit; diff --git a/db/schema_0026-change_interest_count_default.sql b/db/schema_0026-change_interest_count_default.sql deleted file mode 100644 index 7c78f6fe8..000000000 --- a/db/schema_0026-change_interest_count_default.sql +++ /dev/null @@ -1,9 +0,0 @@ -BEGIN; - - ALTER TABLE problem - ALTER COLUMN interest_count SET DEFAULT 0; - - UPDATE problem SET interest_count = 0 - WHERE interest_count IS NULL; - -COMMIT; diff --git a/db/schema_0028-add-bodies.sql b/db/schema_0028-add-bodies.sql new file mode 100644 index 000000000..b56738cf3 --- /dev/null +++ b/db/schema_0028-add-bodies.sql @@ -0,0 +1,87 @@ +BEGIN; + +-- Remove unused function +drop function ms_current_date(); + +-- Rename open311conf to create the new body table +ALTER TABLE open311conf RENAME TO body; +ALTER INDEX open311conf_pkey RENAME TO body_pkey; +ALTER INDEX open311conf_area_id_key RENAME TO body_area_id_key; +ALTER TABLE body ALTER COLUMN endpoint DROP NOT NULL; +ALTER TABLE body DROP CONSTRAINT open311conf_comment_user_id_fkey; +ALTER TABLE body ADD CONSTRAINT body_comment_user_id_fkey + FOREIGN KEY (comment_user_id) REFERENCES users(id); +ALTER SEQUENCE open311conf_id_seq RENAME TO body_id_seq; + +-- Update contacts column to be better named +ALTER TABLE contacts RENAME area_id TO body_id; +ALTER TABLE contacts_history RENAME area_id TO body_id; +ALTER INDEX contacts_area_id_category_idx RENAME TO contacts_body_id_category_idx; + +-- Data migration from contacts +UPDATE body SET id = area_id; +INSERT INTO body (id, area_id) + SELECT DISTINCT body_id, body_id FROM contacts WHERE body_id not in (SELECT id FROM body); +SELECT setval('body_id_seq', (SELECT MAX(id) FROM body) ); + +ALTER TABLE contacts ADD CONSTRAINT contacts_body_id_fkey + FOREIGN KEY (body_id) REFERENCES body(id); + +DROP TRIGGER contacts_update_trigger ON contacts; +DROP TRIGGER contacts_insert_trigger ON contacts; +DROP FUNCTION contacts_updated(); +create function contacts_updated() + returns trigger as ' + begin + insert into contacts_history (contact_id, body_id, category, email, editor, whenedited, note, confirmed, deleted) values (new.id, new.body_id, new.category, new.email, new.editor, new.whenedited, new.note, new.confirmed, new.deleted); + return new; + end; +' language 'plpgsql'; +create trigger contacts_update_trigger after update on contacts + for each row execute procedure contacts_updated(); +create trigger contacts_insert_trigger after insert on contacts + for each row execute procedure contacts_updated(); + +-- Give bodies a name +ALTER TABLE body ADD name text; +UPDATE body SET name=''; +ALTER table body ALTER COLUMN name SET NOT NULL; + +-- Update users column to be better named +ALTER TABLE users RENAME COLUMN from_council TO from_body; +ALTER TABLE users ADD CONSTRAINT users_from_body_fkey + FOREIGN KEY (from_body) REFERENCES body(id); + +-- Rename problem's council column +ALTER TABLE problem RENAME COLUMN council TO bodies_str; + +-- Update alert types that used 'council' column +UPDATE alert_type set item_where = 'problem.non_public = ''f'' and problem.state in +(''confirmed'', ''investigating'', ''planned'', ''in progress'', + ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'', + ''action scheduled'', ''not responsible'', ''duplicate'', ''unable to fix'', + ''internal referral'' ) AND +(bodies_str like ''%''||?||''%'' or bodies_str is null) and +areas like ''%,''||?||'',%''' WHERE ref = 'council_problems'; +UPDATE alert_type set item_where = 'problem.non_public = ''f'' and problem.state in +(''confirmed'', ''investigating'', ''planned'', ''in progress'', + ''fixed'', ''fixed - council'', ''fixed - user'', ''closed'', + ''action scheduled'', ''not responsible'', ''duplicate'', ''unable to fix'', + ''internal referral'' ) AND +(bodies_str like ''%''||?||''%'' or bodies_str is null) and +areas like ''%,''||?||'',%''' WHERE ref = 'ward_problems'; + +-- Move to many-many relationship between bodies and areas +create table body_areas ( + body_id integer not null references body(id), + area_id integer not null +); +create unique index body_areas_body_id_area_id_idx on body_areas(body_id, area_id); +INSERT INTO body_areas (body_id, area_id) + SELECT id, area_id FROM body; +ALTER TABLE body DROP COLUMN area_id; + +-- Allow bodies to have a hierarchy +ALTER TABLE body ADD parent INTEGER REFERENCES body(id); + +COMMIT; 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/db/schema_0031-add_url_to_body.sql b/db/schema_0031-add_url_to_body.sql new file mode 100644 index 000000000..7aaa78c64 --- /dev/null +++ b/db/schema_0031-add_url_to_body.sql @@ -0,0 +1,9 @@ +BEGIN; + +-- `external_url' includes an URL for reporting problems to the body directly. +-- It can be displayed in the new report form when no contacts are set; see +-- templates/web/fixamingata/report/new/councils_text_none.html for an example. + +ALTER TABLE body ADD external_url TEXT; + +COMMIT; diff --git a/iphone/FixMyStreet/.gitignore b/iphone/FixMyStreet/.gitignore deleted file mode 100644 index 796b96d1c..000000000 --- a/iphone/FixMyStreet/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/iphone/FixMyStreet/AboutView.xib b/iphone/FixMyStreet/AboutView.xib deleted file mode 100644 index 2e5add074..000000000 --- a/iphone/FixMyStreet/AboutView.xib +++ /dev/null @@ -1,312 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.03"> - <data> - <int key="IBDocument.SystemTarget">528</int> - <string key="IBDocument.SystemVersion">9L31a</string> - <string key="IBDocument.InterfaceBuilderVersion">677</string> - <string key="IBDocument.AppKitVersion">949.54</string> - <string key="IBDocument.HIToolboxVersion">353.00</string> - <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSArray" key="IBDocument.PluginDependencies"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - </object> - <object class="NSMutableDictionary" key="IBDocument.Metadata"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBProxyObject" id="372490531"> - <string key="IBProxiedObjectIdentifier">IBFilesOwner</string> - </object> - <object class="IBProxyObject" id="711762367"> - <string key="IBProxiedObjectIdentifier">IBFirstResponder</string> - </object> - <object class="IBUIView" id="191373211"> - <reference key="NSNextResponder"/> - <int key="NSvFlags">292</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBUIView" id="201743607"> - <reference key="NSNextResponder" ref="191373211"/> - <int key="NSvFlags">292</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBUIImageView" id="778263069"> - <reference key="NSNextResponder" ref="201743607"/> - <int key="NSvFlags">292</int> - <string key="NSFrameSize">{320, 80}</string> - <reference key="NSSuperview" ref="201743607"/> - <reference key="NSWindow"/> - <bool key="IBUIOpaque">NO</bool> - <bool key="IBUIClearsContextBeforeDrawing">NO</bool> - <int key="IBUIContentMode">4</int> - <bool key="IBUIUserInteractionEnabled">NO</bool> - <object class="NSCustomResource" key="IBUIImage"> - <string key="NSClassName">NSImage</string> - <string key="NSResourceName">mysociety.png</string> - </object> - </object> - </object> - <string key="NSFrameSize">{341, 80}</string> - <reference key="NSSuperview" ref="191373211"/> - <reference key="NSWindow"/> - <object class="NSColor" key="IBUIBackgroundColor"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MQA</bytes> - <object class="NSColorSpace" key="NSCustomColorSpace" id="159075115"> - <int key="NSID">2</int> - </object> - </object> - <bool key="IBUIClearsContextBeforeDrawing">NO</bool> - </object> - <object class="IBUILabel" id="151821449"> - <reference key="NSNextResponder" ref="191373211"/> - <int key="NSvFlags">292</int> - <string key="NSFrame">{{20, 108}, {280, 143}}</string> - <reference key="NSSuperview" ref="191373211"/> - <reference key="NSWindow"/> - <object class="NSColor" key="IBUIBackgroundColor"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MSAxIDEgMAA</bytes> - </object> - <bool key="IBUIOpaque">NO</bool> - <bool key="IBUIClipsSubviews">YES</bool> - <bool key="IBUIUserInteractionEnabled">NO</bool> - <string type="base64-UTF8" key="IBUIText">Rml4TXlTdHJlZXQgZm9yIGlQaG9uZSB3YXMgd3JpdHRlbiBmb3IgbXlTb2NpZXR5IGJ5IE1hdHRoZXcg -U29tZXJ2aWxsZS4gbXlTb2NpZXR5IGlzIHJ1biBieSBhIHJlZ2lzdGVyZWQgY2hhcml0eSDigJMgaWYg -eW91IGxpa2UgdGhpcyBhcHBsaWNhdGlvbiwgcGxlYXNlIGRvbmF0ZSB0byB1cyBzbyB0aGF0IHdlIGNh -biBidWlsZCBtb3JlIGNvb2wgYW5kIHVzZWZ1bCB0aGluZ3MgbGlrZSB0aGlzIGluIHRoZSBmdXR1cmUu -A</string> - <object class="NSFont" key="IBUIFont"> - <string key="NSName">Helvetica</string> - <double key="NSSize">1.700000e+01</double> - <int key="NSfFlags">16</int> - </object> - <object class="NSColor" key="IBUITextColor"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MCAwIDAAA</bytes> - </object> - <nil key="IBUIHighlightedColor"/> - <int key="IBUIBaselineAdjustment">1</int> - <float key="IBUIMinimumFontSize">1.000000e+01</float> - <int key="IBUINumberOfLines">7</int> - </object> - <object class="IBUIButton" id="401248225"> - <reference key="NSNextResponder" ref="191373211"/> - <int key="NSvFlags">292</int> - <string key="NSFrame">{{82, 296}, {156, 86}}</string> - <reference key="NSSuperview" ref="191373211"/> - <reference key="NSWindow"/> - <bool key="IBUIOpaque">NO</bool> - <bool key="IBUIClearsContextBeforeDrawing">NO</bool> - <int key="IBUIContentHorizontalAlignment">0</int> - <int key="IBUIContentVerticalAlignment">0</int> - <object class="NSFont" key="IBUIFont"> - <string key="NSName">Helvetica-Bold</string> - <double key="NSSize">1.500000e+01</double> - <int key="NSfFlags">16</int> - </object> - <int key="IBUIButtonType">1</int> - <string key="IBUIHighlightedTitle">Donate</string> - <string key="IBUIDisabledTitle">Donate</string> - <string key="IBUISelectedTitle">Donate</string> - <string key="IBUINormalTitle">Donate</string> - <object class="NSColor" key="IBUIHighlightedTitleColor"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MSAxIDEAA</bytes> - </object> - <object class="NSColor" key="IBUINormalTitleColor"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA</bytes> - </object> - <object class="NSColor" key="IBUINormalTitleShadowColor"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MAA</bytes> - </object> - </object> - </object> - <string key="NSFrameSize">{320, 416}</string> - <reference key="NSSuperview"/> - <reference key="NSWindow"/> - <object class="NSColor" key="IBUIBackgroundColor"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MQA</bytes> - <reference key="NSCustomColorSpace" ref="159075115"/> - </object> - <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/> - <object class="IBUISimulatedNavigationBarMetrics" key="IBUISimulatedTopBarMetrics"> - <bool key="IBUIPrompted">NO</bool> - </object> - </object> - </object> - <object class="IBObjectContainer" key="IBDocument.Objects"> - <object class="NSMutableArray" key="connectionRecords"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">view</string> - <reference key="source" ref="372490531"/> - <reference key="destination" ref="191373211"/> - </object> - <int key="connectionID">6</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchEventConnection" key="connection"> - <string key="label">donate:</string> - <reference key="source" ref="401248225"/> - <reference key="destination" ref="372490531"/> - <int key="IBEventType">7</int> - </object> - <int key="connectionID">8</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">donateButton</string> - <reference key="source" ref="372490531"/> - <reference key="destination" ref="401248225"/> - </object> - <int key="connectionID">9</int> - </object> - </object> - <object class="IBMutableOrderedSet" key="objectRecords"> - <object class="NSArray" key="orderedObjects"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBObjectRecord"> - <int key="objectID">0</int> - <object class="NSArray" key="object" id="360949347"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <reference key="children" ref="1000"/> - <nil key="parent"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">1</int> - <reference key="object" ref="191373211"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="401248225"/> - <reference ref="151821449"/> - <reference ref="201743607"/> - </object> - <reference key="parent" ref="360949347"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">-1</int> - <reference key="object" ref="372490531"/> - <reference key="parent" ref="360949347"/> - <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">-2</int> - <reference key="object" ref="711762367"/> - <reference key="parent" ref="360949347"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">3</int> - <reference key="object" ref="151821449"/> - <reference key="parent" ref="191373211"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">4</int> - <reference key="object" ref="401248225"/> - <reference key="parent" ref="191373211"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">7</int> - <reference key="object" ref="201743607"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="778263069"/> - </object> - <reference key="parent" ref="191373211"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">5</int> - <reference key="object" ref="778263069"/> - <reference key="parent" ref="201743607"/> - </object> - </object> - </object> - <object class="NSMutableDictionary" key="flattenedProperties"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMutableArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>-1.CustomClassName</string> - <string>-2.CustomClassName</string> - <string>1.IBEditorWindowLastContentRect</string> - <string>1.IBPluginDependency</string> - <string>3.IBPluginDependency</string> - <string>4.IBPluginDependency</string> - <string>5.IBPluginDependency</string> - <string>7.IBPluginDependency</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>AboutViewController</string> - <string>UIResponder</string> - <string>{{975, 228}, {320, 480}}</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - </object> - </object> - <object class="NSMutableDictionary" key="unlocalizedProperties"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <nil key="activeLocalization"/> - <object class="NSMutableDictionary" key="localizations"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <nil key="sourceID"/> - <int key="maxID">9</int> - </object> - <object class="IBClassDescriber" key="IBDocument.Classes"> - <object class="NSMutableArray" key="referencedPartialClassDescriptions"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBPartialClassDescription"> - <string key="className">AboutViewController</string> - <string key="superclassName">UIViewController</string> - <object class="NSMutableDictionary" key="actions"> - <string key="NS.key.0">donate:</string> - <string key="NS.object.0">id</string> - </object> - <object class="NSMutableDictionary" key="outlets"> - <string key="NS.key.0">donateButton</string> - <string key="NS.object.0">UIButton</string> - </object> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBProjectSource</string> - <string key="minorKey">Classes/AboutViewController.h</string> - </object> - </object> - </object> - </object> - <int key="IBDocument.localizationMode">0</int> - <string key="IBDocument.LastKnownRelativeProjectPath">FixMyStreet.xcodeproj</string> - <int key="IBDocument.defaultPropertyAccessControl">3</int> - <string key="IBCocoaTouchPluginVersion">3.0</string> - </data> -</archive> diff --git a/iphone/FixMyStreet/Classes/AboutViewController.h b/iphone/FixMyStreet/Classes/AboutViewController.h deleted file mode 100644 index 21922cd8b..000000000 --- a/iphone/FixMyStreet/Classes/AboutViewController.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// AboutViewController.h -// FixMyStreet -// -// Created by Matthew on 23/10/2008. -// Copyright 2008 UK Citizens Online Democracy. All rights reserved. -// - -#import <UIKit/UIKit.h> - - -@interface AboutViewController : UIViewController { - IBOutlet UIButton* donateButton; -} - --(IBAction)donate:(id)sender; - -@end diff --git a/iphone/FixMyStreet/Classes/AboutViewController.m b/iphone/FixMyStreet/Classes/AboutViewController.m deleted file mode 100644 index 8f6e8a228..000000000 --- a/iphone/FixMyStreet/Classes/AboutViewController.m +++ /dev/null @@ -1,45 +0,0 @@ -// -// AboutViewController.m -// FixMyStreet -// -// Created by Matthew on 23/10/2008. -// Copyright 2008 UK Citizens Online Democracy. All rights reserved. -// - -#import "AboutViewController.h" - -@implementation AboutViewController - -/* -// Override initWithNibName:bundle: to load the view using a nib file then perform additional customization that is not appropriate for viewDidLoad. -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { - if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { - // Custom initialization - } - return self; -} -*/ - -// Implement viewDidLoad to do additional setup after loading the view. -- (void)viewDidLoad { - [super viewDidLoad]; - self.title = @"About"; - self.view.backgroundColor = [UIColor groupTableViewBackgroundColor]; - donateButton.titleLabel.font = [UIFont systemFontOfSize:32]; -} - - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - // Return YES for supported orientations - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -- (void)dealloc { - [super dealloc]; -} - --(IBAction)donate:(id)sender { - [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.mysociety.org/donate/"]]; -} - -@end diff --git a/iphone/FixMyStreet/Classes/Default.png b/iphone/FixMyStreet/Classes/Default.png Binary files differdeleted file mode 100644 index 10143f6ac..000000000 --- a/iphone/FixMyStreet/Classes/Default.png +++ /dev/null diff --git a/iphone/FixMyStreet/Classes/EditSubjectViewController.h b/iphone/FixMyStreet/Classes/EditSubjectViewController.h deleted file mode 100644 index e998d0fee..000000000 --- a/iphone/FixMyStreet/Classes/EditSubjectViewController.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// EditSubjectViewController.h -// FixMyStreet -// -// Created by Matthew on 01/10/2008. -// Copyright 2008 UK Citizens Online Democracy. All rights reserved. -// - -#import <UIKit/UIKit.h> - -@class EditingTableViewCell; - -@interface EditSubjectViewController : UITableViewController <UITextFieldDelegate> { - EditingTableViewCell *cell; -} - -@property (nonatomic, retain) EditingTableViewCell *cell; - --(void)setAll:(NSString*)a viewTitle:(NSString*)b placeholder:(NSString*)c keyboardType:(UIKeyboardType)d capitalisation:(UITextAutocapitalizationType)e; --(void)updateText:(NSString*)text; - -@end diff --git a/iphone/FixMyStreet/Classes/EditSubjectViewController.m b/iphone/FixMyStreet/Classes/EditSubjectViewController.m deleted file mode 100644 index 614aa7f7b..000000000 --- a/iphone/FixMyStreet/Classes/EditSubjectViewController.m +++ /dev/null @@ -1,164 +0,0 @@ -// -// EditSubjectViewController.m -// FixMyStreet -// -// Created by Matthew on 01/10/2008. -// Copyright 2008 UK Citizens Online Democracy. All rights reserved. -// - -#import "EditSubjectViewController.h" -#import "EditingTableViewCell.h" -#import "FixMyStreetAppDelegate.h" - -@implementation EditSubjectViewController - -@synthesize cell; - -/* -- (id)initWithStyle:(UITableViewStyle)style { - // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. - if (self = [super initWithStyle:style]) { - } - return self; -} -*/ - --(void)setAll:(NSString*)a viewTitle:(NSString*)b placeholder:(NSString*)c keyboardType:(UIKeyboardType)d capitalisation:(UITextAutocapitalizationType)e { - cell = [[EditingTableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"EditingCell"]; - cell.textField.delegate = self; - cell.textField.placeholder = c; - self.title = b; - if (a) cell.textField.text = a; - cell.textField.keyboardType = d; - if (b == @"Edit name" || b == @"Edit email") { - cell.textField.autocorrectionType = UITextAutocorrectionTypeNo; - } - cell.textField.autocapitalizationType = e; -} - -// Implement viewDidLoad to do additional setup after loading the view. -- (void)viewDidLoad { - [super viewDidLoad]; - self.tableView.sectionHeaderHeight = 27.0; - self.tableView.sectionFooterHeight = 0.0; -// self.title = viewTitle; -} - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - if (cell.textField.placeholder == @"Subject") { - return 2; - } - return 1; -} - - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.section == 1) { - return 54.0; - } - return 44.0; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.section == 1) { - static NSString *CellIdentifier = @"InfoCell"; - UITableViewCell *infoCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; - if (infoCell == nil) { - infoCell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; - UITextView *blurb = [[UITextView alloc] initWithFrame:CGRectMake(10, 0, 280, 44)]; - blurb.font = [UIFont italicSystemFontOfSize:14]; - blurb.textAlignment = UITextAlignmentCenter; - blurb.editable = NO; - blurb.text = @"You can provide more details\nlater on at the website"; - [infoCell.contentView addSubview:blurb]; - [blurb release]; - } - return infoCell; - } - - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:NO]; - [cell.textField becomeFirstResponder]; -} - -- (void)viewWillAppear:(BOOL)animated { - //[super viewWillAppear:animated]; - [cell.textField becomeFirstResponder]; -} - -/* -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; -} -*/ - -- (void)viewWillDisappear:(BOOL)animated { - // On 2.0 this produces same effect as clicking Done, but not in 2.1? - [cell.textField resignFirstResponder]; -} - -/* -- (void)viewDidDisappear:(BOOL)animated { -} -*/ -/* -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; -} -*/ - -- (void)dealloc { - [cell release]; - [super dealloc]; -} - - --(void)updateText:(NSString*)text { - FixMyStreetAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; - // This is yucky, but I can't think of a better way that wouldn't just waste time. - NSString* placeholder = cell.textField.placeholder; - if (placeholder == @"Subject") { - if (text.length) { - delegate.subject = text; - } else { - delegate.subject = nil; - } - } else if (placeholder == @"Your name") { - if (text.length) { - delegate.name = text; - } else { - delegate.name = nil; - } - } else if (placeholder == @"Your email") { - if (text.length) { - delegate.email = text; - } else { - delegate.email = nil; - } - } else if (placeholder == @"Your phone number") { - if (text.length) { - delegate.phone = text; - } else { - delegate.phone = nil; - } - } - [self.navigationController popViewControllerAnimated:YES]; -} - --(BOOL)textFieldShouldReturn:(UITextField*)theTextField { - //if (theTextField == subjectTextField) { - [theTextField resignFirstResponder]; - [self updateText:theTextField.text]; - //} - return YES; -} - -@end - diff --git a/iphone/FixMyStreet/Classes/EditingTableViewCell.h b/iphone/FixMyStreet/Classes/EditingTableViewCell.h deleted file mode 100644 index 812968821..000000000 --- a/iphone/FixMyStreet/Classes/EditingTableViewCell.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// EditingTableViewCell.h -// FixMyStreet -// -// Created by Matthew on 20/10/2008. -// Copyright 2008 UK Citizens Online Democracy. All rights reserved. -// - -#import <UIKit/UIKit.h> - -@interface EditingTableViewCell : UITableViewCell { - UITextField *textField; -} -@property (nonatomic, retain) UITextField *textField; - -@end diff --git a/iphone/FixMyStreet/Classes/EditingTableViewCell.m b/iphone/FixMyStreet/Classes/EditingTableViewCell.m deleted file mode 100644 index 04f9b2fa0..000000000 --- a/iphone/FixMyStreet/Classes/EditingTableViewCell.m +++ /dev/null @@ -1,41 +0,0 @@ -// -// EditingTableViewCell.m -// FixMyStreet -// -// Created by Matthew on 20/10/2008. -// Copyright 2008 UK Citizens Online Democracy. All rights reserved. -// - -#import "EditingTableViewCell.h" - -@implementation EditingTableViewCell - -@synthesize textField; - -- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) { - textField = [[UITextField alloc] initWithFrame:CGRectZero]; - textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; - textField.font = [UIFont systemFontOfSize:20]; - textField.clearButtonMode = UITextFieldViewModeWhileEditing; - textField.returnKeyType = UIReturnKeyDone; - [self addSubview:textField]; - } - return self; -} - --(void)layoutSubviews { - textField.frame = CGRectInset(self.contentView.bounds, 20, 0); -} - -- (void)setSelected:(BOOL)selected animated:(BOOL)animated { - [super setSelected:selected animated:animated]; - // Configure the view for the selected state -} - -- (void)dealloc { - [textField release]; - [super dealloc]; -} - -@end diff --git a/iphone/FixMyStreet/Classes/FixMyStreetAppDelegate.h b/iphone/FixMyStreet/Classes/FixMyStreetAppDelegate.h deleted file mode 100644 index 048587695..000000000 --- a/iphone/FixMyStreet/Classes/FixMyStreetAppDelegate.h +++ /dev/null @@ -1,48 +0,0 @@ -// -// FixMyStreetAppDelegate.h -// FixMyStreet -// -// Created by Matthew on 25/09/2008. -// Copyright 2008 UK Citizens Online Democracy. All rights reserved. -// - -#import <UIKit/UIKit.h> - -@class InputTableViewController; - -@interface FixMyStreetAppDelegate : NSObject <UIApplicationDelegate> { - UIWindow *window; -// UIViewController *viewController; - UINavigationController *navigationController; - - // The report currently being entered. - NSData* image; - - NSString* latitude; - NSString* longitude; - NSString* subject; - - NSString* name; - NSString* email; - NSString* phone; - - UIView *uploading; - NSMutableData* returnData; -} - -@property (nonatomic, retain) IBOutlet UIWindow *window; -@property (nonatomic, retain) UINavigationController *navigationController; -//@property (nonatomic, retain) IBOutlet UIViewController *viewController; - -@property (nonatomic, retain) NSData* image; -@property (nonatomic, retain) NSString* latitude; -@property (nonatomic, retain) NSString* longitude; -@property (nonatomic, retain) NSString* subject; -@property (nonatomic, retain) NSString* name; -@property (nonatomic, retain) NSString* email; -@property (nonatomic, retain) NSString* phone; - --(void)uploadReport; - -@end - diff --git a/iphone/FixMyStreet/Classes/FixMyStreetAppDelegate.m b/iphone/FixMyStreet/Classes/FixMyStreetAppDelegate.m deleted file mode 100644 index aa9b99bb5..000000000 --- a/iphone/FixMyStreet/Classes/FixMyStreetAppDelegate.m +++ /dev/null @@ -1,233 +0,0 @@ -// -// FixMyStreetAppDelegate.m -// FixMyStreet -// -// Created by Matthew on 25/09/2008. -// Copyright 2008 UK Citizens Online Democracy. All rights reserved. -// - -#import "FixMyStreetAppDelegate.h" -#import "InputTableViewController.h" -#import "Reachability.h" - -@implementation FixMyStreetAppDelegate - -@synthesize window, navigationController; //, viewController; -@synthesize image, latitude, longitude, subject, name, email, phone; - -- (void)applicationDidFinishLaunching:(UIApplication *)application { - InputTableViewController *inputTableViewController = [[InputTableViewController alloc] initWithNibName:@"MainViewController" bundle:[NSBundle mainBundle]]; -// InputTableViewController *inputTableViewController = [[InputTableViewController alloc] initWithStyle:UITableViewStyleGrouped]; - //RootViewController *rootViewController = [[RootViewController alloc] i - // So we had our root view in a nib file, but we're creating our navigation controller programmatically. Ah well. - UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:inputTableViewController]; -// UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:viewController]; - self.navigationController = aNavigationController; - [aNavigationController release]; - [inputTableViewController release]; -// [rootViewController release]; - - // NSMutableArray *tempMutableCopy = [[[NSUserDefaults standardUserDefaults] objectForKey:kRestoreLocationKey] mutableCopy]; - name = [[NSUserDefaults standardUserDefaults] stringForKey:@"Name"]; - email = [[NSUserDefaults standardUserDefaults] stringForKey:@"Email"]; - phone = [[NSUserDefaults standardUserDefaults] stringForKey:@"Phone"]; - subject = [[NSUserDefaults standardUserDefaults] stringForKey:@"Subject"]; - - image = [[NSUserDefaults standardUserDefaults] objectForKey:@"Image"]; -// NSData *imageData = [[[NSUserDefaults standardUserDefaults] objectForKey:@"Image"] mutableCopy]; -// if (imageData != nil) -// image = (UIImage *)[NSKeyedUnarchiver unarchiveObjectWithData:imageData]; -// [imageData release]; - - latitude = [[NSUserDefaults standardUserDefaults] stringForKey:@"Latitude"]; - longitude = [[NSUserDefaults standardUserDefaults] stringForKey:@"Longitude"]; -// NSData *locationData = [[NSUserDefaults standardUserDefaults] objectForKey:@"Location"]; -// if (locationData != nil) -// location = (CLLocation *)[NSUnarchiver unarchiveObjectWithData:locationData]; -// [locationData release]; - - [window addSubview:[navigationController view]]; - [window makeKeyAndVisible]; - -// NSArray *keys = [NSArray arrayWithObjects:@"Name", @"Email", @"Phone", nil]; -// NSArray *values = [NSArray arrayWithObjects:name, email, phone, nil]; -// NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:values forKeys:keys]; -// [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary]; -// [[NSUserDefaults standardUserDefaults] synchronize]; -// [keys release]; -// [values release]; -// [dictionary release]; -} - -- (void)dealloc { - [window release]; - [navigationController release]; -// [viewController release]; - [image release]; - [latitude release]; - [longitude release]; - [subject release]; - [name release]; - [email release]; - [phone release]; - [super dealloc]; -} - -- (void)applicationWillTerminate:(UIApplication *)application { - // Save state in case they're just in the middle of a phone call... - [[NSUserDefaults standardUserDefaults] setObject:name forKey:@"Name"]; - [[NSUserDefaults standardUserDefaults] setObject:email forKey:@"Email"]; - [[NSUserDefaults standardUserDefaults] setObject:phone forKey:@"Phone"]; - [[NSUserDefaults standardUserDefaults] setObject:subject forKey:@"Subject"]; - -// XXX image crashes (restarting app. still has image showing?! and then quitting crashes, either way) -// Location just doesn't seem to work - -// if (image) { -// NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); -// NSString *imageFile = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"saved.image"]; -// [NSKeyedArchiver archiveRootObject:image toFile:imageFile]; -// } -// NSData *imageData = [NSKeyedArchiver archivedDataWithRootObject:image]; -// [[NSUserDefaults standardUserDefaults] setObject:imageData forKey:@"Image"]; -// [imageData release]; - [[NSUserDefaults standardUserDefaults] setObject:image forKey:@"Image"]; - - [[NSUserDefaults standardUserDefaults] setObject:latitude forKey:@"Latitude"]; - [[NSUserDefaults standardUserDefaults] setObject:longitude forKey:@"Longitude"]; -// NSData *locationData = [NSKeyedArchiver archivedDataWithRootObject:location]; -// [[NSUserDefaults standardUserDefaults] setObject:locationData forKey:@"Location"]; -// [locationData release]; - - [[NSUserDefaults standardUserDefaults] synchronize]; -} - -// Report stuff --(void)uploadReport { - // Check internet connection status - NetworkStatus internetConnectionStatus = [[Reachability sharedReachability] internetConnectionStatus]; - if (internetConnectionStatus == NotReachable) { - UIAlertView *v = [[UIAlertView alloc] initWithTitle:@"Reporting failed" message:@"You need to be connected to the internet to report a problem." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; - [v show]; - [v release]; - return; - } - - [[MyCLController sharedInstance] stopUpdatingLocation]; - [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; - - uploading = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; - UIColor *bg = [[UIColor alloc] initWithRed:0 green:0 blue:0 alpha:0.5]; - uploading.backgroundColor = bg; - [bg release]; - UIActivityIndicatorView *spinny = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; - spinny.center = CGPointMake(160, 160); - [uploading addSubview:spinny]; - [spinny startAnimating]; - [self.navigationController.view addSubview:uploading]; - [spinny release]; - - // Get the phone's unique ID - UIDevice *dev = [UIDevice currentDevice]; - NSString *uniqueId = dev.uniqueIdentifier; - - NSString *urlString = @"http://matthew.fixmystreet.com/import"; - NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; - [request setURL:[NSURL URLWithString: urlString]]; - [request setHTTPMethod: @"POST"]; - - NSString *stringBoundary = @"0xMyLovelyBoundary"; - NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",stringBoundary]; - [request addValue:contentType forHTTPHeaderField: @"Content-Type"]; - - //setting up the body: - NSMutableData *postBody = [NSMutableData data]; - - [postBody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",stringBoundary] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"service\"\r\n\r\n"] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:[@"iPhone" dataUsingEncoding:NSASCIIStringEncoding]]; - - [postBody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",stringBoundary] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"phone_id\"\r\n\r\n"] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:[uniqueId dataUsingEncoding:NSASCIIStringEncoding]]; - - [postBody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",stringBoundary] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"subject\"\r\n\r\n"] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:[subject dataUsingEncoding:NSASCIIStringEncoding]]; - - [postBody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",stringBoundary] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"name\"\r\n\r\n"] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:[name dataUsingEncoding:NSASCIIStringEncoding]]; - - [postBody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",stringBoundary] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"email\"\r\n\r\n"] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:[email dataUsingEncoding:NSASCIIStringEncoding]]; - - [postBody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",stringBoundary] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"phone\"\r\n\r\n"] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:[phone dataUsingEncoding:NSASCIIStringEncoding]]; - - if (latitude) { -// NSString* latitude = [NSString stringWithFormat:@"%f", location.coordinates.latitude]; -// NSString* longitude = [NSString stringWithFormat:@"%f", location.coordinates.longitude]; - [postBody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",stringBoundary] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"lat\"\r\n\r\n"] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:[latitude dataUsingEncoding:NSASCIIStringEncoding]]; - - [postBody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",stringBoundary] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"lon\"\r\n\r\n"] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:[longitude dataUsingEncoding:NSASCIIStringEncoding]]; - } - - if (image) { -// NSData *imageData = UIImageJPEGRepresentation(image, 0.8); - [postBody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",stringBoundary] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"photo\"; filename=\"from_phone.jpeg\"\r\n"] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:[[NSString stringWithString:@"Content-Type: image/jpeg\r\n"] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:[[NSString stringWithString:@"Content-Transfer-Encoding: binary\r\n\r\n"] dataUsingEncoding:NSASCIIStringEncoding]]; - [postBody appendData:image]; - } - - [postBody appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",stringBoundary] dataUsingEncoding:NSASCIIStringEncoding]]; - - [request setHTTPBody: postBody]; - - returnData = [[NSMutableData alloc] init]; - [NSURLConnection connectionWithRequest:request delegate:self]; -// NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; -} - -- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { - [returnData appendData:data]; -} - --(void)connectionDidFinishLoading:(NSURLConnection *)connection { - [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; - [uploading removeFromSuperview]; - - NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSASCIIStringEncoding]; - - if ([returnString isEqualToString:@"SUCCESS"]) { - subject = nil; - latitude = nil; - longitude = nil; - self.image = nil; - [(InputTableViewController*)self.navigationController.visibleViewController reportUploaded:YES]; - UIAlertView *v = [[UIAlertView alloc] initWithTitle:@"Your report has been received" message:@"Check your email for the next step" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; - [v show]; - [v release]; - } else { - // Pop up alert box with return error(s) - NSArray *errors = [returnString componentsSeparatedByString:@"ERROR:"]; - NSString *errorString = [[NSString alloc] init]; - for (int i=1; i<[errors count]; i++) { - NSString *error = [errors objectAtIndex:i]; - errorString = [errorString stringByAppendingFormat:@"\xE2\x80\xA2 %@", error]; - } - UIAlertView *v = [[UIAlertView alloc] initWithTitle:@"Upload failed" message:errorString delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; - [v show]; - [v release]; - } -} - -@end diff --git a/iphone/FixMyStreet/Classes/InputTableViewController.h b/iphone/FixMyStreet/Classes/InputTableViewController.h deleted file mode 100644 index f902c4017..000000000 --- a/iphone/FixMyStreet/Classes/InputTableViewController.h +++ /dev/null @@ -1,45 +0,0 @@ -// -// InputTableViewController.h -// FixMyStreet -// -// Created by Matthew on 26/09/2008. -// Copyright 2008 UK Citizens Online Democracy. All rights reserved. -// - -#import <UIKit/UIKit.h> -#import "MyCLController.h" - -@interface InputTableViewController : UIViewController <UINavigationControllerDelegate,UIImagePickerControllerDelegate,MyCLControllerDelegate> { - IBOutlet UIImageView* imageView; - IBOutlet UITableView* actionsToDoView; - IBOutlet UIButton* settingsButton; - UIBarButtonItem* backButton; - - // Not sure what I made these for - UITableViewCell* actionTakePhotoCell; - UITableViewCell* actionFetchLocationCell; - UITableViewCell* actionSubjectCell; - - UILabel* subjectLabel; - UILabel* subjectContent; -} - --(void)enableSubmissionButton; --(void)uploadReport; --(void)reportUploaded:(BOOL)success; - --(IBAction)addPhoto:(id) sender; --(IBAction)gotoSettings:(id)sender firstTime:(BOOL)firstTime; --(IBAction)gotoAbout:(id)sender; - -// UIImagePickerControllerDelegate -- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo; -- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker; - --(BOOL)startLocation; - -//MyCLControllerDelegate --(void)newLocationUpdate:(CLLocation *)location; --(void)newLocationError:(NSString *)text; - -@end diff --git a/iphone/FixMyStreet/Classes/InputTableViewController.m b/iphone/FixMyStreet/Classes/InputTableViewController.m deleted file mode 100644 index 7d336e115..000000000 --- a/iphone/FixMyStreet/Classes/InputTableViewController.m +++ /dev/null @@ -1,359 +0,0 @@ -// -// InputTableViewController.m -// FixMyStreet -// -// Created by Matthew on 26/09/2008. -// Copyright 2008 UK Citizens Online Democracy. All rights reserved. -// - -#import "InputTableViewController.h" -#import "SettingsViewController.h" -#import "FixMyStreetAppDelegate.h" -#import "EditSubjectViewController.h" -#import "AboutViewController.h" -#import "Reachability.h" - -@implementation InputTableViewController - -//@synthesize image; -//@synthesize imagCell; -//@synthesize reportSubject; - -- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle { - if (self = [super initWithNibName:nibName bundle:nibBundle]) { - self.title = @"FixMyStreet"; - } - return self; -} - -/* -- (id)initWithStyle:(UITableViewStyle)style { - // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. - if (self = [super initWithStyle:style]) { - } - return self; -} -*/ - -- (void)viewWillAppear:(BOOL)animated { - [self enableSubmissionButton]; -} - -// Implement viewDidLoad to do additional setup after loading the view. -- (void)viewDidLoad { - [super viewDidLoad]; - - settingsButton.frame = CGRectMake(255, 350, 72, 73); - - backButton = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonSystemItemCancel target:nil action:nil]; - self.navigationItem.backBarButtonItem = backButton; - - UIBarButtonItem* rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Report" style:UIBarButtonItemStyleDone target:self action:@selector(uploadReport) ]; - rightBarButtonItem.enabled = NO; - self.navigationItem.rightBarButtonItem = rightBarButtonItem; - [rightBarButtonItem release]; - - // Let's start trying to find our location... - [MyCLController sharedInstance].delegate = self; - [self startLocation]; - - FixMyStreetAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; - if (delegate.image) { - UIImage *newImage = [[UIImage alloc] initWithData:delegate.image]; - imageView.image = newImage; - [newImage release]; - } - -} - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - FixMyStreetAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; - if (delegate.name || delegate.email || delegate.phone) - return 4; - return 3; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return 1; -} - --(void)enableSubmissionButton { - [actionsToDoView reloadData]; - FixMyStreetAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; - if (delegate.image && delegate.latitude && delegate.subject && delegate.subject.length) { - self.navigationItem.rightBarButtonItem.enabled = YES; - } else { - self.navigationItem.rightBarButtonItem.enabled = NO; - } -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - - static NSString *CellIdentifier; - UITableViewCell *cell; - FixMyStreetAppDelegate* delegate = [[UIApplication sharedApplication] delegate]; - - // Possible editing of subject within main view (I think I prefer it as is) - // And possible display of selected image within cell somewhere/somehow (I like how Contacts does it, but haven't - // managed that so far - - if (indexPath.section == 1) { - CellIdentifier = @"CellText"; - cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; - if (cell == nil) { - //CGRect frame = CGRectMake(0, 0, 250, 44); - cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; - //cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; - //UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(1.0, 1.0, 250, 44)]; - //textField.placeholder = @"Subject"; - // [textField addTarget:self action:nil forControlEvents:UIControlEventValueChanged]; - //cell.accessoryView = textField; - //[textField release]; - } - } else { - /* if (indexPath.section == 0) { - CellIdentifier = @"CellImage"; - cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; - if (cell == nil) { - cell = [[[imageCell alloc] initWithFrame:CGRectMake(0, 0, 400, 44) reuseIdentifier:CellIdentifier] autorelease]; - cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; - } - } else { */ - - CellIdentifier = @"Cell"; - cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; - if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; - cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; - } - - } - - if (indexPath.section == 0) { - if (delegate.image) { - cell.accessoryType = UITableViewCellAccessoryCheckmark; - } else { - cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; - } - cell.textLabel.text = @"Take photo"; - actionTakePhotoCell = cell; - } else if (indexPath.section == 2) { - if (delegate.latitude) { - cell.accessoryView = nil; - cell.accessoryType = UITableViewCellAccessoryCheckmark; - } else if ([MyCLController sharedInstance].updating) { - UIActivityIndicatorView* activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; - [activityView startAnimating]; - cell.accessoryView = activityView; - [activityView release]; - } else { - cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; - } - cell.textLabel.text = @"Fetch location"; - actionFetchLocationCell = cell; - } else if (indexPath.section == 1) { - if (delegate.subject && delegate.subject.length) { - if (!subjectLabel) { - subjectLabel = [[UILabel alloc] initWithFrame:CGRectMake(10,0,70,40)]; - subjectLabel.font = [UIFont boldSystemFontOfSize:17]; - subjectLabel.text = @"Subject:"; - [cell.contentView addSubview:subjectLabel]; - } - subjectLabel.hidden = NO; - if (!subjectContent) { - subjectContent = [[UILabel alloc] initWithFrame:CGRectMake(80,0,190,40)]; - subjectContent.font = [UIFont systemFontOfSize:17]; - [cell.contentView addSubview:subjectContent]; - } - cell.textLabel.text = nil; - subjectContent.text = delegate.subject; - subjectContent.hidden = NO; - cell.accessoryType = UITableViewCellAccessoryCheckmark; - } else { - subjectContent.hidden = YES; - subjectLabel.hidden = YES; - cell.textLabel.text = @"Short summary of problem"; - cell.textLabel.textColor = [UIColor grayColor]; - cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; - } - actionSubjectCell = cell; - } else if (indexPath.section == 3) { - if (delegate.name && delegate.name.length && delegate.email && delegate.email.length) { - cell.accessoryType = UITableViewCellAccessoryCheckmark; - } else { - cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; - } - cell.textLabel.text = @"Your details"; - } else { - cell.textLabel.text = @"Eh?"; - } - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (indexPath.section == 0) { - [self addPhoto:nil]; - } else if (indexPath.section == 2) { - if ([self startLocation]) { - UIActivityIndicatorView* activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; - [activityView startAnimating]; - actionFetchLocationCell.accessoryView = activityView; - [activityView release]; - } - } else if (indexPath.section == 1) { - FixMyStreetAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; - EditSubjectViewController* editSubjectViewController = [[EditSubjectViewController alloc] initWithNibName:@"EditSubjectView" bundle:nil]; - [editSubjectViewController setAll:delegate.subject viewTitle:@"Edit subject" placeholder:@"Subject" keyboardType:UIKeyboardTypeDefault capitalisation:UITextAutocapitalizationTypeSentences]; - [self.navigationController pushViewController:editSubjectViewController animated:YES]; - [editSubjectViewController release]; - } else if (indexPath.section == 3) { - [self gotoSettings:nil firstTime:NO]; - } -} - --(IBAction)addPhoto:(id) sender { - BOOL cameraAvailable = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]; - BOOL photosAvailable = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]; - if (!cameraAvailable && !photosAvailable) { - UITableViewCell *cell = [actionsToDoView cellForRowAtIndexPath:0]; // XXX - cell.textLabel.text = @"No photo mechanism available"; - return; - } - UIImagePickerController* picker = [[UIImagePickerController alloc] init]; - if (cameraAvailable) { - picker.sourceType = UIImagePickerControllerSourceTypeCamera; - } else { - picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; - } - picker.delegate = self; - picker.allowsImageEditing = NO; - [self presentModalViewController:picker animated:YES]; -} - -- (void)viewDidAppear:(BOOL)animated { - backButton.title = @"Cancel"; -} - -/* -- (void)viewWillDisappear:(BOOL)animated { -} -*/ -/* -- (void)viewDidDisappear:(BOOL)animated { -} -*/ -/* -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; -} -*/ - -// Check this, I can't remember if you need to release nib things. -- (void)dealloc { - [imageView release]; - [actionTakePhotoCell release]; - [actionFetchLocationCell release]; - [actionSubjectCell release]; - [actionsToDoView release]; - [settingsButton release]; - [backButton release]; - [subjectLabel release]; - [subjectContent release]; - [super dealloc]; -} - - -// UIImagePickerControllerDelegate prototype - -- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)newImage editingInfo:(NSDictionary *)editingInfo { - FixMyStreetAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; - NSData *imageData = UIImageJPEGRepresentation(newImage, 0.8); - delegate.image = imageData; - - imageView.image = newImage; - - [[picker parentViewController] dismissModalViewControllerAnimated:YES]; - [picker release]; -} - -- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { - [[picker parentViewController] dismissModalViewControllerAnimated:YES]; - [picker release]; -} - -// MyCLControllerDelegate and related - --(BOOL)startLocation { - NetworkStatus internetConnectionStatus = [[Reachability sharedReachability] internetConnectionStatus]; - if (internetConnectionStatus == NotReachable) { - UIAlertView *v = [[UIAlertView alloc] initWithTitle:@"Location required" message:@"FixMyStreet needs some sort of connection in order to find your location." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; - [v show]; - [v release]; - return FALSE; - } else { - [[MyCLController sharedInstance] startUpdatingLocation]; - return TRUE; - } -} - --(void)newLocationUpdate:(CLLocation *)location { - //UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hey" message:text delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; - //[alert show]; - //[alert release]; - - FixMyStreetAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; -// delegate.location = location; - delegate.latitude = [NSString stringWithFormat:@"%f", location.coordinate.latitude]; - delegate.longitude = [NSString stringWithFormat:@"%f", location.coordinate.longitude]; - - [self enableSubmissionButton]; -} - --(void)newLocationError:(NSString *)text { - UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Location required" message:text delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; - [alert show]; - [alert release]; - [self enableSubmissionButton]; -} - -// Buttons - -// I realise this flips the navbar too, but can't seem to do it nicely with a container parent, and not really that important! --(IBAction)gotoAbout:(id)sender { - backButton.title = @"Back"; - AboutViewController* aboutViewController = [[AboutViewController alloc] initWithNibName:@"AboutView" bundle:nil]; - [UIView beginAnimations:nil context:NULL]; - [UIView setAnimationDuration: 0.75]; - [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:YES]; - [self.navigationController pushViewController:aboutViewController animated:NO]; - [UIView commitAnimations]; - [aboutViewController release]; -} - --(IBAction)gotoSettings:(id)sender firstTime:(BOOL)firstTime { - backButton.title = @"Done"; - SettingsViewController* settingsViewController = [[SettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; - if (firstTime) - settingsViewController.firstTime = firstTime; - [self.navigationController pushViewController:settingsViewController animated:YES]; - [settingsViewController release]; -} - --(void)uploadReport { - FixMyStreetAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; - if (!delegate.name || !delegate.email) { - [self gotoSettings:nil firstTime:YES]; - } else { - [delegate uploadReport]; - } -} - --(void)reportUploaded:(BOOL)success { - if (success) - imageView.image = nil; - [self enableSubmissionButton]; -} - -@end - diff --git a/iphone/FixMyStreet/Classes/Reachability.h b/iphone/FixMyStreet/Classes/Reachability.h deleted file mode 100755 index 18beaea3e..000000000 --- a/iphone/FixMyStreet/Classes/Reachability.h +++ /dev/null @@ -1,122 +0,0 @@ -/* - -File: Reachability.h -Abstract: SystemConfiguration framework wrapper. - -Version: 1.5 - -Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Inc. -("Apple") in consideration of your agreement to the following terms, and your -use, installation, modification or redistribution of this Apple software -constitutes acceptance of these terms. If you do not agree with these terms, -please do not use, install, modify or redistribute this Apple software. - -In consideration of your agreement to abide by the following terms, and subject -to these terms, Apple grants you a personal, non-exclusive license, under -Apple's copyrights in this original Apple software (the "Apple Software"), to -use, reproduce, modify and redistribute the Apple Software, with or without -modifications, in source and/or binary forms; provided that if you redistribute -the Apple Software in its entirety and without modifications, you must retain -this notice and the following text and disclaimers in all such redistributions -of the Apple Software. -Neither the name, trademarks, service marks or logos of Apple Inc. may be used -to endorse or promote products derived from the Apple Software without specific -prior written permission from Apple. Except as expressly stated in this notice, -no other rights or licenses, express or implied, are granted by Apple herein, -including but not limited to any patent rights that may be infringed by your -derivative works or by other works in which the Apple Software may be -incorporated. - -The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO -WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED -WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN -COMBINATION WITH YOUR PRODUCTS. - -IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR -DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF -CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF -APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Copyright (C) 2008 Apple Inc. All Rights Reserved. - -*/ - -#import <UIKit/UIKit.h> -#import <SystemConfiguration/SystemConfiguration.h> - -@class Reachability; - -@interface Reachability : NSObject { - -@private - BOOL _networkStatusNotificationsEnabled; - - NSString *_hostName; - NSString *_address; - - NSMutableDictionary *_reachabilityQueries; -} - -/* - An enumeration that defines the return values of the network state - of the device. - */ -typedef enum { - NotReachable = 0, - ReachableViaCarrierDataNetwork, - ReachableViaWiFiNetwork -} NetworkStatus; - - -// Set to YES to register for changes in network status. Otherwise reachability queries -// will be handled synchronously. -@property BOOL networkStatusNotificationsEnabled; -// The remote host whose reachability will be queried. -// Either this or 'addressName' must be set. -@property (nonatomic, retain) NSString *hostName; -// The IP address of the remote host whose reachability will be queried. -// Either this or 'hostName' must be set. -@property (nonatomic, retain) NSString *address; -// A cache of ReachabilityQuery objects, which encapsulate a SCNetworkReachabilityRef, a host or address, and a run loop. The keys are host names or addresses. -@property (nonatomic, assign) NSMutableDictionary *reachabilityQueries; - -// This class is intended to be used as a singleton. -+ (Reachability *)sharedReachability; - -// Is self.hostName is not nil, determines its reachability. -// If self.hostName is nil and self.address is not nil, determines the reachability of self.address. -- (NetworkStatus)remoteHostStatus; -// Is the device able to communicate with Internet hosts? If so, through which network interface? -- (NetworkStatus)internetConnectionStatus; -// Is the device able to communicate with hosts on the local WiFi network? (Typically these are Bonjour hosts). -- (NetworkStatus)localWiFiConnectionStatus; - -/* - When reachability change notifications are posted, the callback method 'ReachabilityCallback' is called - and posts a notification that the client application can observe to learn about changes. - */ -static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void *info); - -@end - -@interface ReachabilityQuery : NSObject -{ -@private - SCNetworkReachabilityRef _reachabilityRef; - CFMutableArrayRef _runLoops; - NSString *_hostNameOrAddress; -} -// Keep around each network reachability query object so that we can -// register for updates from those objects. -@property (nonatomic) SCNetworkReachabilityRef reachabilityRef; -@property (nonatomic, retain) NSString *hostNameOrAddress; -@property (nonatomic) CFMutableArrayRef runLoops; - -- (void)scheduleOnRunLoop:(NSRunLoop *)inRunLoop; - -@end - diff --git a/iphone/FixMyStreet/Classes/Reachability.m b/iphone/FixMyStreet/Classes/Reachability.m deleted file mode 100755 index c1f159c55..000000000 --- a/iphone/FixMyStreet/Classes/Reachability.m +++ /dev/null @@ -1,585 +0,0 @@ -/* - -File: Reachability.m -Abstract: SystemConfiguration framework wrapper. - -Version: 1.5 - -Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Inc. -("Apple") in consideration of your agreement to the following terms, and your -use, installation, modification or redistribution of this Apple software -constitutes acceptance of these terms. If you do not agree with these terms, -please do not use, install, modify or redistribute this Apple software. - -In consideration of your agreement to abide by the following terms, and subject -to these terms, Apple grants you a personal, non-exclusive license, under -Apple's copyrights in this original Apple software (the "Apple Software"), to -use, reproduce, modify and redistribute the Apple Software, with or without -modifications, in source and/or binary forms; provided that if you redistribute -the Apple Software in its entirety and without modifications, you must retain -this notice and the following text and disclaimers in all such redistributions -of the Apple Software. -Neither the name, trademarks, service marks or logos of Apple Inc. may be used -to endorse or promote products derived from the Apple Software without specific -prior written permission from Apple. Except as expressly stated in this notice, -no other rights or licenses, express or implied, are granted by Apple herein, -including but not limited to any patent rights that may be infringed by your -derivative works or by other works in which the Apple Software may be -incorporated. - -The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO -WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED -WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN -COMBINATION WITH YOUR PRODUCTS. - -IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR -DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF -CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF -APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Copyright (C) 2008 Apple Inc. All Rights Reserved. - -*/ - -#import <sys/socket.h> -#import <netinet/in.h> -#import <netinet6/in6.h> -#import <arpa/inet.h> -#import <ifaddrs.h> -#include <netdb.h> - -#import "Reachability.h" -#import <SystemConfiguration/SCNetworkReachability.h> - -static NSString *kLinkLocalAddressKey = @"169.254.0.0"; -static NSString *kDefaultRouteKey = @"0.0.0.0"; - -static Reachability *_sharedReachability; - -// A class extension that declares internal methods for this class. -@interface Reachability() -- (BOOL)isAdHocWiFiNetworkAvailableFlags:(SCNetworkReachabilityFlags *)outFlags; -- (BOOL)isNetworkAvailableFlags:(SCNetworkReachabilityFlags *)outFlags; -- (BOOL)isReachableWithoutRequiringConnection:(SCNetworkReachabilityFlags)flags; -- (SCNetworkReachabilityRef)reachabilityRefForHostName:(NSString *)hostName; -- (SCNetworkReachabilityRef)reachabilityRefForAddress:(NSString *)address; -- (BOOL)addressFromString:(NSString *)IPAddress address:(struct sockaddr_in *)outAddress; -- (void)stopListeningForReachabilityChanges; -@end - -@implementation Reachability - -@synthesize networkStatusNotificationsEnabled = _networkStatusNotificationsEnabled; -@synthesize hostName = _hostName; -@synthesize address = _address; -@synthesize reachabilityQueries = _reachabilityQueries; - -+ (Reachability *)sharedReachability -{ - if (!_sharedReachability) { - _sharedReachability = [[Reachability alloc] init]; - // Clients of Reachability will typically call [[Reachability sharedReachability] setHostName:] - // before calling one of the status methods. - _sharedReachability.hostName = nil; - _sharedReachability.address = nil; - _sharedReachability.networkStatusNotificationsEnabled = NO; - _sharedReachability.reachabilityQueries = [[NSMutableDictionary alloc] init]; - } - return _sharedReachability; -} - -- (void) dealloc -{ - [self stopListeningForReachabilityChanges]; - - [_sharedReachability.reachabilityQueries release]; - [_sharedReachability release]; - [super dealloc]; -} - -- (BOOL)isReachableWithoutRequiringConnection:(SCNetworkReachabilityFlags)flags -{ - // kSCNetworkReachabilityFlagsReachable indicates that the specified nodename or address can - // be reached using the current network configuration. - BOOL isReachable = flags & kSCNetworkReachabilityFlagsReachable; - - // This flag indicates that the specified nodename or address can - // be reached using the current network configuration, but a - // connection must first be established. - // - // If the flag is false, we don't have a connection. But because CFNetwork - // automatically attempts to bring up a WWAN connection, if the WWAN reachability - // flag is present, a connection is not required. - BOOL noConnectionRequired = !(flags & kSCNetworkReachabilityFlagsConnectionRequired); - if ((flags & kSCNetworkReachabilityFlagsIsWWAN)) { - noConnectionRequired = YES; - } - - return (isReachable && noConnectionRequired) ? YES : NO; -} - -// Returns whether or not the current host name is reachable with the current network configuration. -- (BOOL)isHostReachable:(NSString *)host -{ - if (!host || ![host length]) { - return NO; - } - - SCNetworkReachabilityFlags flags; - SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL, [host UTF8String]); - BOOL gotFlags = SCNetworkReachabilityGetFlags(reachability, &flags); - - CFRelease(reachability); - - if (!gotFlags) { - return NO; - } - - return [self isReachableWithoutRequiringConnection:flags]; -} - -// This returns YES if the address 169.254.0.0 is reachable without requiring a connection. -- (BOOL)isAdHocWiFiNetworkAvailableFlags:(SCNetworkReachabilityFlags *)outFlags -{ - // Look in the cache of reachability queries for one that matches this query. - ReachabilityQuery *query = [self.reachabilityQueries objectForKey:kLinkLocalAddressKey]; - SCNetworkReachabilityRef adHocWiFiNetworkReachability = query.reachabilityRef; - - // If a cached reachability query was not found, create one. - if (!adHocWiFiNetworkReachability) { - - // Build a sockaddr_in that we can pass to the address reachability query. - struct sockaddr_in sin; - - bzero(&sin, sizeof(sin)); - sin.sin_len = sizeof(sin); - sin.sin_family = AF_INET; - // IN_LINKLOCALNETNUM is defined in <netinet/in.h> as 169.254.0.0 - sin.sin_addr.s_addr = htonl(IN_LINKLOCALNETNUM); - - adHocWiFiNetworkReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&sin); - - query = [[[ReachabilityQuery alloc] init] autorelease]; - query.hostNameOrAddress = kLinkLocalAddressKey; - query.reachabilityRef = adHocWiFiNetworkReachability; - - // Add the reachability query to the cache. - [self.reachabilityQueries setObject:query forKey:kLinkLocalAddressKey]; - } - - // If necessary, register for notifcations for the SCNetworkReachabilityRef on the current run loop. - // If an existing SCNetworkReachabilityRef was found in the cache, we can reuse it and register - // to receive notifications from it in the current run loop, which may be different than the run loop - // that was previously used when registering the SCNetworkReachabilityRef for notifications. - // -scheduleOnRunLoop: will schedule only if network status notifications are enabled in the Reachability instance. - // By default, they are not enabled. - [query scheduleOnRunLoop:[NSRunLoop currentRunLoop]]; - - SCNetworkReachabilityFlags addressReachabilityFlags; - BOOL gotFlags = SCNetworkReachabilityGetFlags(adHocWiFiNetworkReachability, &addressReachabilityFlags); - if (!gotFlags) { - // There was an error getting the reachability flags. - return NO; - } - - // Callers of this method might want to use the reachability flags, so if an 'out' parameter - // was passed in, assign the reachability flags to it. - if (outFlags) { - *outFlags = addressReachabilityFlags; - } - - return [self isReachableWithoutRequiringConnection:addressReachabilityFlags]; -} - -// ReachabilityCallback is registered as the callback for network state changes in startListeningForReachabilityChanges. -static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void *info) -{ - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - // Post a notification to notify the client that the network reachability changed. - [[NSNotificationCenter defaultCenter] postNotificationName:@"kNetworkReachabilityChangedNotification" object:nil]; - - [pool release]; -} - -// Perform a reachability query for the address 0.0.0.0. If that address is reachable without -// requiring a connection, a network interface is available. We'll have to do more work to -// determine which network interface is available. -- (BOOL)isNetworkAvailableFlags:(SCNetworkReachabilityFlags *)outFlags -{ - ReachabilityQuery *query = [self.reachabilityQueries objectForKey:kDefaultRouteKey]; - SCNetworkReachabilityRef defaultRouteReachability = query.reachabilityRef; - - // If a cached reachability query was not found, create one. - if (!defaultRouteReachability) { - - struct sockaddr_in zeroAddress; - bzero(&zeroAddress, sizeof(zeroAddress)); - zeroAddress.sin_len = sizeof(zeroAddress); - zeroAddress.sin_family = AF_INET; - - defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress); - - ReachabilityQuery *query = [[[ReachabilityQuery alloc] init] autorelease]; - query.hostNameOrAddress = kDefaultRouteKey; - query.reachabilityRef = defaultRouteReachability; - - [self.reachabilityQueries setObject:query forKey:kDefaultRouteKey]; - } - - // If necessary, register for notifcations for the SCNetworkReachabilityRef on the current run loop. - // If an existing SCNetworkReachabilityRef was found in the cache, we can reuse it and register - // to receive notifications from it in the current run loop, which may be different than the run loop - // that was previously used when registering the SCNetworkReachabilityRef for notifications. - // -scheduleOnRunLoop: will schedule only if network status notifications are enabled in the Reachability instance. - // By default, they are not enabled. - [query scheduleOnRunLoop:[NSRunLoop currentRunLoop]]; - - SCNetworkReachabilityFlags flags; - BOOL gotFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags); - if (!gotFlags) { - return NO; - } - - BOOL isReachable = [self isReachableWithoutRequiringConnection:flags]; - - // Callers of this method might want to use the reachability flags, so if an 'out' parameter - // was passed in, assign the reachability flags to it. - if (outFlags) { - *outFlags = flags; - } - - return isReachable; -} - -// Be a good citizen and unregister for network state changes when the application terminates. -- (void)stopListeningForReachabilityChanges -{ - // Walk through the cache that holds SCNetworkReachabilityRefs for reachability - // queries to particular hosts or addresses. - NSEnumerator *enumerator = [self.reachabilityQueries objectEnumerator]; - ReachabilityQuery *reachabilityQuery; - - while (reachabilityQuery = [enumerator nextObject]) { - - CFArrayRef runLoops = reachabilityQuery.runLoops; - NSUInteger runLoopCounter, maxRunLoops = CFArrayGetCount(runLoops); - - for (runLoopCounter = 0; runLoopCounter < maxRunLoops; runLoopCounter++) { - CFRunLoopRef nextRunLoop = (CFRunLoopRef)CFArrayGetValueAtIndex(runLoops, runLoopCounter); - - SCNetworkReachabilityUnscheduleFromRunLoop(reachabilityQuery.reachabilityRef, nextRunLoop, kCFRunLoopDefaultMode); - } - - CFArrayRemoveAllValues(reachabilityQuery.runLoops); - } -} - -/* - Create a SCNetworkReachabilityRef for hostName, which lets us determine if hostName - is currently reachable, and lets us register to receive notifications when the - reachability of hostName changes. - */ -- (SCNetworkReachabilityRef)reachabilityRefForHostName:(NSString *)hostName -{ - if (!hostName || ![hostName length]) { - return NULL; - } - - // Look in the cache for an existing SCNetworkReachabilityRef for hostName. - ReachabilityQuery *cachedQuery = [self.reachabilityQueries objectForKey:hostName]; - SCNetworkReachabilityRef reachabilityRefForHostName = cachedQuery.reachabilityRef; - - if (reachabilityRefForHostName) { - return reachabilityRefForHostName; - } - - // Didn't find an existing SCNetworkReachabilityRef for hostName, so create one ... - reachabilityRefForHostName = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, [hostName UTF8String]); - - NSAssert1(reachabilityRefForHostName != NULL, @"Failed to create SCNetworkReachabilityRef for host: %@", hostName); - - ReachabilityQuery *query = [[[ReachabilityQuery alloc] init] autorelease]; - query.hostNameOrAddress = hostName; - query.reachabilityRef = reachabilityRefForHostName; - - // If necessary, register for notifcations for the SCNetworkReachabilityRef on the current run loop. - // If an existing SCNetworkReachabilityRef was found in the cache, we can reuse it and register - // to receive notifications from it in the current run loop, which may be different than the run loop - // that was previously used when registering the SCNetworkReachabilityRef for notifications. - // -scheduleOnRunLoop: will schedule only if network status notifications are enabled in the Reachability instance. - // By default, they are not enabled. - [query scheduleOnRunLoop:[NSRunLoop currentRunLoop]]; - - // ... and add it to the cache. - [self.reachabilityQueries setObject:query forKey:hostName]; - return reachabilityRefForHostName; -} - -/* - Create a SCNetworkReachabilityRef for the IP address in addressString, which lets us determine if - the address is currently reachable, and lets us register to receive notifications when the - reachability of the address changes. - */ -- (SCNetworkReachabilityRef)reachabilityRefForAddress:(NSString *)addressString -{ - if (!addressString || ![addressString length]) { - return NULL; - } - - struct sockaddr_in address; - - BOOL gotAddress = [self addressFromString:addressString address:&address]; - if (!gotAddress) { - // The attempt to convert addressString to a sockaddr_in failed. - NSAssert1(gotAddress != NO, @"Failed to convert an IP address string to a sockaddr_in: %@", addressString); - return NULL; - } - - // Look in the cache for an existing SCNetworkReachabilityRef for addressString. - ReachabilityQuery *cachedQuery = [self.reachabilityQueries objectForKey:addressString]; - SCNetworkReachabilityRef reachabilityRefForAddress = cachedQuery.reachabilityRef; - - if (reachabilityRefForAddress) { - return reachabilityRefForAddress; - } - - // Didn't find an existing SCNetworkReachabilityRef for addressString, so create one. - reachabilityRefForAddress = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (struct sockaddr *)&address); - - NSAssert1(reachabilityRefForAddress != NULL, @"Failed to create SCNetworkReachabilityRef for address: %@", addressString); - - ReachabilityQuery *query = [[[ReachabilityQuery alloc] init] autorelease]; - query.hostNameOrAddress = addressString; - query.reachabilityRef = reachabilityRefForAddress; - - // If necessary, register for notifcations for the SCNetworkReachabilityRef on the current run loop. - // If an existing SCNetworkReachabilityRef was found in the cache, we can reuse it and register - // to receive notifications from it in the current run loop, which may be different than the run loop - // that was previously used when registering the SCNetworkReachabilityRef for notifications. - // -scheduleOnRunLoop: will schedule only if network status notifications are enabled in the Reachability instance. - // By default, they are not enabled. - [query scheduleOnRunLoop:[NSRunLoop currentRunLoop]]; - - // ... and add it to the cache. - [self.reachabilityQueries setObject:query forKey:addressString]; - return reachabilityRefForAddress; -} - -- (NetworkStatus)remoteHostStatus -{ - /* - If the current host name or address is reachable, determine which network interface it is reachable through. - If the host is reachable and the reachability flags include kSCNetworkReachabilityFlagsIsWWAN, it - is reachable through the carrier data network. If the host is reachable and the reachability - flags do not include kSCNetworkReachabilityFlagsIsWWAN, it is reachable through the WiFi network. - */ - - SCNetworkReachabilityRef reachabilityRef = nil; - if (self.hostName) { - reachabilityRef = [self reachabilityRefForHostName:self.hostName]; - - } else if (self.address) { - reachabilityRef = [self reachabilityRefForAddress:self.address]; - - } else { - NSAssert(self.hostName != nil && self.address != nil, @"No hostName or address specified. Cannot determine reachability."); - return NotReachable; - } - - if (!reachabilityRef) { - return NotReachable; - } - - SCNetworkReachabilityFlags reachabilityFlags; - BOOL gotFlags = SCNetworkReachabilityGetFlags(reachabilityRef, &reachabilityFlags); - if (!gotFlags) { - return NotReachable; - } - - BOOL reachable = [self isReachableWithoutRequiringConnection:reachabilityFlags]; - - if (!reachable) { - return NotReachable; - } - if (reachabilityFlags & ReachableViaCarrierDataNetwork) { - return ReachableViaCarrierDataNetwork; - } - - return ReachableViaWiFiNetwork; -} - -- (NetworkStatus)internetConnectionStatus -{ - /* - To determine if the device has an Internet connection, query the address - 0.0.0.0. If it's reachable without requiring a connection, first check - for the kSCNetworkReachabilityFlagsIsDirect flag, which tell us if the connection - is to an ad-hoc WiFi network. If it is not, the device can access the Internet. - The next thing to determine is how the device can access the Internet, which - can either be through the carrier data network (EDGE or other service) or through - a WiFi connection. - - Note: Knowing that the device has an Internet connection is not the same as - knowing if the device can reach a particular host. To know that, use - -[Reachability remoteHostStatus]. - */ - - SCNetworkReachabilityFlags defaultRouteFlags; - BOOL defaultRouteIsAvailable = [self isNetworkAvailableFlags:&defaultRouteFlags]; - if (defaultRouteIsAvailable) { - - if (defaultRouteFlags & kSCNetworkReachabilityFlagsIsDirect) { - - // The connection is to an ad-hoc WiFi network, so Internet access is not available. - return NotReachable; - } - else if (defaultRouteFlags & ReachableViaCarrierDataNetwork) { - return ReachableViaCarrierDataNetwork; - } - - return ReachableViaWiFiNetwork; - } - - return NotReachable; -} - -- (NetworkStatus)localWiFiConnectionStatus -{ - SCNetworkReachabilityFlags selfAssignedAddressFlags; - - /* - To determine if the WiFi connection is to a local ad-hoc network, - check the availability of the address 169.254.x.x. That's an address - in the self-assigned range, and the device will have a self-assigned IP - when it's connected to a ad-hoc WiFi network. So to test if the device - has a self-assigned IP, look for the kSCNetworkReachabilityFlagsIsDirect flag - in the address query. If it's present, we know that the WiFi connection - is to an ad-hoc network. - */ - // This returns YES if the address 169.254.0.0 is reachable without requiring a connection. - BOOL hasLinkLocalNetworkAccess = [self isAdHocWiFiNetworkAvailableFlags:&selfAssignedAddressFlags]; - - if (hasLinkLocalNetworkAccess && (selfAssignedAddressFlags & kSCNetworkReachabilityFlagsIsDirect)) { - return ReachableViaWiFiNetwork; - } - - return NotReachable; -} - -// Convert an IP address from an NSString to a sockaddr_in * that can be used to create -// the reachability request. -- (BOOL)addressFromString:(NSString *)IPAddress address:(struct sockaddr_in *)address -{ - if (!IPAddress || ![IPAddress length]) { - return NO; - } - - memset((char *) address, sizeof(struct sockaddr_in), 0); - address->sin_family = AF_INET; - address->sin_len = sizeof(struct sockaddr_in); - - int conversionResult = inet_aton([IPAddress UTF8String], &address->sin_addr); - if (conversionResult == 0) { - NSAssert1(conversionResult != 1, @"Failed to convert the IP address string into a sockaddr_in: %@", IPAddress); - return NO; - } - - return YES; -} - -@end - -@interface ReachabilityQuery () -- (CFRunLoopRef)startListeningForReachabilityChanges:(SCNetworkReachabilityRef)reachability onRunLoop:(CFRunLoopRef)runLoop; -@end - -@implementation ReachabilityQuery - -@synthesize reachabilityRef = _reachabilityRef; -@synthesize runLoops = _runLoops; -@synthesize hostNameOrAddress = _hostNameOrAddress; - -- (id)init -{ - self = [super init]; - if (self != nil) { - self.runLoops = CFArrayCreateMutable(kCFAllocatorDefault, 0, NULL); - } - return self; -} - -- (void)dealloc -{ - CFRelease(self.runLoops); - [super dealloc]; -} - -- (BOOL)isScheduledOnRunLoop:(CFRunLoopRef)runLoop -{ - NSUInteger runLoopCounter, maxRunLoops = CFArrayGetCount(self.runLoops); - - for (runLoopCounter = 0; runLoopCounter < maxRunLoops; runLoopCounter++) { - CFRunLoopRef nextRunLoop = (CFRunLoopRef)CFArrayGetValueAtIndex(self.runLoops, runLoopCounter); - - if (nextRunLoop == runLoop) { - return YES; - } - } - - return NO; -} - -- (void)scheduleOnRunLoop:(NSRunLoop *)inRunLoop -{ - // Only register for network state changes if the client has specifically enabled them. - if ([[Reachability sharedReachability] networkStatusNotificationsEnabled] == NO) { - return; - } - - if (!inRunLoop) { - return; - } - - CFRunLoopRef runLoop = [inRunLoop getCFRunLoop]; - - // Notifications of status changes for each reachability query can be scheduled on multiple run loops. - // To support that, register for notifications for each runLoop. - // -isScheduledOnRunLoop: iterates over all of the run loops that have previously been used - // to register for notifications. If one is found that matches the passed in runLoop argument, there's - // no need to register for notifications again. If one is not found, register for notifications - // using the current runLoop. - if (![self isScheduledOnRunLoop:runLoop]) { - - CFRunLoopRef notificationRunLoop = [self startListeningForReachabilityChanges:self.reachabilityRef onRunLoop:runLoop]; - if (notificationRunLoop) { - CFArrayAppendValue(self.runLoops, notificationRunLoop); - } - } -} - -// Register to receive changes to the 'reachability' query so that we can update the -// user interface when the network state changes. -- (CFRunLoopRef)startListeningForReachabilityChanges:(SCNetworkReachabilityRef)reachability onRunLoop:(CFRunLoopRef)runLoop -{ - if (!reachability) { - return NULL; - } - - if (!runLoop) { - return NULL; - } - - SCNetworkReachabilityContext context = {0, self, NULL, NULL, NULL}; - SCNetworkReachabilitySetCallback(reachability, ReachabilityCallback, &context); - SCNetworkReachabilityScheduleWithRunLoop(reachability, runLoop, kCFRunLoopDefaultMode); - - return runLoop; -} - - -@end diff --git a/iphone/FixMyStreet/Classes/Report.h b/iphone/FixMyStreet/Classes/Report.h deleted file mode 100644 index 2e7b153cb..000000000 --- a/iphone/FixMyStreet/Classes/Report.h +++ /dev/null @@ -1,14 +0,0 @@ -// -// Report.h -// FixMyStreet -// -// Created by Matthew on 29/09/2008. -// Copyright 2008 UK Citizens Online Democracy. All rights reserved. -// - -#import <UIKit/UIKit.h> -#import <CoreLocation/CoreLocation.h> - -@interface Report : NSObject { -} -@end diff --git a/iphone/FixMyStreet/Classes/Report.m b/iphone/FixMyStreet/Classes/Report.m deleted file mode 100644 index afd71ede4..000000000 --- a/iphone/FixMyStreet/Classes/Report.m +++ /dev/null @@ -1,64 +0,0 @@ -// -// Report.m -// FixMyStreet -// -// Created by Matthew on 29/09/2008. -// Copyright 2008 UK Citizens Online Democracy. All rights reserved. -// - -/* -#import "Report.h" - -static Report *sharedReport = nil; - -@implementation Report - -@synthesize image, location, subject; - --(void)uploadReport { -} - -// See "Creating a Singleton Instance" in the Cocoa Fundamentals Guide for more info - -+ (Report *)sharedInstance { - @synchronized(self) { - if (sharedReport == nil) { - [[self alloc] init]; // assignment not done here - } - } - return sharedReport; -} - -+ (id)allocWithZone:(NSZone *)zone { - @synchronized(self) { - if (sharedReport == nil) { - sharedReport = [super allocWithZone:zone]; - return sharedReport; // assignment and return on first allocation - } - } - return nil; // on subsequent allocation attempts return nil -} - -- (id)copyWithZone:(NSZone *)zone -{ - return self; -} - -- (id)retain { - return self; -} - -- (unsigned)retainCount { - return UINT_MAX; // denotes an object that cannot be released -} - -- (void)release { - //do nothing -} - -- (id)autorelease { - return self; -} - -@end -*/ diff --git a/iphone/FixMyStreet/Classes/SettingsViewController.h b/iphone/FixMyStreet/Classes/SettingsViewController.h deleted file mode 100644 index 1030129f9..000000000 --- a/iphone/FixMyStreet/Classes/SettingsViewController.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// SettingsViewController.h -// FixMyStreet -// -// Created by Matthew on 20/10/2008. -// Copyright 2008 UK Citizens Online Democracy. All rights reserved. -// - -#import <UIKit/UIKit.h> - -@interface SettingsViewController : UITableViewController { - UILabel *nameLabel; - UILabel *nameCurrent; - UILabel *emailLabel; - UILabel *emailCurrent; - UILabel *phoneLabel; - UILabel *phoneCurrent; - - BOOL firstTime; -} - -@property (nonatomic, assign) BOOL firstTime; - -@end diff --git a/iphone/FixMyStreet/Classes/SettingsViewController.m b/iphone/FixMyStreet/Classes/SettingsViewController.m deleted file mode 100644 index c352f362a..000000000 --- a/iphone/FixMyStreet/Classes/SettingsViewController.m +++ /dev/null @@ -1,214 +0,0 @@ -// -// SettingsViewController.m -// FixMyStreet -// -// Created by Matthew on 20/10/2008. -// Copyright 2008 UK Citizens Online Democracy. All rights reserved. -// - -#import "SettingsViewController.h" -#import "FixMyStreetAppDelegate.h" -#import "EditSubjectViewController.h" - -@implementation SettingsViewController - -@synthesize firstTime; - -/* -- (id)initWithStyle:(UITableViewStyle)style { - // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. - if (self = [super initWithStyle:style]) { - } - return self; -} -*/ - -// Implement viewDidLoad to do additional setup after loading the view. -- (void)viewDidLoad { - [super viewDidLoad]; - self.title = @"Your details"; - self.tableView.sectionHeaderHeight = 20.0; - self.tableView.sectionFooterHeight = 0.0; - self.tableView.scrollEnabled = NO; - - UIBarButtonItem* backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonSystemItemCancel target:nil action:nil]; - self.navigationItem.backBarButtonItem = backBarButtonItem; - [backBarButtonItem release]; - -} - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - if (self.firstTime) - return 4; - return 3; -} - -- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { - return nil; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.section == 3) { - return 54.0; - } - return 44.0; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - - if (indexPath.section == 3) { - static NSString *CellIdentifier = @"InfoCell"; - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; - if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; - UITextView *blurb = [[UITextView alloc] initWithFrame:CGRectMake(10, 0, 280, 44)]; - blurb.font = [UIFont italicSystemFontOfSize:14]; - blurb.textAlignment = UITextAlignmentCenter; - blurb.editable = NO; - blurb.text = @"Please fill in your details, and\nwe'll remember them for next time"; - [cell.contentView addSubview:blurb]; - [blurb release]; - } - return cell; - } - - static NSString *CellIdentifier = @"Cell"; - FixMyStreetAppDelegate* delegate = [[UIApplication sharedApplication] delegate]; - - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; - if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; - cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; - } - - NSString *text, *placeholder; - UILabel *label, *current; - if (indexPath.section == 0) { - text = delegate.name; - if (!nameLabel) { - nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(10,0,70,40)]; - nameLabel.font = [UIFont boldSystemFontOfSize:17]; - nameLabel.text = @"Name:"; - [cell.contentView addSubview:nameLabel]; - } - label = nameLabel; - if (!nameCurrent) { - nameCurrent = [[UILabel alloc] initWithFrame:CGRectMake(80,0,190,40)]; - nameCurrent.font = [UIFont systemFontOfSize:17]; - [cell.contentView addSubview:nameCurrent]; - } - current = nameCurrent; - placeholder = @"Your name"; - } else if (indexPath.section == 1) { - text = delegate.email; - if (!emailLabel) { - emailLabel = [[UILabel alloc] initWithFrame:CGRectMake(10,0,70,40)]; - emailLabel.font = [UIFont boldSystemFontOfSize:17]; - emailLabel.text = @"Email:"; - [cell.contentView addSubview:emailLabel]; - } - label = emailLabel; - if (!emailCurrent) { - emailCurrent = [[UILabel alloc] initWithFrame:CGRectMake(80,0,190,40)]; - emailCurrent.font = [UIFont systemFontOfSize:17]; - [cell.contentView addSubview:emailCurrent]; - } - current = emailCurrent; - placeholder = @"Your email"; - } else if (indexPath.section == 2) { - text = delegate.phone; - if (!phoneLabel) { - phoneLabel = [[UILabel alloc] initWithFrame:CGRectMake(10,0,70,40)]; - phoneLabel.font = [UIFont boldSystemFontOfSize:17]; - phoneLabel.text = @"Phone:"; - [cell.contentView addSubview:phoneLabel]; - } - label = phoneLabel; - if (!phoneCurrent) { - phoneCurrent = [[UILabel alloc] initWithFrame:CGRectMake(80,0,190,40)]; - phoneCurrent.font = [UIFont systemFontOfSize:17]; - [cell.contentView addSubview:phoneCurrent]; - } - current = phoneCurrent; - placeholder = @"Your phone (optional)"; - } - - if (text) { - label.hidden = NO; - cell.textLabel.text = nil; - current.text = text; - current.hidden = NO; - // cell.accessoryType = UITableViewCellAccessoryCheckmark; - } else { - label.hidden = YES; - current.hidden = YES; - cell.textLabel.text = placeholder; - cell.textLabel.textColor = [UIColor grayColor]; - // cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; - } - - return cell; -} - - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (indexPath.section == 3) { - return; - } - - FixMyStreetAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; - EditSubjectViewController* editSubjectViewController = [[EditSubjectViewController alloc] initWithStyle:UITableViewStyleGrouped]; - if (indexPath.section == 0) { - [editSubjectViewController setAll:delegate.name viewTitle:@"Edit name" placeholder:@"Your name" keyboardType:UIKeyboardTypeDefault capitalisation:UITextAutocapitalizationTypeWords]; - } else if (indexPath.section == 1) { - [editSubjectViewController setAll:delegate.email viewTitle:@"Edit email" placeholder:@"Your email" keyboardType:UIKeyboardTypeEmailAddress capitalisation:UITextAutocapitalizationTypeNone]; - } else if (indexPath.section == 2) { - [editSubjectViewController setAll:delegate.phone viewTitle:@"Edit phone" placeholder:@"Your phone number" keyboardType:UIKeyboardTypeNumbersAndPunctuation capitalisation:UITextAutocapitalizationTypeNone]; - } - - [self.navigationController pushViewController:editSubjectViewController animated:YES]; - [editSubjectViewController release]; -} - -- (void)viewWillAppear:(BOOL)animated { - [self.tableView reloadData]; -// [super viewWillAppear:animated]; -} - -/* -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; -} -*/ -/* -- (void)viewWillDisappear:(BOOL)animated { -} -*/ -/* -- (void)viewDidDisappear:(BOOL)animated { -} -*/ -/* -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; -} -*/ - -- (void)dealloc { - [nameLabel release]; - [emailLabel release]; - [phoneLabel release]; - [nameCurrent release]; - [emailCurrent release]; - [phoneCurrent release]; - [super dealloc]; -} - - -@end - diff --git a/iphone/FixMyStreet/Classes/imageCell.h b/iphone/FixMyStreet/Classes/imageCell.h deleted file mode 100644 index 585ca7da1..000000000 --- a/iphone/FixMyStreet/Classes/imageCell.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// imageCell.h -// FixMyStreet -// -// Created by Matthew on 29/09/2008. -// Copyright 2008 UK Citizens Online Democracy. All rights reserved. -// - -#import <UIKit/UIKit.h> - -@interface imageCell : UITableViewCell { - UILabel* labelView; - UIImageView* imageView; -} - -@property (nonatomic, retain) UIImageView* imageView; -@property (nonatomic, retain) UILabel* labelView; - --(void)setData:(UIImage *)newImage; - -@end diff --git a/iphone/FixMyStreet/Classes/imageCell.m b/iphone/FixMyStreet/Classes/imageCell.m deleted file mode 100644 index 9b295bdfb..000000000 --- a/iphone/FixMyStreet/Classes/imageCell.m +++ /dev/null @@ -1,72 +0,0 @@ -// -// imageCell.m -// FixMyStreet -// -// Created by Matthew on 29/09/2008. -// Copyright 2008 UK Citizens Online Democracy. All rights reserved. -// - -#import "imageCell.h" - - -@implementation imageCell - -@synthesize imageView; -@synthesize labelView; - -- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) { - - UIFont *font = [UIFont boldSystemFontOfSize:17.0]; - UILabel *newLabel = [[UILabel alloc] initWithFrame:CGRectZero]; - newLabel.backgroundColor = [UIColor clearColor]; - //newLabel.backgroundColor = [UIColor whiteColor]; - newLabel.opaque = YES; - newLabel.textColor = [UIColor blackColor]; - newLabel.text = @"Take photo"; - newLabel.highlightedTextColor = [UIColor whiteColor]; - newLabel.font = font; - newLabel.textAlignment = UITextAlignmentLeft; // default - self.labelView = newLabel; - [self.contentView addSubview:newLabel]; - [newLabel release]; - self.imageView = [[UIImageView alloc] initWithFrame:CGRectZero]; - [self.contentView addSubview:self.imageView]; - //[self.imageView release]; - - } - return self; -} - --(void)setData:(UIImage *)newImage { - //CGSize imageSize = newImage.size; - //float w = 100.0 / imageSize.width; - //imageView.frame = CGRectMake(150,5,100,imageSize.height * w); - //CGRect contentRect = self.contentView.bounds; - //contentRect.size = CGSizeMake(contentRect.size.width, imageSize.height*w); - imageView.image = newImage; - //self.contentView.bounds = contentRect; -} - --(void)layoutSubviews { - [super layoutSubviews]; - if (imageView.image) { - CGSize imageSize = imageView.image.size; - float w = 100.0 / imageSize.width; - imageView.frame = CGRectMake(10,0,100,imageSize.height * w); - labelView.frame = CGRectMake(120, imageSize.height * w / 2, 200, 20); - CGRect contentRect = self.contentView.bounds; - contentRect.size = CGSizeMake(contentRect.size.width, imageSize.height*w); - self.contentView.bounds = contentRect; - } else { - labelView.frame = CGRectMake(10, 0, 200, 44); - } -} - -- (void)dealloc { - [imageView dealloc]; - [labelView dealloc]; - [super dealloc]; -} - -@end diff --git a/iphone/FixMyStreet/Classes/mysociety.png b/iphone/FixMyStreet/Classes/mysociety.png Binary files differdeleted file mode 100644 index 8a9280c16..000000000 --- a/iphone/FixMyStreet/Classes/mysociety.png +++ /dev/null diff --git a/iphone/FixMyStreet/EditSubjectView.xib b/iphone/FixMyStreet/EditSubjectView.xib deleted file mode 100644 index a3c99e9e3..000000000 --- a/iphone/FixMyStreet/EditSubjectView.xib +++ /dev/null @@ -1,169 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.02"> - <data> - <int key="IBDocument.SystemTarget">528</int> - <string key="IBDocument.SystemVersion">9F33</string> - <string key="IBDocument.InterfaceBuilderVersion">672</string> - <string key="IBDocument.AppKitVersion">949.34</string> - <string key="IBDocument.HIToolboxVersion">352.00</string> - <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSArray" key="IBDocument.PluginDependencies"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - </object> - <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBProxyObject" id="372490531"> - <string key="IBProxiedObjectIdentifier">IBFilesOwner</string> - </object> - <object class="IBProxyObject" id="711762367"> - <string key="IBProxiedObjectIdentifier">IBFirstResponder</string> - </object> - <object class="IBUITableView" id="219159568"> - <nil key="NSNextResponder"/> - <int key="NSvFlags">274</int> - <string key="NSFrameSize">{320, 480}</string> - <bool key="IBUIOpaque">NO</bool> - <bool key="IBUIClipsSubviews">YES</bool> - <bool key="IBUIClearsContextBeforeDrawing">NO</bool> - <bool key="IBUIBouncesZoom">NO</bool> - <int key="IBUIStyle">1</int> - <int key="IBUISeparatorStyle">1</int> - <int key="IBUISectionIndexMinimumDisplayRowCount">0</int> - <bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool> - <float key="IBUIRowHeight">4.400000e+01</float> - <float key="IBUISectionHeaderHeight">2.700000e+01</float> - <float key="IBUISectionFooterHeight">2.700000e+01</float> - </object> - </object> - <object class="IBObjectContainer" key="IBDocument.Objects"> - <object class="NSMutableArray" key="connectionRecords"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">delegate</string> - <reference key="source" ref="219159568"/> - <reference key="destination" ref="372490531"/> - </object> - <int key="connectionID">8</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">dataSource</string> - <reference key="source" ref="219159568"/> - <reference key="destination" ref="372490531"/> - </object> - <int key="connectionID">9</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">view</string> - <reference key="source" ref="372490531"/> - <reference key="destination" ref="219159568"/> - </object> - <int key="connectionID">10</int> - </object> - </object> - <object class="IBMutableOrderedSet" key="objectRecords"> - <object class="NSArray" key="orderedObjects"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBObjectRecord"> - <int key="objectID">0</int> - <object class="NSArray" key="object" id="360949347"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <reference key="children" ref="1000"/> - <nil key="parent"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">-1</int> - <reference key="object" ref="372490531"/> - <reference key="parent" ref="360949347"/> - <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">-2</int> - <reference key="object" ref="711762367"/> - <reference key="parent" ref="360949347"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">3</int> - <reference key="object" ref="219159568"/> - <reference key="parent" ref="360949347"/> - </object> - </object> - </object> - <object class="NSMutableDictionary" key="flattenedProperties"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMutableArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>-1.CustomClassName</string> - <string>-2.CustomClassName</string> - <string>3.IBPluginDependency</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>EditSubjectViewController</string> - <string>UIResponder</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - </object> - </object> - <object class="NSMutableDictionary" key="unlocalizedProperties"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <nil key="activeLocalization"/> - <object class="NSMutableDictionary" key="localizations"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <nil key="sourceID"/> - <int key="maxID">10</int> - </object> - <object class="IBClassDescriber" key="IBDocument.Classes"> - <object class="NSMutableArray" key="referencedPartialClassDescriptions"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBPartialClassDescription"> - <string key="className">EditSubjectViewController</string> - <string key="superclassName">UIViewController</string> - <object class="NSMutableDictionary" key="actions"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMutableArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>cancel:</string> - <string>save:</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>id</string> - <string>id</string> - </object> - </object> - <object class="NSMutableDictionary" key="outlets"> - <string key="NS.key.0">summaryTextField</string> - <string key="NS.object.0">UITextField</string> - </object> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBProjectSource</string> - <string key="minorKey">Classes/EditSubjectViewController.h</string> - </object> - </object> - </object> - </object> - <int key="IBDocument.localizationMode">0</int> - <string key="IBDocument.LastKnownRelativeProjectPath">FixMyStreet.xcodeproj</string> - <int key="IBDocument.defaultPropertyAccessControl">3</int> - </data> -</archive> diff --git a/iphone/FixMyStreet/Entitlements.plist b/iphone/FixMyStreet/Entitlements.plist deleted file mode 100644 index ce373e19b..000000000 --- a/iphone/FixMyStreet/Entitlements.plist +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>get-task-allow</key> - <false/> -</dict> -</plist> diff --git a/iphone/FixMyStreet/FixMyStreet.xcodeproj/matthew.mode1v3 b/iphone/FixMyStreet/FixMyStreet.xcodeproj/matthew.mode1v3 deleted file mode 100644 index c982a08c8..000000000 --- a/iphone/FixMyStreet/FixMyStreet.xcodeproj/matthew.mode1v3 +++ /dev/null @@ -1,1475 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>ActivePerspectiveName</key> - <string>Project</string> - <key>AllowedModules</key> - <array> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXSmartGroupTreeModule</string> - <key>Name</key> - <string>Groups and Files Outline View</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXNavigatorGroup</string> - <key>Name</key> - <string>Editor</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>XCTaskListModule</string> - <key>Name</key> - <string>Task List</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>XCDetailModule</string> - <key>Name</key> - <string>File and Smart Group Detail Viewer</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>1</string> - <key>Module</key> - <string>PBXBuildResultsModule</string> - <key>Name</key> - <string>Detailed Build Results Viewer</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>1</string> - <key>Module</key> - <string>PBXProjectFindModule</string> - <key>Name</key> - <string>Project Batch Find Tool</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>XCProjectFormatConflictsModule</string> - <key>Name</key> - <string>Project Format Conflicts List</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXBookmarksModule</string> - <key>Name</key> - <string>Bookmarks Tool</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXClassBrowserModule</string> - <key>Name</key> - <string>Class Browser</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXCVSModule</string> - <key>Name</key> - <string>Source Code Control Tool</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXDebugBreakpointsModule</string> - <key>Name</key> - <string>Debug Breakpoints Tool</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>XCDockableInspector</string> - <key>Name</key> - <string>Inspector</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXOpenQuicklyModule</string> - <key>Name</key> - <string>Open Quickly Tool</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>1</string> - <key>Module</key> - <string>PBXDebugSessionModule</string> - <key>Name</key> - <string>Debugger</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>1</string> - <key>Module</key> - <string>PBXDebugCLIModule</string> - <key>Name</key> - <string>Debug Console</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>XCSnapshotModule</string> - <key>Name</key> - <string>Snapshots Tool</string> - </dict> - </array> - <key>BundlePath</key> - <string>/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources</string> - <key>Description</key> - <string>DefaultDescriptionKey</string> - <key>DockingSystemVisible</key> - <false/> - <key>Extension</key> - <string>mode1v3</string> - <key>FavBarConfig</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>3477106E0E8BD7BA0051DFFD</string> - <key>XCBarModuleItemNames</key> - <dict/> - <key>XCBarModuleItems</key> - <array/> - </dict> - <key>FirstTimeWindowDisplayed</key> - <false/> - <key>Identifier</key> - <string>com.apple.perspectives.project.mode1v3</string> - <key>MajorVersion</key> - <integer>33</integer> - <key>MinorVersion</key> - <integer>0</integer> - <key>Name</key> - <string>Default</string> - <key>Notifications</key> - <array/> - <key>OpenEditors</key> - <array/> - <key>PerspectiveWidths</key> - <array> - <integer>-1</integer> - <integer>-1</integer> - </array> - <key>Perspectives</key> - <array> - <dict> - <key>ChosenToolbarItems</key> - <array> - <string>active-combo-popup</string> - <string>action</string> - <string>NSToolbarFlexibleSpaceItem</string> - <string>build-and-go</string> - <string>com.apple.ide.PBXToolbarStopButton</string> - <string>get-info</string> - <string>NSToolbarFlexibleSpaceItem</string> - <string>com.apple.pbx.toolbar.searchfield</string> - </array> - <key>ControllerClassBaseName</key> - <string></string> - <key>IconName</key> - <string>WindowOfProjectWithEditor</string> - <key>Identifier</key> - <string>perspective.project</string> - <key>IsVertical</key> - <false/> - <key>Layout</key> - <array> - <dict> - <key>BecomeActive</key> - <true/> - <key>ContentConfiguration</key> - <dict> - <key>PBXBottomSmartGroupGIDs</key> - <array> - <string>1C37FBAC04509CD000000102</string> - <string>1C37FAAC04509CD000000102</string> - <string>1C08E77C0454961000C914BD</string> - <string>1C37FABC05509CD000000102</string> - <string>1C37FABC05539CD112110102</string> - <string>E2644B35053B69B200211256</string> - <string>1C37FABC04509CD000100104</string> - <string>1CC0EA4004350EF90044410B</string> - <string>1CC0EA4004350EF90041110B</string> - </array> - <key>PBXProjectModuleGUID</key> - <string>1CE0B1FE06471DED0097A5F4</string> - <key>PBXProjectModuleLabel</key> - <string>Files</string> - <key>PBXProjectStructureProvided</key> - <string>yes</string> - <key>PBXSmartGroupTreeModuleColumnData</key> - <dict> - <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> - <array> - <real>22</real> - <real>221</real> - </array> - <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> - <array> - <string>SCMStatusColumn</string> - <string>MainColumn</string> - </array> - </dict> - <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> - <dict> - <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> - <array> - <string>29B97314FDCFA39411CA2CEA</string> - <string>080E96DDFE201D6D7F000001</string> - <string>342F98AD0E951731006935E9</string> - <string>29B97317FDCFA39411CA2CEA</string> - <string>19C28FACFE9D520D11CA2CBB</string> - <string>1C37FBAC04509CD000000102</string> - <string>E2644B35053B69B200211256</string> - </array> - <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> - <array> - <array> - <integer>44</integer> - <integer>42</integer> - </array> - </array> - <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {243, 939}}</string> - </dict> - <key>PBXTopSmartGroupGIDs</key> - <array/> - <key>XCIncludePerspectivesSwitch</key> - <true/> - <key>XCSharingToken</key> - <string>com.apple.Xcode.GFSharingToken</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {260, 957}}</string> - <key>GroupTreeTableConfiguration</key> - <array> - <string>SCMStatusColumn</string> - <real>22</real> - <string>MainColumn</string> - <real>221</real> - </array> - <key>RubberWindowFrame</key> - <string>41 180 1555 998 0 0 1920 1178 </string> - </dict> - <key>Module</key> - <string>PBXSmartGroupTreeModule</string> - <key>Proportion</key> - <string>260pt</string> - </dict> - <dict> - <key>Dock</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CE0B20306471E060097A5F4</string> - <key>PBXProjectModuleLabel</key> - <string>InputTableViewController.h</string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CE0B20406471E060097A5F4</string> - <key>PBXProjectModuleLabel</key> - <string>InputTableViewController.h</string> - <key>_historyCapacity</key> - <integer>0</integer> - <key>bookmark</key> - <string>341D130A0F01B4650095C69B</string> - <key>history</key> - <array> - <string>34865A1D0EE7F0B000716A66</string> - <string>34865A630EE7FB7600716A66</string> - <string>34865AE60EE8002400716A66</string> - <string>341D12D30F01B1CC0095C69B</string> - <string>341D12D40F01B1CC0095C69B</string> - <string>341D12D60F01B1CC0095C69B</string> - <string>341D12E80F01B2820095C69B</string> - <string>341D13020F01B4650095C69B</string> - <string>341D13030F01B4650095C69B</string> - <string>341D13040F01B4650095C69B</string> - <string>341D13050F01B4650095C69B</string> - </array> - <key>prevStack</key> - <array> - <string>34865A230EE7F0B000716A66</string> - <string>34865A260EE7F0B000716A66</string> - <string>34865A2A0EE7F0B000716A66</string> - <string>34865A2B0EE7F0B000716A66</string> - <string>34865A2F0EE7F0B000716A66</string> - <string>34865A5A0EE7F29C00716A66</string> - <string>34865A680EE7FB7600716A66</string> - <string>341D12940F01A5D90095C69B</string> - <string>341D12950F01A5D90095C69B</string> - <string>341D12960F01A5D90095C69B</string> - <string>341D12970F01A5D90095C69B</string> - <string>341D12980F01A5D90095C69B</string> - <string>341D12990F01A5D90095C69B</string> - <string>341D129A0F01A5D90095C69B</string> - <string>341D129B0F01A5D90095C69B</string> - <string>341D12BA0F01A9420095C69B</string> - <string>341D12BB0F01A9420095C69B</string> - <string>341D12BC0F01A9420095C69B</string> - <string>341D12D80F01B1CC0095C69B</string> - <string>341D12D90F01B1CC0095C69B</string> - <string>341D12DA0F01B1CC0095C69B</string> - <string>341D12DB0F01B1CC0095C69B</string> - <string>341D12DC0F01B1CC0095C69B</string> - <string>341D12DD0F01B1CC0095C69B</string> - <string>341D12DE0F01B1CC0095C69B</string> - <string>341D12DF0F01B1CC0095C69B</string> - <string>341D12E00F01B1CC0095C69B</string> - <string>341D12E10F01B1CC0095C69B</string> - <string>341D12E20F01B1CC0095C69B</string> - <string>341D12E30F01B1CC0095C69B</string> - <string>341D12E40F01B1CC0095C69B</string> - <string>341D12E50F01B1CC0095C69B</string> - <string>341D12EA0F01B2820095C69B</string> - <string>341D12EB0F01B2820095C69B</string> - <string>341D12EC0F01B2820095C69B</string> - <string>341D12ED0F01B2820095C69B</string> - <string>341D13060F01B4650095C69B</string> - <string>341D13070F01B4650095C69B</string> - <string>341D13080F01B4650095C69B</string> - <string>341D13090F01B4650095C69B</string> - </array> - </dict> - <key>SplitCount</key> - <string>1</string> - </dict> - <key>StatusBarVisibility</key> - <true/> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {1290, 802}}</string> - <key>RubberWindowFrame</key> - <string>41 180 1555 998 0 0 1920 1178 </string> - </dict> - <key>Module</key> - <string>PBXNavigatorGroup</string> - <key>Proportion</key> - <string>802pt</string> - </dict> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CE0B20506471E060097A5F4</string> - <key>PBXProjectModuleLabel</key> - <string>Detail</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 807}, {1290, 150}}</string> - <key>RubberWindowFrame</key> - <string>41 180 1555 998 0 0 1920 1178 </string> - </dict> - <key>Module</key> - <string>XCDetailModule</string> - <key>Proportion</key> - <string>150pt</string> - </dict> - </array> - <key>Proportion</key> - <string>1290pt</string> - </dict> - </array> - <key>Name</key> - <string>Project</string> - <key>ServiceClasses</key> - <array> - <string>XCModuleDock</string> - <string>PBXSmartGroupTreeModule</string> - <string>XCModuleDock</string> - <string>PBXNavigatorGroup</string> - <string>XCDetailModule</string> - </array> - <key>TableOfContents</key> - <array> - <string>341D12810F01A1C70095C69B</string> - <string>1CE0B1FE06471DED0097A5F4</string> - <string>341D12820F01A1C70095C69B</string> - <string>1CE0B20306471E060097A5F4</string> - <string>1CE0B20506471E060097A5F4</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.defaultV3</string> - </dict> - <dict> - <key>ControllerClassBaseName</key> - <string></string> - <key>IconName</key> - <string>WindowOfProject</string> - <key>Identifier</key> - <string>perspective.morph</string> - <key>IsVertical</key> - <integer>0</integer> - <key>Layout</key> - <array> - <dict> - <key>BecomeActive</key> - <integer>1</integer> - <key>ContentConfiguration</key> - <dict> - <key>PBXBottomSmartGroupGIDs</key> - <array> - <string>1C37FBAC04509CD000000102</string> - <string>1C37FAAC04509CD000000102</string> - <string>1C08E77C0454961000C914BD</string> - <string>1C37FABC05509CD000000102</string> - <string>1C37FABC05539CD112110102</string> - <string>E2644B35053B69B200211256</string> - <string>1C37FABC04509CD000100104</string> - <string>1CC0EA4004350EF90044410B</string> - <string>1CC0EA4004350EF90041110B</string> - </array> - <key>PBXProjectModuleGUID</key> - <string>11E0B1FE06471DED0097A5F4</string> - <key>PBXProjectModuleLabel</key> - <string>Files</string> - <key>PBXProjectStructureProvided</key> - <string>yes</string> - <key>PBXSmartGroupTreeModuleColumnData</key> - <dict> - <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> - <array> - <real>186</real> - </array> - <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> - <array> - <string>MainColumn</string> - </array> - </dict> - <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> - <dict> - <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> - <array> - <string>29B97314FDCFA39411CA2CEA</string> - <string>1C37FABC05509CD000000102</string> - </array> - <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> - <array> - <array> - <integer>0</integer> - </array> - </array> - <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {186, 337}}</string> - </dict> - <key>PBXTopSmartGroupGIDs</key> - <array/> - <key>XCIncludePerspectivesSwitch</key> - <integer>1</integer> - <key>XCSharingToken</key> - <string>com.apple.Xcode.GFSharingToken</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {203, 355}}</string> - <key>GroupTreeTableConfiguration</key> - <array> - <string>MainColumn</string> - <real>186</real> - </array> - <key>RubberWindowFrame</key> - <string>373 269 690 397 0 0 1440 878 </string> - </dict> - <key>Module</key> - <string>PBXSmartGroupTreeModule</string> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Name</key> - <string>Morph</string> - <key>PreferredWidth</key> - <integer>300</integer> - <key>ServiceClasses</key> - <array> - <string>XCModuleDock</string> - <string>PBXSmartGroupTreeModule</string> - </array> - <key>TableOfContents</key> - <array> - <string>11E0B1FE06471DED0097A5F4</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.default.shortV3</string> - </dict> - </array> - <key>PerspectivesBarVisible</key> - <false/> - <key>ShelfIsVisible</key> - <false/> - <key>SourceDescription</key> - <string>file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec'</string> - <key>StatusbarIsVisible</key> - <true/> - <key>TimeStamp</key> - <real>0.0</real> - <key>ToolbarDisplayMode</key> - <integer>1</integer> - <key>ToolbarIsVisible</key> - <true/> - <key>ToolbarSizeMode</key> - <integer>1</integer> - <key>Type</key> - <string>Perspectives</string> - <key>UpdateMessage</key> - <string>The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'?</string> - <key>WindowJustification</key> - <integer>5</integer> - <key>WindowOrderList</key> - <array> - <string>1C78EAAD065D492600B07095</string> - <string>3477106F0E8BD7BA0051DFFD</string> - <string>1C530D57069F1CE1000CFCEE</string> - <string>1CD10A99069EF8BA00B06720</string> - <string>/Users/matthew/Projects/mySociety/iPhone/FixMyStreet/FixMyStreet.xcodeproj</string> - </array> - <key>WindowString</key> - <string>41 180 1555 998 0 0 1920 1178 </string> - <key>WindowToolsV3</key> - <array> - <dict> - <key>FirstTimeWindowDisplayed</key> - <false/> - <key>Identifier</key> - <string>windowTool.build</string> - <key>IsVertical</key> - <true/> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CD0528F0623707200166675</string> - <key>PBXProjectModuleLabel</key> - <string></string> - <key>StatusBarVisibility</key> - <true/> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {876, 236}}</string> - <key>RubberWindowFrame</key> - <string>542 318 876 600 0 0 1920 1178 </string> - </dict> - <key>Module</key> - <string>PBXNavigatorGroup</string> - <key>Proportion</key> - <string>236pt</string> - </dict> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXBuildLogShowsTranscriptDefaultKey</key> - <string>{{0, 5}, {876, 313}}</string> - <key>PBXProjectModuleGUID</key> - <string>XCMainBuildResultsModuleGUID</string> - <key>PBXProjectModuleLabel</key> - <string>Build</string> - <key>XCBuildResultsTrigger_Collapse</key> - <integer>1021</integer> - <key>XCBuildResultsTrigger_Open</key> - <integer>1011</integer> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 241}, {876, 318}}</string> - <key>RubberWindowFrame</key> - <string>542 318 876 600 0 0 1920 1178 </string> - </dict> - <key>Module</key> - <string>PBXBuildResultsModule</string> - <key>Proportion</key> - <string>318pt</string> - </dict> - </array> - <key>Proportion</key> - <string>559pt</string> - </dict> - </array> - <key>Name</key> - <string>Build Results</string> - <key>ServiceClasses</key> - <array> - <string>PBXBuildResultsModule</string> - </array> - <key>StatusbarIsVisible</key> - <true/> - <key>TableOfContents</key> - <array> - <string>3477106F0E8BD7BA0051DFFD</string> - <string>341D129D0F01A5D90095C69B</string> - <string>1CD0528F0623707200166675</string> - <string>XCMainBuildResultsModuleGUID</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.buildV3</string> - <key>WindowString</key> - <string>542 318 876 600 0 0 1920 1178 </string> - <key>WindowToolGUID</key> - <string>3477106F0E8BD7BA0051DFFD</string> - <key>WindowToolIsVisible</key> - <false/> - </dict> - <dict> - <key>FirstTimeWindowDisplayed</key> - <false/> - <key>Identifier</key> - <string>windowTool.debugger</string> - <key>IsVertical</key> - <true/> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>Debugger</key> - <dict> - <key>HorizontalSplitView</key> - <dict> - <key>_collapsingFrameDimension</key> - <real>0.0</real> - <key>_indexOfCollapsedView</key> - <integer>0</integer> - <key>_percentageOfCollapsedView</key> - <real>0.0</real> - <key>isCollapsed</key> - <string>yes</string> - <key>sizes</key> - <array> - <string>{{0, 0}, {442, 549}}</string> - <string>{{442, 0}, {506, 549}}</string> - </array> - </dict> - <key>VerticalSplitView</key> - <dict> - <key>_collapsingFrameDimension</key> - <real>0.0</real> - <key>_indexOfCollapsedView</key> - <integer>0</integer> - <key>_percentageOfCollapsedView</key> - <real>0.0</real> - <key>isCollapsed</key> - <string>yes</string> - <key>sizes</key> - <array> - <string>{{0, 0}, {948, 549}}</string> - <string>{{0, 549}, {948, 258}}</string> - </array> - </dict> - </dict> - <key>LauncherConfigVersion</key> - <string>8</string> - <key>PBXProjectModuleGUID</key> - <string>1C162984064C10D400B95A72</string> - <key>PBXProjectModuleLabel</key> - <string>Debug - GLUTExamples (Underwater)</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>DebugConsoleVisible</key> - <string>None</string> - <key>DebugConsoleWindowFrame</key> - <string>{{200, 200}, {500, 300}}</string> - <key>DebugSTDIOWindowFrame</key> - <string>{{200, 200}, {500, 300}}</string> - <key>Frame</key> - <string>{{0, 0}, {948, 807}}</string> - <key>PBXDebugSessionStackFrameViewKey</key> - <dict> - <key>DebugVariablesTableConfiguration</key> - <array> - <string>Name</string> - <real>149</real> - <string>Value</string> - <real>114</real> - <string>Summary</string> - <real>218</real> - </array> - <key>Frame</key> - <string>{{442, 0}, {506, 549}}</string> - <key>RubberWindowFrame</key> - <string>388 301 948 848 0 0 1920 1178 </string> - </dict> - <key>RubberWindowFrame</key> - <string>388 301 948 848 0 0 1920 1178 </string> - </dict> - <key>Module</key> - <string>PBXDebugSessionModule</string> - <key>Proportion</key> - <string>807pt</string> - </dict> - </array> - <key>Proportion</key> - <string>807pt</string> - </dict> - </array> - <key>Name</key> - <string>Debugger</string> - <key>ServiceClasses</key> - <array> - <string>PBXDebugSessionModule</string> - </array> - <key>StatusbarIsVisible</key> - <true/> - <key>TableOfContents</key> - <array> - <string>1CD10A99069EF8BA00B06720</string> - <string>341D12860F01A54C0095C69B</string> - <string>1C162984064C10D400B95A72</string> - <string>341D12870F01A54C0095C69B</string> - <string>341D12880F01A54C0095C69B</string> - <string>341D12890F01A54C0095C69B</string> - <string>341D128A0F01A54C0095C69B</string> - <string>341D128B0F01A54C0095C69B</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.debugV3</string> - <key>WindowString</key> - <string>388 301 948 848 0 0 1920 1178 </string> - <key>WindowToolGUID</key> - <string>1CD10A99069EF8BA00B06720</string> - <key>WindowToolIsVisible</key> - <false/> - </dict> - <dict> - <key>FirstTimeWindowDisplayed</key> - <false/> - <key>Identifier</key> - <string>windowTool.find</string> - <key>IsVertical</key> - <true/> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CDD528C0622207200134675</string> - <key>PBXProjectModuleLabel</key> - <string>InputTableViewController.m</string> - <key>StatusBarVisibility</key> - <true/> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {813, 396}}</string> - <key>RubberWindowFrame</key> - <string>698 214 813 753 0 0 1920 1178 </string> - </dict> - <key>Module</key> - <string>PBXNavigatorGroup</string> - <key>Proportion</key> - <string>813pt</string> - </dict> - </array> - <key>Proportion</key> - <string>396pt</string> - </dict> - <dict> - <key>BecomeActive</key> - <true/> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CD0528E0623707200166675</string> - <key>PBXProjectModuleLabel</key> - <string>Project Find</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 401}, {813, 311}}</string> - <key>RubberWindowFrame</key> - <string>698 214 813 753 0 0 1920 1178 </string> - </dict> - <key>Module</key> - <string>PBXProjectFindModule</string> - <key>Proportion</key> - <string>311pt</string> - </dict> - </array> - <key>Proportion</key> - <string>712pt</string> - </dict> - </array> - <key>Name</key> - <string>Project Find</string> - <key>ServiceClasses</key> - <array> - <string>PBXProjectFindModule</string> - </array> - <key>StatusbarIsVisible</key> - <true/> - <key>TableOfContents</key> - <array> - <string>1C530D57069F1CE1000CFCEE</string> - <string>341D128D0F01A54C0095C69B</string> - <string>341D128E0F01A54C0095C69B</string> - <string>1CDD528C0622207200134675</string> - <string>1CD0528E0623707200166675</string> - </array> - <key>WindowString</key> - <string>698 214 813 753 0 0 1920 1178 </string> - <key>WindowToolGUID</key> - <string>1C530D57069F1CE1000CFCEE</string> - <key>WindowToolIsVisible</key> - <false/> - </dict> - <dict> - <key>Identifier</key> - <string>MENUSEPARATOR</string> - </dict> - <dict> - <key>FirstTimeWindowDisplayed</key> - <false/> - <key>Identifier</key> - <string>windowTool.debuggerConsole</string> - <key>IsVertical</key> - <true/> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1C78EAAC065D492600B07095</string> - <key>PBXProjectModuleLabel</key> - <string>Debugger Console</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {650, 209}}</string> - <key>RubberWindowFrame</key> - <string>57 749 650 250 0 0 1920 1178 </string> - </dict> - <key>Module</key> - <string>PBXDebugCLIModule</string> - <key>Proportion</key> - <string>209pt</string> - </dict> - </array> - <key>Proportion</key> - <string>209pt</string> - </dict> - </array> - <key>Name</key> - <string>Debugger Console</string> - <key>ServiceClasses</key> - <array> - <string>PBXDebugCLIModule</string> - </array> - <key>StatusbarIsVisible</key> - <true/> - <key>TableOfContents</key> - <array> - <string>1C78EAAD065D492600B07095</string> - <string>341D129E0F01A5D90095C69B</string> - <string>1C78EAAC065D492600B07095</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.consoleV3</string> - <key>WindowString</key> - <string>57 749 650 250 0 0 1920 1178 </string> - <key>WindowToolGUID</key> - <string>1C78EAAD065D492600B07095</string> - <key>WindowToolIsVisible</key> - <false/> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.snapshots</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>Module</key> - <string>XCSnapshotModule</string> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Name</key> - <string>Snapshots</string> - <key>ServiceClasses</key> - <array> - <string>XCSnapshotModule</string> - </array> - <key>StatusbarIsVisible</key> - <string>Yes</string> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.snapshots</string> - <key>WindowString</key> - <string>315 824 300 550 0 0 1440 878 </string> - <key>WindowToolIsVisible</key> - <string>Yes</string> - </dict> - <dict> - <key>FirstTimeWindowDisplayed</key> - <false/> - <key>Identifier</key> - <string>windowTool.scm</string> - <key>IsVertical</key> - <true/> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1C78EAB2065D492600B07095</string> - <key>PBXProjectModuleLabel</key> - <string></string> - <key>StatusBarVisibility</key> - <true/> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {637, 279}}</string> - <key>RubberWindowFrame</key> - <string>1080 290 637 727 0 0 1920 1178 </string> - </dict> - <key>Module</key> - <string>PBXNavigatorGroup</string> - <key>Proportion</key> - <string>279pt</string> - </dict> - <dict> - <key>BecomeActive</key> - <true/> - <key>ContentConfiguration</key> - <dict> - <key>PBXCVSModuleFilterTypeKey</key> - <integer>1030</integer> - <key>PBXCVSModuleTreeModuleColumnData</key> - <dict> - <key>PBXCVSModuleTreeModuleColumnWidthsKey</key> - <array> - <real>221</real> - <real>56</real> - <real>63</real> - <real>60</real> - <real>63</real> - <real>139</real> - </array> - <key>PBXCVSModuleTreeModuleColumnsKey</key> - <array> - <string>Name</string> - <string>Status</string> - <string>Update</string> - <string>Revision</string> - <string>Author</string> - <string>Date</string> - </array> - </dict> - <key>PBXProjectModuleGUID</key> - <string>1CD052920623707200166675</string> - <key>PBXProjectModuleLabel</key> - <string>SCM Results</string> - <key>SCMActivityViewerShowingDefaultKey</key> - <string>{{0, 288}, {637, 114}}</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 284}, {637, 402}}</string> - <key>RubberWindowFrame</key> - <string>1080 290 637 727 0 0 1920 1178 </string> - </dict> - <key>Module</key> - <string>PBXCVSModule</string> - <key>Proportion</key> - <string>402pt</string> - </dict> - </array> - <key>Proportion</key> - <string>686pt</string> - </dict> - </array> - <key>Name</key> - <string>SCM</string> - <key>ServiceClasses</key> - <array> - <string>PBXCVSModule</string> - </array> - <key>StatusbarIsVisible</key> - <true/> - <key>TableOfContents</key> - <array> - <string>342F995D0E9526F4006935E9</string> - <string>34C17AAA0EB0CD7500768D1C</string> - <string>1C78EAB2065D492600B07095</string> - <string>1CD052920623707200166675</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.scm</string> - <key>WindowString</key> - <string>1080 290 637 727 0 0 1920 1178 </string> - <key>WindowToolGUID</key> - <string>342F995D0E9526F4006935E9</string> - <key>WindowToolIsVisible</key> - <false/> - </dict> - <dict> - <key>FirstTimeWindowDisplayed</key> - <false/> - <key>Identifier</key> - <string>windowTool.breakpoints</string> - <key>IsVertical</key> - <false/> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXBottomSmartGroupGIDs</key> - <array> - <string>1C77FABC04509CD000000102</string> - </array> - <key>PBXProjectModuleGUID</key> - <string>1CE0B1FE06471DED0097A5F4</string> - <key>PBXProjectModuleLabel</key> - <string>Files</string> - <key>PBXProjectStructureProvided</key> - <string>no</string> - <key>PBXSmartGroupTreeModuleColumnData</key> - <dict> - <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> - <array> - <real>168</real> - </array> - <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> - <array> - <string>MainColumn</string> - </array> - </dict> - <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> - <dict> - <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> - <array> - <string>1C77FABC04509CD000000102</string> - <string>1C3E0DCA080725EA00A55177</string> - </array> - <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> - <array> - <array> - <integer>0</integer> - </array> - </array> - <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {168, 350}}</string> - </dict> - <key>PBXTopSmartGroupGIDs</key> - <array/> - <key>XCIncludePerspectivesSwitch</key> - <false/> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {185, 368}}</string> - <key>GroupTreeTableConfiguration</key> - <array> - <string>MainColumn</string> - <real>168</real> - </array> - <key>RubberWindowFrame</key> - <string>78 567 744 409 0 0 1920 1178 </string> - </dict> - <key>Module</key> - <string>PBXSmartGroupTreeModule</string> - <key>Proportion</key> - <string>185pt</string> - </dict> - <dict> - <key>BecomeActive</key> - <true/> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CA1AED706398EBD00589147</string> - <key>PBXProjectModuleLabel</key> - <string>Detail</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{190, 0}, {554, 368}}</string> - <key>RubberWindowFrame</key> - <string>78 567 744 409 0 0 1920 1178 </string> - </dict> - <key>Module</key> - <string>XCDetailModule</string> - <key>Proportion</key> - <string>554pt</string> - </dict> - </array> - <key>Proportion</key> - <string>368pt</string> - </dict> - </array> - <key>MajorVersion</key> - <integer>3</integer> - <key>MinorVersion</key> - <integer>0</integer> - <key>Name</key> - <string>Breakpoints</string> - <key>ServiceClasses</key> - <array> - <string>PBXSmartGroupTreeModule</string> - <string>XCDetailModule</string> - </array> - <key>StatusbarIsVisible</key> - <true/> - <key>TableOfContents</key> - <array> - <string>345577C40EAE256B008C5D7F</string> - <string>345577C50EAE256B008C5D7F</string> - <string>1CE0B1FE06471DED0097A5F4</string> - <string>1CA1AED706398EBD00589147</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.breakpointsV3</string> - <key>WindowString</key> - <string>78 567 744 409 0 0 1920 1178 </string> - <key>WindowToolGUID</key> - <string>345577C40EAE256B008C5D7F</string> - <key>WindowToolIsVisible</key> - <false/> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.debugAnimator</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>Module</key> - <string>PBXNavigatorGroup</string> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Name</key> - <string>Debug Visualizer</string> - <key>ServiceClasses</key> - <array> - <string>PBXNavigatorGroup</string> - </array> - <key>StatusbarIsVisible</key> - <integer>1</integer> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.debugAnimatorV3</string> - <key>WindowString</key> - <string>100 100 700 500 0 0 1280 1002 </string> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.bookmarks</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>Module</key> - <string>PBXBookmarksModule</string> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Name</key> - <string>Bookmarks</string> - <key>ServiceClasses</key> - <array> - <string>PBXBookmarksModule</string> - </array> - <key>StatusbarIsVisible</key> - <integer>0</integer> - <key>WindowString</key> - <string>538 42 401 187 0 0 1280 1002 </string> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.projectFormatConflicts</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>Module</key> - <string>XCProjectFormatConflictsModule</string> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Name</key> - <string>Project Format Conflicts</string> - <key>ServiceClasses</key> - <array> - <string>XCProjectFormatConflictsModule</string> - </array> - <key>StatusbarIsVisible</key> - <integer>0</integer> - <key>WindowContentMinSize</key> - <string>450 300</string> - <key>WindowString</key> - <string>50 850 472 307 0 0 1440 877</string> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.classBrowser</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>BecomeActive</key> - <integer>1</integer> - <key>ContentConfiguration</key> - <dict> - <key>OptionsSetName</key> - <string>Hierarchy, all classes</string> - <key>PBXProjectModuleGUID</key> - <string>1CA6456E063B45B4001379D8</string> - <key>PBXProjectModuleLabel</key> - <string>Class Browser - NSObject</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>ClassesFrame</key> - <string>{{0, 0}, {374, 96}}</string> - <key>ClassesTreeTableConfiguration</key> - <array> - <string>PBXClassNameColumnIdentifier</string> - <real>208</real> - <string>PBXClassBookColumnIdentifier</string> - <real>22</real> - </array> - <key>Frame</key> - <string>{{0, 0}, {630, 331}}</string> - <key>MembersFrame</key> - <string>{{0, 105}, {374, 395}}</string> - <key>MembersTreeTableConfiguration</key> - <array> - <string>PBXMemberTypeIconColumnIdentifier</string> - <real>22</real> - <string>PBXMemberNameColumnIdentifier</string> - <real>216</real> - <string>PBXMemberTypeColumnIdentifier</string> - <real>97</real> - <string>PBXMemberBookColumnIdentifier</string> - <real>22</real> - </array> - <key>PBXModuleWindowStatusBarHidden2</key> - <integer>1</integer> - <key>RubberWindowFrame</key> - <string>385 179 630 352 0 0 1440 878 </string> - </dict> - <key>Module</key> - <string>PBXClassBrowserModule</string> - <key>Proportion</key> - <string>332pt</string> - </dict> - </array> - <key>Proportion</key> - <string>332pt</string> - </dict> - </array> - <key>Name</key> - <string>Class Browser</string> - <key>ServiceClasses</key> - <array> - <string>PBXClassBrowserModule</string> - </array> - <key>StatusbarIsVisible</key> - <integer>0</integer> - <key>TableOfContents</key> - <array> - <string>1C0AD2AF069F1E9B00FABCE6</string> - <string>1C0AD2B0069F1E9B00FABCE6</string> - <string>1CA6456E063B45B4001379D8</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.classbrowser</string> - <key>WindowString</key> - <string>385 179 630 352 0 0 1440 878 </string> - <key>WindowToolGUID</key> - <string>1C0AD2AF069F1E9B00FABCE6</string> - <key>WindowToolIsVisible</key> - <integer>0</integer> - </dict> - <dict> - <key>FirstTimeWindowDisplayed</key> - <false/> - <key>Identifier</key> - <string>windowTool.refactoring</string> - <key>IncludeInToolsMenu</key> - <integer>0</integer> - <key>IsVertical</key> - <true/> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>349AFEA20E925A4D008E83C1</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {500, 315}}</string> - <key>RubberWindowFrame</key> - <string>580 421 500 356 0 0 1920 1178 </string> - </dict> - <key>Module</key> - <string>XCRefactoringModule</string> - <key>Proportion</key> - <string>315pt</string> - </dict> - </array> - <key>Proportion</key> - <string>315pt</string> - </dict> - </array> - <key>Name</key> - <string>Refactoring</string> - <key>ServiceClasses</key> - <array> - <string>XCRefactoringModule</string> - </array> - <key>StatusbarIsVisible</key> - <true/> - <key>TableOfContents</key> - <array> - <string>349AFEA30E925A4D008E83C1</string> - <string>349AFEA40E925A4D008E83C1</string> - <string>349AFEA20E925A4D008E83C1</string> - </array> - <key>WindowString</key> - <string>580 421 500 356 0 0 1920 1178 </string> - <key>WindowToolGUID</key> - <string>349AFEA30E925A4D008E83C1</string> - <key>WindowToolIsVisible</key> - <false/> - </dict> - </array> -</dict> -</plist> diff --git a/iphone/FixMyStreet/FixMyStreet.xcodeproj/matthew.pbxuser b/iphone/FixMyStreet/FixMyStreet.xcodeproj/matthew.pbxuser deleted file mode 100644 index 7185b29fe..000000000 --- a/iphone/FixMyStreet/FixMyStreet.xcodeproj/matthew.pbxuser +++ /dev/null @@ -1,1783 +0,0 @@ -// !$*UTF8*$! -{ - 1D3623240D0F684500981E51 /* FixMyStreetAppDelegate.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1229, 753}}"; - sepNavSelRange = "{351, 0}"; - sepNavVisRange = "{0, 1201}"; - sepNavWindowFrame = "{{15, 94}, {738, 1079}}"; - }; - }; - 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1229, 3262}}"; - sepNavSelRange = "{6093, 0}"; - sepNavVisRange = "{5040, 3320}"; - sepNavWindowFrame = "{{130, 510}, {750, 558}}"; - }; - }; - 1D6058900D05DD3D006BFB54 /* FixMyStreet */ = { - activeExec = 0; - executables = ( - 347710680E8BD7AA0051DFFD /* FixMyStreet */, - ); - }; - 29B97313FDCFA39411CA2CEA /* Project object */ = { - activeBuildConfigurationName = Debug; - activeExecutable = 347710680E8BD7AA0051DFFD /* FixMyStreet */; - activeSDKPreference = iphonesimulator2.1; - activeTarget = 1D6058900D05DD3D006BFB54 /* FixMyStreet */; - addToTargets = ( - 1D6058900D05DD3D006BFB54 /* FixMyStreet */, - ); - breakpoints = ( - 345577AE0EAE24AF008C5D7F /* EditSubjectViewController.m:152 */, - 345577D30EAE262B008C5D7F /* EditSubjectViewController.m:152 */, - 345577D50EAE262C008C5D7F /* EditSubjectViewController.m:152 */, - ); - codeSenseManager = 347710790E8BD7BA0051DFFD /* Code sense */; - executables = ( - 347710680E8BD7AA0051DFFD /* FixMyStreet */, - ); - perUserDictionary = { - "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA1AED706398EBD00589147" = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 20, - 198, - 20, - 99, - 99, - 29, - 20, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXBreakpointsDataSource_ActionID, - PBXBreakpointsDataSource_TypeID, - PBXBreakpointsDataSource_BreakpointID, - PBXBreakpointsDataSource_UseID, - PBXBreakpointsDataSource_LocationID, - PBXBreakpointsDataSource_ConditionID, - PBXBreakpointsDataSource_IgnoreCountID, - PBXBreakpointsDataSource_ContinueID, - ); - }; - PBXConfiguration.PBXFileTableDataSource3.PBXBookmarksDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXBookmarksDataSource_NameID; - PBXFileTableDataSourceColumnWidthsKey = ( - 200, - 200, - 861, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXBookmarksDataSource_LocationID, - PBXBookmarksDataSource_NameID, - PBXBookmarksDataSource_CommentsID, - ); - }; - PBXConfiguration.PBXFileTableDataSource3.PBXErrorsWarningsDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXErrorsWarningsDataSource_LocationID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 300, - 941, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXErrorsWarningsDataSource_TypeID, - PBXErrorsWarningsDataSource_MessageID, - PBXErrorsWarningsDataSource_LocationID, - ); - }; - PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = 1; - PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 1051, - 20, - 48, - 43, - 43, - 20, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFileDataSource_FiletypeID, - PBXFileDataSource_Filename_ColumnID, - PBXFileDataSource_Built_ColumnID, - PBXFileDataSource_ObjectSize_ColumnID, - PBXFileDataSource_Errors_ColumnID, - PBXFileDataSource_Warnings_ColumnID, - PBXFileDataSource_Target_ColumnID, - ); - }; - PBXConfiguration.PBXFileTableDataSource3.PBXSymbolsDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXSymbolsDataSource_SymbolNameID; - PBXFileTableDataSourceColumnWidthsKey = ( - 16, - 200, - 50, - 991.20849609375, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXSymbolsDataSource_SymbolTypeIconID, - PBXSymbolsDataSource_SymbolNameID, - PBXSymbolsDataSource_SymbolTypeID, - PBXSymbolsDataSource_ReferenceNameID, - ); - }; - PBXConfiguration.PBXFileTableDataSource3.XCSCMDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 20, - 1027, - 20, - 48, - 43, - 43, - 20, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFileDataSource_SCM_ColumnID, - PBXFileDataSource_FiletypeID, - PBXFileDataSource_Filename_ColumnID, - PBXFileDataSource_Built_ColumnID, - PBXFileDataSource_ObjectSize_ColumnID, - PBXFileDataSource_Errors_ColumnID, - PBXFileDataSource_Warnings_ColumnID, - PBXFileDataSource_Target_ColumnID, - ); - }; - PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 1011, - 60, - 20, - 48, - 43, - 43, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFileDataSource_FiletypeID, - PBXFileDataSource_Filename_ColumnID, - PBXTargetDataSource_PrimaryAttribute, - PBXFileDataSource_Built_ColumnID, - PBXFileDataSource_ObjectSize_ColumnID, - PBXFileDataSource_Errors_ColumnID, - PBXFileDataSource_Warnings_ColumnID, - ); - }; - PBXPerProjectTemplateStateSaveDate = 251765187; - PBXWorkspaceStateSaveDate = 251765187; - }; - perUserProjectItems = { - 341D12800F01A1C70095C69B /* PBXTextBookmark */ = 341D12800F01A1C70095C69B /* PBXTextBookmark */; - 341D12900F01A5D90095C69B /* PBXTextBookmark */ = 341D12900F01A5D90095C69B /* PBXTextBookmark */; - 341D12910F01A5D90095C69B /* PBXTextBookmark */ = 341D12910F01A5D90095C69B /* PBXTextBookmark */; - 341D12920F01A5D90095C69B /* PBXTextBookmark */ = 341D12920F01A5D90095C69B /* PBXTextBookmark */; - 341D12930F01A5D90095C69B /* PBXTextBookmark */ = 341D12930F01A5D90095C69B /* PBXTextBookmark */; - 341D12940F01A5D90095C69B /* PBXTextBookmark */ = 341D12940F01A5D90095C69B /* PBXTextBookmark */; - 341D12950F01A5D90095C69B /* PBXTextBookmark */ = 341D12950F01A5D90095C69B /* PBXTextBookmark */; - 341D12960F01A5D90095C69B /* PBXTextBookmark */ = 341D12960F01A5D90095C69B /* PBXTextBookmark */; - 341D12970F01A5D90095C69B /* PBXTextBookmark */ = 341D12970F01A5D90095C69B /* PBXTextBookmark */; - 341D12980F01A5D90095C69B /* PBXTextBookmark */ = 341D12980F01A5D90095C69B /* PBXTextBookmark */; - 341D12990F01A5D90095C69B /* PBXTextBookmark */ = 341D12990F01A5D90095C69B /* PBXTextBookmark */; - 341D129A0F01A5D90095C69B /* PBXTextBookmark */ = 341D129A0F01A5D90095C69B /* PBXTextBookmark */; - 341D129B0F01A5D90095C69B /* PBXTextBookmark */ = 341D129B0F01A5D90095C69B /* PBXTextBookmark */; - 341D129C0F01A5D90095C69B /* PBXTextBookmark */ = 341D129C0F01A5D90095C69B /* PBXTextBookmark */; - 341D12A20F01A8670095C69B /* PBXTextBookmark */ = 341D12A20F01A8670095C69B /* PBXTextBookmark */; - 341D12A30F01A8670095C69B /* PBXTextBookmark */ = 341D12A30F01A8670095C69B /* PBXTextBookmark */; - 341D12A50F01A87A0095C69B /* PBXTextBookmark */ = 341D12A50F01A87A0095C69B /* PBXTextBookmark */; - 341D12B20F01A9200095C69B /* PBXTextBookmark */ = 341D12B20F01A9200095C69B /* PBXTextBookmark */; - 341D12B40F01A9380095C69B /* PBXTextBookmark */ = 341D12B40F01A9380095C69B /* PBXTextBookmark */; - 341D12B70F01A9420095C69B /* PBXTextBookmark */ = 341D12B70F01A9420095C69B /* PBXTextBookmark */; - 341D12B80F01A9420095C69B /* PBXTextBookmark */ = 341D12B80F01A9420095C69B /* PBXTextBookmark */; - 341D12B90F01A9420095C69B /* PBXTextBookmark */ = 341D12B90F01A9420095C69B /* PBXTextBookmark */; - 341D12BA0F01A9420095C69B /* PBXTextBookmark */ = 341D12BA0F01A9420095C69B /* PBXTextBookmark */; - 341D12BB0F01A9420095C69B /* PBXTextBookmark */ = 341D12BB0F01A9420095C69B /* PBXTextBookmark */; - 341D12BC0F01A9420095C69B /* PBXTextBookmark */ = 341D12BC0F01A9420095C69B /* PBXTextBookmark */; - 341D12BD0F01A9420095C69B /* PBXTextBookmark */ = 341D12BD0F01A9420095C69B /* PBXTextBookmark */; - 341D12C20F01B0D60095C69B /* PBXTextBookmark */ = 341D12C20F01B0D60095C69B /* PBXTextBookmark */; - 341D12C30F01B0D60095C69B /* PBXTextBookmark */ = 341D12C30F01B0D60095C69B /* PBXTextBookmark */; - 341D12C40F01B0D60095C69B /* PBXTextBookmark */ = 341D12C40F01B0D60095C69B /* PBXTextBookmark */; - 341D12C50F01B0D60095C69B /* PBXTextBookmark */ = 341D12C50F01B0D60095C69B /* PBXTextBookmark */; - 341D12C60F01B0D60095C69B /* PBXTextBookmark */ = 341D12C60F01B0D60095C69B /* PBXTextBookmark */; - 341D12C70F01B0D60095C69B /* PBXTextBookmark */ = 341D12C70F01B0D60095C69B /* PBXTextBookmark */; - 341D12C80F01B0D60095C69B /* PBXTextBookmark */ = 341D12C80F01B0D60095C69B /* PBXTextBookmark */; - 341D12C90F01B0D60095C69B /* PBXTextBookmark */ = 341D12C90F01B0D60095C69B /* PBXTextBookmark */; - 341D12CA0F01B0D60095C69B /* PBXTextBookmark */ = 341D12CA0F01B0D60095C69B /* PBXTextBookmark */; - 341D12CB0F01B0D60095C69B /* PBXTextBookmark */ = 341D12CB0F01B0D60095C69B /* PBXTextBookmark */; - 341D12CD0F01B0DD0095C69B /* PBXTextBookmark */ = 341D12CD0F01B0DD0095C69B /* PBXTextBookmark */; - 341D12D20F01B1CC0095C69B /* PlistBookmark */ = 341D12D20F01B1CC0095C69B /* PlistBookmark */; - 341D12D30F01B1CC0095C69B /* PBXTextBookmark */ = 341D12D30F01B1CC0095C69B /* PBXTextBookmark */; - 341D12D40F01B1CC0095C69B /* PBXTextBookmark */ = 341D12D40F01B1CC0095C69B /* PBXTextBookmark */; - 341D12D50F01B1CC0095C69B /* PBXTextBookmark */ = 341D12D50F01B1CC0095C69B /* PBXTextBookmark */; - 341D12D60F01B1CC0095C69B /* PBXTextBookmark */ = 341D12D60F01B1CC0095C69B /* PBXTextBookmark */; - 341D12D70F01B1CC0095C69B /* PBXTextBookmark */ = 341D12D70F01B1CC0095C69B /* PBXTextBookmark */; - 341D12D80F01B1CC0095C69B /* PBXTextBookmark */ = 341D12D80F01B1CC0095C69B /* PBXTextBookmark */; - 341D12D90F01B1CC0095C69B /* PBXTextBookmark */ = 341D12D90F01B1CC0095C69B /* PBXTextBookmark */; - 341D12DA0F01B1CC0095C69B /* PlistBookmark */ = 341D12DA0F01B1CC0095C69B /* PlistBookmark */; - 341D12DB0F01B1CC0095C69B /* PBXTextBookmark */ = 341D12DB0F01B1CC0095C69B /* PBXTextBookmark */; - 341D12DC0F01B1CC0095C69B /* PBXTextBookmark */ = 341D12DC0F01B1CC0095C69B /* PBXTextBookmark */; - 341D12DD0F01B1CC0095C69B /* PBXTextBookmark */ = 341D12DD0F01B1CC0095C69B /* PBXTextBookmark */; - 341D12DE0F01B1CC0095C69B /* PBXTextBookmark */ = 341D12DE0F01B1CC0095C69B /* PBXTextBookmark */; - 341D12DF0F01B1CC0095C69B /* PBXTextBookmark */ = 341D12DF0F01B1CC0095C69B /* PBXTextBookmark */; - 341D12E00F01B1CC0095C69B /* PBXTextBookmark */ = 341D12E00F01B1CC0095C69B /* PBXTextBookmark */; - 341D12E10F01B1CC0095C69B /* PBXTextBookmark */ = 341D12E10F01B1CC0095C69B /* PBXTextBookmark */; - 341D12E20F01B1CC0095C69B /* PBXTextBookmark */ = 341D12E20F01B1CC0095C69B /* PBXTextBookmark */; - 341D12E30F01B1CC0095C69B /* PBXTextBookmark */ = 341D12E30F01B1CC0095C69B /* PBXTextBookmark */; - 341D12E40F01B1CC0095C69B /* PBXTextBookmark */ = 341D12E40F01B1CC0095C69B /* PBXTextBookmark */; - 341D12E50F01B1CC0095C69B /* PBXTextBookmark */ = 341D12E50F01B1CC0095C69B /* PBXTextBookmark */; - 341D12E60F01B1CC0095C69B /* PBXTextBookmark */ = 341D12E60F01B1CC0095C69B /* PBXTextBookmark */; - 341D12E80F01B2820095C69B /* PBXTextBookmark */ = 341D12E80F01B2820095C69B /* PBXTextBookmark */; - 341D12E90F01B2820095C69B /* PBXTextBookmark */ = 341D12E90F01B2820095C69B /* PBXTextBookmark */; - 341D12EA0F01B2820095C69B /* PBXTextBookmark */ = 341D12EA0F01B2820095C69B /* PBXTextBookmark */; - 341D12EB0F01B2820095C69B /* PBXTextBookmark */ = 341D12EB0F01B2820095C69B /* PBXTextBookmark */; - 341D12EC0F01B2820095C69B /* PBXTextBookmark */ = 341D12EC0F01B2820095C69B /* PBXTextBookmark */; - 341D12ED0F01B2820095C69B /* PBXTextBookmark */ = 341D12ED0F01B2820095C69B /* PBXTextBookmark */; - 341D12EE0F01B2820095C69B /* PBXTextBookmark */ = 341D12EE0F01B2820095C69B /* PBXTextBookmark */; - 341D12F00F01B29C0095C69B /* PBXTextBookmark */ = 341D12F00F01B29C0095C69B /* PBXTextBookmark */; - 341D12F20F01B2C10095C69B /* PBXTextBookmark */ = 341D12F20F01B2C10095C69B /* PBXTextBookmark */; - 341D12F40F01B2CA0095C69B /* PBXTextBookmark */ = 341D12F40F01B2CA0095C69B /* PBXTextBookmark */; - 341D12F60F01B2E00095C69B /* PBXTextBookmark */ = 341D12F60F01B2E00095C69B /* PBXTextBookmark */; - 341D12F80F01B3110095C69B /* PBXTextBookmark */ = 341D12F80F01B3110095C69B /* PBXTextBookmark */; - 341D12FA0F01B3350095C69B /* PBXTextBookmark */ = 341D12FA0F01B3350095C69B /* PBXTextBookmark */; - 341D12FC0F01B3520095C69B /* PBXTextBookmark */ = 341D12FC0F01B3520095C69B /* PBXTextBookmark */; - 341D12FE0F01B3670095C69B /* PBXTextBookmark */ = 341D12FE0F01B3670095C69B /* PBXTextBookmark */; - 341D13000F01B3860095C69B /* PBXTextBookmark */ = 341D13000F01B3860095C69B /* PBXTextBookmark */; - 341D13020F01B4650095C69B /* PBXTextBookmark */ = 341D13020F01B4650095C69B /* PBXTextBookmark */; - 341D13030F01B4650095C69B /* PlistBookmark */ = 341D13030F01B4650095C69B /* PlistBookmark */; - 341D13040F01B4650095C69B /* PBXTextBookmark */ = 341D13040F01B4650095C69B /* PBXTextBookmark */; - 341D13050F01B4650095C69B /* PBXTextBookmark */ = 341D13050F01B4650095C69B /* PBXTextBookmark */; - 341D13060F01B4650095C69B /* PBXTextBookmark */ = 341D13060F01B4650095C69B /* PBXTextBookmark */; - 341D13070F01B4650095C69B /* PlistBookmark */ = 341D13070F01B4650095C69B /* PlistBookmark */; - 341D13080F01B4650095C69B /* PBXTextBookmark */ = 341D13080F01B4650095C69B /* PBXTextBookmark */; - 341D13090F01B4650095C69B /* PBXTextBookmark */ = 341D13090F01B4650095C69B /* PBXTextBookmark */; - 341D130A0F01B4650095C69B /* PBXTextBookmark */ = 341D130A0F01B4650095C69B /* PBXTextBookmark */; - 34865A1D0EE7F0B000716A66 = 34865A1D0EE7F0B000716A66 /* PBXTextBookmark */; - 34865A210EE7F0B000716A66 = 34865A210EE7F0B000716A66 /* PBXTextBookmark */; - 34865A230EE7F0B000716A66 = 34865A230EE7F0B000716A66 /* PBXTextBookmark */; - 34865A250EE7F0B000716A66 = 34865A250EE7F0B000716A66 /* PBXTextBookmark */; - 34865A260EE7F0B000716A66 = 34865A260EE7F0B000716A66 /* PBXTextBookmark */; - 34865A280EE7F0B000716A66 = 34865A280EE7F0B000716A66 /* PBXTextBookmark */; - 34865A2A0EE7F0B000716A66 = 34865A2A0EE7F0B000716A66 /* PBXTextBookmark */; - 34865A2B0EE7F0B000716A66 = 34865A2B0EE7F0B000716A66 /* PBXTextBookmark */; - 34865A2D0EE7F0B000716A66 = 34865A2D0EE7F0B000716A66 /* PBXTextBookmark */; - 34865A2F0EE7F0B000716A66 = 34865A2F0EE7F0B000716A66 /* PBXTextBookmark */; - 34865A4F0EE7F25E00716A66 = 34865A4F0EE7F25E00716A66 /* PBXTextBookmark */; - 34865A5A0EE7F29C00716A66 = 34865A5A0EE7F29C00716A66 /* PBXTextBookmark */; - 34865A630EE7FB7600716A66 = 34865A630EE7FB7600716A66 /* PBXTextBookmark */; - 34865A650EE7FB7600716A66 = 34865A650EE7FB7600716A66 /* PBXTextBookmark */; - 34865A660EE7FB7600716A66 = 34865A660EE7FB7600716A66 /* PBXTextBookmark */; - 34865A670EE7FB7600716A66 = 34865A670EE7FB7600716A66 /* PBXTextBookmark */; - 34865A680EE7FB7600716A66 = 34865A680EE7FB7600716A66 /* PBXTextBookmark */; - 34865A6C0EE7FBA600716A66 = 34865A6C0EE7FBA600716A66 /* PBXTextBookmark */; - 34865A750EE7FC4600716A66 = 34865A750EE7FC4600716A66 /* PBXTextBookmark */; - 34865A760EE7FC4600716A66 = 34865A760EE7FC4600716A66 /* PBXTextBookmark */; - 34865A770EE7FC4600716A66 = 34865A770EE7FC4600716A66 /* PBXTextBookmark */; - 34865A780EE7FC4600716A66 = 34865A780EE7FC4600716A66 /* PBXTextBookmark */; - 34865A790EE7FC4600716A66 = 34865A790EE7FC4600716A66 /* PBXTextBookmark */; - 34865A850EE7FC8D00716A66 = 34865A850EE7FC8D00716A66 /* PBXTextBookmark */; - 34865A860EE7FC8D00716A66 = 34865A860EE7FC8D00716A66 /* PBXTextBookmark */; - 34865A890EE7FD2000716A66 = 34865A890EE7FD2000716A66 /* PBXTextBookmark */; - 34865A8B0EE7FD2000716A66 = 34865A8B0EE7FD2000716A66 /* PBXTextBookmark */; - 34865A9B0EE7FE0700716A66 = 34865A9B0EE7FE0700716A66 /* PBXTextBookmark */; - 34865A9C0EE7FE0700716A66 = 34865A9C0EE7FE0700716A66 /* PBXTextBookmark */; - 34865ACA0EE7FEED00716A66 = 34865ACA0EE7FEED00716A66 /* PBXTextBookmark */; - 34865AE10EE7FF8A00716A66 = 34865AE10EE7FF8A00716A66 /* PBXTextBookmark */; - 34865AE60EE8002400716A66 = 34865AE60EE8002400716A66 /* PBXTextBookmark */; - 34865AE80EE8002400716A66 = 34865AE80EE8002400716A66 /* PBXTextBookmark */; - 34865AE90EE8002400716A66 = 34865AE90EE8002400716A66 /* PBXTextBookmark */; - 34865AEA0EE8002400716A66 = 34865AEA0EE8002400716A66 /* PBXTextBookmark */; - 34865AF80EE800C900716A66 = 34865AF80EE800C900716A66 /* PBXTextBookmark */; - 34865AF90EE800C900716A66 = 34865AF90EE800C900716A66 /* PBXTextBookmark */; - 34865AFA0EE800C900716A66 = 34865AFA0EE800C900716A66 /* PBXTextBookmark */; - 34865B090EE803F100716A66 = 34865B090EE803F100716A66 /* PBXTextBookmark */; - }; - sourceControlManager = 347710780E8BD7BA0051DFFD /* Source Control */; - userBuildSettings = { - }; - }; - 29B97316FDCFA39411CA2CEA /* main.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {887, 238}}"; - sepNavSelRange = "{270, 0}"; - sepNavVisRange = "{0, 369}"; - }; - }; - 32CA4F630368D1EE00C91783 /* FixMyStreet_Prefix.pch */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {758, 761}}"; - sepNavSelRange = "{185, 0}"; - sepNavVisRange = "{0, 230}"; - }; - }; - 341D12800F01A1C70095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 134"; - rLen = 0; - rLoc = 6093; - rType = 0; - vrLen = 3316; - vrLoc = 5040; - }; - 341D12900F01A5D90095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 128"; - rLen = 0; - rLoc = 4228; - rType = 0; - vrLen = 1234; - vrLoc = 2294; - }; - 341D12910F01A5D90095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 134"; - rLen = 0; - rLoc = 6093; - rType = 0; - vrLen = 3316; - vrLoc = 5040; - }; - 341D12920F01A5D90095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712720E8D367F0051DFFD /* InputTableViewController.h */; - name = "InputTableViewController.h: 39"; - rLen = 0; - rLoc = 1191; - rType = 0; - vrLen = 1330; - vrLoc = 0; - }; - 341D12930F01A5D90095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 280"; - rLen = 0; - rLoc = 10033; - rType = 0; - vrLen = 2173; - vrLoc = 8896; - }; - 341D12940F01A5D90095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 134"; - rLen = 0; - rLoc = 6093; - rType = 0; - vrLen = 3316; - vrLoc = 5040; - }; - 341D12950F01A5D90095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 128"; - rLen = 0; - rLoc = 4228; - rType = 0; - vrLen = 1192; - vrLoc = 2336; - }; - 341D12960F01A5D90095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 88"; - rLen = 21; - rLoc = 2725; - rType = 0; - vrLen = 2308; - vrLoc = 2292; - }; - 341D12970F01A5D90095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 128"; - rLen = 0; - rLoc = 4228; - rType = 0; - vrLen = 1234; - vrLoc = 2294; - }; - 341D12980F01A5D90095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 88"; - rLen = 21; - rLoc = 2725; - rType = 0; - vrLen = 2249; - vrLoc = 2292; - }; - 341D12990F01A5D90095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 134"; - rLen = 0; - rLoc = 6093; - rType = 0; - vrLen = 3316; - vrLoc = 5040; - }; - 341D129A0F01A5D90095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 280"; - rLen = 0; - rLoc = 10033; - rType = 0; - vrLen = 2145; - vrLoc = 8924; - }; - 341D129B0F01A5D90095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712720E8D367F0051DFFD /* InputTableViewController.h */; - name = "InputTableViewController.h: 39"; - rLen = 0; - rLoc = 1191; - rType = 0; - vrLen = 1330; - vrLoc = 0; - }; - 341D129C0F01A5D90095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 196"; - rLen = 0; - rLoc = 6940; - rType = 0; - vrLen = 2507; - vrLoc = 6080; - }; - 341D12A20F01A8670095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 196"; - rLen = 0; - rLoc = 6940; - rType = 0; - vrLen = 2535; - vrLoc = 6080; - }; - 341D12A30F01A8670095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 196"; - rLen = 0; - rLoc = 6940; - rType = 0; - vrLen = 2285; - vrLoc = 2668; - }; - 341D12A50F01A87A0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 196"; - rLen = 0; - rLoc = 6940; - rType = 0; - vrLen = 2285; - vrLoc = 2668; - }; - 341D12B20F01A9200095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - rLen = 7; - rLoc = 5464; - rType = 0; - }; - 341D12B40F01A9380095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 155"; - rLen = 7; - rLoc = 5464; - rType = 0; - vrLen = 1068; - vrLoc = 4953; - }; - 341D12B70F01A9420095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712720E8D367F0051DFFD /* InputTableViewController.h */; - name = "InputTableViewController.h: 39"; - rLen = 0; - rLoc = 1191; - rType = 0; - vrLen = 1330; - vrLoc = 0; - }; - 341D12B80F01A9420095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 200"; - rLen = 0; - rLoc = 7228; - rType = 0; - vrLen = 2225; - vrLoc = 6693; - }; - 341D12B90F01A9420095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - rLen = 7; - rLoc = 3664; - rType = 0; - }; - 341D12BA0F01A9420095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 127"; - rLen = 0; - rLoc = 4481; - rType = 0; - vrLen = 2264; - vrLoc = 6693; - }; - 341D12BB0F01A9420095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712720E8D367F0051DFFD /* InputTableViewController.h */; - name = "InputTableViewController.h: 39"; - rLen = 0; - rLoc = 1191; - rType = 0; - vrLen = 1330; - vrLoc = 0; - }; - 341D12BC0F01A9420095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 200"; - rLen = 0; - rLoc = 7228; - rType = 0; - vrLen = 2225; - vrLoc = 6693; - }; - 341D12BD0F01A9420095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 102"; - rLen = 7; - rLoc = 3664; - rType = 0; - vrLen = 1227; - vrLoc = 2294; - }; - 341D12C20F01B0D60095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712720E8D367F0051DFFD /* InputTableViewController.h */; - name = "InputTableViewController.h: 21"; - rLen = 0; - rLoc = 651; - rType = 0; - vrLen = 765; - vrLoc = 165; - }; - 341D12C30F01B0D60095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 131"; - rLen = 0; - rLoc = 4318; - rType = 0; - vrLen = 560; - vrLoc = 2961; - }; - 341D12C40F01B0D60095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - rLen = 7; - rLoc = 475; - rType = 0; - }; - 341D12C50F01B0D60095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 155"; - rLen = 7; - rLoc = 5464; - rType = 0; - vrLen = 1068; - vrLoc = 4953; - }; - 341D12C60F01B0D60095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 102"; - rLen = 0; - rLoc = 3671; - rType = 0; - vrLen = 616; - vrLoc = 2417; - }; - 341D12C70F01B0D60095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 205"; - rLen = 0; - rLoc = 7595; - rType = 0; - vrLen = 1318; - vrLoc = 6847; - }; - 341D12C80F01B0D60095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712720E8D367F0051DFFD /* InputTableViewController.h */; - name = "InputTableViewController.h: 21"; - rLen = 0; - rLoc = 651; - rType = 0; - vrLen = 765; - vrLoc = 165; - }; - 341D12C90F01B0D60095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 255"; - rLen = 0; - rLoc = 9151; - rType = 0; - vrLen = 639; - vrLoc = 8876; - }; - 341D12CA0F01B0D60095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 131"; - rLen = 0; - rLoc = 4318; - rType = 0; - vrLen = 560; - vrLoc = 2961; - }; - 341D12CB0F01B0D60095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 20"; - rLen = 0; - rLoc = 482; - rType = 0; - vrLen = 675; - vrLoc = 0; - }; - 341D12CD0F01B0DD0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 104"; - rLen = 0; - rLoc = 3724; - rType = 0; - vrLen = 1227; - vrLoc = 2294; - }; - 341D12D20F01B1CC0095C69B /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D1107310486CEB800E47090 /* Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - ); - name = /Users/matthew/Projects/mySociety/iPhone/FixMyStreet/Info.plist; - rLen = 0; - rLoc = 2147483647; - }; - 341D12D30F01B1CC0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 3481BD4F0EACF81D00C78F66 /* SettingsViewController.h */; - name = "SettingsViewController.h: 24"; - rLen = 0; - rLoc = 453; - rType = 0; - vrLen = 458; - vrLoc = 0; - }; - 341D12D40F01B1CC0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347A021B0E93CDA200D716CB /* MyCLController.h */; - name = "MyCLController.h: 41"; - rLen = 0; - rLoc = 2245; - rType = 0; - vrLen = 1975; - vrLoc = 1415; - }; - 341D12D50F01B1CC0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 3481BD500EACF81D00C78F66 /* SettingsViewController.m */; - name = "SettingsViewController.m: 54"; - rLen = 163; - rLoc = 1463; - rType = 0; - vrLen = 2076; - vrLoc = 762; - }; - 341D12D60F01B1CC0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 205"; - rLen = 6; - rLoc = 7524; - rType = 0; - vrLen = 2316; - vrLoc = 6467; - }; - 341D12D70F01B1CC0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 48"; - rLen = 0; - rLoc = 1480; - rType = 0; - vrLen = 1618; - vrLoc = 35; - }; - 341D12D80F01B1CC0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 108"; - rLen = 0; - rLoc = 3809; - rType = 0; - vrLen = 1606; - vrLoc = 0; - }; - 341D12D90F01B1CC0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 3481BD500EACF81D00C78F66 /* SettingsViewController.m */; - name = "SettingsViewController.m: 167"; - rLen = 6; - rLoc = 5463; - rType = 0; - vrLen = 2047; - vrLoc = 339; - }; - 341D12DA0F01B1CC0095C69B /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D1107310486CEB800E47090 /* Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - ); - name = /Users/matthew/Projects/mySociety/iPhone/FixMyStreet/Info.plist; - rLen = 0; - rLoc = 2147483647; - }; - 341D12DB0F01B1CC0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 3481BD4F0EACF81D00C78F66 /* SettingsViewController.h */; - name = "SettingsViewController.h: 24"; - rLen = 0; - rLoc = 453; - rType = 0; - vrLen = 458; - vrLoc = 0; - }; - 341D12DC0F01B1CC0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 3481BD500EACF81D00C78F66 /* SettingsViewController.m */; - name = "SettingsViewController.m: 15"; - rLen = 6; - rLoc = 324; - rType = 0; - vrLen = 1723; - vrLoc = 198; - }; - 341D12DD0F01B1CC0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 335"; - rLen = 6; - rLoc = 12258; - rType = 0; - vrLen = 2005; - vrLoc = 10785; - }; - 341D12DE0F01B1CC0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 3481BD500EACF81D00C78F66 /* SettingsViewController.m */; - name = "SettingsViewController.m: 15"; - rLen = 6; - rLoc = 324; - rType = 0; - vrLen = 1921; - vrLoc = 1122; - }; - 341D12DF0F01B1CC0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 108"; - rLen = 0; - rLoc = 3809; - rType = 0; - vrLen = 1719; - vrLoc = 334; - }; - 341D12E00F01B1CC0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347A021B0E93CDA200D716CB /* MyCLController.h */; - name = "MyCLController.h: 41"; - rLen = 0; - rLoc = 2245; - rType = 0; - vrLen = 1975; - vrLoc = 1415; - }; - 341D12E10F01B1CC0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 3481BD500EACF81D00C78F66 /* SettingsViewController.m */; - name = "SettingsViewController.m: 41"; - rLen = 47; - rLoc = 1195; - rType = 0; - vrLen = 2076; - vrLoc = 762; - }; - 341D12E20F01B1CC0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 50"; - rLen = 0; - rLoc = 1543; - rType = 0; - vrLen = 1293; - vrLoc = 1173; - }; - 341D12E30F01B1CC0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 3481BD500EACF81D00C78F66 /* SettingsViewController.m */; - name = "SettingsViewController.m: 54"; - rLen = 163; - rLoc = 1463; - rType = 0; - vrLen = 2076; - vrLoc = 762; - }; - 341D12E40F01B1CC0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 48"; - rLen = 0; - rLoc = 1480; - rType = 0; - vrLen = 1632; - vrLoc = 35; - }; - 341D12E50F01B1CC0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 205"; - rLen = 6; - rLoc = 7524; - rType = 0; - vrLen = 2316; - vrLoc = 6467; - }; - 341D12E60F01B1CC0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 48"; - rLen = 0; - rLoc = 1480; - rType = 0; - vrLen = 1632; - vrLoc = 35; - }; - 341D12E80F01B2820095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 3481BD500EACF81D00C78F66 /* SettingsViewController.m */; - name = "SettingsViewController.m: 63"; - rLen = 3255; - rLoc = 1732; - rType = 0; - vrLen = 1926; - vrLoc = 3692; - }; - 341D12E90F01B2820095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 61"; - rLen = 0; - rLoc = 1794; - rType = 0; - vrLen = 1347; - vrLoc = 1173; - }; - 341D12EA0F01B2820095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 48"; - rLen = 0; - rLoc = 1480; - rType = 0; - vrLen = 1632; - vrLoc = 35; - }; - 341D12EB0F01B2820095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 3481BD500EACF81D00C78F66 /* SettingsViewController.m */; - name = "SettingsViewController.m: 54"; - rLen = 163; - rLoc = 1463; - rType = 0; - vrLen = 2002; - vrLoc = 762; - }; - 341D12EC0F01B2820095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 61"; - rLen = 0; - rLoc = 1794; - rType = 0; - vrLen = 1347; - vrLoc = 1173; - }; - 341D12ED0F01B2820095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 3481BD500EACF81D00C78F66 /* SettingsViewController.m */; - name = "SettingsViewController.m: 63"; - rLen = 3255; - rLoc = 1732; - rType = 0; - vrLen = 1926; - vrLoc = 3692; - }; - 341D12EE0F01B2820095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 84"; - rLen = 0; - rLoc = 2620; - rType = 0; - vrLen = 1442; - vrLoc = 1944; - }; - 341D12F00F01B29C0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 82"; - rLen = 0; - rLoc = 2612; - rType = 0; - vrLen = 1597; - vrLoc = 1673; - }; - 341D12F20F01B2C10095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 69"; - rLen = 0; - rLoc = 1965; - rType = 0; - vrLen = 1597; - vrLoc = 1673; - }; - 341D12F40F01B2CA0095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 69"; - rLen = 0; - rLoc = 1965; - rType = 0; - vrLen = 1597; - vrLoc = 1673; - }; - 341D12F60F01B2E00095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 65"; - rLen = 0; - rLoc = 1832; - rType = 0; - vrLen = 1568; - vrLoc = 1529; - }; - 341D12F80F01B3110095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 76"; - rLen = 0; - rLoc = 2527; - rType = 0; - vrLen = 1551; - vrLoc = 1529; - }; - 341D12FA0F01B3350095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 76"; - rLen = 0; - rLoc = 2527; - rType = 0; - vrLen = 1673; - vrLoc = 1529; - }; - 341D12FC0F01B3520095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 76"; - rLen = 0; - rLoc = 2495; - rType = 0; - vrLen = 1551; - vrLoc = 1529; - }; - 341D12FE0F01B3670095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 76"; - rLen = 0; - rLoc = 2495; - rType = 0; - vrLen = 1551; - vrLoc = 1529; - }; - 341D13000F01B3860095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 76"; - rLen = 0; - rLoc = 2527; - rType = 0; - vrLen = 1554; - vrLoc = 1529; - }; - 341D13020F01B4650095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 76"; - rLen = 0; - rLoc = 2527; - rType = 0; - vrLen = 1665; - vrLoc = 1529; - }; - 341D13030F01B4650095C69B /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D1107310486CEB800E47090 /* Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - ); - name = /Users/matthew/Projects/mySociety/iPhone/FixMyStreet/Info.plist; - rLen = 0; - rLoc = 2147483647; - }; - 341D13040F01B4650095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 134"; - rLen = 0; - rLoc = 6093; - rType = 0; - vrLen = 3320; - vrLoc = 5040; - }; - 341D13050F01B4650095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712720E8D367F0051DFFD /* InputTableViewController.h */; - name = "InputTableViewController.h: 39"; - rLen = 0; - rLoc = 1191; - rType = 0; - vrLen = 1330; - vrLoc = 0; - }; - 341D13060F01B4650095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - name = "EditSubjectViewController.m: 76"; - rLen = 0; - rLoc = 2527; - rType = 0; - vrLen = 1665; - vrLoc = 1529; - }; - 341D13070F01B4650095C69B /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D1107310486CEB800E47090 /* Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - ); - name = /Users/matthew/Projects/mySociety/iPhone/FixMyStreet/Info.plist; - rLen = 0; - rLoc = 2147483647; - }; - 341D13080F01B4650095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712720E8D367F0051DFFD /* InputTableViewController.h */; - name = "InputTableViewController.h: 39"; - rLen = 0; - rLoc = 1191; - rType = 0; - vrLen = 1330; - vrLoc = 0; - }; - 341D13090F01B4650095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 134"; - rLen = 0; - rLoc = 6093; - rType = 0; - vrLen = 3320; - vrLoc = 5040; - }; - 341D130A0F01B4650095C69B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712720E8D367F0051DFFD /* InputTableViewController.h */; - name = "InputTableViewController.h: 39"; - rLen = 0; - rLoc = 1191; - rType = 0; - vrLen = 1330; - vrLoc = 0; - }; - 3442AA200EE575BA000B191D /* Reachability.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1229, 1750}}"; - sepNavSelRange = "{1145, 0}"; - sepNavVisRange = "{0, 2615}"; - }; - }; - 3442AA210EE575BA000B191D /* Reachability.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1229, 8148}}"; - sepNavSelRange = "{11113, 0}"; - sepNavVisRange = "{21184, 1815}"; - }; - }; - 344E0D540E91440500483FD6 /* imageCell.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1229, 756}}"; - sepNavSelRange = "{264, 0}"; - sepNavVisRange = "{0, 412}"; - sepNavWindowFrame = "{{15, 615}, {750, 558}}"; - }; - }; - 344E0D550E91440500483FD6 /* imageCell.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {758, 980}}"; - sepNavSelRange = "{408, 0}"; - sepNavVisRange = "{174, 1898}"; - sepNavWindowFrame = "{{38, 594}, {750, 558}}"; - }; - }; - 344E0E5B0E918B1000483FD6 /* Report.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {758, 761}}"; - sepNavSelRange = "{243, 0}"; - sepNavVisRange = "{0, 248}"; - }; - }; - 344E0E5C0E918B1000483FD6 /* Report.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1229, 854}}"; - sepNavSelRange = "{83, 0}"; - sepNavVisRange = "{0, 1077}"; - sepNavWindowFrame = "{{84, 552}, {750, 558}}"; - }; - }; - 345577AE0EAE24AF008C5D7F /* EditSubjectViewController.m:152 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - functionName = "-updateSummary:"; - hitCount = 0; - ignoreCount = 0; - lineNumber = 152; - location = FixMyStreet; - modificationTime = 246888798.999875; - state = 2; - }; - 345577D30EAE262B008C5D7F /* EditSubjectViewController.m:152 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - functionName = "-updateSummary:"; - hitCount = 0; - ignoreCount = 0; - lineNumber = 152; - location = FixMyStreet; - modificationTime = 246888798.999893; - state = 2; - }; - 345577D50EAE262C008C5D7F /* EditSubjectViewController.m:152 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; - functionName = "-updateSummary:"; - hitCount = 0; - ignoreCount = 0; - lineNumber = 152; - location = FixMyStreet; - modificationTime = 246888798.9999011; - state = 2; - }; - 347710680E8BD7AA0051DFFD /* FixMyStreet */ = { - isa = PBXExecutable; - activeArgIndices = ( - ); - argumentStrings = ( - ); - autoAttachOnCrash = 1; - breakpointsEnabled = 0; - configStateDict = { - }; - customDataFormattersEnabled = 1; - debuggerPlugin = GDBDebugging; - disassemblyDisplayState = 0; - dylibVariantSuffix = ""; - enableDebugStr = 1; - environmentEntries = ( - ); - executableSystemSymbolLevel = 0; - executableUserSymbolLevel = 0; - libgmallocEnabled = 0; - name = FixMyStreet; - savedGlobals = { - }; - sourceDirectories = ( - ); - variableFormatDictionary = { - }; - }; - 347710780E8BD7BA0051DFFD /* Source Control */ = { - isa = PBXSourceControlManager; - fallbackIsa = XCSourceControlManager; - isSCMEnabled = 0; - scmConfiguration = { - repositoryName = mySociety; - }; - }; - 347710790E8BD7BA0051DFFD /* Code sense */ = { - isa = PBXCodeSenseManager; - indexTemplatePath = ""; - }; - 347712720E8D367F0051DFFD /* InputTableViewController.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1229, 770}}"; - sepNavSelRange = "{1191, 0}"; - sepNavVisRange = "{0, 1330}"; - sepNavWindowFrame = "{{153, 489}, {750, 558}}"; - }; - }; - 347712730E8D367F0051DFFD /* InputTableViewController.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {752, 5250}}"; - sepNavSelRange = "{482, 0}"; - sepNavVisRange = "{0, 676}"; - sepNavWindowFrame = "{{1082, 467}, {750, 558}}"; - }; - }; - 347A021B0E93CDA200D716CB /* MyCLController.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1229, 1162}}"; - sepNavSelRange = "{2245, 0}"; - sepNavVisRange = "{1415, 1975}"; - sepNavWindowFrame = "{{15, 94}, {738, 1079}}"; - }; - }; - 347A021C0E93CDA200D716CB /* MyCLController.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {752, 2492}}"; - sepNavSelRange = "{4537, 12}"; - sepNavVisRange = "{3688, 1243}"; - sepNavWindowFrame = "{{15, 94}, {738, 1079}}"; - }; - }; - 3481BD1F0EACEE3300C78F66 /* EditingTableViewCell.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1229, 756}}"; - sepNavSelRange = "{239, 11}"; - sepNavVisRange = "{0, 325}"; - }; - }; - 3481BD200EACEE3300C78F66 /* EditingTableViewCell.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1229, 756}}"; - sepNavSelRange = "{437, 11}"; - sepNavVisRange = "{0, 1099}"; - }; - }; - 3481BD4F0EACF81D00C78F66 /* SettingsViewController.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1229, 770}}"; - sepNavSelRange = "{453, 0}"; - sepNavVisRange = "{0, 458}"; - }; - }; - 3481BD500EACF81D00C78F66 /* SettingsViewController.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1229, 2870}}"; - sepNavSelRange = "{1732, 3255}"; - sepNavVisRange = "{3692, 1926}"; - sepNavWindowFrame = "{{15, 94}, {738, 1079}}"; - }; - }; - 34865A1D0EE7F0B000716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 3442AA210EE575BA000B191D /* Reachability.m */; - name = "Reachability.m: 255"; - rLen = 0; - rLoc = 11113; - rType = 0; - vrLen = 1815; - vrLoc = 21184; - }; - 34865A210EE7F0B000716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712720E8D367F0051DFFD /* InputTableViewController.h */; - name = "InputTableViewController.h: 40"; - rLen = 0; - rLoc = 1207; - rType = 0; - vrLen = 1330; - vrLoc = 0; - }; - 34865A230EE7F0B000716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 110"; - rLen = 0; - rLoc = 5107; - rType = 0; - vrLen = 2775; - vrLoc = 4393; - }; - 34865A250EE7F0B000716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 108"; - rLen = 410; - rLoc = 4884; - rType = 0; - vrLen = 2775; - vrLoc = 4393; - }; - 34865A260EE7F0B000716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 3442AA210EE575BA000B191D /* Reachability.m */; - name = "Reachability.m: 255"; - rLen = 0; - rLoc = 11113; - rType = 0; - vrLen = 1815; - vrLoc = 21184; - }; - 34865A280EE7F0B000716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 108"; - rLen = 410; - rLoc = 4884; - rType = 0; - vrLen = 2775; - vrLoc = 4393; - }; - 34865A2A0EE7F0B000716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347A021B0E93CDA200D716CB /* MyCLController.h */; - name = "MyCLController.h: 54"; - rLen = 0; - rLoc = 2701; - rType = 0; - vrLen = 2104; - vrLoc = 1256; - }; - 34865A2B0EE7F0B000716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347A021C0E93CDA200D716CB /* MyCLController.m */; - name = "MyCLController.m: 114"; - rLen = 104; - rLoc = 4560; - rType = 0; - vrLen = 2087; - vrLoc = 3523; - }; - 34865A2D0EE7F0B000716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347A021C0E93CDA200D716CB /* MyCLController.m */; - name = "MyCLController.m: 67"; - rLen = 7; - rLoc = 2939; - rType = 0; - vrLen = 1629; - vrLoc = 2067; - }; - 34865A2F0EE7F0B000716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712720E8D367F0051DFFD /* InputTableViewController.h */; - name = "InputTableViewController.h: 40"; - rLen = 0; - rLoc = 1207; - rType = 0; - vrLen = 1330; - vrLoc = 0; - }; - 34865A4F0EE7F25E00716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 133"; - rLen = 0; - rLoc = 6093; - rType = 0; - vrLen = 3203; - vrLoc = 5225; - }; - 34865A5A0EE7F29C00716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 53"; - rLen = 97; - rLoc = 1614; - rType = 0; - vrLen = 1932; - vrLoc = 676; - }; - 34865A630EE7FB7600716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623240D0F684500981E51 /* FixMyStreetAppDelegate.h */; - name = "FixMyStreetAppDelegate.h: 15"; - rLen = 0; - rLoc = 351; - rType = 0; - vrLen = 1201; - vrLoc = 0; - }; - 34865A650EE7FB7600716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 214"; - rLen = 0; - rLoc = 11513; - rType = 0; - vrLen = 2642; - vrLoc = 9336; - }; - 34865A660EE7FB7600716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 80"; - rLen = 0; - rLoc = 2369; - rType = 0; - vrLen = 1972; - vrLoc = 10487; - }; - 34865A670EE7FB7600716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 212"; - rLen = 0; - rLoc = 11187; - rType = 0; - vrLen = 2922; - vrLoc = 4806; - }; - 34865A680EE7FB7600716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623240D0F684500981E51 /* FixMyStreetAppDelegate.h */; - name = "FixMyStreetAppDelegate.h: 15"; - rLen = 0; - rLoc = 351; - rType = 0; - vrLen = 1201; - vrLoc = 0; - }; - 34865A6C0EE7FBA600716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 213"; - rLen = 0; - rLoc = 11207; - rType = 0; - vrLen = 2451; - vrLoc = 9564; - }; - 34865A750EE7FC4600716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 287"; - rLen = 74; - rLoc = 10478; - rType = 0; - vrLen = 2172; - vrLoc = 9392; - }; - 34865A760EE7FC4600716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347A021C0E93CDA200D716CB /* MyCLController.m */; - name = "MyCLController.m: 120"; - rLen = 0; - rLoc = 4895; - rType = 0; - vrLen = 2029; - vrLoc = 3494; - }; - 34865A770EE7FC4600716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 213"; - rLen = 0; - rLoc = 11207; - rType = 0; - vrLen = 3376; - vrLoc = 5278; - }; - 34865A780EE7FC4600716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 287"; - rLen = 74; - rLoc = 10478; - rType = 0; - vrLen = 2172; - vrLoc = 9392; - }; - 34865A790EE7FC4600716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 116"; - rLen = 0; - rLoc = 5333; - rType = 0; - vrLen = 3431; - vrLoc = 5278; - }; - 34865A850EE7FC8D00716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347A021C0E93CDA200D716CB /* MyCLController.m */; - name = "MyCLController.m: 73"; - rLen = 0; - rLoc = 3084; - rType = 0; - vrLen = 1791; - vrLoc = 1654; - }; - 34865A860EE7FC8D00716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 124"; - rLen = 0; - rLoc = 5761; - rType = 0; - vrLen = 3080; - vrLoc = 5278; - }; - 34865A890EE7FD2000716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347A021B0E93CDA200D716CB /* MyCLController.h */; - name = "MyCLController.h: 41"; - rLen = 0; - rLoc = 2245; - rType = 0; - vrLen = 1898; - vrLoc = 1492; - }; - 34865A8B0EE7FD2000716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347A021B0E93CDA200D716CB /* MyCLController.h */; - name = "MyCLController.h: 41"; - rLen = 0; - rLoc = 2245; - rType = 0; - vrLen = 1898; - vrLoc = 1492; - }; - 34865A9B0EE7FE0700716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 222"; - rLen = 0; - rLoc = 8483; - rType = 0; - vrLen = 2043; - vrLoc = 7138; - }; - 34865A9C0EE7FE0700716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347A021C0E93CDA200D716CB /* MyCLController.m */; - name = "MyCLController.m: 45"; - rLen = 0; - rLoc = 2478; - rType = 0; - vrLen = 1871; - vrLoc = 1577; - }; - 34865ACA0EE7FEED00716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 134"; - rLen = 0; - rLoc = 6093; - rType = 0; - vrLen = 3408; - vrLoc = 5225; - }; - 34865AE10EE7FF8A00716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 130"; - rLen = 0; - rLoc = 4516; - rType = 0; - vrLen = 2072; - vrLoc = 4166; - }; - 34865AE60EE8002400716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347A021C0E93CDA200D716CB /* MyCLController.m */; - name = "MyCLController.m: 117"; - rLen = 33; - rLoc = 4527; - rType = 0; - vrLen = 2059; - vrLoc = 3686; - }; - 34865AE80EE8002400716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 138"; - rLen = 0; - rLoc = 6289; - rType = 0; - vrLen = 3133; - vrLoc = 5225; - }; - 34865AE90EE8002400716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 292"; - rLen = 0; - rLoc = 10552; - rType = 0; - vrLen = 2414; - vrLoc = 9526; - }; - 34865AEA0EE8002400716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347A021C0E93CDA200D716CB /* MyCLController.m */; - name = "MyCLController.m: 117"; - rLen = 33; - rLoc = 4527; - rType = 0; - vrLen = 2059; - vrLoc = 3686; - }; - 34865AF80EE800C900716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 293"; - rLen = 0; - rLoc = 10556; - rType = 0; - vrLen = 2436; - vrLoc = 9526; - }; - 34865AF90EE800C900716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 138"; - rLen = 0; - rLoc = 6289; - rType = 0; - vrLen = 3320; - vrLoc = 5040; - }; - 34865AFA0EE800C900716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; - name = "InputTableViewController.m: 293"; - rLen = 0; - rLoc = 10556; - rType = 0; - vrLen = 2436; - vrLoc = 9526; - }; - 34865B090EE803F100716A66 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; - name = "FixMyStreetAppDelegate.m: 134"; - rLen = 0; - rLoc = 6093; - rType = 0; - vrLen = 3316; - vrLoc = 5040; - }; - 3499E5A30E95311A006F2DA2 /* .cvsignore */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {758, 761}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 6}"; - }; - }; - 349A561E0ECB07DF0091BE4F /* Default.png */ = { - uiCtxt = { - sepNavWindowFrame = "{{417, 72}, {738, 1079}}"; - }; - }; - 349AFEAC0E925AAA008E83C1 /* EditSubjectViewController.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1229, 756}}"; - sepNavSelRange = "{586, 0}"; - sepNavVisRange = "{0, 592}"; - sepNavWindowFrame = "{{15, 615}, {750, 558}}"; - }; - }; - 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1229, 2240}}"; - sepNavSelRange = "{2527, 0}"; - sepNavVisRange = "{1529, 1665}"; - sepNavWindowFrame = "{{61, 573}, {750, 558}}"; - }; - }; - 34C17A8D0EB0CCD300768D1C /* AboutViewController.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1229, 756}}"; - sepNavSelRange = "{305, 0}"; - sepNavVisRange = "{0, 311}"; - }; - }; - 34C17A8E0EB0CCD300768D1C /* AboutViewController.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1229, 756}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 1270}"; - }; - }; - 8D1107310486CEB800E47090 /* Info.plist */ = { - uiCtxt = { - sepNavWindowFrame = "{{15, 94}, {738, 1079}}"; - }; - }; -} diff --git a/iphone/FixMyStreet/FixMyStreet.xcodeproj/project.pbxproj b/iphone/FixMyStreet/FixMyStreet.xcodeproj/project.pbxproj deleted file mode 100755 index 759918450..000000000 --- a/iphone/FixMyStreet/FixMyStreet.xcodeproj/project.pbxproj +++ /dev/null @@ -1,435 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 45; - objects = { - -/* Begin PBXBuildFile section */ - 1D3623260D0F684500981E51 /* FixMyStreetAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */; }; - 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; - 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; - 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; - 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; - 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; }; - 3442AA220EE575BA000B191D /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 3442AA210EE575BA000B191D /* Reachability.m */; }; - 3442AA8F0EE578CF000B191D /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3442AA8E0EE578CF000B191D /* SystemConfiguration.framework */; }; - 344E0D560E91440500483FD6 /* imageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 344E0D550E91440500483FD6 /* imageCell.m */; }; - 344E0E5D0E918B1000483FD6 /* Report.m in Sources */ = {isa = PBXBuildFile; fileRef = 344E0E5C0E918B1000483FD6 /* Report.m */; }; - 347710950E8BDA9B0051DFFD /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 347710940E8BDA9B0051DFFD /* Icon.png */; }; - 347712740E8D367F0051DFFD /* InputTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 347712730E8D367F0051DFFD /* InputTableViewController.m */; }; - 347A01810E93B6A600D716CB /* EditSubjectView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 347A01800E93B6A600D716CB /* EditSubjectView.xib */; }; - 347A021D0E93CDA200D716CB /* MyCLController.m in Sources */ = {isa = PBXBuildFile; fileRef = 347A021C0E93CDA200D716CB /* MyCLController.m */; }; - 347A02770E93D2A800D716CB /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 347A02760E93D2A800D716CB /* CoreLocation.framework */; }; - 3481BD210EACEE3300C78F66 /* EditingTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3481BD200EACEE3300C78F66 /* EditingTableViewCell.m */; }; - 3481BD510EACF81D00C78F66 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3481BD500EACF81D00C78F66 /* SettingsViewController.m */; }; - 348C47900ECB12DE0030EF1C /* Entitlements.plist in Resources */ = {isa = PBXBuildFile; fileRef = 348C478F0ECB12DE0030EF1C /* Entitlements.plist */; }; - 3499E5A40E95311A006F2DA2 /* .cvsignore in Resources */ = {isa = PBXBuildFile; fileRef = 3499E5A30E95311A006F2DA2 /* .cvsignore */; }; - 349A01770E928824008E83C1 /* MainViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 349A01760E928824008E83C1 /* MainViewController.xib */; }; - 349A561F0ECB07DF0091BE4F /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 349A561E0ECB07DF0091BE4F /* Default.png */; }; - 349AFEAE0E925AAA008E83C1 /* EditSubjectViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */; }; - 34C17A540EB0C69800768D1C /* mysociety.png in Resources */ = {isa = PBXBuildFile; fileRef = 34C17A530EB0C69700768D1C /* mysociety.png */; }; - 34C17A5C0EB0C77E00768D1C /* AboutView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34C17A5B0EB0C77E00768D1C /* AboutView.xib */; }; - 34C17A8F0EB0CCD300768D1C /* AboutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34C17A8E0EB0CCD300768D1C /* AboutViewController.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 1D3623240D0F684500981E51 /* FixMyStreetAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FixMyStreetAppDelegate.h; sourceTree = "<group>"; }; - 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FixMyStreetAppDelegate.m; sourceTree = "<group>"; wrapsLines = 1; }; - 1D6058910D05DD3D006BFB54 /* FixMyStreet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FixMyStreet.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 28AD733E0D9D9553002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = "<group>"; }; - 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; - 32CA4F630368D1EE00C91783 /* FixMyStreet_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FixMyStreet_Prefix.pch; sourceTree = "<group>"; }; - 342F98AE0E951731006935E9 /* Root.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Root.plist; sourceTree = "<group>"; }; - 3442AA200EE575BA000B191D /* Reachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = "<group>"; }; - 3442AA210EE575BA000B191D /* Reachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Reachability.m; sourceTree = "<group>"; }; - 3442AA8E0EE578CF000B191D /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; - 344E0D540E91440500483FD6 /* imageCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = imageCell.h; path = Classes/imageCell.h; sourceTree = "<group>"; }; - 344E0D550E91440500483FD6 /* imageCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = imageCell.m; path = Classes/imageCell.m; sourceTree = "<group>"; wrapsLines = 1; }; - 344E0E5B0E918B1000483FD6 /* Report.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Report.h; path = Classes/Report.h; sourceTree = "<group>"; }; - 344E0E5C0E918B1000483FD6 /* Report.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Report.m; path = Classes/Report.m; sourceTree = "<group>"; }; - 347710940E8BDA9B0051DFFD /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = "<group>"; }; - 347712720E8D367F0051DFFD /* InputTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InputTableViewController.h; sourceTree = "<group>"; }; - 347712730E8D367F0051DFFD /* InputTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InputTableViewController.m; sourceTree = "<group>"; wrapsLines = 1; }; - 347A01800E93B6A600D716CB /* EditSubjectView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = EditSubjectView.xib; sourceTree = "<group>"; }; - 347A021B0E93CDA200D716CB /* MyCLController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MyCLController.h; path = ../MyCLController.h; sourceTree = "<group>"; }; - 347A021C0E93CDA200D716CB /* MyCLController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MyCLController.m; path = ../MyCLController.m; sourceTree = "<group>"; }; - 347A02760E93D2A800D716CB /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; - 3481BD1F0EACEE3300C78F66 /* EditingTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditingTableViewCell.h; sourceTree = "<group>"; }; - 3481BD200EACEE3300C78F66 /* EditingTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EditingTableViewCell.m; sourceTree = "<group>"; }; - 3481BD4F0EACF81D00C78F66 /* SettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsViewController.h; sourceTree = "<group>"; }; - 3481BD500EACF81D00C78F66 /* SettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SettingsViewController.m; sourceTree = "<group>"; wrapsLines = 1; }; - 348C478F0ECB12DE0030EF1C /* Entitlements.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Entitlements.plist; sourceTree = "<group>"; }; - 3499E5A30E95311A006F2DA2 /* .cvsignore */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .cvsignore; sourceTree = "<group>"; }; - 349A01760E928824008E83C1 /* MainViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainViewController.xib; sourceTree = "<group>"; }; - 349A561E0ECB07DF0091BE4F /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Default.png; path = Classes/Default.png; sourceTree = "<group>"; }; - 349AFEAC0E925AAA008E83C1 /* EditSubjectViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditSubjectViewController.h; sourceTree = "<group>"; }; - 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EditSubjectViewController.m; sourceTree = "<group>"; }; - 34C17A530EB0C69700768D1C /* mysociety.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = mysociety.png; path = Classes/mysociety.png; sourceTree = "<group>"; }; - 34C17A5B0EB0C77E00768D1C /* AboutView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AboutView.xib; sourceTree = "<group>"; }; - 34C17A8D0EB0CCD300768D1C /* AboutViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AboutViewController.h; sourceTree = "<group>"; }; - 34C17A8E0EB0CCD300768D1C /* AboutViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AboutViewController.m; sourceTree = "<group>"; }; - 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, - 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, - 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */, - 347A02770E93D2A800D716CB /* CoreLocation.framework in Frameworks */, - 3442AA8F0EE578CF000B191D /* SystemConfiguration.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 080E96DDFE201D6D7F000001 /* Classes */ = { - isa = PBXGroup; - children = ( - 34C17A8D0EB0CCD300768D1C /* AboutViewController.h */, - 34C17A8E0EB0CCD300768D1C /* AboutViewController.m */, - 347712720E8D367F0051DFFD /* InputTableViewController.h */, - 347712730E8D367F0051DFFD /* InputTableViewController.m */, - 3481BD4F0EACF81D00C78F66 /* SettingsViewController.h */, - 3481BD500EACF81D00C78F66 /* SettingsViewController.m */, - 347A021B0E93CDA200D716CB /* MyCLController.h */, - 347A021C0E93CDA200D716CB /* MyCLController.m */, - 1D3623240D0F684500981E51 /* FixMyStreetAppDelegate.h */, - 1D3623250D0F684500981E51 /* FixMyStreetAppDelegate.m */, - 3442AA200EE575BA000B191D /* Reachability.h */, - 3442AA210EE575BA000B191D /* Reachability.m */, - 3481BD1F0EACEE3300C78F66 /* EditingTableViewCell.h */, - 3481BD200EACEE3300C78F66 /* EditingTableViewCell.m */, - 349AFEAC0E925AAA008E83C1 /* EditSubjectViewController.h */, - 349AFEAD0E925AAA008E83C1 /* EditSubjectViewController.m */, - ); - path = Classes; - sourceTree = "<group>"; - }; - 19C28FACFE9D520D11CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 1D6058910D05DD3D006BFB54 /* FixMyStreet.app */, - ); - name = Products; - sourceTree = "<group>"; - }; - 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { - isa = PBXGroup; - children = ( - 3499E5A30E95311A006F2DA2 /* .cvsignore */, - 342F98810E94E3DE006935E9 /* OldStuff */, - 080E96DDFE201D6D7F000001 /* Classes */, - 342F98AD0E951731006935E9 /* Settings */, - 29B97315FDCFA39411CA2CEA /* Other Sources */, - 29B97317FDCFA39411CA2CEA /* Resources */, - 29B97323FDCFA39411CA2CEA /* Frameworks */, - 19C28FACFE9D520D11CA2CBB /* Products */, - ); - name = CustomTemplate; - sourceTree = "<group>"; - }; - 29B97315FDCFA39411CA2CEA /* Other Sources */ = { - isa = PBXGroup; - children = ( - 32CA4F630368D1EE00C91783 /* FixMyStreet_Prefix.pch */, - 29B97316FDCFA39411CA2CEA /* main.m */, - ); - name = "Other Sources"; - sourceTree = "<group>"; - }; - 29B97317FDCFA39411CA2CEA /* Resources */ = { - isa = PBXGroup; - children = ( - 348C478F0ECB12DE0030EF1C /* Entitlements.plist */, - 34C17A5B0EB0C77E00768D1C /* AboutView.xib */, - 349A561E0ECB07DF0091BE4F /* Default.png */, - 34C17A530EB0C69700768D1C /* mysociety.png */, - 347710940E8BDA9B0051DFFD /* Icon.png */, - 347A01800E93B6A600D716CB /* EditSubjectView.xib */, - 28AD733E0D9D9553002E5188 /* MainWindow.xib */, - 349A01760E928824008E83C1 /* MainViewController.xib */, - 8D1107310486CEB800E47090 /* Info.plist */, - ); - name = Resources; - sourceTree = "<group>"; - }; - 29B97323FDCFA39411CA2CEA /* Frameworks */ = { - isa = PBXGroup; - children = ( - 3442AA8E0EE578CF000B191D /* SystemConfiguration.framework */, - 347A02760E93D2A800D716CB /* CoreLocation.framework */, - 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, - 1D30AB110D05D00D00671497 /* Foundation.framework */, - 288765FC0DF74451002DB57D /* CoreGraphics.framework */, - ); - name = Frameworks; - sourceTree = "<group>"; - }; - 342F98810E94E3DE006935E9 /* OldStuff */ = { - isa = PBXGroup; - children = ( - 344E0E5C0E918B1000483FD6 /* Report.m */, - 344E0D550E91440500483FD6 /* imageCell.m */, - 344E0E5B0E918B1000483FD6 /* Report.h */, - 344E0D540E91440500483FD6 /* imageCell.h */, - ); - name = OldStuff; - sourceTree = "<group>"; - }; - 342F98AD0E951731006935E9 /* Settings */ = { - isa = PBXGroup; - children = ( - 342F98AE0E951731006935E9 /* Root.plist */, - ); - name = Settings; - sourceTree = "<group>"; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 1D6058900D05DD3D006BFB54 /* FixMyStreet */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "FixMyStreet" */; - buildPhases = ( - 1D60588D0D05DD3D006BFB54 /* Resources */, - 1D60588E0D05DD3D006BFB54 /* Sources */, - 1D60588F0D05DD3D006BFB54 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = FixMyStreet; - productName = FixMyStreet; - productReference = 1D6058910D05DD3D006BFB54 /* FixMyStreet.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 29B97313FDCFA39411CA2CEA /* Project object */ = { - isa = PBXProject; - buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "FixMyStreet" */; - compatibilityVersion = "Xcode 3.1"; - hasScannedForEncodings = 1; - knownRegions = ( - English, - Japanese, - French, - German, - en, - ); - mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 1D6058900D05DD3D006BFB54 /* FixMyStreet */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 1D60588D0D05DD3D006BFB54 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */, - 347710950E8BDA9B0051DFFD /* Icon.png in Resources */, - 349A01770E928824008E83C1 /* MainViewController.xib in Resources */, - 347A01810E93B6A600D716CB /* EditSubjectView.xib in Resources */, - 3499E5A40E95311A006F2DA2 /* .cvsignore in Resources */, - 34C17A540EB0C69800768D1C /* mysociety.png in Resources */, - 34C17A5C0EB0C77E00768D1C /* AboutView.xib in Resources */, - 349A561F0ECB07DF0091BE4F /* Default.png in Resources */, - 348C47900ECB12DE0030EF1C /* Entitlements.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 1D60588E0D05DD3D006BFB54 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1D60589B0D05DD56006BFB54 /* main.m in Sources */, - 1D3623260D0F684500981E51 /* FixMyStreetAppDelegate.m in Sources */, - 347712740E8D367F0051DFFD /* InputTableViewController.m in Sources */, - 344E0D560E91440500483FD6 /* imageCell.m in Sources */, - 344E0E5D0E918B1000483FD6 /* Report.m in Sources */, - 349AFEAE0E925AAA008E83C1 /* EditSubjectViewController.m in Sources */, - 347A021D0E93CDA200D716CB /* MyCLController.m in Sources */, - 3481BD210EACEE3300C78F66 /* EditingTableViewCell.m in Sources */, - 3481BD510EACF81D00C78F66 /* SettingsViewController.m in Sources */, - 34C17A8F0EB0CCD300768D1C /* AboutViewController.m in Sources */, - 3442AA220EE575BA000B191D /* Reachability.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 1D6058940D05DD3E006BFB54 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - ); - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = FixMyStreet_Prefix.pch; - INFOPLIST_FILE = Info.plist; - PRODUCT_NAME = FixMyStreet; - }; - name = Debug; - }; - 1D6058950D05DD3E006BFB54 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = FixMyStreet_Prefix.pch; - INFOPLIST_FILE = Info.plist; - PRODUCT_NAME = FixMyStreet; - }; - name = Release; - }; - 346099980ED46A5D00B731FF /* Distribution AppStore */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = iphoneos2.1; - }; - name = "Distribution AppStore"; - }; - 346099990ED46A5D00B731FF /* Distribution AppStore */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CODE_SIGN_ENTITLEMENTS = Entitlements.plist; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: UK Citizens Online Democracy"; - COPY_PHASE_STRIP = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = FixMyStreet_Prefix.pch; - INFOPLIST_FILE = Info.plist; - PRODUCT_NAME = FixMyStreet; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = "74CF3CC5-0ADC-4BF7-A4F1-21B5B4804F9E"; - }; - name = "Distribution AppStore"; - }; - 349A563F0ECB108A0091BE4F /* Distribution */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = iphoneos2.1; - }; - name = Distribution; - }; - 349A56400ECB108A0091BE4F /* Distribution */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CODE_SIGN_ENTITLEMENTS = Entitlements.plist; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: UK Citizens Online Democracy"; - COPY_PHASE_STRIP = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = FixMyStreet_Prefix.pch; - INFOPLIST_FILE = Info.plist; - PRODUCT_NAME = FixMyStreet; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = "3A3A6AE0-D989-4F0B-A3B2-5C628CBC57DE"; - }; - name = Distribution; - }; - C01FCF4F08A954540054247B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - ONLY_ACTIVE_ARCH = YES; - PREBINDING = NO; - SDKROOT = iphoneos2.1; - }; - name = Debug; - }; - C01FCF5008A954540054247B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = iphoneos2.1; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "FixMyStreet" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1D6058940D05DD3E006BFB54 /* Debug */, - 1D6058950D05DD3E006BFB54 /* Release */, - 349A56400ECB108A0091BE4F /* Distribution */, - 346099990ED46A5D00B731FF /* Distribution AppStore */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C01FCF4E08A954540054247B /* Build configuration list for PBXProject "FixMyStreet" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C01FCF4F08A954540054247B /* Debug */, - C01FCF5008A954540054247B /* Release */, - 349A563F0ECB108A0091BE4F /* Distribution */, - 346099980ED46A5D00B731FF /* Distribution AppStore */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; -} diff --git a/iphone/FixMyStreet/FixMyStreet_Prefix.pch b/iphone/FixMyStreet/FixMyStreet_Prefix.pch deleted file mode 100644 index aff82adce..000000000 --- a/iphone/FixMyStreet/FixMyStreet_Prefix.pch +++ /dev/null @@ -1,9 +0,0 @@ -// -// Prefix header for all source files of the 'FixMyStreet' target in the 'FixMyStreet' project -// - -#ifdef __OBJC__ - #import <Foundation/Foundation.h> - #import <UIKit/UIKit.h> - #import <CoreLocation/CoreLocation.h> -#endif diff --git a/iphone/FixMyStreet/Icon.png b/iphone/FixMyStreet/Icon.png Binary files differdeleted file mode 100755 index 87e437a18..000000000 --- a/iphone/FixMyStreet/Icon.png +++ /dev/null diff --git a/iphone/FixMyStreet/Info.plist b/iphone/FixMyStreet/Info.plist deleted file mode 100644 index fc58246b7..000000000 --- a/iphone/FixMyStreet/Info.plist +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>en</string> - <key>CFBundleDisplayName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundleExecutable</key> - <string>${EXECUTABLE_NAME}</string> - <key>CFBundleIconFile</key> - <string></string> - <key>CFBundleIdentifier</key> - <string>org.mysociety.${PRODUCT_NAME:identifier}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>APPL</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>1.0.3</string> - <key>LSRequiresIPhoneOS</key> - <true/> - <key>NSMainNibFile</key> - <string>MainWindow</string> -</dict> -</plist> diff --git a/iphone/FixMyStreet/MainViewController copy.xib b/iphone/FixMyStreet/MainViewController copy.xib deleted file mode 100644 index 480b7f6c6..000000000 --- a/iphone/FixMyStreet/MainViewController copy.xib +++ /dev/null @@ -1,433 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.02"> - <data> - <int key="IBDocument.SystemTarget">528</int> - <string key="IBDocument.SystemVersion">9F33</string> - <string key="IBDocument.InterfaceBuilderVersion">672</string> - <string key="IBDocument.AppKitVersion">949.34</string> - <string key="IBDocument.HIToolboxVersion">352.00</string> - <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> - <bool key="EncodedWithXMLCoder">YES</bool> - <integer value="16"/> - </object> - <object class="NSArray" key="IBDocument.PluginDependencies"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - </object> - <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBProxyObject" id="372490531"> - <string key="IBProxiedObjectIdentifier">IBFilesOwner</string> - </object> - <object class="IBProxyObject" id="711762367"> - <string key="IBProxiedObjectIdentifier">IBFirstResponder</string> - </object> - <object class="IBUIView" id="191373211"> - <reference key="NSNextResponder"/> - <int key="NSvFlags">292</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBUITableView" id="22920685"> - <reference key="NSNextResponder" ref="191373211"/> - <int key="NSvFlags">274</int> - <string key="NSFrame">{{0, -3}, {327, 483}}</string> - <reference key="NSSuperview" ref="191373211"/> - <bool key="IBUIOpaque">NO</bool> - <bool key="IBUIClipsSubviews">YES</bool> - <bool key="IBUIClearsContextBeforeDrawing">NO</bool> - <bool key="IBUIBouncesZoom">NO</bool> - <int key="IBUIStyle">1</int> - <int key="IBUISeparatorStyle">1</int> - <int key="IBUISectionIndexMinimumDisplayRowCount">0</int> - <bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool> - <float key="IBUIRowHeight">4.400000e+01</float> - <float key="IBUISectionHeaderHeight">2.700000e+01</float> - <float key="IBUISectionFooterHeight">2.700000e+01</float> - </object> - <object class="IBUITableView" id="810055614"> - <reference key="NSNextResponder" ref="191373211"/> - <int key="NSvFlags">274</int> - <string key="NSFrame">{{0, 128}, {320, 352}}</string> - <reference key="NSSuperview" ref="191373211"/> - <bool key="IBUIOpaque">NO</bool> - <bool key="IBUIClipsSubviews">YES</bool> - <bool key="IBUIClearsContextBeforeDrawing">NO</bool> - <bool key="IBUIBouncesZoom">NO</bool> - <int key="IBUIStyle">1</int> - <int key="IBUISeparatorStyle">1</int> - <int key="IBUISectionIndexMinimumDisplayRowCount">0</int> - <bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool> - <float key="IBUIRowHeight">4.400000e+01</float> - <float key="IBUISectionHeaderHeight">2.700000e+01</float> - <float key="IBUISectionFooterHeight">2.700000e+01</float> - </object> - <object class="IBUIView" id="691946431"> - <reference key="NSNextResponder" ref="191373211"/> - <int key="NSvFlags">292</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBUILabel" id="380571351"> - <reference key="NSNextResponder" ref="691946431"/> - <int key="NSvFlags">-2147483356</int> - <string key="NSFrame">{{0, 79}, {100, 21}}</string> - <reference key="NSSuperview" ref="691946431"/> - <object class="NSColor" key="IBUIBackgroundColor"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MAA</bytes> - </object> - <bool key="IBUIOpaque">NO</bool> - <bool key="IBUIClipsSubviews">YES</bool> - <float key="IBUIAlpha">5.000000e-01</float> - <bool key="IBUIUserInteractionEnabled">NO</bool> - <string key="IBUIText">Add photo</string> - <object class="NSColor" key="IBUITextColor" id="819630230"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MSAxIDEAA</bytes> - </object> - <nil key="IBUIHighlightedColor"/> - <int key="IBUIBaselineAdjustment">1</int> - <float key="IBUIMinimumFontSize">1.000000e+01</float> - <int key="IBUITextAlignment">1</int> - </object> - <object class="IBUIButton" id="612997257"> - <reference key="NSNextResponder" ref="691946431"/> - <int key="NSvFlags">292</int> - <string key="NSFrameSize">{100, 100}</string> - <reference key="NSSuperview" ref="691946431"/> - <bool key="IBUIOpaque">NO</bool> - <bool key="IBUIClearsContextBeforeDrawing">NO</bool> - <int key="IBUIContentHorizontalAlignment">0</int> - <int key="IBUIContentVerticalAlignment">0</int> - <object class="NSFont" key="IBUIFont" id="415071891"> - <string key="NSName">Helvetica-Bold</string> - <double key="NSSize">1.500000e+01</double> - <int key="NSfFlags">16</int> - </object> - <int key="IBUIButtonType">1</int> - <string key="IBUIHighlightedTitle"/> - <string key="IBUIDisabledTitle"/> - <string key="IBUISelectedTitle"/> - <string key="IBUINormalTitle"/> - <reference key="IBUIHighlightedTitleColor" ref="819630230"/> - <object class="NSColor" key="IBUINormalTitleColor"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA</bytes> - </object> - </object> - <object class="IBUIImageView" id="614509932"> - <reference key="NSNextResponder" ref="691946431"/> - <int key="NSvFlags">292</int> - <string key="NSFrame">{{-70, -14}, {240, 128}}</string> - <reference key="NSSuperview" ref="691946431"/> - <bool key="IBUIOpaque">NO</bool> - <bool key="IBUIClearsContextBeforeDrawing">NO</bool> - <int key="IBUIContentMode">4</int> - <bool key="IBUIUserInteractionEnabled">NO</bool> - </object> - </object> - <string key="NSFrame">{{200, 20}, {100, 100}}</string> - <reference key="NSSuperview" ref="191373211"/> - <object class="NSColor" key="IBUIBackgroundColor"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MQA</bytes> - <object class="NSColorSpace" key="NSCustomColorSpace" id="440851013"> - <int key="NSID">2</int> - </object> - </object> - <bool key="IBUIClearsContextBeforeDrawing">NO</bool> - </object> - <object class="IBUIButton" id="555835234"> - <reference key="NSNextResponder" ref="191373211"/> - <int key="NSvFlags">292</int> - <string key="NSFrame">{{9, 20}, {100, 100}}</string> - <reference key="NSSuperview" ref="191373211"/> - <bool key="IBUIOpaque">NO</bool> - <bool key="IBUIClearsContextBeforeDrawing">NO</bool> - <int key="IBUIContentHorizontalAlignment">0</int> - <reference key="IBUIFont" ref="415071891"/> - <int key="IBUIButtonType">1</int> - <string key="IBUIHighlightedTitle">Add photo</string> - <string key="IBUIDisabledTitle">Add photo</string> - <string key="IBUISelectedTitle">Add photo</string> - <string key="IBUINormalTitle">Add photo</string> - <reference key="IBUIHighlightedTitleColor" ref="819630230"/> - <object class="NSColor" key="IBUINormalTitleColor"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA</bytes> - </object> - <object class="NSCustomResource" key="IBUIHighlightedBackgroundImage" id="806848119"> - <string key="NSClassName">NSImage</string> - <string key="NSResourceName">Icon.png</string> - </object> - <reference key="IBUIDisabledBackgroundImage" ref="806848119"/> - <reference key="IBUISelectedBackgroundImage" ref="806848119"/> - <reference key="IBUINormalBackgroundImage" ref="806848119"/> - </object> - </object> - <string key="NSFrameSize">{320, 480}</string> - <reference key="NSSuperview"/> - <object class="NSColor" key="IBUIBackgroundColor"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MQA</bytes> - <reference key="NSCustomColorSpace" ref="440851013"/> - </object> - </object> - </object> - <object class="IBObjectContainer" key="IBDocument.Objects"> - <object class="NSMutableArray" key="connectionRecords"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">view</string> - <reference key="source" ref="372490531"/> - <reference key="destination" ref="191373211"/> - </object> - <int key="connectionID">7</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">dataSource</string> - <reference key="source" ref="810055614"/> - <reference key="destination" ref="372490531"/> - </object> - <int key="connectionID">8</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">delegate</string> - <reference key="source" ref="810055614"/> - <reference key="destination" ref="372490531"/> - </object> - <int key="connectionID">9</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchEventConnection" key="connection"> - <string key="label">addPhoto:</string> - <reference key="source" ref="555835234"/> - <reference key="destination" ref="372490531"/> - <int key="IBEventType">7</int> - </object> - <int key="connectionID">10</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">addPhotoButton</string> - <reference key="source" ref="372490531"/> - <reference key="destination" ref="555835234"/> - </object> - <int key="connectionID">12</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">fancyAddButton</string> - <reference key="source" ref="372490531"/> - <reference key="destination" ref="691946431"/> - </object> - <int key="connectionID">17</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchEventConnection" key="connection"> - <string key="label">addPhoto:</string> - <reference key="source" ref="612997257"/> - <reference key="destination" ref="372490531"/> - <int key="IBEventType">7</int> - </object> - <int key="connectionID">18</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">fancyAddButtonImage</string> - <reference key="source" ref="372490531"/> - <reference key="destination" ref="614509932"/> - </object> - <int key="connectionID">19</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">actionsToDoView</string> - <reference key="source" ref="372490531"/> - <reference key="destination" ref="810055614"/> - </object> - <int key="connectionID">20</int> - </object> - </object> - <object class="IBMutableOrderedSet" key="objectRecords"> - <object class="NSArray" key="orderedObjects"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBObjectRecord"> - <int key="objectID">0</int> - <object class="NSArray" key="object" id="360949347"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <reference key="children" ref="1000"/> - <nil key="parent"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">1</int> - <reference key="object" ref="191373211"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="810055614"/> - <reference ref="22920685"/> - <reference ref="555835234"/> - <reference ref="691946431"/> - </object> - <reference key="parent" ref="360949347"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">-1</int> - <reference key="object" ref="372490531"/> - <reference key="parent" ref="360949347"/> - <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">-2</int> - <reference key="object" ref="711762367"/> - <reference key="parent" ref="360949347"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">4</int> - <reference key="object" ref="555835234"/> - <reference key="parent" ref="191373211"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">5</int> - <reference key="object" ref="810055614"/> - <reference key="parent" ref="191373211"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">6</int> - <reference key="object" ref="22920685"/> - <reference key="parent" ref="191373211"/> - <string key="objectName">Dummy</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">16</int> - <reference key="object" ref="691946431"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="614509932"/> - <reference ref="612997257"/> - <reference ref="380571351"/> - </object> - <reference key="parent" ref="191373211"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">13</int> - <reference key="object" ref="380571351"/> - <reference key="parent" ref="691946431"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">15</int> - <reference key="object" ref="614509932"/> - <reference key="parent" ref="691946431"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">14</int> - <reference key="object" ref="612997257"/> - <reference key="parent" ref="691946431"/> - </object> - </object> - </object> - <object class="NSMutableDictionary" key="flattenedProperties"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMutableArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>-1.CustomClassName</string> - <string>-2.CustomClassName</string> - <string>1.IBEditorWindowLastContentRect</string> - <string>1.IBPluginDependency</string> - <string>13.IBPluginDependency</string> - <string>14.IBPluginDependency</string> - <string>15.IBPluginDependency</string> - <string>16.IBEditorWindowLastContentRect</string> - <string>16.IBPluginDependency</string> - <string>4.IBPluginDependency</string> - <string>5.IBPluginDependency</string> - <string>6.IBPluginDependency</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>InputTableViewController</string> - <string>UIResponder</string> - <string>{{317, 258}, {320, 480}}</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <string>{{669, 701}, {100, 100}}</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - </object> - </object> - <object class="NSMutableDictionary" key="unlocalizedProperties"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <nil key="activeLocalization"/> - <object class="NSMutableDictionary" key="localizations"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <nil key="sourceID"/> - <int key="maxID">20</int> - </object> - <object class="IBClassDescriber" key="IBDocument.Classes"> - <object class="NSMutableArray" key="referencedPartialClassDescriptions"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBPartialClassDescription"> - <string key="className">InputTableViewController</string> - <string key="superclassName">UIViewController</string> - <object class="NSMutableDictionary" key="actions"> - <string key="NS.key.0">addPhoto:</string> - <string key="NS.object.0">id</string> - </object> - <object class="NSMutableDictionary" key="outlets"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMutableArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>actionsToDoView</string> - <string>addPhotoButton</string> - <string>fancyAddButton</string> - <string>fancyAddButtonImage</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>UITableView</string> - <string>UIButton</string> - <string>UIView</string> - <string>UIImageView</string> - </object> - </object> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBProjectSource</string> - <string key="minorKey">Classes/InputTableViewController.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">UIButton</string> - <string key="superclassName">UIControl</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBUserSource</string> - <string key="minorKey"/> - </object> - </object> - </object> - </object> - <int key="IBDocument.localizationMode">0</int> - <string key="IBDocument.LastKnownRelativeProjectPath">FixMyStreet.xcodeproj</string> - <int key="IBDocument.defaultPropertyAccessControl">3</int> - </data> -</archive> diff --git a/iphone/FixMyStreet/MainViewController.xib b/iphone/FixMyStreet/MainViewController.xib deleted file mode 100644 index 42e12470a..000000000 --- a/iphone/FixMyStreet/MainViewController.xib +++ /dev/null @@ -1,311 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.03"> - <data> - <int key="IBDocument.SystemTarget">528</int> - <string key="IBDocument.SystemVersion">9L31a</string> - <string key="IBDocument.InterfaceBuilderVersion">677</string> - <string key="IBDocument.AppKitVersion">949.54</string> - <string key="IBDocument.HIToolboxVersion">353.00</string> - <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> - <bool key="EncodedWithXMLCoder">YES</bool> - <integer value="1"/> - </object> - <object class="NSArray" key="IBDocument.PluginDependencies"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - </object> - <object class="NSMutableDictionary" key="IBDocument.Metadata"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBProxyObject" id="372490531"> - <string key="IBProxiedObjectIdentifier">IBFilesOwner</string> - </object> - <object class="IBProxyObject" id="711762367"> - <string key="IBProxiedObjectIdentifier">IBFirstResponder</string> - </object> - <object class="IBUIView" id="191373211"> - <reference key="NSNextResponder"/> - <int key="NSvFlags">292</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBUITableView" id="810055614"> - <reference key="NSNextResponder" ref="191373211"/> - <int key="NSvFlags">274</int> - <string key="NSFrameSize">{320, 416}</string> - <reference key="NSSuperview" ref="191373211"/> - <bool key="IBUIOpaque">NO</bool> - <bool key="IBUIClipsSubviews">YES</bool> - <bool key="IBUIClearsContextBeforeDrawing">NO</bool> - <bool key="IBUIScrollEnabled">NO</bool> - <bool key="IBUIBouncesZoom">NO</bool> - <int key="IBUIStyle">1</int> - <int key="IBUISeparatorStyle">1</int> - <int key="IBUISectionIndexMinimumDisplayRowCount">0</int> - <bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool> - <float key="IBUIRowHeight">4.400000e+01</float> - <float key="IBUISectionHeaderHeight">2.000000e+01</float> - </object> - <object class="IBUIImageView" id="91336409"> - <reference key="NSNextResponder" ref="191373211"/> - <int key="NSvFlags">292</int> - <string key="NSFrame">{{20, 276}, {200, 120}}</string> - <reference key="NSSuperview" ref="191373211"/> - <bool key="IBUIOpaque">NO</bool> - <bool key="IBUIClearsContextBeforeDrawing">NO</bool> - <int key="IBUIContentMode">1</int> - <bool key="IBUIUserInteractionEnabled">NO</bool> - </object> - <object class="IBUIButton" id="323841673"> - <reference key="NSNextResponder" ref="191373211"/> - <int key="NSvFlags">292</int> - <string key="NSFrame">{{262, 357}, {18, 19}}</string> - <reference key="NSSuperview" ref="191373211"/> - <bool key="IBUIOpaque">NO</bool> - <bool key="IBUIClearsContextBeforeDrawing">NO</bool> - <int key="IBUIContentHorizontalAlignment">0</int> - <int key="IBUIContentVerticalAlignment">0</int> - <object class="NSFont" key="IBUIFont"> - <string key="NSName">Helvetica-Bold</string> - <double key="NSSize">1.500000e+01</double> - <int key="NSfFlags">16</int> - </object> - <int key="IBUIButtonType">3</int> - <bool key="IBUIShowsTouchWhenHighlighted">YES</bool> - <object class="NSColor" key="IBUIHighlightedTitleColor"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MSAxIDEAA</bytes> - </object> - <object class="NSColor" key="IBUINormalTitleColor"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA</bytes> - </object> - <object class="NSColor" key="IBUINormalTitleShadowColor"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MAA</bytes> - </object> - </object> - </object> - <string key="NSFrameSize">{320, 416}</string> - <reference key="NSSuperview"/> - <object class="NSColor" key="IBUIBackgroundColor"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MQA</bytes> - <object class="NSColorSpace" key="NSCustomColorSpace"> - <int key="NSID">2</int> - </object> - </object> - </object> - </object> - <object class="IBObjectContainer" key="IBDocument.Objects"> - <object class="NSMutableArray" key="connectionRecords"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">view</string> - <reference key="source" ref="372490531"/> - <reference key="destination" ref="191373211"/> - </object> - <int key="connectionID">7</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">dataSource</string> - <reference key="source" ref="810055614"/> - <reference key="destination" ref="372490531"/> - </object> - <int key="connectionID">8</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">delegate</string> - <reference key="source" ref="810055614"/> - <reference key="destination" ref="372490531"/> - </object> - <int key="connectionID">9</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">actionsToDoView</string> - <reference key="source" ref="372490531"/> - <reference key="destination" ref="810055614"/> - </object> - <int key="connectionID">20</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">imageView</string> - <reference key="source" ref="372490531"/> - <reference key="destination" ref="91336409"/> - </object> - <int key="connectionID">22</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">settingsButton</string> - <reference key="source" ref="372490531"/> - <reference key="destination" ref="323841673"/> - </object> - <int key="connectionID">24</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchEventConnection" key="connection"> - <string key="label">gotoAbout:</string> - <reference key="source" ref="323841673"/> - <reference key="destination" ref="372490531"/> - <int key="IBEventType">7</int> - </object> - <int key="connectionID">31</int> - </object> - </object> - <object class="IBMutableOrderedSet" key="objectRecords"> - <object class="NSArray" key="orderedObjects"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBObjectRecord"> - <int key="objectID">0</int> - <object class="NSArray" key="object" id="360949347"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <reference key="children" ref="1000"/> - <nil key="parent"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">1</int> - <reference key="object" ref="191373211"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="810055614"/> - <reference ref="91336409"/> - <reference ref="323841673"/> - </object> - <reference key="parent" ref="360949347"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">-1</int> - <reference key="object" ref="372490531"/> - <reference key="parent" ref="360949347"/> - <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">-2</int> - <reference key="object" ref="711762367"/> - <reference key="parent" ref="360949347"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">23</int> - <reference key="object" ref="323841673"/> - <reference key="parent" ref="191373211"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">21</int> - <reference key="object" ref="91336409"/> - <reference key="parent" ref="191373211"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">5</int> - <reference key="object" ref="810055614"/> - <reference key="parent" ref="191373211"/> - </object> - </object> - </object> - <object class="NSMutableDictionary" key="flattenedProperties"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMutableArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>-1.CustomClassName</string> - <string>-2.CustomClassName</string> - <string>1.IBEditorWindowLastContentRect</string> - <string>1.IBPluginDependency</string> - <string>21.IBPluginDependency</string> - <string>23.IBPluginDependency</string> - <string>5.IBPluginDependency</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>InputTableViewController</string> - <string>UIResponder</string> - <string>{{1036, 576}, {320, 416}}</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - </object> - </object> - <object class="NSMutableDictionary" key="unlocalizedProperties"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <nil key="activeLocalization"/> - <object class="NSMutableDictionary" key="localizations"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <nil key="sourceID"/> - <int key="maxID">31</int> - </object> - <object class="IBClassDescriber" key="IBDocument.Classes"> - <object class="NSMutableArray" key="referencedPartialClassDescriptions"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBPartialClassDescription"> - <string key="className">InputTableViewController</string> - <string key="superclassName">UIViewController</string> - <object class="NSMutableDictionary" key="actions"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMutableArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>addPhoto:</string> - <string>gotoAbout:</string> - <string>gotoSettings:firstTime:</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>id</string> - <string>id</string> - <string>id</string> - </object> - </object> - <object class="NSMutableDictionary" key="outlets"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMutableArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>actionsToDoView</string> - <string>imageView</string> - <string>settingsButton</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>UITableView</string> - <string>UIImageView</string> - <string>UIButton</string> - </object> - </object> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBProjectSource</string> - <string key="minorKey">Classes/InputTableViewController.h</string> - </object> - </object> - </object> - </object> - <int key="IBDocument.localizationMode">0</int> - <string key="IBDocument.LastKnownRelativeProjectPath">FixMyStreet.xcodeproj</string> - <int key="IBDocument.defaultPropertyAccessControl">3</int> - <string key="IBCocoaTouchPluginVersion">3.0</string> - </data> -</archive> diff --git a/iphone/FixMyStreet/MainWindow.xib b/iphone/FixMyStreet/MainWindow.xib deleted file mode 100644 index 46757cfbf..000000000 --- a/iphone/FixMyStreet/MainWindow.xib +++ /dev/null @@ -1,188 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.02"> - <data> - <int key="IBDocument.SystemTarget">528</int> - <string key="IBDocument.SystemVersion">9F33</string> - <string key="IBDocument.InterfaceBuilderVersion">672</string> - <string key="IBDocument.AppKitVersion">949.34</string> - <string key="IBDocument.HIToolboxVersion">352.00</string> - <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> - <bool key="EncodedWithXMLCoder">YES</bool> - <integer value="2"/> - </object> - <object class="NSArray" key="IBDocument.PluginDependencies"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - </object> - <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBProxyObject" id="841351856"> - <string key="IBProxiedObjectIdentifier">IBFilesOwner</string> - </object> - <object class="IBProxyObject" id="427554174"> - <string key="IBProxiedObjectIdentifier">IBFirstResponder</string> - </object> - <object class="IBUICustomObject" id="664661524"/> - <object class="IBUIWindow" id="380026005"> - <reference key="NSNextResponder"/> - <int key="NSvFlags">1316</int> - <object class="NSPSMatrix" key="NSFrameMatrix"/> - <string key="NSFrameSize">{320, 480}</string> - <reference key="NSSuperview"/> - <object class="NSColor" key="IBUIBackgroundColor"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MCAwIDAAA</bytes> - </object> - <bool key="IBUIOpaque">NO</bool> - <bool key="IBUIClearsContextBeforeDrawing">NO</bool> - </object> - </object> - <object class="IBObjectContainer" key="IBDocument.Objects"> - <object class="NSMutableArray" key="connectionRecords"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">delegate</string> - <reference key="source" ref="841351856"/> - <reference key="destination" ref="664661524"/> - </object> - <int key="connectionID">4</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">window</string> - <reference key="source" ref="664661524"/> - <reference key="destination" ref="380026005"/> - </object> - <int key="connectionID">5</int> - </object> - </object> - <object class="IBMutableOrderedSet" key="objectRecords"> - <object class="NSArray" key="orderedObjects"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBObjectRecord"> - <int key="objectID">0</int> - <object class="NSArray" key="object" id="957960031"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <reference key="children" ref="1000"/> - <nil key="parent"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">2</int> - <reference key="object" ref="380026005"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <reference key="parent" ref="957960031"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">-1</int> - <reference key="object" ref="841351856"/> - <reference key="parent" ref="957960031"/> - <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">3</int> - <reference key="object" ref="664661524"/> - <reference key="parent" ref="957960031"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">-2</int> - <reference key="object" ref="427554174"/> - <reference key="parent" ref="957960031"/> - </object> - </object> - </object> - <object class="NSMutableDictionary" key="flattenedProperties"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMutableArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>-1.CustomClassName</string> - <string>-2.CustomClassName</string> - <string>2.IBAttributePlaceholdersKey</string> - <string>2.IBEditorWindowLastContentRect</string> - <string>2.IBPluginDependency</string> - <string>3.CustomClassName</string> - <string>3.IBPluginDependency</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>UIApplication</string> - <string>UIResponder</string> - <object class="NSMutableDictionary"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <string>{{1297, 618}, {320, 480}}</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <string>FixMyStreetAppDelegate</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - </object> - </object> - <object class="NSMutableDictionary" key="unlocalizedProperties"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <nil key="activeLocalization"/> - <object class="NSMutableDictionary" key="localizations"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <nil key="sourceID"/> - <int key="maxID">13</int> - </object> - <object class="IBClassDescriber" key="IBDocument.Classes"> - <object class="NSMutableArray" key="referencedPartialClassDescriptions"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBPartialClassDescription"> - <string key="className">FixMyStreetAppDelegate</string> - <string key="superclassName">NSObject</string> - <object class="NSMutableDictionary" key="outlets"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMutableArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>navigationController</string> - <string>window</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>UINavigationController</string> - <string>UIWindow</string> - </object> - </object> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBProjectSource</string> - <string key="minorKey">Classes/FixMyStreetAppDelegate.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">FixMyStreetAppDelegate</string> - <string key="superclassName">NSObject</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBUserSource</string> - <string key="minorKey"/> - </object> - </object> - </object> - </object> - <int key="IBDocument.localizationMode">0</int> - <string key="IBDocument.LastKnownRelativeProjectPath">FixMyStreet.xcodeproj</string> - <int key="IBDocument.defaultPropertyAccessControl">3</int> - </data> -</archive> diff --git a/iphone/FixMyStreet/MyCLController.h b/iphone/FixMyStreet/MyCLController.h deleted file mode 100755 index a517dc48d..000000000 --- a/iphone/FixMyStreet/MyCLController.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - -File: MyCLController.h -Abstract: Singleton class used to talk to CoreLocation and send results back to -the app's view controllers. - -Version: 1.1 - -Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Inc. -("Apple") in consideration of your agreement to the following terms, and your -use, installation, modification or redistribution of this Apple software -constitutes acceptance of these terms. If you do not agree with these terms, -please do not use, install, modify or redistribute this Apple software. - -In consideration of your agreement to abide by the following terms, and subject -to these terms, Apple grants you a personal, non-exclusive license, under -Apple's copyrights in this original Apple software (the "Apple Software"), to -use, reproduce, modify and redistribute the Apple Software, with or without -modifications, in source and/or binary forms; provided that if you redistribute -the Apple Software in its entirety and without modifications, you must retain -this notice and the following text and disclaimers in all such redistributions -of the Apple Software. -Neither the name, trademarks, service marks or logos of Apple Inc. may be used -to endorse or promote products derived from the Apple Software without specific -prior written permission from Apple. Except as expressly stated in this notice, -no other rights or licenses, express or implied, are granted by Apple herein, -including but not limited to any patent rights that may be infringed by your -derivative works or by other works in which the Apple Software may be -incorporated. - -The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO -WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED -WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN -COMBINATION WITH YOUR PRODUCTS. - -IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR -DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF -CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF -APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Copyright (C) 2008 Apple Inc. All Rights Reserved. - -*/ - - -// This protocol is used to send the text for location updates back to another view controller -@protocol MyCLControllerDelegate <NSObject> -@required --(void)newLocationUpdate:(CLLocation *)location; --(void)newLocationError:(NSString *)text; -@end - - -// Class definition -@interface MyCLController : NSObject <CLLocationManagerDelegate> { - CLLocationManager *locationManager; - id delegate; - BOOL updating; -} - -@property (nonatomic, retain) CLLocationManager *locationManager; -@property (nonatomic,assign) id <MyCLControllerDelegate> delegate; -@property BOOL updating; - --(void)startUpdatingLocation; --(void)stopUpdatingLocation; - -- (void)locationManager:(CLLocationManager *)manager - didUpdateToLocation:(CLLocation *)newLocation - fromLocation:(CLLocation *)oldLocation; - -- (void)locationManager:(CLLocationManager *)manager - didFailWithError:(NSError *)error; - -+ (MyCLController *)sharedInstance; - -@end - diff --git a/iphone/FixMyStreet/MyCLController.m b/iphone/FixMyStreet/MyCLController.m deleted file mode 100755 index b5f303337..000000000 --- a/iphone/FixMyStreet/MyCLController.m +++ /dev/null @@ -1,193 +0,0 @@ -/* - -File: MyCLController.m -Abstract: Singleton class used to talk to CoreLocation and send results back to -the app's view controllers. - -Version: 1.1 - -Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Inc. -("Apple") in consideration of your agreement to the following terms, and your -use, installation, modification or redistribution of this Apple software -constitutes acceptance of these terms. If you do not agree with these terms, -please do not use, install, modify or redistribute this Apple software. - -In consideration of your agreement to abide by the following terms, and subject -to these terms, Apple grants you a personal, non-exclusive license, under -Apple's copyrights in this original Apple software (the "Apple Software"), to -use, reproduce, modify and redistribute the Apple Software, with or without -modifications, in source and/or binary forms; provided that if you redistribute -the Apple Software in its entirety and without modifications, you must retain -this notice and the following text and disclaimers in all such redistributions -of the Apple Software. -Neither the name, trademarks, service marks or logos of Apple Inc. may be used -to endorse or promote products derived from the Apple Software without specific -prior written permission from Apple. Except as expressly stated in this notice, -no other rights or licenses, express or implied, are granted by Apple herein, -including but not limited to any patent rights that may be infringed by your -derivative works or by other works in which the Apple Software may be -incorporated. - -The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO -WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED -WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN -COMBINATION WITH YOUR PRODUCTS. - -IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR -DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF -CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF -APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Copyright (C) 2008 Apple Inc. All Rights Reserved. - -*/ - -#import "MyCLController.h" - -// This is a singleton class, see below -static MyCLController *sharedCLDelegate = nil; - -@implementation MyCLController - -@synthesize delegate, locationManager, updating; - -- (id) init { - self = [super init]; - if (self != nil) { - self.locationManager = [[[CLLocationManager alloc] init] autorelease]; - self.locationManager.delegate = self; // Tells the location manager to send updates to this object - } - return self; -} - --(void)startUpdatingLocation { - self.updating = YES; - [self.locationManager startUpdatingLocation]; -} - --(void)stopUpdatingLocation { - self.updating = NO; - [self.locationManager stopUpdatingLocation]; -} - -// Called when the location is updated -- (void)locationManager:(CLLocationManager *)manager - didUpdateToLocation:(CLLocation *)newLocation - fromLocation:(CLLocation *)oldLocation -{ - - // Negative accuracy means an invalid or unavailable measurement - if (signbit(newLocation.horizontalAccuracy)) { - return; - } - - // If location timestamp was ages ago, it's a cached one; ignore it - NSTimeInterval howRecent = [newLocation.timestamp timeIntervalSinceNow]; - if (abs(howRecent) > 5.0) { - return; - } - - [self.delegate newLocationUpdate:newLocation]; -} - - -// Called when there is an error getting the location -- (void)locationManager:(CLLocationManager *)manager - didFailWithError:(NSError *)error -{ - NSMutableString *errorString = [[[NSMutableString alloc] init] autorelease]; - - if ([error domain] == kCLErrorDomain) { - - // We handle CoreLocation-related errors here - - switch ([error code]) { - // This error code is usually returned whenever user taps "Don't Allow" in response to - // being told your app wants to access the current location. Once this happens, you cannot - // attempt to get the location again until the app has quit and relaunched. - // - // "Don't Allow" on two successive app launches is the same as saying "never allow". The user - // can reset this for all apps by going to Settings > General > Reset > Reset Location Warnings. - // - case kCLErrorDenied: - [self stopUpdatingLocation]; - [self.delegate newLocationError:@"FixMyStreet needs your location to know where your problem is."]; - break; - - // This error code is usually returned whenever the device has no data or WiFi connectivity, - // or when the location cannot be determined for some other reason. - // - // CoreLocation will keep trying, so you can keep waiting, or prompt the user. - // - case kCLErrorLocationUnknown: - [errorString appendFormat:@"%@\n", NSLocalizedString(@"LocationUnknown", nil)]; - break; - - // We shouldn't ever get an unknown error code, but just in case... - // - default: - [errorString appendFormat:@"%@ %d\n", NSLocalizedString(@"GenericLocationError", nil), [error code]]; - break; - } - } else { - // We handle all non-CoreLocation errors here - // (we depend on localizedDescription for localization) - [errorString appendFormat:@"Error domain: \"%@\" Error code: %d\n", [error domain], [error code]]; - [errorString appendFormat:@"Description: \"%@\"\n", [error localizedDescription]]; - } - - self.updating = NO; - - // Send the update to our delegate - // [self.delegate newLocationUpdate:errorString]; -} - -#pragma mark ---- singleton object methods ---- - -// See "Creating a Singleton Instance" in the Cocoa Fundamentals Guide for more info - -+ (MyCLController *)sharedInstance { - @synchronized(self) { - if (sharedCLDelegate == nil) { - [[self alloc] init]; // assignment not done here - } - } - return sharedCLDelegate; -} - -+ (id)allocWithZone:(NSZone *)zone { - @synchronized(self) { - if (sharedCLDelegate == nil) { - sharedCLDelegate = [super allocWithZone:zone]; - return sharedCLDelegate; // assignment and return on first allocation - } - } - return nil; // on subsequent allocation attempts return nil -} - -- (id)copyWithZone:(NSZone *)zone -{ - return self; -} - -- (id)retain { - return self; -} - -- (unsigned)retainCount { - return UINT_MAX; // denotes an object that cannot be released -} - -- (void)release { - //do nothing -} - -- (id)autorelease { - return self; -} - -@end
\ No newline at end of file diff --git a/iphone/FixMyStreet/Root.plist b/iphone/FixMyStreet/Root.plist deleted file mode 100755 index a20f07f9f..000000000 --- a/iphone/FixMyStreet/Root.plist +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>PreferenceSpecifiers</key> - <array> - <dict> - <key>DefaultValue</key> - <string></string> - <key>Key</key> - <string>emailKey</string> - <key>Title</key> - <string>Email</string> - <key>Type</key> - <string>PSTextFieldSpecifier</string> - </dict> - <dict> - <key>DefaultValue</key> - <string></string> - <key>Key</key> - <string>nameKey</string> - <key>Title</key> - <string>Name</string> - <key>Type</key> - <string>PSTextFieldSpecifier</string> - </dict> - <dict> - <key>DefaultValue</key> - <string></string> - <key>Key</key> - <string>phoneKey</string> - <key>Title</key> - <string>Phone</string> - <key>Type</key> - <string>PSTextFieldSpecifier</string> - </dict> - </array> - <key>Title</key> - <string>FixMyStreet</string> -</dict> -</plist> diff --git a/iphone/FixMyStreet/main.m b/iphone/FixMyStreet/main.m deleted file mode 100644 index 05f436018..000000000 --- a/iphone/FixMyStreet/main.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// main.m -// FixMyStreet -// -// Created by Matthew on 25/09/2008. -// Copyright UK Citizens Online Democracy 2008. All rights reserved. -// - -#import <UIKit/UIKit.h> - -int main(int argc, char *argv[]) { - NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; - int retVal = UIApplicationMain(argc, argv, nil, nil); - [pool release]; - return retVal; -} diff --git a/iphone/FixMyStreet/mysociety.png b/iphone/FixMyStreet/mysociety.png Binary files differdeleted file mode 100644 index 8a9280c16..000000000 --- a/iphone/FixMyStreet/mysociety.png +++ /dev/null diff --git a/iphone/README b/iphone/README deleted file mode 100644 index 1fbe00e79..000000000 --- a/iphone/README +++ /dev/null @@ -1,19 +0,0 @@ -FixMyStreet iPhone application -============================== - -The FixMyStreet directory contains a complete application that should open -directly in XCode. - -TODO (if you're an iPhone or Perl developer and wish to help mySociety, ----- feel free to volunteer for any of these) - -* When you go to the About page from the front page, the navigation bar flips - as well as the page. For perfection, it probably shouldn't, but every time I - tried (presumably with a parent controller controlling the main view and the - about view), I failed, and it's not really /that/ important. :-) - -* Do the photos have EXIF data (e.g. location)? Should we use that if so in some way? - -* Photo orientation - either auto-working it out from EXIF data/ anything else - provided, or letting the user rotate the submitted photo. - diff --git a/locale/FixMyStreet.po b/locale/FixMyStreet.po index dfe83f074..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: 2012-10-24 11:20+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,75 +17,79 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: perllib/FixMyStreet/DB/Result/Problem.pm:563 perllib/FixMyStreet/DB/ResultSet/Problem.pm:339 +#: perllib/FixMyStreet/DB/Result/Problem.pm:602 perllib/FixMyStreet/DB/ResultSet/Problem.pm:373 msgid " and " msgstr "" -#: templates/web/default/tokens/confirm_problem.html:14 templates/web/default/tokens/confirm_problem.html:18 +#: templates/web/default/tokens/confirm_problem.html:14 templates/web/default/tokens/confirm_problem.html:17 msgid " and <strong>we will now send it to the council</strong>" msgstr "" -#: templates/web/default/report/new/councils_text_all.html:10 templates/web/default/report/new/councils_text_all.html:17 templates/web/default/report/new/councils_text_all.html:3 templates/web/default/report/new/councils_text_none.html:14 templates/web/default/report/new/councils_text_none.html:17 templates/web/default/report/new/councils_text_some.html:20 templates/web/default/report/new/councils_text_some.html:23 templates/web/default/report/new/councils_text_some.html:5 templates/web/emptyhomes/report/new/councils_text_all.html:2 +#: templates/web/default/report/new/councils_text_all.html:11 templates/web/default/report/new/councils_text_all.html:18 templates/web/default/report/new/councils_text_all.html:4 templates/web/default/report/new/councils_text_none.html:11 templates/web/default/report/new/councils_text_none.html:14 templates/web/default/report/new/councils_text_some.html:20 templates/web/default/report/new/councils_text_some.html:23 templates/web/default/report/new/councils_text_some.html:5 templates/web/emptyhomes/report/new/councils_text_all.html:2 msgid " or " msgstr "" -#: templates/web/default/admin/council_list.html:17 +#: 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/default/admin/index.html:27 templates/web/zurich/admin/index.html:6 msgid "%d council contacts – %d confirmed, %d unconfirmed" msgstr "" -#: templates/web/default/admin/council_list.html:27 +#: 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 – %d answered (%s%%)" msgstr "" -#: templates/web/fixmystreet/report/_support.html:3 -msgid "%d supporters" +#: templates/web/default/pagination.html:10 +msgid "%d to %d of %d" msgstr "" -#: templates/web/default/reports/council.html:0 templates/web/default/reports/council.html:26 templates/web/emptyhomes/reports/council.html:11 templates/web/emptyhomes/reports/council.html:13 +#: templates/web/default/reports/body.html:0 templates/web/default/reports/body.html:22 msgid "%s - Summary reports" msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:613 +#: perllib/FixMyStreet/DB/Result/Problem.pm:651 msgid "%s ref: %s" msgstr "" -#: perllib/FixMyStreet/Cobrand/UK.pm:279 perllib/FixMyStreet/Cobrand/UK.pm:291 +#: perllib/FixMyStreet/Cobrand/UK.pm:276 perllib/FixMyStreet/Cobrand/UK.pm:288 msgid "%s ward, %s" msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:496 -msgid "%s, reported anonymously at %s" +#: perllib/FixMyStreet/DB/Result/Problem.pm:538 +msgid "%s, reported at %s" msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:498 -msgid "%s, reported by %s at %s" +#: perllib/FixMyStreet/Cobrand/UK.pm:303 perllib/FixMyStreet/Cobrand/UK.pm:315 +msgid "%s, within %s ward" msgstr "" -#: perllib/FixMyStreet/Cobrand/UK.pm:306 perllib/FixMyStreet/Cobrand/UK.pm:318 -msgid "%s, within %s ward" +#: templates/web/default/email_sent.html:29 +msgid "(Don't worry — we'll hang on to your alert while you're checking your email.)" msgstr "" -#: templates/web/default/email_sent.html:28 -msgid "(Don't worry — %s)" +#: templates/web/default/email_sent.html:25 +msgid "(Don't worry — we'll hang on to your problem report while you're checking your email.)" msgstr "" -#: templates/web/default/admin/report_blocks.html:11 +#: templates/web/default/email_sent.html:27 +msgid "(Don't worry — 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:29 msgid "(Email in abuse table)" msgstr "" @@ -97,27 +101,27 @@ 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:23 +#: 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:21 +#: 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 "" -#: templates/web/default/index.html:12 templates/web/default/index.html:8 templates/web/fixmystreet/around/postcode_form.html:10 +#: 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 "" -#: templates/web/default/reports/_list-entry.html:4 templates/web/fixmystreet/report/_item.html:17 +#: 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 "" -#: templates/web/default/report/new/fill_in_details_form.html:217 +#: templates/web/default/report/new/fill_in_details_form.html:217 templates/web/emptyhomes/report/new/fill_in_details_form.html:140 templates/web/zurich/report/new/fill_in_details_form.html:100 msgid "(optional)" msgstr "" -#: templates/web/default/reports/_list-entry.html:2 templates/web/fixmystreet/report/_item.html:16 +#: 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 "" @@ -125,28 +129,27 @@ msgstr "" msgid "(we never show your email address or phone number)" msgstr "" -#: templates/web/default/report/display.html:209 +#: templates/web/default/report/update-form.html:158 msgid "(we never show your email)" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:285 -msgid "*unknown*" -msgstr "" - -#: perllib/FixMyStreet/App/Controller/Report/New.pm:630 perllib/FixMyStreet/App/Controller/Report/New.pm:658 perllib/FixMyStreet/DB/Result/Problem.pm:353 +#: 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:610 perllib/FixMyStreet/DB/Result/Problem.pm:359 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:618 perllib/FixMyStreet/DB/Result/Problem.pm:385 msgid "-- Pick a property type --" msgstr "" -#: templates/web/default/tokens/confirm_problem.html:14 templates/web/default/tokens/confirm_problem.html:22 -msgid ". You can <a href=\"%s%s\">view the problem on this site</a>." +#: templates/web/emptyhomes/front/stats.html:5 +msgid "<big>%s</big> reports" msgstr "" -#: templates/web/fixmystreet/report/_support.html:3 -msgid "1 supporter" +#: 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 @@ -163,7 +166,7 @@ msgid "" "</p>" msgstr "" -#: templates/web/fixmystreet/questionnaire/completed-open.html:1 +#: templates/web/fixmystreet/questionnaire/completed-open.html:6 msgid "" "<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" "suggestions: why not try <a href=\"http://www.writetothem.com/\">writing direct\n" @@ -173,7 +176,7 @@ msgid "" "</p>" msgstr "" -#: templates/web/default/questionnaire/completed-open.html:1 +#: templates/web/default/questionnaire/completed-open.html:6 msgid "" "<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" "suggestions: why not try writing to your local representative or, if it’s\n" @@ -213,23 +216,23 @@ msgid "" "site and leave an update.</p>" msgstr "" -#: templates/web/default/around/_report_banner.html:3 templates/web/default/around/_report_banner.html:5 templates/web/emptyhomes/around/display_location.html:36 templates/web/emptyhomes/around/display_location.html:38 +#: templates/web/default/around/_report_banner.html:3 templates/web/default/around/_report_banner.html:5 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 "" -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:182 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:183 msgid "<strong>No</strong> Let me confirm my report by email" msgstr "" -#: templates/web/fixmystreet/report/display.html:170 +#: templates/web/fixmystreet/report/update-form.html:110 msgid "<strong>No</strong> Let me confirm my update by email" msgstr "" -#: templates/web/fixmystreet/auth/general.html:50 +#: 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 "" @@ -241,22 +244,45 @@ msgstr "" msgid "<strong>No</strong>, let me confirm my report by email:" msgstr "" -#: templates/web/default/report/display.html:164 +#: templates/web/default/report/update-form.html:117 msgid "<strong>No</strong>, let me confirm my update by email:" msgstr "" -#: templates/web/default/auth/general.html:37 templates/web/default/report/display.html:142 templates/web/default/report/new/fill_in_details_form.html:140 templates/web/fixmystreet/auth/general.html:36 templates/web/fixmystreet/auth/general.html:38 templates/web/fixmystreet/report/display.html:147 templates/web/fixmystreet/report/new/fill_in_details_form.html:158 +#: templates/web/default/auth/general.html:37 templates/web/default/report/new/fill_in_details_form.html:140 templates/web/default/report/update-form.html:95 templates/web/fixmystreet/auth/general.html:36 templates/web/fixmystreet/auth/general.html:38 templates/web/fixmystreet/report/new/fill_in_details_form.html:159 templates/web/fixmystreet/report/update-form.html:87 msgid "<strong>Yes</strong> I have a password" msgstr "" -#: templates/web/default/static/about.html:1 templates/web/default/static/about.html:3 templates/web/emptyhomes/header.html:29 templates/web/emptyhomes/static/about.html:1 templates/web/emptyhomes/static/about.html:3 +#: templates/web/default/static/about-en-gb.html:1 templates/web/default/static/about-en-gb.html:3 templates/web/emptyhomes/header.html:34 templates/web/emptyhomes/static/about-cy.html:1 templates/web/emptyhomes/static/about-cy.html:3 templates/web/emptyhomes/static/about-en-gb.html:1 templates/web/emptyhomes/static/about-en-gb.html:3 msgid "About us" msgstr "" -#: templates/web/default/admin/council_contacts.html:72 +#: templates/web/bromley/report/display.html:80 templates/web/bromley/report/display.html:81 templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:39 templates/web/default/report/update-form.html:30 templates/web/default/report/update-form.html:31 templates/web/fixmystreet/report/update-form.html:28 templates/web/fixmystreet/report/update-form.html:29 +msgid "Action Scheduled" +msgstr "" + +#: 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:88 templates/web/zurich/admin/body.html:30 msgid "Add new category" msgstr "" +#: templates/web/default/admin/users.html:45 +msgid "Add user" +msgstr "" + #: templates/web/default/my/my.html:56 templates/web/fixmystreet/my/my.html:60 msgid "Added %s" msgstr "" @@ -265,31 +291,27 @@ msgstr "" msgid "Again:" msgstr "" -#: templates/web/default/admin/timeline.html:37 +#: templates/web/default/admin/timeline.html:35 msgid "Alert %d created for %s, type %s, parameters %s / %s" msgstr "" -#: templates/web/default/admin/timeline.html:39 +#: templates/web/default/admin/timeline.html:37 msgid "Alert %d disabled (created %s)" msgstr "" -#: templates/web/bromley/report/display.html:207 templates/web/default/report/display.html:214 templates/web/fixmystreet/report/display.html:211 +#: templates/web/bromley/report/display.html:209 templates/web/default/report/update-form.html:163 templates/web/fixmystreet/report/update-form.html:148 msgid "Alert me to future updates" msgstr "" -#: templates/web/default/reports/index.html:3 +#: templates/web/default/reports/index.html:3 templates/web/fixmybarangay/reports/index.html:3 templates/web/zurich/admin/stats.html:5 templates/web/zurich/reports/index.html:15 msgid "All Reports" msgstr "" -#: templates/web/default/admin/council_list.html:44 -msgid "All confirmed" -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/fiksgatami/footer.html:7 templates/web/fiksgatami/nn/footer.html:7 templates/web/fixmybarangay/footer.html:20 templates/web/fixmystreet/footer.html:49 templates/web/reading/footer.html:8 +#: 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 "" -#: templates/web/default/admin/stats.html:5 +#: templates/web/default/admin/stats.html:5 templates/web/zurich/admin/stats.html:8 msgid "All reports between %s and %s" msgstr "" @@ -297,31 +319,27 @@ msgstr "" msgid "All the information you provide here will be sent to" msgstr "" -#: templates/web/default/report/new/councils_text_all.html:10 templates/web/default/report/new/councils_text_all.html:12 +#: templates/web/default/report/new/councils_text_all.html:11 templates/web/default/report/new/councils_text_all.html:13 msgid "All the information you provide here will be sent to <strong>%s</strong> or <strong>Roads Service</strong>." msgstr "" -#: templates/web/default/report/new/councils_text_all.html:3 templates/web/default/report/new/councils_text_all.html:5 +#: templates/web/default/report/new/councils_text_all.html:4 templates/web/default/report/new/councils_text_all.html:6 msgid "All the information you provide here will be sent to <strong>%s</strong> or a relevant local body such as <strong>TfL</strong>, via the London Report-It system." msgstr "" -#: templates/web/bromley/report/new/fill_in_details_form.html:4 templates/web/bromley/report/new/fill_in_details_form.html:6 templates/web/default/report/new/councils_text_all.html:17 templates/web/default/report/new/councils_text_all.html:19 templates/web/default/report/new/fill_in_details_form.html:11 templates/web/default/report/new/fill_in_details_form.html:13 templates/web/fixmystreet/report/new/fill_in_details_form.html:6 templates/web/fixmystreet/report/new/fill_in_details_form.html:8 +#: templates/web/bromley/report/new/fill_in_details_form.html:4 templates/web/bromley/report/new/fill_in_details_form.html:6 templates/web/default/report/new/councils_text_all.html:18 templates/web/default/report/new/councils_text_all.html:20 templates/web/default/report/new/fill_in_details_form.html:11 templates/web/default/report/new/fill_in_details_form.html:13 templates/web/emptyhomes/report/new/councils_text_all.html:2 templates/web/emptyhomes/report/new/councils_text_all.html:4 templates/web/emptyhomes/report/new/fill_in_details_form.html:11 templates/web/emptyhomes/report/new/fill_in_details_form.html:13 templates/web/fixmystreet/report/new/fill_in_details_form.html:6 templates/web/fixmystreet/report/new/fill_in_details_form.html:8 msgid "All the information you provide here will be sent to <strong>%s</strong>." msgstr "" -#: templates/web/emptyhomes/report/new/councils_text_all.html:2 templates/web/emptyhomes/report/new/councils_text_all.html:4 -msgid "All the information you provide here will be sent to <strong>%s</strong>. On the site, we will show the subject and details of the problem, plus your name if you give us permission." -msgstr "" - #: templates/web/default/questionnaire/index.html:60 templates/web/fixmystreet/questionnaire/index.html:54 msgid "An update marked this problem as fixed." msgstr "" -#: templates/web/default/admin/list_flagged.html:15 templates/web/default/admin/list_updates.html:10 templates/web/default/admin/search_reports.html:18 +#: templates/web/default/admin/list_updates.html:32 templates/web/default/admin/problem_row.html:20 msgid "Anonymous" msgstr "" -#: templates/web/default/admin/report_edit.html:26 templates/web/default/admin/update_edit.html:14 +#: templates/web/default/admin/report_edit.html:62 templates/web/default/admin/update_edit.html:23 msgid "Anonymous:" msgstr "" @@ -329,22 +347,50 @@ msgstr "" msgid "Are you a <strong>developer</strong>? Would you like to contribute to FixMyStreet?" msgstr "" -#: templates/web/fixmystreet/footer.html:17 +#: templates/web/fixmystreet/footer.html:16 templates/web/stevenage/footer.html:17 msgid "Are you a developer?" msgstr "" -#: templates/web/fixmystreet/footer.html:21 +#: templates/web/fixmystreet/footer.html:20 templates/web/stevenage/footer.html:21 msgid "Are you from a council?" msgstr "" -#: templates/web/default/open311/index.html:17 +#: 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:144 templates/web/zurich/admin/stats.html:36 +msgid "Assign to different category:" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:153 +msgid "Assign to external body:" +msgstr "" + +#: 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:141 templates/web/zurich/report/updates.html:11 +msgid "Assigned to %s" +msgstr "" + +#: templates/web/default/open311/index.html:86 msgid "At most %d requests are returned in each query. The returned requests are ordered by requested_datetime, so to get all requests, do several searches with rolling start_date and end_date." msgstr "" -#: templates/web/default/open311/index.html:9 +#: templates/web/default/open311/index.html:78 msgid "At the moment only searching for and looking at reports work." msgstr "" +#: 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:32 templates/web/oxfordshire/js/translation_strings.html:26 +msgid "Back" +msgstr "" + #: templates/web/default/admin/report_blocks.html:11 msgid "Ban email address" msgstr "" @@ -353,6 +399,18 @@ 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: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: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:32 +msgid "Body:" +msgstr "" + #: templates/web/fiksgatami/footer.html:16 templates/web/fiksgatami/nn/footer.html:16 msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained by <a href=\"http://www.nuug.no/\">NUUG</a>" msgstr "" @@ -365,19 +423,19 @@ msgstr "" msgid "Can't see the map? <a href='%s' rel='nofollow'>Skip this step</a>" msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:633 perllib/FixMyStreet/App/Controller/Report/New.pm:660 templates/web/bromley/report/new/fill_in_details_form.html:68 templates/web/default/admin/council_contacts.html:37 templates/web/default/admin/index.html:36 templates/web/default/admin/list_flagged.html:14 templates/web/default/admin/search_reports.html:17 templates/web/fixmystreet/report/new/fill_in_details_form.html:74 +#: 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/council_contacts.html:78 templates/web/default/admin/council_edit.html:23 templates/web/default/admin/report_edit.html:25 templates/web/default/report/new/fill_in_details_form.html:67 +#: 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:336 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366 msgid "Category: %s" msgstr "" @@ -385,15 +443,52 @@ msgstr "" msgid "Change Password" msgstr "" -#: 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 "" -#: templates/web/bromley/report/display.html:80 templates/web/bromley/report/display.html:82 templates/web/default/admin/report_edit.html:18 templates/web/default/admin/report_edit.html:20 templates/web/default/dashboard/index.html:138 templates/web/default/dashboard/index.html:140 templates/web/default/report/display.html:79 templates/web/default/report/display.html:81 templates/web/fixmystreet/report/banner.html:15 templates/web/fixmystreet/report/display.html:90 templates/web/fixmystreet/report/display.html:92 +#: 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:698 +#: perllib/FixMyStreet/DB/Result/Problem.pm:744 msgid "Closed by council" msgstr "" @@ -401,7 +496,7 @@ msgstr "" msgid "Closed reports" msgstr "" -#: templates/web/default/admin/problem_row.html:25 +#: templates/web/default/admin/problem_row.html:38 msgid "Closed:" msgstr "" @@ -409,43 +504,35 @@ msgstr "" msgid "Closest nearby problems <small>(within %skm)</small>" msgstr "" -#: templates/web/default/admin/report_edit.html:15 +#: 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_flagged.html:16 templates/web/default/admin/list_updates.html:13 templates/web/default/admin/search_reports.html:19 +#: templates/web/default/admin/list_updates.html:10 msgid "Cobrand" msgstr "" -#: templates/web/default/admin/report_edit.html:39 templates/web/default/admin/update_edit.html:41 +#: templates/web/default/admin/report_edit.html:75 templates/web/default/admin/update_edit.html:50 msgid "Cobrand data:" msgstr "" -#: templates/web/default/admin/report_edit.html:38 templates/web/default/admin/update_edit.html:40 +#: templates/web/default/admin/report_edit.html:74 templates/web/default/admin/update_edit.html:49 msgid "Cobrand:" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:365 -msgid "Configuration updated" +#: templates/web/default/admin/config_page.html:1 +msgid "Configuration" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:380 +#: perllib/FixMyStreet/App/Controller/Admin.pm:421 msgid "Configuration updated - contacts will be generated automatically later" msgstr "" -#: templates/web/default/admin/council_edit.html:34 +#: templates/web/default/admin/body_edit.html:47 msgid "Configure Endpoint" msgstr "" -#: templates/web/default/admin/council_contacts.html:168 -msgid "Configure Open311" -msgstr "" - -#: templates/web/default/admin/council_contacts.html:116 -msgid "Configure Open311 integration" -msgstr "" - -#: templates/web/default/admin/council_contacts.html:46 +#: templates/web/default/admin/body.html:62 msgid "Confirm" msgstr "" @@ -453,15 +540,15 @@ msgstr "" msgid "Confirm account" msgstr "" -#: templates/web/fixmystreet/report/display.html:165 templates/web/fixmystreet/report/new/fill_in_details_form.html:176 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:177 templates/web/fixmystreet/report/update-form.html:105 msgid "Confirm by email below, providing a new password at that point. When you confirm, your password will be updated." msgstr "" -#: templates/web/default/questionnaire/creator_fixed.html:1 templates/web/default/tokens/confirm_problem.html:1 templates/web/default/tokens/confirm_problem.html:3 templates/web/default/tokens/confirm_update.html:1 templates/web/default/tokens/confirm_update.html:3 templates/web/emptyhomes/tokens/confirm_problem.html:1 templates/web/emptyhomes/tokens/confirm_problem.html:3 +#: templates/web/default/questionnaire/creator_fixed.html:1 templates/web/default/tokens/confirm_problem.html:1 templates/web/default/tokens/confirm_problem.html:3 templates/web/default/tokens/confirm_update.html:1 templates/web/default/tokens/confirm_update.html:3 templates/web/emptyhomes/tokens/confirm_problem.html:1 templates/web/emptyhomes/tokens/confirm_problem.html:3 templates/web/southampton/tokens/confirm_problem.html:1 templates/web/southampton/tokens/confirm_problem.html:3 templates/web/zurich/tokens/confirm_problem.html:1 templates/web/zurich/tokens/confirm_problem.html:3 msgid "Confirmation" msgstr "" -#: templates/web/default/admin/council_contacts.html:39 templates/web/default/admin/council_contacts.html:88 templates/web/default/admin/council_edit.html:28 templates/web/default/admin/council_edit.html:71 +#: 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 "" @@ -469,7 +556,7 @@ msgstr "" msgid "Confirmed reports between %s and %s" msgstr "" -#: templates/web/default/admin/problem_row.html:23 templates/web/default/admin/report_edit.html:34 +#: 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 "" @@ -485,35 +572,31 @@ msgstr "" msgid "Contact Us" msgstr "" -#: templates/web/bromley/contact/submit.html:3 templates/web/default/contact/index.html:6 templates/web/default/contact/submit.html:3 templates/web/fixmystreet/contact/index.html:7 +#: templates/web/bromley/contact/submit.html:3 templates/web/default/contact/index.html:6 templates/web/default/contact/submit.html:3 templates/web/fixmystreet/contact/index.html:19 msgid "Contact the team" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1164 perllib/FixMyStreet/App/Controller/Admin.pm:1192 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1310 perllib/FixMyStreet/App/Controller/Admin.pm:1338 msgid "Could not find user" msgstr "" -#: templates/web/default/admin/list_flagged.html:13 templates/web/default/admin/list_updates.html:12 templates/web/default/admin/search_reports.html:16 templates/web/default/admin/search_users.html:14 -msgid "Council" +#: templates/web/default/js/translation_strings.html:37 templates/web/oxfordshire/js/translation_strings.html:31 +msgid "Could not look up location" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1036 templates/web/default/admin/council_list.html:1 -msgid "Council contacts" +#: templates/web/default/admin/list_updates.html:9 +msgid "Council" msgstr "" -#: templates/web/default/admin/council_contacts.html:1 templates/web/default/admin/council_edit.html:1 +#: templates/web/default/admin/body.html:1 templates/web/default/admin/body_edit.html:1 templates/web/zurich/admin/body.html:1 msgid "Council contacts for %s" msgstr "" -#: templates/web/default/admin/stats.html:84 templates/web/default/admin/user_edit.html:12 +#: templates/web/default/admin/stats.html:84 msgid "Council:" msgstr "" -#: templates/web/default/admin/council_list.html:36 -msgid "Councils" -msgstr "" - -#: templates/web/default/admin/stats.html:12 templates/web/default/admin/stats.html:32 +#: templates/web/default/admin/stats.html:12 templates/web/default/admin/stats.html:32 templates/web/zurich/admin/stats.html:45 templates/web/zurich/admin/stats.html:50 msgid "Count" msgstr "" @@ -521,15 +604,15 @@ msgstr "" msgid "Create a report" msgstr "" -#: templates/web/default/admin/council_contacts.html:107 +#: templates/web/default/admin/body.html:179 templates/web/zurich/admin/body.html:53 msgid "Create category" msgstr "" -#: templates/web/default/admin/list_flagged.html:17 templates/web/default/admin/list_updates.html:9 templates/web/default/admin/search_reports.html:20 +#: 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:33 templates/web/default/admin/update_edit.html:42 +#: 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 "" @@ -537,31 +620,39 @@ msgstr "" msgid "Current state" msgstr "" -#: templates/web/default/admin/council_list.html:40 -msgid "Currently has 1+ deleted" +#: 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 "" -#: templates/web/default/admin/council_contacts.html:40 templates/web/default/admin/council_contacts.html:91 templates/web/default/admin/council_edit.html:29 templates/web/default/admin/council_edit.html:72 +#: templates/web/zurich/admin/stats.html:35 +msgid "Dealt with by subdivision within 5 working days" +msgstr "" + +#: 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 "" -#: templates/web/bromley/report/new/fill_in_details_form.html:54 templates/web/fixmystreet/report/new/fill_in_details_form.html:66 +#: templates/web/zurich/admin/index-dm.html:22 templates/web/zurich/admin/index-sdm.html:20 templates/web/zurich/admin/reports.html:12 +msgid "Description" +msgstr "" + +#: 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:14 templates/web/default/report/new/fill_in_details_form.html:61 +#: 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/council_contacts.html:41 +#: templates/web/default/admin/body.html:57 msgid "Devolved" msgstr "" -#: templates/web/default/admin/council_list.html:23 +#: templates/web/default/admin/edit-league.html:8 msgid "Diligency prize league table" msgstr "" @@ -569,7 +660,7 @@ msgstr "" msgid "Do you have a FixMyBarangay password?" msgstr "" -#: templates/web/default/auth/general.html:32 templates/web/fixmystreet/auth/general.html:32 templates/web/fixmystreet/report/display.html:144 templates/web/fixmystreet/report/new/fill_in_details_form.html:154 +#: templates/web/default/auth/general.html:32 templates/web/fixmystreet/auth/general.html:32 templates/web/fixmystreet/report/new/fill_in_details_form.html:155 templates/web/fixmystreet/report/update-form.html:84 msgid "Do you have a FixMyStreet password?" msgstr "" @@ -577,15 +668,31 @@ msgstr "" msgid "Don’t know" msgstr "" -#: templates/web/default/admin/list_updates.html:35 templates/web/default/admin/problem_row.html:29 templates/web/default/admin/search_users.html:24 +#: templates/web/bromley/report/display.html:80 templates/web/bromley/report/display.html:82 templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:47 templates/web/default/report/update-form.html:30 templates/web/default/report/update-form.html:32 templates/web/fixmystreet/report/update-form.html:28 templates/web/fixmystreet/report/update-form.html:30 +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:31 templates/web/zurich/admin/problem_row.html:42 msgid "Edit" msgstr "" -#: templates/web/default/admin/report_edit.html:1 +#: templates/web/default/admin/body.html:189 templates/web/zurich/admin/body.html:64 +msgid "Edit body details" +msgstr "" + +#: templates/web/default/admin/report_edit.html:1 templates/web/zurich/admin/report_edit-sdm.html:1 templates/web/zurich/admin/report_edit-sdm.html:4 templates/web/zurich/admin/report_edit.html:1 templates/web/zurich/admin/report_edit.html:5 msgid "Editing problem %d" msgstr "" -#: templates/web/default/admin/update_edit.html:1 +#: templates/web/default/admin/update_edit.html:1 templates/web/zurich/admin/update_edit.html:1 msgid "Editing update %d" msgstr "" @@ -593,19 +700,23 @@ msgstr "" msgid "Editing user %d" msgstr "" -#: templates/web/default/admin/council_edit.html:73 +#: templates/web/default/admin/body_edit.html:86 msgid "Editor" msgstr "" -#: templates/web/bromley/report/display.html:126 templates/web/default/admin/council_contacts.html:38 templates/web/default/admin/council_edit.html:70 templates/web/default/admin/list_flagged.html:12 templates/web/default/admin/list_flagged.html:35 templates/web/default/admin/list_updates.html:8 templates/web/default/admin/search_abuse.html:11 templates/web/default/admin/search_reports.html:15 templates/web/default/admin/search_users.html:13 templates/web/fixmystreet/auth/general.html:20 templates/web/fixmystreet/report/display.html:136 +#: 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:1140 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1286 msgid "Email added to abuse list" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1137 +#: 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 "" @@ -613,23 +724,27 @@ msgstr "" msgid "Email me new local problems" msgstr "" -#: templates/web/default/report/display.html:30 +#: templates/web/default/report/display.html:34 msgid "Email me updates" msgstr "" -#: templates/web/default/admin/council_contacts.html:83 templates/web/default/admin/council_edit.html:26 templates/web/default/admin/report_edit.html:31 templates/web/default/admin/update_edit.html:24 templates/web/default/admin/user_edit.html:11 templates/web/default/alert/updates.html:13 templates/web/default/report/display.html:34 +#: 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/App/Controller/Report/New.pm:612 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318 +msgid "Email: %s" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:620 msgid "Empty flat or maisonette" msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:611 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:619 msgid "Empty house or bungalow" msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:614 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:622 msgid "Empty office or other commercial" msgstr "" @@ -637,28 +752,39 @@ msgstr "" msgid "Empty property details form" msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:615 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:623 msgid "Empty pub or bar" msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:616 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:624 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/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:72 -msgid "End day:" +#: templates/web/default/admin/stats.html:70 +msgid "End Date:" msgstr "" -#: templates/web/default/admin/stats.html:71 -msgid "End month:" +#: templates/web/default/admin/body-form.html:126 +msgid "Endpoint" msgstr "" -#: templates/web/emptyhomes/index.html:40 templates/web/emptyhomes/index.html:41 -msgid "Enter a nearby GB postcode, or street name and area" +#: perllib/FixMyStreet/Cobrand/Zurich.pm:71 +msgid "Enter a Zürich street name" msgstr "" #: perllib/FixMyStreet/Cobrand/UK.pm:18 @@ -669,19 +795,19 @@ msgstr "" msgid "Enter a nearby postcode, or street name and area" msgstr "" -#: templates/web/default/around/postcode_form.html:1 templates/web/default/around/postcode_form.html:2 templates/web/fixmystreet/around/postcode_form.html:13 templates/web/fixmystreet/around/postcode_form.html:14 +#: templates/web/default/around/postcode_form.html:1 templates/web/default/around/postcode_form.html:2 templates/web/fixmystreet/around/postcode_form.html:10 templates/web/fixmystreet/around/postcode_form.html:11 templates/web/seesomething/around/postcode_form.html:3 templates/web/seesomething/around/postcode_form.html:4 msgid "Enter a nearby street name and area" msgstr "" -#: templates/web/default/auth/general.html:64 templates/web/default/report/display.html:171 templates/web/default/report/new/fill_in_details_form.html:169 +#: templates/web/default/auth/general.html:64 templates/web/default/report/new/fill_in_details_form.html:169 templates/web/default/report/update-form.html:124 msgid "Enter a new password:" msgstr "" -#: templates/web/bromley/report/display.html:148 templates/web/bromley/report/new/fill_in_details_form.html:189 templates/web/fixmystreet/auth/general.html:61 templates/web/fixmystreet/report/display.html:182 templates/web/fixmystreet/report/new/fill_in_details_form.html:210 +#: 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 "" -#: templates/web/default/index.html:33 templates/web/emptyhomes/index.html:58 templates/web/fixmystreet/index.html:46 +#: templates/web/default/index-steps.html:26 msgid "Enter details of the problem" msgstr "" @@ -689,15 +815,15 @@ msgstr "" msgid "Error" msgstr "" -#: templates/web/default/admin/council_contacts.html:13 templates/web/default/admin/council_edit.html:18 +#: templates/web/default/admin/body.html:11 templates/web/default/admin/body_edit.html:18 msgid "Example postcode %s" msgstr "" -#: templates/web/default/open311/index.html:27 +#: templates/web/default/open311/index.html:96 msgid "Examples:" msgstr "" -#: templates/web/default/admin/report_edit.html:40 +#: templates/web/default/admin/report_edit.html:76 msgid "Extra data:" msgstr "" @@ -705,7 +831,15 @@ msgstr "" msgid "Failed to send message. Please try again, or <a href=\"mailto:%s\">email us</a>." msgstr "" -#: templates/web/bromley/report/display.html:189 templates/web/bromley/report/new/fill_in_details_form.html:113 templates/web/bromley/report/new/fill_in_details_form.html:160 +#: templates/web/zurich/admin/index-dm.html:33 templates/web/zurich/admin/index-sdm.html:30 +msgid "Filter report list" +msgstr "" + +#: templates/web/emptyhomes/front/stats.html:6 +msgid "Find latest local and national news" +msgstr "" + +#: templates/web/bromley/report/display.html:191 templates/web/bromley/report/new/fill_in_details_form.html:113 templates/web/bromley/report/new/fill_in_details_form.html:160 msgid "First Name" msgstr "" @@ -713,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 "" @@ -721,14 +859,10 @@ msgstr "" msgid "FixMyStreet" msgstr "" -#: templates/web/default/admin/header.html:13 +#: templates/web/default/admin/header.html:10 msgid "FixMyStreet admin:" msgstr "" -#: templates/web/default/admin/header.html:3 -msgid "FixMyStreet administration" -msgstr "" - #: templates/web/default/alert/index.html:11 msgid "" "FixMyStreet has a variety of RSS feeds and email alerts for local problems, including\n" @@ -746,15 +880,15 @@ msgid "" "for the county council." msgstr "" -#: templates/web/bromley/report/display.html:80 templates/web/bromley/report/display.html:82 templates/web/default/admin/index.html:36 templates/web/default/admin/report_edit.html:18 templates/web/default/admin/report_edit.html:20 templates/web/default/dashboard/index.html:138 templates/web/default/dashboard/index.html:140 templates/web/default/report/display.html:79 templates/web/default/report/display.html:81 templates/web/fixmystreet/report/banner.html:12 templates/web/fixmystreet/report/display.html:90 templates/web/fixmystreet/report/display.html:92 +#: 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 "" -#: templates/web/default/admin/report_edit.html:18 templates/web/default/admin/report_edit.html:21 +#: templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:43 msgid "Fixed - Council" msgstr "" -#: templates/web/default/admin/report_edit.html:18 templates/web/default/admin/report_edit.html:21 +#: templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:42 msgid "Fixed - User" msgstr "" @@ -762,47 +896,63 @@ msgstr "" msgid "Fixed reports" msgstr "" -#: templates/web/default/admin/problem_row.html:24 +#: templates/web/default/admin/problem_row.html:37 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 "" -#: templates/web/default/admin/search_users.html:15 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1181 templates/web/default/admin/users.html:19 msgid "Flagged" msgstr "" -#: templates/web/default/admin/report_edit.html:42 templates/web/default/admin/user_edit.html:18 +#: 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 "" -#: templates/web/default/reports/_ward-list.html:3 templates/web/emptyhomes/reports/council.html:19 templates/web/fixmystreet/reports/_ward-list.html:4 +#: templates/web/default/reports/_ward-list.html:3 templates/web/fixmystreet/reports/_ward-list.html:4 msgid "Follow a ward link to view only reports within that ward." msgstr "" -#: templates/web/default/admin/report_edit.html:16 +#: templates/web/default/admin/report_edit.html:30 msgid "For council(s):" msgstr "" -#: templates/web/fixmystreet/report/display.html:164 templates/web/fixmystreet/report/new/fill_in_details_form.html:175 -msgid "Forgotten your password?" +#: 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/default/faq/faq-en-gb.html:1 templates/web/emptyhomes/faq/faq-cy.html:1 templates/web/emptyhomes/faq/faq-en-gb.html:1 templates/web/fiksgatami/faq/faq-nb.html:1 templates/web/fiksgatami/nn/faq/faq-nn.html:1 templates/web/fixmybarangay/faq/faq-en-gb.html:1 templates/web/fixmystreet/faq/faq-en-gb.html:1 templates/web/fixmystreet/static/privacy.html:1 templates/web/zurich/faq/faq-de.html:1 -msgid "Frequently Asked Questions" +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:176 templates/web/fixmystreet/report/update-form.html:104 +msgid "Forgotten your password?" msgstr "" -#: templates/web/emptyhomes/static/about.html:34 -msgid "Further information about our work on empty homes." +#: templates/web/default/faq/faq-en-gb.html:1 templates/web/emptyhomes/faq/faq-cy.html:1 templates/web/emptyhomes/faq/faq-en-gb.html:1 templates/web/fiksgatami/faq/faq-nb.html:1 templates/web/fiksgatami/nn/faq/faq-nn.html:1 templates/web/fixmindelo/faq/faq-pt-cv.html:1 templates/web/fixmybarangay/faq/faq-en-gb.html:1 templates/web/fixmystreet/faq/faq-en-gb.html:1 templates/web/fixmystreet/static/privacy.html:1 templates/web/oxfordshire/faq/faq-en-gb.html:1 +msgid "Frequently Asked Questions" msgstr "" -#: templates/web/default/open311/index.html:69 +#: templates/web/default/open311/index.html:138 msgid "GeoRSS on Google Maps" msgstr "" -#: templates/web/bromley/report/display.html:30 templates/web/fixmystreet/report/display.html:27 +#: templates/web/bromley/report/display.html:30 templates/web/fixmystreet/around/_updates.html:3 templates/web/fixmystreet/report/display.html:38 msgid "Get updates" msgstr "" @@ -818,19 +968,19 @@ msgstr "" msgid "Give me an RSS feed" msgstr "" -#: templates/web/default/alert/index.html:34 templates/web/default/around/postcode_form.html:8 templates/web/emptyhomes/index.html:47 templates/web/fixmystreet/around/postcode_form.html:24 +#: templates/web/default/alert/index.html:34 templates/web/default/around/postcode_form.html:8 templates/web/fixmystreet/around/postcode_form.html:21 templates/web/seesomething/around/postcode_form.html:10 templates/web/zurich/admin/stats.html:26 msgid "Go" msgstr "" -#: templates/web/default/admin/report_edit.html:41 +#: templates/web/default/admin/report_edit.html:77 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 "" -#: templates/web/default/reports/index.html:8 templates/web/emptyhomes/reports/index.html:5 +#: templates/web/default/reports/index.html:8 msgid "Greyed-out lines are councils that no longer exist." msgstr "" @@ -842,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:28 templates/web/fiksgatami/footer.html:9 templates/web/fiksgatami/nn/footer.html:9 templates/web/fixmybarangay/footer.html:24 templates/web/fixmystreet/footer.html:53 templates/web/reading/footer.html:10 +#: 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 "" @@ -850,31 +1000,39 @@ msgstr "" msgid "Here are the types of local problem alerts for ‘%s’." msgstr "" -#: templates/web/barnet/header.html:70 templates/web/bromley/header.html:64 templates/web/bromley/header.html:99 templates/web/fixmybarangay/header.html:66 templates/web/fixmystreet/header.html:47 templates/web/zurich/header.html:47 +#: templates/web/barnet/header.html:70 templates/web/bromley/header.html:64 templates/web/bromley/header.html:99 templates/web/fixmybarangay/header.html:66 templates/web/fixmystreet/header.html:50 templates/web/oxfordshire/header.html:111 templates/web/oxfordshire/header.html:47 templates/web/stevenage/header.html:97 templates/web/zurich/footer.html:11 msgid "Hi %s" msgstr "" -#: templates/web/default/admin/report_edit.html:18 templates/web/default/admin/report_edit.html:21 templates/web/default/admin/update_edit.html:19 +#: 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 "" -#: templates/web/default/around/display_location.html:63 +#: templates/web/default/around/display_location.html:67 msgid "Hide old" msgstr "" -#: templates/web/default/around/display_location.html:58 +#: templates/web/default/around/display_location.html:62 msgid "Hide pins" msgstr "" -#: templates/web/default/admin/council_edit.html:66 +#: templates/web/default/admin/body_edit.html:79 msgid "History" msgstr "" -#: templates/web/default/index.html:28 templates/web/emptyhomes/index.html:53 templates/web/fixmystreet/index.html:36 +#: templates/web/default/js/translation_strings.html:31 templates/web/oxfordshire/js/translation_strings.html:25 +msgid "Home" +msgstr "" + +#: templates/web/default/index-steps.html:1 msgid "How to report a problem" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:648 +#: 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:733 msgid "I am afraid you cannot confirm unconfirmed reports." msgstr "" @@ -886,15 +1044,39 @@ msgstr "" msgid "I'm afraid we couldn't validate that token, as the report was made too long ago." msgstr "" -#: perllib/FixMyStreet/App/Controller/Tokens.pm:235 +#: perllib/FixMyStreet/App/Controller/Tokens.pm:259 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/list_flagged.html:9 templates/web/default/admin/list_updates.html:5 templates/web/default/admin/search_reports.html:12 +#: 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/report/new/councils_text_none.html:11 templates/web/default/report/new/councils_text_none.html:12 +#: 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 "" + +#: templates/web/default/email_sent.html:15 +msgid "If you do not, your problem will not be posted." +msgstr "" + +#: templates/web/default/email_sent.html:17 +msgid "If you do not, your update will not be posted." +msgstr "" + +#: templates/web/default/report/new/councils_text_none.html:8 templates/web/default/report/new/councils_text_none.html:9 msgid "If you submit a problem here the subject and details of the problem will be public, but the problem will <strong>not</strong> be reported to the council." msgstr "" @@ -902,17 +1084,41 @@ msgstr "" msgid "If you submit a report here it will be left on the site, but not reported to the council – please still leave your report, so that we can show to the council the activity in their area." msgstr "" -#: templates/web/default/auth/token.html:23 templates/web/default/email_sent.html:24 +#: templates/web/default/auth/token.html:22 templates/web/default/email_sent.html:9 msgid "If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way." msgstr "" -#: templates/web/default/questionnaire/index.html:83 templates/web/fixmystreet/questionnaire/index.html:77 +#: templates/web/default/questionnaire/index.html:86 templates/web/fixmystreet/questionnaire/index.html:77 msgid "" "If you wish to leave a public update on the problem, please enter it here\n" "(please note it will not be sent to the council). For example, what was\n" "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 "" @@ -921,31 +1127,51 @@ msgstr "" msgid "Illegal feed selection" msgstr "" -#: templates/web/bromley/report/display.html:80 templates/web/bromley/report/display.html:82 templates/web/default/admin/report_edit.html:18 templates/web/default/admin/report_edit.html:20 templates/web/default/dashboard/index.html:138 templates/web/default/dashboard/index.html:140 templates/web/default/report/display.html:79 templates/web/default/report/display.html:81 templates/web/fixmystreet/report/display.html:90 templates/web/fixmystreet/report/display.html:92 +#: templates/web/bromley/report/display.html:80 templates/web/bromley/report/display.html:82 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:32 templates/web/fixmystreet/report/update-form.html:28 templates/web/fixmystreet/report/update-form.html:30 msgid "In Progress" msgstr "" -#: templates/web/default/open311/index.html:21 +#: 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 "" -#: templates/web/fixmystreet/report/banner.html:19 +#: 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 "" +#: templates/web/seesomething/report/new/fill_in_details_form.html:38 +msgid "Incident Category" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:163 +msgid "Include reporter personal details" +msgstr "" + #: templates/web/default/admin/stats.html:76 msgid "Include unconfirmed reports" msgstr "" -#: perllib/FixMyStreet/App/Controller/Open311.pm:356 +#: perllib/FixMyStreet/App/Controller/Open311.pm:354 msgid "Incorrect has_photo value \"%s\"" msgstr "" -#: perllib/FixMyStreet/App/Controller/Open311.pm:341 +#: 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 +msgid "Internal referral" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:339 msgid "Invalid agency_responsible value %s" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:956 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1096 msgid "Invalid end date" msgstr "" @@ -953,11 +1179,11 @@ msgstr "" msgid "Invalid format %s specified." msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:946 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1092 msgid "Invalid start date" msgstr "" -#: templates/web/bromley/report/display.html:80 templates/web/bromley/report/display.html:81 templates/web/default/admin/report_edit.html:18 templates/web/default/admin/report_edit.html:19 templates/web/default/dashboard/index.html:138 templates/web/default/dashboard/index.html:139 templates/web/default/report/display.html:79 templates/web/default/report/display.html:80 templates/web/fixmystreet/report/display.html:90 templates/web/fixmystreet/report/display.html:91 +#: templates/web/bromley/report/display.html:80 templates/web/bromley/report/display.html:81 templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:37 templates/web/default/dashboard/index.html:142 templates/web/default/dashboard/index.html:143 templates/web/default/report/update-form.html:30 templates/web/default/report/update-form.html:31 templates/web/fixmystreet/report/update-form.html:28 templates/web/fixmystreet/report/update-form.html:29 msgid "Investigating" msgstr "" @@ -965,35 +1191,35 @@ 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’t mean the council isn’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:166 templates/web/bromley/report/new/fill_in_details_form.html:209 templates/web/default/auth/general.html:44 templates/web/default/report/display.html:151 templates/web/default/report/new/fill_in_details_form.html:149 templates/web/fixmystreet/auth/general.html:46 templates/web/fixmystreet/report/display.html:160 templates/web/fixmystreet/report/new/fill_in_details_form.html:171 +#: 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 "" -#: templates/web/bromley/report/display.html:195 templates/web/bromley/report/new/fill_in_details_form.html:119 templates/web/bromley/report/new/fill_in_details_form.html:166 +#: templates/web/bromley/report/display.html:197 templates/web/bromley/report/new/fill_in_details_form.html:119 templates/web/bromley/report/new/fill_in_details_form.html:166 msgid "Last Name" msgstr "" -#: templates/web/default/admin/council_contacts.html:42 +#: templates/web/default/admin/body.html:58 templates/web/zurich/admin/body.html:15 msgid "Last editor" msgstr "" -#: templates/web/default/admin/report_edit.html:36 +#: templates/web/default/admin/report_edit.html:72 msgid "Last update:" msgstr "" -#: templates/web/default/admin/problem_row.html:26 +#: templates/web/default/admin/problem_row.html:39 msgid "Last update:" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1042 -msgid "List Flagged" +#: 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/council_contacts.html:16 templates/web/default/admin/council_contacts.html:18 +#: templates/web/default/admin/body.html:14 templates/web/default/admin/body.html:16 msgid "List all reported problems" msgstr "" -#: templates/web/bromley/report/new/fill_in_details_form.html:69 templates/web/default/report/new/fill_in_details_form.html:68 templates/web/fixmystreet/report/new/fill_in_details_form.html:75 +#: templates/web/bromley/report/new/fill_in_details_form.html:69 templates/web/default/report/new/fill_in_details_form.html:68 templates/web/emptyhomes/report/new/fill_in_details_form.html:51 templates/web/fixmystreet/report/new/fill_in_details_form.html:75 templates/web/seesomething/report/new/fill_in_details_form.html:25 templates/web/zurich/report/new/fill_in_details_form.html:51 msgid "Loading..." msgstr "" @@ -1005,19 +1231,27 @@ 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:51 templates/web/reading/footer.html:9 +#: 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 "" -#: templates/web/default/index.html:32 templates/web/emptyhomes/index.html:57 templates/web/fixmystreet/index.html:45 +#: templates/web/default/index-steps.html:25 msgid "Locate the problem on a map of the area" msgstr "" +#: templates/web/default/js/translation_strings.html:43 templates/web/oxfordshire/js/translation_strings.html:37 +msgid "MAP" +msgstr "" + #: perllib/FixMyStreet/Map/OSM.pm:44 msgid "Map © <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/fixmystreet/contact/index.html:86 +#: 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 "" @@ -1029,56 +1263,76 @@ msgstr "" msgid "Missing jurisdiction_id" msgstr "" +#: templates/web/zurich/admin/stats.html:34 +msgid "Moderated by division within one working day" +msgstr "" + #: templates/web/default/admin/stats.html:11 msgid "Month" msgstr "" -#: templates/web/default/report/display.html:26 +#: templates/web/default/report/display.html:30 msgid "More problems nearby" msgstr "" -#: templates/web/default/admin/list_flagged.html:11 templates/web/default/admin/list_flagged.html:34 templates/web/default/admin/list_updates.html:7 templates/web/default/admin/search_reports.html:14 templates/web/default/admin/search_users.html:12 templates/web/default/reports/index.html:15 templates/web/emptyhomes/reports/index.html:10 templates/web/fiksgatami/nn/reports/index.html:9 templates/web/fiksgatami/reports/index.html:9 templates/web/fixmystreet/auth/general.html:56 templates/web/fixmystreet/report/display.html:199 templates/web/fixmystreet/report/new/fill_in_details_form.html:119 templates/web/fixmystreet/report/new/fill_in_details_form.html:186 +#: 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 "" -#: templates/web/default/admin/report_edit.html:30 templates/web/default/admin/update_edit.html:23 templates/web/default/admin/user_edit.html:10 +#: templates/web/seesomething/report/new/fill_in_details_form.html:74 +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: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:317 +msgid "Name: %s" +msgstr "" + #: templates/web/fiksgatami/footer.html:3 templates/web/fiksgatami/nn/footer.html:3 templates/web/reading/footer.html:4 msgid "Navigation" msgstr "" -#: perllib/FixMyStreet/Geocode/OSM.pm:161 +#: perllib/FixMyStreet/Geocode/OSM.pm:166 msgid "Nearest named road to the pin placed on the map (automatically generated using OpenStreetMap): %s%s" msgstr "" -#: perllib/FixMyStreet/Cobrand/UK.pm:152 +#: perllib/FixMyStreet/Cobrand/UK.pm:148 msgid "Nearest postcode to the pin placed on the map (automatically generated): %s (%sm away)" msgstr "" -#: perllib/FixMyStreet/Cobrand/Default.pm:406 perllib/FixMyStreet/Cobrand/Default.pm:446 +#: perllib/FixMyStreet/Cobrand/Default.pm:418 perllib/FixMyStreet/Cobrand/Default.pm:458 msgid "Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s" msgstr "" -#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:265 +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:273 msgid "" "Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s\n" "\n" msgstr "" -#: templates/web/default/email_sent.html:20 +#: templates/web/default/email_sent.html:3 msgid "Nearly Done! Now check your email..." msgstr "" -#: templates/web/default/reports/index.html:16 +#: templates/web/default/reports/index.html:16 templates/web/fixmybarangay/reports/index.html:16 msgid "New <br>problems" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:320 +#: perllib/FixMyStreet/App/Controller/Admin.pm:264 +msgid "New body added" +msgstr "" + +#: 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 "" @@ -1087,7 +1341,7 @@ msgstr "" msgid "New local reports on reportemptyhomes.com" msgstr "" -#: templates/web/emptyhomes/reports/index.html:11 templates/web/fiksgatami/nn/reports/index.html:10 templates/web/fiksgatami/reports/index.html:10 +#: templates/web/emptyhomes/reports/index.html:10 templates/web/fiksgatami/nn/reports/index.html:10 templates/web/fiksgatami/reports/index.html:10 msgid "New problems" msgstr "" @@ -1111,6 +1365,10 @@ msgstr "" msgid "New problems within {{NAME}}'s boundary on FixMyStreet" msgstr "" +#: templates/web/zurich/admin/index-sdm.html:4 +msgid "New reports" +msgstr "" + #: db/alert_types_eha.pl:23 msgid "New reports for {{COUNCIL}} within {{WARD}} ward on reportemptyhomes.com" msgstr "" @@ -1135,36 +1393,48 @@ msgstr "" msgid "New state" msgstr "" +#: templates/web/zurich/admin/report_edit-sdm.html:61 +msgid "New update:" +msgstr "" + #: templates/web/fiksgatami/front/news.html:9 templates/web/fiksgatami/nn/front/news.html:9 templates/web/fixmystreet/front/news.html:8 msgid "New!" msgstr "" -#: templates/web/default/admin/council_contacts.html:52 templates/web/default/admin/council_contacts.html:53 templates/web/default/admin/council_contacts.html:54 templates/web/default/admin/council_edit.html:4 templates/web/default/admin/list_updates.html:30 templates/web/default/admin/list_updates.html:31 templates/web/default/admin/list_updates.html:32 templates/web/default/admin/problem_row.html:19 templates/web/default/admin/report_edit.html:28 templates/web/default/admin/report_edit.html:41 templates/web/default/admin/update_edit.html:16 templates/web/default/questionnaire/creator_fixed.html:16 templates/web/default/questionnaire/index.html:107 templates/web/default/questionnaire/index.html:68 templates/web/fixmystreet/questionnaire/index.html:101 templates/web/fixmystreet/questionnaire/index.html:62 +#: templates/web/default/pagination.html:13 +msgid "Next" +msgstr "" + +#: 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/stats.html:85 templates/web/default/admin/user_edit.html:13 +#: templates/web/default/admin/user-form.html:33 +msgid "No body" +msgstr "" + +#: templates/web/default/admin/stats.html:85 msgid "No council" msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:336 +#: perllib/FixMyStreet/DB/Result/Problem.pm:362 msgid "No council selected" msgstr "" -#: templates/web/default/admin/council_list.html:32 +#: templates/web/default/admin/edit-league.html:17 msgid "No edits have yet been made." msgstr "" -#: templates/web/default/admin/list_flagged.html:26 -msgid "No flagged problems found" +#: templates/web/default/admin/flagged.html:25 +msgid "No flagged problems found." msgstr "" -#: templates/web/default/admin/list_flagged.html:47 -msgid "No flagged users found" +#: templates/web/default/admin/flagged.html:58 +msgid "No flagged users found." msgstr "" -#: templates/web/default/admin/council_list.html:38 -msgid "No info at all" +#: templates/web/zurich/admin/report_edit-sdm.html:68 +msgid "No further updates" msgstr "" #: templates/web/default/around/around_map_list_items.html:17 templates/web/fixmystreet/around/around_map_list_items.html:8 @@ -1175,27 +1445,53 @@ msgstr "" msgid "No problems have been reported yet." msgstr "" -#: templates/web/fixmystreet/report/_support.html:3 +#: 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/council_contacts.html:57 +#: templates/web/default/admin/body.html:73 msgid "Non Public" msgstr "" -#: templates/web/default/admin/council_list.html:5 templates/web/default/admin/report_edit.html:16 +#: 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 "" + +#: templates/web/zurich/admin/report_edit-sdm.html:21 +msgid "Not for my subdivision" +msgstr "" + #: templates/web/default/admin/questionnaire.html:6 msgid "Not reported before" msgstr "" -#: templates/web/default/report/_main.html:11 templates/web/emptyhomes/report/display.html:24 templates/web/fixmystreet/report/_main.html:13 +#: templates/web/default/report/_main.html:10 msgid "Not reported to council" msgstr "" -#: templates/web/default/admin/council_contacts.html:43 templates/web/default/admin/council_edit.html:74 +#: 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 "" @@ -1203,15 +1499,15 @@ 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/council_contacts.html:95 templates/web/default/admin/council_edit.html:32 +#: 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 "" -#: templates/web/default/open311/index.html:6 +#: templates/web/default/open311/index.html:75 msgid "Note: <strong>%s</strong>" msgstr "" -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:153 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:154 msgid "Now to submit your report…" msgstr "" @@ -1219,19 +1515,23 @@ msgstr "" msgid "Now to submit your report… do you have a FixMyStreet password?" msgstr "" -#: templates/web/fixmystreet/report/display.html:143 +#: templates/web/fixmystreet/report/update-form.html:83 msgid "Now to submit your update…" msgstr "" -#: templates/web/default/report/display.html:133 +#: templates/web/default/report/update-form.html:86 msgid "Now to submit your update… do you have a FixMyStreet password?" msgstr "" -#: templates/web/default/report/display.html:21 templates/web/default/report/update.html:16 +#: templates/web/default/js/translation_strings.html:42 templates/web/oxfordshire/js/translation_strings.html:36 +msgid "OK" +msgstr "" + +#: templates/web/default/report/display.html:24 templates/web/default/report/update.html:16 msgid "Offensive? Unsuitable? Tell us" msgstr "" -#: templates/web/default/reports/index.html:18 +#: templates/web/default/reports/index.html:18 templates/web/fixmybarangay/reports/index.html:18 msgid "Old / unknown <br>problems" msgstr "" @@ -1243,23 +1543,23 @@ msgstr "" msgid "Old state" msgstr "" -#: templates/web/default/reports/index.html:20 +#: templates/web/default/reports/index.html:20 templates/web/fixmybarangay/reports/index.html:20 msgid "Older <br>fixed" msgstr "" -#: templates/web/default/reports/index.html:17 +#: templates/web/default/reports/index.html:17 templates/web/fixmybarangay/reports/index.html:17 msgid "Older <br>problems" msgstr "" -#: templates/web/emptyhomes/reports/index.html:14 templates/web/fiksgatami/nn/reports/index.html:14 templates/web/fiksgatami/reports/index.html:14 +#: templates/web/fiksgatami/nn/reports/index.html:14 templates/web/fiksgatami/reports/index.html:14 msgid "Older fixed" msgstr "" -#: templates/web/emptyhomes/reports/index.html:12 templates/web/fiksgatami/nn/reports/index.html:11 templates/web/fiksgatami/reports/index.html:11 +#: templates/web/emptyhomes/reports/index.html:11 templates/web/fiksgatami/nn/reports/index.html:11 templates/web/fiksgatami/reports/index.html:11 msgid "Older problems" msgstr "" -#: templates/web/bromley/report/display.html:80 templates/web/default/admin/report_edit.html:18 templates/web/default/admin/update_edit.html:19 templates/web/default/dashboard/index.html:138 templates/web/default/report/display.html:79 templates/web/fixmystreet/report/display.html:90 +#: 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 "" @@ -1267,15 +1567,15 @@ msgstr "" msgid "Open reports" msgstr "" -#: templates/web/default/open311/index.html:3 +#: templates/web/default/open311/index.html:72 msgid "Open311 API for the mySociety FixMyStreet server" msgstr "" -#: templates/web/default/open311/index.html:13 +#: templates/web/default/open311/index.html:82 msgid "Open311 initiative web page" msgstr "" -#: templates/web/default/open311/index.html:14 +#: templates/web/default/open311/index.html:83 msgid "Open311 specification" msgstr "" @@ -1287,7 +1587,7 @@ msgstr "" msgid "Or you can subscribe to an alert based upon what ward or council you’re in:" msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:1008 perllib/FixMyStreet/App/Controller/Report/New.pm:658 perllib/FixMyStreet/App/Controller/Report/New.pm:659 perllib/FixMyStreet/DB/Result/Problem.pm:505 perllib/FixMyStreet/DB/Result/Problem.pm:515 perllib/FixMyStreet/DB/Result/Problem.pm:525 perllib/FixMyStreet/DB/Result/Problem.pm:537 perllib/FixMyStreet/DB/ResultSet/Problem.pm:331 perllib/FixMyStreet/DB/ResultSet/Problem.pm:340 +#: 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 "" @@ -1295,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:11 +#: templates/web/default/admin/list_updates.html:8 msgid "Owner" msgstr "" @@ -1303,11 +1603,15 @@ msgstr "" msgid "Page Not Found" msgstr "" -#: templates/web/default/admin/report_edit.html:18 templates/web/default/admin/report_edit.html:21 +#: templates/web/default/admin/body-form.html:31 templates/web/zurich/admin/body-form.html:14 +msgid "Parent" +msgstr "" + +#: templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:51 msgid "Partial" msgstr "" -#: templates/web/bromley/report/display.html:145 templates/web/bromley/report/new/fill_in_details_form.html:186 templates/web/fixmystreet/auth/general.html:59 templates/web/fixmystreet/report/display.html:179 templates/web/fixmystreet/report/new/fill_in_details_form.html:207 +#: 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 "" @@ -1315,19 +1619,27 @@ msgstr "" msgid "Password:" 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:137 templates/web/fixmystreet/report/new/fill_in_details_form.html:204 +#: 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 msgid "Phone number (optional)" msgstr "" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:262 templates/web/default/admin/report_edit.html:32 templates/web/default/report/new/fill_in_details_form.html:215 +#: 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:109 templates/web/bromley/report/new/fill_in_details_form.html:104 templates/web/fixmystreet/report/display.html:119 templates/web/fixmystreet/report/new/fill_in_details_form.html:110 +#: 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 "" -#: templates/web/default/questionnaire/index.html:95 templates/web/default/report/display.html:109 templates/web/default/report/new/fill_in_details_form.html:102 templates/web/fixmystreet/questionnaire/index.html:90 +#: templates/web/default/questionnaire/index.html:99 templates/web/default/report/new/fill_in_details_form.html:102 templates/web/default/report/update-form.html:62 templates/web/emptyhomes/report/new/fill_in_details_form.html:99 templates/web/fixmystreet/questionnaire/index.html:90 msgid "Photo:" msgstr "" @@ -1335,7 +1647,11 @@ msgstr "" msgid "Photos of recent nearby reports" msgstr "" -#: templates/web/bromley/report/display.html:80 templates/web/bromley/report/display.html:81 templates/web/default/admin/report_edit.html:18 templates/web/default/admin/report_edit.html:19 templates/web/default/dashboard/index.html:138 templates/web/default/dashboard/index.html:139 templates/web/default/report/display.html:79 templates/web/default/report/display.html:80 templates/web/fixmystreet/report/display.html:90 templates/web/fixmystreet/report/display.html:91 +#: 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:89 templates/web/zurich/admin/report_edit.html:92 msgid "Planned" msgstr "" @@ -1343,7 +1659,7 @@ msgstr "" msgid "Please <a class=\"tab_link\" href=\"#report\">take a look</a> at the updates that have been left." msgstr "" -#: templates/web/default/report/new/notes.html:6 templates/web/fixmystreet/report/new/notes.html:5 +#: templates/web/default/report/new/notes.html:6 templates/web/fixmystreet/report/new/notes.html:6 templates/web/oxfordshire/report/new/notes.html:5 msgid "Please be polite, concise and to the point." msgstr "" @@ -1351,22 +1667,30 @@ msgstr "" msgid "Please check the passwords and try again" msgstr "" -#: templates/web/default/auth/token.html:17 +#: templates/web/default/auth/token.html:14 msgid "Please check your email" msgstr "" -#: templates/web/default/auth/general.html:14 templates/web/default/auth/general.html:8 templates/web/fixmystreet/auth/general.html:15 templates/web/fixmystreet/auth/general.html:9 +#: templates/web/default/auth/general.html:14 templates/web/default/auth/general.html:8 templates/web/fixmystreet/auth/general.html:15 templates/web/fixmystreet/auth/general.html:9 templates/web/seesomething/auth/general.html:15 templates/web/seesomething/auth/general.html:9 templates/web/zurich/auth/general.html:3 templates/web/zurich/auth/general.html:9 msgid "Please check your email address is correct" msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:824 perllib/FixMyStreet/App/Controller/Report/New.pm:831 perllib/FixMyStreet/App/Controller/Report/New.pm:850 perllib/FixMyStreet/App/Controller/Report/New.pm:893 perllib/FixMyStreet/DB/Result/Problem.pm:355 templates/web/default/js/validation_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:361 +#: perllib/FixMyStreet/DB/Result/Problem.pm:387 msgid "Please choose a property type" msgstr "" +#: templates/web/seesomething/js/translation_strings.html:6 +msgid "Please choose a transport category" +msgstr "" + +#: templates/web/seesomething/js/translation_strings.html:7 +msgid "Please choose an incident category" +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”" msgstr "" @@ -1378,23 +1702,27 @@ msgid "" "please <a href=\"/\">go to the front page</a> and follow the instructions." msgstr "" -#: templates/web/default/report/new/notes.html:7 templates/web/fixmystreet/report/new/notes.html:6 -msgid "Please do not be abusive — abusing your council devalues the service for all users." +#: templates/web/default/report/new/notes.html:7 templates/web/fixmystreet/report/new/notes.html:7 templates/web/oxfordshire/report/new/notes.html:6 +msgid "Please do not be abusive — abusing your council devalues the service for all users." msgstr "" -#: perllib/FixMyStreet/DB/Result/Comment.pm:146 templates/web/default/js/validation_strings.html:2 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:46 +msgid "Please do not give address or personal information in this section." +msgstr "" + +#: 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:330 templates/web/default/js/validation_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:104 templates/web/default/js/validation_strings.html:12 templates/web/default/js/validation_strings.html:16 +#: 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 "" @@ -1402,38 +1730,46 @@ msgstr "" msgid "Please enter a valid email address" msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:333 templates/web/default/js/validation_strings.html:4 +#: 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:101 templates/web/default/auth/general.html:13 templates/web/default/auth/general.html:8 templates/web/default/js/validation_strings.html:11 templates/web/default/js/validation_strings.html:15 templates/web/fixmystreet/auth/general.html:14 templates/web/fixmystreet/auth/general.html:9 +#: 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 "" -#: templates/web/bromley/report/new/fill_in_details_form.html:149 templates/web/fixmystreet/report/new/fill_in_details_form.html:150 +#: templates/web/bromley/report/new/fill_in_details_form.html:149 templates/web/fixmystreet/report/new/fill_in_details_form.html:151 templates/web/seesomething/report/new/fill_in_details_form.html:85 templates/web/zurich/report/new/fill_in_details_form.html:92 msgid "Please enter your email address" msgstr "" -#: templates/web/default/js/validation_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:348 templates/web/default/js/validation_strings.html:7 +#: 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:143 perllib/FixMyStreet/DB/Result/Problem.pm:341 perllib/FixMyStreet/DB/Result/User.pm:97 templates/web/default/js/validation_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/validation_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/validation_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 "" +#: 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 "" + #: templates/web/emptyhomes/report/new/fill_in_details_text.html:1 msgid "" "Please fill in details of the empty property below, saying what type of\n" @@ -1444,7 +1780,7 @@ msgid "" "to read, as does a lack of punctuation." msgstr "" -#: templates/web/default/report/new/fill_in_details_text.html:1 templates/web/default/report/new/fill_in_details_text.html:11 templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 templates/web/fixmybarangay/report/new/fill_in_details_text.html:10 templates/web/fixmystreet/report/new/fill_in_details_text.html:1 templates/web/fixmystreet/report/new/fill_in_details_text.html:11 +#: templates/web/default/report/new/fill_in_details_text.html:1 templates/web/default/report/new/fill_in_details_text.html:11 templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 templates/web/fixmybarangay/report/new/fill_in_details_text.html:10 templates/web/fixmystreet/report/new/fill_in_details_text.html:1 templates/web/fixmystreet/report/new/fill_in_details_text.html:8 msgid "Please fill in details of the problem below." msgstr "" @@ -1463,11 +1799,11 @@ msgid "" "photo of the problem if you have one), etc." msgstr "" -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:70 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:70 templates/web/seesomething/report/new/fill_in_details_form.html:20 templates/web/zurich/report/new/fill_in_details_form.html:46 msgid "Please fill in details of the problem." msgstr "" -#: templates/web/bromley/report/new/fill_in_details_form.html:28 templates/web/default/report/new/fill_in_details_form.html:27 templates/web/fixmystreet/report/new/fill_in_details_form.html:35 +#: templates/web/bromley/report/new/fill_in_details_form.html:28 templates/web/default/report/new/fill_in_details_form.html:27 templates/web/emptyhomes/report/new/fill_in_details_form.html:26 templates/web/fixmystreet/report/new/fill_in_details_form.html:35 templates/web/zurich/report/new/fill_in_details_form.html:20 msgid "Please fill in the form below with details of the problem, and describe the location as precisely as possible in the details box." msgstr "" @@ -1479,7 +1815,7 @@ msgstr "" msgid "Please note that updates are not sent to the council." msgstr "" -#: templates/web/default/report/display.html:56 +#: templates/web/default/report/update-form.html:7 msgid "Please note that updates are not sent to the council. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" msgstr "" @@ -1487,11 +1823,11 @@ msgstr "" msgid "Please note that updates are not sent to the relevant department. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" msgstr "" -#: templates/web/bromley/report/new/fill_in_details_form.html:23 templates/web/default/report/new/fill_in_details_form.html:5 templates/web/fixmystreet/report/new/fill_in_details_form.html:26 +#: templates/web/bromley/report/new/fill_in_details_form.html:23 templates/web/default/report/new/fill_in_details_form.html:5 templates/web/emptyhomes/report/new/fill_in_details_form.html:5 templates/web/fixmystreet/report/new/fill_in_details_form.html:26 templates/web/zurich/report/new/fill_in_details_form.html:11 msgid "Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit." msgstr "" -#: templates/web/default/report/new/notes.html:1 templates/web/fixmybarangay/report/new/notes.html:1 templates/web/fixmystreet/report/new/notes.html:1 +#: templates/web/default/report/new/notes.html:1 templates/web/fixmybarangay/report/new/notes.html:1 templates/web/fixmystreet/report/new/notes.html:1 templates/web/oxfordshire/report/new/notes.html:1 msgid "Please note:" msgstr "" @@ -1523,11 +1859,11 @@ msgstr "" msgid "Please take a look at the updates that have been left." msgstr "" -#: perllib/FixMyStreet/App/Controller/Photo.pm:175 +#: perllib/FixMyStreet/App/Controller/Photo.pm:176 msgid "Please upload a JPEG image only" msgstr "" -#: perllib/FixMyStreet/App/Controller/Photo.pm:182 +#: perllib/FixMyStreet/App/Controller/Photo.pm:183 msgid "Please upload a JPEG image only\n" msgstr "" @@ -1535,51 +1871,59 @@ msgstr "" msgid "Please write a message" msgstr "" -#: templates/web/bromley/report/display.html:70 templates/web/fixmystreet/report/display.html:85 +#: templates/web/bromley/report/display.html:70 templates/web/fixmystreet/report/update-form.html:23 msgid "Please write your update here" msgstr "" -#: templates/web/bromley/report/display.html:121 templates/web/bromley/report/display.html:149 templates/web/bromley/report/display.html:161 templates/web/default/contact/index.html:93 templates/web/default/report/display.html:119 templates/web/default/report/display.html:156 templates/web/default/report/display.html:178 templates/web/fixmystreet/contact/index.html:93 templates/web/fixmystreet/report/display.html:131 templates/web/fixmystreet/report/display.html:155 templates/web/fixmystreet/report/display.html:183 +#: templates/web/bromley/report/display.html:123 templates/web/bromley/report/display.html:151 templates/web/bromley/report/display.html:163 templates/web/default/contact/index.html:93 templates/web/default/report/update-form.html:109 templates/web/default/report/update-form.html:131 templates/web/default/report/update-form.html:72 templates/web/fixmystreet/contact/index.html:105 templates/web/fixmystreet/report/update-form.html:123 templates/web/fixmystreet/report/update-form.html:71 templates/web/fixmystreet/report/update-form.html:95 msgid "Post" msgstr "" -#: templates/web/default/report/updates.html:14 +#: templates/web/default/report/updates.html:15 msgid "Posted anonymously at %s" msgstr "" -#: templates/web/default/report/updates.html:21 +#: templates/web/default/report/updates.html:22 msgid "Posted by %s (<strong>%s</strong>) at %s" msgstr "" -#: templates/web/default/report/updates.html:23 +#: templates/web/default/report/updates.html:24 msgid "Posted by %s at %s" msgstr "" -#: templates/web/default/admin/council_contacts.html:100 templates/web/default/admin/council_edit.html:30 templates/web/default/admin/report_edit.html:43 +#: templates/web/default/pagination.html:7 +msgid "Previous" +msgstr "" + +#: 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 "" +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:108 +msgid "Private information (not shown on site)" +msgstr "" + #: templates/web/default/maps/openlayers.html:85 msgid "Problem" msgstr "" -#: templates/web/default/admin/timeline.html:24 +#: templates/web/default/admin/timeline.html:22 msgid "Problem %d created" msgstr "" -#: templates/web/default/admin/timeline.html:26 +#: templates/web/default/admin/timeline.html:24 msgid "Problem %s confirmed" msgstr "" -#: templates/web/default/admin/timeline.html:28 +#: templates/web/default/admin/timeline.html:26 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:833 +#: perllib/FixMyStreet/App/Controller/Admin.pm:950 msgid "Problem marked as open." msgstr "" @@ -1587,7 +1931,7 @@ msgstr "" msgid "Problem state change based on survey results" msgstr "" -#: templates/web/default/admin/list_flagged.html:5 +#: templates/web/default/admin/flagged.html:10 msgid "Problems" msgstr "" @@ -1595,11 +1939,11 @@ msgstr "" msgid "Problems in this area" msgstr "" -#: templates/web/bromley/report/display.html:31 templates/web/fixmystreet/around/tabbed_lists.html:4 templates/web/fixmystreet/report/display.html:31 +#: templates/web/bromley/report/display.html:31 templates/web/fixmystreet/around/tabbed_lists.html:4 templates/web/fixmystreet/report/display.html:46 msgid "Problems nearby" msgstr "" -#: templates/web/fixmystreet/around/tabbed_lists.html:3 +#: templates/web/fixmystreet/around/tabbed_lists.html:3 templates/web/fixmystreet/report/display.html:44 msgid "Problems on the map" msgstr "" @@ -1611,15 +1955,15 @@ msgstr "" msgid "Problems within %.1fkm of this location" msgstr "" -#: perllib/FixMyStreet/Cobrand/Default.pm:611 perllib/FixMyStreet/Cobrand/EmptyHomes.pm:95 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:162 perllib/FixMyStreet/Cobrand/UK.pm:231 +#: perllib/FixMyStreet/Cobrand/Default.pm:626 perllib/FixMyStreet/Cobrand/EmptyHomes.pm:109 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:155 perllib/FixMyStreet/Cobrand/UK.pm:228 msgid "Problems within %s" msgstr "" -#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:103 perllib/FixMyStreet/Cobrand/UK.pm:245 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:117 perllib/FixMyStreet/Cobrand/UK.pm:242 msgid "Problems within %s ward" msgstr "" -#: templates/web/default/reports/council.html:0 templates/web/default/reports/council.html:29 +#: templates/web/default/reports/body.html:0 templates/web/default/reports/body.html:24 msgid "Problems within %s, FixMyStreet" msgstr "" @@ -1631,7 +1975,11 @@ msgstr "" msgid "Properties recently reported as put back to use on reportemptyhomes.com" msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:618 +#: templates/web/default/admin/report_edit.html:32 templates/web/emptyhomes/report/new/fill_in_details_form.html:115 +msgid "Property address:" +msgstr "" + +#: templates/web/default/report/new/category.html:8 msgid "Property type:" msgstr "" @@ -1639,31 +1987,51 @@ msgstr "" msgid "Provide a title" msgstr "" -#: templates/web/bromley/report/display.html:57 templates/web/default/report/display.html:51 templates/web/fixmystreet/report/display.html:66 +#: templates/web/bromley/report/display.html:57 templates/web/default/report/update-form.html:3 templates/web/fixmystreet/report/update-form.html:4 msgid "Provide an update" msgstr "" +#: templates/web/fixmystreet/auth/general.html:53 +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 "" + #: 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." msgstr "" -#: templates/web/bromley/report/display.html:142 templates/web/default/report/display.html:175 templates/web/default/report/new/fill_in_details_form.html:173 templates/web/fixmystreet/report/display.html:176 templates/web/fixmystreet/report/new/fill_in_details_form.html:201 +#: templates/web/bromley/report/display.html:144 templates/web/default/report/new/fill_in_details_form.html:173 templates/web/default/report/update-form.html:128 templates/web/fixmystreet/report/new/fill_in_details_form.html:202 templates/web/fixmystreet/report/update-form.html:116 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/council_contacts.html:44 templates/web/default/admin/council_contacts.html:57 +#: templates/web/default/admin/body.html:60 templates/web/default/admin/body.html:73 msgid "Public" msgstr "" +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:44 +msgid "Public information (shown on site)" +msgstr "" + +#: 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:80 templates/web/zurich/admin/stats.html:38 +msgid "Publish photo" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:222 +msgid "Publish the response" +msgstr "" + #: templates/web/default/questionnaire/completed.html:1 templates/web/default/questionnaire/completed.html:2 templates/web/default/questionnaire/index.html:0 templates/web/default/questionnaire/index.html:14 templates/web/default/questionnaire/index.html:4 templates/web/fixmystreet/questionnaire/index.html:0 templates/web/fixmystreet/questionnaire/index.html:14 templates/web/fixmystreet/questionnaire/index.html:32 templates/web/fixmystreet/questionnaire/index.html:4 msgid "Questionnaire" msgstr "" -#: templates/web/default/admin/timeline.html:32 +#: templates/web/default/admin/timeline.html:30 msgid "Questionnaire %d answered for problem %d, %s to %s" msgstr "" -#: templates/web/default/admin/timeline.html:30 +#: templates/web/default/admin/timeline.html:28 msgid "Questionnaire %d sent for problem %d" msgstr "" @@ -1671,23 +2039,23 @@ msgstr "" msgid "Questionnaire filled in by problem reporter" msgstr "" -#: templates/web/bromley/report/display.html:37 templates/web/default/alert/_list.html:21 templates/web/default/around/display_location.html:1 templates/web/default/around/display_location.html:3 templates/web/default/report/display.html:42 templates/web/default/reports/_rss.html:1 templates/web/fixmystreet/alert/_list.html:22 templates/web/fixmystreet/alert/updates.html:9 templates/web/fixmystreet/report/display.html:45 +#: templates/web/bromley/report/display.html:37 templates/web/default/alert/_list.html:21 templates/web/default/around/display_location.html:1 templates/web/default/around/display_location.html:3 templates/web/default/report/display.html:46 templates/web/default/reports/_rss.html:1 templates/web/fixmystreet/alert/_list.html:22 templates/web/fixmystreet/alert/updates.html:9 templates/web/fixmystreet/report/display.html:61 msgid "RSS feed" msgstr "" -#: perllib/FixMyStreet/Cobrand/UK.pm:274 perllib/FixMyStreet/Cobrand/UK.pm:286 +#: perllib/FixMyStreet/Cobrand/UK.pm:271 perllib/FixMyStreet/Cobrand/UK.pm:283 msgid "RSS feed for %s" msgstr "" -#: perllib/FixMyStreet/Cobrand/UK.pm:280 perllib/FixMyStreet/Cobrand/UK.pm:292 +#: perllib/FixMyStreet/Cobrand/UK.pm:277 perllib/FixMyStreet/Cobrand/UK.pm:289 msgid "RSS feed for %s ward, %s" msgstr "" -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:178 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:186 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:196 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:204 perllib/FixMyStreet/Cobrand/UK.pm:300 perllib/FixMyStreet/Cobrand/UK.pm:312 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:171 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:179 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:189 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:197 perllib/FixMyStreet/Cobrand/UK.pm:297 perllib/FixMyStreet/Cobrand/UK.pm:309 msgid "RSS feed of %s" msgstr "" -#: perllib/FixMyStreet/Cobrand/UK.pm:305 perllib/FixMyStreet/Cobrand/UK.pm:317 +#: perllib/FixMyStreet/Cobrand/UK.pm:302 perllib/FixMyStreet/Cobrand/UK.pm:314 msgid "RSS feed of %s, within %s ward" msgstr "" @@ -1699,11 +2067,11 @@ msgstr "" msgid "RSS feed of problems in this %s" msgstr "" -#: perllib/FixMyStreet/Cobrand/Default.pm:612 perllib/FixMyStreet/Cobrand/EmptyHomes.pm:96 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:161 perllib/FixMyStreet/Cobrand/UK.pm:238 +#: perllib/FixMyStreet/Cobrand/Default.pm:627 perllib/FixMyStreet/Cobrand/EmptyHomes.pm:110 perllib/FixMyStreet/Cobrand/FiksGataMi.pm:154 perllib/FixMyStreet/Cobrand/UK.pm:235 msgid "RSS feed of problems within %s" msgstr "" -#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:102 perllib/FixMyStreet/Cobrand/UK.pm:244 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:116 perllib/FixMyStreet/Cobrand/UK.pm:241 msgid "RSS feed of problems within %s ward" msgstr "" @@ -1711,31 +2079,31 @@ msgstr "" msgid "RSS feed of recent local problems" msgstr "" -#: templates/web/bromley/report/display.html:37 templates/web/default/report/display.html:42 templates/web/fixmystreet/alert/updates.html:9 templates/web/fixmystreet/report/display.html:45 +#: templates/web/bromley/report/display.html:37 templates/web/default/report/display.html:46 templates/web/fixmystreet/alert/updates.html:9 templates/web/fixmystreet/report/display.html:61 msgid "RSS feed of updates to this problem" msgstr "" -#: templates/web/bromley/report/display.html:39 templates/web/default/alert/updates.html:9 templates/web/default/report/display.html:33 templates/web/fixmystreet/alert/updates.html:14 templates/web/fixmystreet/report/display.html:47 +#: templates/web/bromley/report/display.html:39 templates/web/default/alert/updates.html:9 templates/web/default/report/display.html:37 templates/web/fixmystreet/alert/updates.html:14 templates/web/fixmystreet/report/display.html:63 msgid "Receive email when updates are left on this problem." msgstr "" -#: templates/web/default/around/display_location.html:0 templates/web/default/around/display_location.html:34 +#: templates/web/default/around/display_location.html:0 templates/web/default/around/display_location.html:32 msgid "Recent local problems, FixMyStreet" msgstr "" -#: templates/web/default/reports/index.html:19 +#: templates/web/default/reports/index.html:19 templates/web/fixmybarangay/reports/index.html:19 msgid "Recently <br>fixed" msgstr "" -#: templates/web/emptyhomes/reports/index.html:13 templates/web/fiksgatami/nn/reports/index.html:13 templates/web/fiksgatami/reports/index.html:13 +#: templates/web/fiksgatami/nn/reports/index.html:13 templates/web/fiksgatami/reports/index.html:13 msgid "Recently fixed" msgstr "" -#: templates/web/default/index.html:50 templates/web/fixmystreet/index.html:68 +#: templates/web/default/index.html:35 templates/web/emptyhomes/index.html:24 templates/web/fixmystreet/index.html:45 msgid "Recently reported problems" msgstr "" -#: templates/web/default/report/new/notes.html:9 templates/web/fixmystreet/report/new/notes.html:8 +#: templates/web/default/report/new/notes.html:9 templates/web/fixmystreet/report/new/notes.html:10 msgid "Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site remember that you can contact your council directly using their own website." msgstr "" @@ -1747,31 +2115,31 @@ msgstr "" msgid "Remove flag" msgstr "" -#: templates/web/default/admin/report_edit.html:54 templates/web/default/admin/update_edit.html:48 +#: templates/web/default/admin/report_edit.html:89 templates/web/default/admin/update_edit.html:57 templates/web/zurich/admin/update_edit.html:35 msgid "Remove photo (can't be undone!)" msgstr "" -#: templates/web/emptyhomes/header.html:10 +#: templates/web/emptyhomes/header.html:12 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:27 templates/web/fiksgatami/footer.html:5 templates/web/fiksgatami/nn/footer.html:5 templates/web/fixmystreet/footer.html:45 templates/web/reading/footer.html:6 +#: 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 "" -#: templates/web/bromley/report/display.html:28 templates/web/fixmystreet/report/display.html:26 +#: templates/web/bromley/report/display.html:28 templates/web/fixmystreet/report/display.html:35 msgid "Report abuse" msgstr "" -#: templates/web/emptyhomes/index.html:37 -msgid "Report empty properties" +#: templates/web/default/report_created.html:1 templates/web/default/report_created.html:3 templates/web/seesomething/report_created.html:0 templates/web/seesomething/report_created.html:8 +msgid "Report created" msgstr "" -#: perllib/FixMyStreet/App/Controller/Rss.pm:277 +#: perllib/FixMyStreet/App/Controller/Rss.pm:295 msgid "Report on %s" msgstr "" -#: templates/web/default/index.html:15 templates/web/fixmystreet/around/postcode_form.html:9 +#: templates/web/default/index.html:14 templates/web/emptyhomes/index.html:5 templates/web/fixmystreet/around/intro.html:1 templates/web/stevenage/around/intro.html:1 templates/web/zurich/around/intro.html:1 msgid "Report, view, or discuss local problems" msgstr "" @@ -1783,7 +2151,7 @@ msgstr "" msgid "Reported %s, to %s" msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:520 templates/web/default/contact/index.html:45 templates/web/fixmystreet/contact/index.html:46 +#: 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 "" @@ -1791,128 +2159,155 @@ msgstr "" msgid "Reported before" msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:512 -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:543 templates/web/default/contact/index.html:47 templates/web/fixmystreet/contact/index.html:48 -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:534 -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:508 -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:528 -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 "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:516 -msgid "Reported in the %s category anonymously at %s" +#: perllib/FixMyStreet/DB/Result/Problem.pm:573 +msgid "Reported via %s by %s at %s" msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:538 -msgid "Reported in the %s category by %s at %s" +#: perllib/FixMyStreet/DB/Result/Problem.pm:547 +msgid "Reported via %s in the %s category anonymously at %s" msgstr "" -#: templates/web/default/around/around_index.html:1 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/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 +#: 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: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: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: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 +msgid "Reports awaiting approval" +msgstr "" + #: templates/web/default/around/tabbed_lists.html:3 msgid "Reports on and around the map" msgstr "" -#: templates/web/default/admin/report_edit.html:35 +#: templates/web/zurich/admin/index-sdm.html:10 +msgid "Reports published" +msgstr "" + +#: templates/web/default/admin/report_edit.html:71 msgid "Resend report" msgstr "" -#: perllib/FixMyStreet/Geocode/OSM.pm:168 +#: templates/web/default/js/translation_strings.html:28 templates/web/oxfordshire/js/translation_strings.html:22 +msgid "Right place?" +msgstr "" + +#: perllib/FixMyStreet/Geocode/OSM.pm:173 msgid "Road operator for this named road (derived from road reference number and type): %s" msgstr "" -#: perllib/FixMyStreet/Geocode/OSM.pm:165 +#: perllib/FixMyStreet/Geocode/OSM.pm:170 msgid "Road operator for this named road (from OpenStreetMap): %s" msgstr "" -#: templates/web/default/admin/council_edit.html:63 -msgid "Save changes" +#: 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:1041 -msgid "Search Abuse" +#: 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 "" -#: templates/web/default/admin/search_abuse.html:1 -msgid "Search Abuse Table" +#: templates/web/default/admin/body_edit.html:76 +msgid "Save changes" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1037 templates/web/default/admin/list_flagged.html:1 templates/web/default/admin/search_reports.html:1 +#: templates/web/default/admin/reports.html:1 templates/web/zurich/admin/reports.html:1 msgid "Search Reports" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1040 templates/web/default/admin/search_users.html:1 +#: templates/web/default/admin/users.html:1 msgid "Search Users" msgstr "" -#: templates/web/default/admin/search_abuse.html:4 templates/web/default/admin/search_reports.html:5 templates/web/default/admin/search_users.html:5 +#: templates/web/zurich/header.html:77 +msgid "Search reports" +msgstr "" + +#: 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/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:71 templates/web/zurich/admin/body-form.html:26 +msgid "Select an area" +msgstr "" + #: templates/web/default/alert/_list.html:8 templates/web/fixmystreet/alert/_list.html:10 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:626 +#: perllib/FixMyStreet/DB/Result/Problem.pm:664 msgid "Sent to %s %s later" msgstr "" -#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:71 msgid "Sent:" msgstr "" -#: templates/web/default/admin/report_edit.html:37 +#: templates/web/default/admin/report_edit.html:73 templates/web/zurich/admin/stats.html:45 msgid "Service:" msgstr "" -#: templates/web/fixmystreet/report/display.html:29 +#: templates/web/fixmystreet/report/display.html:41 msgid "Share" msgstr "" -#: templates/web/emptyhomes/static/about.html:21 -msgid "Shelter Cymru" -msgstr "" - -#: templates/web/emptyhomes/static/about.html:23 -msgid "" -"Shelter Cymru is Wales’ people and homes charity and wants\n" -" everyone in Wales to have a decent home. We believe a home is a fundamental\n" -" right and essential to the health and well-being of people and communities.\n" -" We work for people in housing need. We have offices all over Wales and\n" -" prevent people from losing their homes by offering free, confidential and\n" -" independent advice. When necessary we constructively challenge on behalf of\n" -" people to ensure they are properly assisted and to improve practice and\n" -" learning. We believe that bringing empty homes back into use can make a\n" -" significant contribution to the supply of affordable homes in Wales." -msgstr "" - -#: templates/web/bromley/report/display.html:203 templates/web/bromley/report/new/fill_in_details_form.html:129 templates/web/bromley/report/new/fill_in_details_form.html:175 templates/web/default/report/display.html:208 templates/web/default/report/new/fill_in_details_form.html:210 templates/web/fixmystreet/report/display.html:207 templates/web/fixmystreet/report/new/fill_in_details_form.html:128 templates/web/fixmystreet/report/new/fill_in_details_form.html:196 +#: templates/web/bromley/report/display.html:205 templates/web/bromley/report/new/fill_in_details_form.html:129 templates/web/bromley/report/new/fill_in_details_form.html:175 templates/web/default/report/new/fill_in_details_form.html:210 templates/web/default/report/update-form.html:157 templates/web/fixmystreet/report/new/fill_in_details_form.html:129 templates/web/fixmystreet/report/new/fill_in_details_form.html:197 templates/web/fixmystreet/report/update-form.html:144 msgid "Show my name publicly" msgstr "" -#: templates/web/default/around/display_location.html:65 +#: templates/web/default/around/display_location.html:69 msgid "Show old" msgstr "" -#: templates/web/default/around/display_location.html:56 +#: templates/web/default/around/display_location.html:60 msgid "Show pins" msgstr "" -#: templates/web/default/auth/general.html:3 templates/web/default/auth/general.html:49 templates/web/fixmybarangay/header.html:70 templates/web/fixmystreet/auth/general.html:3 templates/web/fixmystreet/auth/general.html:42 templates/web/fixmystreet/auth/general.html:62 templates/web/fixmystreet/header.html:51 templates/web/zurich/header.html:51 +#: templates/web/default/auth/general.html:3 templates/web/default/auth/general.html:49 templates/web/fixmybarangay/header.html:70 templates/web/fixmystreet/auth/general.html:3 templates/web/fixmystreet/auth/general.html:42 templates/web/fixmystreet/auth/general.html:62 templates/web/fixmystreet/header.html:54 templates/web/oxfordshire/header.html:115 templates/web/seesomething/auth/general.html:3 templates/web/seesomething/auth/general.html:39 templates/web/stevenage/header.html:101 templates/web/zurich/auth/general.html:18 templates/web/zurich/auth/general.html:35 msgid "Sign in" msgstr "" @@ -1920,15 +2315,15 @@ msgstr "" msgid "Sign in by email" msgstr "" -#: templates/web/default/auth/general.html:1 templates/web/fixmystreet/auth/general.html:1 +#: templates/web/default/auth/general.html:1 templates/web/fixmystreet/auth/general.html:1 templates/web/seesomething/auth/general.html:1 templates/web/zurich/auth/general.html:1 msgid "Sign in or create an account" msgstr "" -#: templates/web/bromley/auth/sign_out.html:1 templates/web/default/auth/sign_out.html:1 templates/web/default/header.html:30 templates/web/emptyhomes/header.html:41 templates/web/fiksgatami/header.html:22 templates/web/fiksgatami/nn/header.html:22 templates/web/lichfielddc/header.html:177 templates/web/reading/header.html:33 +#: templates/web/bromley/auth/sign_out.html:1 templates/web/default/auth/sign_out.html:1 templates/web/default/header.html:30 templates/web/emptyhomes/header.html:46 templates/web/fiksgatami/header.html:22 templates/web/fiksgatami/nn/header.html:22 templates/web/lichfielddc/header.html:177 templates/web/reading/header.html:33 templates/web/seesomething/auth/sign_out.html:1 templates/web/zurich/auth/sign_out.html:1 msgid "Sign out" msgstr "" -#: templates/web/default/header.html:29 templates/web/emptyhomes/header.html:40 templates/web/fiksgatami/header.html:21 templates/web/fiksgatami/nn/header.html:21 templates/web/lichfielddc/header.html:177 templates/web/reading/header.html:32 +#: templates/web/default/header.html:29 templates/web/emptyhomes/header.html:45 templates/web/fiksgatami/header.html:21 templates/web/fiksgatami/nn/header.html:21 templates/web/lichfielddc/header.html:177 templates/web/reading/header.html:32 msgid "Signed in as %s" msgstr "" @@ -1936,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 "" @@ -1944,11 +2345,7 @@ msgstr "" msgid "Some text to localize" msgstr "" -#: templates/web/default/admin/council_list.html:42 -msgid "Some unconfirmeds" -msgstr "" - -#: perllib/FixMyStreet/Cobrand/UK.pm:89 +#: perllib/FixMyStreet/Cobrand/UK.pm:93 msgid "Sorry, that appears to be a Crown dependency postcode, which we don't cover." msgstr "" @@ -1956,11 +2353,11 @@ msgstr "" msgid "Sorry, there has been an error confirming your problem." msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:213 perllib/FixMyStreet/Geocode.pm:27 perllib/FixMyStreet/Geocode/Bing.pm:51 perllib/FixMyStreet/Geocode/Google.pm:69 perllib/FixMyStreet/Geocode/OSM.pm:61 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:215 perllib/FixMyStreet/Geocode.pm:28 perllib/FixMyStreet/Geocode/Bing.pm:58 perllib/FixMyStreet/Geocode/Google.pm:74 perllib/FixMyStreet/Geocode/OSM.pm:66 msgid "Sorry, we could not find that location." msgstr "" -#: perllib/FixMyStreet/Geocode/Bing.pm:46 perllib/FixMyStreet/Geocode/Google.pm:64 +#: perllib/FixMyStreet/Geocode/Bing.pm:53 perllib/FixMyStreet/Geocode/Google.pm:69 perllib/FixMyStreet/Geocode/Zurich.pm:87 msgid "Sorry, we could not parse that location. Please try again." msgstr "" @@ -1969,54 +2366,62 @@ 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:" +msgid "Start Date:" msgstr "" -#: templates/web/bromley/report/display.html:78 templates/web/default/admin/list_flagged.html:18 templates/web/default/admin/list_updates.html:6 templates/web/default/admin/search_reports.html:21 templates/web/fixmystreet/report/display.html:88 +#: 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:17 templates/web/default/admin/update_edit.html:18 templates/web/default/report/display.html:77 +#: 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:1043 templates/web/default/admin/stats.html:1 +#: 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 "" -#: templates/web/default/report/updates.html:9 +#: templates/web/zurich/admin/index-dm.html:23 templates/web/zurich/admin/index-sdm.html:21 templates/web/zurich/admin/reports.html:13 +msgid "Status" +msgstr "" + +#: templates/web/default/report/updates.html:10 msgid "Still open, via questionnaire, %s" msgstr "" -#: templates/web/bromley/report/new/fill_in_details_form.html:48 templates/web/fixmystreet/contact/index.html:79 templates/web/fixmystreet/report/new/fill_in_details_form.html:60 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370 +msgid "Subcategory: %s" +msgstr "" + +#: templates/web/zurich/admin/index-dm.html:27 +msgid "Subdivision/Body" +msgstr "" + +#: templates/web/bromley/report/new/fill_in_details_form.html:48 templates/web/fixmystreet/contact/index.html:91 templates/web/fixmystreet/report/new/fill_in_details_form.html:60 msgid "Subject" msgstr "" -#: templates/web/default/admin/report_edit.html:13 templates/web/default/contact/index.html:83 templates/web/default/report/new/fill_in_details_form.html:52 +#: 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/fixmystreet/report/new/fill_in_details_form.html:141 templates/web/fixmystreet/report/new/fill_in_details_form.html:166 templates/web/fixmystreet/report/new/fill_in_details_form.html:211 +#: 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:57 templates/web/default/admin/update_edit.html:51 templates/web/default/admin/user_edit.html:20 +#: 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 "" -#: templates/web/default/questionnaire/index.html:112 templates/web/fixmystreet/questionnaire/index.html:105 +#: templates/web/default/questionnaire/index.html:116 templates/web/fixmystreet/questionnaire/index.html:105 msgid "Submit questionnaire" msgstr "" -#: templates/web/bromley/report/display.html:44 templates/web/default/alert/updates.html:17 templates/web/default/report/display.html:38 templates/web/fixmystreet/alert/updates.html:23 templates/web/fixmystreet/report/display.html:52 +#: 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 "" + +#: templates/web/bromley/report/display.html:44 templates/web/default/alert/updates.html:17 templates/web/default/report/display.html:42 templates/web/fixmystreet/alert/updates.html:23 templates/web/fixmystreet/report/display.html:68 msgid "Subscribe" msgstr "" @@ -2028,27 +2433,31 @@ msgstr "" msgid "Subscribe to an alert based upon what baranagay you’re in:" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1035 templates/web/default/admin/index.html:1 +#: 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 "" -#: templates/web/default/reports/index.html:1 templates/web/emptyhomes/reports/index.html:1 templates/web/fiksgatami/nn/reports/index.html:1 templates/web/fiksgatami/reports/index.html:1 +#: templates/web/default/reports/index.html:1 templates/web/emptyhomes/reports/index.html:1 templates/web/fiksgatami/nn/reports/index.html:1 templates/web/fiksgatami/reports/index.html:1 templates/web/fixmybarangay/reports/index.html:1 templates/web/zurich/reports/index.html:0 templates/web/zurich/reports/index.html:4 msgid "Summary reports" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1039 templates/web/default/admin/questionnaire.html:1 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1179 +msgid "Survey" +msgstr "" + +#: templates/web/default/admin/questionnaire.html:1 msgid "Survey Results" msgstr "" -#: templates/web/default/admin/list_updates.html:14 +#: 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 "" -#: templates/web/default/admin/council_contacts.html:20 +#: templates/web/default/admin/body.html:18 msgid "Text only version" msgstr "" -#: templates/web/default/admin/update_edit.html:13 +#: templates/web/default/admin/update_edit.html:20 templates/web/zurich/admin/update_edit.html:12 msgid "Text:" msgstr "" @@ -2080,10 +2489,6 @@ msgstr "" msgid "Thanks for uploading your photo. We now need to locate your problem, so please enter a nearby street name or postcode in the box above :" msgstr "" -#: templates/web/default/around/around_index.html:28 -msgid "Thanks for uploading your photo. We now need to locate your problem, so please enter a nearby street name or postcode in the box below :" -msgstr "" - #: templates/web/default/contact/submit.html:8 msgid "Thanks for your feedback. We'll get back to you as soon as we can!" msgstr "" @@ -2092,63 +2497,74 @@ 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:189 +#: perllib/FixMyStreet/App/Controller/Photo.pm:190 msgid "That image doesn't appear to have uploaded correctly (%s), please try again." msgstr "" -#: perllib/FixMyStreet/App/Controller/Council.pm:91 +#: perllib/FixMyStreet/App/Controller/Council.pm:90 msgid "That location does not appear to be covered by a council; perhaps it is offshore or outside the country. Please try again." msgstr "" -#: perllib/FixMyStreet/App/Controller/Location.pm:120 +#: perllib/FixMyStreet/App/Controller/Location.pm:123 msgid "That location does not appear to be in the UK; please try again." msgstr "" -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:63 perllib/FixMyStreet/Cobrand/UK.pm:82 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:63 perllib/FixMyStreet/Cobrand/UK.pm:86 msgid "That postcode was not recognised, sorry." msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:616 +#: perllib/FixMyStreet/App/Controller/Admin.pm:704 msgid "That problem will now be resent." msgstr "" -#: perllib/FixMyStreet/App/Controller/Report.pm:98 -msgid "That report cannot be viewed on FixMyStreet." +#: perllib/FixMyStreet/App/Controller/Report.pm:117 +msgid "That report cannot be viewed on %s." msgstr "" -#: perllib/FixMyStreet/App/Controller/Report.pm:92 +#: perllib/FixMyStreet/App/Controller/Report.pm:111 msgid "That report has been removed from FixMyStreet." msgstr "" -#: templates/web/emptyhomes/static/about.html:7 -msgid "The Empty Homes Agency" +#: 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/emptyhomes/static/about.html:9 +#: templates/web/default/admin/body-form.html:132 templates/web/default/admin/body-form.html:133 msgid "" -"The Empty Homes agency is an independent campaigning charity. We\n" -" are not part of government, and have no formal links with local councils\n" -" although we work in cooperation with both. We exist to highlight the waste\n" -" of empty property and work with others to devise and promote sustainable\n" -" solutions to bring empty property back into use. We are based in London but\n" -" work across England. We also work in partnership with other charities across\n" -" the UK." +"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/open311/index.html:23 +#: 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/auth/token.html:21 templates/web/default/email_sent.html:22 +#: 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 — <em>please</em> be patient." msgstr "" #: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 templates/web/fixmystreet/report/new/fill_in_details_text.html:3 -msgid "" -"The council won’t be able to help unless you leave as much\n" -"detail as you can. Please describe the exact location of the problem (e.g. on a\n" -"wall), what it is, how long it has been there, a description (and a photo of\n" -"the problem if you have one), etc." +msgid "The council won’t be able to help unless you leave as much detail as you can. Please describe the exact location of the problem (e.g. on a wall), what it is, how long it has been there, a description (and a photo of the problem if you have one), etc." msgstr "" #: templates/web/fixmystreet/questionnaire/index.html:43 @@ -2159,15 +2575,19 @@ msgstr "" msgid "The details of your problem are available on the right hand side of this page." msgstr "" -#: perllib/FixMyStreet/App/Controller/Dashboard.pm:60 perllib/FixMyStreet/App/Controller/Reports.pm:43 perllib/FixMyStreet/App/Controller/Reports.pm:74 +#: 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 "" -#: templates/web/default/open311/index.html:19 +#: templates/web/default/open311/index.html:88 msgid "The following Open311 v2 attributes are returned for each request: service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code and service_name." msgstr "" -#: perllib/FixMyStreet/Geocode/OSM.pm:160 +#: perllib/FixMyStreet/Geocode/OSM.pm:165 msgid "The following information about the nearest road might be inaccurate or irrelevant, if the problem is close to several roads or close to a road without a name registered in OpenStreetMap." msgstr "" @@ -2215,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 "" @@ -2231,19 +2655,25 @@ 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:271 +#: 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 "" -#: perllib/FixMyStreet/App/Controller/Reports.pm:71 +#: 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 "" -#: perllib/FixMyStreet/App/Controller/Dashboard.pm:59 +#: perllib/FixMyStreet/App/Controller/Contact.pm:116 perllib/FixMyStreet/App/Controller/Dashboard.pm:59 msgid "There was a problem showing this page. Please try again later." msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:738 perllib/FixMyStreet/App/Controller/Report/Update.pm:134 templates/web/default/auth/general.html:23 templates/web/fixmystreet/auth/general.html:24 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:747 perllib/FixMyStreet/App/Controller/Report/Update.pm:134 templates/web/default/auth/general.html:23 templates/web/fixmystreet/auth/general.html:24 templates/web/seesomething/auth/general.html:24 templates/web/zurich/auth/general.html:28 msgid "There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the ‘sign in by email’ section of the form." msgstr "" @@ -2251,31 +2681,57 @@ msgstr "" msgid "There was a problem with your email/password combination. Please try again." msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/Update.pm:256 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:272 msgid "There was a problem with your update. Please try again." msgstr "" -#: perllib/FixMyStreet/App/Controller/Contact.pm:117 +#: perllib/FixMyStreet/App/Controller/Contact.pm:120 msgid "There were problems with your report. Please see below." msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/Update.pm:283 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:299 msgid "There were problems with your update. Please see below." msgstr "" -#: templates/web/default/open311/index.html:10 +#: 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:341 +#: 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:344 +#: 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:870 perllib/FixMyStreet/Cobrand/UK.pm:54 +#: 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 "" @@ -2283,27 +2739,31 @@ msgstr "" msgid "This is a developer site; things might break at any time, and the database will be periodically deleted." msgstr "" -#: templates/web/emptyhomes/reports/council.html:58 -msgid "This is a summary of all reports for one %s." +#: templates/web/fixmybarangay/reports/index.html:7 +msgid "This is a summary of all reports on this site; select a particular barangay to see the reports sent there." msgstr "" -#: templates/web/emptyhomes/reports/council.html:60 -msgid "This is a summary of all reports for this %s." +#: templates/web/emptyhomes/reports/index.html:4 +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 "" -#: templates/web/default/reports/index.html:7 templates/web/emptyhomes/reports/index.html:4 templates/web/fiksgatami/nn/reports/index.html:4 templates/web/fiksgatami/reports/index.html:4 +#: templates/web/default/reports/index.html:7 templates/web/fiksgatami/nn/reports/index.html:4 templates/web/fiksgatami/reports/index.html:4 msgid "This is a summary of all reports on this site; select a particular council to see the reports sent there." msgstr "" +#: templates/web/default/auth/token.html:9 +msgid "This may be because the link is too old or already used, or the address was not copied correctly." +msgstr "" + #: templates/web/default/report/banner.html:15 msgid "This problem has been closed" msgstr "" -#: templates/web/bromley/report/display.html:96 templates/web/default/report/banner.html:12 templates/web/default/report/display.html:95 templates/web/emptyhomes/report/display.html:12 templates/web/fixmystreet/report/display.html:106 +#: templates/web/bromley/report/display.html:98 templates/web/default/report/banner.html:12 templates/web/default/report/update-form.html:48 templates/web/emptyhomes/report/banner.html:3 templates/web/fixmystreet/report/update-form.html:46 msgid "This problem has been fixed" msgstr "" -#: templates/web/bromley/report/display.html:90 templates/web/default/report/display.html:90 templates/web/fixmystreet/report/display.html:100 +#: templates/web/bromley/report/display.html:92 templates/web/default/report/update-form.html:43 templates/web/fixmystreet/report/update-form.html:40 msgid "This problem has not been fixed" msgstr "" @@ -2315,6 +2775,10 @@ msgstr "" msgid "This problem is old and of unknown status." msgstr "" +#: 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 "" + #: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:86 msgid "This report is currently marked as closed." msgstr "" @@ -2327,15 +2791,19 @@ msgstr "" msgid "This report is currently marked as open." msgstr "" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:264 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315 +msgid "This report was submitted anonymously" +msgstr "" + +#: 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:1038 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/list_flagged.html:10 templates/web/default/admin/search_reports.html:13 +#: templates/web/default/admin/flagged.html:15 templates/web/default/admin/reports.html:12 msgid "Title" msgstr "" @@ -2343,27 +2811,31 @@ msgstr "" msgid "To <strong>report a problem</strong>, click on the map at the correct location." msgstr "" -#: templates/web/emptyhomes/around/display_location.html:35 -msgid "To <strong>report a problem</strong>, simply click on the map at the correct location." -msgstr "" - #: templates/web/default/alert/index.html:27 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:270 +#: 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/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 "" -#: perllib/FixMyStreet/App/Controller/Reports.pm:42 -msgid "Unable to look up areas in MaPit. Please try again later." +#: templates/web/seesomething/report/new/fill_in_details_form.html:24 +msgid "Transport Category" +msgstr "" + +#: templates/web/default/js/translation_strings.html:29 templates/web/oxfordshire/js/translation_strings.html:23 +msgid "Try again" +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 "Unable to fix" msgstr "" -#: templates/web/default/admin/report_edit.html:18 templates/web/default/admin/report_edit.html:21 templates/web/default/admin/update_edit.html:19 +#: 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 "" @@ -2371,31 +2843,39 @@ msgstr "" msgid "Unknown" msgstr "" -#: perllib/FixMyStreet/App/Controller/Rss.pm:164 +#: perllib/FixMyStreet/App/Controller/Rss.pm:173 msgid "Unknown alert type" msgstr "" -#: perllib/FixMyStreet/App/Controller/Report.pm:87 +#: templates/web/default/js/translation_strings.html:39 templates/web/oxfordshire/js/translation_strings.html:33 +msgid "Unknown error" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report.pm:106 msgid "Unknown problem ID" msgstr "" -#: templates/web/bromley/report/display.html:66 templates/web/fixmystreet/report/display.html:81 +#: templates/web/bromley/report/display.html:66 templates/web/fixmystreet/report/update-form.html:19 msgid "Update" msgstr "" -#: templates/web/default/admin/timeline.html:35 +#: templates/web/default/admin/timeline.html:33 msgid "Update %s created for problem %d; by %s" msgstr "" -#: templates/web/default/contact/index.html:21 templates/web/fixmystreet/contact/index.html:22 +#: templates/web/default/contact/index.html:21 templates/web/fixmystreet/contact/index.html:34 msgid "Update below added anonymously at %s" msgstr "" -#: templates/web/default/contact/index.html:23 templates/web/fixmystreet/contact/index.html:24 +#: templates/web/default/contact/index.html:23 templates/web/fixmystreet/contact/index.html:36 msgid "Update below added by %s at %s" msgstr "" -#: templates/web/default/admin/index.html:30 +#: 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:38 msgid "Update breakdown by state" msgstr "" @@ -2403,63 +2883,83 @@ msgstr "" msgid "Update by {{name}}" msgstr "" -#: templates/web/default/admin/update_edit.html:33 +#: templates/web/default/admin/update_edit.html:42 templates/web/zurich/admin/update_edit.html:25 msgid "Update changed problem state to %s" msgstr "" -#: templates/web/default/admin/update_edit.html:35 +#: templates/web/default/admin/update_edit.html:44 msgid "Update marked problem as fixed" msgstr "" -#: templates/web/default/admin/update_edit.html:37 +#: templates/web/default/admin/update_edit.html:46 msgid "Update reopened problem" msgstr "" -#: templates/web/default/admin/council_contacts.html:68 +#: templates/web/default/admin/body.html:83 msgid "Update statuses" msgstr "" -#: templates/web/default/report/display.html:71 +#: templates/web/default/report/update-form.html:22 msgid "Update:" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:708 perllib/FixMyStreet/App/Controller/Admin.pm:823 perllib/FixMyStreet/App/Controller/Admin.pm:903 +#: templates/web/zurich/admin/index-dm.html:23 templates/web/zurich/admin/index-sdm.html:21 templates/web/zurich/admin/reports.html:13 +msgid "Updated" +msgstr "" + +#: 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:1 templates/web/default/report/update.html:3 templates/web/fixmystreet/report/update.html:3 +#: 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:131 +msgid "Updates are limited to 2000 characters in length. Please shorten your update" +msgstr "" + #: db/alert_types.pl:5 db/alert_types.pl:6 msgid "Updates on {{title}}" msgstr "" -#: templates/web/bromley/report/display.html:0 templates/web/bromley/report/display.html:8 templates/web/default/report/display.html:0 templates/web/default/report/display.html:7 templates/web/fixmystreet/report/display.html:0 templates/web/fixmystreet/report/display.html:8 +#: templates/web/bromley/report/display.html:0 templates/web/bromley/report/display.html:8 templates/web/default/report/display.html:0 templates/web/default/report/display.html:5 templates/web/fixmystreet/report/display.html:0 templates/web/fixmystreet/report/display.html:8 msgid "Updates to this problem, FixMyStreet" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1196 +#: 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:1168 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1314 msgid "User flagged" msgstr "" -#: templates/web/default/admin/list_flagged.html:30 +#: 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:315 perllib/FixMyStreet/App/Controller/Admin.pm:345 +#: perllib/FixMyStreet/App/Controller/Admin.pm:371 perllib/FixMyStreet/App/Controller/Admin.pm:401 msgid "Values updated" msgstr "" -#: templates/web/default/admin/report_edit.html:12 templates/web/default/admin/update_edit.html:12 +#: templates/web/default/admin/report_edit.html:18 templates/web/default/admin/update_edit.html:18 templates/web/zurich/admin/report_edit-sdm.html:24 templates/web/zurich/admin/report_edit.html:23 templates/web/zurich/admin/update_edit.html:10 msgid "View report on site" msgstr "" -#: templates/web/default/reports/council.html:18 +#: templates/web/default/reports/body.html:14 msgid "View reports by ward" msgstr "" @@ -2467,23 +2967,27 @@ msgstr "" msgid "View your report" msgstr "" -#: templates/web/default/around/display_location.html:0 templates/web/default/around/display_location.html:33 templates/web/emptyhomes/around/display_location.html:0 templates/web/emptyhomes/around/display_location.html:16 +#: templates/web/default/around/display_location.html:0 templates/web/default/around/display_location.html:34 templates/web/seesomething/around/display_location.html:0 templates/web/seesomething/around/display_location.html:16 msgid "Viewing a location" msgstr "" -#: templates/web/bromley/report/display.html:0 templates/web/default/report/display.html:0 templates/web/emptyhomes/report/display.html:1 templates/web/emptyhomes/report/display.html:2 templates/web/fixmystreet/report/display.html:0 +#: templates/web/bromley/report/display.html:0 templates/web/default/report/display.html:0 templates/web/fixmystreet/report/display.html:0 msgid "Viewing a problem" msgstr "" -#: templates/web/default/reports/council.html:20 templates/web/emptyhomes/reports/council.html:18 +#: templates/web/default/reports/body.html:16 msgid "Wards of this council" msgstr "" -#: templates/web/default/alert/choose.html:6 templates/web/default/around/around_index.html:17 templates/web/fixmystreet/around/around_index.html:16 +#: templates/web/default/alert/choose.html:6 templates/web/default/around/around_index.html:13 templates/web/fixmystreet/around/around_index.html:16 templates/web/seesomething/around/around_index.html:13 msgid "We found more than one match for that location. We show up to ten matches, please try a different search if yours is not here." msgstr "" -#: templates/web/default/auth/token.html:19 +#: templates/web/default/auth/token.html:8 +msgid "We have not been able to confirm your account - sorry." +msgstr "" + +#: templates/web/default/auth/token.html:16 msgid "We have sent you an email containing a link to confirm your account." msgstr "" @@ -2491,19 +2995,19 @@ msgstr "" msgid "We may contact you periodically to ask if anything has changed with the property you reported." msgstr "" -#: templates/web/bromley/report/display.html:141 templates/web/fixmystreet/report/display.html:175 +#: templates/web/bromley/report/display.html:143 templates/web/fixmystreet/report/update-form.html:115 msgid "We never show your email" msgstr "" -#: templates/web/bromley/report/new/fill_in_details_form.html:133 templates/web/bromley/report/new/fill_in_details_form.html:179 templates/web/fixmystreet/report/new/fill_in_details_form.html:133 templates/web/fixmystreet/report/new/fill_in_details_form.html:200 +#: templates/web/bromley/report/new/fill_in_details_form.html:133 templates/web/bromley/report/new/fill_in_details_form.html:179 templates/web/fixmystreet/report/new/fill_in_details_form.html:134 templates/web/fixmystreet/report/new/fill_in_details_form.html:201 templates/web/zurich/report/new/fill_in_details_form.html:96 msgid "We never show your email address or phone number." msgstr "" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:351 +#: 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 "" -#: templates/web/default/index.html:34 templates/web/emptyhomes/index.html:59 templates/web/fixmystreet/index.html:50 +#: templates/web/default/index-steps.html:31 msgid "We send it to the council on your behalf" msgstr "" @@ -2511,7 +3015,7 @@ msgstr "" msgid "We will only use your personal information in accordance with our <a href=\"/faq#privacy\">privacy policy.</a>" msgstr "" -#: templates/web/fixmystreet/report/new/notes.html:4 +#: templates/web/fixmystreet/report/new/notes.html:4 templates/web/oxfordshire/report/new/notes.html:4 msgid "We will only use your personal information in accordance with our <a href=\"/privacy\">privacy policy.</a>" msgstr "" @@ -2523,35 +3027,35 @@ 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/council_contacts.html:45 templates/web/default/admin/council_edit.html:69 +#: 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 "" -#: templates/web/default/admin/list_flagged.html:19 templates/web/default/admin/search_reports.html:22 +#: templates/web/default/admin/problem_row.html:35 msgid "When sent" msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:613 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:621 msgid "Whole block of empty flats" msgstr "" -#: templates/web/default/open311/index.html:25 +#: templates/web/default/open311/index.html:94 msgid "With request searches, it is also possible to search for agency_responsible to limit the requests to those sent to a single administration. The search term is the administration ID provided by <a href=\"%s\">MaPit</a>." msgstr "" -#: templates/web/fixmystreet/footer.html:22 +#: templates/web/fixmystreet/footer.html:21 templates/web/stevenage/footer.html:22 msgid "Would you like better integration with FixMyStreet? <a href=\"http://www.mysociety.org/for-councils/fixmystreet/\">Find out about FixMyStreet for councils</a>." msgstr "" -#: templates/web/fixmystreet/footer.html:18 +#: templates/web/fixmystreet/footer.html:17 templates/web/stevenage/footer.html:18 msgid "Would you like to contribute to FixMyStreet? Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>." msgstr "" -#: templates/web/default/questionnaire/index.html:102 templates/web/fixmystreet/questionnaire/index.html:96 +#: templates/web/default/questionnaire/index.html:106 templates/web/fixmystreet/questionnaire/index.html:96 msgid "Would you like to receive another questionnaire in 4 weeks, reminding you to check the status?" msgstr "" -#: templates/web/default/report/new/notes.html:8 templates/web/fixmybarangay/report/new/notes.html:8 templates/web/fixmystreet/report/new/notes.html:7 +#: templates/web/default/report/new/notes.html:8 templates/web/fixmybarangay/report/new/notes.html:8 templates/web/fixmystreet/report/new/notes.html:8 templates/web/oxfordshire/report/new/notes.html:7 msgid "Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation." msgstr "" @@ -2559,51 +3063,66 @@ msgstr "" msgid "Year" msgstr "" -#: templates/web/default/admin/council_contacts.html:52 templates/web/default/admin/council_contacts.html:53 templates/web/default/admin/council_contacts.html:54 templates/web/default/admin/council_edit.html:5 templates/web/default/admin/list_updates.html:30 templates/web/default/admin/list_updates.html:31 templates/web/default/admin/list_updates.html:32 templates/web/default/admin/problem_row.html:19 templates/web/default/admin/report_edit.html:27 templates/web/default/admin/report_edit.html:41 templates/web/default/admin/search_users.html:23 templates/web/default/admin/update_edit.html:15 templates/web/default/questionnaire/creator_fixed.html:14 templates/web/default/questionnaire/index.html:105 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 "" -#: templates/web/bromley/report/display.html:155 templates/web/bromley/report/new/fill_in_details_form.html:198 templates/web/fixmystreet/report/display.html:149 templates/web/fixmystreet/report/new/fill_in_details_form.html:160 +#: templates/web/bromley/report/display.html:157 templates/web/bromley/report/new/fill_in_details_form.html:198 templates/web/fixmystreet/report/new/fill_in_details_form.html:161 templates/web/fixmystreet/report/update-form.html:89 msgid "Yes I have a password" msgstr "" -#: templates/web/default/contact/index.html:37 templates/web/fixmystreet/contact/index.html:38 +#: templates/web/default/contact/index.html:37 templates/web/fixmystreet/contact/index.html:50 msgid "You are reporting the following problem report for being abusive, containing personal information, or similar:" msgstr "" -#: templates/web/default/contact/index.html:15 templates/web/fixmystreet/contact/index.html:16 +#: templates/web/default/contact/index.html:15 templates/web/fixmystreet/contact/index.html:28 msgid "You are reporting the following update for being abusive, containing personal information, or similar:" msgstr "" -#: templates/web/emptyhomes/reports/council.html:64 -msgid "You can <a href=\"%s\">view all reports for the council</a> or <a href=\"/reports\">show all councils</a>." +#: templates/web/default/tokens/confirm_problem.html:19 templates/web/default/tokens/confirm_problem.html:21 templates/web/zurich/tokens/confirm_problem.html:5 templates/web/zurich/tokens/confirm_problem.html:8 +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/emptyhomes/reports/council.html:66 -msgid "You can <a href=\"/reports\">show all councils</a>." +#: 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:14 templates/web/default/report/new/councils_text_none.html:16 templates/web/default/report/new/councils_text_some.html:20 templates/web/default/report/new/councils_text_some.html:22 +#: 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/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 "" + #: perllib/FixMyStreet/App/Controller/Questionnaire.pm:38 msgid "You have already answered this questionnaire. If you have a question, please <a href='%s'>get in touch</a>, or <a href='%s'>view your problem</a>.\n" msgstr "" -#: templates/web/bromley/report/new/fill_in_details_form.html:97 templates/web/default/questionnaire/index.html:92 templates/web/default/report/new/fill_in_details_form.html:93 templates/web/fixmystreet/questionnaire/index.html:87 templates/web/fixmystreet/report/new/fill_in_details_form.html:103 +#: templates/web/bromley/report/new/fill_in_details_form.html:97 templates/web/default/questionnaire/index.html:96 templates/web/default/report/new/fill_in_details_form.html:93 templates/web/emptyhomes/report/new/fill_in_details_form.html:90 templates/web/fixmystreet/questionnaire/index.html:87 templates/web/fixmystreet/report/new/fill_in_details_form.html:99 templates/web/seesomething/report/new/fill_in_details_form.html:59 templates/web/zurich/report/new/fill_in_details_form.html:75 msgid "You have already attached a photo to this report, attaching another one will replace it." msgstr "" -#: templates/web/bromley/report/display.html:106 templates/web/default/report/display.html:106 templates/web/fixmystreet/report/display.html:116 +#: templates/web/bromley/report/display.html:108 templates/web/default/report/update-form.html:59 templates/web/fixmystreet/report/update-form.html:56 msgid "You have already attached a photo to this update, attaching another one will replace it." msgstr "" -#: templates/web/default/auth/sign_out.html:3 +#: templates/web/default/auth/sign_out.html:3 templates/web/seesomething/auth/sign_out.html:3 templates/web/zurich/auth/sign_out.html:3 msgid "You have been signed out" msgstr "" -#: templates/web/bromley/report/new/fill_in_details_form.html:25 templates/web/default/report/new/fill_in_details_form.html:7 templates/web/fixmystreet/report/new/fill_in_details_form.html:28 +#: templates/web/bromley/report/new/fill_in_details_form.html:25 templates/web/default/report/new/fill_in_details_form.html:7 templates/web/emptyhomes/report/new/fill_in_details_form.html:7 templates/web/fixmystreet/report/new/fill_in_details_form.html:28 templates/web/zurich/report/new/fill_in_details_form.html:13 msgid "You have located the problem at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. " msgstr "" @@ -2611,6 +3130,10 @@ msgstr "" msgid "You have successfully confirmed your alert." msgstr "" +#: templates/web/zurich/tokens/confirm_problem.html:5 templates/web/zurich/tokens/confirm_problem.html:6 +msgid "You have successfully confirmed your email address." +msgstr "" + #: templates/web/default/tokens/confirm_problem.html:14 templates/web/default/tokens/confirm_problem.html:15 msgid "You have successfully confirmed your problem" msgstr "" @@ -2627,15 +3150,26 @@ msgstr "" msgid "You have successfully deleted your alert." msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:745 perllib/FixMyStreet/App/Controller/Report/Update.pm:140 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:754 perllib/FixMyStreet/App/Controller/Report/Update.pm:140 msgid "You have successfully signed in; please check and confirm your details are accurate:" msgstr "" -#: templates/web/default/email_sent.html:26 -msgid "You must now click the link in the email we've just sent you — if you do not, %s." +#: templates/web/default/email_sent.html:13 +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:35 +#: templates/web/default/admin/report_edit.html:71 msgid "You really want to resend?" msgstr "" @@ -2643,11 +3177,15 @@ msgstr "" msgid "Your Reports" msgstr "" -#: templates/web/bromley/report/display.html:41 templates/web/bromley/report/display.html:43 templates/web/bromley/report/new/fill_in_details_form.html:145 templates/web/fixmystreet/alert/_list.html:89 templates/web/fixmystreet/alert/updates.html:19 templates/web/fixmystreet/alert/updates.html:22 templates/web/fixmystreet/contact/index.html:72 templates/web/fixmystreet/report/display.html:49 templates/web/fixmystreet/report/display.html:51 templates/web/fixmystreet/report/new/fill_in_details_form.html:146 +#: templates/web/bromley/report/display.html:41 templates/web/bromley/report/display.html:43 templates/web/bromley/report/new/fill_in_details_form.html:145 templates/web/fixmystreet/alert/_list.html:89 templates/web/fixmystreet/alert/updates.html:19 templates/web/fixmystreet/alert/updates.html:22 templates/web/fixmystreet/contact/index.html:84 templates/web/fixmystreet/report/display.html:65 templates/web/fixmystreet/report/display.html:67 templates/web/fixmystreet/report/new/fill_in_details_form.html:115 templates/web/fixmystreet/report/new/fill_in_details_form.html:147 templates/web/zurich/report/new/fill_in_details_form.html:88 msgid "Your email" msgstr "" -#: templates/web/bromley/report/display.html:130 templates/web/fixmystreet/auth/general.html:26 templates/web/fixmystreet/report/display.html:140 +#: templates/web/seesomething/report/new/fill_in_details_form.html:81 +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:58 msgid "Your email address" msgstr "" @@ -2655,11 +3193,11 @@ msgstr "" msgid "Your email address:" msgstr "" -#: templates/web/default/alert/_list.html:92 templates/web/default/report/display.html:128 templates/web/default/report/new/fill_in_details_form.html:124 templates/web/fixmybarangay/alert/_list.html:37 +#: templates/web/default/alert/_list.html:92 templates/web/default/report/new/fill_in_details_form.html:124 templates/web/default/report/update-form.html:81 templates/web/emptyhomes/report/new/fill_in_details_form.html:133 templates/web/fixmybarangay/alert/_list.html:37 msgid "Your email:" msgstr "" -#: templates/web/bromley/report/display.html:193 templates/web/bromley/report/new/fill_in_details_form.html:117 templates/web/bromley/report/new/fill_in_details_form.html:164 +#: templates/web/bromley/report/display.html:195 templates/web/bromley/report/new/fill_in_details_form.html:117 templates/web/bromley/report/new/fill_in_details_form.html:164 msgid "Your first name" msgstr "" @@ -2667,19 +3205,19 @@ msgstr "" msgid "Your information will only be used in accordance with our <a href=\"/privacy\">privacy policy</a>" msgstr "" -#: templates/web/bromley/report/display.html:199 templates/web/bromley/report/new/fill_in_details_form.html:123 templates/web/bromley/report/new/fill_in_details_form.html:170 +#: templates/web/bromley/report/display.html:201 templates/web/bromley/report/new/fill_in_details_form.html:123 templates/web/bromley/report/new/fill_in_details_form.html:170 msgid "Your last name" msgstr "" -#: templates/web/fixmystreet/auth/general.html:57 templates/web/fixmystreet/contact/index.html:65 templates/web/fixmystreet/report/display.html:203 templates/web/fixmystreet/report/new/fill_in_details_form.html:123 templates/web/fixmystreet/report/new/fill_in_details_form.html:191 +#: 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 "" -#: templates/web/default/auth/general.html:59 templates/web/default/contact/index.html:68 templates/web/default/report/display.html:202 templates/web/default/report/new/fill_in_details_form.html:203 +#: templates/web/default/auth/general.html:59 templates/web/default/contact/index.html:68 templates/web/default/report/new/fill_in_details_form.html:203 templates/web/default/report/update-form.html:151 templates/web/emptyhomes/report/new/fill_in_details_form.html:124 msgid "Your name:" msgstr "" -#: templates/web/bromley/report/display.html:160 templates/web/bromley/report/new/fill_in_details_form.html:203 templates/web/fixmystreet/auth/general.html:41 templates/web/fixmystreet/report/display.html:154 templates/web/fixmystreet/report/new/fill_in_details_form.html:165 +#: templates/web/bromley/report/display.html:162 templates/web/bromley/report/new/fill_in_details_form.html:203 templates/web/fixmystreet/auth/general.html:41 templates/web/fixmystreet/report/new/fill_in_details_form.html:166 templates/web/fixmystreet/report/update-form.html:94 templates/web/seesomething/auth/general.html:30 templates/web/zurich/auth/general.html:34 msgid "Your password" msgstr "" @@ -2687,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:138 templates/web/fixmystreet/report/new/fill_in_details_form.html:205 +#: 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 "" @@ -2695,7 +3233,11 @@ msgstr "" msgid "Your report" 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:47 templates/web/reading/footer.html:7 +#: templates/web/default/report_created.html:6 +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/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 "" @@ -2707,43 +3249,83 @@ msgstr "" msgid "Your email:" msgstr "" -#: templates/web/default/admin/timeline.html:6 +#: templates/web/default/admin/timeline.html:4 msgid "by %s" msgstr "" -#: templates/web/default/reports/council.html:12 templates/web/default/reports/council.html:13 templates/web/emptyhomes/reports/council.html:6 templates/web/emptyhomes/reports/council.html:7 +#: templates/web/default/reports/body.html:6 templates/web/default/reports/body.html:7 msgid "council" msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:611 +#: perllib/FixMyStreet/DB/Result/Problem.pm:649 msgid "council ref: %s" msgstr "" -#: templates/web/default/admin/report_edit.html:15 +#: 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 "" -#: templates/web/default/alert/index.html:33 templates/web/fixmystreet/around/postcode_form.html:23 +#: templates/web/default/alert/index.html:33 templates/web/fixmystreet/around/postcode_form.html:20 templates/web/seesomething/around/postcode_form.html:9 msgid "e.g. ‘%s’ or ‘%s’" msgstr "" -#: templates/web/default/admin/index.html:15 +#: 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 "" -#: perllib/Utils.pm:295 +#: 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 "" + +#: perllib/Utils.pm:263 msgid "less than a minute" msgstr "" -#: templates/web/default/report/updates.html:27 -msgid "marked as %s" +#: templates/web/default/report/updates.html:57 +msgid "marked as a duplicate report" +msgstr "" + +#: templates/web/default/report/updates.html:47 +msgid "marked as action scheduled" +msgstr "" + +#: templates/web/default/report/updates.html:59 +msgid "marked as an internal referral" msgstr "" -#: templates/web/default/report/updates.html:25 +#: templates/web/default/report/updates.html:49 +msgid "marked as closed" +msgstr "" + +#: templates/web/default/report/updates.html:28 templates/web/default/report/updates.html:51 msgid "marked as fixed" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:113 templates/web/default/admin/questionnaire.html:15 templates/web/default/admin/questionnaire.html:16 +#: templates/web/default/report/updates.html:45 +msgid "marked as in progress" +msgstr "" + +#: templates/web/default/report/updates.html:41 +msgid "marked as investigating" +msgstr "" + +#: templates/web/default/report/updates.html:55 +msgid "marked as not the council's responsibility" +msgstr "" + +#: templates/web/default/report/updates.html:43 +msgid "marked as planned" +msgstr "" + +#: templates/web/default/report/updates.html:53 +msgid "marked as unable to fix" +msgstr "" + +#: 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 "" @@ -2751,78 +3333,58 @@ msgstr "" msgid "or" msgstr "" -#: templates/web/default/admin/report_edit.html:15 -msgid "originally entered" +#: 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:16 +#: 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: “%s”" +msgstr "" + +#: templates/web/default/admin/report_edit.html:30 msgid "other areas:" msgstr "" -#: templates/web/default/report/updates.html:26 +#: templates/web/default/report/updates.html:29 templates/web/default/report/updates.html:39 msgid "reopened" msgstr "" -#: templates/web/barnet/header.html:71 templates/web/bromley/header.html:100 templates/web/bromley/header.html:65 templates/web/fixmybarangay/header.html:67 templates/web/fixmystreet/header.html:48 templates/web/zurich/header.html:48 +#: templates/web/barnet/header.html:71 templates/web/bromley/header.html:100 templates/web/bromley/header.html:65 templates/web/fixmybarangay/header.html:67 templates/web/fixmystreet/header.html:51 templates/web/oxfordshire/header.html:112 templates/web/oxfordshire/header.html:48 templates/web/stevenage/header.html:98 templates/web/zurich/footer.html:12 msgid "sign out" msgstr "" -#: templates/web/bromley/report/new/fill_in_details_form.html:4 templates/web/bromley/report/new/fill_in_details_form.html:7 templates/web/default/report/new/fill_in_details_form.html:11 templates/web/default/report/new/fill_in_details_form.html:14 templates/web/fixmystreet/report/new/fill_in_details_form.html:6 templates/web/fixmystreet/report/new/fill_in_details_form.html:9 +#: templates/web/bromley/report/new/fill_in_details_form.html:4 templates/web/bromley/report/new/fill_in_details_form.html:7 templates/web/default/report/new/fill_in_details_form.html:11 templates/web/default/report/new/fill_in_details_form.html:14 templates/web/emptyhomes/report/new/fill_in_details_form.html:11 templates/web/emptyhomes/report/new/fill_in_details_form.html:14 templates/web/fixmystreet/report/new/fill_in_details_form.html:6 templates/web/fixmystreet/report/new/fill_in_details_form.html:9 msgid "the local council" msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:549 +#: templates/web/default/report/_main.html:6 templates/web/zurich/report/_main.html:5 msgid "there is no pin shown as the user did not use the map" msgstr "" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:332 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362 msgid "this type of local problem" msgstr "" -#: perllib/Utils.pm:269 +#: perllib/Utils.pm:235 msgid "today" msgstr "" -#: templates/web/default/admin/report_edit.html:15 +#: 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 "" -#: templates/web/default/admin/update_edit.html:26 +#: templates/web/default/admin/update_edit.html:35 msgid "user is from same council as problem - %d" msgstr "" -#: templates/web/default/admin/update_edit.html:29 +#: templates/web/default/admin/update_edit.html:38 msgid "user is problem owner" msgstr "" -#: templates/web/default/reports/council.html:0 templates/web/default/reports/council.html:9 templates/web/emptyhomes/reports/council.html:0 templates/web/emptyhomes/reports/council.html:3 +#: templates/web/default/reports/body.html:0 templates/web/default/reports/body.html:3 msgid "ward" msgstr "" -#: templates/web/default/email_sent.html:15 templates/web/default/email_sent.html:3 -msgid "we'll hang on to your alert while you're checking your email." -msgstr "" - -#: templates/web/default/email_sent.html:3 templates/web/default/email_sent.html:7 -msgid "we'll hang on to your problem report while you're checking your email." -msgstr "" - -#: templates/web/default/email_sent.html:11 templates/web/default/email_sent.html:3 -msgid "we'll hang on to your update while you're checking your email." -msgstr "" - -#: templates/web/default/email_sent.html:14 templates/web/default/email_sent.html:3 -msgid "your alert will not be activated" -msgstr "" - -#: templates/web/default/email_sent.html:3 templates/web/default/email_sent.html:6 -msgid "your problem will not be posted" -msgstr "" - -#: templates/web/default/email_sent.html:10 templates/web/default/email_sent.html:3 -msgid "your update will not be posted" -msgstr "" - #: templates/web/default/front/stats.html:17 #, perl-format msgid "<big>%s</big> report recently" @@ -2830,14 +3392,21 @@ msgid_plural "<big>%s</big> reports recently" msgstr[0] "" msgstr[1] "" -#: perllib/Utils.pm:314 +#: perllib/Utils.pm:282 #, perl-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "" msgstr[1] "" -#: perllib/Utils.pm:316 +#: templates/web/default/report/_support.html:6 +#, perl-format +msgid "%d supporter" +msgid_plural "%d supporters" +msgstr[0] "" +msgstr[1] "" + +#: perllib/Utils.pm:284 #, perl-format msgid "%d minute" msgid_plural "%d minutes" @@ -2851,14 +3420,14 @@ msgid_plural "<big>%s</big> updates on reports" msgstr[0] "" msgstr[1] "" -#: templates/web/default/report/new/councils_text_none.html:5 +#: templates/web/emptyhomes/report/new/councils_text_none.html:3 #, perl-format 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:310 +#: perllib/Utils.pm:278 #, perl-format msgid "%d week" msgid_plural "%d weeks" @@ -2886,7 +3455,7 @@ msgid_plural "We do <strong>not</strong> yet have details for the other councils msgstr[0] "" msgstr[1] "" -#: perllib/Utils.pm:312 +#: perllib/Utils.pm:280 #, perl-format msgid "%d day" msgid_plural "%d days" diff --git a/locale/cy_GB.UTF-8/LC_MESSAGES/EmptyHomes.po b/locale/cy_GB.UTF-8/LC_MESSAGES/EmptyHomes.po index be85a97c5..36b2f3546 100644 --- a/locale/cy_GB.UTF-8/LC_MESSAGES/EmptyHomes.po +++ b/locale/cy_GB.UTF-8/LC_MESSAGES/EmptyHomes.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: 1.0\n" "Report-Msgid-Bugs-To: matthew@mysociety.org\n" -"POT-Creation-Date: 2012-08-21 09:54+0100\n" -"PO-Revision-Date: 2009-07-10 14:20-0000\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" "Language: \n" @@ -19,136 +19,96 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Poedit 1.5.5\n" -#: perllib/FixMyStreet/DB/Result/Problem.pm:555 -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:337 +#: perllib/FixMyStreet/DB/Result/Problem.pm:602 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373 msgid " and " -msgstr "" +msgstr " and " #: templates/web/default/tokens/confirm_problem.html:14 -#: templates/web/default/tokens/confirm_problem.html:18 +#: templates/web/default/tokens/confirm_problem.html:17 msgid " and <strong>we will now send it to the council</strong>" msgstr " a <strong>byddwn nawr yn ei anfon at y cyngor</strong>" -#: templates/web/default/report/new/councils_text_all.html:10 -#: templates/web/default/report/new/councils_text_all.html:17 -#: templates/web/default/report/new/councils_text_all.html:3 +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_none.html:11 #: templates/web/default/report/new/councils_text_none.html:14 -#: templates/web/default/report/new/councils_text_none.html:17 #: templates/web/default/report/new/councils_text_some.html:20 #: templates/web/default/report/new/councils_text_some.html:23 #: templates/web/default/report/new/councils_text_some.html:5 #: templates/web/emptyhomes/report/new/councils_text_all.html:2 -#, fuzzy msgid " or " msgstr "neu" -#: templates/web/default/admin/council_list.html:17 -#, fuzzy +#: templates/web/default/admin/bodies.html:46 msgid "%d addresses" -msgstr "wythnos" +msgstr "%d addresses" -#: templates/web/default/admin/index.html:17 +#: templates/web/default/admin/index.html:25 msgid "%d confirmed alerts, %d unconfirmed" -msgstr "" +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 – %d confirmed, %d unconfirmed" -msgstr "" - -#: perllib/Utils.pm:293 -#, fuzzy -msgid "%d day" -msgstr "diwrnod" - -#: perllib/Utils.pm:293 -#, fuzzy -msgid "%d days" -msgstr "diwrnod" +msgstr "%d council contacts – %d confirmed, %d unconfirmed" -#: templates/web/default/admin/council_list.html:27 +#: templates/web/default/admin/edit-league.html:12 msgid "%d edits by %s" -msgstr "" - -#: perllib/Utils.pm:294 -#, fuzzy -msgid "%d hour" -msgstr "awr" +msgstr "%d edits by %s" -#: perllib/Utils.pm:294 -#, fuzzy -msgid "%d hours" -msgstr "awr" - -#: templates/web/default/admin/index.html:16 -#, fuzzy +#: templates/web/default/admin/index.html:24 msgid "%d live updates" -msgstr "Anfonwch ddiweddariadau ataf i drwy'r e-bost" +msgstr "%d live updates" -#: perllib/Utils.pm:295 -#, fuzzy -msgid "%d minute" -msgstr "munud" - -#: perllib/Utils.pm:295 -#, fuzzy -msgid "%d minutes" -msgstr "munud" - -#: templates/web/default/admin/index.html:18 +#: templates/web/default/admin/index.html:26 msgid "%d questionnaires sent – %d answered (%s%%)" -msgstr "" +msgstr "%d questionnaires sent – %d answered (%s%%)" -#: perllib/Utils.pm:292 -#, fuzzy -msgid "%d week" -msgstr "wythnos" - -#: perllib/Utils.pm:292 -#, fuzzy -msgid "%d weeks" -msgstr "wythnos" +#: templates/web/default/pagination.html:10 +msgid "%d to %d of %d" +msgstr "%d to %d of %d" -#: templates/web/default/reports/council.html:0 -#: templates/web/default/reports/council.html:26 -#: templates/web/emptyhomes/reports/council.html:11 -#: templates/web/emptyhomes/reports/council.html:13 +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:22 msgid "%s - Summary reports" msgstr "%s - Adroddiadau cryno" -#: perllib/FixMyStreet/DB/Result/Problem.pm:605 +#: perllib/FixMyStreet/DB/Result/Problem.pm:651 msgid "%s ref: %s" -msgstr "" +msgstr "%s ref: %s" -#: perllib/FixMyStreet/Cobrand/UK.pm:288 perllib/FixMyStreet/Cobrand/UK.pm:300 +#: perllib/FixMyStreet/Cobrand/UK.pm:276 perllib/FixMyStreet/Cobrand/UK.pm:288 msgid "%s ward, %s" -msgstr "" +msgstr "%s ward, %s" -#: perllib/FixMyStreet/DB/Result/Problem.pm:488 -msgid "%s, reported anonymously at %s" -msgstr "Rhoddodd %s wybod yn ddi-enw am %s" +#: perllib/FixMyStreet/DB/Result/Problem.pm:538 +msgid "%s, reported at %s" +msgstr "%s, reported at %s" -#: perllib/FixMyStreet/DB/Result/Problem.pm:490 -msgid "%s, reported by %s at %s" -msgstr "Adroddwyd am %s gan %s am %s" - -#: perllib/FixMyStreet/Cobrand/UK.pm:315 perllib/FixMyStreet/Cobrand/UK.pm:327 -#, fuzzy +#: perllib/FixMyStreet/Cobrand/UK.pm:303 perllib/FixMyStreet/Cobrand/UK.pm:315 msgid "%s, within %s ward" -msgstr "Eiddo gwag yn ward %s" +msgstr "%s, within %s ward" -#: templates/web/default/admin/stats.html:5 -#, fuzzy -msgid "%sreports between %s and %s" -msgstr "Adroddwyd am %s gan %s am %s" +#: templates/web/default/email_sent.html:29 +msgid "(Don't worry — we'll hang on to your alert while you're checking your email.)" +msgstr "(Don't worry — we'll hang on to your alert while you're checking your email.)" -#: templates/web/default/email_sent.html:28 -msgid "(Don't worry — %s)" -msgstr "" +#: templates/web/default/email_sent.html:25 +msgid "(Don't worry — we'll hang on to your empty property report while you're checking your email.)" +msgstr "(Peidiwch â phoeni — byddwn ni’n cadw’ch adroddiad am broblem tra byddwch chi’n edrych ar eich negeseuon e-bost.)" + +#: templates/web/default/email_sent.html:27 +msgid "(Don't worry — we'll hang on to your update while you're checking your email.)" +msgstr "(Don't worry — 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:29 msgid "(Email in abuse table)" -msgstr "" +msgstr "(Email in abuse table)" #: templates/web/default/alert/_list.html:20 #: templates/web/fixmystreet/alert/_list.html:24 @@ -160,577 +120,626 @@ 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:23 +#: templates/web/fixmystreet/report/_item.html:22 +#: templates/web/zurich/report/_item.html:21 msgid "(closed)" -msgstr "" +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:21 +#: templates/web/fixmystreet/report/_item.html:20 +#: templates/web/zurich/report/_item.html:19 msgid "(returned to use)" msgstr "(wedi'i adfer i'w ddefnyddio)" #: templates/web/default/index.html:12 templates/web/default/index.html:8 -#: templates/web/fixmystreet/around/postcode_form.html:7 +#: templates/web/fixmystreet/around/intro.html:2 msgid " " msgstr " " +#: templates/web/bromley/report/_item.html:16 #: templates/web/default/reports/_list-entry.html:4 -#: templates/web/fixmystreet/report/_item.html:17 -#, fuzzy +#: templates/web/fixmystreet/report/_item.html:16 msgid "(not sent to council)" -msgstr "Ni roddwyd gwybod i'r cyngor am hyn" +msgstr "(not sent to council)" #: templates/web/default/report/new/fill_in_details_form.html:217 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:140 +#: templates/web/zurich/report/new/fill_in_details_form.html:100 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:16 -#, fuzzy +#: templates/web/fixmystreet/report/_item.html:15 msgid "(sent to both)" -msgstr "Ni roddwyd gwybod i'r cyngor am hyn" +msgstr "(sent to both)" #: templates/web/default/report/new/fill_in_details_form.html:211 msgid "(we never show your email address or phone number)" msgstr "(nid ydym byth yn dangos eich cyfeiriad e-bost na'ch rhif ffôn)" -#: templates/web/default/report/display.html:209 -#, fuzzy +#: templates/web/default/report/update-form.html:158 msgid "(we never show your email)" -msgstr "(nid ydym byth yn dangos eich cyfeiriad e-bost na'ch rhif ffôn)" - -#: perllib/FixMyStreet/App/Controller/Admin.pm:284 -msgid "*unknown*" -msgstr "" +msgstr "(we never show your email)" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:629 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:655 -#: perllib/FixMyStreet/DB/Result/Problem.pm:345 -#, fuzzy +#: 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 "-- Dewiswch fath o eiddo --" +msgstr "-- Pick a category --" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:609 -#: perllib/FixMyStreet/DB/Result/Problem.pm:351 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:618 +#: perllib/FixMyStreet/DB/Result/Problem.pm:385 msgid "-- Pick a property type --" msgstr "-- Dewiswch fath o eiddo --" -#: templates/web/default/tokens/confirm_problem.html:14 -#: templates/web/default/tokens/confirm_problem.html:22 -#, fuzzy -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/emptyhomes/front/stats.html:5 +msgid "<big>%s</big> reports" +msgstr "<big>%s</big> adroddiadau" -#: templates/web/default/questionnaire/completed.html:20 -#, fuzzy +#: templates/web/default/admin/body-form.html:42 +#: templates/web/default/admin/body-form.html:43 msgid "" -"<p style=\"font-size:150%\">Thank you very much for filling in our " -"questionnaire; glad to hear it’s been returned to use.</p>" +"<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 "" -"<p style=\"font-size:150%\">Diolch yn fawr am lenwi'n holiadur; rydym yn " -"falch o glywed ei fod wedi'i adfer i'w ddefnyddio.</p>\n" + +#: 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’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’s been returned to use.</p>" #: templates/web/fiksgatami/questionnaire/completed-open.html:1 -#, fuzzy msgid "" "<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" -"suggestions: why not try <a href=\"http://www.norge.no/styresmakter/" -"\">writing\n" -"direct to your councillor(s)</a> or, if it’s an empty property that " -"could be\n" +"suggestions: why not try <a href=\"http://www.norge.no/styresmakter/\">writing\n" +"direct to your councillor(s)</a> or, if it’s an empty property that could be\n" "returned to use by local people working together, why not\n" "<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" "</p>" msgstr "" -"<p style=\"font-size:150%\">Mae'n flin gennym glywed hynny. Mae gennym ddau " -"awgrym: beth am roi cynnig ar\n" -"<a href=\"http://www.writetothem.com/\">ysgrifennu'n uniongyrchol at eich " -"cynghorwr(wyr)</a>\n" -"neu, os yw'n eiddo gwag y gallai pobl leol gydweithio er mwyn ei adfer i'w " -"ddefnyddio,\n" -"beth am <a href=\"http://www.pledgebank.com/new\">wneud adduned a'i " -"chyhoeddi</a>?\n" -"</p>\n" - -#: templates/web/fixmystreet/questionnaire/completed-open.html:1 -#, fuzzy +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try <a href=\"http://www.norge.no/styresmakter/\">writing\n" +"direct to your councillor(s)</a> or, if it’s an empty property that could be\n" +"returned to use by local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" + +#: templates/web/fixmystreet/questionnaire/completed-open.html:6 msgid "" "<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" -"suggestions: why not try <a href=\"http://www.writetothem.com/\">writing " -"direct\n" -"to your councillor(s)</a> or, if it’s an empty property that could be " -"returned to use by\n" +"suggestions: why not try <a href=\"http://www.writetothem.com/\">writing direct\n" +"to your councillor(s)</a> or, if it’s an empty property that could be returned to use by\n" "local people working together, why not\n" "<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" "</p>" msgstr "" -"<p style=\"font-size:150%\">Mae'n flin gennym glywed hynny. Mae gennym ddau " -"awgrym: beth am roi cynnig ar\n" -"<a href=\"http://www.writetothem.com/\">ysgrifennu'n uniongyrchol at eich " -"cynghorwr(wyr)</a>\n" -"neu, os yw'n eiddo gwag y gallai pobl leol gydweithio er mwyn ei adfer i'w " -"ddefnyddio,\n" -"beth am <a href=\"http://www.pledgebank.com/new\">wneud adduned a'i " -"chyhoeddi</a>?\n" -"</p>\n" - -#: templates/web/default/questionnaire/completed-open.html:1 -#, fuzzy +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try <a href=\"http://www.writetothem.com/\">writing direct\n" +"to your councillor(s)</a> or, if it’s an empty property that could be returned to use by\n" +"local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" + +#: templates/web/default/questionnaire/completed-open.html:6 msgid "" "<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" -"suggestions: why not try writing to your local representative or, if " -"it’s\n" -"an empty property that could be returned to use by local people working " -"together, why not\n" +"suggestions: why not try writing to your local representative or, if it’s\n" +"an empty property that could be returned to use by local people working together, why not\n" "<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" "</p>" msgstr "" -"<p style=\"font-size:150%\">Mae'n flin gennym glywed hynny. Mae gennym ddau " -"awgrym: beth am roi cynnig ar\n" -"<a href=\"http://www.writetothem.com/\">ysgrifennu'n uniongyrchol at eich " -"cynghorwr(wyr)</a>\n" -"neu, os yw'n eiddo gwag y gallai pobl leol gydweithio er mwyn ei adfer i'w " -"ddefnyddio,\n" -"beth am <a href=\"http://www.pledgebank.com/new\">wneud adduned a'i " -"chyhoeddi</a>?\n" -"</p>\n" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try writing to your local representative or, if it’s\n" +"an empty property that could be returned to use by local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" #: templates/web/default/questionnaire/index.html:35 -#, fuzzy msgid "" -"<p>Getting empty homes back into use can be difficult, but by now a good " -"council\n" +"<p>Getting empty homes back into use can be difficult, but by now a good council\n" "will have made a lot of progress and reported what they have done on the\n" -"website. Even so properties can remain empty for many months if the owner " -"is\n" -"unwilling or the property is in very poor repair. If nothing has happened " -"or\n" -"you are not satisfied with the progress the council is making, now is the " -"right\n" -"time to say so. We think it’s a good idea to contact some other people " -"who\n" +"website. Even so properties can remain empty for many months if the owner is\n" +"unwilling or the property is in very poor repair. If nothing has happened or\n" +"you are not satisfied with the progress the council is making, now is the right\n" +"time to say so. We think it’s a good idea to contact some other people who\n" "may be able to help or put pressure on the council For advice on how to do\n" "this and other useful information please go to <a\n" -"href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www." -"emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +"href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" msgstr "" -"<p>Mae cael eiddo gwag yn ôl mewn defnydd yn gallu bod yn anodd, ond erbyn " -"hyn,\n" -"bydd cyngor da wedi gwneud eithaf tipyn o gynnydd ac wedi rhoi gwybod beth " -"maent\n" -"wedi'i wneud ar y wefan. Er hynny, gall eiddo gwag barhau'n wag am fisoedd " -"os yw'r perchennog\n" -"yn amharod neu os yw cyflwr yr eiddo'n wael. Os nad oes unrhyw beth wedi " -"digwydd neu\n" -"os nad ydych yn fodlon â'r cynnydd y mae'r cyngor yn ei wneud, nawr yw'r " -"amser priodol\n" -"i ddweud hynny. Rydym o'r farn bod cysylltu â phobl eraill a allai helpu neu " -"roi pwysau\n" -"ar y cyngor yn syniad da. I gael cyngor ar sut i wneud hyn \n" -"a gwybodaeth ddefnyddiol arall, ewch i <a\n" -"href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www." -"emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +"<p>Getting empty homes back into use can be difficult, but by now a good council\n" +"will have made a lot of progress and reported what they have done on the\n" +"website. Even so properties can remain empty for many months if the owner is\n" +"unwilling or the property is in very poor repair. If nothing has happened or\n" +"you are not satisfied with the progress the council is making, now is the right\n" +"time to say so. We think it’s a good idea to contact some other people who\n" +"may be able to help or put pressure on the council For advice on how to do\n" +"this and other useful information please go to <a\n" +"href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" #: templates/web/default/questionnaire/index.html:26 -#, fuzzy msgid "" -"<p>Getting empty homes back into use can be difficult. You shouldn’t " -"expect\n" -"the property to be back into use yet. But a good council will have started " -"work\n" +"<p>Getting empty homes back into use can be difficult. You shouldn’t expect\n" +"the property to be back into use yet. But a good council will have started work\n" "and should have reported what they have done on the website. If you are not\n" -"satisfied with progress or information from the council, now is the right " -"time\n" -"to say. You may also want to try contacting some other people who may be " -"able\n" +"satisfied with progress or information from the council, now is the right time\n" +"to say. You may also want to try contacting some other people who may be able\n" "to help. For advice on how to do this and other useful information please\n" -"go to <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://" -"www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +"go to <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" msgstr "" -"<p>Mae cael eiddo gwag yn ôl mewn defnydd yn gallu bod yn anodd. Ni ddylech " -"ddisgwyl\n" -"bod yr eiddo yn ôl mewn defnydd eto. Fodd bynnag, bydd cyngor da eisoes wedi " -"dechrau gweithio\n" -"a dylent fod wedi rhoi gwybod beth maent wedi'i wneud ar y wefan. Os nad " -"ydych yn fodlon\n" -"â'r cynnydd neu'r wybodaeth gan y cyngor, nawr yw'r amser priodol i ddweud " -"hynny.\n" -"Efallai hefyd y byddwch eisiau rhoi cynnig ar gysylltu â rhai pobl eraill a " -"all helpu.\n" -"I gael cyngor ar sut i wneud hyn ac am wybodaeth ddefnyddiol arall, ewch i \n" -"<a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www." -"emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +"<p>Getting empty homes back into use can be difficult. You shouldn’t expect\n" +"the property to be back into use yet. But a good council will have started work\n" +"and should have reported what they have done on the website. If you are not\n" +"satisfied with progress or information from the council, now is the right time\n" +"to say. You may also want to try contacting some other people who may be able\n" +"to help. For advice on how to do this and other useful information please\n" +"go to <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" #: templates/web/default/questionnaire/completed.html:9 -#, fuzzy msgid "" "<p>Thank you very much for filling in our questionnaire; if you\n" -"get some more information about the status of your empty property, please " -"come back to the\n" +"get some more information about the status of your empty property, please come back to the\n" "site and leave an update.</p>" msgstr "" -"<p>Diolch yn fawr am lenwi ein holiadur; os ydych yn cael \n" -"mwy o wybodaeth am statws eich eiddo gwag, dewch yn ôl i'r safle\n" -"a rhowch ddiweddariad yno.</p>\n" - -#: templates/web/default/around/display_location.html:70 -#: templates/web/default/around/display_location.html:72 -#: templates/web/emptyhomes/around/display_location.html:36 -#: templates/web/emptyhomes/around/display_location.html:38 -#, fuzzy -msgid "" -"<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this " -"step</a>.</small>" -msgstr "" -"<small>Os na allwch weld y map, <a href='%s' rel='nofollow'>ewch heibio\n" -" i'r cam hwn</a>.</small>" +"<p>Thank you very much for filling in our questionnaire; if you\n" +"get some more information about the status of your empty property, please come back to the\n" +"site and leave an update.</p>" -#: templates/web/default/admin/index.html:14 -#, fuzzy +#: templates/web/default/around/_report_banner.html:3 +#: templates/web/default/around/_report_banner.html:5 +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:22 +#: templates/web/zurich/admin/index.html:4 msgid "<strong>%d</strong> live empty properties" -msgstr "Adrodd am eiddo gwag a gweld y rhain" +msgstr "<strong>%d</strong> live empty properties" -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:172 -#, fuzzy +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:183 msgid "<strong>No</strong> Let me confirm my report by email" -msgstr "Adrodd am eiddo gwag a gweld y rhain" +msgstr "<strong>No</strong> Let me confirm my report by email" -#: templates/web/fixmystreet/report/display.html:148 -#, fuzzy +#: templates/web/fixmystreet/report/update-form.html:110 msgid "<strong>No</strong> Let me confirm my update by email" -msgstr "Adrodd am eiddo gwag a gweld y rhain" +msgstr "<strong>No</strong> Let me confirm my update by email" -#: templates/web/fixmystreet/auth/general.html:46 -#, fuzzy +#: 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 "Adrodd am eiddo gwag a gweld y rhain" +msgstr "<strong>No</strong> let me sign in by email" #: templates/web/default/auth/general.html:55 msgid "<strong>No</strong>, I do not, let me sign in by email:" -msgstr "" +msgstr "<strong>No</strong>, I do not, let me sign in by email:" #: templates/web/default/report/new/fill_in_details_form.html:162 -#, fuzzy msgid "<strong>No</strong>, let me confirm my report by email:" -msgstr "Adrodd am eiddo gwag a gweld y rhain" +msgstr "<strong>No</strong>, let me confirm my report by email:" -#: templates/web/default/report/display.html:164 -#, fuzzy +#: templates/web/default/report/update-form.html:117 msgid "<strong>No</strong>, let me confirm my update by email:" -msgstr "Adrodd am eiddo gwag a gweld y rhain" +msgstr "<strong>No</strong>, let me confirm my update by email:" #: templates/web/default/auth/general.html:37 -#: templates/web/default/report/display.html:142 #: templates/web/default/report/new/fill_in_details_form.html:140 -#: templates/web/fixmystreet/auth/general.html:32 -#: templates/web/fixmystreet/auth/general.html:34 -#: templates/web/fixmystreet/report/display.html:131 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:154 -#, fuzzy +#: templates/web/default/report/update-form.html:95 +#: templates/web/fixmystreet/auth/general.html:36 +#: templates/web/fixmystreet/auth/general.html:38 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:159 +#: templates/web/fixmystreet/report/update-form.html:87 msgid "<strong>Yes</strong> I have a password" -msgstr "Adrodd am eiddo gwag a gweld y rhain" - -#: templates/web/default/static/about.html:1 -#: templates/web/default/static/about.html:3 -#: templates/web/emptyhomes/header.html:29 -#: templates/web/emptyhomes/static/about.html:1 -#: templates/web/emptyhomes/static/about.html:3 +msgstr "<strong>Yes</strong> I have a password" + +#: templates/web/default/static/about-en-gb.html:1 +#: templates/web/default/static/about-en-gb.html:3 +#: templates/web/emptyhomes/header.html:34 +#: templates/web/emptyhomes/static/about-cy.html:1 +#: templates/web/emptyhomes/static/about-cy.html:3 +#: templates/web/emptyhomes/static/about-en-gb.html:1 +#: templates/web/emptyhomes/static/about-en-gb.html:3 msgid "About us" msgstr "Amdanom ni" -#: templates/web/default/admin/council_contacts.html:66 -msgid "Add new category" +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:81 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:39 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 +msgid "Action Scheduled" +msgstr "Action Scheduled" + +#: 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/my/my.html:56 templates/web/fixmystreet/my/my.html:56 -msgid "Added %s" +#: 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:88 +#: templates/web/zurich/admin/body.html:30 +msgid "Add new category" +msgstr "Add new category" + +#: templates/web/default/admin/users.html:45 +msgid "Add user" +msgstr "Add user" + +#: templates/web/default/my/my.html:56 templates/web/fixmystreet/my/my.html:60 +msgid "Added %s" +msgstr "Added %s" + #: templates/web/default/auth/change_password.html:29 msgid "Again:" -msgstr "" +msgstr "Again:" -#: templates/web/default/admin/timeline.html:37 +#: templates/web/default/admin/timeline.html:35 msgid "Alert %d created for %s, type %s, parameters %s / %s" -msgstr "" +msgstr "Alert %d created for %s, type %s, parameters %s / %s" -#: templates/web/default/admin/timeline.html:39 +#: templates/web/default/admin/timeline.html:37 msgid "Alert %d disabled (created %s)" -msgstr "" +msgstr "Alert %d disabled (created %s)" -#: templates/web/bromley/report/display.html:207 -#: templates/web/default/report/display.html:214 -#: templates/web/fixmystreet/report/display.html:189 +#: templates/web/bromley/report/display.html:209 +#: templates/web/default/report/update-form.html:163 +#: templates/web/fixmystreet/report/update-form.html:148 msgid "Alert me to future updates" msgstr "Rhowch wybod i mi am ddiweddariadau yn y dyfodol" -#: templates/web/default/admin/stats.html:5 -msgid "All" -msgstr "" - #: templates/web/default/reports/index.html:3 -#, fuzzy +#: templates/web/fixmybarangay/reports/index.html:3 +#: templates/web/zurich/admin/stats.html:5 +#: templates/web/zurich/reports/index.html:15 msgid "All Reports" -msgstr "Adroddiadau" - -#: templates/web/default/admin/council_list.html:44 -msgid "All confirmed" -msgstr "" +msgstr "All Reports" #: 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/fixmystreet/footer.html:49 -#: templates/web/reading/footer.html:8 -msgid "Reports" -msgstr "Adroddiadau" +#: 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 "Pob adroddiad" + +#: templates/web/default/admin/stats.html:5 +#: templates/web/zurich/admin/stats.html:8 +msgid "All reports between %s and %s" +msgstr "All reports between %s and %s" #: templates/web/default/report/new/councils_text_some.html:2 msgid "All the information you provide here will be sent to" -msgstr "" +msgstr "All the information you provide here will be sent to" -#: templates/web/default/report/new/councils_text_all.html:10 -#: templates/web/default/report/new/councils_text_all.html:12 -#, fuzzy -msgid "" -"All the information you provide here will be sent to <strong>%s</strong> or " -"<strong>Roads Service</strong>." -msgstr "" -"Bydd yr holl wybodaeth a ddarperir gennych yma'n cael ei hanfon at <strong>" -"%s</strong>.\n" -"Ar y safle, byddwn yn dangos pwnc a manylion yr eiddo gwag,\n" -"ynghyd â'ch enw os ydych yn rhoi caniatâd i ni." +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:13 +msgid "All the information you provide here will be sent to <strong>%s</strong> or <strong>Roads Service</strong>." +msgstr "All the information you provide here will be sent to <strong>%s</strong> or <strong>Roads Service</strong>." -#: templates/web/default/report/new/councils_text_all.html:3 -#: templates/web/default/report/new/councils_text_all.html:5 -#, fuzzy -msgid "" -"All the information you provide here will be sent to <strong>%s</strong> or " -"a relevant local body such as <strong>TfL</strong>, via the London Report-It " -"system." -msgstr "" -"Bydd yr holl wybodaeth a ddarperir gennych yma'n cael ei hanfon at <strong>" -"%s</strong>.\n" -"Ar y safle, byddwn yn dangos pwnc a manylion yr eiddo gwag,\n" -"ynghyd â'ch enw os ydych yn rhoi caniatâd i ni." +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_all.html:6 +msgid "All the information you provide here will be sent to <strong>%s</strong> or a relevant local body such as <strong>TfL</strong>, via the London Report-It system." +msgstr "All the information you provide here will be sent to <strong>%s</strong> or a relevant local body such as <strong>TfL</strong>, via the London Report-It system." #: templates/web/bromley/report/new/fill_in_details_form.html:4 #: templates/web/bromley/report/new/fill_in_details_form.html:6 -#: templates/web/default/report/new/councils_text_all.html:17 -#: templates/web/default/report/new/councils_text_all.html:19 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:20 #: templates/web/default/report/new/fill_in_details_form.html:11 #: templates/web/default/report/new/fill_in_details_form.html:13 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:8 -msgid "" -"All the information you provide here will be sent to <strong>%s</strong>." -msgstr "" - #: templates/web/emptyhomes/report/new/councils_text_all.html:2 #: templates/web/emptyhomes/report/new/councils_text_all.html:4 -#, fuzzy -msgid "" -"All the information you provide here will be sent to <strong>%s</strong>. On " -"the site, we will show the subject and details of the empty property, plus " -"your name if you give us permission." -msgstr "" -"Bydd yr holl wybodaeth a ddarperir gennych yma'n cael ei hanfon at <strong>" -"%s</strong>.\n" -"Ar y safle, byddwn yn dangos pwnc a manylion yr eiddo gwag,\n" -"ynghyd â'ch enw os ydych yn rhoi caniatâd i ni." +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:13 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:8 +msgid "All the information you provide here will be sent to <strong>%s</strong>." +msgstr "Bydd yr holl wybodaeth a ddarparwch fan hyn yn cael ei hanfon at <strong>%s</strong>." #: templates/web/default/questionnaire/index.html:60 #: templates/web/fixmystreet/questionnaire/index.html:54 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." +msgstr "Fe wnaeth diweddariad gofnodi bod yr eiddo hwn wedi cael ei adfer i'w ddefnyddio." -#: templates/web/default/admin/list_flagged.html:15 -#: templates/web/default/admin/list_updates.html:10 -#: templates/web/default/admin/search_reports.html:18 +#: templates/web/default/admin/list_updates.html:32 +#: templates/web/default/admin/problem_row.html:20 msgid "Anonymous" msgstr "Di-enw" -#: templates/web/default/admin/report_edit.html:26 -#: templates/web/default/admin/update_edit.html:14 -#, fuzzy +#: templates/web/default/admin/report_edit.html:62 +#: templates/web/default/admin/update_edit.html:23 msgid "Anonymous:" -msgstr "Di-enw" +msgstr "Anonymous:" #: templates/web/default/footer.html:26 -msgid "" -"Are you a <strong>developer</strong>? Would you like to contribute to " -"reportemptyhomes.com?" -msgstr "" +msgid "Are you a <strong>developer</strong>? Would you like to contribute to reportemptyhomes.com?" +msgstr "Are you a <strong>developer</strong>? Would you like to contribute to reportemptyhomes.com?" -#: templates/web/fixmystreet/footer.html:17 +#: templates/web/fixmystreet/footer.html:16 +#: templates/web/stevenage/footer.html:17 msgid "Are you a developer?" -msgstr "" +msgstr "Are you a developer?" -#: templates/web/fixmystreet/footer.html:21 -#, fuzzy +#: templates/web/fixmystreet/footer.html:20 +#: templates/web/stevenage/footer.html:21 msgid "Are you from a council?" -msgstr "Ni roddwyd gwybod i'r cyngor am hyn" +msgstr "Are you from a council?" -#: templates/web/default/open311/index.html:17 -msgid "" -"At most %d requests are returned in each query. The returned requests are " -"ordered by requested_datetime, so to get all requests, do several searches " -"with rolling start_date and end_date." -msgstr "" +#: 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: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:153 +msgid "Assign to external body:" +msgstr "Assign to external body:" + +#: templates/web/zurich/admin/report_edit.html:133 +#: templates/web/zurich/admin/report_edit.html:190 +msgid "Assign to subdivision:" +msgstr "Assign to subdivision:" -#: templates/web/default/open311/index.html:9 +#: perllib/FixMyStreet/Cobrand/Zurich.pm:141 +#: templates/web/zurich/report/updates.html:11 +msgid "Assigned to %s" +msgstr "Assigned to %s" + +#: templates/web/default/open311/index.html:86 +msgid "At most %d requests are returned in each query. The returned requests are ordered by requested_datetime, so to get all requests, do several searches with rolling start_date and end_date." +msgstr "At most %d requests are returned in each query. The returned requests are ordered by requested_datetime, so to get all requests, do several searches with rolling start_date and end_date." + +#: templates/web/default/open311/index.html:78 msgid "At the moment only searching for and looking at reports work." -msgstr "" +msgstr "At the moment only searching for and looking at reports work." + +#: 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:32 +#: templates/web/oxfordshire/js/translation_strings.html:26 +msgid "Back" +msgstr "Back" #: templates/web/default/admin/report_blocks.html:11 -#, fuzzy msgid "Ban email address" -msgstr "Eich cyfeiriad e-bost:" +msgstr "Ban email address" + +#: templates/web/fixmybarangay/report/new/notes.html:7 +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: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:17 +#: templates/web/default/admin/reports.html:14 +#: templates/web/default/admin/users.html:17 +msgid "Body" +msgstr "Body" + +#: templates/web/default/admin/user-form.html:32 +msgid "Body:" +msgstr "Body:" #: templates/web/fiksgatami/footer.html:16 #: templates/web/fiksgatami/nn/footer.html:16 -msgid "" -"Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained " -"by <a href=\"http://www.nuug.no/\">NUUG</a>" -msgstr "" +msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained by <a href=\"http://www.nuug.no/\">NUUG</a>" +msgstr "Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained by <a href=\"http://www.nuug.no/\">NUUG</a>" #: templates/web/default/admin/stats.html:80 msgid "By Date" -msgstr "" +msgstr "By Date" -#: templates/web/fixmystreet/around/display_location.html:80 -#: templates/web/fixmystreet/around/display_location.html:82 -#, fuzzy +#: templates/web/fixmystreet/around/_report_banner.html:10 +#: templates/web/fixmystreet/around/_report_banner.html:8 msgid "Can't see the map? <a href='%s' rel='nofollow'>Skip this step</a>" -msgstr "" -"<small>Os na allwch weld y map, <a href='%s' rel='nofollow'>ewch heibio\n" -" i'r cam hwn</a>.</small>" +msgstr "Os na allwch weld y map, gallwch <a href='%s' rel='nofollow'>hepgor y cam hwn</a>" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:632 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:657 #: templates/web/bromley/report/new/fill_in_details_form.html:68 -#: templates/web/default/admin/council_contacts.html:35 -#: templates/web/default/admin/index.html:36 -#: templates/web/default/admin/list_flagged.html:14 -#: templates/web/default/admin/search_reports.html:17 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:72 -#, fuzzy +#: 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 "Categori:" +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 "" +msgstr "Category fix rate for empty properties > 4 weeks old" -#: templates/web/default/admin/council_contacts.html:72 -#: templates/web/default/admin/council_edit.html:23 -#: templates/web/default/admin/report_edit.html:25 +#: 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 "Categori:" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:334 -#, fuzzy +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366 msgid "Category: %s" -msgstr "Categori:" +msgstr "Category: %s" #: templates/web/default/auth/change_password.html:1 #: templates/web/default/auth/change_password.html:3 #: templates/web/default/auth/change_password.html:33 msgid "Change Password" +msgstr "Change Password" + +#: 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/fixmystreet/around/display_location.html:72 -#: templates/web/fixmystreet/around/display_location.html:73 -#, fuzzy +#: 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" -#: templates/web/bromley/report/display.html:80 -#: templates/web/bromley/report/display.html:82 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:20 -#: templates/web/default/dashboard/index.html:136 -#: templates/web/default/dashboard/index.html:138 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:81 +#: 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 +#: templates/web/default/dashboard/index.html:142 +#: templates/web/default/dashboard/index.html:144 #: templates/web/fixmystreet/report/banner.html:15 -#: templates/web/fixmystreet/report/display.html:74 -#: templates/web/fixmystreet/report/display.html:76 +#: 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 "" +msgstr "Closed" -#: perllib/FixMyStreet/DB/Result/Problem.pm:690 -#, fuzzy +#: perllib/FixMyStreet/DB/Result/Problem.pm:744 msgid "Closed by council" -msgstr "Ni roddwyd gwybod i'r cyngor am hyn" +msgstr "Closed by council" -#: templates/web/default/my/my.html:32 templates/web/fixmystreet/my/my.html:32 -#, fuzzy +#: templates/web/default/my/my.html:32 templates/web/fixmystreet/my/my.html:36 msgid "Closed reports" -msgstr "Cuddio hen adroddiadau " +msgstr "Closed reports" -#: templates/web/default/admin/problem_row.html:25 +#: templates/web/default/admin/problem_row.html:38 msgid "Closed:" -msgstr "" +msgstr "Closed:" -#: templates/web/default/around/display_location.html:103 -#: templates/web/default/around/display_location.html:105 +#: templates/web/default/around/tabbed_lists.html:10 +#: templates/web/default/around/tabbed_lists.html:12 msgid "Closest nearby empty properties <small>(within %skm)</small>" msgstr "Yr eiddo gwag cyfagos agosaf <small>(within %skm)</small>" -#: templates/web/default/admin/report_edit.html:15 +#: 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 "" +msgstr "Co-ordinates:" -#: templates/web/default/admin/list_flagged.html:16 -#: templates/web/default/admin/list_updates.html:13 -#: templates/web/default/admin/search_reports.html:19 +#: templates/web/default/admin/list_updates.html:10 msgid "Cobrand" -msgstr "" +msgstr "Cobrand" -#: templates/web/default/admin/report_edit.html:39 -#: templates/web/default/admin/update_edit.html:41 +#: templates/web/default/admin/report_edit.html:75 +#: templates/web/default/admin/update_edit.html:50 msgid "Cobrand data:" -msgstr "" +msgstr "Cobrand data:" -#: templates/web/default/admin/report_edit.html:38 -#: templates/web/default/admin/update_edit.html:40 +#: templates/web/default/admin/report_edit.html:74 +#: templates/web/default/admin/update_edit.html:49 msgid "Cobrand:" -msgstr "" +msgstr "Cobrand:" -#: perllib/FixMyStreet/App/Controller/Admin.pm:358 +#: templates/web/default/admin/config_page.html:1 #, fuzzy -msgid "Configuration updated" +msgid "Configuration" msgstr "Cadarnhau" -#: perllib/FixMyStreet/App/Controller/Admin.pm:372 +#: perllib/FixMyStreet/App/Controller/Admin.pm:421 msgid "Configuration updated - contacts will be generated automatically later" -msgstr "" +msgstr "Configuration updated - contacts will be generated automatically later" -#: templates/web/default/admin/council_contacts.html:153 -msgid "Configure Open311" -msgstr "" - -#: templates/web/default/admin/council_contacts.html:105 -msgid "Configure Open311 integration" -msgstr "" +#: templates/web/default/admin/body_edit.html:47 +msgid "Configure Endpoint" +msgstr "Configure Endpoint" -#: templates/web/default/admin/council_contacts.html:42 -#, fuzzy +#: templates/web/default/admin/body.html:62 msgid "Confirm" -msgstr "Cadarnhau" +msgstr "Confirm" #: templates/web/default/auth/token.html:1 -#, fuzzy msgid "Confirm account" -msgstr "Cadarnhau" +msgstr "Confirm account" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:177 +#: templates/web/fixmystreet/report/update-form.html:105 +msgid "Confirm by email below, providing a new password at that point. When you confirm, your password will be updated." +msgstr "Confirm by email below, providing a new password at that point. When you confirm, your password will be updated." #: templates/web/default/questionnaire/creator_fixed.html:1 #: templates/web/default/tokens/confirm_problem.html:1 @@ -739,23 +748,30 @@ msgstr "Cadarnhau" #: templates/web/default/tokens/confirm_update.html:3 #: templates/web/emptyhomes/tokens/confirm_problem.html:1 #: templates/web/emptyhomes/tokens/confirm_problem.html:3 +#: templates/web/southampton/tokens/confirm_problem.html:1 +#: templates/web/southampton/tokens/confirm_problem.html:3 +#: templates/web/zurich/tokens/confirm_problem.html:1 +#: templates/web/zurich/tokens/confirm_problem.html:3 msgid "Confirmation" msgstr "Cadarnhau" -#: templates/web/default/admin/council_contacts.html:37 -#: templates/web/default/admin/council_contacts.html:82 -#: templates/web/default/admin/council_edit.html:28 -#: templates/web/default/admin/council_edit.html:43 -#: templates/web/default/admin/stats.html:5 -#, fuzzy +#: 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 "Cadarnhau" +msgstr "Confirmed" -#: templates/web/default/admin/problem_row.html:23 -#: templates/web/default/admin/report_edit.html:34 -#, fuzzy +#: templates/web/default/admin/stats.html:5 +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:" -msgstr "Cadarnhau" +msgstr "Confirmed:" #: templates/web/fiksgatami/footer.html:10 #: templates/web/fiksgatami/nn/footer.html:10 @@ -763,9 +779,8 @@ msgid "Contact" msgstr "Cysylltu" #: templates/web/default/footer.html:24 -#, fuzzy msgid "Contact reportemptyhomes.com" -msgstr "Adroddiadau newydd ar reportemptyhomes.com" +msgstr "Cysylltwch â reportemptyhomes.com" #: templates/web/bromley/contact/submit.html:1 #: templates/web/default/contact/index.html:1 @@ -779,195 +794,254 @@ msgstr "Cysylltwch â Ni" #: templates/web/bromley/contact/submit.html:3 #: templates/web/default/contact/index.html:6 #: templates/web/default/contact/submit.html:3 -#: templates/web/fixmystreet/contact/index.html:7 +#: templates/web/fixmystreet/contact/index.html:19 msgid "Contact the team" msgstr "Cysylltu â'r tîm" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1150 -#: perllib/FixMyStreet/App/Controller/Admin.pm:1178 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1310 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1338 msgid "Could not find user" -msgstr "" +msgstr "Could not find user" -#: templates/web/default/admin/list_flagged.html:13 -#: templates/web/default/admin/list_updates.html:12 -#: templates/web/default/admin/search_reports.html:16 -#: templates/web/default/admin/search_users.html:14 -#, fuzzy -msgid "Council" -msgstr "cyngor" +#: 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" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1022 -#: templates/web/default/admin/council_list.html:1 -#, fuzzy -msgid "Council contacts" -msgstr "Cysylltwch â Ni" +#: templates/web/default/admin/list_updates.html:9 +msgid "Council" +msgstr "Council" -#: templates/web/default/admin/council_contacts.html:1 -#: templates/web/default/admin/council_edit.html:1 +#: templates/web/default/admin/body.html:1 +#: templates/web/default/admin/body_edit.html:1 +#: templates/web/zurich/admin/body.html:1 msgid "Council contacts for %s" -msgstr "" +msgstr "Council contacts for %s" #: templates/web/default/admin/stats.html:84 -#: templates/web/default/admin/user_edit.html:12 -#, fuzzy msgid "Council:" -msgstr "cyngor" - -#: templates/web/default/admin/council_list.html:36 -#, fuzzy -msgid "Councils" -msgstr "cyngor" +msgstr "Council:" #: templates/web/default/admin/stats.html:12 #: templates/web/default/admin/stats.html:32 -#, fuzzy +#: templates/web/zurich/admin/stats.html:45 +#: templates/web/zurich/admin/stats.html:50 msgid "Count" -msgstr "Cysylltu" +msgstr "Count" #: templates/web/default/email_sent.html:1 -#, fuzzy msgid "Create a report" -msgstr "Categori:" +msgstr "Create a report" -#: templates/web/default/admin/council_contacts.html:96 -#, fuzzy +#: templates/web/default/admin/body.html:179 +#: templates/web/zurich/admin/body.html:53 msgid "Create category" -msgstr "Categori:" +msgstr "Create category" -#: templates/web/default/admin/list_flagged.html:17 -#: templates/web/default/admin/list_updates.html:9 -#: templates/web/default/admin/search_reports.html:20 +#: 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 "" +msgstr "Created" -#: templates/web/default/admin/report_edit.html:33 -#: templates/web/default/admin/update_edit.html:42 +#: 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 "" +msgstr "Created:" #: templates/web/default/admin/stats.html:31 msgid "Current state" -msgstr "" +msgstr "Current state" -#: templates/web/default/admin/council_list.html:40 -msgid "Currently has 1+ deleted" -msgstr "" +#: 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" -msgstr "" +msgstr "Dashboard" + +#: templates/web/zurich/admin/stats.html:35 +msgid "Dealt with by subdivision within 5 working days" +msgstr "Dealt with by subdivision within 5 working days" -#: templates/web/default/admin/council_contacts.html:38 -#: templates/web/default/admin/council_contacts.html:85 -#: templates/web/default/admin/council_edit.html:29 -#: templates/web/default/admin/council_edit.html:44 +#: 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 "" +msgstr "Deleted" + +#: templates/web/zurich/admin/index-dm.html:22 +#: templates/web/zurich/admin/index-sdm.html:20 +#: templates/web/zurich/admin/reports.html:12 +msgid "Description" +msgstr "Description" #: templates/web/bromley/report/new/fill_in_details_form.html:54 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:64 -#, fuzzy +#: 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 "Manylion:" +msgstr "Manylion" -#: templates/web/default/admin/report_edit.html:14 +#: 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 "Manylion:" -#: templates/web/default/admin/council_list.html:23 +#: templates/web/default/admin/body.html:57 +msgid "Devolved" +msgstr "Devolved" + +#: templates/web/default/admin/edit-league.html:8 msgid "Diligency prize league table" -msgstr "" +msgstr "Diligency prize league table" + +#: templates/web/fixmystreet/auth/general.html:30 +msgid "Do you have a FixMyBarangay password?" +msgstr "Do you have a FixMyBarangay password?" #: templates/web/default/auth/general.html:32 -#: templates/web/fixmystreet/auth/general.html:29 -#: templates/web/fixmystreet/report/display.html:128 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:150 -#, fuzzy +#: templates/web/fixmystreet/auth/general.html:32 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:155 +#: templates/web/fixmystreet/report/update-form.html:84 msgid "Do you have a reportemptyhomes.com password?" -msgstr "Diweddariadau i reportemptyhomes.com" +msgstr "Do you have a reportemptyhomes.com password?" #: templates/web/default/questionnaire/index.html:70 #: templates/web/fixmystreet/questionnaire/index.html:64 msgid "Don’t know" msgstr "Ddim yn gwybod" -#: templates/web/default/admin/list_updates.html:35 -#: templates/web/default/admin/problem_row.html:29 -#: templates/web/default/admin/search_users.html:24 -msgid "Edit" +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:82 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:47 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 +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:31 +#: templates/web/zurich/admin/problem_row.html:42 +msgid "Edit" +msgstr "Edit" + +#: templates/web/default/admin/body.html:189 +#: templates/web/zurich/admin/body.html:64 +msgid "Edit body details" +msgstr "Edit body details" + #: templates/web/default/admin/report_edit.html:1 -#, fuzzy +#: templates/web/zurich/admin/report_edit-sdm.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:4 +#: templates/web/zurich/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit.html:5 msgid "Editing empty property %d" -msgstr "Gweld eiddo gwag" +msgstr "Editing empty property %d" #: templates/web/default/admin/update_edit.html:1 -#, fuzzy +#: templates/web/zurich/admin/update_edit.html:1 msgid "Editing update %d" -msgstr "Cyflwyno'ch diweddariad" +msgstr "Editing update %d" #: templates/web/default/admin/user_edit.html:1 -#, fuzzy msgid "Editing user %d" -msgstr "Cyflwyno'ch diweddariad" +msgstr "Editing user %d" -#: templates/web/default/admin/council_edit.html:45 +#: templates/web/default/admin/body_edit.html:86 msgid "Editor" -msgstr "" - -#: templates/web/bromley/report/display.html:126 -#: templates/web/default/admin/council_contacts.html:36 -#: templates/web/default/admin/council_edit.html:42 -#: templates/web/default/admin/list_flagged.html:12 -#: templates/web/default/admin/list_flagged.html:35 -#: templates/web/default/admin/list_updates.html:8 -#: templates/web/default/admin/search_abuse.html:11 -#: templates/web/default/admin/search_reports.html:15 -#: templates/web/default/admin/search_users.html:13 +msgstr "Editor" + +#: 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/display.html:120 -#, fuzzy +#: 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 "E-bost:" +msgstr "Email" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1126 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1286 msgid "Email added to abuse list" -msgstr "" +msgstr "Email added to abuse list" + +#: templates/web/default/admin/body.html:126 +#, fuzzy +msgid "Email address:" +msgstr "Your email address:" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1123 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1283 msgid "Email already in abuse list" -msgstr "" +msgstr "Email already in abuse list" -#: templates/web/default/around/display_location.html:85 +#: templates/web/default/around/_updates.html:5 msgid "Email me new local empty properties" msgstr "Anfonwch fanylion eiddo gwag lleol newydd ataf i drwy'r e-bost" -#: templates/web/default/report/display.html:30 +#: templates/web/default/report/display.html:34 msgid "Email me updates" msgstr "Anfonwch ddiweddariadau ataf i drwy'r e-bost" -#: templates/web/default/admin/council_contacts.html:77 -#: templates/web/default/admin/council_edit.html:26 -#: templates/web/default/admin/report_edit.html:31 -#: templates/web/default/admin/update_edit.html:24 -#: templates/web/default/admin/user_edit.html:11 +#: 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:34 +#: 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 "E-bost:" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:611 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318 +msgid "Email: %s" +msgstr "Email: %s" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:620 msgid "Empty flat or maisonette" msgstr "Fflat neu fflat deulawr gwag" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:610 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:619 msgid "Empty house or bungalow" msgstr "Tŷ neu fyngalo gwag" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:613 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:622 msgid "Empty office or other commercial" msgstr "Swyddfa wag neu fan masnachol gwag arall" @@ -975,68 +1049,77 @@ msgstr "Swyddfa wag neu fan masnachol gwag arall" msgid "Empty property details form" msgstr "Ffurflen manylion eiddo gwag" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:614 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:623 msgid "Empty pub or bar" msgstr "Tafarn neu far gwag" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:615 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:624 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:" +#: 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/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:72 +#: templates/web/default/admin/stats.html:70 #, fuzzy -msgid "End day:" -msgstr "diwrnod" +msgid "End Date:" +msgstr "End day:" -#: templates/web/default/admin/stats.html:71 -msgid "End month:" -msgstr "" +#: templates/web/default/admin/body-form.html:126 +msgid "Endpoint" +msgstr "Endpoint" -#: templates/web/emptyhomes/index.html:40 -#: templates/web/emptyhomes/index.html:41 -msgid "Enter a nearby GB postcode, or street name and area" -msgstr "Cofnodwch god post Prydeinig, neu enw stryd ac ardal gerllaw" +#: perllib/FixMyStreet/Cobrand/Zurich.pm:71 +msgid "Enter a Zürich street name" +msgstr "Enter a Zürich street name" #: perllib/FixMyStreet/Cobrand/UK.pm:18 -#, fuzzy msgid "Enter a nearby UK postcode, or street name and area" -msgstr "Cofnodwch god post Prydeinig, neu enw stryd ac ardal gerllaw:" +msgstr "Cofnodwch god post gerllaw yn y DU, neu enw stryd ac ardal" #: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:25 -#, fuzzy msgid "Enter a nearby postcode, or street name and area" -msgstr "Cofnodwch god post Prydeinig, neu enw stryd ac ardal gerllaw:" +msgstr "Enter a nearby postcode, or street name and area" #: templates/web/default/around/postcode_form.html:1 #: templates/web/default/around/postcode_form.html:2 #: templates/web/fixmystreet/around/postcode_form.html:10 #: templates/web/fixmystreet/around/postcode_form.html:11 -#, fuzzy +#: templates/web/seesomething/around/postcode_form.html:3 +#: templates/web/seesomething/around/postcode_form.html:4 msgid "Enter a nearby street name and area" -msgstr "Cofnodwch god post Prydeinig, neu enw stryd ac ardal gerllaw:" +msgstr "Cofnodwch god post gerllaw yn y DU, neu enw stryd ac ardal" #: templates/web/default/auth/general.html:64 -#: templates/web/default/report/display.html:171 #: templates/web/default/report/new/fill_in_details_form.html:169 -#, fuzzy +#: templates/web/default/report/update-form.html:124 msgid "Enter a new password:" -msgstr "Ychwanegwch neges" +msgstr "Enter a new password:" -#: templates/web/bromley/report/display.html:148 +#: templates/web/bromley/report/display.html:150 #: templates/web/bromley/report/new/fill_in_details_form.html:189 -#: templates/web/fixmystreet/auth/general.html:57 -#: templates/web/fixmystreet/report/display.html:160 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:200 -#, fuzzy +#: 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 "Ychwanegwch neges" +msgstr "Enter a password" -#: templates/web/default/index.html:33 templates/web/emptyhomes/index.html:58 -#: templates/web/fixmystreet/index.html:41 +#: templates/web/default/index-steps.html:26 msgid "Enter details of the empty property" msgstr "Rhowch fanylion yr eiddo gwag" @@ -1050,219 +1133,227 @@ msgstr "Rhowch fanylion yr eiddo gwag" msgid "Error" msgstr "Gwall" -#: templates/web/default/admin/council_contacts.html:11 -#: templates/web/default/admin/council_edit.html:18 +#: templates/web/default/admin/body.html:11 +#: templates/web/default/admin/body_edit.html:18 msgid "Example postcode %s" -msgstr "" +msgstr "Example postcode %s" -#: templates/web/default/open311/index.html:27 +#: templates/web/default/open311/index.html:96 msgid "Examples:" -msgstr "" +msgstr "Examples:" -#: templates/web/default/admin/report_edit.html:40 +#: templates/web/default/admin/report_edit.html:76 msgid "Extra data:" -msgstr "" +msgstr "Extra data:" #: templates/web/bromley/contact/submit.html:14 #: templates/web/default/contact/submit.html:15 -#, fuzzy -msgid "" -"Failed to send message. Please try again, or <a href=\"mailto:%s\">email " -"us</a>." -msgstr "" -"Rhowch gynnig eto'n ddiweddarach, neu <a href=\"mailto:%s\">anfonwch neges e-" -"bost atom</a>i roi gwybod inni." +msgid "Failed to send message. Please try again, or <a href=\"mailto:%s\">email us</a>." +msgstr "Failed to send message. Please try again, or <a href=\"mailto:%s\">email us</a>." + +#: templates/web/zurich/admin/index-dm.html:33 +#: templates/web/zurich/admin/index-sdm.html:30 +msgid "Filter report list" +msgstr "Filter report list" + +#: templates/web/emptyhomes/front/stats.html:6 +msgid "Find latest local and national news" +msgstr "Dod o hyd i’r newyddion lleol a chenedlaethol diweddaraf" -#: templates/web/bromley/report/display.html:189 +#: templates/web/bromley/report/display.html:191 #: templates/web/bromley/report/new/fill_in_details_form.html:113 #: templates/web/bromley/report/new/fill_in_details_form.html:160 -#, fuzzy msgid "First Name" -msgstr "Y tro cyntaf" +msgstr "First Name" #: templates/web/default/questionnaire/index.html:79 #: templates/web/fixmystreet/questionnaire/index.html:73 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" msgstr "Trwsio<span id=\"my\">Fy</span>Stryd" #: templates/web/default/header.html:24 -#, fuzzy msgid "reportemptyhomes.com" msgstr "reportemptyhomes.com" -#: templates/web/default/admin/header.html:13 -#, fuzzy +#: templates/web/default/admin/header.html:10 msgid "reportemptyhomes.com admin:" -msgstr "reportemptyhomes.com" - -#: templates/web/default/admin/header.html:3 -#, fuzzy -msgid "reportemptyhomes.com administration" -msgstr "Diweddariadau i reportemptyhomes.com" +msgstr "reportemptyhomes.com admin:" #: templates/web/default/alert/index.html:11 msgid "" -"reportemptyhomes.com has a variety of RSS feeds and email alerts for local " -"empty properties, including\n" -"alerts for all empty properties within a particular ward or council, or all " -"empty properties\n" +"reportemptyhomes.com has a variety of RSS feeds and email alerts for local empty properties, including\n" +"alerts for all empty properties within a particular ward or council, or all empty properties\n" "within a certain distance of a particular location." msgstr "" -"Mae gan reportemptyhomes.com amrywiaeth o borthiannau RSS a hysbysiadau e-" -"bost ar gyfer eiddo gwag lleol,\n" -"gan gynnwys hysbysiadau am bob eiddo gwag mewn ward neu gyngor penodol, neu " -"bob eiddo gwag\n" +"Mae gan reportemptyhomes.com amrywiaeth o borthiannau RSS a hysbysiadau e-bost ar gyfer eiddo gwag lleol,\n" +"gan gynnwys hysbysiadau am bob eiddo gwag mewn ward neu gyngor penodol, neu bob eiddo gwag\n" "o fewn pellter penodol o leoliad penodol." #: templates/web/default/alert/_list.html:71 #: templates/web/fixmystreet/alert/_list.html:73 msgid "" "reportemptyhomes.com sends different categories of empty property\n" -"to the appropriate council, so empty properties within the boundary of a " -"particular council\n" -"might not match the empty properties sent to that council. For example, a " -"graffiti report\n" -"will be sent to the district council, so will appear in both of the " -"district\n" -"council’s alerts, but will only appear in the \"Within the boundary\" " -"alert\n" +"to the appropriate council, so empty properties within the boundary of a particular council\n" +"might not match the empty properties sent to that council. For example, a graffiti report\n" +"will be sent to the district council, so will appear in both of the district\n" +"council’s alerts, but will only appear in the \"Within the boundary\" alert\n" "for the county council." msgstr "" "Mae'r Asiantaeth Tai Gwag yn anfon categorïau o eiddo gwag at y\n" -"cyngor priodol, felly mae'n bosibl na fydd eiddo gwag o fewn ffin cyngor " -"penodol yn \n" -"cyfateb i'r eiddo gwag sy'n cael eu hanfon at y cyngor hwnnw. Er enghraifft, " -"bydd adroddiad am\n" -"graffiti'n cael ei anfon at y cyngor dosbarth, felly bydd yn ymddangos yn " -"hysbysiadau'r\n" +"cyngor priodol, felly mae'n bosibl na fydd eiddo gwag o fewn ffin cyngor penodol yn \n" +"cyfateb i'r eiddo gwag sy'n cael eu hanfon at y cyngor hwnnw. Er enghraifft, bydd adroddiad am\n" +"graffiti'n cael ei anfon at y cyngor dosbarth, felly bydd yn ymddangos yn hysbysiadau'r\n" "rhanbarth a'r cyngor, ond dim ond yn yr hysbysiad \"O fewn y ffin\" \n" "y bydd yn ymddangos yn achos y cyngor sir." #: templates/web/bromley/report/display.html:80 -#: templates/web/bromley/report/display.html:82 -#: templates/web/default/admin/index.html:36 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:20 -#: templates/web/default/dashboard/index.html:136 -#: templates/web/default/dashboard/index.html:138 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:81 +#: 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/display.html:74 -#: templates/web/fixmystreet/report/display.html:76 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:32 msgid "Fixed" -msgstr "" +msgstr "Fixed" -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 -#, fuzzy +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:43 msgid "Fixed - Council" -msgstr "cyngor" +msgstr "Fixed - Council" -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 -#, fuzzy +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:42 msgid "Fixed - User" -msgstr "Cuddio hen adroddiadau " +msgstr "Fixed - User" -#: templates/web/default/my/my.html:27 templates/web/fixmystreet/my/my.html:27 -#, fuzzy +#: templates/web/default/my/my.html:27 templates/web/fixmystreet/my/my.html:31 msgid "Fixed reports" -msgstr "Cuddio hen adroddiadau " +msgstr "Fixed reports" -#: templates/web/default/admin/problem_row.html:24 +#: templates/web/default/admin/problem_row.html:37 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 "" +msgstr "Flag user" -#: templates/web/default/admin/search_users.html:15 +#: 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/report_edit.html:42 -#: templates/web/default/admin/user_edit.html:18 -msgid "Flagged:" +#: 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 "Flagged:" + #: templates/web/default/reports/_ward-list.html:3 -#: templates/web/emptyhomes/reports/council.html:19 #: templates/web/fixmystreet/reports/_ward-list.html:4 msgid "Follow a ward link to view only reports within that ward." -msgstr "" +msgstr "Follow a ward link to view only reports within that ward." -#: templates/web/default/admin/report_edit.html:16 -#, fuzzy +#: templates/web/default/admin/report_edit.html:30 msgid "For council(s):" -msgstr "cyngor" +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?" +msgstr "Forgotten your password?" #: templates/web/default/faq/faq-en-gb.html:1 #: templates/web/emptyhomes/faq/faq-cy.html:1 #: templates/web/emptyhomes/faq/faq-en-gb.html:1 #: templates/web/fiksgatami/faq/faq-nb.html:1 #: templates/web/fiksgatami/nn/faq/faq-nn.html:1 +#: templates/web/fixmindelo/faq/faq-pt-cv.html:1 +#: templates/web/fixmybarangay/faq/faq-en-gb.html:1 #: templates/web/fixmystreet/faq/faq-en-gb.html:1 #: templates/web/fixmystreet/static/privacy.html:1 -#: templates/web/zurich/faq/faq-de.html:1 +#: templates/web/oxfordshire/faq/faq-en-gb.html:1 msgid "Frequently Asked Questions" msgstr "Cwestiynau Cyffredin" -#: templates/web/emptyhomes/static/about.html:34 -msgid "Further information about our work on empty homes." -msgstr "" - -#: templates/web/default/open311/index.html:69 +#: templates/web/default/open311/index.html:138 msgid "GeoRSS on Google Maps" -msgstr "" +msgstr "GeoRSS on Google Maps" #: templates/web/bromley/report/display.html:30 -#: templates/web/fixmystreet/report/display.html:23 -#, fuzzy +#: templates/web/fixmystreet/around/_updates.html:3 +#: templates/web/fixmystreet/report/display.html:38 msgid "Get updates" -msgstr "Anfonwch ddiweddariadau ataf i drwy'r e-bost" +msgstr "Get updates" #: templates/web/fixmystreet/reports/_rss.html:3 #: templates/web/fixmystreet/reports/_rss.html:9 -#, fuzzy msgid "Get updates of %s empty properties" -msgstr "Porthiant RSS o eiddo gwag yn yr %s hwn" +msgstr "Get updates of %s empty properties" #: templates/web/fixmystreet/reports/_rss.html:11 #: templates/web/fixmystreet/reports/_rss.html:3 -#, fuzzy msgid "Get updates of empty properties in this %s" -msgstr "Porthiant RSS o eiddo gwag yn yr %s hwn" +msgstr "Get updates of empty properties in this %s" #: templates/web/default/alert/_list.html:83 +#: templates/web/fixmybarangay/alert/_list.html:28 #: templates/web/fixmystreet/alert/_list.html:82 msgid "Give me an RSS feed" msgstr "Rhowch borthiant RSS i mi" #: templates/web/default/alert/index.html:34 #: templates/web/default/around/postcode_form.html:8 -#: templates/web/emptyhomes/index.html:47 -#: templates/web/fixmystreet/around/postcode_form.html:18 +#: templates/web/fixmystreet/around/postcode_form.html:21 +#: templates/web/seesomething/around/postcode_form.html:10 +#: templates/web/zurich/admin/stats.html:26 msgid "Go" msgstr "Ewch" -#: templates/web/default/admin/report_edit.html:41 -#, fuzzy +#: templates/web/default/admin/report_edit.html:77 msgid "Going to send questionnaire?" -msgstr "Anfon yr holiadur" +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 "" +msgstr "Graph of empty property creation by status over time" #: templates/web/default/reports/index.html:8 -#: templates/web/emptyhomes/reports/index.html:5 msgid "Greyed-out lines are councils that no longer exist." msgstr "Mae'r llinellau mewn llwyd yn gynghorau nad ydynt yn bodoli mwyach." @@ -1273,139 +1364,190 @@ msgstr "A yw'r eiddo gwag hwn wedi cael ei adfer i'w ddefnyddio?" #: templates/web/default/questionnaire/index.html:74 #: templates/web/fixmystreet/questionnaire/index.html:68 -msgid "" -"Have you ever reported an empty property to a council before, or is this " -"your first time?" -msgstr "" -"Ydych chi wedi rhoi gwybod i gyngor am eiddo gwag erioed o'r blaen, neu ai " -"dyma'ch tro cyntaf?" +msgid "Have you ever reported an empty property to a council before, or is this your first time?" +msgstr "Ydych chi wedi rhoi gwybod i gyngor am eiddo gwag erioed o'r blaen, neu ai dyma'ch tro cyntaf?" #: 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:28 +#: templates/web/emptyhomes/header.html:33 #: templates/web/fiksgatami/footer.html:9 #: templates/web/fiksgatami/nn/footer.html:9 -#: templates/web/fixmystreet/footer.html:53 +#: 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 "FAQs" msgstr "Cwestiynau Cyffredin" #: templates/web/default/alert/_list.html:6 #: templates/web/fixmystreet/alert/_list.html:8 msgid "Here are the types of local empty property alerts for ‘%s’." -msgstr "" -"Dyma'r mathau o hysbysiadau am eiddo gwag lleol ar gyfer ‘%s’." +msgstr "Dyma'r mathau o hysbysiadau am eiddo gwag lleol ar gyfer ‘%s’." #: templates/web/barnet/header.html:70 templates/web/bromley/header.html:64 #: templates/web/bromley/header.html:99 -#: templates/web/fixmybarangay/header.html.orig:42 -#: templates/web/fixmystreet/header.html:47 -#: templates/web/zurich/header.html:47 +#: templates/web/fixmybarangay/header.html:66 +#: templates/web/fixmystreet/header.html:50 +#: templates/web/oxfordshire/header.html:111 +#: templates/web/oxfordshire/header.html:47 +#: templates/web/stevenage/header.html:97 templates/web/zurich/footer.html:11 msgid "Hi %s" -msgstr "" +msgstr "Hi %s" -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 -#: templates/web/default/admin/update_edit.html:19 -#, fuzzy +#: 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 "Cuddio pinnau" +msgstr "Hidden" -#: templates/web/default/around/display_location.html:58 -#: templates/web/fixmystreet/around/display_location.html:58 +#: templates/web/default/around/display_location.html:67 msgid "Hide old" -msgstr "" +msgstr "Hide old" -#: templates/web/default/around/display_location.html:53 -#: templates/web/fixmystreet/around/display_location.html:54 +#: templates/web/default/around/display_location.html:62 msgid "Hide pins" msgstr "Cuddio pinnau" -#: templates/web/default/admin/council_edit.html:38 +#: templates/web/default/admin/body_edit.html:79 msgid "History" -msgstr "" +msgstr "History" -#: templates/web/default/index.html:28 templates/web/emptyhomes/index.html:53 -#: templates/web/fixmystreet/index.html:36 +#: templates/web/default/js/translation_strings.html:31 +#: templates/web/oxfordshire/js/translation_strings.html:25 +msgid "Home" +msgstr "Home" + +#: templates/web/default/index-steps.html:1 msgid "How to report an empty property" msgstr "Sut i roi gwybod am eiddo gwag" -#: perllib/FixMyStreet/App/Controller/Admin.pm:637 +#: 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:733 msgid "I am afraid you cannot confirm unconfirmed reports." -msgstr "" +msgstr "I am afraid you cannot confirm unconfirmed reports." #: perllib/FixMyStreet/App/Controller/Questionnaire.pm:89 msgid "I'm afraid we couldn't locate your empty property in the database.\n" -msgstr "" -"Yn anffodus ni fu modd i ni ddod o hyd i'ch eiddo gwag yn y gronfa ddata.\n" +msgstr "Yn anffodus ni fu modd i ni ddod o hyd i'ch eiddo gwag yn y gronfa ddata.\n" #: perllib/FixMyStreet/App/Controller/Tokens.pm:44 -#, fuzzy -msgid "" -"I'm afraid we couldn't validate that token, as the report was made too long " -"ago." -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" +msgid "I'm afraid we couldn't validate that token, as the report was made too long ago." +msgstr "I'm afraid we couldn't validate that token, as the report was made too long ago." -#: perllib/FixMyStreet/App/Controller/Tokens.pm:235 -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" +#: perllib/FixMyStreet/App/Controller/Tokens.pm:259 +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/list_flagged.html:9 -#: templates/web/default/admin/list_updates.html:5 -#: templates/web/default/admin/search_reports.html:12 +#: 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 "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/report/new/councils_text_none.html:11 -#: templates/web/default/report/new/councils_text_none.html:12 +#: templates/web/default/admin/body.html:104 msgid "" -"If you submit an empty property here the subject and details of the empty " -"property will be public, but the empty property will <strong>not</strong> be " -"reported to the council." +"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." + +#: templates/web/default/email_sent.html:15 +msgid "If you do not, your empty property will not be posted." +msgstr "Os na wnewch chi hyn, ni fydd eich problem yn cael ei phostio." + +#: templates/web/default/email_sent.html:17 +msgid "If you do not, your update will not be posted." +msgstr "If you do not, your update will not be posted." + +#: templates/web/default/report/new/councils_text_none.html:8 +#: templates/web/default/report/new/councils_text_none.html:9 +msgid "If you submit an empty property here the subject and details of the empty property will be public, but the empty property will <strong>not</strong> be reported to the council." +msgstr "If you submit an empty property here the subject and details of the empty property will be public, but the empty property will <strong>not</strong> be reported to the council." + #: templates/web/emptyhomes/report/new/councils_text_none.html:9 -#, fuzzy -msgid "" -"If you submit a report here it will be left on the site, but not reported to " -"the council – please still leave your report, so that we can show to " -"the council the activity in their area." +msgid "If you submit a report here it will be left on the site, but not reported to the council – please still leave your report, so that we can show to the council the activity in their area." msgstr "" "<p>Nid oes gennym fanylion eto ar gyfer y cyngor sy'n gyfrifol am \n" -"y lleoliad hwn. Os ydych yn cyflwyno adroddiad yma, bydd yn cael ei adael ar " -"y safle, ond\n" -"ni fydd yn cael ei adrodd i'r cyngor – gadewch eich adroddiad o hyd, " -"fel y gallwn\n" +"y lleoliad hwn. Os ydych yn cyflwyno adroddiad yma, bydd yn cael ei adael ar y safle, ond\n" +"ni fydd yn cael ei adrodd i'r cyngor – gadewch eich adroddiad o hyd, fel y gallwn\n" "ddangos i'r cyngor y gweithgarwch yn ei ardal." -#: templates/web/default/auth/token.html:23 -#: templates/web/default/email_sent.html:24 -msgid "" -"If you use web-based email or have 'junk mail' filters, you may wish to " -"check your bulk/spam mail folders: sometimes, our messages are marked that " -"way." -msgstr "" +#: templates/web/default/auth/token.html:22 +#: templates/web/default/email_sent.html:9 +msgid "If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way." +msgstr "Os ydych yn defnyddio e-bost drwy’r we neu os oes gennych hidlyddion ‘post sothach’, efallai y byddwch am edrych yn eich ffolderi post torfol/sbam: weithiau, bydd ein negeseuon yn cael eu marcio felly." -#: templates/web/default/questionnaire/index.html:83 +#: templates/web/default/questionnaire/index.html:86 #: templates/web/fixmystreet/questionnaire/index.html:77 msgid "" -"If you wish to leave a public update on the empty property, please enter it " -"here\n" +"If you wish to leave a public update on the empty property, please enter it here\n" "(please note it will not be sent to the council). For example, what was\n" "your experience of getting the empty property returned to use?" msgstr "" -"Os ydych yn dymuno gadael diweddariad cyhoeddus am yr eiddo gwag, cofnodwch " -"hwn yma\n" -"(sylwer na fydd yn cael ei anfon at y cyngor). Er enghraifft, beth oedd eich " -"profiad\n" +"Os ydych yn dymuno gadael diweddariad cyhoeddus am yr eiddo gwag, cofnodwch hwn yma\n" +"(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" @@ -1416,139 +1558,147 @@ msgstr "Dewis porthiant annilys" #: templates/web/bromley/report/display.html:80 #: templates/web/bromley/report/display.html:82 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:20 -#: templates/web/default/dashboard/index.html:136 -#: templates/web/default/dashboard/index.html:138 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:81 -#: templates/web/fixmystreet/report/display.html:74 -#: templates/web/fixmystreet/report/display.html:76 +#: 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:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 msgid "In Progress" -msgstr "" +msgstr "In Progress" -#: templates/web/default/open311/index.html:21 -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 "" +#: 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: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 "" +msgstr "In progress" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:38 +msgid "Incident Category" +msgstr "Incident Category" + +#: templates/web/zurich/admin/report_edit.html:163 +msgid "Include reporter personal details" +msgstr "Include reporter personal details" #: templates/web/default/admin/stats.html:76 -#, fuzzy msgid "Include unconfirmed reports" -msgstr "Cynnwys hen adroddiadau" +msgstr "Include unconfirmed reports" -#: perllib/FixMyStreet/App/Controller/Open311.pm:356 +#: perllib/FixMyStreet/App/Controller/Open311.pm:354 msgid "Incorrect has_photo value \"%s\"" -msgstr "" +msgstr "Incorrect has_photo value \"%s\"" -#: perllib/FixMyStreet/App/Controller/Open311.pm:341 -msgid "Invalid agency_responsible value %s" -msgstr "" +#: templates/web/zurich/admin/list_updates.html:3 +#, fuzzy +msgid "Internal notes" +msgstr "Internal notes:" -#: perllib/FixMyStreet/App/Controller/Admin.pm:942 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:48 #, fuzzy +msgid "Internal referral" +msgstr "Internal notes:" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:339 +msgid "Invalid agency_responsible value %s" +msgstr "Invalid agency_responsible value %s" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1096 msgid "Invalid end date" -msgstr "Rhowch ddiweddariad" +msgstr "Invalid end date" #: perllib/FixMyStreet/App/Controller/Open311.pm:432 msgid "Invalid format %s specified." -msgstr "" +msgstr "Invalid format %s specified." -#: perllib/FixMyStreet/App/Controller/Admin.pm:932 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1092 msgid "Invalid start date" -msgstr "" +msgstr "Invalid start date" #: templates/web/bromley/report/display.html:80 #: templates/web/bromley/report/display.html:81 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:19 -#: templates/web/default/dashboard/index.html:136 -#: templates/web/default/dashboard/index.html:137 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:80 -#: templates/web/fixmystreet/report/display.html:74 -#: templates/web/fixmystreet/report/display.html:75 -#, fuzzy +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:37 +#: templates/web/default/dashboard/index.html:142 +#: templates/web/default/dashboard/index.html:143 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 msgid "Investigating" -msgstr "Mordwyo " +msgstr "Investigating" #: templates/web/emptyhomes/tokens/confirm_problem.html:12 #: templates/web/emptyhomes/tokens/confirm_problem.html:14 -#, fuzzy -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’t mean the council " -"isn’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." +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’t mean the council isn’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 "" -"Mae'r rhan fwyaf o gynghorau'n eithaf da wrth adfer eiddo gwag i'w defnydd " -"eto. Er hynny,\n" -"mae'r broses weithiau'n gallu bod yn araf, yn enwedig os yw cyflwr yr " -"eiddo'n \n" -"ddrwg iawn neu os nad yw'r perchennog yn barod i weithredu. Gan amlaf, mae'n " -"cymryd tua chwe mis\n" -"cyn y gallwch ddisgwyl gweld unrhyw beth yn newid. Nid yw hyn yn golygu nad " -"yw'r cyngor\n" -"yn gwneud unrhyw beth. Rydym yn annog cynghorau i ddiweddaru'r wefan \n" -"fel y gallwch weld beth sy'n digwydd." - -#: templates/web/bromley/report/display.html:166 +"Mae'r rhan fwyaf o gynghorau'n eithaf da wrth adfer eiddo gwag i'w defnydd eto. Er hynny,\n" +"mae'r broses weithiau'n gallu bod yn araf, yn enwedig os yw cyflwr yr eiddo'n ddrwg iawn neu os nad yw'r perchennog yn barod i weithredu. Gan amlaf, mae'n cymryd tua chwe miscyn y gallwch ddisgwyl gweld unrhyw beth yn newid. Nid yw hyn yn golygu nad yw'r cyngor yn gwneud unrhyw beth. Rydym yn annog cynghorau i ddiweddaru'r wefan fel y gallwch weld beth sy'n digwydd." + +#: 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/display.html:151 #: templates/web/default/report/new/fill_in_details_form.html:149 -#: templates/web/fixmystreet/auth/general.html:42 -#: templates/web/fixmystreet/report/display.html:144 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:167 +#: 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 "" +msgstr "Keep me signed in on this computer" -#: templates/web/bromley/report/display.html:195 +#: templates/web/bromley/report/display.html:197 #: templates/web/bromley/report/new/fill_in_details_form.html:119 #: templates/web/bromley/report/new/fill_in_details_form.html:166 -#, fuzzy msgid "Last Name" -msgstr "Anfonwch ddiweddariadau ataf i drwy'r e-bost" +msgstr "Last Name" -#: templates/web/default/admin/council_contacts.html:39 +#: templates/web/default/admin/body.html:58 +#: templates/web/zurich/admin/body.html:15 msgid "Last editor" -msgstr "" +msgstr "Last editor" -#: templates/web/default/admin/report_edit.html:36 -#, fuzzy +#: templates/web/default/admin/report_edit.html:72 msgid "Last update:" -msgstr "Anfonwch ddiweddariadau ataf i drwy'r e-bost" +msgstr "Last update:" -#: templates/web/default/admin/problem_row.html:26 +#: templates/web/default/admin/problem_row.html:39 msgid "Last update:" -msgstr "" +msgstr "Last update:" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1028 -msgid "List Flagged" +#: 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/council_contacts.html:14 -#: templates/web/default/admin/council_contacts.html:16 -#, fuzzy +#: templates/web/default/admin/body.html:14 +#: templates/web/default/admin/body.html:16 msgid "List all reported empty properties" -msgstr "Eiddo gwag yr adroddwyd amdanynt yn ddiweddar" +msgstr "List all reported empty properties" #: templates/web/bromley/report/new/fill_in_details_form.html:69 #: templates/web/default/report/new/fill_in_details_form.html:68 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:73 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:51 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:75 +#: templates/web/seesomething/report/new/fill_in_details_form.html:25 +#: templates/web/zurich/report/new/fill_in_details_form.html:51 msgid "Loading..." -msgstr "" +msgstr "Llwytho…" #: templates/web/default/alert/choose.html:1 #: templates/web/default/alert/choose.html:3 @@ -1561,6 +1711,8 @@ msgstr "" #: templates/web/default/tokens/confirm_alert.html:3 #: templates/web/emptyhomes/alert/index.html:1 #: templates/web/emptyhomes/alert/index.html:3 +#: templates/web/fixmybarangay/alert/index.html:1 +#: templates/web/fixmybarangay/alert/index.html:3 #: templates/web/fixmystreet/alert/updates.html:1 msgid "Local RSS feeds and email alerts" msgstr "Porthiannau RSS a hysbysiadau e-bost lleol" @@ -1569,35 +1721,42 @@ msgstr "Porthiannau RSS a hysbysiadau e-bost lleol" #: templates/web/default/alert/list.html:12 #: templates/web/default/alert/list.html:14 #: templates/web/default/alert/list.html:3 -#, fuzzy msgid "Local RSS feeds and email alerts for ‘%s’" -msgstr "Porthiannau RSS a hysbysiadau e-bost lleol" +msgstr "Local RSS feeds and email alerts for ‘%s’" #: 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/fixmystreet/footer.html:51 -#: templates/web/reading/footer.html:9 +#: 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 "Get local reports" msgstr "Gweld adroddiadau lleol" -#: templates/web/default/index.html:32 templates/web/emptyhomes/index.html:57 -#: templates/web/fixmystreet/index.html:40 +#: templates/web/default/index-steps.html:25 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:43 +#: templates/web/oxfordshire/js/translation_strings.html:37 +msgid "MAP" +msgstr "MAP" + #: perllib/FixMyStreet/Map/OSM.pm:44 -msgid "" -"Map © <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>" +msgid "Map © <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 © <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:86 -#, fuzzy +#: templates/web/fixmystreet/contact/index.html:98 msgid "Message" -msgstr "Neges:" +msgstr "Message" #: templates/web/default/contact/index.html:90 msgid "Message:" @@ -1605,86 +1764,110 @@ msgstr "Neges:" #: perllib/FixMyStreet/App/Controller/Open311.pm:440 msgid "Missing jurisdiction_id" -msgstr "" +msgstr "Missing jurisdiction_id" + +#: templates/web/zurich/admin/stats.html:34 +msgid "Moderated by division within one working day" +msgstr "Moderated by division within one working day" #: templates/web/default/admin/stats.html:11 -#, fuzzy msgid "Month" -msgstr "Cysylltu" +msgstr "Month" -#: templates/web/default/report/display.html:26 +#: templates/web/default/report/display.html:30 msgid "More empty properties nearby" msgstr "Mwy o eiddo gwag cyfagos" -#: templates/web/default/admin/list_flagged.html:11 -#: templates/web/default/admin/list_flagged.html:34 +#: 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/search_reports.html:14 -#: templates/web/default/admin/search_users.html:12 +#: 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:10 +#: templates/web/emptyhomes/reports/index.html:9 #: templates/web/fiksgatami/nn/reports/index.html:9 #: templates/web/fiksgatami/reports/index.html:9 -#: templates/web/fixmystreet/auth/general.html:52 -#: templates/web/fixmystreet/report/display.html:177 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:117 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:176 +#: 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 "Enw" -#: templates/web/default/admin/report_edit.html:30 -#: templates/web/default/admin/update_edit.html:23 -#: templates/web/default/admin/user_edit.html:10 +#: templates/web/seesomething/report/new/fill_in_details_form.html:74 +msgid "Name (optional)" +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: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:317 +msgid "Name: %s" +msgstr "Enw: %s" + #: templates/web/fiksgatami/footer.html:3 #: templates/web/fiksgatami/nn/footer.html:3 #: templates/web/reading/footer.html:4 msgid "Navigation" msgstr "Mordwyo " -#: perllib/FixMyStreet/Geocode/OSM.pm:159 -msgid "" -"Nearest named road to the pin placed on the map (automatically generated " -"using OpenStreetMap): %s%s" -msgstr "" +#: perllib/FixMyStreet/Geocode/OSM.pm:166 +msgid "Nearest named road to the pin placed on the map (automatically generated using OpenStreetMap): %s%s" +msgstr "Nearest named road to the pin placed on the map (automatically generated using OpenStreetMap): %s%s" -#: perllib/FixMyStreet/Cobrand/UK.pm:161 -msgid "" -"Nearest postcode to the pin placed on the map (automatically generated): %s " -"(%sm away)" -msgstr "" +#: perllib/FixMyStreet/Cobrand/UK.pm:148 +msgid "Nearest postcode to the pin placed on the map (automatically generated): %s (%sm away)" +msgstr "Nearest postcode to the pin placed on the map (automatically generated): %s (%sm away)" -#: perllib/FixMyStreet/Cobrand/Default.pm:404 -#: perllib/FixMyStreet/Cobrand/Default.pm:444 -msgid "" -"Nearest road to the pin placed on the map (automatically generated by Bing " -"Maps): %s" -msgstr "" +#: perllib/FixMyStreet/Cobrand/Default.pm:418 +#: perllib/FixMyStreet/Cobrand/Default.pm:458 +msgid "Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s" +msgstr "Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s" -#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:245 +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:273 msgid "" -"Nearest road to the pin placed on the map (automatically generated by Bing " -"Maps): %s\n" +"Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s\n" "\n" msgstr "" +"Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s\n" +"\n" -#: templates/web/default/email_sent.html:20 +#: templates/web/default/email_sent.html:3 msgid "Nearly Done! Now check your email..." -msgstr "" +msgstr "Bron â gorffen! Nawr, ewch at eich negeseuon e-bost..." #: templates/web/default/reports/index.html:16 -#, fuzzy +#: templates/web/fixmybarangay/reports/index.html:16 msgid "New <br>empty properties" -msgstr "Adroddiadau newydd am eiddo gwag" +msgstr "New <br>empty properties" -#: perllib/FixMyStreet/App/Controller/Admin.pm:314 +#: perllib/FixMyStreet/App/Controller/Admin.pm:264 +msgid "New body added" +msgstr "New body added" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:376 msgid "New category contact added" -msgstr "" +msgstr "New category contact added" -#: db/alert_types.pl:18 db/alert_types.pl:22 +#: 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" @@ -1692,55 +1875,45 @@ msgstr "Eiddo gwag lleol diweddar, reportemptyhomes.com" msgid "New local reports on reportemptyhomes.com" msgstr "Adroddiadau lleol newydd ar reportemptyhomes.com" -#: templates/web/emptyhomes/reports/index.html:11 +#: templates/web/emptyhomes/reports/index.html:10 #: templates/web/fiksgatami/nn/reports/index.html:10 #: templates/web/fiksgatami/reports/index.html:10 msgid "New empty property reports" msgstr "Adroddiadau newydd am eiddo gwag" #: db/alert_types.pl:38 -#, fuzzy -msgid "" -"New empty property reports for {{COUNCIL}} within {{WARD}} ward on " -"reportemptyhomes.com" -msgstr "" -"Adroddiadau newydd ar gyfer cyngor {{COUNCIL}}, yn ward {{WARD}} ar " -"reportemptyhomes.com" +msgid "New empty property reports for {{COUNCIL}} within {{WARD}} ward on reportemptyhomes.com" +msgstr "Adroddiadau newydd ar gyfer cyngor {{COUNCIL}}, yn ward {{WARD}} ar reportemptyhomes.com" #: db/alert_types.pl:26 db/alert_types.pl:30 -#, fuzzy msgid "New empty property reports near {{POSTCODE}} on reportemptyhomes.com" msgstr "Adroddiadau newydd i gyngor {{COUNCIL}} ar reportemptyhomes.com" #: db/alert_types.pl:10 -#, fuzzy msgid "New empty property reports on reportemptyhomes.com" msgstr "Adroddiadau newydd ar reportemptyhomes.com" #: db/alert_types.pl:34 -#, fuzzy msgid "New empty property reports to {{COUNCIL}} on reportemptyhomes.com" msgstr "Adroddiadau newydd i gyngor {{COUNCIL}} ar reportemptyhomes.com" #: db/alert_types.pl:42 -#, fuzzy -msgid "" -"New empty property reports within {{NAME}}'s boundary on reportemptyhomes.com" +msgid "New empty property reports within {{NAME}}'s boundary on reportemptyhomes.com" msgstr "Adroddiadau newydd o fewn ffin {{NAME}} ar reportemptyhomes.com" +#: templates/web/zurich/admin/index-sdm.html:4 +msgid "New reports" +msgstr "New reports" + #: db/alert_types_eha.pl:23 -msgid "" -"New reports for {{COUNCIL}} within {{WARD}} ward on reportemptyhomes.com" -msgstr "" -"Adroddiadau newydd ar gyfer cyngor {{COUNCIL}}, yn ward {{WARD}} ar " -"reportemptyhomes.com" +msgid "New reports for {{COUNCIL}} within {{WARD}} ward on reportemptyhomes.com" +msgstr "Adroddiadau newydd ar gyfer cyngor {{COUNCIL}}, yn ward {{WARD}} ar reportemptyhomes.com" #: db/alert_types_eha.pl:5 msgid "New reports on reportemptyhomes.com" msgstr "Adroddiadau newydd ar reportemptyhomes.com" #: db/alert_types_eha.pl:16 -#, fuzzy msgid "New reports on reportemptyhomes.com near {{POSTCODE}}" msgstr "Adroddiadau newydd ar reportemptyhomes.com" @@ -1754,7 +1927,11 @@ msgstr "Adroddiadau newydd o fewn ffin {{NAME}} ar reportemptyhomes.com" #: templates/web/default/admin/questionnaire.html:24 msgid "New state" -msgstr "" +msgstr "New state" + +#: templates/web/zurich/admin/report_edit-sdm.html:61 +msgid "New update:" +msgstr "New update:" #: templates/web/fiksgatami/front/news.html:9 #: templates/web/fiksgatami/nn/front/news.html:9 @@ -1762,50 +1939,58 @@ msgstr "" msgid "New!" msgstr "Newydd!" -#: templates/web/default/admin/council_contacts.html:48 -#: templates/web/default/admin/council_contacts.html:49 -#: templates/web/default/admin/council_edit.html:4 -#: templates/web/default/admin/list_updates.html:30 -#: templates/web/default/admin/list_updates.html:31 +#: templates/web/default/pagination.html:13 +msgid "Next" +msgstr "Next" + +#: 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/problem_row.html:19 -#: templates/web/default/admin/report_edit.html:28 -#: templates/web/default/admin/report_edit.html:41 -#: templates/web/default/admin/update_edit.html:16 +#: 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:107 +#: 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 "Nac ydw" +msgstr "Dim" + +#: templates/web/default/admin/user-form.html:33 +msgid "No body" +msgstr "No body" #: templates/web/default/admin/stats.html:85 -#: templates/web/default/admin/user_edit.html:13 -#, fuzzy msgid "No council" -msgstr "cyngor" +msgstr "No council" -#: perllib/FixMyStreet/DB/Result/Problem.pm:328 +#: perllib/FixMyStreet/DB/Result/Problem.pm:362 msgid "No council selected" msgstr "Ni ddewiswyd cyngor" -#: templates/web/default/admin/council_list.html:32 +#: templates/web/default/admin/edit-league.html:17 msgid "No edits have yet been made." -msgstr "" +msgstr "No edits have yet been made." -#: templates/web/default/admin/list_flagged.html:26 +#: templates/web/default/admin/flagged.html:25 #, fuzzy -msgid "No flagged empty properties found" -msgstr "Ni ddaethpwyd o hyd i unrhyw eiddo gwag." +msgid "No flagged empty properties found." +msgstr "No flagged empty properties found" -#: templates/web/default/admin/list_flagged.html:47 -msgid "No flagged users found" -msgstr "" +#: templates/web/default/admin/flagged.html:58 +#, fuzzy +msgid "No flagged users found." +msgstr "No flagged users found" -#: templates/web/default/admin/council_list.html:38 -msgid "No info at all" -msgstr "" +#: templates/web/zurich/admin/report_edit-sdm.html:68 +msgid "No further updates" +msgstr "No further updates" #: templates/web/default/around/around_map_list_items.html:17 #: templates/web/fixmystreet/around/around_map_list_items.html:8 @@ -1817,75 +2002,115 @@ 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/admin/council_list.html:5 -#: templates/web/default/admin/report_edit.html:16 -#, fuzzy +#: 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:73 +msgid "Non Public" +msgstr "Non Public" + +#: 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 "Nac ydw" +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 +#: 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 "Not Responsible" + +#: templates/web/zurich/admin/report_edit-sdm.html:21 +msgid "Not for my subdivision" +msgstr "Not for my subdivision" #: templates/web/default/admin/questionnaire.html:6 -#, fuzzy msgid "Not reported before" -msgstr "Wedi adrodd o'r blaen" +msgstr "Not reported before" -#: templates/web/default/report/_main.html:11 -#: templates/web/emptyhomes/report/display.html:24 -#: templates/web/fixmystreet/report/_main.html:13 +#: 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/council_contacts.html:40 -#: templates/web/default/admin/council_edit.html:46 -#, fuzzy +#: 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 "Nac ydw" +msgstr "Note" #: templates/web/default/admin/stats.html:51 -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 "" +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/council_contacts.html:89 -#: templates/web/default/admin/council_edit.html:31 -#, fuzzy +#: 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 "Nac ydw" +msgstr "Note:" -#: templates/web/default/open311/index.html:6 +#: templates/web/default/open311/index.html:75 msgid "Note: <strong>%s</strong>" -msgstr "" +msgstr "Note: <strong>%s</strong>" -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:149 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:154 msgid "Now to submit your report…" -msgstr "" +msgstr "Now to submit your report…" #: templates/web/default/report/new/fill_in_details_form.html:131 -msgid "" -"Now to submit your report… do you have a reportemptyhomes.com " -"password?" -msgstr "" +msgid "Now to submit your report… do you have a reportemptyhomes.com password?" +msgstr "Now to submit your report… do you have a reportemptyhomes.com password?" -#: templates/web/fixmystreet/report/display.html:127 +#: templates/web/fixmystreet/report/update-form.html:83 msgid "Now to submit your update…" -msgstr "" +msgstr "Now to submit your update…" -#: templates/web/default/report/display.html:133 -msgid "" -"Now to submit your update… do you have a reportemptyhomes.com " -"password?" -msgstr "" +#: templates/web/default/report/update-form.html:86 +msgid "Now to submit your update… do you have a reportemptyhomes.com password?" +msgstr "Now to submit your update… do you have a reportemptyhomes.com password?" + +#: templates/web/default/js/translation_strings.html:42 +#: templates/web/oxfordshire/js/translation_strings.html:36 +msgid "OK" +msgstr "OK" -#: templates/web/default/report/display.html:21 +#: templates/web/default/report/display.html:24 #: templates/web/default/report/update.html:16 msgid "Offensive? Unsuitable? Tell us" msgstr "Sarhaus? Anaddas? Rhowch wybod i ni" #: templates/web/default/reports/index.html:18 -#, fuzzy +#: templates/web/fixmybarangay/reports/index.html:18 msgid "Old / unknown <br>empty properties" -msgstr "ID eiddo gwag anhysbys" +msgstr "Eiddo gwag hen anhysbys" #: templates/web/fiksgatami/nn/reports/index.html:12 #: templates/web/fiksgatami/reports/index.html:12 @@ -1894,56 +2119,62 @@ msgstr "Hen eiddo gwag,<br>cyflwr anhysbys" #: templates/web/default/admin/questionnaire.html:24 msgid "Old state" -msgstr "" +msgstr "Old state" #: templates/web/default/reports/index.html:20 -#, fuzzy +#: templates/web/fixmybarangay/reports/index.html:20 msgid "Older <br>returned to use" msgstr "Wedi'u hadfer i'w defnyddio ers amser" #: templates/web/default/reports/index.html:17 -#, fuzzy +#: templates/web/fixmybarangay/reports/index.html:17 msgid "Older <br>empty properties" msgstr "Adroddiadau hŷn o eiddo gwag" -#: templates/web/emptyhomes/reports/index.html:14 #: templates/web/fiksgatami/nn/reports/index.html:14 #: templates/web/fiksgatami/reports/index.html:14 msgid "Older returned to use" msgstr "Wedi'u hadfer i'w defnyddio ers amser" -#: templates/web/emptyhomes/reports/index.html:12 +#: templates/web/emptyhomes/reports/index.html:11 #: templates/web/fiksgatami/nn/reports/index.html:11 #: templates/web/fiksgatami/reports/index.html:11 msgid "Older empty property reports" msgstr "Adroddiadau hŷn o eiddo gwag" +#: perllib/FixMyStreet/Cobrand/Zurich.pm:115 #: templates/web/bromley/report/display.html:80 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/update_edit.html:19 -#: templates/web/default/dashboard/index.html:136 -#: templates/web/default/report/display.html:79 -#: templates/web/fixmystreet/report/display.html:74 +#: 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 "" +msgstr "Open" -#: templates/web/default/my/my.html:22 templates/web/fixmystreet/my/my.html:22 -#, fuzzy +#: templates/web/default/my/my.html:22 templates/web/fixmystreet/my/my.html:26 msgid "Open reports" -msgstr "Cuddio hen adroddiadau " +msgstr "Open reports" -#: templates/web/default/open311/index.html:3 -#, fuzzy +#: templates/web/default/open311/index.html:72 msgid "Open311 API for the mySociety reportemptyhomes.com server" -msgstr "Diweddariadau i'r eiddo gwag hwn, reportemptyhomes.com" +msgstr "Open311 API for the mySociety reportemptyhomes.com server" -#: templates/web/default/open311/index.html:13 +#: templates/web/default/open311/index.html:82 msgid "Open311 initiative web page" -msgstr "" +msgstr "Open311 initiative web page" -#: templates/web/default/open311/index.html:14 +#: templates/web/default/open311/index.html:83 msgid "Open311 specification" -msgstr "" +msgstr "Open311 specification" #: templates/web/default/alert/_list.html:58 #: templates/web/fixmystreet/alert/_list.html:60 @@ -1952,84 +2183,102 @@ msgstr "Neu eiddo gwag y rhoddwyd gwybod amdanynt i:" #: templates/web/default/alert/_list.html:33 #: templates/web/fixmystreet/alert/_list.html:36 -msgid "" -"Or you can subscribe to an alert based upon what ward or council you’" -"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:655 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:656 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:999 -#: perllib/FixMyStreet/DB/Result/Problem.pm:497 -#: perllib/FixMyStreet/DB/Result/Problem.pm:507 -#: perllib/FixMyStreet/DB/Result/Problem.pm:517 -#: perllib/FixMyStreet/DB/Result/Problem.pm:529 -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:329 -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:338 +msgid "Or you can subscribe to an alert based upon what ward or council you’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: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 "Arall" #: templates/web/default/footer.html:27 -msgid "" -"Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet" -"\">available on GitHub</a>." -msgstr "" +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:11 -#, fuzzy +#: templates/web/default/admin/list_updates.html:8 msgid "Owner" -msgstr "Arall" +msgstr "Owner" #: templates/web/default/errors/page_error_404_not_found.html:1 #: templates/web/default/errors/page_error_404_not_found.html:3 msgid "Page Not Found" -msgstr "" +msgstr "Page Not Found" -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 +#: templates/web/default/admin/body-form.html:31 +#: templates/web/zurich/admin/body-form.html:14 +msgid "Parent" +msgstr "Parent" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:51 msgid "Partial" -msgstr "" +msgstr "Partial" -#: templates/web/bromley/report/display.html:145 +#: templates/web/bromley/report/display.html:147 #: templates/web/bromley/report/new/fill_in_details_form.html:186 -#: templates/web/fixmystreet/auth/general.html:55 -#: templates/web/fixmystreet/report/display.html:157 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:197 -#, fuzzy +#: 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 "(dewisol)" +msgstr "Password (optional)" #: templates/web/default/auth/change_password.html:25 msgid "Password:" +msgstr "Password:" + +#: 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:133 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:194 -#, fuzzy +#: 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 "(dewisol)" +msgstr "Phone number (optional)" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:260 -#: templates/web/default/admin/report_edit.html:32 +#: 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 "Rhif ffôn:" -#: templates/web/bromley/report/display.html:109 +#: templates/web/bromley/report/display.html:111 #: templates/web/bromley/report/new/fill_in_details_form.html:104 -#: templates/web/fixmystreet/report/display.html:103 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:108 -#, fuzzy +#: 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 "Ffotograff:" +msgstr "Ffotograff" -#: templates/web/default/questionnaire/index.html:95 -#: templates/web/default/report/display.html:109 +#: templates/web/default/questionnaire/index.html:99 #: templates/web/default/report/new/fill_in_details_form.html:102 +#: templates/web/default/report/update-form.html:62 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:99 #: templates/web/fixmystreet/questionnaire/index.html:90 msgid "Photo:" msgstr "Ffotograff:" @@ -2038,38 +2287,39 @@ msgstr "Ffotograff:" msgid "Photos of recent nearby reports" msgstr "Ffotograffau o adroddiadau cyfagos diweddar" -#: templates/web/bromley/report/display.html:80 -#: templates/web/bromley/report/display.html:81 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:19 -#: templates/web/default/dashboard/index.html:136 -#: templates/web/default/dashboard/index.html:137 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:80 -#: templates/web/fixmystreet/report/display.html:74 -#: templates/web/fixmystreet/report/display.html:75 +#: 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" + +#: 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 "" +msgstr "Planned" #: templates/web/fixmystreet/questionnaire/index.html:44 -#, fuzzy -msgid "" -"Please <a class=\"tab_link\" href=\"#report\">take a look</a> at the updates " -"that have been left." -msgstr "Ewch i fwrw golwg ar y diweddariadau sydd wedi cael eu gadael." +msgid "Please <a class=\"tab_link\" href=\"#report\">take a look</a> at the updates that have been left." +msgstr "<a class=\"tab_link\" href=\"#report\">Ewch i fwrw golwg</a> ar y diweddariadau sydd wedi cael eu gadael." #: templates/web/default/report/new/notes.html:6 -#: templates/web/fixmystreet/report/new/notes.html:5 +#: templates/web/fixmystreet/report/new/notes.html:6 +#: templates/web/oxfordshire/report/new/notes.html:5 msgid "Please be polite, concise and to the point." -msgstr "" +msgstr "Please be polite, concise and to the point." #: templates/web/default/auth/change_password.html:12 #: templates/web/default/auth/change_password.html:17 msgid "Please check the passwords and try again" -msgstr "" +msgstr "Please check the passwords and try again" -#: templates/web/default/auth/token.html:17 -#, fuzzy +#: templates/web/default/auth/token.html:14 msgid "Please check your email" msgstr "Rhowch eich cyfeiriad e-bost" @@ -2077,71 +2327,87 @@ msgstr "Rhowch eich cyfeiriad e-bost" #: templates/web/default/auth/general.html:8 #: templates/web/fixmystreet/auth/general.html:15 #: templates/web/fixmystreet/auth/general.html:9 -#, fuzzy +#: templates/web/seesomething/auth/general.html:15 +#: templates/web/seesomething/auth/general.html:9 +#: templates/web/zurich/auth/general.html:3 +#: templates/web/zurich/auth/general.html:9 msgid "Please check your email address is correct" msgstr "Rhowch gyfeiriad e-bost dilys" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:819 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:826 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:845 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:884 -#: perllib/FixMyStreet/DB/Result/Problem.pm:347 -#: templates/web/default/js/validation_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 "Dewiswch gategori" -#: perllib/FixMyStreet/DB/Result/Problem.pm:353 +#: perllib/FixMyStreet/DB/Result/Problem.pm:387 msgid "Please choose a property type" msgstr "Dewiswch fath o eiddo" +#: templates/web/seesomething/js/translation_strings.html:6 +msgid "Please choose a transport category" +msgstr "Please choose a transport category" + +#: templates/web/seesomething/js/translation_strings.html:7 +msgid "Please choose an incident category" +msgstr "Please choose an incident category" + #: 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”" -msgstr "" +msgid "Please describe the exact location of the report. Example: “2 dumped mattresses outside Number 19 Stockwell Close”" +msgstr "Please describe the exact location of the report. Example: “2 dumped mattresses outside Number 19 Stockwell Close”" #: templates/web/default/contact/blurb.html:2 msgid "" -"Please do <strong>not</strong> report empty properties through this form; " -"messages go to\n" -"the team behind reportemptyhomes.com, not a council. To report an empty " -"property,\n" +"Please do <strong>not</strong> report empty properties through this form; messages go to\n" +"the team behind reportemptyhomes.com, not a council. To report an empty property,\n" "please <a href=\"/\">go to the front page</a> and follow the instructions." msgstr "" -"<strong>Peidiwch</strong> ag adrodd am eiddo gwag drwy gyfrwng y ffurflen " -"hon;\n" -"bydd y negeseuon yn mynd at y tîm sydd y tu ôl i reportemptyhomes.com, nid " -"at gyngor.\n" -"I roi gwybod am eiddo gwag <a href=\"/\">ewch i'r dudalen flaen</a> a " -"dilynwch y cyfarwyddiadau." +"<strong>Peidiwch</strong> ag adrodd am eiddo gwag drwy gyfrwng y ffurflen hon;\n" +"bydd y negeseuon yn mynd at y tîm sydd y tu ôl i reportemptyhomes.com, nid at gyngor.\n" +"I roi gwybod am eiddo gwag <a href=\"/\">ewch i'r dudalen flaen</a> a dilynwch y cyfarwyddiadau." #: templates/web/default/report/new/notes.html:7 -#: templates/web/fixmystreet/report/new/notes.html:6 -msgid "" -"Please do not be abusive — abusing your council devalues the service " -"for all users." -msgstr "" +#: templates/web/fixmystreet/report/new/notes.html:7 +#: templates/web/oxfordshire/report/new/notes.html:6 +msgid "Please do not be abusive — abusing your council devalues the service for all users." +msgstr "Please do not be abusive — abusing your council devalues the service for all users." -#: perllib/FixMyStreet/DB/Result/Comment.pm:146 -#: templates/web/default/js/validation_strings.html:2 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:46 +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: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 -#, fuzzy +#: templates/web/default/js/translation_strings.html:19 msgid "Please enter a password" -msgstr "Ychwanegwch neges" +msgstr "Please enter a password" #: perllib/FixMyStreet/App/Controller/Contact.pm:97 -#: perllib/FixMyStreet/DB/Result/Problem.pm:322 -#: templates/web/default/js/validation_strings.html:3 +#: 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/DB/Result/User.pm:104 -#: templates/web/default/js/validation_strings.html:12 -#: templates/web/default/js/validation_strings.html:16 +#: 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 "Cofnodwch gyfeiriad e-bost dilys" @@ -2150,117 +2416,143 @@ 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:325 -#: templates/web/default/js/validation_strings.html:4 +#: 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" #: perllib/FixMyStreet/App/Controller/Contact.pm:96 -#: perllib/FixMyStreet/DB/Result/User.pm:101 +#: 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/validation_strings.html:11 -#: templates/web/default/js/validation_strings.html:15 +#: 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 "Cofnodwch eich cyfeiriad e-bost" #: templates/web/bromley/report/new/fill_in_details_form.html:149 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:146 -#, fuzzy +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:151 +#: templates/web/seesomething/report/new/fill_in_details_form.html:85 +#: templates/web/zurich/report/new/fill_in_details_form.html:92 msgid "Please enter your email address" msgstr "Cofnodwch eich cyfeiriad e-bost" -#: templates/web/default/js/validation_strings.html:19 -#, fuzzy +#: 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:340 -#: templates/web/default/js/validation_strings.html:7 -#, fuzzy -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/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:143 -#: perllib/FixMyStreet/DB/Result/Problem.pm:333 -#: perllib/FixMyStreet/DB/Result/User.pm:97 -#: templates/web/default/js/validation_strings.html:6 +#: 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/validation_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 "Cofnodwch eich enw" +msgstr "Please enter your second name" -#: templates/web/default/js/validation_strings.html:18 -#, fuzzy +#: templates/web/default/js/translation_strings.html:24 +#: templates/web/oxfordshire/js/translation_strings.html:18 msgid "Please enter your title" -msgstr "Cofnodwch eich cyfeiriad e-bost" +msgstr "Please enter your title" + +#: 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 "Please feel free to <a href=\"%s\">sign in again</a>, or go back to the <a href=\"/\">front page</a>." #: templates/web/emptyhomes/report/new/fill_in_details_text.html:1 -#, fuzzy msgid "" "Please fill in details of the empty property below, saying what type of\n" "property it is e.g. an empty home, block of flats, office etc. Tell us\n" -"something about its condition and any other information you feel is " -"relevant.\n" -"There is no need for you to give the exact address. Please be polite, " -"concise\n" -"and to the point; writing your message entirely in block capitals makes it " -"hard\n" +"something about its condition and any other information you feel is relevant.\n" +"There is no need for you to give the exact address. Please be polite, concise\n" +"and to the point; writing your message entirely in block capitals makes it hard\n" "to read, as does a lack of punctuation." msgstr "" -"Llenwch fanylion yr eiddo gwag isod, gan ddweud pa fath o eiddo ydyw\n" -"e.e. tŷ gwag, bloc o fflatiau, swyddfa ac ati. Dywedwch rywbeth wrthym\n" -"am ei gyflwr ac unrhyw wybodaeth arall sy'n berthnasol yn eich barn chi.\n" -"Nid oes angen i chi roi'r union gyfeiriad. Byddwch yn gwrtais, yn gryno\n" -"ac i'r pwynt; mae ysgrifennu eich neges yn gyfan gwbl mewn priflythrennau\n" -"yn ei gwneud hi'n anodd ei darllen, fel y mae diffyg atalnodi.\n" +"Llenwch fanylion yr eiddo gwag isod, gan ddweud pa fath o eiddo ydyw, e.e. cartref\n" +" gwag, bloc o fflatiau, swyddfa ac yn y blaen. Rhowch rywfaint o wybodaeth i ni am ei\n" +" gyflwr ac unrhyw beth arall sy’n berthnasol yn eich barn chi. Nid oes angen i chi roi’r\n" +" union gyfeiriad. Byddwch yn gwrtais, yn gryno ac yn bwrpasol; mae ysgrifennu eich \n" +" neges gyfan gan ddefnyddio priflythrennau yn ei gwneud hi’n anodd ei darllen, felly \n" +" hefyd diffyg atalnodi." #: templates/web/default/report/new/fill_in_details_text.html:1 #: templates/web/default/report/new/fill_in_details_text.html:11 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:10 #: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 -#: templates/web/fixmystreet/report/new/fill_in_details_text.html:11 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:8 msgid "Please fill in details of the empty property below." msgstr "Llenwch fanylion yr eiddo gwag isod." +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:3 +msgid "" +"Please fill in details of the empty property below. Leave as much detail as you can, \n" +"and if possible describe the exact location of\n" +"the empty property (e.g. if there is a streetlight number or road name)." +msgstr "" +"Please fill in details of the empty property below. Leave as much detail as you can, \n" +"and if possible describe the exact location of\n" +"the empty property (e.g. if there is a streetlight number or road name)." + #: templates/web/default/report/new/fill_in_details_text.html:1 #: templates/web/default/report/new/fill_in_details_text.html:3 msgid "" -"Please fill in details of the empty property below. The council won't be " -"able\n" -"to help unless you leave as much detail as you can, so please describe the " -"exact location of\n" -"the empty property (e.g. on a wall), what it is, how long it has been there, " -"a description (and a\n" +"Please fill in details of the empty property below. The council won't be able\n" +"to help unless you leave as much detail as you can, so please describe the exact location of\n" +"the empty property (e.g. on a wall), what it is, how long it has been there, a description (and a\n" "photo of the empty property if you have one), etc." msgstr "" +"Please fill in details of the empty property below. The council won't be able\n" +"to help unless you leave as much detail as you can, so please describe the exact location of\n" +"the empty property (e.g. on a wall), what it is, how long it has been there, a description (and a\n" +"photo of the empty property if you have one), etc." -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:68 -#, fuzzy +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:70 +#: templates/web/seesomething/report/new/fill_in_details_form.html:20 +#: templates/web/zurich/report/new/fill_in_details_form.html:46 msgid "Please fill in details of the empty property." -msgstr "Llenwch fanylion yr eiddo gwag isod." +msgstr "Llenwch fanylion yr eiddo gwag isod" #: templates/web/bromley/report/new/fill_in_details_form.html:28 #: templates/web/default/report/new/fill_in_details_form.html:27 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:34 -#, fuzzy -msgid "" -"Please fill in the form below with details of the empty property, and " -"describe the location as precisely as possible in the details box." -msgstr "" -"Llenwch y ffurflen isod gyda manylion yr eiddo gwag,\n" -"a disgrifiwch y lleoliad mor fanwl ag y bo modd yn y blwch manylion." +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:26 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:35 +#: templates/web/zurich/report/new/fill_in_details_form.html:20 +msgid "Please fill in the form below with details of the empty property, and describe the location as precisely as possible in the details box." +msgstr "Llenwch y ffurflen isod gyda manylion yr eiddo gwag, a disgrifiwch y lleoliad mor fanwl ag y bo modd yn y blwch manylion." -#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:241 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:243 msgid "Please indicate whether you'd like to receive another questionnaire" msgstr "Nodwch a fyddech chi'n hoffi derbyn holiadur arall" @@ -2268,49 +2560,41 @@ msgstr "Nodwch a fyddech chi'n hoffi derbyn holiadur arall" msgid "Please note that updates are not sent to the council." msgstr "Sylwer nad yw diweddariadau'n cael eu hanfon at y cyngor." -#: templates/web/default/report/display.html:56 -msgid "" -"Please note that updates are not sent to the council. If you leave your name " -"it will be public. Your information will only be used in accordance with our " -"<a href=\"/faq#privacy\">privacy policy</a>" -msgstr "" +#: templates/web/default/report/update-form.html:7 +msgid "Please note that updates are not sent to the council. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgstr "Please note that updates are not sent to the council. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" #: templates/web/barnet/report/updates-sidebar-notes.html:1 -msgid "" -"Please note that updates are not sent to the relevant department. If you " -"leave your name it will be public. Your information will only be used in " -"accordance with our <a href=\"/faq#privacy\">privacy policy</a>" -msgstr "" +msgid "Please note that updates are not sent to the relevant department. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgstr "Please note that updates are not sent to the relevant department. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" #: templates/web/bromley/report/new/fill_in_details_form.html:23 #: templates/web/default/report/new/fill_in_details_form.html:5 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:25 -msgid "" -"Please note your report has <strong>not yet been sent</strong>. Choose a " -"category and add further information below, then submit." -msgstr "" +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:5 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:26 +#: templates/web/zurich/report/new/fill_in_details_form.html:11 +msgid "Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit." +msgstr "Sylwch, <strong>nid yw eich adroddiad wedi’i anfon eto.</strong> Dewiswch gategori ac ychwanegwch wybodaeth bellach isod, yna’i gyflwyno." #: templates/web/default/report/new/notes.html:1 +#: templates/web/fixmybarangay/report/new/notes.html:1 #: templates/web/fixmystreet/report/new/notes.html:1 +#: templates/web/oxfordshire/report/new/notes.html:1 msgid "Please note:" -msgstr "" +msgstr "Please note:" -#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:244 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:246 msgid "Please provide some explanation as to why you're reopening this report" msgstr "Rhowch ychydig o esboniad pam rydych yn ailagor yr adroddiad hwn" -#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:251 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:253 msgid "Please provide some text as well as a photo" msgstr "Rhowch rywfaint o destun yn ogystal â ffotograff" #: perllib/FixMyStreet/App/Controller/Questionnaire.pm:116 -#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:237 -msgid "" -"Please say whether you've ever reported an empty property to your council " -"before" -msgstr "" -"Rhowch wybod a ydych chi wedi rhoi gwybod i'ch cyngor am eiddo gwag erioed " -"o'r blaen" +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:239 +msgid "Please say whether you've ever reported an empty property to your council before" +msgstr "Rhowch wybod a ydych chi wedi rhoi gwybod i'ch cyngor am eiddo gwag erioed o'r blaen" #: perllib/FixMyStreet/App/Controller/Alert.pm:80 msgid "Please select the feed you want" @@ -2320,10 +2604,9 @@ msgstr "Dewiswch y porthiant rydych chi eisiau ei gael" msgid "Please select the type of alert you want" msgstr "Dewiswch y math o hysbysiad rydych chi eisiau ei gael" -#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:233 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:235 msgid "Please state whether or not the empty property has been returned to use" -msgstr "" -"Cofnodwch a yw'r eiddo gwag wedi cael ei adfer i'w ddefnyddio, ai peidio" +msgstr "Cofnodwch a yw'r eiddo gwag wedi cael ei adfer i'w ddefnyddio, ai peidio" #: templates/web/default/questionnaire/index.html:50 msgid "Please take a look at the updates that have been left." @@ -2334,174 +2617,201 @@ msgid "Please upload a JPEG image only" msgstr "Dim ond llun JPEG y dylech lwytho i fyny." #: perllib/FixMyStreet/App/Controller/Photo.pm:183 -#, fuzzy msgid "Please upload a JPEG image only\n" -msgstr "Dim ond llun JPEG y dylech lwytho i fyny." +msgstr "Please upload a JPEG image only\n" #: perllib/FixMyStreet/App/Controller/Contact.pm:98 msgid "Please write a message" msgstr "Ysgrifennwch neges" #: templates/web/bromley/report/display.html:70 -#: templates/web/fixmystreet/report/display.html:69 -#, fuzzy +#: templates/web/fixmystreet/report/update-form.html:23 msgid "Please write your update here" -msgstr "Rhowch eich enw" +msgstr "Please write your update here" -#: templates/web/bromley/report/display.html:121 -#: templates/web/bromley/report/display.html:149 -#: templates/web/bromley/report/display.html:161 +#: templates/web/bromley/report/display.html:123 +#: templates/web/bromley/report/display.html:151 +#: templates/web/bromley/report/display.html:163 #: templates/web/default/contact/index.html:93 -#: templates/web/default/report/display.html:119 -#: templates/web/default/report/display.html:156 -#: templates/web/default/report/display.html:178 -#: templates/web/fixmystreet/contact/index.html:93 -#: templates/web/fixmystreet/report/display.html:115 -#: templates/web/fixmystreet/report/display.html:139 -#: templates/web/fixmystreet/report/display.html:161 +#: templates/web/default/report/update-form.html:109 +#: templates/web/default/report/update-form.html:131 +#: templates/web/default/report/update-form.html:72 +#: templates/web/fixmystreet/contact/index.html:105 +#: templates/web/fixmystreet/report/update-form.html:123 +#: templates/web/fixmystreet/report/update-form.html:71 +#: templates/web/fixmystreet/report/update-form.html:95 msgid "Post" msgstr "Postio" -#: templates/web/default/report/updates.html:14 +#: templates/web/default/report/updates.html:15 msgid "Posted anonymously at %s" msgstr "Cofnodwyd yn ddi-enw am %s" -#: templates/web/default/report/updates.html:21 -#, fuzzy +#: templates/web/default/report/updates.html:22 msgid "Posted by %s (<strong>%s</strong>) at %s" -msgstr "Cofnodwyd gan %s am %s" +msgstr "Postiwyd gan%s (<strong>%s</strong>) yn %s" -#: templates/web/default/report/updates.html:23 +#: templates/web/default/report/updates.html:24 msgid "Posted by %s at %s" msgstr "Cofnodwyd gan %s am %s" +#: templates/web/default/pagination.html:7 +msgid "Previous" +msgstr "Previous" + +#: 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 "Private" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:108 +msgid "Private information (not shown on site)" +msgstr "Gwybodaeth breifat (ni chaiff ei dangos ar y safle)" + #: templates/web/default/maps/openlayers.html:85 msgid "Empty property" msgstr "Eiddo gwag" -#: templates/web/default/admin/timeline.html:24 -#, fuzzy +#: templates/web/default/admin/timeline.html:22 msgid "Empty property %d created" -msgstr "Eiddo gwag" +msgstr "Empty property %d created" -#: templates/web/default/admin/timeline.html:26 -#, fuzzy +#: templates/web/default/admin/timeline.html:24 msgid "Empty property %s confirmed" -msgstr "Ffurflen manylion eiddo gwag" +msgstr "Empty property %s confirmed" -#: templates/web/default/admin/timeline.html:28 -#, fuzzy +#: templates/web/default/admin/timeline.html:26 msgid "Empty property %s sent to council %s" -msgstr "Eiddo gwag yn %s" +msgstr "Empty property %s sent to council %s" -#: templates/web/default/admin/index.html:28 -#, fuzzy +#: templates/web/default/admin/index.html:36 +#: templates/web/zurich/admin/index.html:9 msgid "Empty property breakdown by state" -msgstr "ni fydd eich eiddo gwag yn cael ei bostio" +msgstr "Empty property breakdown by state" -#: perllib/FixMyStreet/App/Controller/Admin.pm:819 -#, fuzzy +#: perllib/FixMyStreet/App/Controller/Admin.pm:950 msgid "Empty property marked as open." -msgstr "Ffurflen manylion eiddo gwag" +msgstr "Ewch i fwrw golwg " #: templates/web/default/admin/questionnaire.html:21 msgid "Empty property state change based on survey results" -msgstr "" +msgstr "Empty property state change based on survey results" -#: templates/web/default/admin/list_flagged.html:5 -#, fuzzy +#: templates/web/default/admin/flagged.html:10 msgid "Empty properties" msgstr "Eiddo gwag" -#: templates/web/default/around/display_location.html:81 +#: templates/web/default/around/_updates.html:1 msgid "Empty properties in this area" msgstr "Eiddo gwag yn yr ardal hon" #: templates/web/bromley/report/display.html:31 -#: templates/web/fixmystreet/around/display_location.html:98 -#: templates/web/fixmystreet/report/display.html:24 -#, fuzzy +#: templates/web/fixmystreet/around/tabbed_lists.html:4 +#: templates/web/fixmystreet/report/display.html:46 msgid "Empty properties nearby" -msgstr "Mwy o eiddo gwag cyfagos" +msgstr "Empty properties nearby" -#: templates/web/fixmystreet/around/display_location.html:97 -#, fuzzy +#: templates/web/fixmystreet/around/tabbed_lists.html:3 +#: templates/web/fixmystreet/report/display.html:44 msgid "Empty properties on the map" msgstr "Eiddo gwag yn yr ardal hon" #: db/alert_types.pl:14 -#, fuzzy -msgid "" -"Empty properties recently reported returned to use on reportemptyhomes.com" -msgstr "" -"Eiddo y cafwyd adroddiadau diweddar ar reportemptyhomes.com eu bod wedi cael " -"eu hadfer i'w defnyddio" +msgid "Empty properties recently reported returned to use on reportemptyhomes.com" +msgstr "Eiddo y cafwyd adroddiadau diweddar ar reportemptyhomes.com eu bod wedi cael eu hadfer i'w defnyddio" #: templates/web/default/alert/_list.html:19 #: templates/web/fixmystreet/alert/_list.html:21 -#, fuzzy msgid "Empty properties within %.1fkm of this location" -msgstr "Eiddo gwag o fewn %skm o'r lleoliad hwn" +msgstr "Empty properties within %.1fkm of this location" -#: perllib/FixMyStreet/Cobrand/Default.pm:609 -#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:95 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:162 -#: perllib/FixMyStreet/Cobrand/UK.pm:240 +#: perllib/FixMyStreet/Cobrand/Default.pm:626 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:109 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:155 +#: perllib/FixMyStreet/Cobrand/UK.pm:228 msgid "Empty properties within %s" msgstr "Eiddo gwag yn %s" -#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:103 -#: perllib/FixMyStreet/Cobrand/UK.pm:254 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:117 +#: perllib/FixMyStreet/Cobrand/UK.pm:242 msgid "Empty properties within %s ward" msgstr "Eiddo gwag yn ward %s" -#: templates/web/default/reports/council.html:0 -#: templates/web/default/reports/council.html:29 +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:24 msgid "Empty properties within %s, reportemptyhomes.com" msgstr "Eiddo gwag o fewn %s, reportemptyhomes.com" #: templates/web/default/alert/_list.html:40 +#: templates/web/fixmybarangay/alert/_list.html:13 #: templates/web/fixmystreet/alert/_list.html:42 msgid "Empty properties within the boundary of:" msgstr "Eiddo gwag o fewn ffiniau:" #: db/alert_types_eha.pl:8 msgid "Properties recently reported as put back to use on reportemptyhomes.com" -msgstr "" -"Eiddo y cafwyd adroddiadau diweddar ar reportemptyhomes.com eu bod wedi cael " -"eu hadfer i'w defnyddio" +msgstr "Eiddo y cafwyd adroddiadau diweddar ar reportemptyhomes.com eu bod wedi cael eu hadfer i'w defnyddio" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:617 +#: templates/web/default/admin/report_edit.html:32 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:115 +msgid "Property address:" +msgstr "Cyfeiriad yr eiddo:" + +#: templates/web/default/report/new/category.html:8 msgid "Property type:" msgstr "Math o eiddo:" #: templates/web/bromley/report/new/fill_in_details_form.html:52 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:62 -#, fuzzy +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:64 msgid "Provide a title" -msgstr "Rhowch ddiweddariad" +msgstr "Provide a title" #: templates/web/bromley/report/display.html:57 -#: templates/web/default/report/display.html:51 -#: templates/web/fixmystreet/report/display.html:50 +#: templates/web/default/report/update-form.html:3 +#: templates/web/fixmystreet/report/update-form.html:4 msgid "Provide an update" msgstr "Rhowch ddiweddariad" +#: 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 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/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 empty properties, leave updates and manage your reports." -msgstr "" +msgid "Providing a password is optional, but doing so will allow you to more easily report future empty properties, leave updates and manage your reports." +msgstr "Providing a password is optional, but doing so will allow you to more easily report future empty properties, leave updates and manage your reports." -#: templates/web/bromley/report/display.html:142 -#: templates/web/default/report/display.html:175 +#: templates/web/bromley/report/display.html:144 #: templates/web/default/report/new/fill_in_details_form.html:173 -#: templates/web/fixmystreet/report/display.html:154 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:191 -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 "" +#: templates/web/default/report/update-form.html:128 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:202 +#: templates/web/fixmystreet/report/update-form.html:116 +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:60 +#: templates/web/default/admin/body.html:73 +msgid "Public" +msgstr "Public" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:44 +msgid "Public information (shown on site)" +msgstr "Gwybodaeth gyhoeddus (caiff ei dangos ar y safle)" + +#: 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:80 +#: templates/web/zurich/admin/stats.html:38 +msgid "Publish photo" +msgstr "Publish photo" + +#: templates/web/zurich/admin/report_edit.html:222 +msgid "Publish the response" +msgstr "Publish the response" #: templates/web/default/questionnaire/completed.html:1 #: templates/web/default/questionnaire/completed.html:2 @@ -2515,17 +2825,15 @@ msgstr "" msgid "Questionnaire" msgstr "Holiadur" -#: templates/web/default/admin/timeline.html:32 -#, fuzzy +#: templates/web/default/admin/timeline.html:30 msgid "Questionnaire %d answered for empty property %d, %s to %s" -msgstr "Llenwyd yr holiadur gan yr unigolyn a roddodd wybod am yr eiddo gwag" +msgstr "Questionnaire %d answered for empty property %d, %s to %s" -#: templates/web/default/admin/timeline.html:30 -#, fuzzy +#: templates/web/default/admin/timeline.html:28 msgid "Questionnaire %d sent for empty property %d" -msgstr "Llenwyd yr holiadur gan yr unigolyn a roddodd wybod am yr eiddo gwag" +msgstr "Questionnaire %d sent for empty property %d" -#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:190 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:192 msgid "Questionnaire filled in by empty property reporter" msgstr "Llenwyd yr holiadur gan yr unigolyn a roddodd wybod am yr eiddo gwag" @@ -2533,38 +2841,33 @@ msgstr "Llenwyd yr holiadur gan yr unigolyn a roddodd wybod am yr eiddo gwag" #: templates/web/default/alert/_list.html:21 #: templates/web/default/around/display_location.html:1 #: templates/web/default/around/display_location.html:3 -#: templates/web/default/report/display.html:42 +#: templates/web/default/report/display.html:46 #: templates/web/default/reports/_rss.html:1 #: templates/web/fixmystreet/alert/_list.html:22 #: templates/web/fixmystreet/alert/updates.html:9 -#: templates/web/fixmystreet/around/display_location.html:1 -#: templates/web/fixmystreet/around/display_location.html:3 -#: templates/web/fixmystreet/report/display.html:30 +#: templates/web/fixmystreet/report/display.html:61 msgid "RSS feed" msgstr "Porthiant RSS" -#: perllib/FixMyStreet/Cobrand/UK.pm:283 perllib/FixMyStreet/Cobrand/UK.pm:295 -#, fuzzy +#: perllib/FixMyStreet/Cobrand/UK.pm:271 perllib/FixMyStreet/Cobrand/UK.pm:283 msgid "RSS feed for %s" -msgstr "Porthiant RSS %s" +msgstr "RSS feed for %s" -#: perllib/FixMyStreet/Cobrand/UK.pm:289 perllib/FixMyStreet/Cobrand/UK.pm:301 -#, fuzzy +#: perllib/FixMyStreet/Cobrand/UK.pm:277 perllib/FixMyStreet/Cobrand/UK.pm:289 msgid "RSS feed for %s ward, %s" -msgstr "Porthiant RSS %s" +msgstr "RSS feed for %s ward, %s" -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:178 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:186 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:196 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:204 -#: perllib/FixMyStreet/Cobrand/UK.pm:309 perllib/FixMyStreet/Cobrand/UK.pm:321 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:171 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:179 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:189 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:197 +#: perllib/FixMyStreet/Cobrand/UK.pm:297 perllib/FixMyStreet/Cobrand/UK.pm:309 msgid "RSS feed of %s" msgstr "Porthiant RSS %s" -#: perllib/FixMyStreet/Cobrand/UK.pm:314 perllib/FixMyStreet/Cobrand/UK.pm:326 -#, fuzzy +#: perllib/FixMyStreet/Cobrand/UK.pm:302 perllib/FixMyStreet/Cobrand/UK.pm:314 msgid "RSS feed of %s, within %s ward" -msgstr "Porthiant RSS %s" +msgstr "RSS feed of %s, within %s ward" #: templates/web/default/alert/_list.html:21 #: templates/web/fixmystreet/alert/_list.html:22 @@ -2575,131 +2878,129 @@ msgstr "Porthiant RSS o eiddo gwag sydd gerllaw" msgid "RSS feed of empty properties in this %s" msgstr "Porthiant RSS o eiddo gwag yn yr %s hwn" -#: perllib/FixMyStreet/Cobrand/Default.pm:610 -#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:96 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:161 -#: perllib/FixMyStreet/Cobrand/UK.pm:247 -#, fuzzy +#: perllib/FixMyStreet/Cobrand/Default.pm:627 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:110 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:154 +#: perllib/FixMyStreet/Cobrand/UK.pm:235 msgid "RSS feed of empty properties within %s" msgstr "Porthiant RSS o eiddo gwag yn yr %s hwn" -#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:102 -#: perllib/FixMyStreet/Cobrand/UK.pm:253 -#, fuzzy +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:116 +#: perllib/FixMyStreet/Cobrand/UK.pm:241 msgid "RSS feed of empty properties within %s ward" msgstr "Porthiant RSS o eiddo gwag yn yr %s hwn" #: templates/web/default/around/display_location.html:1 #: templates/web/default/around/display_location.html:4 -#: templates/web/fixmystreet/around/display_location.html:1 -#: templates/web/fixmystreet/around/display_location.html:4 msgid "RSS feed of recent local empty properties" msgstr "Porthiant RSS o eiddo gwag lleol diweddar" #: templates/web/bromley/report/display.html:37 -#: templates/web/default/report/display.html:42 +#: templates/web/default/report/display.html:46 #: templates/web/fixmystreet/alert/updates.html:9 -#: templates/web/fixmystreet/report/display.html:30 +#: templates/web/fixmystreet/report/display.html:61 msgid "RSS feed of updates to this empty property" msgstr "Porthiant RSS o ddiweddariadau i'r eiddo gwag hwn" #: templates/web/bromley/report/display.html:39 #: templates/web/default/alert/updates.html:9 -#: templates/web/default/report/display.html:33 +#: templates/web/default/report/display.html:37 #: templates/web/fixmystreet/alert/updates.html:14 -#: templates/web/fixmystreet/report/display.html:32 +#: templates/web/fixmystreet/report/display.html:63 msgid "Receive email when updates are left on this empty property." -msgstr "" -"Derbyn neges e-bost pan fydd diweddariadau'n cael eu rhoi am yr eiddo gwag " -"hwn." +msgstr "Derbyn neges e-bost pan fydd diweddariadau'n cael eu rhoi am yr eiddo gwag hwn." #: templates/web/default/around/display_location.html:0 -#: templates/web/default/around/display_location.html:34 -#: templates/web/fixmystreet/around/display_location.html:0 -#: templates/web/fixmystreet/around/display_location.html:34 +#: templates/web/default/around/display_location.html:32 msgid "Recent local empty properties, reportemptyhomes.com" msgstr "Eiddo gwag lleol diweddar, reportemptyhomes.com" #: templates/web/default/reports/index.html:19 -#, fuzzy +#: templates/web/fixmybarangay/reports/index.html:19 msgid "Recently <br>returned to use" msgstr "Wedi'u hadfer i'w defnyddio'n ddiweddar" -#: templates/web/emptyhomes/reports/index.html:13 #: templates/web/fiksgatami/nn/reports/index.html:13 #: templates/web/fiksgatami/reports/index.html:13 msgid "Recently returned to use" msgstr "Wedi'u hadfer i'w defnyddio'n ddiweddar" -#: templates/web/default/index.html:50 templates/web/fixmystreet/index.html:62 +#: templates/web/default/index.html:35 templates/web/emptyhomes/index.html:24 +#: templates/web/fixmystreet/index.html:45 msgid "Recently reported empty properties" msgstr "Eiddo gwag yr adroddwyd amdanynt yn ddiweddar" #: templates/web/default/report/new/notes.html:9 -#: templates/web/fixmystreet/report/new/notes.html:8 -msgid "" -"Remember that reportemptyhomes.com is primarily for reporting physical empty " -"properties that can be returned to use. If your empty property is not " -"appropriate for submission via this site remember that you can contact your " -"council directly using their own website." -msgstr "" +#: templates/web/fixmystreet/report/new/notes.html:10 +msgid "Remember that reportemptyhomes.com is primarily for reporting physical empty properties that can be returned to use. If your empty property is not appropriate for submission via this site remember that you can contact your council directly using their own website." +msgstr "Cofiwch mai prif ddiben reportemptyhomes.com yw rhoi gwybod am eiddo gwag a allai gael eu hadfer i’w defnyddio eto. Os nad yw eich eiddo gwag yn briodol i’w gyflwyno drwy’r wefan hon, cofiwch y gallwch gysylltu â’ch cyngor yn uniongyrchol gan ddefnyddio’u gwefan eu hunain." + +#: templates/web/fixmybarangay/report/new/notes.html:9 +msgid "Remember that, for the pilot project, FixMyBarangay is only for reporting potholes and streetlights in bgy. Luz or Basak San Nicolas." +msgstr "Remember that, for the pilot project, FixMyBarangay is only for reporting potholes and streetlights in bgy. Luz or Basak San Nicolas." #: templates/web/default/admin/report_blocks.html:16 msgid "Remove flag" -msgstr "" +msgstr "Remove flag" -#: templates/web/default/admin/report_edit.html:53 -#: templates/web/default/admin/update_edit.html:48 +#: templates/web/default/admin/report_edit.html:89 +#: templates/web/default/admin/update_edit.html:57 +#: templates/web/zurich/admin/update_edit.html:35 msgid "Remove photo (can't be undone!)" -msgstr "" +msgstr "Remove photo (can't be undone!)" -#: templates/web/emptyhomes/header.html:10 +#: templates/web/emptyhomes/header.html:12 msgid "Report Empty Homes" -msgstr "Adrodd am Eiddo Gwag" +msgstr "Rhoi gwybod am eiddo gwag" #: templates/web/barnet/footer.html:16 templates/web/bromley/footer.html:17 -#: templates/web/default/footer.html:7 templates/web/emptyhomes/header.html:27 +#: 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:45 +#: 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 property" -msgstr "Rhoi gwybod am eiddo" +msgstr "Rhoi gwybod am eiddo gwag" #: templates/web/bromley/report/display.html:28 -#: templates/web/fixmystreet/report/display.html:22 -#, fuzzy +#: templates/web/fixmystreet/report/display.html:35 msgid "Report abuse" -msgstr "Adroddiadau" +msgstr "Report abuse" -#: templates/web/emptyhomes/index.html:37 -#, fuzzy -msgid "Report empty properties" -msgstr "Adrodd am eiddo gwag a gweld y rhain" +#: templates/web/default/report_created.html:1 +#: templates/web/default/report_created.html:3 +#: templates/web/seesomething/report_created.html:0 +#: templates/web/seesomething/report_created.html:8 +msgid "Report created" +msgstr "Report created" -#: perllib/FixMyStreet/App/Controller/Rss.pm:277 -#, fuzzy +#: perllib/FixMyStreet/App/Controller/Rss.pm:295 msgid "Report on %s" -msgstr "Adroddiadau" +msgstr "Report on %s" -#: templates/web/default/index.html:15 -#: templates/web/fixmystreet/around/postcode_form.html:6 +#: templates/web/default/index.html:14 templates/web/emptyhomes/index.html:5 +#: templates/web/fixmystreet/around/intro.html:1 +#: templates/web/stevenage/around/intro.html:1 +#: templates/web/zurich/around/intro.html:1 msgid "Report and view empty properties" msgstr "Adrodd am eiddo gwag a gweld y rhain" #: templates/web/default/my/my.html:74 -#, fuzzy msgid "Reported %s" -msgstr "Adroddiadau" +msgstr "Reported %s" #: templates/web/default/my/my.html:72 -#, fuzzy msgid "Reported %s, to %s" -msgstr "Adroddwyd gan %s am %s" +msgstr "Reported %s, to %s" -#: perllib/FixMyStreet/DB/Result/Problem.pm:512 +#: perllib/FixMyStreet/DB/Result/Problem.pm:559 #: templates/web/default/contact/index.html:45 -#: templates/web/fixmystreet/contact/index.html:46 +#: templates/web/fixmystreet/contact/index.html:58 msgid "Reported anonymously at %s" msgstr "Adroddwyd yn ddi-enw am %s" @@ -2709,319 +3010,351 @@ msgstr "Adroddwyd yn ddi-enw am %s" msgid "Reported before" msgstr "Wedi adrodd o'r blaen" -#: perllib/FixMyStreet/DB/Result/Problem.pm:504 -msgid "Reported by %s anonymously at %s" -msgstr "Adroddwyd gan %s yn ddi-enw am %s" - -#: perllib/FixMyStreet/DB/Result/Problem.pm:535 +#: perllib/FixMyStreet/DB/Result/Problem.pm:582 #: templates/web/default/contact/index.html:47 -#: templates/web/fixmystreet/contact/index.html:48 +#: 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:526 -msgid "Reported by %s by %s at %s" -msgstr "Adroddwyd gan %s trwy %s am %s" - -#: perllib/FixMyStreet/DB/Result/Problem.pm:500 -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" +#: 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:520 -msgid "Reported by %s in the %s category by %s at %s" -msgstr "Adroddwyd gan %s yn y categori %s trwy %s am %s" - -#: perllib/FixMyStreet/DB/Result/Problem.pm:508 +#: 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:530 +#: 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: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 an empty property" msgstr "Adrodd am eiddo gwag" -#: templates/web/default/around/display_location.html:95 +#: 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: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 +msgid "Reports awaiting approval" +msgstr "Reports awaiting approval" + +#: templates/web/default/around/tabbed_lists.html:3 msgid "Reports on and around the map" msgstr "Adroddiadau ar ac yng nghyffiniau'r map" -#: templates/web/default/admin/report_edit.html:35 -#, fuzzy +#: templates/web/zurich/admin/index-sdm.html:10 +msgid "Reports published" +msgstr "Reports published" + +#: templates/web/default/admin/report_edit.html:71 msgid "Resend report" -msgstr "Cuddio hen adroddiadau " +msgstr "Resend report" -#: perllib/FixMyStreet/Geocode/OSM.pm:166 -msgid "" -"Road operator for this named road (derived from road reference number and " -"type): %s" -msgstr "" +#: templates/web/default/js/translation_strings.html:28 +#: templates/web/oxfordshire/js/translation_strings.html:22 +msgid "Right place?" +msgstr "Right place?" -#: perllib/FixMyStreet/Geocode/OSM.pm:163 -msgid "Road operator for this named road (from OpenStreetMap): %s" -msgstr "" +#: perllib/FixMyStreet/Geocode/OSM.pm:173 +msgid "Road operator for this named road (derived from road reference number and type): %s" +msgstr "Road operator for this named road (derived from road reference number and type): %s" -#: templates/web/default/admin/council_edit.html:35 +#: perllib/FixMyStreet/Geocode/OSM.pm:170 +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: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 "Rotate Left" + +#: 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 "Rotate Right" + +#: templates/web/default/admin/body_edit.html:76 msgid "Save changes" -msgstr "" +msgstr "Save changes" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1027 -#, fuzzy -msgid "Search Abuse" -msgstr "Adroddiadau cryno" - -#: templates/web/default/admin/search_abuse.html:1 -msgid "Search Abuse Table" -msgstr "" - -#: perllib/FixMyStreet/App/Controller/Admin.pm:1023 -#: templates/web/default/admin/list_flagged.html:1 -#: templates/web/default/admin/search_reports.html:1 -#, fuzzy +#: templates/web/default/admin/reports.html:1 +#: templates/web/zurich/admin/reports.html:1 msgid "Search Reports" -msgstr "Adroddiadau cryno" +msgstr "Search Reports" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1026 -#: templates/web/default/admin/search_users.html:1 -#, fuzzy +#: templates/web/default/admin/users.html:1 msgid "Search Users" -msgstr "Adroddiadau cryno" +msgstr "Search Users" + +#: templates/web/zurich/header.html:77 +msgid "Search reports" +msgstr "Search reports" -#: templates/web/default/admin/search_abuse.html:4 -#: templates/web/default/admin/search_reports.html:5 -#: templates/web/default/admin/search_users.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 "Search:" + +#: 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:71 +#: templates/web/zurich/admin/body-form.html:26 +msgid "Select an area" +msgstr "Select an area" + #: templates/web/default/alert/_list.html:8 #: templates/web/fixmystreet/alert/_list.html:10 -#, fuzzy -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,\n" -"neu rhowch eich cyfeiriad e-bost i danysgrifio am hysbysiad e-bost." +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:618 +#: perllib/FixMyStreet/DB/Result/Problem.pm:664 msgid "Sent to %s %s later" msgstr "Anfonwyd at %s %s yn ddiweddarach" -#: templates/web/default/admin/report_edit.html:35 -#, fuzzy +#: templates/web/default/admin/report_edit.html:71 msgid "Sent:" -msgstr "Pwnc:" +msgstr "Sent:" -#: templates/web/default/admin/report_edit.html:37 +#: templates/web/default/admin/report_edit.html:73 +#: templates/web/zurich/admin/stats.html:45 msgid "Service:" -msgstr "" +msgstr "Service:" -#: templates/web/emptyhomes/static/about.html:21 -msgid "Shelter Cymru" -msgstr "" +#: templates/web/fixmystreet/report/display.html:41 +msgid "Share" +msgstr "Share" -#: templates/web/emptyhomes/static/about.html:23 -#, fuzzy -msgid "" -"Shelter Cymru is Wales’ people and homes charity and wants\n" -" everyone in Wales to have a decent home. We believe a home is a " -"fundamental\n" -" right and essential to the health and well-being of people and " -"communities.\n" -" We work for people in housing need. We have offices all over Wales and\n" -" prevent people from losing their homes by offering free, confidential " -"and\n" -" independent advice. When necessary we constructively challenge on behalf " -"of\n" -" people to ensure they are properly assisted and to improve practice and\n" -" learning. We believe that bringing empty homes back into use can make a\n" -" significant contribution to the supply of affordable homes in Wales." -msgstr "" -"<h2>Shelter Cymru</h2>\n" -"Shelter Cymru yw’r elusen yng Nghymru ar gyfer pobl a chartrefi ac " -"rydym\n" -"eisiau i bawb yng Nghymru gael cartref addas. Credwn fod cartref yn hawl\n" -"sylfaenol a’i fod yn hanfodol i iechyd a lles pobl a chymunedau. Rydym " -"yn\n" -"gweithio dros bobl sydd mewn angen am dai. Mae gennym swyddfeydd ar draws " -"Cymru\n" -"ac rydym yn atal pobl rhag colli eu cartrefi drwy gynnig cyngor annibynnol,\n" -"cyfrinachol, am ddim. Pan fo’r angen, rydym yn herio’n adeiladol " -"ar ran pobl er\n" -"mwyn sicrhau eu bod yn cael eu cynorthwyo’n gywir ac i wella ymarfer a " -"dysgu.\n" -"Mae Shelter Cymru yn credu y gall gwneud gwell defnydd o gartrefi gwag\n" -"gyfrannu’n sylweddol at y ddaprariaeth o dai fforddiadwy yng Nghymru.\n" -"<a href='http://www.sheltercymru.org.uk/shelter/cymraeg/advice/pdetail.asp?" -"cat=20'>Gwybodaeth\n" -"bellach am ein gwaith ar gartrefi gwag</a>.\n" - -#: templates/web/bromley/report/display.html:203 +#: templates/web/bromley/report/display.html:205 #: templates/web/bromley/report/new/fill_in_details_form.html:129 #: templates/web/bromley/report/new/fill_in_details_form.html:175 -#: templates/web/default/report/display.html:208 #: templates/web/default/report/new/fill_in_details_form.html:210 -#: templates/web/fixmystreet/report/display.html:185 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:126 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:186 +#: templates/web/default/report/update-form.html:157 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:129 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:197 +#: templates/web/fixmystreet/report/update-form.html:144 msgid "Show my name publicly" -msgstr "" +msgstr "Show my name publicly" -#: templates/web/default/around/display_location.html:60 -#: templates/web/fixmystreet/around/display_location.html:60 +#: templates/web/default/around/display_location.html:69 msgid "Show old" -msgstr "" +msgstr "Show old" -#: templates/web/default/around/display_location.html:51 -#: templates/web/fixmystreet/around/display_location.html:52 +#: templates/web/default/around/display_location.html:60 msgid "Show pins" msgstr "Dangos pinnau" #: templates/web/default/auth/general.html:3 #: templates/web/default/auth/general.html:49 -#: templates/web/fixmybarangay/header.html.orig:46 +#: templates/web/fixmybarangay/header.html:70 #: templates/web/fixmystreet/auth/general.html:3 -#: templates/web/fixmystreet/auth/general.html:38 -#: templates/web/fixmystreet/auth/general.html:58 -#: templates/web/fixmystreet/header.html:51 -#: templates/web/zurich/header.html:51 +#: templates/web/fixmystreet/auth/general.html:42 +#: templates/web/fixmystreet/auth/general.html:62 +#: templates/web/fixmystreet/header.html:54 +#: templates/web/oxfordshire/header.html:115 +#: templates/web/seesomething/auth/general.html:3 +#: templates/web/seesomething/auth/general.html:39 +#: templates/web/stevenage/header.html:101 +#: templates/web/zurich/auth/general.html:18 +#: templates/web/zurich/auth/general.html:35 msgid "Sign in" -msgstr "" +msgstr "Sign in" #: templates/web/default/auth/general.html:74 msgid "Sign in by email" -msgstr "" +msgstr "Sign in by email" #: templates/web/default/auth/general.html:1 #: templates/web/fixmystreet/auth/general.html:1 +#: templates/web/seesomething/auth/general.html:1 +#: templates/web/zurich/auth/general.html:1 msgid "Sign in or create an account" -msgstr "" +msgstr "Sign in or create an account" #: templates/web/bromley/auth/sign_out.html:1 #: templates/web/default/auth/sign_out.html:1 #: templates/web/default/header.html:30 -#: templates/web/emptyhomes/header.html:41 +#: templates/web/emptyhomes/header.html:46 #: templates/web/fiksgatami/header.html:22 #: templates/web/fiksgatami/nn/header.html:22 #: templates/web/lichfielddc/header.html:177 #: templates/web/reading/header.html:33 +#: templates/web/seesomething/auth/sign_out.html:1 +#: templates/web/zurich/auth/sign_out.html:1 msgid "Sign out" -msgstr "" +msgstr "Allgofnodi" #: templates/web/default/header.html:29 -#: templates/web/emptyhomes/header.html:40 +#: templates/web/emptyhomes/header.html:45 #: templates/web/fiksgatami/header.html:21 #: templates/web/fiksgatami/nn/header.html:21 #: templates/web/lichfielddc/header.html:177 #: templates/web/reading/header.html:32 msgid "Signed in as %s" -msgstr "" +msgstr "Rydych chi wedi mewngofnodi fel" #: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 #: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 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" msgstr "Rhai ffotograffau o adroddiadau diweddar" #: perllib/FixMyStreet/App/View/Email.pm:32 #: perllib/FixMyStreet/App/View/Web.pm:44 msgid "Some text to localize" -msgstr "" +msgstr "Some text to localize" -#: templates/web/default/admin/council_list.html:42 -msgid "Some unconfirmeds" -msgstr "" - -#: perllib/FixMyStreet/Cobrand/UK.pm:97 -msgid "" -"Sorry, that appears to be a Crown dependency postcode, which we don't cover." -msgstr "" +#: perllib/FixMyStreet/Cobrand/UK.pm:93 +msgid "Sorry, that appears to be a Crown dependency postcode, which we don't cover." +msgstr "Sorry, that appears to be a Crown dependency postcode, which we don't cover." #: templates/web/default/tokens/abuse.html:5 msgid "Sorry, there has been an error confirming your empty property." msgstr "Sori, bu gwall wrth gadarnhau eich eiddo gwag." -#: perllib/FixMyStreet/App/Controller/Report/New.pm:214 -#: perllib/FixMyStreet/Geocode.pm:27 perllib/FixMyStreet/Geocode/Bing.pm:51 -#: perllib/FixMyStreet/Geocode/Google.pm:69 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:215 +#: perllib/FixMyStreet/Geocode.pm:28 perllib/FixMyStreet/Geocode/Bing.pm:58 +#: perllib/FixMyStreet/Geocode/Google.pm:74 +#: perllib/FixMyStreet/Geocode/OSM.pm:66 msgid "Sorry, we could not find that location." msgstr "Sori, ni fu modd i ni ddod o hyd i'r lleoliad hwnnw." -#: perllib/FixMyStreet/Geocode/Bing.pm:46 -#: perllib/FixMyStreet/Geocode/Google.pm:64 -#: perllib/FixMyStreet/Geocode/OSM.pm:59 +#: perllib/FixMyStreet/Geocode/Bing.pm:53 +#: perllib/FixMyStreet/Geocode/Google.pm:69 +#: perllib/FixMyStreet/Geocode/Zurich.pm:87 msgid "Sorry, we could not parse that location. Please try again." -msgstr "" -"Sori, ni fu modd i ni ddosrannu'r lleoliad hwnnw. Rhowch gynnig arall arni." +msgstr "Sori, ni fu modd i ni ddosrannu'r lleoliad hwnnw. Rhowch gynnig arall arni." #: templates/web/fiksgatami/footer.html:16 #: templates/web/fiksgatami/nn/footer.html:16 msgid "Source code" -msgstr "" +msgstr "Source code" #: templates/web/default/admin/stats.html:64 #, fuzzy -msgid "Start Year:" -msgstr "Diweddariad:" - -#: templates/web/default/admin/stats.html:66 -#, fuzzy -msgid "Start day:" -msgstr "Diweddariad:" - -#: templates/web/default/admin/stats.html:65 -msgid "Start month:" -msgstr "" +msgid "Start Date:" +msgstr "Start day:" #: templates/web/bromley/report/display.html:78 -#: templates/web/default/admin/list_flagged.html:18 -#: templates/web/default/admin/list_updates.html:6 -#: templates/web/default/admin/search_reports.html:21 -#: templates/web/fixmystreet/report/display.html:72 -#, fuzzy +#: 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 "Diweddariad:" +msgstr "State" -#: templates/web/default/admin/report_edit.html:17 -#: templates/web/default/admin/update_edit.html:18 -#: templates/web/default/report/display.html:77 -#, fuzzy +#: 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 "Diweddariad:" +msgstr "State:" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1029 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1182 +#: perllib/FixMyStreet/Cobrand/Zurich.pm:257 #: templates/web/default/admin/stats.html:1 -#, fuzzy +#: templates/web/zurich/admin/stats.html:1 templates/web/zurich/header.html:72 msgid "Stats" -msgstr "Diweddariad:" +msgstr "Stats" -#: templates/web/default/report/updates.html:9 -#, fuzzy +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Status" +msgstr "Status" + +#: templates/web/default/report/updates.html:10 msgid "Still open, via questionnaire, %s" -msgstr "Anfon yr holiadur" +msgstr "Still open, via questionnaire, %s" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370 +msgid "Subcategory: %s" +msgstr "Subcategory: %s" + +#: templates/web/zurich/admin/index-dm.html:27 +msgid "Subdivision/Body" +msgstr "Subdivision/Body" #: templates/web/bromley/report/new/fill_in_details_form.html:48 -#: templates/web/fixmystreet/contact/index.html:79 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:58 -#, fuzzy +#: templates/web/fixmystreet/contact/index.html:91 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:60 msgid "Subject" -msgstr "Pwnc:" +msgstr "Subject" -#: templates/web/default/admin/report_edit.html:13 +#: 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 "Pwnc:" @@ -3032,367 +3365,313 @@ msgstr "Pwnc:" #: 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/fixmystreet/report/new/fill_in_details_form.html:137 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:162 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:201 +#: 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 "Anfon" -#: templates/web/default/admin/report_edit.html:56 -#: templates/web/default/admin/update_edit.html:51 -#: templates/web/default/admin/user_edit.html:20 -#, fuzzy +#: 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 "Anfon" +msgstr "Submit changes" -#: templates/web/default/questionnaire/index.html:112 +#: templates/web/default/questionnaire/index.html:116 #: templates/web/fixmystreet/questionnaire/index.html:105 msgid "Submit questionnaire" msgstr "Anfon yr holiadur" +#: 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 "Submitted" + #: templates/web/bromley/report/display.html:44 #: templates/web/default/alert/updates.html:17 -#: templates/web/default/report/display.html:38 +#: templates/web/default/report/display.html:42 #: templates/web/fixmystreet/alert/updates.html:23 -#: templates/web/fixmystreet/report/display.html:37 +#: templates/web/fixmystreet/report/display.html:68 msgid "Subscribe" msgstr "Tanysgrifio" #: templates/web/default/alert/_list.html:97 +#: templates/web/fixmybarangay/alert/_list.html:42 #: templates/web/fixmystreet/alert/_list.html:92 msgid "Subscribe me to an email alert" msgstr "Dymunaf danysgrifio i rybuddion drwy e-bost" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1021 +#: templates/web/fixmybarangay/alert/_list.html:6 +msgid "Subscribe to an alert based upon what baranagay you’re in:" +msgstr "Subscribe to an alert based upon what baranagay you’re in:" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1175 +#: perllib/FixMyStreet/Cobrand/Zurich.pm:241 #: templates/web/default/admin/index.html:1 -#, fuzzy +#: 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 "Adroddiadau cryno" +msgstr "Summary" #: templates/web/default/reports/index.html:1 #: templates/web/emptyhomes/reports/index.html:1 #: templates/web/fiksgatami/nn/reports/index.html:1 #: templates/web/fiksgatami/reports/index.html:1 +#: templates/web/fixmybarangay/reports/index.html:1 +#: templates/web/zurich/reports/index.html:0 +#: templates/web/zurich/reports/index.html:4 msgid "Summary reports" msgstr "Adroddiadau cryno" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1025 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1179 +msgid "Survey" +msgstr "Survey" + #: templates/web/default/admin/questionnaire.html:1 msgid "Survey Results" -msgstr "" +msgstr "Survey Results" -#: templates/web/default/admin/list_updates.html:14 +#: 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 "" +msgstr "Text" -#: templates/web/default/admin/council_contacts.html:18 +#: templates/web/default/admin/body.html:18 msgid "Text only version" -msgstr "" +msgstr "Text only version" -#: templates/web/default/admin/update_edit.html:13 +#: templates/web/default/admin/update_edit.html:20 +#: templates/web/zurich/admin/update_edit.html:12 msgid "Text:" -msgstr "" +msgstr "Text:" #: templates/web/default/tokens/confirm_update.html:7 #: templates/web/default/tokens/confirm_update.html:8 -msgid "" -"Thank you — you can <a href=\"%s\">view your updated empty property</" -"a> on the site." -msgstr "" -"Diolch — gallwch <a href=\"%s\">weld diweddariad eich eiddo gwag</a> " -"ar y safle." +msgid "Thank you — you can <a href=\"%s\">view your updated empty property</a> on the site." +msgstr "Diolch — gallwch <a href=\"%s\">weld diweddariad eich eiddo gwag</a> ar y safle." #: templates/web/emptyhomes/tokens/confirm_problem.html:6 #: templates/web/emptyhomes/tokens/confirm_problem.html:8 -#, fuzzy -msgid "" -"Thank you for reporting an empty property on ReportEmptyHomes.com. We have " -"emailed the lead officer for empty homes in the council responsible with " -"details, and asked them to do whatever they can to get the empty property " -"back into use as soon as possible." +msgid "Thank you for reporting an empty property on ReportEmptyHomes.com. We have emailed the lead officer for empty homes in the council responsible with details, and asked them to do whatever they can to get the empty property back into use as soon as possible." msgstr "" "Diolch am roi gwybod am eiddo gwag ar\n" -"ReportEmptyHomes.com. Rydym wedi anfon neges e-bost gyda'r manylion at y " -"swyddog eiddo gwag yn \n" -"y cyngor cyfrifol ac wedi gofyn iddynt wneud beth bynnag y gallant i helpu " -"adfer yr eiddo gwag\n" +"ReportEmptyHomes.com. Rydym wedi anfon neges e-bost gyda'r manylion at y swyddog eiddo gwag yn \n" +"y cyngor cyfrifol ac wedi gofyn iddynt wneud beth bynnag y gallant i helpu adfer yr eiddo gwag\n" "fel ei fod yn cael ei ddefnyddio eto cyn gynted ag y bo modd." #: templates/web/emptyhomes/tokens/confirm_problem.html:30 #: templates/web/emptyhomes/tokens/confirm_problem.html:31 msgid "" "Thank you for reporting this empty property on ReportEmptyHomes.com.\n" -"At present the report cannot be sent through to the council for this area. " -"We\n" -"are working with councils to link them into the system so that as many " -"areas\n" +"At present the report cannot be sent through to the council for this area. We\n" +"are working with councils to link them into the system so that as many areas\n" "as possible will be covered." msgstr "Diolch am roi gwybod am eiddo gwag ar ReportEmptyHomes.com." #: templates/web/default/tokens/error.html:7 -#, fuzzy -msgid "" -"Thank you for trying to confirm your update or empty property. We seem to " -"have an error ourselves though, so <a href=\"%s\">please let us know what " -"went on</a> and we'll look into it." +msgid "Thank you for trying to confirm your update or empty property. We seem to have an error ourselves though, so <a href=\"%s\">please let us know what went on</a> and we'll look into it." msgstr "" -"Diolch am geisio cadarnhau eich diweddariad neu eich eiddo gwag. Fodd " -"bynnag, \n" -"mae'n ymddangos bod gwall gennym ein hunain, felly <a href=\"%s\">rhowch " -"wybod i ni beth ddigwyddodd</a>\n" -"ac fe wnawn ni edrych yn fanylach i hyn.\n" +"Diolch am geisio cadarnhau eich diweddariad neu eich eiddo gwag. Fodd bynnag, \n" +"mae'n ymddangos bod gwall gennym ein hunain, felly <a href=\"%s\">rhowch wybod i ni beth ddigwyddodd</a>\n" +" ac fe wnawn ni edrych yn fanylach i hyn." #: templates/web/emptyhomes/tokens/confirm_problem.html:24 #: templates/web/emptyhomes/tokens/confirm_problem.html:26 -#, fuzzy -msgid "" -"Thank you for using ReportEmptyHomes.com. Your action is already helping to " -"resolve the UK’s empty homes crisis." +msgid "Thank you for using ReportEmptyHomes.com. Your action is already helping to resolve the UK’s empty homes crisis." msgstr "" -"Diolch am ddefnyddio ReportEmptyHomes.com. Mae eich gweithred eisoes yn " -"helpu i \n" +"Diolch am ddefnyddio ReportEmptyHomes.com. Mae eich gweithred eisoes yn helpu i \n" "ddatrys argyfwng tai gwag y DU." #: templates/web/fixmystreet/around/around_index.html:27 -#, fuzzy -msgid "" -"Thanks for uploading your photo. We now need to locate your empty property, " -"so please enter a nearby street name or postcode in the box above :" -msgstr "" -"Diolch am lwytho'ch ffotograff i fyny. Nawr mae angen i ni ddod o hyd i " -"leoliad eich eiddo gwag, felly rhowch enw stryd gerllaw neu god post yn y " -"blwch isod :" - -#: templates/web/default/around/around_index.html:28 -msgid "" -"Thanks for uploading your photo. We now need to locate your empty property, " -"so please enter a nearby street name or postcode in the box below :" -msgstr "" -"Diolch am lwytho'ch ffotograff i fyny. Nawr mae angen i ni ddod o hyd i " -"leoliad eich eiddo gwag, felly rhowch enw stryd gerllaw neu god post yn y " -"blwch isod :" +msgid "Thanks for uploading your photo. We now need to locate your empty property, so please enter a nearby street name or postcode in the box above :" +msgstr "Thanks for uploading your photo. We now need to locate your empty property, so please enter a nearby street name or postcode in the box above :" #: templates/web/default/contact/submit.html:8 msgid "Thanks for your feedback. We'll get back to you as soon as we can!" msgstr "Diolch am eich adborth. Byddwn yn eich ateb cyn gynted ag y gallwn!" #: templates/web/default/questionnaire/creator_fixed.html:9 -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?" +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: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." +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." -#: perllib/FixMyStreet/App/Controller/Council.pm:91 -#, fuzzy -msgid "" -"That location does not appear to be covered by a council; perhaps it is " -"offshore or outside the country. Please try again." -msgstr "" -"Nid yw'n ymddangos bod cyngor yn gyfrifol am y lleoliad hwnnw, efallai ei " -"fod ar y môr - chwiliwch am fan mwy penodol." +#: perllib/FixMyStreet/App/Controller/Council.pm:90 +msgid "That location does not appear to be covered by a council; perhaps it is offshore or outside the country. Please try again." +msgstr "That location does not appear to be covered by a council; perhaps it is offshore or outside the country. Please try again." -#: perllib/FixMyStreet/App/Controller/Location.pm:107 -#, fuzzy +#: perllib/FixMyStreet/App/Controller/Location.pm:123 msgid "That location does not appear to be in the UK; please try again." -msgstr "" -"Nid yw'n ymddangos bod y lleoliad hwnnw ym Mhrydain; rhowch gynnig arall " -"arni." +msgstr "That location does not appear to be in the UK; please try again." #: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:63 -#: perllib/FixMyStreet/Cobrand/UK.pm:90 +#: perllib/FixMyStreet/Cobrand/UK.pm:86 msgid "That postcode was not recognised, sorry." msgstr "Ni chafodd y cod post hwnnw ei gydnabod, sori." -#: perllib/FixMyStreet/App/Controller/Admin.pm:605 -#, fuzzy +#: perllib/FixMyStreet/App/Controller/Admin.pm:704 msgid "That empty property will now be resent." -msgstr "ni fydd eich eiddo gwag yn cael ei bostio" +msgstr "That empty property will now be resent." -#: perllib/FixMyStreet/App/Controller/Report.pm:75 +#: perllib/FixMyStreet/App/Controller/Report.pm:117 +msgid "That report cannot be viewed on %s." +msgstr "That report cannot be viewed on %s." + +#: perllib/FixMyStreet/App/Controller/Report.pm:111 msgid "That report has been removed from reportemptyhomes.com." msgstr "Mae'r adroddiad hwnnw wedi cael ei dynnu oddi ar reportemptyhomes.com" -#: templates/web/emptyhomes/static/about.html:7 -#, fuzzy -msgid "The Empty Homes Agency" -msgstr "Yr Asiantaeth Tai Gwag" +#: 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/emptyhomes/static/about.html:9 -#, fuzzy +#: templates/web/default/admin/body-form.html:119 +#: templates/web/default/admin/body-form.html:120 msgid "" -"The Empty Homes agency is an independent campaigning charity. We\n" -" are not part of government, and have no formal links with local " -"councils\n" -" although we work in cooperation with both. We exist to highlight the " -"waste\n" -" of empty property and work with others to devise and promote " -"sustainable\n" -" solutions to bring empty property back into use. We are based in London " -"but\n" -" work across England. We also work in partnership with other charities " -"across\n" -" the UK." +"The <strong>endpoint</strong> is the URL of the service that reportemptyhomes.com will connect to \n" +" when sending reports to this body." msgstr "" -"<h2>Yr Asiantaeth Tai Gwag</h2>\n" -"<p>Mae'r Asiantaeth Tai Gwag yn elusen ymgyrchu annibynnol. Nid ydym yn rhan " -"o'r\n" -"llywodraeth, ac nid oes gennym unrhyw gysylltiadau ffurfiol â chynghorau " -"lleol er ein bod\n" -"yn cydweithio â'r naill a'r llall. Rydym yn bodoli er mwyn amlygu gwastraff " -"yr eiddo gwag ac\n" -"yn gweithio gyda eraill er mwyn dyfeisio a hyrwyddo atebion cynaliadwy er " -"mwyn adfer \n" -"eiddo gwag yn eiddo y mae pobl yn byw ynddynt eto. Rydym wedi'n lleoli yn " -"Llundain ond\n" -"rydym yn gweithio ledled Lloegr. Rydym hefyd yn gweithio mewn partneriaeth " -"ag elusennau eraill ledled y DU.</p>\n" - -#: templates/web/default/open311/index.html:23 + +#: templates/web/default/admin/body-form.html:132 +#: templates/web/default/admin/body-form.html:133 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." +"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/auth/token.html:21 -#: templates/web/default/email_sent.html:22 +#: templates/web/default/admin/body-form.html:90 +#: templates/web/default/admin/body-form.html:91 msgid "" -"The confirmation email <strong>may</strong> take a few minutes to arrive " -"— <em>please</em> be patient." +"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/fixmystreet/report/new/fill_in_details_text.html:1 -#: templates/web/fixmystreet/report/new/fill_in_details_text.html:3 +#: 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 council won’t be able to help unless you leave as much\n" -"detail as you can. Please describe the exact location of the empty property " -"(e.g. on a\n" -"wall), what it is, how long it has been there, a description (and a photo " -"of\n" -"the empty property if you have one), etc." +"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 — <em>please</em> be patient." +msgstr "<strong>Gall</strong> y neges e-bost o gadarnhad gymryd ychydig funudau i gyrraedd — byddwch yn amyneddgar, <em>os gwelwch yn dda</em>." + +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:3 +msgid "The council won’t be able to help unless you leave as much detail as you can. Please describe the exact location of the empty property (e.g. on a wall), what it is, how long it has been there, a description (and a photo of the empty property if you have one), etc." +msgstr "The council won’t be able to help unless you leave as much detail as you can. Please describe the exact location of the empty property (e.g. on a wall), what it is, how long it has been there, a description (and a photo of the empty property if you have one), etc." + #: templates/web/fixmystreet/questionnaire/index.html:43 -#, fuzzy -msgid "" -"The details of your empty property are available from the other tab above." +msgid "The details of your empty property are available from the other tab above." msgstr "Mae manylion eich eiddo gwag ar gael ar ochr dde'r dudalen hon." #: templates/web/default/questionnaire/index.html:49 -msgid "" -"The details of your empty property are available on the right hand side of " -"this page." +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:44 -#: perllib/FixMyStreet/App/Controller/Reports.pm:75 -#, fuzzy +#: perllib/FixMyStreet/App/Controller/Reports.pm:72 msgid "The error was: %s" -msgstr "Testun y gwall oedd:" +msgstr "The error was: %s" -#: templates/web/default/open311/index.html:19 -msgid "" -"The following Open311 v2 attributes are returned for each request: " -"service_request_id, description, lat, long, media_url, status, " -"requested_datetime, updated_datetime, service_code and service_name." -msgstr "" +#: templates/web/default/open311/index.html:88 +msgid "The following Open311 v2 attributes are returned for each request: service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code and service_name." +msgstr "The following Open311 v2 attributes are returned for each request: service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code and service_name." -#: perllib/FixMyStreet/Geocode/OSM.pm:158 -msgid "" -"The following information about the nearest road might be inaccurate or " -"irrelevant, if the empty property is close to several roads or close to a " -"road without a name registered in OpenStreetMap." -msgstr "" +#: perllib/FixMyStreet/Geocode/OSM.pm:165 +msgid "The following information about the nearest road might be inaccurate or irrelevant, if the empty property is close to several roads or close to a road without a name registered in OpenStreetMap." +msgstr "The following information about the nearest road might be inaccurate or irrelevant, if the empty property is close to several roads or close to a road without a name registered in OpenStreetMap." #: db/alert_types.pl:19 db/alert_types.pl:23 db/alert_types.pl:27 #: db/alert_types.pl:31 -#, fuzzy msgid "The latest local empty properties reported by users" -msgstr "Yr eiddo gwag diweddaraf y mae defnyddwyr wedi rhoi gwybod amdanynt" +msgstr "Yr eiddo gwag diweddaraf y mae defnyddwyr wedi rhoi gwybod amdanynst" #: db/alert_types_eha.pl:13 msgid "The latest local reports reported by users" -msgstr "" -"Yr adroddiadau lleol diweddaraf y mae defnyddwyr wedi rhoi gwybod amdanynt" +msgstr "Yr adroddiadau lleol diweddaraf y mae defnyddwyr wedi rhoi gwybod amdanynt" #: db/alert_types.pl:35 -#, fuzzy msgid "The latest empty properties for {{COUNCIL}} reported by users" -msgstr "" -"Yr adroddiadau diweddaraf ar gyfer cyngor {{COUNCIL}} y mae defnyddwyr wedi " -"rhoi gwybod amdanynt" +msgstr "Yr adroddiadau diweddaraf ar gyfer cyngor {{COUNCIL}} y mae defnyddwyr wedi rhoi gwybod amdanynt" #: db/alert_types.pl:39 -#, fuzzy -msgid "" -"The latest empty properties for {{COUNCIL}} within {{WARD}} ward reported by " -"users" -msgstr "" -"Yr adroddiadau diweddaraf ar gyfer cyngor {{COUNCIL}}, yn ward {{WARD}} y " -"mae defnyddwyr wedi rhoi gwybod amdanynt" +msgid "The latest empty properties for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "Yr adroddiadau diweddaraf ar gyfer cyngor {{COUNCIL}}, yn ward {{WARD}} y mae defnyddwyr wedi rhoi gwybod amdanynt" #: db/alert_types.pl:11 msgid "The latest empty properties reported by users" msgstr "Yr eiddo gwag diweddaraf y mae defnyddwyr wedi rhoi gwybod amdanynt" #: db/alert_types.pl:15 -#, fuzzy msgid "The latest empty properties reported returned to use by users" msgstr "Yr eiddo gwag diweddaraf y mae defnyddwyr wedi rhoi gwybod amdanynt" #: db/alert_types.pl:43 -#, fuzzy -msgid "" -"The latest empty properties within {{NAME}}'s boundary reported by users" -msgstr "" -"Yr adroddiadau diweddaraf o fewn ffin {{NAME}} y mae defnyddwyr wedi rhoi " -"gwybod amdanynt" +msgid "The latest empty properties within {{NAME}}'s boundary reported by users" +msgstr "Yr adroddiadau diweddaraf o fewn ffin {{NAME}} y mae defnyddwyr wedi rhoi gwybod amdanynt" #: db/alert_types_eha.pl:9 msgid "The latest properties reported back to use by users" -msgstr "" -"Yr eiddo diweddaraf y mae defnyddwyr wedi rhoi gwybod eu bod yn ôl mewn " -"defnyd" +msgstr "Yr eiddo diweddaraf y mae defnyddwyr wedi rhoi gwybod eu bod yn ôl mewn defnyd" #: db/alert_types_eha.pl:20 msgid "The latest reports for {{COUNCIL}} reported by users" -msgstr "" -"Yr adroddiadau diweddaraf ar gyfer cyngor {{COUNCIL}} y mae defnyddwyr wedi " -"rhoi gwybod amdanynt" +msgstr "Yr adroddiadau diweddaraf ar gyfer cyngor {{COUNCIL}} y mae defnyddwyr wedi rhoi gwybod amdanynt" #: db/alert_types_eha.pl:24 -msgid "" -"The latest reports for {{COUNCIL}} within {{WARD}} ward reported by users" -msgstr "" -"Yr adroddiadau diweddaraf ar gyfer cyngor {{COUNCIL}}, yn ward {{WARD}} y " -"mae defnyddwyr wedi rhoi gwybod amdanynt" +msgid "The latest reports for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "Yr adroddiadau diweddaraf ar gyfer cyngor {{COUNCIL}}, yn ward {{WARD}} y mae defnyddwyr wedi rhoi gwybod amdanynt" #: db/alert_types_eha.pl:28 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 "" -"Yr adroddiadau diweddaraf o fewn ffin {{NAME}} y mae defnyddwyr wedi rhoi " -"gwybod amdanynt" #: templates/web/default/auth/change_password.html:12 #: templates/web/default/auth/change_password.html:16 msgid "The passwords do not match" -msgstr "" +msgstr "The passwords do not match" #: templates/web/default/errors/page_error_404_not_found.html:10 #: templates/web/default/errors/page_error_404_not_found.html:12 msgid "The requested URL '%s' was not found on this server" -msgstr "" +msgstr "The requested URL '%s' was not found on this server" #: templates/web/default/alert/_list.html:14 #: templates/web/fixmystreet/alert/_list.html:16 @@ -3405,305 +3684,332 @@ msgstr "Yr hysbysiad symlaf yw ein hysbysiad daearyddol:" #: templates/web/default/report/new/councils_text_some.html:11 #: templates/web/default/report/new/fill_in_details_form.html:17 #: templates/web/fixmystreet/report/new/fill_in_details_form.html:12 -msgid "" -"The subject and details of the empty property will be public, plus your name " -"if you give us permission." -msgstr "" +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:269 -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 " +#: 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 " -#: perllib/FixMyStreet/App/Controller/Reports.pm:72 +#: templates/web/default/admin/user-form.html:12 +#: templates/web/default/admin/user-form.html:13 msgid "" -"There was an empty property showing the All Reports page. Please try again " -"later." +"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." + +#: perllib/FixMyStreet/App/Controller/Contact.pm:116 #: perllib/FixMyStreet/App/Controller/Dashboard.pm:59 -#, fuzzy msgid "There was an empty property showing this page. Please try again later." -msgstr "Cafwyd anhawsterau gyda'ch diweddariad. Gweler isod" +msgstr "There was an empty property showing this page. Please try again later." -#: perllib/FixMyStreet/App/Controller/Report/New.pm:733 -#: perllib/FixMyStreet/App/Controller/Report/Update.pm:130 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:747 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:134 #: templates/web/default/auth/general.html:23 #: templates/web/fixmystreet/auth/general.html:24 -msgid "" -"There was an empty property with your email/password combination. If you " -"cannot remember your password, or do not have one, please fill in the ‘" -"sign in by email’ section of the form." -msgstr "" +#: templates/web/seesomething/auth/general.html:24 +#: templates/web/zurich/auth/general.html:28 +msgid "There was an empty property with your email/password combination. If you cannot remember your password, or do not have one, please fill in the ‘sign in by email’ section of the form." +msgstr "There was an empty property with your email/password combination. If you cannot remember your password, or do not have one, please fill in the ‘sign in by email’ section of the form." #: perllib/FixMyStreet/App/Controller/Alert.pm:355 -msgid "" -"There was an empty property with your email/password combination. Please try " -"again." -msgstr "" +msgid "There was an empty property with your email/password combination. Please try again." +msgstr "There was an empty property with your email/password combination. Please try again." -#: perllib/FixMyStreet/App/Controller/Report/Update.pm:252 -#, fuzzy +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:272 msgid "There was an empty property with your update. Please try again." -msgstr "Cafwyd anhawsterau gyda'ch diweddariad. Gweler isod" +msgstr "There was an empty property with your update. Please try again." -#: perllib/FixMyStreet/App/Controller/Contact.pm:117 +#: perllib/FixMyStreet/App/Controller/Contact.pm:120 msgid "There were problems with your report. Please see below." msgstr "Cafwyd anhawsterau gyda'ch adroddiad. Gweler isod." -#: perllib/FixMyStreet/App/Controller/Report/Update.pm:279 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:299 msgid "There were problems with your update. Please see below." msgstr "Cafwyd anhawsterau gyda'ch diweddariad. Gweler isod" -#: templates/web/default/open311/index.html:10 +#: templates/web/default/admin/body-form.html:108 +#: templates/web/default/admin/body-form.html:109 msgid "" -"This API implementation is work in progress and not yet stabilized. It will " -"change without warnings in the future." +"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 "" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:339 +#: 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." + +#: templates/web/default/admin/body.html:33 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." +"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 "" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:342 +#: 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 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." +"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/App/Controller/Report/New.pm:865 -#: perllib/FixMyStreet/Cobrand/UK.pm:62 +#: 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: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" -msgstr "" +msgstr "Mae’r wybodaeth hon yn ofynnol" #: templates/web/default/debug_header.html:3 -#, fuzzy -msgid "" -"This is a developer site; things might break at any time, and the database " -"will be periodically deleted." -msgstr "Safle datblygwr yw hwn; gallai pethau dorri unrhyw bryd." +msgid "This is a developer site; things might break at any time, and the database will be periodically deleted." +msgstr "This is a developer site; things might break at any time, and the database will be periodically deleted." -#: templates/web/emptyhomes/reports/council.html:58 -msgid "This is a summary of all reports for one %s." -msgstr "Dyma grynodeb o'r holl adroddiadau ar gyfer y %s." +#: templates/web/fixmybarangay/reports/index.html:7 +msgid "This is a summary of all reports on this site; select a particular barangay to see the reports sent there." +msgstr "This is a summary of all reports on this site; select a particular barangay to see the reports sent there." -#: templates/web/emptyhomes/reports/council.html:60 -msgid "This is a summary of all reports for this %s." -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 "Dyma grynodeb o'r holl adroddiadau ar y safle hwn; dewiswch gyngor penodol i weld yr adroddiadau a anfonwyd ato." #: templates/web/default/reports/index.html:7 -#: templates/web/emptyhomes/reports/index.html:4 #: templates/web/fiksgatami/nn/reports/index.html:4 #: templates/web/fiksgatami/reports/index.html:4 -msgid "" -"This is a summary of all reports on this site; select a particular council " -"to see the reports sent there." -msgstr "" -"Dyma grynodeb o'r holl adroddiadau ar y safle hwn; dewiswch gyngor penodol i " -"weld yr adroddiadau a anfonwyd ato." +msgid "This is a summary of all reports on this site; select a particular council to see the reports sent there." +msgstr "Dyma grynodeb o'r holl adroddiadau ar y safle hwn; dewiswch gyngor penodol i weld yr adroddiadau a anfonwyd ato." + +#: templates/web/default/auth/token.html:9 +msgid "This may be because the link is too old or already used, or the address was not copied correctly." +msgstr "This may be because the link is too old or already used, or the address was not copied correctly." #: templates/web/default/report/banner.html:15 -#, fuzzy msgid "This empty property has been closed" -msgstr "Mae'r eiddo gwag hwn wedi cael ei adfer i'w ddefnyddio" +msgstr "This empty property has been closed" -#: templates/web/bromley/report/display.html:96 +#: templates/web/bromley/report/display.html:98 #: templates/web/default/report/banner.html:12 -#: templates/web/default/report/display.html:95 -#: templates/web/emptyhomes/report/display.html:12 -#: templates/web/fixmystreet/report/display.html:90 +#: templates/web/default/report/update-form.html:48 +#: templates/web/emptyhomes/report/banner.html:3 +#: templates/web/fixmystreet/report/update-form.html:46 msgid "This empty property has been returned to use" msgstr "Mae'r eiddo gwag hwn wedi cael ei adfer i'w ddefnyddio" -#: templates/web/bromley/report/display.html:90 -#: templates/web/default/report/display.html:90 -#: templates/web/fixmystreet/report/display.html:84 -#, fuzzy +#: templates/web/bromley/report/display.html:92 +#: templates/web/default/report/update-form.html:43 +#: templates/web/fixmystreet/report/update-form.html:40 msgid "This empty property has not been returned to use" -msgstr "Mae'r eiddo gwag hwn wedi cael ei adfer i'w ddefnyddio" +msgstr "This empty property has not been returned to use" #: templates/web/default/report/banner.html:19 -#, fuzzy msgid "This empty property is in progress" -msgstr "Mae'r eiddo gwag hwn wedi cael ei adfer i'w ddefnyddio" +msgstr "This empty property is in progress" #: templates/web/default/report/banner.html:9 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/DB/ResultSet/AlertType.pm:83 -#, fuzzy +#: 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." + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:86 msgid "This report is currently marked as closed." -msgstr "Mae'r eiddo gwag hwn wedi cael ei adfer i'w ddefnyddio" +msgstr "This report is currently marked as closed." -#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:81 -#, fuzzy +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:84 msgid "This report is currently marked as returned to use." -msgstr "Mae'r eiddo gwag hwn wedi cael ei adfer i'w ddefnyddio" +msgstr "This report is currently marked as returned to use." -#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:85 +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:88 msgid "This report is currently marked as open." -msgstr "" +msgstr "This report is currently marked as open." -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:262 -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/DB/ResultSet/Problem.pm:315 +msgid "This report was submitted anonymously" +msgstr "Cyflwynwyd yr adroddiad hwn yn ddi-enw" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1024 +#: 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:1178 #: templates/web/default/admin/timeline.html:1 msgid "Timeline" -msgstr "" +msgstr "Timeline" -#: templates/web/default/admin/list_flagged.html:10 -#: templates/web/default/admin/search_reports.html:13 +#: templates/web/default/admin/flagged.html:15 +#: templates/web/default/admin/reports.html:12 msgid "Title" -msgstr "" +msgstr "Title" -#: templates/web/default/around/display_location.html:69 -#, fuzzy -msgid "" -"To <strong>report an empty property</strong>, click on the map at the " -"correct location." -msgstr "" -"Er mwyn rhoi gwybod am eiddo gwag\n" -" <strong>cliciwch ar y map</strong> wrth y lleoliad cywir." - -#: templates/web/emptyhomes/around/display_location.html:35 -#, fuzzy -msgid "" -"To <strong>report an empty property</strong>, simply click on the map at the " -"correct location." -msgstr "" -"Er mwyn rhoi gwybod am eiddo gwag\n" -" <strong>cliciwch ar y map</strong> wrth y lleoliad cywir." +#: templates/web/default/around/_report_banner.html:2 +msgid "To <strong>report an empty property</strong>, click on the map at the correct location." +msgstr "I <strong> roi gwybod am broblem</strong>, cliciwch ar y lleoliad cywir ar y map" #: templates/web/default/alert/index.html:27 -#, fuzzy -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 "" -"I gael gwybod pa hysbysiadau lleol sydd gennym yn eich ardal, cyngor neu " -"ward chi,\n" -"cofnodwch eich cod post Prydeinig neu enw stryd ac ardal:" +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:268 +#: 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 +#: templates/web/zurich/admin/stats.html:30 msgid "Total" -msgstr "" +msgstr "Total" -#: perllib/FixMyStreet/App/Controller/Reports.pm:43 -msgid "Unable to look up areas in MaPit. Please try again later." -msgstr "" +#: templates/web/seesomething/report/new/fill_in_details_form.html:24 +msgid "Transport Category" +msgstr "Transport Category" -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 -#: templates/web/default/admin/update_edit.html:19 +#: templates/web/default/js/translation_strings.html:29 +#: templates/web/oxfordshire/js/translation_strings.html:23 +msgid "Try again" +msgstr "Try again" + +#: 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 "Unable to fix" +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:48 +#: templates/web/zurich/admin/report_edit.html:61 +#: templates/web/zurich/admin/update_edit.html:18 msgid "Unconfirmed" -msgstr "" +msgstr "Unconfirmed" #: templates/web/fixmystreet/report/banner.html:9 msgid "Unknown" -msgstr "" +msgstr "Unknown" -#: perllib/FixMyStreet/App/Controller/Rss.pm:164 -#, fuzzy +#: perllib/FixMyStreet/App/Controller/Rss.pm:173 msgid "Unknown alert type" -msgstr "ID eiddo gwag anhysbys" +msgstr "Unknown alert type" + +#: templates/web/default/js/translation_strings.html:39 +#: templates/web/oxfordshire/js/translation_strings.html:33 +msgid "Unknown error" +msgstr "Unknown error" -#: perllib/FixMyStreet/App/Controller/Report.pm:70 +#: perllib/FixMyStreet/App/Controller/Report.pm:106 msgid "Unknown empty property ID" msgstr "ID eiddo gwag anhysbys" #: templates/web/bromley/report/display.html:66 -#: templates/web/fixmystreet/report/display.html:65 -#, fuzzy +#: templates/web/fixmystreet/report/update-form.html:19 msgid "Update" -msgstr "Diweddariad:" +msgstr "Update" -#: templates/web/default/admin/timeline.html:35 +#: templates/web/default/admin/timeline.html:33 msgid "Update %s created for empty property %d; by %s" -msgstr "" +msgstr "Update %s created for empty property %d; by %s" #: templates/web/default/contact/index.html:21 -#: templates/web/fixmystreet/contact/index.html:22 -#, fuzzy +#: templates/web/fixmystreet/contact/index.html:34 msgid "Update below added anonymously at %s" -msgstr "Adroddwyd yn ddi-enw am %s" +msgstr "Update below added anonymously at %s" #: templates/web/default/contact/index.html:23 -#: templates/web/fixmystreet/contact/index.html:24 -#, fuzzy +#: templates/web/fixmystreet/contact/index.html:36 msgid "Update below added by %s at %s" -msgstr "Adroddwyd gan %s trwy %s am %s" +msgstr "Update below added by %s at %s" + +#: 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 "" +msgstr "Update breakdown by state" #: db/alert_types.pl:7 msgid "Update by {{name}}" msgstr "Diweddariadau yn ôl {{name}}" -#: templates/web/default/admin/update_edit.html:33 -#, fuzzy +#: templates/web/default/admin/update_edit.html:42 +#: templates/web/zurich/admin/update_edit.html:25 msgid "Update changed empty property state to %s" -msgstr "" -"Fe wnaeth diweddariad gofnodi bod yr eiddo hwn wedi cael ei adfer i'w " -"ddefnyddio." +msgstr "Update changed empty property state to %s" -#: templates/web/default/admin/update_edit.html:35 -#, fuzzy +#: templates/web/default/admin/update_edit.html:44 msgid "Update marked empty property as returned to use" -msgstr "" -"Fe wnaeth diweddariad gofnodi bod yr eiddo hwn wedi cael ei adfer i'w " -"ddefnyddio." +msgstr "Update marked empty property as returned to use" -#: templates/web/default/admin/update_edit.html:37 -#, fuzzy +#: templates/web/default/admin/update_edit.html:46 msgid "Update reopened empty property" -msgstr "Sut i roi gwybod am eiddo gwag" +msgstr "Update reopened empty property" -#: templates/web/default/admin/council_contacts.html:62 -#, fuzzy +#: templates/web/default/admin/body.html:83 msgid "Update statuses" -msgstr "Diweddariadau" +msgstr "Update statuses" -#: templates/web/default/report/display.html:71 +#: templates/web/default/report/update-form.html:22 msgid "Update:" msgstr "Diweddariad:" -#: perllib/FixMyStreet/App/Controller/Admin.pm:694 -#: perllib/FixMyStreet/App/Controller/Admin.pm:809 -#: perllib/FixMyStreet/App/Controller/Admin.pm:889 -#, fuzzy +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Updated" +msgstr "Updated" + +#: 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 "Diweddariadau" +msgstr "Updated!" -#: templates/web/default/admin/list_updates.html:1 +#: 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 "Diweddariadau" +#: 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" + #: db/alert_types.pl:5 db/alert_types.pl:6 msgid "Updates on {{title}}" msgstr "Diweddariadau am {{title}}" @@ -3711,318 +4017,303 @@ msgstr "Diweddariadau am {{title}}" #: templates/web/bromley/report/display.html:0 #: templates/web/bromley/report/display.html:8 #: templates/web/default/report/display.html:0 -#: templates/web/default/report/display.html:7 +#: templates/web/default/report/display.html:5 #: templates/web/fixmystreet/report/display.html:0 #: templates/web/fixmystreet/report/display.html:8 msgid "Updates to this empty property, reportemptyhomes.com" msgstr "Diweddariadau i'r eiddo gwag hwn, reportemptyhomes.com" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1182 -msgid "User flag removed" +#: 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 "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1154 +#: 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:1314 msgid "User flagged" +msgstr "User flagged" + +#: templates/web/default/admin/users.html:5 +msgid "User search finds matches in users' names and email addresses." msgstr "" -#: templates/web/default/admin/list_flagged.html:30 +#: 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 "" +msgstr "Users" -#: perllib/FixMyStreet/App/Controller/Admin.pm:309 -#: perllib/FixMyStreet/App/Controller/Admin.pm:339 -#, fuzzy +#: perllib/FixMyStreet/App/Controller/Admin.pm:371 +#: perllib/FixMyStreet/App/Controller/Admin.pm:401 msgid "Values updated" -msgstr "Anfonwch ddiweddariadau ataf i drwy'r e-bost" +msgstr "Values updated" -#: templates/web/default/admin/report_edit.html:12 -#: templates/web/default/admin/update_edit.html:12 -#, fuzzy +#: templates/web/default/admin/report_edit.html:18 +#: templates/web/default/admin/update_edit.html:18 +#: templates/web/zurich/admin/report_edit-sdm.html:24 +#: templates/web/zurich/admin/report_edit.html:23 +#: templates/web/zurich/admin/update_edit.html:10 msgid "View report on site" -msgstr "Adroddiadau" +msgstr "View report on site" -#: templates/web/default/reports/council.html:18 -#, fuzzy +#: templates/web/default/reports/body.html:14 msgid "View reports by ward" -msgstr "Adroddiadau" +msgstr "View reports by ward" #: templates/web/emptyhomes/tokens/confirm_problem.html:39 msgid "View your report" msgstr "Gweld eich adroddiad" #: templates/web/default/around/display_location.html:0 -#: templates/web/default/around/display_location.html:33 -#: templates/web/emptyhomes/around/display_location.html:0 -#: templates/web/emptyhomes/around/display_location.html:16 -#: templates/web/fixmystreet/around/display_location.html:0 -#: templates/web/fixmystreet/around/display_location.html:33 +#: templates/web/default/around/display_location.html:34 +#: templates/web/seesomething/around/display_location.html:0 +#: templates/web/seesomething/around/display_location.html:16 msgid "Viewing a location" msgstr "Gweld lleoliad" #: templates/web/bromley/report/display.html:0 #: templates/web/default/report/display.html:0 -#: templates/web/emptyhomes/report/display.html:2 #: templates/web/fixmystreet/report/display.html:0 msgid "Viewing an empty property" msgstr "Gweld eiddo gwag" -#: templates/web/default/reports/council.html:20 -#: templates/web/emptyhomes/reports/council.html:18 +#: templates/web/default/reports/body.html:16 msgid "Wards of this council" -msgstr "" +msgstr "Wards of this council" #: templates/web/default/alert/choose.html:6 -#: templates/web/default/around/around_index.html:17 +#: templates/web/default/around/around_index.html:13 #: templates/web/fixmystreet/around/around_index.html:16 -msgid "" -"We found more than one match for that location. We show up to ten matches, " -"please try a different search if yours is not here." -msgstr "" -"Darganfuom fwy nag un man sy'n cyfateb i'r lleoliad hwnnw. Rydym yn dangos " -"hyd at ddeg cyfatebiaeth, rhowch gynnig ar chwiliad gwahanol os nad yw'ch " -"lleoliad chi yno." +#: templates/web/seesomething/around/around_index.html:13 +msgid "We found more than one match for that location. We show up to ten matches, please try a different search if yours is not here." +msgstr "Darganfuom fwy nag un man sy'n cyfateb i'r lleoliad hwnnw. Rydym yn dangos hyd at ddeg cyfatebiaeth, rhowch gynnig ar chwiliad gwahanol os nad yw'ch lleoliad chi yno." -#: templates/web/default/auth/token.html:19 +#: templates/web/default/auth/token.html:8 +msgid "We have not been able to confirm your account - sorry." +msgstr "We have not been able to confirm your account - sorry." + +#: templates/web/default/auth/token.html:16 msgid "We have sent you an email containing a link to confirm your account." -msgstr "" +msgstr "We have sent you an email containing a link to confirm your account." #: templates/web/emptyhomes/tokens/confirm_problem.html:18 #: templates/web/emptyhomes/tokens/confirm_problem.html:20 -msgid "" -"We may contact you periodically to ask if anything has changed with the " -"property you reported." -msgstr "" +msgid "We may contact you periodically to ask if anything has changed with the property you reported." +msgstr "Efallai y cysylltwn â chi o bryd i’w gilydd i ofyn a fu unrhyw newid i sefyllfa’r eiddo rydych chi wedi rhoi gwybod amdano." -#: templates/web/bromley/report/display.html:141 -#: templates/web/fixmystreet/report/display.html:153 -#, fuzzy +#: templates/web/bromley/report/display.html:143 +#: templates/web/fixmystreet/report/update-form.html:115 msgid "We never show your email" -msgstr "(nid ydym byth yn dangos eich cyfeiriad e-bost na'ch rhif ffôn)" +msgstr "We never show your email" #: templates/web/bromley/report/new/fill_in_details_form.html:133 #: templates/web/bromley/report/new/fill_in_details_form.html:179 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:130 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:190 -#, fuzzy +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:134 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:201 +#: templates/web/zurich/report/new/fill_in_details_form.html:96 msgid "We never show your email address or phone number." -msgstr "(nid ydym byth yn dangos eich cyfeiriad e-bost na'ch rhif ffôn)" +msgstr "We never show your email address or phone number." -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:349 -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 "" +#: 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." -#: templates/web/default/index.html:34 templates/web/emptyhomes/index.html:59 -#: templates/web/fixmystreet/index.html:45 -msgid "" -"The details will be sent directly to the right person in the local council " -"for them to take action" -msgstr "" -"Caiff y manylion eu hanfon yn uniongyrchol at yr unigolyn cywir yn y cyngor " -"lleol er mwyn iddynt weithredu" +#: templates/web/default/index-steps.html:31 +msgid "The details will be sent directly to the right person in the local council for them to take action" +msgstr "Caiff y manylion eu hanfon yn uniongyrchol at yr unigolyn cywir yn y cyngor lleol er mwyn iddynt weithredu" #: templates/web/bromley/report/new/fill_in_details_form.html:217 #: templates/web/default/report/new/notes.html:5 -msgid "" -"We will only use your personal information in accordance with our <a href=\"/" -"faq#privacy\">privacy policy.</a>" -msgstr "" +#: templates/web/fixmybarangay/report/new/notes.html:5 +msgid "We will only use your personal information in accordance with our <a href=\"/faq#privacy\">privacy policy.</a>" +msgstr "We will only use your personal information in accordance with our <a href=\"/faq#privacy\">privacy policy.</a>" #: templates/web/fixmystreet/report/new/notes.html:4 -msgid "" -"We will only use your personal information in accordance with our <a href=\"/" -"privacy\">privacy policy.</a>" -msgstr "" +#: templates/web/oxfordshire/report/new/notes.html:4 +msgid "We will only use your personal information in accordance with our <a href=\"/privacy\">privacy policy.</a>" +msgstr "We will only use your personal information in accordance with our <a href=\"/privacy\">privacy policy.</a>" #: templates/web/emptyhomes/contact/blurb.html:2 -#, fuzzy -msgid "" -"We’d love to hear what you think about this website. Just fill in the " -"form. Please don’t contact us about individual empty homes; use the " -"box accessed from <a href=\"/\">the front page</a>." +msgid "We’d love to hear what you think about this website. Just fill in the form. Please don’t contact us about individual empty homes; use the box accessed from <a href=\"/\">the front page</a>." msgstr "" "Byddem wrth ein bodd yn clywed eich barn am y wefan hon.\n" -"Dim ond llenwi'r ffurflen sydd angen i chi ei wneud. Peidiwch â defnyddio " -"hwn i gysylltu â ni am dai gwag unigol;\n" +"Dim ond llenwi'r ffurflen sydd angen i chi ei wneud. Peidiwch â defnyddio hwn i gysylltu â ni am dai gwag unigol;\n" "defnyddiwch y blwch sydd i'w gael ar y <a href=\"/\">dudalen flaen</a>." #: templates/web/default/contact/blurb.html:8 -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>:" +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/council_contacts.html:41 -#: templates/web/default/admin/council_edit.html:41 +#: 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 "" +msgstr "When edited" -#: templates/web/default/admin/list_flagged.html:19 -#: templates/web/default/admin/search_reports.html:22 +#: templates/web/default/admin/problem_row.html:35 msgid "When sent" -msgstr "" +msgstr "When sent" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:612 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:621 msgid "Whole block of empty flats" msgstr "Bloc cyfan o fflatiau gwag" -#: templates/web/default/open311/index.html:25 -msgid "" -"With request searches, it is also possible to search for agency_responsible " -"to limit the requests to those sent to a single administration. The search " -"term is the administration ID provided by <a href=\"%s\">MaPit</a>." -msgstr "" +#: templates/web/default/open311/index.html:94 +msgid "With request searches, it is also possible to search for agency_responsible to limit the requests to those sent to a single administration. The search term is the administration ID provided by <a href=\"%s\">MaPit</a>." +msgstr "With request searches, it is also possible to search for agency_responsible to limit the requests to those sent to a single administration. The search term is the administration ID provided by <a href=\"%s\">MaPit</a>." -#: templates/web/fixmystreet/footer.html:22 -msgid "" -"Would you like better integration with reportemptyhomes.com? <a href=" -"\"http://www.mysociety.org/for-councils/fixmystreet/\">Find out about " -"reportemptyhomes.com for councils</a>." -msgstr "" +#: templates/web/fixmystreet/footer.html:21 +#: templates/web/stevenage/footer.html:22 +msgid "Would you like better integration with reportemptyhomes.com? <a href=\"http://www.mysociety.org/for-councils/fixmystreet/\">Find out about reportemptyhomes.com for councils</a>." +msgstr "Would you like better integration with reportemptyhomes.com? <a href=\"http://www.mysociety.org/for-councils/fixmystreet/\">Find out about reportemptyhomes.com for councils</a>." -#: templates/web/fixmystreet/footer.html:18 -msgid "" -"Would you like to contribute to reportemptyhomes.com? Our code is open " -"source and <a href=\"http://github.com/mysociety/fixmystreet\">available on " -"GitHub</a>." -msgstr "" +#: templates/web/fixmystreet/footer.html:17 +#: templates/web/stevenage/footer.html:18 +msgid "Would you like to contribute to reportemptyhomes.com? Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>." +msgstr "Would you like to contribute to reportemptyhomes.com? Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>." -#: templates/web/default/questionnaire/index.html:102 +#: templates/web/default/questionnaire/index.html:106 #: templates/web/fixmystreet/questionnaire/index.html:96 -msgid "" -"Would you like to receive another questionnaire in 4 weeks, reminding you to " -"check the status?" -msgstr "" +msgid "Would you like to receive another questionnaire in 4 weeks, reminding you to check the status?" +msgstr "Would you like to receive another questionnaire in 4 weeks, reminding you to check the status?" #: templates/web/default/report/new/notes.html:8 -#: templates/web/fixmystreet/report/new/notes.html:7 -msgid "" -"Writing your message entirely in block capitals makes it hard to read, as " -"does a lack of punctuation." -msgstr "" +#: templates/web/fixmybarangay/report/new/notes.html:8 +#: templates/web/fixmystreet/report/new/notes.html:8 +#: templates/web/oxfordshire/report/new/notes.html:7 +msgid "Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation." +msgstr "Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation." #: templates/web/default/admin/stats.html:10 msgid "Year" -msgstr "" - -#: templates/web/default/admin/council_contacts.html:48 -#: templates/web/default/admin/council_contacts.html:49 -#: templates/web/default/admin/council_edit.html:5 -#: templates/web/default/admin/list_updates.html:30 -#: templates/web/default/admin/list_updates.html:31 +msgstr "Year" + +#: 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/problem_row.html:19 -#: templates/web/default/admin/report_edit.html:27 -#: templates/web/default/admin/report_edit.html:41 -#: templates/web/default/admin/search_users.html:23 -#: templates/web/default/admin/update_edit.html:15 +#: 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:105 +#: 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 "Ydw" -#: templates/web/bromley/report/display.html:155 +#: templates/web/bromley/report/display.html:157 #: templates/web/bromley/report/new/fill_in_details_form.html:198 -#: templates/web/fixmystreet/report/display.html:133 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:156 -#, fuzzy +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:161 +#: templates/web/fixmystreet/report/update-form.html:89 msgid "Yes I have a password" -msgstr "Adrodd am eiddo gwag a gweld y rhain" +msgstr "Yes I have a password" #: templates/web/default/contact/index.html:37 -#: templates/web/fixmystreet/contact/index.html:38 -msgid "" -"You are reporting the following empty property report for being abusive, " -"containing personal information, or similar:" -msgstr "" -"Rydych yn cwyno am yr adroddiad canlynol am eiddo gwag gan ei fod yn " -"sarhaus, neu'n cynnwys gwybodaeth bersonol, neu debyg:" +#: templates/web/fixmystreet/contact/index.html:50 +msgid "You are reporting the following empty property report for being abusive, containing personal information, or similar:" +msgstr "Rydych yn cwyno am yr adroddiad canlynol am eiddo gwag gan ei fod yn sarhaus, neu'n cynnwys gwybodaeth bersonol, neu debyg:" #: templates/web/default/contact/index.html:15 -#: templates/web/fixmystreet/contact/index.html:16 -msgid "" -"You are reporting the following update for being abusive, containing " -"personal information, or similar:" +#: templates/web/fixmystreet/contact/index.html:28 +msgid "You are reporting the following update for being abusive, containing personal information, or similar:" +msgstr "You are reporting the following update for being abusive, containing personal information, or similar:" + +#: templates/web/default/tokens/confirm_problem.html:19 +#: templates/web/default/tokens/confirm_problem.html:21 +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:8 +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/emptyhomes/reports/council.html:64 -#, fuzzy +#: templates/web/default/admin/flagged.html:5 msgid "" -"You can <a href=\"%s\">view all reports for the council</a> or <a href=\"/" -"reports\">show all councils</a>." +"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 "" -"Gallwch <a href=\"%s\">weld llai o fanylion</a> neu fynd yn ôl a <a href=\"/" -"reports\">dangos pob cyngor</a>." -#: templates/web/emptyhomes/reports/council.html:66 -#, fuzzy -msgid "You can <a href=\"/reports\">show all councils</a>." -msgstr "Gallwch <a href=\"%s\">weld mwy o fanylion</a>." - -#: templates/web/default/report/new/councils_text_none.html:14 -#: templates/web/default/report/new/councils_text_none.html:16 +#: 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 empty " -"properties for %s and emailing it to us at <a href='mailto:%s'>%s</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/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" + #: perllib/FixMyStreet/App/Controller/Questionnaire.pm:38 -msgid "" -"You have already answered this questionnaire. If you have a question, please " -"<a href='%s'>get in touch</a>, or <a href='%s'>view your empty property</" -"a>.\n" -msgstr "" -"Rydych eisoes wedi ateb yr holiadur hwn. Os oes gennych gwestiwn, <a " -"href='%s'>cysylltwch â ni</a>, neu ewch i <a href='%s'>weld eich eiddo gwag</" -"a>.\n" +msgid "You have already answered this questionnaire. If you have a question, please <a href='%s'>get in touch</a>, or <a href='%s'>view your empty property</a>.\n" +msgstr "Rydych eisoes wedi ateb yr holiadur hwn. Os oes gennych gwestiwn, <a href='%s'>cysylltwch â ni</a>, neu ewch i <a href='%s'>weld eich eiddo gwag</a>.\n" #: templates/web/bromley/report/new/fill_in_details_form.html:97 -#: templates/web/default/questionnaire/index.html:92 +#: templates/web/default/questionnaire/index.html:96 #: templates/web/default/report/new/fill_in_details_form.html:93 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:90 #: templates/web/fixmystreet/questionnaire/index.html:87 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:101 -msgid "" -"You have already attached a photo to this report, attaching another one will " -"replace it." -msgstr "" - -#: templates/web/bromley/report/display.html:106 -#: templates/web/default/report/display.html:106 -#: templates/web/fixmystreet/report/display.html:100 -msgid "" -"You have already attached a photo to this update, attaching another one will " -"replace it." -msgstr "" +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:99 +#: templates/web/seesomething/report/new/fill_in_details_form.html:59 +#: templates/web/zurich/report/new/fill_in_details_form.html:75 +msgid "You have already attached a photo to this report, attaching another one will replace it." +msgstr "Rydych chi eisoes wedi atodi ffotograff wrth yr adroddiad hwn. Bydd atodi llun arall yn disodli’r ffotograff hwnnw." + +#: templates/web/bromley/report/display.html:108 +#: templates/web/default/report/update-form.html:59 +#: templates/web/fixmystreet/report/update-form.html:56 +msgid "You have already attached a photo to this update, attaching another one will replace it." +msgstr "You have already attached a photo to this update, attaching another one will replace it." #: templates/web/default/auth/sign_out.html:3 +#: templates/web/seesomething/auth/sign_out.html:3 +#: templates/web/zurich/auth/sign_out.html:3 msgid "You have been signed out" -msgstr "" +msgstr "You have been signed out" #: templates/web/bromley/report/new/fill_in_details_form.html:25 #: templates/web/default/report/new/fill_in_details_form.html:7 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:27 -#, fuzzy -msgid "" -"You have located the empty property at the point marked with a green pin on " -"the map. If this is not the correct location, simply click on the map again. " -msgstr "" -"Rydych wedi gosod lleoliad yr eiddo gwag wrth y pwynt sy'n cael ei ddangos " -"gan y pin porffor ar y map.\n" -"Os nad dyma'r lleoliad cywir, cliciwch ar y map eto. " +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:7 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:28 +#: templates/web/zurich/report/new/fill_in_details_form.html:13 +msgid "You have located the empty property at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. " +msgstr "Rydych wedi dangos lleoliad y broblem wrth y pin gwyrdd ar y map. Os nad dyma’r lleoliad cywir, cliciwch ar y map unwaith eto." #: templates/web/default/tokens/confirm_alert.html:7 msgid "You have successfully confirmed your alert." msgstr "Rydych wedi cadarnhau'ch hysbysiad yn llwyddiannus." +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:6 +msgid "You have successfully confirmed your email address." +msgstr "You have successfully confirmed your email address." + #: templates/web/default/tokens/confirm_problem.html:14 #: templates/web/default/tokens/confirm_problem.html:15 msgid "You have successfully confirmed your empty property" @@ -4030,47 +4321,47 @@ msgstr "Rydych wedi cadarnhau eich eiddo gwag yn llwyddiannus" #: templates/web/default/tokens/confirm_update.html:11 #: templates/web/default/tokens/confirm_update.html:12 -msgid "" -"You have successfully confirmed your update and you can now <a href=\"%s" -"\">view it on the site</a>." -msgstr "" -"Rydych wedi cadarnhau eich diweddariad yn llwyddiannus ac nawr gallwch <a " -"href=\"%s\">weld hwn ar y safle</a>." +msgid "You have successfully confirmed your update and you can now <a href=\"%s\">view it on the site</a>." +msgstr "Rydych wedi cadarnhau eich diweddariad yn llwyddiannus ac nawr gallwch <a href=\"%s\">weld hwn ar y safle</a>." #: templates/web/default/tokens/confirm_alert.html:11 -#, fuzzy msgid "You have successfully created your alert." -msgstr "Rydych wedi dileu'ch hysbysiad yn llwyddiannus." +msgstr "You have successfully created your alert." #: templates/web/default/tokens/confirm_alert.html:9 msgid "You have successfully deleted your alert." msgstr "Rydych wedi dileu'ch hysbysiad yn llwyddiannus." -#: perllib/FixMyStreet/App/Controller/Report/New.pm:740 -#: perllib/FixMyStreet/App/Controller/Report/Update.pm:136 -#, fuzzy -msgid "" -"You have successfully signed in; please check and confirm your details are " -"accurate:" -msgstr "Rydych wedi cadarnhau'ch hysbysiad yn llwyddiannus." +#: perllib/FixMyStreet/App/Controller/Report/New.pm:754 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:140 +msgid "You have successfully signed in; please check and confirm your details are accurate:" +msgstr "You have successfully signed in; please check and confirm your details are accurate:" + +#: templates/web/default/email_sent.html:13 +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/email_sent.html:26 +#: 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 must now click the link in the email we've just sent you — if you " -"do not, %s." +"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:35 +#: templates/web/default/admin/report_edit.html:71 msgid "You really want to resend?" -msgstr "" +msgstr "You really want to resend?" #: templates/web/default/my/my.html:0 templates/web/default/my/my.html:14 #: templates/web/default/my/my.html:3 templates/web/fixmystreet/my/my.html:0 #: templates/web/fixmystreet/my/my.html:14 #: templates/web/fixmystreet/my/my.html:3 -#, fuzzy msgid "Your Reports" -msgstr "Adroddiadau" +msgstr "Your Reports" #: templates/web/bromley/report/display.html:41 #: templates/web/bromley/report/display.html:43 @@ -4078,276 +4369,365 @@ msgstr "Adroddiadau" #: templates/web/fixmystreet/alert/_list.html:89 #: templates/web/fixmystreet/alert/updates.html:19 #: templates/web/fixmystreet/alert/updates.html:22 -#: templates/web/fixmystreet/contact/index.html:72 -#: templates/web/fixmystreet/report/display.html:34 -#: templates/web/fixmystreet/report/display.html:36 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:142 -#, fuzzy +#: templates/web/fixmystreet/contact/index.html:84 +#: templates/web/fixmystreet/report/display.html:65 +#: templates/web/fixmystreet/report/display.html:67 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:115 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:147 +#: templates/web/zurich/report/new/fill_in_details_form.html:88 msgid "Your email" -msgstr "Eich cyfeiriad e-bost:" +msgstr "Your email" -#: templates/web/bromley/report/display.html:130 +#: templates/web/seesomething/report/new/fill_in_details_form.html:81 +msgid "Your email (optional)" +msgstr "Your email (optional)" + +#: templates/web/bromley/report/display.html:132 #: templates/web/fixmystreet/auth/general.html:26 -#: templates/web/fixmystreet/report/display.html:124 -#, fuzzy +#: 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 "Eich cyfeiriad e-bost:" +msgstr "Your email address" #: templates/web/default/auth/general.html:27 -#, fuzzy msgid "Your email address:" -msgstr "Eich cyfeiriad e-bost:" +msgstr "Your email address:" #: templates/web/default/alert/_list.html:92 -#: templates/web/default/report/display.html:128 #: templates/web/default/report/new/fill_in_details_form.html:124 +#: templates/web/default/report/update-form.html:81 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:133 +#: templates/web/fixmybarangay/alert/_list.html:37 msgid "Your email:" msgstr "Eich cyfeiriad e-bost:" -#: templates/web/bromley/report/display.html:193 +#: templates/web/bromley/report/display.html:195 #: templates/web/bromley/report/new/fill_in_details_form.html:117 #: templates/web/bromley/report/new/fill_in_details_form.html:164 -#, fuzzy msgid "Your first name" -msgstr "Eich enw:" +msgstr "Your first name" #: templates/web/fixmystreet/report/updates-sidebar-notes.html:5 -msgid "" -"Your information will only be used in accordance with our <a href=\"/privacy" -"\">privacy policy</a>" -msgstr "" +msgid "Your information will only be used in accordance with our <a href=\"/privacy\">privacy policy</a>" +msgstr "Your information will only be used in accordance with our <a href=\"/privacy\">privacy policy</a>" -#: templates/web/bromley/report/display.html:199 +#: templates/web/bromley/report/display.html:201 #: templates/web/bromley/report/new/fill_in_details_form.html:123 #: templates/web/bromley/report/new/fill_in_details_form.html:170 -#, fuzzy msgid "Your last name" -msgstr "Eich enw:" +msgstr "Your last name" -#: templates/web/fixmystreet/auth/general.html:53 -#: templates/web/fixmystreet/contact/index.html:65 -#: templates/web/fixmystreet/report/display.html:181 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:121 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:181 -#, fuzzy +#: 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 "Eich enw:" +msgstr "Your name" #: templates/web/default/auth/general.html:59 #: templates/web/default/contact/index.html:68 -#: templates/web/default/report/display.html:202 #: templates/web/default/report/new/fill_in_details_form.html:203 +#: templates/web/default/report/update-form.html:151 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:124 msgid "Your name:" msgstr "Eich enw:" -#: templates/web/bromley/report/display.html:160 +#: templates/web/bromley/report/display.html:162 #: templates/web/bromley/report/new/fill_in_details_form.html:203 -#: templates/web/fixmystreet/auth/general.html:37 -#: templates/web/fixmystreet/report/display.html:138 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:161 -#, fuzzy +#: templates/web/fixmystreet/auth/general.html:41 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:166 +#: templates/web/fixmystreet/report/update-form.html:94 +#: templates/web/seesomething/auth/general.html:30 +#: templates/web/zurich/auth/general.html:34 msgid "Your password" -msgstr "Adroddiadau" +msgstr "Your password" #: templates/web/default/auth/change_password.html:6 msgid "Your password has been changed" -msgstr "" +msgstr "Your password has been changed" #: 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:134 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:195 +#: 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 "" +msgstr "Your phone number" #: templates/web/fixmystreet/questionnaire/index.html:15 -#, fuzzy msgid "Your report" -msgstr "Adroddiadau" +msgstr "Your report" + +#: templates/web/default/report_created.html:6 +msgid "Your report has been created and will shortly be sent." +msgstr "Your report has been created and will shortly be sent." #: 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:47 -#: templates/web/reading/footer.html:7 -#, fuzzy +#: 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 "Adroddiadau" +msgstr "Your reports" -#: templates/web/default/my/my.html:45 templates/web/fixmystreet/my/my.html:45 -#, fuzzy +#: templates/web/default/my/my.html:45 templates/web/fixmystreet/my/my.html:49 msgid "Your updates" -msgstr "Adroddiadau" +msgstr "Your updates" #: templates/web/default/contact/index.html:76 msgid "Your email:" msgstr "Eich cyfeiriad e-bost:" -#: templates/web/default/admin/timeline.html:6 +#: templates/web/default/admin/timeline.html:4 msgid "by %s" -msgstr "" +msgstr "by %s" -#: templates/web/default/reports/council.html:12 -#: templates/web/default/reports/council.html:13 -#: templates/web/emptyhomes/reports/council.html:6 -#: templates/web/emptyhomes/reports/council.html:7 +#: templates/web/default/reports/body.html:6 +#: templates/web/default/reports/body.html:7 msgid "council" msgstr "cyngor" -#: templates/web/default/admin/report_edit.html:15 +#: perllib/FixMyStreet/DB/Result/Problem.pm:649 +msgid "council ref: %s" +msgstr "council ref: %s" + +#: 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 "" +msgstr "didn't use map" #: templates/web/default/alert/index.html:33 -#: templates/web/fixmystreet/around/postcode_form.html:17 +#: templates/web/fixmystreet/around/postcode_form.html:20 +#: templates/web/seesomething/around/postcode_form.html:9 msgid "e.g. ‘%s’ or ‘%s’" -msgstr "" +msgstr "e.g. ‘%s’ or ‘%s’" + +#: templates/web/default/admin/flagged.html:51 +#, fuzzy +msgid "edit user" +msgstr "Add user" -#: templates/web/default/admin/index.html:15 +#: templates/web/default/admin/index.html:23 +#: templates/web/zurich/admin/index.html:5 msgid "from %d different users" -msgstr "" +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" +msgstr "last updated %s" -#: perllib/Utils.pm:289 +#: perllib/Utils.pm:263 msgid "less than a minute" msgstr "llai na munud" -#: templates/web/default/report/updates.html:27 -msgid "marked as %s" -msgstr "" +#: templates/web/default/report/updates.html:57 +#, fuzzy +msgid "marked as a duplicate report" +msgstr "duplicate report" + +#: templates/web/default/report/updates.html:47 +#, fuzzy +msgid "marked as action scheduled" +msgstr "Action Scheduled" -#: templates/web/default/report/updates.html:25 +#: templates/web/default/report/updates.html:59 +#, fuzzy +msgid "marked as an internal referral" +msgstr "Internal notes:" + +#: templates/web/default/report/updates.html:49 +#, fuzzy +msgid "marked as closed" +msgstr "marked as %s" + +#: templates/web/default/report/updates.html:28 +#: templates/web/default/report/updates.html:51 msgid "marked as returned to use" msgstr "cofnodwyd bod hyn wedi'i adfer i'w ddefnyddio" -#: perllib/FixMyStreet/App/Controller/Admin.pm:112 +#: templates/web/default/report/updates.html:45 +#, fuzzy +msgid "marked as in progress" +msgstr "marked as %s" + +#: templates/web/default/report/updates.html:41 +#, fuzzy +msgid "marked as investigating" +msgstr "Investigating" + +#: templates/web/default/report/updates.html:55 +#, fuzzy +msgid "marked as not the council's responsibility" +msgstr "not the council's responsibility" + +#: templates/web/default/report/updates.html:43 +#, fuzzy +msgid "marked as planned" +msgstr "marked as %s" + +#: templates/web/default/report/updates.html:53 +#, fuzzy +msgid "marked as unable to fix" +msgstr "cofnodwyd bod hyn wedi'i adfer i'w ddefnyddio" + +#: 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 "" +msgstr "n/a" #: templates/web/default/alert/_list.html:87 +#: templates/web/fixmybarangay/alert/_list.html:32 #: templates/web/fixmystreet/alert/_list.html:85 msgid "or" msgstr "neu" -#: templates/web/default/admin/report_edit.html:15 -msgid "originally entered" -msgstr "" +#: 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: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: “%s”" +msgstr "originally entered: “%s”" -#: templates/web/default/admin/report_edit.html:16 +#: templates/web/default/admin/report_edit.html:30 msgid "other areas:" -msgstr "" +msgstr "other areas:" -#: templates/web/default/report/updates.html:26 +#: templates/web/default/report/updates.html:29 +#: templates/web/default/report/updates.html:39 msgid "reopened" msgstr "wedi'i ailagor" #: templates/web/barnet/header.html:71 templates/web/bromley/header.html:100 #: templates/web/bromley/header.html:65 -#: templates/web/fixmybarangay/header.html.orig:43 -#: templates/web/fixmystreet/header.html:48 -#: templates/web/zurich/header.html:48 +#: templates/web/fixmybarangay/header.html:67 +#: templates/web/fixmystreet/header.html:51 +#: templates/web/oxfordshire/header.html:112 +#: templates/web/oxfordshire/header.html:48 +#: templates/web/stevenage/header.html:98 templates/web/zurich/footer.html:12 msgid "sign out" -msgstr "" +msgstr "sign out" #: templates/web/bromley/report/new/fill_in_details_form.html:4 #: templates/web/bromley/report/new/fill_in_details_form.html:7 #: templates/web/default/report/new/fill_in_details_form.html:11 #: templates/web/default/report/new/fill_in_details_form.html:14 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:14 #: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 #: templates/web/fixmystreet/report/new/fill_in_details_form.html:9 -#, fuzzy msgid "the local council" -msgstr "Ni roddwyd gwybod i'r cyngor am hyn" +msgstr "y cyngor lleol" -#: perllib/FixMyStreet/DB/Result/Problem.pm:541 -msgid "the map was not used so pin location may be inaccurate" -msgstr "" -"ni ddefnyddiwyd y map felly mae'n bosibl na fydd lleoliad y pin yn gywir" +#: templates/web/default/report/_main.html:6 +#: templates/web/zurich/report/_main.html:5 +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/Result/Problem.pm:603 -msgid "their ref: %s" -msgstr "" - -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:330 -#, fuzzy +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362 msgid "this type of local empty property" -msgstr "Anfonwch fanylion eiddo gwag lleol newydd ataf i drwy'r e-bost" +msgstr "math hwn o eiddo gwag lleol" -#: perllib/Utils.pm:263 +#: perllib/Utils.pm:235 msgid "today" msgstr "heddiw" -#: templates/web/default/admin/report_edit.html:15 +#: 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 "" +msgstr "used map" -#: templates/web/default/admin/update_edit.html:26 +#: templates/web/default/admin/update_edit.html:35 msgid "user is from same council as empty property - %d" -msgstr "" +msgstr "user is from same council as empty property - %d" -#: templates/web/default/admin/update_edit.html:29 -#, fuzzy +#: templates/web/default/admin/update_edit.html:38 msgid "user is empty property owner" -msgstr "Adroddiadau hŷn o eiddo gwag" +msgstr "user is empty property owner" -#: templates/web/default/reports/council.html:0 -#: templates/web/default/reports/council.html:9 -#: templates/web/emptyhomes/reports/council.html:0 -#: templates/web/emptyhomes/reports/council.html:3 +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:3 msgid "ward" -msgstr "" +msgstr "ward" -#: templates/web/default/email_sent.html:15 -#: templates/web/default/email_sent.html:3 -msgid "we'll hang on to your alert while you're checking your email." -msgstr "byddwn yn dal gafael ar eich hysbysiad wrth i chi wirio eich e-bost." - -#: templates/web/default/email_sent.html:3 -#: templates/web/default/email_sent.html:7 -msgid "" -"we'll hang on to your empty property report while you're checking your email." -msgstr "" -"byddwn yn dal gafael ar eich hysbysiad am eiddo gwag wrth i chi wirio eich e-" -"bost." +#: templates/web/default/front/stats.html:17 +#, perl-format +msgid "<big>%s</big> report recently" +msgid_plural "<big>%s</big> reports recently" +msgstr[0] "<big>%s</big> adroddiad yn ddiweddar" +msgstr[1] "<big>%s</big> o adroddiadau yn ddiweddar" -#: templates/web/default/email_sent.html:11 -#: templates/web/default/email_sent.html:3 -msgid "we'll hang on to your update while you're checking your email." -msgstr "byddwn yn dal gafael ar eich diweddariad wrth i chi wirio eich e-bost." +#: perllib/Utils.pm:282 +#, perl-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d awr" +msgstr[1] "%d awr" -#: templates/web/default/email_sent.html:14 -#: templates/web/default/email_sent.html:3 -msgid "your alert will not be activated" -msgstr "ni fydd eich hysbysiad yn cael ei weithredu" +#: templates/web/default/report/_support.html:6 +#, perl-format +msgid "%d supporter" +msgid_plural "%d supporters" +msgstr[0] "%d supporter" +msgstr[1] "%d supporters" -#: templates/web/default/email_sent.html:3 -#: templates/web/default/email_sent.html:6 -msgid "your empty property will not be posted" -msgstr "ni fydd eich eiddo gwag yn cael ei bostio" +#: perllib/Utils.pm:284 +#, perl-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d munud" +msgstr[1] "%d munud" -#: templates/web/default/email_sent.html:10 -#: templates/web/default/email_sent.html:3 -msgid "your update will not be posted" -msgstr "ni fydd eich diweddariad yn cael ei bostio" +#: templates/web/default/front/stats.html:29 +#, perl-format +msgid "<big>%s</big> update on reports" +msgid_plural "<big>%s</big> updates on reports" +msgstr[0] "<big>%s</big> diweddariad ar adroddiadau" +msgstr[1] "<big>%s</big> diweddariad ar adroddiadau" #: templates/web/emptyhomes/report/new/councils_text_none.html:3 #, perl-format 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] "" +msgid_plural "We do not yet have details for the councils that cover this location." +msgstr[0] "Ar hyn o bryd, nid oes gennym fanylion y cyngor sy’n gyfrifol am y lleoliad hwn. Os byddwch yn cyflwyno adroddiad fan hyn, caiff ei adael ar y safle, ond ni fydd y cyngor yn cael gwybod amdano – gadewch eich adroddiad serch hynny, fel y gallwn ddangos i’r cyngor pa weithgarwch sydd yn ei ardal." +msgstr[1] "Ar hyn o bryd, nid oes gennym fanylion y cyngor sy’n gyfrifol am y lleoliad hwn. Os byddwch yn cyflwyno adroddiad fan hyn, caiff ei adael ar y safle, ond ni fydd y cyngor yn cael gwybod amdano – gadewch eich adroddiad serch hynny, fel y gallwn ddangos i’r cyngor pa weithgarwch sydd yn ei ardal." -#: templates/web/emptyhomes/front/stats.html:17 +#: perllib/Utils.pm:278 #, perl-format -msgid "<big>%s</big> report recently" -msgid_plural "<big>%s</big> reports recently" -msgstr[0] "<big>%s</big> adroddiad yn ddiweddar" -msgstr[1] "<big>%s</big> o adroddiadau yn ddiweddar" +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "%d wythnos" +msgstr[1] "%d wythnos" -#: templates/web/emptyhomes/front/stats.html:12 +#: templates/web/default/front/stats.html:12 #, perl-format msgid "<big>%s</big> report in past week" msgid_plural "<big>%s</big> reports in past week" @@ -4363,21 +4743,123 @@ msgstr[1] "Dychwelwyd <big>%s</big> i'w defnyddio yn y mis diwethaf" #: templates/web/default/report/new/councils_text_some.html:14 #, perl-format -msgid "" -"We do <strong>not</strong> yet have details for the other council that " -"covers this location." -msgid_plural "" -"We do <strong>not</strong> yet have details for the other councils that " -"cover this location." -msgstr[0] "" -msgstr[1] "" +msgid "We do <strong>not</strong> yet have details for the other council that covers this location." +msgid_plural "We do <strong>not</strong> yet have details for the other councils that cover this location." +msgstr[0] "We do <strong>not</strong> yet have details for the other council that covers this location." +msgstr[1] "We do <strong>not</strong> yet have details for the other councils that cover this location." -#: templates/web/default/front/stats.html:29 +#: perllib/Utils.pm:280 #, perl-format -msgid "<big>%s</big> update on reports" -msgid_plural "<big>%s</big> updates on reports" -msgstr[0] "<big>%s</big> diweddariad ar adroddiadau" -msgstr[1] "<big>%s</big> diweddariad ar adroddiadau" +msgid "%d day" +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" + +#~ msgid "third party responsibility" +#~ msgstr "third party responsibility" + +#, fuzzy +#~ msgid "All the information you provide here will be sent to <strong>%s</strong>. On the site, we will show the subject and details of the empty property, plus your name if you give us permission." +#~ msgstr "" +#~ "Bydd yr holl wybodaeth a ddarperir gennych yma'n cael ei hanfon at <strong>%s</strong>.\n" +#~ "Ar y safle, byddwn yn dangos pwnc a manylion yr eiddo gwag,\n" +#~ "ynghyd â'ch enw os ydych yn rhoi caniatâd i ni." + +#~ msgid "Enter a nearby GB postcode, or street name and area" +#~ msgstr "Cofnodwch god post Prydeinig, neu enw stryd ac ardal gerllaw" + +#~ msgid "Thanks for uploading your photo. We now need to locate your empty property, so please enter a nearby street name or postcode in the box below :" +#~ msgstr "Diolch am lwytho'ch ffotograff i fyny. Nawr mae angen i ni ddod o hyd i leoliad eich eiddo gwag, felly rhowch enw stryd gerllaw neu god post yn y blwch isod :" + +#~ msgid "This is a summary of all reports for one %s." +#~ msgstr "Dyma grynodeb o'r holl adroddiadau ar gyfer y %s." + +#, fuzzy +#~ msgid "To <strong>report an empty property</strong>, simply click on the map at the correct location." +#~ msgstr "" +#~ "Er mwyn rhoi gwybod am eiddo gwag\n" +#~ " <strong>cliciwch ar y map</strong> wrth y lleoliad cywir." + +#, fuzzy +#~ msgid "You can <a href=\"%s\">view all reports for the council</a> or <a href=\"/reports\">show all councils</a>." +#~ msgstr "Gallwch <a href=\"%s\">weld llai o fanylion</a> neu fynd yn ôl a <a href=\"/reports\">dangos pob cyngor</a>." + +#, fuzzy +#~ msgid "You can <a href=\"/reports\">show all councils</a>." +#~ msgstr "Gallwch <a href=\"%s\">weld mwy o fanylion</a>." + +#, fuzzy +#~ msgid "All the information you provide here will be sent to <strong>Stadt Zürich</strong>." +#~ msgstr "" +#~ "Bydd yr holl wybodaeth a ddarperir gennych yma'n cael ei hanfon at <strong>%s</strong>.\n" +#~ "Ar y safle, byddwn yn dangos pwnc a manylion yr eiddo gwag,\n" +#~ "ynghyd â'ch enw os ydych yn rhoi caniatâd i ni." + +#, fuzzy +#~ msgid "Reported at %s" +#~ msgstr "Adroddiadau" + +#, fuzzy +#~ msgid "Empty property ID" +#~ msgstr "Eiddo gwag" + +#, fuzzy +#~ msgid "Configuration updated" +#~ msgstr "Cadarnhau" + +#, fuzzy +#~ msgid "Council contacts" +#~ msgstr "Cysylltwch â Ni" + +#, fuzzy +#~ msgid "Councils" +#~ msgstr "cyngor" + +#, fuzzy +#~ msgid "reportemptyhomes.com administration" +#~ msgstr "Diweddariadau i reportemptyhomes.com" + +#, fuzzy +#~ msgid "Search Abuse" +#~ msgstr "Adroddiadau cryno" + +#, fuzzy +#~ msgid "%d days" +#~ msgstr "diwrnod" + +#, fuzzy +#~ msgid "%d hours" +#~ msgstr "awr" + +#, fuzzy +#~ msgid "%d minutes" +#~ msgstr "munud" + +#, fuzzy +#~ msgid "%d weeks" +#~ msgstr "wythnos" + +#~ msgid "the map was not used so pin location may be inaccurate" +#~ msgstr "ni ddefnyddiwyd y map felly mae'n bosibl na fydd lleoliad y pin yn gywir" #, fuzzy #~ msgid "reportemptyhomes.com for Councils" @@ -4388,10 +4870,7 @@ msgstr[1] "<big>%s</big> diweddariad ar adroddiadau" #~ msgstr "Adroddiadau newydd ar reportemptyhomes.com" #, fuzzy -#~ msgid "" -#~ "That spot does not appear to be covered by a council. If you have tried " -#~ "to report an issue past the shoreline, for example, please specify the " -#~ "closest point on land." +#~ msgid "That spot does not appear to be covered by a council. If you have tried to report an issue past the shoreline, for example, please specify the closest point on land." #~ msgstr "" #~ "Nid yw'n ymddangos bod cyngor yn gyfrifol am y lleoliad hwnnw.\n" #~ "Os ydych wedi ceisio adrodd am broblem oddi ar y lân, er enghraifft,\n" @@ -4399,12 +4878,10 @@ msgstr[1] "<big>%s</big> diweddariad ar adroddiadau" #, fuzzy #~ msgid "" -#~ "To find out what local alerts we have in your area, council or ward, " -#~ "please enter your GB\n" +#~ "To find out what local alerts we have in your area, council or ward, please enter your GB\n" #~ " postcode or street name and area" #~ msgstr "" -#~ "I gael gwybod pa hysbysiadau lleol sydd gennym yn eich ardal, cyngor neu " -#~ "ward chi,\n" +#~ "I gael gwybod pa hysbysiadau lleol sydd gennym yn eich ardal, cyngor neu ward chi,\n" #~ "cofnodwch eich cod post Prydeinig neu enw stryd ac ardal:" #, fuzzy @@ -4415,14 +4892,8 @@ msgstr[1] "<big>%s</big> diweddariad ar adroddiadau" #~ msgid "<strong>Yes</strong>, I have a password:" #~ msgstr "Adrodd am eiddo gwag a gweld y rhain" -#~ msgid "" -#~ "<a href=\"http://www.mysociety.org/\"><img id=\"logo\" width=\"133\" " -#~ "height=\"26\" src=\"/i/mysociety-dark.png\" alt=\"View mySociety.org" -#~ "\"><span id=\"logoie\"></span></a>" -#~ msgstr "" -#~ "<a href=\"http://www.mysociety.org/\"><img id=\"logo\" width=\"133\" " -#~ "height=\"26\" src=\"/i/mysociety-dark.png\" alt=\"View mySociety.org" -#~ "\"><span id=\"logoie\"></span></a>" +#~ msgid "<a href=\"http://www.mysociety.org/\"><img id=\"logo\" width=\"133\" height=\"26\" src=\"/i/mysociety-dark.png\" alt=\"View mySociety.org\"><span id=\"logoie\"></span></a>" +#~ msgstr "<a href=\"http://www.mysociety.org/\"><img id=\"logo\" width=\"133\" height=\"26\" src=\"/i/mysociety-dark.png\" alt=\"View mySociety.org\"><span id=\"logoie\"></span></a>" #~ msgid "Hide stale reports" #~ msgstr "Cuddio hen adroddiadau " @@ -4442,42 +4913,19 @@ msgstr[1] "<big>%s</big> diweddariad ar adroddiadau" #~ msgid "Photos of recent reports" #~ msgstr "Ffotograffau o adroddiadau diweddar" -#~ msgid "" -#~ "We do not cover Northern Ireland, I'm afraid, as our licence doesn't " -#~ "include any maps for the region." -#~ msgstr "" -#~ "Nid ydym yn ymdrin â Gogledd Iwerddon, yn anffodus, gan nad yw ein " -#~ "trwydded yn cynnwys unrhyw fapiau ar gyfer y rhanbarth." +#~ msgid "We do not cover Northern Ireland, I'm afraid, as our licence doesn't include any maps for the region." +#~ msgstr "Nid ydym yn ymdrin â Gogledd Iwerddon, yn anffodus, gan nad yw ein trwydded yn cynnwys unrhyw fapiau ar gyfer y rhanbarth." #, fuzzy -#~ msgid "" -#~ "© Crown copyright. All rights reserved. Ministry of Justice " -#~ "100037819 2008." +#~ msgid "© Crown copyright. All rights reserved. Ministry of Justice 100037819 2008." #~ msgstr "Hawlfraint y Goron. Cedwir pob hawl. Y Weinyddiaeth Amddiffyn" #, fuzzy -#~ msgid "" -#~ "Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and " -#~ "maintained by <a href=\"http://www.nuug.no/\">NUUG</a>, using some <a " -#~ "href=\"http://github.com/mysociety/fixmystreet\">clever</a> <a href=" -#~ "\"https://secure.mysociety.org/cvstrac/dir?d=mysociety/services/TilMa" -#~ "\">code</a>." -#~ msgstr "" -#~ "Adeiladwyd gan <a href=\"http://www.mysociety.org/\">mySociety</a>, gan " -#~ "ddefnyddio tipyn o <a href=\"https://secure.mysociety.org/cvstrac/dir?" -#~ "d=mysociety/services/TilMa\">god</a><a href=\"http://github.com/mysociety/" -#~ "fixmystreet\">clyfar</a> ." +#~ msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained by <a href=\"http://www.nuug.no/\">NUUG</a>, using some <a href=\"http://github.com/mysociety/fixmystreet\">clever</a> <a href=\"https://secure.mysociety.org/cvstrac/dir?d=mysociety/services/TilMa\">code</a>." +#~ msgstr "Adeiladwyd gan <a href=\"http://www.mysociety.org/\">mySociety</a>, gan ddefnyddio tipyn o <a href=\"https://secure.mysociety.org/cvstrac/dir?d=mysociety/services/TilMa\">god</a><a href=\"http://github.com/mysociety/fixmystreet\">clyfar</a> ." -#~ msgid "" -#~ "Built by <a href=\"http://www.mysociety.org/\">mySociety</a>, using some " -#~ "<a href=\"http://github.com/mysociety/fixmystreet\">clever</a> <a " -#~ "href=\"https://secure.mysociety.org/cvstrac/dir?d=mysociety/services/TilMa" -#~ "\">code</a>." -#~ msgstr "" -#~ "Adeiladwyd gan <a href=\"http://www.mysociety.org/\">mySociety</a>, gan " -#~ "ddefnyddio tipyn o <a href=\"https://secure.mysociety.org/cvstrac/dir?" -#~ "d=mysociety/services/TilMa\">god</a><a href=\"http://github.com/mysociety/" -#~ "fixmystreet\">clyfar</a> ." +#~ msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a>, using some <a href=\"http://github.com/mysociety/fixmystreet\">clever</a> <a href=\"https://secure.mysociety.org/cvstrac/dir?d=mysociety/services/TilMa\">code</a>." +#~ msgstr "Adeiladwyd gan <a href=\"http://www.mysociety.org/\">mySociety</a>, gan ddefnyddio tipyn o <a href=\"https://secure.mysociety.org/cvstrac/dir?d=mysociety/services/TilMa\">god</a><a href=\"http://github.com/mysociety/fixmystreet\">clyfar</a> ." #~ msgid "Can we show your name on the site?" #~ msgstr "Allwn ni ddangos eich enw chi ar y safle?" @@ -4490,61 +4938,42 @@ msgstr[1] "<big>%s</big> diweddariad ar adroddiadau" #~ msgid "My Reports" #~ msgstr "Adroddiadau" -#~ msgid "" -#~ "Sorry, that location appears to be too general; please be more specific." -#~ msgstr "" -#~ "Sori, mae'n ymddangos bod y lleoliad hwnnw'n rhy gyffredinol; rhowch " -#~ "gynnig arall arni." +#~ msgid "Sorry, that location appears to be too general; please be more specific." +#~ msgstr "Sori, mae'n ymddangos bod y lleoliad hwnnw'n rhy gyffredinol; rhowch gynnig arall arni." #~ msgid "You can <a href=\"%s\">see less detail</a>." #~ msgstr "Gallwch <a href=\"%s\">weld llai o fanylion</a>." -#~ msgid "" -#~ "You can <a href=\"%s\">see more details</a> or go back and <a href=\"/" -#~ "reports\">show all councils</a>." -#~ msgstr "" -#~ "Gallwch <a href=\"%s\">weld mwy o fanylion</a> neu fynd yn ôl a <a href=" -#~ "\"/reports\">dangos pob cyngor</a>." +#~ msgid "You can <a href=\"%s\">see more details</a> or go back and <a href=\"/reports\">show all councils</a>." +#~ msgstr "Gallwch <a href=\"%s\">weld mwy o fanylion</a> neu fynd yn ôl a <a href=\"/reports\">dangos pob cyngor</a>." #~ msgid "Sorry! Something's gone wrong." #~ msgstr "Ymddiheuriadau! Mae rhywbeth wedi mynd o'i le." #~ msgid "" #~ "<h1>Nearly Done! Now check your email...</h1>\n" -#~ "<p>The confirmation email <strong>may</strong> take a few minutes to " -#~ "arrive — <em>please</em> be patient.</p>\n" -#~ "<p>If you use web-based email or have 'junk mail' filters, you may wish " -#~ "to check your bulk/spam mail folders: sometimes, our messages are marked " -#~ "that way.</p>\n" +#~ "<p>The confirmation email <strong>may</strong> take a few minutes to arrive — <em>please</em> be patient.</p>\n" +#~ "<p>If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way.</p>\n" #~ "<p>You must now click the link in the email we've just sent you —\n" #~ "if you do not, %s.</p>\n" #~ "<p>(Don't worry — %s)</p>\n" #~ msgstr "" #~ "<h1>Bron â gorffen! Nawr, gwiriwch eich e-bost...</h1>\n" -#~ "<p> <strong>Gallai'r</strong> e-bost o gadarnhad gymryd rhai munudau i " -#~ "gyrraedd — <em>byddwch</em> yn amyneddgar.</p>\n" -#~ "<p>Os ydych yn defnyddio system e-bost ar y we neu os oes gennych hidlydd " -#~ "'negeseuon sgrwtsh', efallai y byddwch am wirio eich ffolderi post sbam/" -#~ "swmp: weithiau, caiff ein negeseuon eu marcio fel hynny.</p>\n" -#~ "<p>Nawr, mae'n rhaid i chi glicio'r ddolen yn yr e-bost yr ydym newydd ei " -#~ "anfon atoch —\n" +#~ "<p> <strong>Gallai'r</strong> e-bost o gadarnhad gymryd rhai munudau i gyrraedd — <em>byddwch</em> yn amyneddgar.</p>\n" +#~ "<p>Os ydych yn defnyddio system e-bost ar y we neu os oes gennych hidlydd 'negeseuon sgrwtsh', efallai y byddwch am wirio eich ffolderi post sbam/swmp: weithiau, caiff ein negeseuon eu marcio fel hynny.</p>\n" +#~ "<p>Nawr, mae'n rhaid i chi glicio'r ddolen yn yr e-bost yr ydym newydd ei anfon atoch —\n" #~ "os nad ydych, %s.</p>\n" #~ "<p>(Peidiwch â phoeni — %s)</p>\n" #~ msgid "" -#~ "Thank you for trying to confirm your alert. We seem to have an error " -#~ "ourselves\n" -#~ "though, so <a href=\"%s\">please let us know what went on</a> and we'll " -#~ "look into it.\n" +#~ "Thank you for trying to confirm your alert. We seem to have an error ourselves\n" +#~ "though, so <a href=\"%s\">please let us know what went on</a> and we'll look into it.\n" #~ msgstr "" -#~ "Diolch am geisio cadarnhau eich rhybudd. Fodd bynnag, mae'n ymddangos bod " -#~ "gennym wall\n" -#~ "ein hunain, felly <a href=\"%s\">rhowch wybod i ni beth sydd wedi " -#~ "digwydd</a> ac fe wnawn ni edrych yn fanylach ar hyn.\n" +#~ "Diolch am geisio cadarnhau eich rhybudd. Fodd bynnag, mae'n ymddangos bod gennym wall\n" +#~ "ein hunain, felly <a href=\"%s\">rhowch wybod i ni beth sydd wedi digwydd</a> ac fe wnawn ni edrych yn fanylach ar hyn.\n" #~ msgid "Local RSS feeds and email alerts for ‘%s’" -#~ msgstr "" -#~ "Porthiannau RSS lleol a hysbysiadau e-bost ar gyfer ‘%s’" +#~ msgstr "Porthiannau RSS lleol a hysbysiadau e-bost ar gyfer ‘%s’" #, fuzzy #~ msgid "Receive alerts on new local empty properties" @@ -4562,17 +4991,11 @@ msgstr[1] "<big>%s</big> diweddariad ar adroddiadau" #~ msgid "Weird and Wonderful reports" #~ msgstr "Adroddiadau rhyfeddol a rhagorol" -#~ msgid "" -#~ "You have successfully confirmed your report and you can now <a href=\"%s" -#~ "\">view it on the site</a>." -#~ msgstr "" -#~ "Rydych wedi cadarnhau eich adroddiad yn llwyddiannus ac nawr gallwch <a " -#~ "href=\"%s\">weld eich adroddiad ar y safle</a>." +#~ msgid "You have successfully confirmed your report and you can now <a href=\"%s\">view it on the site</a>." +#~ msgstr "Rydych wedi cadarnhau eich adroddiad yn llwyddiannus ac nawr gallwch <a href=\"%s\">weld eich adroddiad ar y safle</a>." #~ msgid "Receive email when updates are left on this empty property" -#~ msgstr "" -#~ "Hoffwn dderbyn neges e-bost pan gaiff diweddariadau eu rhoi am yr eiddo " -#~ "gwag hwn" +#~ msgstr "Hoffwn dderbyn neges e-bost pan gaiff diweddariadau eu rhoi am yr eiddo gwag hwn" #, fuzzy #~ msgid "New empty property reports NEAR {{POSTCODE}} on reportemptyhomes.com" @@ -4597,28 +5020,16 @@ msgstr[1] "<big>%s</big> diweddariad ar adroddiadau" #~ msgstr "Cofnodwch god post Prydeinig, neu enw stryd ac ardal gerllaw:" #~ msgid "" -#~ "We will contact you again in a month and again after six months to ask " -#~ "what has\n" -#~ "happened. Hopefully the property will be well on the way to being brought " -#~ "back\n" +#~ "We will contact you again in a month and again after six months to ask what has\n" +#~ "happened. Hopefully the property will be well on the way to being brought back\n" #~ "into use by then, but if not we can offer advice on what you can do next." #~ msgstr "" -#~ "Byddwn yn cysylltu â chi eto ymhen mis ac eto ymhen chwe mis i holi beth " -#~ "sydd wedi digwydd.\n" -#~ "Ein gobaith yw y bydd yr eiddo wrthi'n cael ei adfer i'w ddefnyddio erbyn " -#~ "hynny,\n" +#~ "Byddwn yn cysylltu â chi eto ymhen mis ac eto ymhen chwe mis i holi beth sydd wedi digwydd.\n" +#~ "Ein gobaith yw y bydd yr eiddo wrthi'n cael ei adfer i'w ddefnyddio erbyn hynny,\n" #~ "ond os nad ydyw, gallwn gynnig cyngor ar yr beth y gallwch ei wneud nesaf." -#~ msgid "" -#~ "The closest address, as the crow flies, to the location of this empty " -#~ "property, %.0fm away, is: %s - please note that this is automatically " -#~ "generated, so ensure that you check it against the details provided by " -#~ "the user and, if possible, the map." -#~ msgstr "" -#~ "Y cyfeiriad agosaf ar draws gwlad, i leoliad yr eiddo gwag hwn, %.0fm i " -#~ "ffwrdd, yw: %s - sylwer bod hwn yn cael ei greu'n awtomatig, felly " -#~ "gwnewch yn siwr eich bod yn ei gadarnhau yn ôl y manylion sy'n cael eu " -#~ "rhoi gan y defnyddiwr ac, os oes modd, ei gadarnhau yn ôl y map." +#~ msgid "The closest address, as the crow flies, to the location of this empty property, %.0fm away, is: %s - please note that this is automatically generated, so ensure that you check it against the details provided by the user and, if possible, the map." +#~ msgstr "Y cyfeiriad agosaf ar draws gwlad, i leoliad yr eiddo gwag hwn, %.0fm i ffwrdd, yw: %s - sylwer bod hwn yn cael ei greu'n awtomatig, felly gwnewch yn siwr eich bod yn ei gadarnhau yn ôl y manylion sy'n cael eu rhoi gan y defnyddiwr ac, os oes modd, ei gadarnhau yn ôl y map." #~ msgid "empty property" #~ msgstr "eiddo gwag" @@ -4629,9 +5040,5 @@ msgstr[1] "<big>%s</big> diweddariad ar adroddiadau" #~ msgid "Help" #~ msgstr "Help" -#~ msgid "" -#~ "That empty property has been hidden from public view as it contained " -#~ "inappropriate public details" -#~ msgstr "" -#~ "Mae'r eiddo gwag hwnnw wedi cael ei guddio o olwg y cyhoedd gan ei fod yn " -#~ "cynnwys manylion cyhoeddus amhriodol" +#~ msgid "That empty property has been hidden from public view as it contained inappropriate public details" +#~ msgstr "Mae'r eiddo gwag hwnnw wedi cael ei guddio o olwg y cyhoedd gan ei fod yn cynnwys manylion cyhoeddus amhriodol" diff --git a/locale/de_CH.UTF-8/LC_MESSAGES/FixMyStreet.po b/locale/de_CH.UTF-8/LC_MESSAGES/FixMyStreet.po new file mode 100644 index 000000000..56539f994 --- /dev/null +++ b/locale/de_CH.UTF-8/LC_MESSAGES/FixMyStreet.po @@ -0,0 +1,4651 @@ +# 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: fixmystreet\n" +"Report-Msgid-Bugs-To: matthew@mysociety.org\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" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:602 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373 +msgid " and " +msgstr "und" + +#: templates/web/default/tokens/confirm_problem.html:14 +#: templates/web/default/tokens/confirm_problem.html:17 +msgid " and <strong>we will now send it to the council</strong>" +msgstr "" + +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_none.html:11 +#: templates/web/default/report/new/councils_text_none.html:14 +#: templates/web/default/report/new/councils_text_some.html:20 +#: templates/web/default/report/new/councils_text_some.html:23 +#: templates/web/default/report/new/councils_text_some.html:5 +#: templates/web/emptyhomes/report/new/councils_text_all.html:2 +msgid " or " +msgstr "oder" + +#: templates/web/default/admin/bodies.html:46 +msgid "%d addresses" +msgstr "%d Adressen" + +#: templates/web/default/admin/index.html:25 +msgid "%d confirmed alerts, %d unconfirmed" +msgstr "" + +#: templates/web/default/admin/index.html:27 +#: templates/web/zurich/admin/index.html:6 +msgid "%d council contacts – %d confirmed, %d unconfirmed" +msgstr "" + +#: templates/web/default/admin/edit-league.html:12 +msgid "%d edits by %s" +msgstr "" + +#: templates/web/default/admin/index.html:24 +msgid "%d live updates" +msgstr "" + +#: templates/web/default/admin/index.html:26 +msgid "%d questionnaires sent – %d answered (%s%%)" +msgstr "" + +#: templates/web/default/pagination.html:10 +msgid "%d to %d of %d" +msgstr "%d bis %d von %d" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:22 +msgid "%s - Summary reports" +msgstr "Alle Meldungen" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:651 +msgid "%s ref: %s" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/UK.pm:276 perllib/FixMyStreet/Cobrand/UK.pm:288 +msgid "%s ward, %s" +msgstr "" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:538 +msgid "%s, reported at %s" +msgstr "Gemeldet von %s um %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:303 perllib/FixMyStreet/Cobrand/UK.pm:315 +msgid "%s, within %s ward" +msgstr "" + +#: templates/web/default/email_sent.html:29 +msgid "(Don't worry — we'll hang on to your alert while you're checking your email.)" +msgstr "" + +#: templates/web/default/email_sent.html:25 +msgid "(Don't worry — we'll hang on to your problem report while you're checking your email.)" +msgstr "" + +#: templates/web/default/email_sent.html:27 +msgid "(Don't worry — 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:29 +msgid "(Email in abuse table)" +msgstr "" + +#: templates/web/default/alert/_list.html:20 +#: templates/web/fixmystreet/alert/_list.html:24 +msgid "(a default distance which covers roughly 200,000 people)" +msgstr "" + +#: templates/web/default/alert/_list.html:25 +#: templates/web/fixmystreet/alert/_list.html:28 +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 +#: templates/web/zurich/report/_item.html:21 +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 +#: templates/web/zurich/report/_item.html:19 +msgid "(fixed)" +msgstr "(beantwortet)" + +#: 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 "(z.B. illegale Deponien, Strassenschä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)" +msgstr "" + +#: templates/web/default/report/new/fill_in_details_form.html:217 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:140 +#: templates/web/zurich/report/new/fill_in_details_form.html:100 +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)" +msgstr "" + +#: templates/web/default/report/new/fill_in_details_form.html:211 +msgid "(we never show your email address or phone number)" +msgstr "(Ihre E-Mail Adresse und Telefonnummer werden nie angezeigt)" + +#: templates/web/default/report/update-form.html:158 +msgid "(we never show your email)" +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: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:385 +msgid "-- Pick a property type --" +msgstr "" + +#: templates/web/emptyhomes/front/stats.html:5 +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’s been fixed.</p>" +msgstr "" + +#: templates/web/fiksgatami/questionnaire/completed-open.html:1 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try <a href=\"http://www.norge.no/styresmakter/\">writing\n" +"direct to your councillor(s)</a> or, if it’s a problem that could be\n" +"fixed by local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "" + +#: templates/web/fixmystreet/questionnaire/completed-open.html:6 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try <a href=\"http://www.writetothem.com/\">writing direct\n" +"to your councillor(s)</a> or, if it’s a problem that could be fixed by\n" +"local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "" + +#: templates/web/default/questionnaire/completed-open.html:6 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try writing to your local representative or, if it’s\n" +"a problem that could be fixed by local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "" + +#: templates/web/default/questionnaire/index.html:35 +msgid "" +"<p>Getting empty homes back into use can be difficult, but by now a good council\n" +"will have made a lot of progress and reported what they have done on the\n" +"website. Even so properties can remain empty for many months if the owner is\n" +"unwilling or the property is in very poor repair. If nothing has happened or\n" +"you are not satisfied with the progress the council is making, now is the right\n" +"time to say so. We think it’s a good idea to contact some other people who\n" +"may be able to help or put pressure on the council For advice on how to do\n" +"this and other useful information please go to <a\n" +"href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +msgstr "" + +#: templates/web/default/questionnaire/index.html:26 +msgid "" +"<p>Getting empty homes back into use can be difficult. You shouldn’t expect\n" +"the property to be back into use yet. But a good council will have started work\n" +"and should have reported what they have done on the website. If you are not\n" +"satisfied with progress or information from the council, now is the right time\n" +"to say. You may also want to try contacting some other people who may be able\n" +"to help. For advice on how to do this and other useful information please\n" +"go to <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +msgstr "" + +#: templates/web/default/questionnaire/completed.html:9 +msgid "" +"<p>Thank you very much for filling in our questionnaire; if you\n" +"get some more information about the status of your problem, please come back to the\n" +"site and leave an update.</p>" +msgstr "" + +#: templates/web/default/around/_report_banner.html:3 +#: templates/web/default/around/_report_banner.html:5 +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'>Überspringen</a>.</small>" + +#: 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" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:183 +msgid "<strong>No</strong> Let me confirm my report by email" +msgstr "Meldung per E-Mail bestätigen" + +#: templates/web/fixmystreet/report/update-form.html:110 +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:51 +msgid "<strong>No</strong> let me sign in by email" +msgstr "Neu Registrieren" + +#: templates/web/default/auth/general.html:55 +msgid "<strong>No</strong>, I do not, let me sign in by email:" +msgstr "" + +#: templates/web/default/report/new/fill_in_details_form.html:162 +msgid "<strong>No</strong>, let me confirm my report by email:" +msgstr "" + +#: templates/web/default/report/update-form.html:117 +msgid "<strong>No</strong>, let me confirm my update by email:" +msgstr "" + +#: templates/web/default/auth/general.html:37 +#: templates/web/default/report/new/fill_in_details_form.html:140 +#: templates/web/default/report/update-form.html:95 +#: templates/web/fixmystreet/auth/general.html:36 +#: templates/web/fixmystreet/auth/general.html:38 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:159 +#: templates/web/fixmystreet/report/update-form.html:87 +msgid "<strong>Yes</strong> I have a password" +msgstr "Passwort" + +#: templates/web/default/static/about-en-gb.html:1 +#: templates/web/default/static/about-en-gb.html:3 +#: templates/web/emptyhomes/header.html:34 +#: templates/web/emptyhomes/static/about-cy.html:1 +#: templates/web/emptyhomes/static/about-cy.html:3 +#: templates/web/emptyhomes/static/about-en-gb.html:1 +#: templates/web/emptyhomes/static/about-en-gb.html:3 +msgid "About us" +msgstr "Über uns" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:81 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:39 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 +msgid "Action Scheduled" +msgstr "" + +#: 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ügen" + +#: templates/web/default/admin/body.html:88 +#: templates/web/zurich/admin/body.html:30 +msgid "Add new category" +msgstr "Füge neue Kategorie hinzu" + +#: templates/web/default/admin/users.html:45 +msgid "Add user" +msgstr "User hinzufügen" + +#: templates/web/default/my/my.html:56 templates/web/fixmystreet/my/my.html:60 +msgid "Added %s" +msgstr "" + +#: templates/web/default/auth/change_password.html:29 +msgid "Again:" +msgstr "Nochmals:" + +#: templates/web/default/admin/timeline.html:35 +msgid "Alert %d created for %s, type %s, parameters %s / %s" +msgstr "" + +#: templates/web/default/admin/timeline.html:37 +msgid "Alert %d disabled (created %s)" +msgstr "" + +#: templates/web/bromley/report/display.html:209 +#: templates/web/default/report/update-form.html:163 +#: templates/web/fixmystreet/report/update-form.html:148 +msgid "Alert me to future updates" +msgstr "" + +#: templates/web/default/reports/index.html:3 +#: templates/web/fixmybarangay/reports/index.html:3 +#: templates/web/zurich/admin/stats.html:5 +#: templates/web/zurich/reports/index.html:15 +msgid "All Reports" +msgstr "Alle Meldungen" + +#: 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 "Alle Meldungen" + +#: templates/web/default/admin/stats.html:5 +#: templates/web/zurich/admin/stats.html:8 +msgid "All reports between %s and %s" +msgstr "Alle Meldungen von %s bis %s" + +#: templates/web/default/report/new/councils_text_some.html:2 +msgid "All the information you provide here will be sent to" +msgstr "" + +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:13 +msgid "All the information you provide here will be sent to <strong>%s</strong> or <strong>Roads Service</strong>." +msgstr "" + +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_all.html:6 +msgid "All the information you provide here will be sent to <strong>%s</strong> or a relevant local body such as <strong>TfL</strong>, via the London Report-It system." +msgstr "" + +#: templates/web/bromley/report/new/fill_in_details_form.html:4 +#: templates/web/bromley/report/new/fill_in_details_form.html:6 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:20 +#: templates/web/default/report/new/fill_in_details_form.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:13 +#: templates/web/emptyhomes/report/new/councils_text_all.html:2 +#: templates/web/emptyhomes/report/new/councils_text_all.html:4 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:13 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:8 +msgid "All the information you provide here will be sent to <strong>%s</strong>." +msgstr "" + +#: templates/web/default/questionnaire/index.html:60 +#: templates/web/fixmystreet/questionnaire/index.html:54 +msgid "An update marked this problem as fixed." +msgstr "" + +#: templates/web/default/admin/list_updates.html:32 +#: templates/web/default/admin/problem_row.html:20 +msgid "Anonymous" +msgstr "Anonym" + +#: templates/web/default/admin/report_edit.html:62 +#: templates/web/default/admin/update_edit.html:23 +msgid "Anonymous:" +msgstr "Anonym:" + +#: templates/web/default/footer.html:26 +msgid "Are you a <strong>developer</strong>? Would you like to contribute to FixMyStreet?" +msgstr "" + +#: templates/web/fixmystreet/footer.html:16 +#: templates/web/stevenage/footer.html:17 +msgid "Are you a developer?" +msgstr "" + +#: templates/web/fixmystreet/footer.html:20 +#: templates/web/stevenage/footer.html:21 +msgid "Are you from a council?" +msgstr "" + +#: 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: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:153 +msgid "Assign to external body:" +msgstr "Einer externen Stelle zuweisen:" + +#: 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:141 +#: templates/web/zurich/report/updates.html:11 +msgid "Assigned to %s" +msgstr "Besten Dank für Ihre Meldung. Wir haben Ihr Anliegen an %s weitergeleitet, da es nicht in den Zuständigkeitsbereich der am Pilot beteiligten Fachbereiche fällt.<br/>Freundliche Grüsse <br/>Ihre Stadt Zürich" + +#: templates/web/default/open311/index.html:86 +msgid "At most %d requests are returned in each query. The returned requests are ordered by requested_datetime, so to get all requests, do several searches with rolling start_date and end_date." +msgstr "" + +#: templates/web/default/open311/index.html:78 +msgid "At the moment only searching for and looking at reports work." +msgstr "" + +#: 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:32 +#: templates/web/oxfordshire/js/translation_strings.html:26 +msgid "Back" +msgstr "Zurück" + +#: templates/web/default/admin/report_blocks.html:11 +msgid "Ban email address" +msgstr "" + +#: templates/web/fixmybarangay/report/new/notes.html:7 +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: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:17 +#: templates/web/default/admin/reports.html:14 +#: templates/web/default/admin/users.html:17 +msgid "Body" +msgstr "Organisation" + +#: templates/web/default/admin/user-form.html:32 +msgid "Body:" +msgstr "Organisation:" + +#: templates/web/fiksgatami/footer.html:16 +#: templates/web/fiksgatami/nn/footer.html:16 +msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained by <a href=\"http://www.nuug.no/\">NUUG</a>" +msgstr "" + +#: templates/web/default/admin/stats.html:80 +msgid "By Date" +msgstr "" + +#: templates/web/fixmystreet/around/_report_banner.html:10 +#: templates/web/fixmystreet/around/_report_banner.html:8 +msgid "Can't see the map? <a href='%s' rel='nofollow'>Skip this step</a>" +msgstr "Karte nicht sichtbar? <a href='%s' rel='nofollow'>Überspringen Sie diesen Schritt</a>" + +#: 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 "Kategorie" + +#: templates/web/default/admin/index.html:42 +msgid "Category fix rate for problems > 4 weeks old" +msgstr "" + +#: 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 "Kategorie:" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366 +msgid "Category: %s" +msgstr "Kategorie: %s" + +#: templates/web/default/auth/change_password.html:1 +#: templates/web/default/auth/change_password.html:3 +#: templates/web/default/auth/change_password.html:33 +msgid "Change Password" +msgstr "Passwort ändern" + +#: 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" + +#: 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 +#: 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 "Beantwortet" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:744 +msgid "Closed by council" +msgstr "" + +#: templates/web/default/my/my.html:32 templates/web/fixmystreet/my/my.html:36 +msgid "Closed reports" +msgstr "" + +#: templates/web/default/admin/problem_row.html:38 +msgid "Closed:" +msgstr "Beantwortet:" + +#: templates/web/default/around/tabbed_lists.html:10 +#: templates/web/default/around/tabbed_lists.html:12 +msgid "Closest nearby problems <small>(within %skm)</small>" +msgstr "" + +#: 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 "Koordinaten:" + +#: templates/web/default/admin/list_updates.html:10 +msgid "Cobrand" +msgstr "" + +#: templates/web/default/admin/report_edit.html:75 +#: templates/web/default/admin/update_edit.html:50 +msgid "Cobrand data:" +msgstr "" + +#: templates/web/default/admin/report_edit.html:74 +#: templates/web/default/admin/update_edit.html:49 +msgid "Cobrand:" +msgstr "" + +#: 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" + +#: templates/web/default/admin/body_edit.html:47 +msgid "Configure Endpoint" +msgstr "" + +#: templates/web/default/admin/body.html:62 +msgid "Confirm" +msgstr "Bestätigen" + +#: templates/web/default/auth/token.html:1 +msgid "Confirm account" +msgstr "" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:177 +#: templates/web/fixmystreet/report/update-form.html:105 +msgid "Confirm by email below, providing a new password at that point. When you confirm, your password will be updated." +msgstr "" + +#: templates/web/default/questionnaire/creator_fixed.html:1 +#: templates/web/default/tokens/confirm_problem.html:1 +#: templates/web/default/tokens/confirm_problem.html:3 +#: templates/web/default/tokens/confirm_update.html:1 +#: templates/web/default/tokens/confirm_update.html:3 +#: templates/web/emptyhomes/tokens/confirm_problem.html:1 +#: templates/web/emptyhomes/tokens/confirm_problem.html:3 +#: templates/web/southampton/tokens/confirm_problem.html:1 +#: templates/web/southampton/tokens/confirm_problem.html:3 +#: templates/web/zurich/tokens/confirm_problem.html:1 +#: templates/web/zurich/tokens/confirm_problem.html:3 +msgid "Confirmation" +msgstr "Bestätigung" + +#: 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 "Bestätigt" + +#: templates/web/default/admin/stats.html:5 +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:" +msgstr "Bestätigt:" + +#: templates/web/fiksgatami/footer.html:10 +#: templates/web/fiksgatami/nn/footer.html:10 +msgid "Contact" +msgstr "Kontakt" + +#: templates/web/default/footer.html:24 +msgid "Contact FixMyStreet" +msgstr "" + +#: templates/web/bromley/contact/submit.html:1 +#: templates/web/default/contact/index.html:1 +#: templates/web/default/contact/index.html:2 +#: templates/web/default/contact/submit.html:1 +#: templates/web/fixmystreet/contact/index.html:1 +#: templates/web/fixmystreet/contact/index.html:2 +msgid "Contact Us" +msgstr "" + +#: templates/web/bromley/contact/submit.html:3 +#: templates/web/default/contact/index.html:6 +#: templates/web/default/contact/submit.html:3 +#: templates/web/fixmystreet/contact/index.html:19 +msgid "Contact the team" +msgstr "" + +#: 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:37 +#: templates/web/oxfordshire/js/translation_strings.html:31 +msgid "Could not look up location" +msgstr "" + +#: templates/web/default/admin/list_updates.html:9 +msgid "Council" +msgstr "" + +#: templates/web/default/admin/body.html:1 +#: templates/web/default/admin/body_edit.html:1 +#: templates/web/zurich/admin/body.html:1 +msgid "Council contacts for %s" +msgstr "Kontaktdetails von %s" + +#: templates/web/default/admin/stats.html:84 +msgid "Council:" +msgstr "" + +#: templates/web/default/admin/stats.html:12 +#: templates/web/default/admin/stats.html:32 +#: templates/web/zurich/admin/stats.html:45 +#: templates/web/zurich/admin/stats.html:50 +msgid "Count" +msgstr "" + +#: templates/web/default/email_sent.html:1 +msgid "Create a report" +msgstr "Erfasse eine Meldung" + +#: templates/web/default/admin/body.html:179 +#: templates/web/zurich/admin/body.html:53 +msgid "Create category" +msgstr "" + +#: 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 "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:50 +#: templates/web/zurich/admin/report_edit.html:64 +#: templates/web/zurich/admin/update_edit.html:29 +msgid "Created:" +msgstr "Erstellt:" + +#: templates/web/default/admin/stats.html:31 +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" +msgstr "" + +#: templates/web/zurich/admin/stats.html:35 +msgid "Dealt with by subdivision within 5 working days" +msgstr "Innerhalb von fünf Arbeitstagen abgeschlossen" + +#: 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 "Gelöscht" + +#: templates/web/zurich/admin/index-dm.html:22 +#: templates/web/zurich/admin/index-sdm.html:20 +#: templates/web/zurich/admin/reports.html:12 +msgid "Description" +msgstr "Beschreibung" + +#: 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 "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: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:57 +msgid "Devolved" +msgstr "" + +#: templates/web/default/admin/edit-league.html:8 +msgid "Diligency prize league table" +msgstr "Weiss ich nicht" + +#: templates/web/fixmystreet/auth/general.html:30 +msgid "Do you have a FixMyBarangay password?" +msgstr "" + +#: templates/web/default/auth/general.html:32 +#: templates/web/fixmystreet/auth/general.html:32 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:155 +#: templates/web/fixmystreet/report/update-form.html:84 +msgid "Do you have a FixMyStreet password?" +msgstr "" + +#: templates/web/default/questionnaire/index.html:70 +#: templates/web/fixmystreet/questionnaire/index.html:64 +msgid "Don’t know" +msgstr "" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:82 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:47 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 +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:31 +#: templates/web/zurich/admin/problem_row.html:42 +msgid "Edit" +msgstr "" + +#: templates/web/default/admin/body.html:189 +#: templates/web/zurich/admin/body.html:64 +msgid "Edit body details" +msgstr "Details editieren" + +#: templates/web/default/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:4 +#: templates/web/zurich/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit.html:5 +msgid "Editing problem %d" +msgstr "Meldung %d bearbeiten" + +#: templates/web/default/admin/update_edit.html:1 +#: templates/web/zurich/admin/update_edit.html:1 +msgid "Editing update %d" +msgstr "" + +#: templates/web/default/admin/user_edit.html:1 +msgid "Editing user %d" +msgstr "" + +#: templates/web/default/admin/body_edit.html:86 +msgid "Editor" +msgstr "" + +#: 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 "E-Mail" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1286 +msgid "Email added to abuse list" +msgstr "" + +#: 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 "" + +#: templates/web/default/around/_updates.html:5 +msgid "Email me new local problems" +msgstr "" + +#: templates/web/default/report/display.html:34 +msgid "Email me updates" +msgstr "Schicken Sie mir Aktualisierungen" + +#: 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 "E-mail:" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318 +msgid "Email: %s" +msgstr "E-mail:" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:620 +msgid "Empty flat or maisonette" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:619 +msgid "Empty house or bungalow" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:622 +msgid "Empty office or other commercial" +msgstr "" + +#: templates/web/emptyhomes/report/new/form_heading.html:1 +msgid "Empty property details form" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:623 +msgid "Empty pub or bar" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:624 +msgid "Empty public building - school, hospital, etc." +msgstr "" + +#: 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/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:70 +msgid "End Date:" +msgstr "" + +#: templates/web/default/admin/body-form.html:126 +msgid "Endpoint" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/Zurich.pm:71 +msgid "Enter a Zürich street name" +msgstr "Ungefähre Adresse des Mangels" + +#: perllib/FixMyStreet/Cobrand/UK.pm:18 +msgid "Enter a nearby UK postcode, or street name and area" +msgstr "Geben Sie eine Adresse an" + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:25 +msgid "Enter a nearby postcode, or street name and area" +msgstr "Ungefähre Adresse des Mangels" + +#: templates/web/default/around/postcode_form.html:1 +#: templates/web/default/around/postcode_form.html:2 +#: templates/web/fixmystreet/around/postcode_form.html:10 +#: templates/web/fixmystreet/around/postcode_form.html:11 +#: templates/web/seesomething/around/postcode_form.html:3 +#: templates/web/seesomething/around/postcode_form.html:4 +msgid "Enter a nearby street name and area" +msgstr "Ungefähre Adresse des Mangels" + +#: templates/web/default/auth/general.html:64 +#: templates/web/default/report/new/fill_in_details_form.html:169 +#: templates/web/default/report/update-form.html:124 +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:65 +msgid "Enter a password" +msgstr "Ihr Passwort" + +#: templates/web/default/index-steps.html:26 +msgid "Enter details of the problem" +msgstr "Beschreiben Sie den Mangel" + +#: templates/web/default/auth/token.html:5 +#: templates/web/default/errors/generic.html:1 +#: templates/web/default/errors/generic.html:3 +#: templates/web/default/tokens/abuse.html:1 +#: templates/web/default/tokens/abuse.html:3 +#: templates/web/default/tokens/error.html:1 +#: templates/web/default/tokens/error.html:3 +msgid "Error" +msgstr "Fehler" + +#: templates/web/default/admin/body.html:11 +#: templates/web/default/admin/body_edit.html:18 +msgid "Example postcode %s" +msgstr "Beispieladresse" + +#: templates/web/default/open311/index.html:96 +msgid "Examples:" +msgstr "Beispiele:" + +#: templates/web/default/admin/report_edit.html:76 +msgid "Extra data:" +msgstr "" + +#: templates/web/bromley/contact/submit.html:14 +#: templates/web/default/contact/submit.html:15 +msgid "Failed to send message. Please try again, or <a href=\"mailto:%s\">email us</a>." +msgstr "" + +#: templates/web/zurich/admin/index-dm.html:33 +#: templates/web/zurich/admin/index-sdm.html:30 +msgid "Filter report list" +msgstr "Alle Meldungen" + +#: templates/web/emptyhomes/front/stats.html:6 +msgid "Find latest local and national news" +msgstr "" + +#: templates/web/bromley/report/display.html:191 +#: templates/web/bromley/report/new/fill_in_details_form.html:113 +#: templates/web/bromley/report/new/fill_in_details_form.html:160 +msgid "First Name" +msgstr "" + +#: templates/web/default/questionnaire/index.html:79 +#: templates/web/fixmystreet/questionnaire/index.html:73 +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 "" + +#: templates/web/default/header.html:24 +msgid "FixMyStreet" +msgstr "" + +#: templates/web/default/admin/header.html:10 +msgid "FixMyStreet admin:" +msgstr "" + +#: templates/web/default/alert/index.html:11 +msgid "" +"FixMyStreet has a variety of RSS feeds and email alerts for local problems, including\n" +"alerts for all problems within a particular ward or council, or all problems\n" +"within a certain distance of a particular location." +msgstr "" + +#: templates/web/default/alert/_list.html:71 +#: templates/web/fixmystreet/alert/_list.html:73 +msgid "" +"FixMyStreet sends different categories of problem\n" +"to the appropriate council, so problems within the boundary of a particular council\n" +"might not match the problems sent to that council. For example, a graffiti report\n" +"will be sent to the district council, so will appear in both of the district\n" +"council’s alerts, but will only appear in the \"Within the boundary\" alert\n" +"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: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 "Beantwortet" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:43 +msgid "Fixed - Council" +msgstr "" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:42 +msgid "Fixed - User" +msgstr "" + +#: templates/web/default/my/my.html:27 templates/web/fixmystreet/my/my.html:31 +msgid "Fixed reports" +msgstr "" + +#: templates/web/default/admin/problem_row.html:37 +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öscht markieren" + +#: templates/web/default/admin/report_blocks.html:16 +msgid "Flag user" +msgstr "" + +#: 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:51 +msgid "Flagged:" +msgstr "" + +#: templates/web/default/reports/_ward-list.html:3 +#: templates/web/fixmystreet/reports/_ward-list.html:4 +msgid "Follow a ward link to view only reports within that ward." +msgstr "" + +#: templates/web/default/admin/report_edit.html:30 +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 "Ihr Passwort" + +#: templates/web/default/faq/faq-en-gb.html:1 +#: templates/web/emptyhomes/faq/faq-cy.html:1 +#: templates/web/emptyhomes/faq/faq-en-gb.html:1 +#: templates/web/fiksgatami/faq/faq-nb.html:1 +#: templates/web/fiksgatami/nn/faq/faq-nn.html:1 +#: templates/web/fixmindelo/faq/faq-pt-cv.html:1 +#: templates/web/fixmybarangay/faq/faq-en-gb.html:1 +#: templates/web/fixmystreet/faq/faq-en-gb.html:1 +#: templates/web/fixmystreet/static/privacy.html:1 +#: templates/web/oxfordshire/faq/faq-en-gb.html:1 +msgid "Frequently Asked Questions" +msgstr "Hilfe" + +#: templates/web/default/open311/index.html:138 +msgid "GeoRSS on Google Maps" +msgstr "" + +#: templates/web/bromley/report/display.html:30 +#: templates/web/fixmystreet/around/_updates.html:3 +#: templates/web/fixmystreet/report/display.html:38 +msgid "Get updates" +msgstr "" + +#: templates/web/fixmystreet/reports/_rss.html:3 +#: templates/web/fixmystreet/reports/_rss.html:9 +msgid "Get updates of %s problems" +msgstr "Beschreiben Sie den Mangel" + +#: templates/web/fixmystreet/reports/_rss.html:11 +#: templates/web/fixmystreet/reports/_rss.html:3 +msgid "Get updates of problems in this %s" +msgstr "" + +#: templates/web/default/alert/_list.html:83 +#: templates/web/fixmybarangay/alert/_list.html:28 +#: templates/web/fixmystreet/alert/_list.html:82 +msgid "Give me an RSS feed" +msgstr "" + +#: templates/web/default/alert/index.html:34 +#: templates/web/default/around/postcode_form.html:8 +#: templates/web/fixmystreet/around/postcode_form.html:21 +#: templates/web/seesomething/around/postcode_form.html:10 +#: templates/web/zurich/admin/stats.html:26 +msgid "Go" +msgstr "Los" + +#: templates/web/default/admin/report_edit.html:77 +msgid "Going to send questionnaire?" +msgstr "" + +#: templates/web/default/admin/index.html:32 +msgid "Graph of problem creation by status over time" +msgstr "Grafik der Meldungen nach Status und Zeit" + +#: templates/web/default/reports/index.html:8 +msgid "Greyed-out lines are councils that no longer exist." +msgstr "" + +#: templates/web/default/questionnaire/index.html:61 +#: templates/web/fixmystreet/questionnaire/index.html:55 +msgid "Has this problem been fixed?" +msgstr "" + +#: templates/web/default/questionnaire/index.html:74 +#: templates/web/fixmystreet/questionnaire/index.html:68 +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/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 "Hilfe" + +#: templates/web/default/alert/_list.html:6 +#: templates/web/fixmystreet/alert/_list.html:8 +msgid "Here are the types of local problem alerts for ‘%s’." +msgstr "" + +#: templates/web/barnet/header.html:70 templates/web/bromley/header.html:64 +#: templates/web/bromley/header.html:99 +#: templates/web/fixmybarangay/header.html:66 +#: templates/web/fixmystreet/header.html:50 +#: templates/web/oxfordshire/header.html:111 +#: templates/web/oxfordshire/header.html:47 +#: templates/web/stevenage/header.html:97 templates/web/zurich/footer.html:11 +msgid "Hi %s" +msgstr "Hallo %s" + +#: 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 "Unsichtbar" + +#: templates/web/default/around/display_location.html:67 +msgid "Hide old" +msgstr "Alte ausblenden" + +#: templates/web/default/around/display_location.html:62 +msgid "Hide pins" +msgstr "Stecknadeln ausblenden" + +#: templates/web/default/admin/body_edit.html:79 +msgid "History" +msgstr "History" + +#: templates/web/default/js/translation_strings.html:31 +#: templates/web/oxfordshire/js/translation_strings.html:25 +msgid "Home" +msgstr "" + +#: templates/web/default/index-steps.html:1 +msgid "How to report a problem" +msgstr "Erfassen Sie eine neue Meldung:" + +#: 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:733 +msgid "I am afraid you cannot confirm unconfirmed reports." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:89 +msgid "I'm afraid we couldn't locate your problem in the database.\n" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Tokens.pm:44 +msgid "I'm afraid we couldn't validate that token, as the report was made too long ago." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Tokens.pm:259 +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öst werden. Falls Sie die URL aus einer Mail kopiert haben, überprüfen Sie bitte ob Sie die gesamte URL kopiert haben.\n" + +#: 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 "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 "" + +#: templates/web/default/email_sent.html:15 +msgid "If you do not, your problem will not be posted." +msgstr "" + +#: templates/web/default/email_sent.html:17 +msgid "If you do not, your update will not be posted." +msgstr "" + +#: templates/web/default/report/new/councils_text_none.html:8 +#: templates/web/default/report/new/councils_text_none.html:9 +msgid "If you submit a problem here the subject and details of the problem will be public, but the problem will <strong>not</strong> be reported to the council." +msgstr "" + +#: templates/web/emptyhomes/report/new/councils_text_none.html:9 +msgid "If you submit a report here it will be left on the site, but not reported to the council – please still leave your report, so that we can show to the council the activity in their area." +msgstr "" + +#: templates/web/default/auth/token.html:22 +#: templates/web/default/email_sent.html:9 +msgid "If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way." +msgstr "Falls Sie kein E-Mail erhalten, überprüfend Sie bitte Ihren Spam-Ordner." + +#: templates/web/default/questionnaire/index.html:86 +#: templates/web/fixmystreet/questionnaire/index.html:77 +msgid "" +"If you wish to leave a public update on the problem, please enter it here\n" +"(please note it will not be sent to the council). For example, what was\n" +"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" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:100 +msgid "Illegal feed selection" +msgstr "" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:82 +#: 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:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 +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: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 "In Bearbeitung" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:38 +msgid "Incident Category" +msgstr "Kategorie" + +#: templates/web/zurich/admin/report_edit.html:163 +msgid "Include reporter personal details" +msgstr "Persönliche Angaben des Meldenden mitsenden" + +#: templates/web/default/admin/stats.html:76 +msgid "Include unconfirmed reports" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:354 +msgid "Incorrect has_photo value \"%s\"" +msgstr "" + +#: 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 +msgid "Internal referral" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:339 +msgid "Invalid agency_responsible value %s" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1096 +msgid "Invalid end date" +msgstr "Ung&ultiges Enddatum" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:432 +msgid "Invalid format %s specified." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1092 +msgid "Invalid start date" +msgstr "Ung&ultiges Startdatum" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:81 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:37 +#: templates/web/default/dashboard/index.html:142 +#: templates/web/default/dashboard/index.html:143 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 +msgid "Investigating" +msgstr "" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:12 +#: templates/web/emptyhomes/tokens/confirm_problem.html:14 +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’t mean the council isn’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:40 +msgid "Keep me signed in on this computer" +msgstr "Angemeldet bleiben" + +#: templates/web/bromley/report/display.html:197 +#: templates/web/bromley/report/new/fill_in_details_form.html:119 +#: templates/web/bromley/report/new/fill_in_details_form.html:166 +msgid "Last Name" +msgstr "Letzte Bearbeitung" + +#: templates/web/default/admin/body.html:58 +#: templates/web/zurich/admin/body.html:15 +msgid "Last editor" +msgstr "Letzter Bearbeiter" + +#: templates/web/default/admin/report_edit.html:72 +msgid "Last update:" +msgstr "Letzte Bearbeitung" + +#: templates/web/default/admin/problem_row.html:39 +msgid "Last 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" +msgstr "Liste aller Meldungen" + +#: templates/web/bromley/report/new/fill_in_details_form.html:69 +#: templates/web/default/report/new/fill_in_details_form.html:68 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:51 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:75 +#: templates/web/seesomething/report/new/fill_in_details_form.html:25 +#: templates/web/zurich/report/new/fill_in_details_form.html:51 +msgid "Loading..." +msgstr "" + +#: templates/web/default/alert/choose.html:1 +#: templates/web/default/alert/choose.html:3 +#: templates/web/default/alert/index.html:1 +#: templates/web/default/alert/index.html:3 +#: templates/web/default/alert/list.html:1 +#: templates/web/default/alert/list.html:5 +#: templates/web/default/alert/updates.html:1 +#: templates/web/default/tokens/confirm_alert.html:1 +#: templates/web/default/tokens/confirm_alert.html:3 +#: templates/web/emptyhomes/alert/index.html:1 +#: templates/web/emptyhomes/alert/index.html:3 +#: templates/web/fixmybarangay/alert/index.html:1 +#: templates/web/fixmybarangay/alert/index.html:3 +#: templates/web/fixmystreet/alert/updates.html:1 +msgid "Local RSS feeds and email alerts" +msgstr "" + +#: templates/web/default/alert/list.html:1 +#: templates/web/default/alert/list.html:12 +#: templates/web/default/alert/list.html:14 +#: templates/web/default/alert/list.html:3 +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/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 "RSS" + +#: templates/web/default/index-steps.html:25 +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:43 +#: templates/web/oxfordshire/js/translation_strings.html:37 +msgid "MAP" +msgstr "" + +#: perllib/FixMyStreet/Map/OSM.pm:44 +msgid "Map © <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" + +#: templates/web/default/contact/index.html:90 +msgid "Message:" +msgstr "Nachricht:" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:440 +msgid "Missing jurisdiction_id" +msgstr "" + +#: templates/web/zurich/admin/stats.html:34 +msgid "Moderated by division within one working day" +msgstr "Innerhalb eines Arbeitstages moderiert" + +#: templates/web/default/admin/stats.html:11 +msgid "Month" +msgstr "Monat" + +#: templates/web/default/report/display.html:30 +msgid "More problems nearby" +msgstr "Meldungen in der Nähe" + +#: 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 "Name" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:74 +msgid "Name (optional)" +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: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:317 +msgid "Name: %s" +msgstr "Name: %s" + +#: templates/web/fiksgatami/footer.html:3 +#: templates/web/fiksgatami/nn/footer.html:3 +#: templates/web/reading/footer.html:4 +msgid "Navigation" +msgstr "Navigation" + +#: perllib/FixMyStreet/Geocode/OSM.pm:166 +msgid "Nearest named road to the pin placed on the map (automatically generated using OpenStreetMap): %s%s" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/UK.pm:148 +msgid "Nearest postcode to the pin placed on the map (automatically generated): %s (%sm away)" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/Default.pm:418 +#: perllib/FixMyStreet/Cobrand/Default.pm:458 +msgid "Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s" +msgstr "" + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:273 +msgid "" +"Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s\n" +"\n" +msgstr "" + +#: templates/web/default/email_sent.html:3 +msgid "Nearly Done! Now check your email..." +msgstr "Fast Fertig! Bitte checken Sie Ihre Mailbox..." + +#: templates/web/default/reports/index.html:16 +#: templates/web/fixmybarangay/reports/index.html:16 +msgid "New <br>problems" +msgstr "Neue <br>Meldungen" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:264 +msgid "New body added" +msgstr "Neue Organisation hinzugefügt" + +#: 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 "" + +#: db/alert_types_eha.pl:12 +msgid "New local reports on reportemptyhomes.com" +msgstr "" + +#: templates/web/emptyhomes/reports/index.html:10 +#: templates/web/fiksgatami/nn/reports/index.html:10 +#: templates/web/fiksgatami/reports/index.html:10 +msgid "New problems" +msgstr "Neue Meldungen" + +#: db/alert_types.pl:38 +msgid "New problems for {{COUNCIL}} within {{WARD}} ward on FixMyStreet" +msgstr "" + +#: db/alert_types.pl:26 db/alert_types.pl:30 +msgid "New problems near {{POSTCODE}} on FixMyStreet" +msgstr "" + +#: db/alert_types.pl:10 +msgid "New problems on FixMyStreet" +msgstr "" + +#: db/alert_types.pl:34 +msgid "New problems to {{COUNCIL}} on FixMyStreet" +msgstr "" + +#: db/alert_types.pl:42 +msgid "New problems within {{NAME}}'s boundary on FixMyStreet" +msgstr "" + +#: templates/web/zurich/admin/index-sdm.html:4 +msgid "New reports" +msgstr "Neu" + +#: db/alert_types_eha.pl:23 +msgid "New reports for {{COUNCIL}} within {{WARD}} ward on reportemptyhomes.com" +msgstr "" + +#: db/alert_types_eha.pl:5 +msgid "New reports on reportemptyhomes.com" +msgstr "" + +#: db/alert_types_eha.pl:16 +msgid "New reports on reportemptyhomes.com near {{POSTCODE}}" +msgstr "" + +#: db/alert_types_eha.pl:19 +msgid "New reports to {{COUNCIL}} on reportemptyhomes.com" +msgstr "" + +#: db/alert_types_eha.pl:27 +msgid "New reports within {{NAME}}'s boundary on reportemptyhomes.com" +msgstr "" + +#: templates/web/default/admin/questionnaire.html:24 +msgid "New state" +msgstr "Neuer Status" + +#: templates/web/zurich/admin/report_edit-sdm.html:61 +msgid "New update:" +msgstr "Neue Antwort" + +#: templates/web/fiksgatami/front/news.html:9 +#: templates/web/fiksgatami/nn/front/news.html:9 +#: templates/web/fixmystreet/front/news.html:8 +msgid "New!" +msgstr "Neu!" + +#: templates/web/default/pagination.html:13 +msgid "Next" +msgstr "Weiter" + +#: 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 "Nein" + +#: templates/web/default/admin/user-form.html:33 +msgid "No body" +msgstr "" + +#: templates/web/default/admin/stats.html:85 +msgid "No council" +msgstr "" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:362 +msgid "No council selected" +msgstr "" + +#: 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:25 +#, fuzzy +msgid "No flagged problems found." +msgstr "Keine Meldungen gefunden." + +#: 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:68 +msgid "No further updates" +msgstr "Bearbeitung abschliessen" + +#: templates/web/default/around/around_map_list_items.html:17 +#: templates/web/fixmystreet/around/around_map_list_items.html:8 +msgid "No problems found." +msgstr "Keine Meldungen gefunden." + +#: templates/web/default/around/on_map_list_items.html:14 +#: templates/web/fixmystreet/around/on_map_list_items.html:6 +msgid "No problems have been reported yet." +msgstr "Bisher wurden noch keine Meldungen erfasst." + +#: 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:73 +msgid "Non Public" +msgstr "" + +#: 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 "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 +#: 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 "" + +#: templates/web/zurich/admin/report_edit-sdm.html:21 +msgid "Not for my subdivision" +msgstr "Anderer Fachbereich zuständig" + +#: templates/web/default/admin/questionnaire.html:6 +msgid "Not reported before" +msgstr "" + +#: templates/web/default/report/_main.html:10 +msgid "Not reported to council" +msgstr "" + +#: 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 "" + +#: templates/web/default/admin/stats.html:51 +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:157 +#: templates/web/default/admin/body_edit.html:44 +#: templates/web/zurich/admin/body.html:47 +msgid "Note:" +msgstr "" + +#: templates/web/default/open311/index.html:75 +msgid "Note: <strong>%s</strong>" +msgstr "" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:154 +msgid "Now to submit your report…" +msgstr "" + +#: templates/web/default/report/new/fill_in_details_form.html:131 +msgid "Now to submit your report… do you have a FixMyStreet password?" +msgstr "" + +#: templates/web/fixmystreet/report/update-form.html:83 +msgid "Now to submit your update…" +msgstr "" + +#: templates/web/default/report/update-form.html:86 +msgid "Now to submit your update… do you have a FixMyStreet password?" +msgstr "" + +#: templates/web/default/js/translation_strings.html:42 +#: templates/web/oxfordshire/js/translation_strings.html:36 +msgid "OK" +msgstr "" + +#: templates/web/default/report/display.html:24 +#: templates/web/default/report/update.html:16 +msgid "Offensive? Unsuitable? Tell us" +msgstr "" + +#: templates/web/default/reports/index.html:18 +#: templates/web/fixmybarangay/reports/index.html:18 +msgid "Old / unknown <br>problems" +msgstr "" + +#: templates/web/fiksgatami/nn/reports/index.html:12 +#: templates/web/fiksgatami/reports/index.html:12 +msgid "Old problems,<br>state unknown" +msgstr "Alte Probleme, <br>Status unbekannt" + +#: templates/web/default/admin/questionnaire.html:24 +msgid "Old state" +msgstr "Alter Status" + +#: templates/web/default/reports/index.html:20 +#: templates/web/fixmybarangay/reports/index.html:20 +msgid "Older <br>fixed" +msgstr "" + +#: templates/web/default/reports/index.html:17 +#: templates/web/fixmybarangay/reports/index.html:17 +msgid "Older <br>problems" +msgstr "" + +#: templates/web/fiksgatami/nn/reports/index.html:14 +#: templates/web/fiksgatami/reports/index.html:14 +msgid "Older fixed" +msgstr "" + +#: templates/web/emptyhomes/reports/index.html:11 +#: templates/web/fiksgatami/nn/reports/index.html:11 +#: templates/web/fiksgatami/reports/index.html:11 +msgid "Older problems" +msgstr "" + +#: 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 "Aufgenommen" + +#: templates/web/default/my/my.html:22 templates/web/fixmystreet/my/my.html:26 +msgid "Open reports" +msgstr "Offene Meldungen" + +#: templates/web/default/open311/index.html:72 +msgid "Open311 API for the mySociety FixMyStreet server" +msgstr "" + +#: templates/web/default/open311/index.html:82 +msgid "Open311 initiative web page" +msgstr "" + +#: templates/web/default/open311/index.html:83 +msgid "Open311 specification" +msgstr "" + +#: templates/web/default/alert/_list.html:58 +#: templates/web/fixmystreet/alert/_list.html:60 +msgid "Or problems reported to:" +msgstr "" + +#: templates/web/default/alert/_list.html:33 +#: templates/web/fixmystreet/alert/_list.html:36 +msgid "Or you can subscribe to an alert based upon what ward or council you’re in:" +msgstr "" + +#: 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 "" + +#: templates/web/default/footer.html:27 +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:8 +msgid "Owner" +msgstr "Besitzer" + +#: templates/web/default/errors/page_error_404_not_found.html:1 +#: templates/web/default/errors/page_error_404_not_found.html:3 +msgid "Page Not Found" +msgstr "" + +#: templates/web/default/admin/body-form.html:31 +#: templates/web/zurich/admin/body-form.html:14 +msgid "Parent" +msgstr "Gehört zu" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:51 +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:63 +msgid "Password (optional)" +msgstr "Passwort" + +#: templates/web/default/auth/change_password.html:25 +msgid "Password:" +msgstr "" + +#: 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 +msgid "Phone number (optional)" +msgstr "Telefonnummer (optional)" + +#: 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 "Telefonnummer:" + +#: 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 "Foto" + +#: templates/web/default/questionnaire/index.html:99 +#: templates/web/default/report/new/fill_in_details_form.html:102 +#: templates/web/default/report/update-form.html:62 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:99 +#: templates/web/fixmystreet/questionnaire/index.html:90 +msgid "Photo:" +msgstr "Foto:" + +#: templates/web/default/alert/list.html:26 +msgid "Photos of recent nearby reports" +msgstr "Fotos von neuen Meldungen in der Nähe" + +#: 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" + +#: 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 "Rückmeldung ausstehend" + +#: templates/web/fixmystreet/questionnaire/index.html:44 +msgid "Please <a class=\"tab_link\" href=\"#report\">take a look</a> at the updates that have been left." +msgstr "" + +#: templates/web/default/report/new/notes.html:6 +#: templates/web/fixmystreet/report/new/notes.html:6 +#: templates/web/oxfordshire/report/new/notes.html:5 +msgid "Please be polite, concise and to the point." +msgstr "Bitte seien Sie freundlich und prägnant." + +#: templates/web/default/auth/change_password.html:12 +#: templates/web/default/auth/change_password.html:17 +msgid "Please check the passwords and try again" +msgstr "" + +#: templates/web/default/auth/token.html:14 +msgid "Please check your email" +msgstr "Bitte überprüfen Sie Ihr E-Mail" + +#: templates/web/default/auth/general.html:14 +#: templates/web/default/auth/general.html:8 +#: templates/web/fixmystreet/auth/general.html:15 +#: templates/web/fixmystreet/auth/general.html:9 +#: templates/web/seesomething/auth/general.html:15 +#: templates/web/seesomething/auth/general.html:9 +#: templates/web/zurich/auth/general.html:3 +#: templates/web/zurich/auth/general.html:9 +msgid "Please check your email address is correct" +msgstr "Bitte überprüfen Sie ob Ihre E-Mail Adresse korrekt ist" + +#: 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 "Bitte wählen Sie eine Kategorie" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:387 +msgid "Please choose a property type" +msgstr "" + +#: templates/web/seesomething/js/translation_strings.html:6 +msgid "Please choose a transport category" +msgstr "" + +#: templates/web/seesomething/js/translation_strings.html:7 +msgid "Please choose an incident category" +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”" +msgstr "" + +#: templates/web/default/contact/blurb.html:2 +msgid "" +"Please do <strong>not</strong> report problems through this form; messages go to\n" +"the team behind FixMyStreet, not a council. To report a problem,\n" +"please <a href=\"/\">go to the front page</a> and follow the instructions." +msgstr "" + +#: templates/web/default/report/new/notes.html:7 +#: templates/web/fixmystreet/report/new/notes.html:7 +#: templates/web/oxfordshire/report/new/notes.html:6 +msgid "Please do not be abusive — abusing your council devalues the service for all users." +msgstr "" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:46 +msgid "Please do not give address or personal information in this section." +msgstr "" + +#: 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 "Obligatorisches Feld" + +#: 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/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 "Bitte geben Sie eine gültige E-Mail Adresse an" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:346 +#: perllib/FixMyStreet/App/Controller/Contact.pm:107 +msgid "Please enter a valid email address" +msgstr "Bitte geben Sie eine gültige E-Mail Adresse an" + +#: 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" + +#: 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 "Ihre E-Mail Adresse" + +#: templates/web/bromley/report/new/fill_in_details_form.html:149 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:151 +#: templates/web/seesomething/report/new/fill_in_details_form.html:85 +#: templates/web/zurich/report/new/fill_in_details_form.html:92 +msgid "Please enter your email address" +msgstr "Ihre E-Mail Adresse" + +#: 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: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: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: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:24 +#: templates/web/oxfordshire/js/translation_strings.html:18 +msgid "Please enter your title" +msgstr "Bitte geben Sie Ihre E-Mail-Adresse an" + +#: 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 "<a href=\"%s\">Erneut anmelden</a> oder <a href=\"/\">zurück zur Startseite</a>." + +#: templates/web/emptyhomes/report/new/fill_in_details_text.html:1 +msgid "" +"Please fill in details of the empty property below, saying what type of\n" +"property it is e.g. an empty home, block of flats, office etc. Tell us\n" +"something about its condition and any other information you feel is relevant.\n" +"There is no need for you to give the exact address. Please be polite, concise\n" +"and to the point; writing your message entirely in block capitals makes it hard\n" +"to read, as does a lack of punctuation." +msgstr "" + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/default/report/new/fill_in_details_text.html:11 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:10 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:8 +msgid "Please fill in details of the problem below." +msgstr "" + +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:3 +msgid "" +"Please fill in details of the problem below. Leave as much detail as you can, \n" +"and if possible describe the exact location of\n" +"the problem (e.g. if there is a streetlight number or road name)." +msgstr "Bitte beschreiben Sie Ihre Meldung weiter unten. Wir können den Mangel nur beheben, wenn Sie soviel Details wie möglich angeben: Beschreiben Sie die exakte Lage (z.B. An der Wand Richtung Strasse), was genau der Mangel ist, wie lange dieser schon da ist und laden Sie wenn möglich ein Photo des Mangels hoch." + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/default/report/new/fill_in_details_text.html:3 +msgid "" +"Please fill in details of the problem below. The council won't be able\n" +"to help unless you leave as much detail as you can, so please describe the exact location of\n" +"the problem (e.g. on a wall), what it is, how long it has been there, a description (and a\n" +"photo of the problem if you have one), etc." +msgstr "Bitte beschreiben Sie Ihre Meldung weiter unten. Wir können den Mangel nur beheben, wenn Sie soviel Details wie möglich angeben: Beschreiben Sie die exakte Lage (z.B. An der Wand Richtung Strasse), was genau der Mangel ist, wie lange dieser schon da ist und laden Sie wenn möglich ein Photo des Mangels hoch." + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:70 +#: templates/web/seesomething/report/new/fill_in_details_form.html:20 +#: templates/web/zurich/report/new/fill_in_details_form.html:46 +msgid "Please fill in details of the problem." +msgstr "Beschreiben Sie den Mangel." + +#: templates/web/bromley/report/new/fill_in_details_form.html:28 +#: templates/web/default/report/new/fill_in_details_form.html:27 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:26 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:35 +#: templates/web/zurich/report/new/fill_in_details_form.html:20 +msgid "Please fill in the form below with details of the problem, and describe the location as precisely as possible in the details box." +msgstr "Füllen Sie das Formular mit den Details des Mangels aus und beschreiben Sie den Ort des Mangels möglichst genau." + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:243 +msgid "Please indicate whether you'd like to receive another questionnaire" +msgstr "" + +#: templates/web/fixmystreet/report/updates-sidebar-notes.html:3 +msgid "Please note that updates are not sent to the council." +msgstr "" + +#: templates/web/default/report/update-form.html:7 +msgid "Please note that updates are not sent to the council. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgstr "" + +#: templates/web/barnet/report/updates-sidebar-notes.html:1 +msgid "Please note that updates are not sent to the relevant department. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgstr "Wir verwenden Ihre persönlichen Daten nur entsprechend unserer <a href=\"/faq#privacy\">Datenschutzrichtlinien.</a>" + +#: templates/web/bromley/report/new/fill_in_details_form.html:23 +#: templates/web/default/report/new/fill_in_details_form.html:5 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:5 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:26 +#: templates/web/zurich/report/new/fill_in_details_form.html:11 +msgid "Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit." +msgstr "" + +#: templates/web/default/report/new/notes.html:1 +#: templates/web/fixmybarangay/report/new/notes.html:1 +#: templates/web/fixmystreet/report/new/notes.html:1 +#: templates/web/oxfordshire/report/new/notes.html:1 +msgid "Please note:" +msgstr "Hinweise:" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:246 +msgid "Please provide some explanation as to why you're reopening this report" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:253 +msgid "Please provide some text as well as a photo" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:116 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:239 +msgid "Please say whether you've ever reported a problem to your council before" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:80 +msgid "Please select the feed you want" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:118 +msgid "Please select the type of alert you want" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:235 +msgid "Please state whether or not the problem has been fixed" +msgstr "" + +#: templates/web/default/questionnaire/index.html:50 +msgid "Please take a look at the updates that have been left." +msgstr "" + +#: 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:183 +msgid "Please upload a JPEG image only\n" +msgstr "Bitte laden Sie nur JPEG Bilder hoch\n" + +#: perllib/FixMyStreet/App/Controller/Contact.pm:98 +msgid "Please write a message" +msgstr "" + +#: templates/web/bromley/report/display.html:70 +#: templates/web/fixmystreet/report/update-form.html:23 +msgid "Please write your update here" +msgstr "" + +#: templates/web/bromley/report/display.html:123 +#: templates/web/bromley/report/display.html:151 +#: templates/web/bromley/report/display.html:163 +#: templates/web/default/contact/index.html:93 +#: templates/web/default/report/update-form.html:109 +#: templates/web/default/report/update-form.html:131 +#: templates/web/default/report/update-form.html:72 +#: templates/web/fixmystreet/contact/index.html:105 +#: templates/web/fixmystreet/report/update-form.html:123 +#: templates/web/fixmystreet/report/update-form.html:71 +#: templates/web/fixmystreet/report/update-form.html:95 +msgid "Post" +msgstr "" + +#: templates/web/default/report/updates.html:15 +msgid "Posted anonymously at %s" +msgstr "" + +#: templates/web/default/report/updates.html:22 +msgid "Posted by %s (<strong>%s</strong>) at %s" +msgstr "" + +#: templates/web/default/report/updates.html:24 +msgid "Posted by %s at %s" +msgstr "" + +#: templates/web/default/pagination.html:7 +msgid "Previous" +msgstr "Zurück" + +#: 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 "" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:108 +msgid "Private information (not shown on site)" +msgstr "" + +#: templates/web/default/maps/openlayers.html:85 +msgid "Problem" +msgstr "Meldung" + +#: templates/web/default/admin/timeline.html:22 +msgid "Problem %d created" +msgstr "" + +#: templates/web/default/admin/timeline.html:24 +msgid "Problem %s confirmed" +msgstr "" + +#: templates/web/default/admin/timeline.html:26 +msgid "Problem %s sent to council %s" +msgstr "" + +#: 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:950 +msgid "Problem marked as open." +msgstr "" + +#: templates/web/default/admin/questionnaire.html:21 +msgid "Problem state change based on survey results" +msgstr "" + +#: templates/web/default/admin/flagged.html:10 +msgid "Problems" +msgstr "Meldungen" + +#: templates/web/default/around/_updates.html:1 +msgid "Problems in this area" +msgstr "Meldungen in dieser Gegend" + +#: templates/web/bromley/report/display.html:31 +#: templates/web/fixmystreet/around/tabbed_lists.html:4 +#: templates/web/fixmystreet/report/display.html:46 +msgid "Problems nearby" +msgstr "Meldungen in der Nähe" + +#: templates/web/fixmystreet/around/tabbed_lists.html:3 +#: templates/web/fixmystreet/report/display.html:44 +msgid "Problems on the map" +msgstr "Meldungen auf der Karte" + +#: db/alert_types.pl:14 +msgid "Problems recently reported fixed on FixMyStreet" +msgstr "Meldungen, welche kürzlich beantwortet wurden" + +#: templates/web/default/alert/_list.html:19 +#: templates/web/fixmystreet/alert/_list.html:21 +msgid "Problems within %.1fkm of this location" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/Default.pm:626 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:109 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:155 +#: perllib/FixMyStreet/Cobrand/UK.pm:228 +msgid "Problems within %s" +msgstr "Meldungen innerhalb %s" + +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:117 +#: perllib/FixMyStreet/Cobrand/UK.pm:242 +msgid "Problems within %s ward" +msgstr "" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:24 +msgid "Problems within %s, FixMyStreet" +msgstr "" + +#: templates/web/default/alert/_list.html:40 +#: templates/web/fixmybarangay/alert/_list.html:13 +#: templates/web/fixmystreet/alert/_list.html:42 +msgid "Problems within the boundary of:" +msgstr "" + +#: db/alert_types_eha.pl:8 +msgid "Properties recently reported as put back to use on reportemptyhomes.com" +msgstr "" + +#: templates/web/default/admin/report_edit.html:32 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:115 +msgid "Property address:" +msgstr "" + +#: templates/web/default/report/new/category.html:8 +msgid "Property type:" +msgstr "" + +#: templates/web/bromley/report/new/fill_in_details_form.html:52 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:64 +msgid "Provide a title" +msgstr "" + +#: templates/web/bromley/report/display.html:57 +#: templates/web/default/report/update-form.html:3 +#: templates/web/fixmystreet/report/update-form.html:4 +msgid "Provide an update" +msgstr "Meldung aktualisieren" + +#: templates/web/fixmystreet/auth/general.html:53 +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 "" + +#: 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." +msgstr "" + +#: templates/web/bromley/report/display.html:144 +#: templates/web/default/report/new/fill_in_details_form.html:173 +#: templates/web/default/report/update-form.html:128 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:202 +#: templates/web/fixmystreet/report/update-form.html:116 +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:60 +#: templates/web/default/admin/body.html:73 +msgid "Public" +msgstr "" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:44 +msgid "Public information (shown on site)" +msgstr "" + +#: 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:80 +#: templates/web/zurich/admin/stats.html:38 +msgid "Publish photo" +msgstr "Foto veröffentlichen" + +#: templates/web/zurich/admin/report_edit.html:222 +msgid "Publish the response" +msgstr "Antwort veröffentlichen" + +#: templates/web/default/questionnaire/completed.html:1 +#: templates/web/default/questionnaire/completed.html:2 +#: templates/web/default/questionnaire/index.html:0 +#: templates/web/default/questionnaire/index.html:14 +#: templates/web/default/questionnaire/index.html:4 +#: templates/web/fixmystreet/questionnaire/index.html:0 +#: templates/web/fixmystreet/questionnaire/index.html:14 +#: templates/web/fixmystreet/questionnaire/index.html:32 +#: templates/web/fixmystreet/questionnaire/index.html:4 +msgid "Questionnaire" +msgstr "" + +#: templates/web/default/admin/timeline.html:30 +msgid "Questionnaire %d answered for problem %d, %s to %s" +msgstr "" + +#: templates/web/default/admin/timeline.html:28 +msgid "Questionnaire %d sent for problem %d" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:192 +msgid "Questionnaire filled in by problem reporter" +msgstr "" + +#: templates/web/bromley/report/display.html:37 +#: templates/web/default/alert/_list.html:21 +#: templates/web/default/around/display_location.html:1 +#: templates/web/default/around/display_location.html:3 +#: templates/web/default/report/display.html:46 +#: templates/web/default/reports/_rss.html:1 +#: templates/web/fixmystreet/alert/_list.html:22 +#: templates/web/fixmystreet/alert/updates.html:9 +#: templates/web/fixmystreet/report/display.html:61 +msgid "RSS feed" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/UK.pm:271 perllib/FixMyStreet/Cobrand/UK.pm:283 +msgid "RSS feed for %s" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/UK.pm:277 perllib/FixMyStreet/Cobrand/UK.pm:289 +msgid "RSS feed for %s ward, %s" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:171 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:179 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:189 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:197 +#: perllib/FixMyStreet/Cobrand/UK.pm:297 perllib/FixMyStreet/Cobrand/UK.pm:309 +msgid "RSS feed of %s" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/UK.pm:302 perllib/FixMyStreet/Cobrand/UK.pm:314 +msgid "RSS feed of %s, within %s ward" +msgstr "" + +#: templates/web/default/alert/_list.html:21 +#: templates/web/fixmystreet/alert/_list.html:22 +msgid "RSS feed of nearby problems" +msgstr "" + +#: templates/web/default/reports/_rss.html:1 +msgid "RSS feed of problems in this %s" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/Default.pm:627 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:110 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:154 +#: perllib/FixMyStreet/Cobrand/UK.pm:235 +msgid "RSS feed of problems within %s" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:116 +#: perllib/FixMyStreet/Cobrand/UK.pm:241 +msgid "RSS feed of problems within %s ward" +msgstr "" + +#: templates/web/default/around/display_location.html:1 +#: templates/web/default/around/display_location.html:4 +msgid "RSS feed of recent local problems" +msgstr "" + +#: templates/web/bromley/report/display.html:37 +#: templates/web/default/report/display.html:46 +#: templates/web/fixmystreet/alert/updates.html:9 +#: templates/web/fixmystreet/report/display.html:61 +msgid "RSS feed of updates to this problem" +msgstr "" + +#: templates/web/bromley/report/display.html:39 +#: templates/web/default/alert/updates.html:9 +#: templates/web/default/report/display.html:37 +#: templates/web/fixmystreet/alert/updates.html:14 +#: templates/web/fixmystreet/report/display.html:63 +msgid "Receive email when updates are left on this problem." +msgstr "Erhalten Sie Aktualisierungen dieser Meldung." + +#: templates/web/default/around/display_location.html:0 +#: templates/web/default/around/display_location.html:32 +msgid "Recent local problems, FixMyStreet" +msgstr "" + +#: templates/web/default/reports/index.html:19 +#: templates/web/fixmybarangay/reports/index.html:19 +msgid "Recently <br>fixed" +msgstr "Kürzlich <br>beantwortet" + +#: templates/web/fiksgatami/nn/reports/index.html:13 +#: templates/web/fiksgatami/reports/index.html:13 +msgid "Recently fixed" +msgstr "Kürzlich beantwortet" + +#: templates/web/default/index.html:35 templates/web/emptyhomes/index.html:24 +#: templates/web/fixmystreet/index.html:45 +msgid "Recently reported problems" +msgstr "Kürzlich erfasste Meldungen:" + +#: templates/web/default/report/new/notes.html:9 +#: templates/web/fixmystreet/report/new/notes.html:10 +msgid "Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site remember that you can contact your council directly using their own website." +msgstr "Züri wie neu dient dazu Mängel an der Infrastruktur zu melden. Meldungen und Wünsche bezüglich Verbesserungen an der Infrastruktur sowie Gestaltungsvorschläge können über Züri wie neu nicht berücksichtigt werden. Notfälle müssen der Polizei gemeldet werden via Telefon 117." + +#: templates/web/fixmybarangay/report/new/notes.html:9 +msgid "Remember that, for the pilot project, FixMyBarangay is only for reporting potholes and streetlights in bgy. Luz or Basak San Nicolas." +msgstr "" + +#: templates/web/default/admin/report_blocks.html:16 +msgid "Remove flag" +msgstr "" + +#: templates/web/default/admin/report_edit.html:89 +#: templates/web/default/admin/update_edit.html:57 +#: templates/web/zurich/admin/update_edit.html:35 +msgid "Remove photo (can't be undone!)" +msgstr "" + +#: templates/web/emptyhomes/header.html:12 +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/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 "Eine Meldung erfassen" + +#: templates/web/bromley/report/display.html:28 +#: templates/web/fixmystreet/report/display.html:35 +msgid "Report abuse" +msgstr "Missbrauch melden" + +#: templates/web/default/report_created.html:1 +#: templates/web/default/report_created.html:3 +#: templates/web/seesomething/report_created.html:0 +#: templates/web/seesomething/report_created.html:8 +msgid "Report created" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Rss.pm:295 +msgid "Report on %s" +msgstr "" + +#: templates/web/default/index.html:14 templates/web/emptyhomes/index.html:5 +#: templates/web/fixmystreet/around/intro.html:1 +#: templates/web/stevenage/around/intro.html:1 +#: templates/web/zurich/around/intro.html:1 +msgid "Report, view, or discuss local problems" +msgstr "Melden Sie Mängel an der Infrastruktur von Zürich" + +#: templates/web/default/my/my.html:74 +msgid "Reported %s" +msgstr "" + +#: templates/web/default/my/my.html:72 +msgid "Reported %s, to %s" +msgstr "" + +#: 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 "Anonym gemeldet um" + +#: templates/web/default/admin/questionnaire.html:5 +#: templates/web/default/questionnaire/index.html:77 +#: templates/web/fixmystreet/questionnaire/index.html:71 +msgid "Reported before" +msgstr "" + +#: 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" + +#: 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:555 +msgid "Reported in the %s category anonymously at %s" +msgstr "In der Kategorie %s um %s gemeldet" + +#: 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: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 "Ihre Meldung" + +#: 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: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 +msgid "Reports awaiting approval" +msgstr "Rückmeldung ausstehend" + +#: templates/web/default/around/tabbed_lists.html:3 +msgid "Reports on and around the map" +msgstr "" + +#: templates/web/zurich/admin/index-sdm.html:10 +msgid "Reports published" +msgstr "Beantwortet" + +#: templates/web/default/admin/report_edit.html:71 +msgid "Resend report" +msgstr "" + +#: templates/web/default/js/translation_strings.html:28 +#: templates/web/oxfordshire/js/translation_strings.html:22 +msgid "Right place?" +msgstr "Richtiger Ort?" + +#: perllib/FixMyStreet/Geocode/OSM.pm:173 +msgid "Road operator for this named road (derived from road reference number and type): %s" +msgstr "" + +#: perllib/FixMyStreet/Geocode/OSM.pm:170 +msgid "Road operator for this named road (from OpenStreetMap): %s" +msgstr "" + +#: 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 "Links drehen" + +#: 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 "Rechts drehen" + +#: templates/web/default/admin/body_edit.html:76 +msgid "Save changes" +msgstr "Speichern" + +#: templates/web/default/admin/reports.html:1 +#: templates/web/zurich/admin/reports.html:1 +msgid "Search Reports" +msgstr "Meldungen suchen" + +#: templates/web/default/admin/users.html:1 +msgid "Search Users" +msgstr "User suchen" + +#: templates/web/zurich/header.html:77 +msgid "Search reports" +msgstr "Meldungen suchen" + +#: templates/web/default/admin/reports.html:5 +#: templates/web/default/admin/users.html:8 +#: templates/web/zurich/admin/reports.html:5 +msgid "Search:" +msgstr "Suchen:" + +#: 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:71 +#: templates/web/zurich/admin/body-form.html:26 +msgid "Select an area" +msgstr "Gebiet wählen" + +#: templates/web/default/alert/_list.html:8 +#: templates/web/fixmystreet/alert/_list.html:10 +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:664 +msgid "Sent to %s %s later" +msgstr "" + +#: templates/web/default/admin/report_edit.html:71 +msgid "Sent:" +msgstr "Gesendet:" + +#: templates/web/default/admin/report_edit.html:73 +#: templates/web/zurich/admin/stats.html:45 +msgid "Service:" +msgstr "" + +#: templates/web/fixmystreet/report/display.html:41 +msgid "Share" +msgstr "" + +#: templates/web/bromley/report/display.html:205 +#: templates/web/bromley/report/new/fill_in_details_form.html:129 +#: templates/web/bromley/report/new/fill_in_details_form.html:175 +#: templates/web/default/report/new/fill_in_details_form.html:210 +#: templates/web/default/report/update-form.html:157 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:129 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:197 +#: templates/web/fixmystreet/report/update-form.html:144 +msgid "Show my name publicly" +msgstr "" + +#: templates/web/default/around/display_location.html:69 +msgid "Show old" +msgstr "" + +#: templates/web/default/around/display_location.html:60 +msgid "Show pins" +msgstr "Zeige Stecknadeln" + +#: templates/web/default/auth/general.html:3 +#: templates/web/default/auth/general.html:49 +#: templates/web/fixmybarangay/header.html:70 +#: templates/web/fixmystreet/auth/general.html:3 +#: templates/web/fixmystreet/auth/general.html:42 +#: templates/web/fixmystreet/auth/general.html:62 +#: templates/web/fixmystreet/header.html:54 +#: templates/web/oxfordshire/header.html:115 +#: templates/web/seesomething/auth/general.html:3 +#: templates/web/seesomething/auth/general.html:39 +#: templates/web/stevenage/header.html:101 +#: templates/web/zurich/auth/general.html:18 +#: templates/web/zurich/auth/general.html:35 +msgid "Sign in" +msgstr "Anmelden" + +#: templates/web/default/auth/general.html:74 +msgid "Sign in by email" +msgstr "" + +#: templates/web/default/auth/general.html:1 +#: templates/web/fixmystreet/auth/general.html:1 +#: templates/web/seesomething/auth/general.html:1 +#: templates/web/zurich/auth/general.html:1 +msgid "Sign in or create an account" +msgstr "" + +#: templates/web/bromley/auth/sign_out.html:1 +#: templates/web/default/auth/sign_out.html:1 +#: templates/web/default/header.html:30 +#: templates/web/emptyhomes/header.html:46 +#: templates/web/fiksgatami/header.html:22 +#: templates/web/fiksgatami/nn/header.html:22 +#: templates/web/lichfielddc/header.html:177 +#: templates/web/reading/header.html:33 +#: templates/web/seesomething/auth/sign_out.html:1 +#: templates/web/zurich/auth/sign_out.html:1 +msgid "Sign out" +msgstr "Ausloggen" + +#: templates/web/default/header.html:29 +#: templates/web/emptyhomes/header.html:45 +#: templates/web/fiksgatami/header.html:21 +#: templates/web/fiksgatami/nn/header.html:21 +#: templates/web/lichfielddc/header.html:177 +#: templates/web/reading/header.html:32 +msgid "Signed in as %s" +msgstr "" + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +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 "" + +#: perllib/FixMyStreet/App/View/Email.pm:32 +#: perllib/FixMyStreet/App/View/Web.pm:44 +msgid "Some text to localize" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/UK.pm:93 +msgid "Sorry, that appears to be a Crown dependency postcode, which we don't cover." +msgstr "" + +#: templates/web/default/tokens/abuse.html:5 +msgid "Sorry, there has been an error confirming your problem." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:215 +#: perllib/FixMyStreet/Geocode.pm:28 perllib/FixMyStreet/Geocode/Bing.pm:58 +#: perllib/FixMyStreet/Geocode/Google.pm:74 +#: perllib/FixMyStreet/Geocode/OSM.pm:66 +msgid "Sorry, we could not find that location." +msgstr "Diese Adresse wurde nicht gefunden." + +#: perllib/FixMyStreet/Geocode/Bing.pm:53 +#: perllib/FixMyStreet/Geocode/Google.pm:69 +#: perllib/FixMyStreet/Geocode/Zurich.pm:87 +msgid "Sorry, we could not parse that location. Please try again." +msgstr "Diese Adresse wurde nicht gefunden." + +#: templates/web/fiksgatami/footer.html:16 +#: templates/web/fiksgatami/nn/footer.html:16 +msgid "Source code" +msgstr "" + +#: templates/web/default/admin/stats.html:64 +#, fuzzy +msgid "Start Date:" +msgstr "Status:" + +#: 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 "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: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: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 "Statistik" + +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Status" +msgstr "" + +#: templates/web/default/report/updates.html:10 +msgid "Still open, via questionnaire, %s" +msgstr "" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370 +msgid "Subcategory: %s" +msgstr "" + +#: templates/web/zurich/admin/index-dm.html:27 +msgid "Subdivision/Body" +msgstr "FB/Externe" + +#: templates/web/bromley/report/new/fill_in_details_form.html:48 +#: templates/web/fixmystreet/contact/index.html:91 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:60 +msgid "Subject" +msgstr "Titel" + +#: 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 "Titel:" + +#: 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 "Abschicken" + +#: 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 "Speichern" + +#: templates/web/default/questionnaire/index.html:116 +#: templates/web/fixmystreet/questionnaire/index.html:105 +msgid "Submit questionnaire" +msgstr "" + +#: 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 "Erfasst" + +#: templates/web/bromley/report/display.html:44 +#: templates/web/default/alert/updates.html:17 +#: templates/web/default/report/display.html:42 +#: templates/web/fixmystreet/alert/updates.html:23 +#: templates/web/fixmystreet/report/display.html:68 +msgid "Subscribe" +msgstr "" + +#: templates/web/default/alert/_list.html:97 +#: templates/web/fixmybarangay/alert/_list.html:42 +#: templates/web/fixmystreet/alert/_list.html:92 +msgid "Subscribe me to an email alert" +msgstr "" + +#: templates/web/fixmybarangay/alert/_list.html:6 +msgid "Subscribe to an alert based upon what baranagay you’re in:" +msgstr "" + +#: 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 "Zusammenfassung" + +#: templates/web/default/reports/index.html:1 +#: templates/web/emptyhomes/reports/index.html:1 +#: templates/web/fiksgatami/nn/reports/index.html:1 +#: templates/web/fiksgatami/reports/index.html:1 +#: templates/web/fixmybarangay/reports/index.html:1 +#: templates/web/zurich/reports/index.html:0 +#: templates/web/zurich/reports/index.html:4 +msgid "Summary reports" +msgstr "Alle Meldungen" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1179 +msgid "Survey" +msgstr "" + +#: templates/web/default/admin/questionnaire.html:1 +msgid "Survey Results" +msgstr "" + +#: 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 "" + +#: templates/web/default/admin/body.html:18 +msgid "Text only version" +msgstr "" + +#: templates/web/default/admin/update_edit.html:20 +#: templates/web/zurich/admin/update_edit.html:12 +msgid "Text:" +msgstr "" + +#: templates/web/default/tokens/confirm_update.html:7 +#: templates/web/default/tokens/confirm_update.html:8 +msgid "Thank you — you can <a href=\"%s\">view your updated problem</a> on the site." +msgstr "Danke — Sie können Ihre aktualisierte Meldung <a href=\"%s\">auf der Webseite anschauen</a>." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:6 +#: templates/web/emptyhomes/tokens/confirm_problem.html:8 +msgid "Thank you for reporting an empty property on ReportEmptyHomes.com. We have emailed the lead officer for empty homes in the council responsible with details, and asked them to do whatever they can to get the empty property back into use as soon as possible." +msgstr "" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:30 +#: templates/web/emptyhomes/tokens/confirm_problem.html:31 +msgid "" +"Thank you for reporting this empty property on ReportEmptyHomes.com.\n" +"At present the report cannot be sent through to the council for this area. We\n" +"are working with councils to link them into the system so that as many areas\n" +"as possible will be covered." +msgstr "" + +#: templates/web/default/tokens/error.html:7 +msgid "Thank you for trying to confirm your update or problem. We seem to have an error ourselves though, so <a href=\"%s\">please let us know what went on</a> and we'll look into it." +msgstr "" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:24 +#: templates/web/emptyhomes/tokens/confirm_problem.html:26 +msgid "Thank you for using ReportEmptyHomes.com. Your action is already helping to resolve the UK’s empty homes crisis." +msgstr "" + +#: templates/web/fixmystreet/around/around_index.html:27 +msgid "Thanks for uploading your photo. We now need to locate your problem, so please enter a nearby street name or postcode in the box above :" +msgstr "" + +#: templates/web/default/contact/submit.html:8 +msgid "Thanks for your feedback. We'll get back to you as soon as we can!" +msgstr "" + +#: templates/web/default/questionnaire/creator_fixed.html:9 +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:190 +msgid "That image doesn't appear to have uploaded correctly (%s), please try again." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Council.pm:90 +msgid "That location does not appear to be covered by a council; perhaps it is offshore or outside the country. Please try again." +msgstr "Sie können Mängel nur innerhalb der Stadt Zürich melden. Verwenden Sie dafür die Adressuche." + +#: perllib/FixMyStreet/App/Controller/Location.pm:123 +msgid "That location does not appear to be in the UK; please try again." +msgstr "" + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:63 +#: perllib/FixMyStreet/Cobrand/UK.pm:86 +msgid "That postcode was not recognised, sorry." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:704 +msgid "That problem will now be resent." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report.pm:117 +msgid "That report cannot be viewed on %s." +msgstr "Diese Meldung wurde von Züri wie neu entfernt." + +#: perllib/FixMyStreet/App/Controller/Report.pm:111 +msgid "That report has been removed from FixMyStreet." +msgstr "Diese Meldung wurde von Zü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 — <em>please</em> be patient." +msgstr "" + +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:3 +msgid "The council won’t be able to help unless you leave as much detail as you can. Please describe the exact location of the problem (e.g. on a wall), what it is, how long it has been there, a description (and a photo of the problem if you have one), etc." +msgstr "Bitte machen Sie so genaue Angaben wie möglich: Beschreiben Sie die Art des Mangels und wo er sich befindet (z.B. an der Wand). Senden Sie uns ein Foto des Mangels (inkl. Umgebung). <br/>Beschreiben Sie nur einen Mangel pro Meldung." + +#: templates/web/fixmystreet/questionnaire/index.html:43 +msgid "The details of your problem are available from the other tab above." +msgstr "" + +#: templates/web/default/questionnaire/index.html:49 +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 "" + +#: templates/web/default/open311/index.html:88 +msgid "The following Open311 v2 attributes are returned for each request: service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code and service_name." +msgstr "" + +#: perllib/FixMyStreet/Geocode/OSM.pm:165 +msgid "The following information about the nearest road might be inaccurate or irrelevant, if the problem is close to several roads or close to a road without a name registered in OpenStreetMap." +msgstr "" + +#: db/alert_types.pl:19 db/alert_types.pl:23 db/alert_types.pl:27 +#: db/alert_types.pl:31 +msgid "The latest local problems reported by users" +msgstr "" + +#: db/alert_types_eha.pl:13 +msgid "The latest local reports reported by users" +msgstr "" + +#: db/alert_types.pl:35 +msgid "The latest problems for {{COUNCIL}} reported by users" +msgstr "" + +#: db/alert_types.pl:39 +msgid "The latest problems for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "" + +#: db/alert_types.pl:11 +msgid "The latest problems reported by users" +msgstr "" + +#: db/alert_types.pl:15 +msgid "The latest problems reported fixed by users" +msgstr "" + +#: db/alert_types.pl:43 +msgid "The latest problems within {{NAME}}'s boundary reported by users" +msgstr "" + +#: db/alert_types_eha.pl:9 +msgid "The latest properties reported back to use by users" +msgstr "" + +#: db/alert_types_eha.pl:20 +msgid "The latest reports for {{COUNCIL}} reported by users" +msgstr "" + +#: db/alert_types_eha.pl:24 +msgid "The latest reports for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "" + +#: db/alert_types_eha.pl:28 +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 "" + +#: templates/web/default/errors/page_error_404_not_found.html:10 +#: templates/web/default/errors/page_error_404_not_found.html:12 +msgid "The requested URL '%s' was not found on this server" +msgstr "" + +#: templates/web/default/alert/_list.html:14 +#: templates/web/fixmystreet/alert/_list.html:16 +msgid "The simplest alert is our geographic one:" +msgstr "" + +#: templates/web/barnet/report/new/councils_text_all.html:3 +#: templates/web/default/report/new/councils_extra_text.html:1 +#: templates/web/default/report/new/councils_text_some.html:10 +#: templates/web/default/report/new/councils_text_some.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:17 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:12 +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: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 "" + +#: perllib/FixMyStreet/App/Controller/Contact.pm:116 +#: perllib/FixMyStreet/App/Controller/Dashboard.pm:59 +msgid "There was a problem showing this page. Please try again later." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:747 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:134 +#: templates/web/default/auth/general.html:23 +#: templates/web/fixmystreet/auth/general.html:24 +#: templates/web/seesomething/auth/general.html:24 +#: templates/web/zurich/auth/general.html:28 +msgid "There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the ‘sign in by email’ section of the form." +msgstr "Ihre E-Mail/Passwort Kombination war ungültig. Bitte versuchen Sie es erneut oder wenden Sie sich an den Administrator." + +#: perllib/FixMyStreet/App/Controller/Alert.pm:355 +msgid "There was a problem with your email/password combination. Please try again." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:272 +msgid "There was a problem with your update. Please try again." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Contact.pm:120 +msgid "There were problems with your report. Please see below." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:299 +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 "" + +#: 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: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" +msgstr "Diese Information wird benötigt" + +#: templates/web/default/debug_header.html:3 +msgid "This is a developer site; things might break at any time, and the database will be periodically deleted." +msgstr "" + +#: templates/web/fixmybarangay/reports/index.html:7 +msgid "This is a summary of all reports on this site; select a particular barangay to see the reports sent there." +msgstr "" + +#: templates/web/emptyhomes/reports/index.html:4 +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 "" + +#: templates/web/default/reports/index.html:7 +#: templates/web/fiksgatami/nn/reports/index.html:4 +#: templates/web/fiksgatami/reports/index.html:4 +msgid "This is a summary of all reports on this site; select a particular council to see the reports sent there." +msgstr "" + +#: templates/web/default/auth/token.html:9 +msgid "This may be because the link is too old or already used, or the address was not copied correctly." +msgstr "" + +#: templates/web/default/report/banner.html:15 +msgid "This problem has been closed" +msgstr "" + +#: templates/web/bromley/report/display.html:98 +#: templates/web/default/report/banner.html:12 +#: templates/web/default/report/update-form.html:48 +#: templates/web/emptyhomes/report/banner.html:3 +#: templates/web/fixmystreet/report/update-form.html:46 +msgid "This problem has been fixed" +msgstr "Dieser Mangel wurde behoben" + +#: templates/web/bromley/report/display.html:92 +#: templates/web/default/report/update-form.html:43 +#: templates/web/fixmystreet/report/update-form.html:40 +msgid "This problem has not been fixed" +msgstr "Dieser Mangel wurde nicht behoben" + +#: templates/web/default/report/banner.html:19 +msgid "This problem is in progress" +msgstr "Dieser Mangel ist in Bearbeitung" + +#: templates/web/default/report/banner.html:9 +msgid "This problem is old and of unknown status." +msgstr "Dieses Problem ist alt und hat einen unbekannten Status" + +#: 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 "Überprüfung ausstehend" + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:86 +msgid "This report is currently marked as closed." +msgstr "" + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:84 +msgid "This report is currently marked as fixed." +msgstr "" + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:88 +msgid "This report is currently marked as open." +msgstr "" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315 +msgid "This report was submitted anonymously" +msgstr "" + +#: 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:1178 +#: templates/web/default/admin/timeline.html:1 +msgid "Timeline" +msgstr "" + +#: templates/web/default/admin/flagged.html:15 +#: templates/web/default/admin/reports.html:12 +msgid "Title" +msgstr "Titel" + +#: templates/web/default/around/_report_banner.html:2 +msgid "To <strong>report a problem</strong>, click on the map at the correct location." +msgstr "" + +#: templates/web/default/alert/index.html:27 +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:290 +msgid "To view a map of the precise location of this issue" +msgstr "" + +#: 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 "Total" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:24 +msgid "Transport Category" +msgstr "Kategorie" + +#: templates/web/default/js/translation_strings.html:29 +#: templates/web/oxfordshire/js/translation_strings.html:23 +msgid "Try again" +msgstr "Erneut versuchen" + +#: 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 "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:48 +#: templates/web/zurich/admin/report_edit.html:61 +#: templates/web/zurich/admin/update_edit.html:18 +msgid "Unconfirmed" +msgstr "Unbestätigt" + +#: templates/web/fixmystreet/report/banner.html:9 +msgid "Unknown" +msgstr "Unbekannt" + +#: perllib/FixMyStreet/App/Controller/Rss.pm:173 +msgid "Unknown alert type" +msgstr "" + +#: templates/web/default/js/translation_strings.html:39 +#: templates/web/oxfordshire/js/translation_strings.html:33 +msgid "Unknown error" +msgstr "Unbekannter Fehler" + +#: perllib/FixMyStreet/App/Controller/Report.pm:106 +msgid "Unknown problem ID" +msgstr "" + +#: templates/web/bromley/report/display.html:66 +#: templates/web/fixmystreet/report/update-form.html:19 +msgid "Update" +msgstr "Speichern" + +#: templates/web/default/admin/timeline.html:33 +msgid "Update %s created for problem %d; by %s" +msgstr "" + +#: templates/web/default/contact/index.html:21 +#: templates/web/fixmystreet/contact/index.html:34 +msgid "Update below added anonymously at %s" +msgstr "" + +#: templates/web/default/contact/index.html:23 +#: templates/web/fixmystreet/contact/index.html:36 +msgid "Update below added by %s at %s" +msgstr "" + +#: 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:38 +msgid "Update breakdown by state" +msgstr "" + +#: db/alert_types.pl:7 +msgid "Update by {{name}}" +msgstr "" + +#: templates/web/default/admin/update_edit.html:42 +#: templates/web/zurich/admin/update_edit.html:25 +msgid "Update changed problem state to %s" +msgstr "" + +#: templates/web/default/admin/update_edit.html:44 +msgid "Update marked problem as fixed" +msgstr "" + +#: templates/web/default/admin/update_edit.html:46 +msgid "Update reopened problem" +msgstr "" + +#: templates/web/default/admin/body.html:83 +msgid "Update statuses" +msgstr "" + +#: templates/web/default/report/update-form.html:22 +msgid "Update:" +msgstr "" + +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Updated" +msgstr "Aktualisiert" + +#: 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:24 +#: templates/web/zurich/report/updates.html:2 +msgid "Updates" +msgstr "Antwort" + +#: perllib/FixMyStreet/DB/Result/Comment.pm:131 +msgid "Updates are limited to 2000 characters in length. Please shorten your update" +msgstr "" + +#: db/alert_types.pl:5 db/alert_types.pl:6 +msgid "Updates on {{title}}" +msgstr "" + +#: templates/web/bromley/report/display.html:0 +#: templates/web/bromley/report/display.html:8 +#: templates/web/default/report/display.html:0 +#: templates/web/default/report/display.html:5 +#: templates/web/fixmystreet/report/display.html:0 +#: templates/web/fixmystreet/report/display.html:8 +msgid "Updates to this problem, FixMyStreet" +msgstr "" + +#: 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:1314 +msgid "User flagged" +msgstr "" + +#: 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:371 +#: perllib/FixMyStreet/App/Controller/Admin.pm:401 +msgid "Values updated" +msgstr "" + +#: templates/web/default/admin/report_edit.html:18 +#: templates/web/default/admin/update_edit.html:18 +#: templates/web/zurich/admin/report_edit-sdm.html:24 +#: templates/web/zurich/admin/report_edit.html:23 +#: templates/web/zurich/admin/update_edit.html:10 +msgid "View report on site" +msgstr "Meldung auf der Webseite betrachten" + +#: templates/web/default/reports/body.html:14 +msgid "View reports by ward" +msgstr "" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:39 +msgid "View your report" +msgstr "" + +#: templates/web/default/around/display_location.html:0 +#: templates/web/default/around/display_location.html:34 +#: templates/web/seesomething/around/display_location.html:0 +#: templates/web/seesomething/around/display_location.html:16 +msgid "Viewing a location" +msgstr "Meldung erfassen" + +#: templates/web/bromley/report/display.html:0 +#: templates/web/default/report/display.html:0 +#: templates/web/fixmystreet/report/display.html:0 +msgid "Viewing a problem" +msgstr "Meldung anschauen" + +#: templates/web/default/reports/body.html:16 +msgid "Wards of this council" +msgstr "" + +#: templates/web/default/alert/choose.html:6 +#: templates/web/default/around/around_index.html:13 +#: templates/web/fixmystreet/around/around_index.html:16 +#: templates/web/seesomething/around/around_index.html:13 +msgid "We found more than one match for that location. We show up to ten matches, please try a different search if yours is not here." +msgstr "Ihre Anfrage ergab mehr als eine mögliche Adresse. Die ersten zehn Treffer werden unten aufgelistet." + +#: templates/web/default/auth/token.html:8 +msgid "We have not been able to confirm your account - sorry." +msgstr "" + +#: templates/web/default/auth/token.html:16 +msgid "We have sent you an email containing a link to confirm your account." +msgstr "Sie werden in Kürze ein E-Mail erhalten um Ihren Account zu bestätigen." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:18 +#: templates/web/emptyhomes/tokens/confirm_problem.html:20 +msgid "We may contact you periodically to ask if anything has changed with the property you reported." +msgstr "" + +#: templates/web/bromley/report/display.html:143 +#: templates/web/fixmystreet/report/update-form.html:115 +msgid "We never show your email" +msgstr "Ihr E-Mail wird nie angezeigt" + +#: templates/web/bromley/report/new/fill_in_details_form.html:133 +#: templates/web/bromley/report/new/fill_in_details_form.html:179 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:134 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:201 +#: templates/web/zurich/report/new/fill_in_details_form.html:96 +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: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 "" + +#: templates/web/default/index-steps.html:31 +msgid "We send it to the council on your behalf" +msgstr "" + +#: templates/web/bromley/report/new/fill_in_details_form.html:217 +#: templates/web/default/report/new/notes.html:5 +#: templates/web/fixmybarangay/report/new/notes.html:5 +msgid "We will only use your personal information in accordance with our <a href=\"/faq#privacy\">privacy policy.</a>" +msgstr "Wir verwenden Ihre persönlichen Daten nur entsprechend unserer <a href=\"/faq#privacy\">Datenschutzrichtlinien.</a>" + +#: templates/web/fixmystreet/report/new/notes.html:4 +#: templates/web/oxfordshire/report/new/notes.html:4 +msgid "We will only use your personal information in accordance with our <a href=\"/privacy\">privacy policy.</a>" +msgstr "Ihre persönlichen Angaben werden nur für interne Zwecke verwendet und nicht veröffentlicht." + +#: templates/web/emptyhomes/contact/blurb.html:2 +msgid "We’d love to hear what you think about this website. Just fill in the form. Please don’t contact us about individual empty homes; use the box accessed from <a href=\"/\">the front page</a>." +msgstr "" + +#: templates/web/default/contact/blurb.html:8 +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:61 +#: templates/web/default/admin/body_edit.html:82 +#: templates/web/zurich/admin/body.html:17 +msgid "When edited" +msgstr "Wann editiert" + +#: templates/web/default/admin/problem_row.html:35 +msgid "When sent" +msgstr "Wann gesendet" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:621 +msgid "Whole block of empty flats" +msgstr "" + +#: templates/web/default/open311/index.html:94 +msgid "With request searches, it is also possible to search for agency_responsible to limit the requests to those sent to a single administration. The search term is the administration ID provided by <a href=\"%s\">MaPit</a>." +msgstr "" + +#: templates/web/fixmystreet/footer.html:21 +#: templates/web/stevenage/footer.html:22 +msgid "Would you like better integration with FixMyStreet? <a href=\"http://www.mysociety.org/for-councils/fixmystreet/\">Find out about FixMyStreet for councils</a>." +msgstr "" + +#: templates/web/fixmystreet/footer.html:17 +#: templates/web/stevenage/footer.html:18 +msgid "Would you like to contribute to FixMyStreet? Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>." +msgstr "" + +#: templates/web/default/questionnaire/index.html:106 +#: templates/web/fixmystreet/questionnaire/index.html:96 +msgid "Would you like to receive another questionnaire in 4 weeks, reminding you to check the status?" +msgstr "" + +#: templates/web/default/report/new/notes.html:8 +#: templates/web/fixmybarangay/report/new/notes.html:8 +#: templates/web/fixmystreet/report/new/notes.html:8 +#: templates/web/oxfordshire/report/new/notes.html:7 +msgid "Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation." +msgstr "Meldungen gänzlich in Grossbuchstaben zu schreiben macht diese unleserlich. Ebenso wenn keine Satzzeichen verwendet werden." + +#: templates/web/default/admin/stats.html:10 +msgid "Year" +msgstr "Jahr" + +#: 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 "Ja" + +#: templates/web/bromley/report/display.html:157 +#: templates/web/bromley/report/new/fill_in_details_form.html:198 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:161 +#: templates/web/fixmystreet/report/update-form.html:89 +msgid "Yes I have a password" +msgstr "" + +#: templates/web/default/contact/index.html:37 +#: templates/web/fixmystreet/contact/index.html:50 +msgid "You are reporting the following problem report for being abusive, containing personal information, or similar:" +msgstr "" + +#: templates/web/default/contact/index.html:15 +#: templates/web/fixmystreet/contact/index.html:28 +msgid "You are reporting the following update for being abusive, containing personal information, or similar:" +msgstr "" + +#: templates/web/default/tokens/confirm_problem.html:19 +#: templates/web/default/tokens/confirm_problem.html:21 +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:8 +msgid "You can <a href=\"%s%s\">view the problem on this site</a>." +msgstr "Danke! Sie kö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 +#: 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/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" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:38 +msgid "You have already answered this questionnaire. If you have a question, please <a href='%s'>get in touch</a>, or <a href='%s'>view your problem</a>.\n" +msgstr "" + +#: templates/web/bromley/report/new/fill_in_details_form.html:97 +#: templates/web/default/questionnaire/index.html:96 +#: templates/web/default/report/new/fill_in_details_form.html:93 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:90 +#: templates/web/fixmystreet/questionnaire/index.html:87 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:99 +#: templates/web/seesomething/report/new/fill_in_details_form.html:59 +#: templates/web/zurich/report/new/fill_in_details_form.html:75 +msgid "You have already attached a photo to this report, attaching another one will replace it." +msgstr "Sie haben bereits ein Photo angehängt. Laden Sie ein neues hoch um es zu ersetzen." + +#: templates/web/bromley/report/display.html:108 +#: templates/web/default/report/update-form.html:59 +#: templates/web/fixmystreet/report/update-form.html:56 +msgid "You have already attached a photo to this update, attaching another one will replace it." +msgstr "" + +#: templates/web/default/auth/sign_out.html:3 +#: templates/web/seesomething/auth/sign_out.html:3 +#: templates/web/zurich/auth/sign_out.html:3 +msgid "You have been signed out" +msgstr "Sie haben sich abgemeldet" + +#: templates/web/bromley/report/new/fill_in_details_form.html:25 +#: templates/web/default/report/new/fill_in_details_form.html:7 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:7 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:28 +#: templates/web/zurich/report/new/fill_in_details_form.html:13 +msgid "You have located the problem at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. " +msgstr "Der grüne Punkt lokalisiert Ihre Meldung auf der Karte. Falls dieser Ort nicht stimmt, kann der Pin verschoben werden." + +#: templates/web/default/tokens/confirm_alert.html:7 +msgid "You have successfully confirmed your alert." +msgstr "" + +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:6 +msgid "You have successfully confirmed your email address." +msgstr "Sie haben Ihre Meldung erfolgreich bestätigt. " + +#: templates/web/default/tokens/confirm_problem.html:14 +#: templates/web/default/tokens/confirm_problem.html:15 +msgid "You have successfully confirmed your problem" +msgstr "Sie haben Ihre Meldung erfolgreich bestätigt" + +#: templates/web/default/tokens/confirm_update.html:11 +#: templates/web/default/tokens/confirm_update.html:12 +msgid "You have successfully confirmed your update and you can now <a href=\"%s\">view it on the site</a>." +msgstr "" + +#: templates/web/default/tokens/confirm_alert.html:11 +msgid "You have successfully created your alert." +msgstr "" + +#: templates/web/default/tokens/confirm_alert.html:9 +msgid "You have successfully deleted your alert." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:754 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:140 +msgid "You have successfully signed in; please check and confirm your details are accurate:" +msgstr "" + +#: templates/web/default/email_sent.html:13 +msgid "You must now click the link in the email we've just sent you." +msgstr "Sie können Ihre Meldung bestä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 "" + +#: templates/web/default/my/my.html:0 templates/web/default/my/my.html:14 +#: templates/web/default/my/my.html:3 templates/web/fixmystreet/my/my.html:0 +#: templates/web/fixmystreet/my/my.html:14 +#: templates/web/fixmystreet/my/my.html:3 +msgid "Your Reports" +msgstr "Ihre Meldungen" + +#: templates/web/bromley/report/display.html:41 +#: templates/web/bromley/report/display.html:43 +#: templates/web/bromley/report/new/fill_in_details_form.html:145 +#: templates/web/fixmystreet/alert/_list.html:89 +#: templates/web/fixmystreet/alert/updates.html:19 +#: templates/web/fixmystreet/alert/updates.html:22 +#: templates/web/fixmystreet/contact/index.html:84 +#: templates/web/fixmystreet/report/display.html:65 +#: templates/web/fixmystreet/report/display.html:67 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:115 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:147 +#: templates/web/zurich/report/new/fill_in_details_form.html:88 +msgid "Your email" +msgstr "E-Mail Adresse" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:81 +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:58 +msgid "Your email address" +msgstr "Ihre E-Mail Adresse" + +#: templates/web/default/auth/general.html:27 +msgid "Your email address:" +msgstr "Ihre E-Mail Adresse:" + +#: templates/web/default/alert/_list.html:92 +#: templates/web/default/report/new/fill_in_details_form.html:124 +#: templates/web/default/report/update-form.html:81 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:133 +#: templates/web/fixmybarangay/alert/_list.html:37 +msgid "Your email:" +msgstr "Ihre E-Mail:" + +#: templates/web/bromley/report/display.html:195 +#: templates/web/bromley/report/new/fill_in_details_form.html:117 +#: templates/web/bromley/report/new/fill_in_details_form.html:164 +msgid "Your first name" +msgstr "Ihr Name" + +#: templates/web/fixmystreet/report/updates-sidebar-notes.html:5 +msgid "Your information will only be used in accordance with our <a href=\"/privacy\">privacy policy</a>" +msgstr "Wir verwenden Ihre persönlichen Daten nur entsprechend unserer <a href=\"/faq#privacy\">Datenschutzrichtlinien.</a>" + +#: templates/web/bromley/report/display.html:201 +#: templates/web/bromley/report/new/fill_in_details_form.html:123 +#: templates/web/bromley/report/new/fill_in_details_form.html:170 +msgid "Your last name" +msgstr "Ihr Name" + +#: 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 "Ihr Name" + +#: templates/web/default/auth/general.html:59 +#: templates/web/default/contact/index.html:68 +#: templates/web/default/report/new/fill_in_details_form.html:203 +#: templates/web/default/report/update-form.html:151 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:124 +msgid "Your name:" +msgstr "Ihr Name:" + +#: templates/web/bromley/report/display.html:162 +#: templates/web/bromley/report/new/fill_in_details_form.html:203 +#: templates/web/fixmystreet/auth/general.html:41 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:166 +#: templates/web/fixmystreet/report/update-form.html:94 +#: templates/web/seesomething/auth/general.html:30 +#: templates/web/zurich/auth/general.html:34 +msgid "Your password" +msgstr "Ihr Passwort" + +#: templates/web/default/auth/change_password.html:6 +msgid "Your password has been changed" +msgstr "Ihr Passwort wurde geändert" + +#: 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 "Ihre Telefonnummer" + +#: templates/web/fixmystreet/questionnaire/index.html:15 +msgid "Your report" +msgstr "Ihre Meldung" + +#: templates/web/default/report_created.html:6 +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/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 "Ihre Meldungen" + +#: templates/web/default/my/my.html:45 templates/web/fixmystreet/my/my.html:49 +msgid "Your updates" +msgstr "" + +#: templates/web/default/contact/index.html:76 +msgid "Your email:" +msgstr "Ihre E-Mail Adresse:" + +#: templates/web/default/admin/timeline.html:4 +msgid "by %s" +msgstr "" + +#: templates/web/default/reports/body.html:6 +#: templates/web/default/reports/body.html:7 +msgid "council" +msgstr "" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:649 +msgid "council ref: %s" +msgstr "" + +#: 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 "hat Karte nicht verwendet" + +#: templates/web/default/alert/index.html:33 +#: templates/web/fixmystreet/around/postcode_form.html:20 +#: templates/web/seesomething/around/postcode_form.html:9 +msgid "e.g. ‘%s’ or ‘%s’" +msgstr "z.B. ‘%s’ oder ‘%s’" + +#: templates/web/default/admin/flagged.html:51 +#, fuzzy +msgid "edit user" +msgstr "User hinzufü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" +msgstr "letzte Bearbeitung %s" + +#: perllib/Utils.pm:263 +msgid "less than a minute" +msgstr "weniger als einer Minute" + +#: templates/web/default/report/updates.html:57 +msgid "marked as a duplicate report" +msgstr "" + +#: templates/web/default/report/updates.html:47 +msgid "marked as action scheduled" +msgstr "" + +#: templates/web/default/report/updates.html:59 +msgid "marked as an internal referral" +msgstr "" + +#: templates/web/default/report/updates.html:49 +msgid "marked as closed" +msgstr "" + +#: templates/web/default/report/updates.html:28 +#: templates/web/default/report/updates.html:51 +msgid "marked as fixed" +msgstr "als beantwortet markiert" + +#: templates/web/default/report/updates.html:45 +msgid "marked as in progress" +msgstr "" + +#: templates/web/default/report/updates.html:41 +msgid "marked as investigating" +msgstr "" + +#: templates/web/default/report/updates.html:55 +msgid "marked as not the council's responsibility" +msgstr "" + +#: templates/web/default/report/updates.html:43 +msgid "marked as planned" +msgstr "" + +#: templates/web/default/report/updates.html:53 +msgid "marked as unable to fix" +msgstr "" + +#: 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 "" + +#: templates/web/default/alert/_list.html:87 +#: templates/web/fixmybarangay/alert/_list.html:32 +#: templates/web/fixmystreet/alert/_list.html:85 +msgid "or" +msgstr "oder" + +#: 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: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: “%s”" +msgstr "Originaltext: “%s”" + +#: templates/web/default/admin/report_edit.html:30 +msgid "other areas:" +msgstr "" + +#: templates/web/default/report/updates.html:29 +#: templates/web/default/report/updates.html:39 +msgid "reopened" +msgstr "" + +#: templates/web/barnet/header.html:71 templates/web/bromley/header.html:100 +#: templates/web/bromley/header.html:65 +#: templates/web/fixmybarangay/header.html:67 +#: templates/web/fixmystreet/header.html:51 +#: templates/web/oxfordshire/header.html:112 +#: templates/web/oxfordshire/header.html:48 +#: templates/web/stevenage/header.html:98 templates/web/zurich/footer.html:12 +msgid "sign out" +msgstr "ausloggen" + +#: templates/web/bromley/report/new/fill_in_details_form.html:4 +#: templates/web/bromley/report/new/fill_in_details_form.html:7 +#: templates/web/default/report/new/fill_in_details_form.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:14 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:14 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:9 +msgid "the local council" +msgstr "" + +#: templates/web/default/report/_main.html:6 +#: templates/web/zurich/report/_main.html:5 +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ützt hat" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362 +msgid "this type of local problem" +msgstr "" + +#: perllib/Utils.pm:235 +msgid "today" +msgstr "heute" + +#: 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 "Karte verwendet" + +#: templates/web/default/admin/update_edit.html:35 +msgid "user is from same council as problem - %d" +msgstr "" + +#: templates/web/default/admin/update_edit.html:38 +msgid "user is problem owner" +msgstr "" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:3 +msgid "ward" +msgstr "" + +#: templates/web/default/front/stats.html:17 +#, perl-format +msgid "<big>%s</big> report recently" +msgid_plural "<big>%s</big> reports recently" +msgstr[0] "<big>%s</big> Meldung in letzter Zeit" +msgstr[1] "<big>%s</big> Meldungen in letzter Zeit" + +#: perllib/Utils.pm:282 +#, perl-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d Stunde" +msgstr[1] "%d Stunden" + +#: templates/web/default/report/_support.html:6 +#, perl-format +msgid "%d supporter" +msgid_plural "%d supporters" +msgstr[0] "" +msgstr[1] "" + +#: perllib/Utils.pm:284 +#, perl-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d Minute" +msgstr[1] "%d Minuten" + +#: templates/web/default/front/stats.html:29 +#, perl-format +msgid "<big>%s</big> update on reports" +msgid_plural "<big>%s</big> updates on reports" +msgstr[0] "<big>%s</big> Meldung bearbeitet" +msgstr[1] "<big>%s</big> Meldungen bearbeitet" + +#: templates/web/emptyhomes/report/new/councils_text_none.html:3 +#, perl-format +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 +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "%d Woche" +msgstr[1] "%d Wochen" + +#: templates/web/default/front/stats.html:12 +#, perl-format +msgid "<big>%s</big> report in past week" +msgid_plural "<big>%s</big> reports in past week" +msgstr[0] "<big>%s</big> Meldung in der letzten Woche" +msgstr[1] "<big>%s</big> Meldungen in der letzten Woche" + +#: templates/web/default/front/stats.html:23 +#, perl-format +msgid "<big>%s</big> fixed in past month" +msgid_plural "<big>%s</big> fixed in past month" +msgstr[0] "<big>%s</big> bearbeitete Meldung im letzten Monat" +msgstr[1] "<big>%s</big> bearbeitete Meldungen im letzten Monat" + +#: templates/web/default/report/new/councils_text_some.html:14 +#, perl-format +msgid "We do <strong>not</strong> yet have details for the other council that covers this location." +msgid_plural "We do <strong>not</strong> yet have details for the other councils that cover this location." +msgstr[0] "" +msgstr[1] "" + +#: perllib/Utils.pm:280 +#, perl-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "%d Tag" +msgstr[1] "%d Tage" + +#, fuzzy +#~ msgid "The email field is required" +#~ msgstr "Diese Information wird benötigt" diff --git a/locale/de_DE.UTF-8/LC_MESSAGES/FixMyStreet.po b/locale/de_DE.UTF-8/LC_MESSAGES/FixMyStreet.po index 32ee690a6..14f994ebb 100644 --- a/locale/de_DE.UTF-8/LC_MESSAGES/FixMyStreet.po +++ b/locale/de_DE.UTF-8/LC_MESSAGES/FixMyStreet.po @@ -1,36 +1,38 @@ +# 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: 2012-10-24 11:20+0100\n" -"PO-Revision-Date: 2012-08-21 14:03+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 (Germany) (http://www.transifex.com/projects/p/fixmystreet/language/de_DE/)\n" +"Language: de_DE\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:563 -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:339 +#: perllib/FixMyStreet/DB/Result/Problem.pm:602 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373 msgid " and " msgstr "und" #: templates/web/default/tokens/confirm_problem.html:14 -#: templates/web/default/tokens/confirm_problem.html:18 +#: templates/web/default/tokens/confirm_problem.html:17 msgid " and <strong>we will now send it to the council</strong>" msgstr "" -#: templates/web/default/report/new/councils_text_all.html:10 -#: templates/web/default/report/new/councils_text_all.html:17 -#: templates/web/default/report/new/councils_text_all.html:3 +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_none.html:11 #: templates/web/default/report/new/councils_text_none.html:14 -#: templates/web/default/report/new/councils_text_none.html:17 #: templates/web/default/report/new/councils_text_some.html:20 #: templates/web/default/report/new/councils_text_some.html:23 #: templates/web/default/report/new/councils_text_some.html:5 @@ -38,66 +40,70 @@ msgstr "" msgid " or " msgstr "oder" -#: templates/web/default/admin/council_list.html:17 +#: 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 – %d confirmed, %d unconfirmed" msgstr "" -#: templates/web/default/admin/council_list.html:27 +#: 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 – %d answered (%s%%)" msgstr "" -#: templates/web/fixmystreet/report/_support.html:3 -msgid "%d supporters" +#: templates/web/default/pagination.html:10 +msgid "%d to %d of %d" msgstr "" -#: templates/web/default/reports/council.html:0 -#: templates/web/default/reports/council.html:26 -#: templates/web/emptyhomes/reports/council.html:11 -#: templates/web/emptyhomes/reports/council.html:13 +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:22 msgid "%s - Summary reports" msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:613 +#: perllib/FixMyStreet/DB/Result/Problem.pm:651 msgid "%s ref: %s" msgstr "" -#: perllib/FixMyStreet/Cobrand/UK.pm:279 perllib/FixMyStreet/Cobrand/UK.pm:291 +#: perllib/FixMyStreet/Cobrand/UK.pm:276 perllib/FixMyStreet/Cobrand/UK.pm:288 msgid "%s ward, %s" msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:496 -msgid "%s, reported anonymously at %s" -msgstr "%s anonym gemeldet um %s" - -#: perllib/FixMyStreet/DB/Result/Problem.pm:498 -msgid "%s, reported by %s at %s" +#: perllib/FixMyStreet/DB/Result/Problem.pm:538 +msgid "%s, reported at %s" msgstr "" -#: perllib/FixMyStreet/Cobrand/UK.pm:306 perllib/FixMyStreet/Cobrand/UK.pm:318 +#: perllib/FixMyStreet/Cobrand/UK.pm:303 perllib/FixMyStreet/Cobrand/UK.pm:315 msgid "%s, within %s ward" msgstr "" -#: templates/web/default/email_sent.html:28 -msgid "(Don't worry — %s)" +#: templates/web/default/email_sent.html:29 +msgid "(Don't worry — we'll hang on to your alert while you're checking your email.)" +msgstr "" + +#: templates/web/default/email_sent.html:25 +msgid "(Don't worry — we'll hang on to your problem report while you're checking your email.)" +msgstr "" + +#: templates/web/default/email_sent.html:27 +msgid "(Don't worry — 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:29 msgid "(Email in abuse table)" msgstr "" @@ -111,35 +117,42 @@ 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:23 -#, fuzzy +#: templates/web/fixmystreet/report/_item.html:22 +#: templates/web/zurich/report/_item.html:21 msgid "(closed)" -msgstr "Geschlossen" +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:21 +#: templates/web/fixmystreet/report/_item.html:20 +#: templates/web/zurich/report/_item.html:19 msgid "(fixed)" msgstr "(gelöst)" #: templates/web/default/index.html:12 templates/web/default/index.html:8 -#: templates/web/fixmystreet/around/postcode_form.html:10 +#: templates/web/fixmystreet/around/intro.html:2 msgid "(like graffiti, fly tipping, broken paving slabs, or street lighting)" msgstr "(z.B. illegale Deponien, Strassenschäden, Graffitis usw.)" +#: templates/web/bromley/report/_item.html:16 #: templates/web/default/reports/_list-entry.html:4 -#: templates/web/fixmystreet/report/_item.html:17 +#: templates/web/fixmystreet/report/_item.html:16 msgid "(not sent to council)" msgstr "" #: templates/web/default/report/new/fill_in_details_form.html:217 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:140 +#: templates/web/zurich/report/new/fill_in_details_form.html:100 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:16 +#: templates/web/fixmystreet/report/_item.html:15 msgid "(sent to both)" msgstr "" @@ -147,71 +160,61 @@ msgstr "" msgid "(we never show your email address or phone number)" msgstr "(ihre eMail-Adresse oder Telefonnummer werden nie angezeigt)" -#: templates/web/default/report/display.html:209 +#: templates/web/default/report/update-form.html:158 msgid "(we never show your email)" msgstr "(ihre eMail-Adresse wird nie angezeigt)" -#: perllib/FixMyStreet/App/Controller/Admin.pm:285 -msgid "*unknown*" -msgstr "*unbekannt*" - -#: perllib/FixMyStreet/App/Controller/Report/New.pm:630 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:658 -#: perllib/FixMyStreet/DB/Result/Problem.pm:353 +#: 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 "-- Wählen Sie eine Kategorie --" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:610 -#: perllib/FixMyStreet/DB/Result/Problem.pm:359 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:618 +#: perllib/FixMyStreet/DB/Result/Problem.pm:385 msgid "-- Pick a property type --" msgstr "" -#: templates/web/default/tokens/confirm_problem.html:14 -#: templates/web/default/tokens/confirm_problem.html:22 -#, fuzzy -msgid ". You can <a href=\"%s%s\">view the problem on this site</a>." +#: templates/web/emptyhomes/front/stats.html:5 +msgid "<big>%s</big> reports" msgstr "" -"Danke &mdash; Sie können Ihre aktualisierte Meldung <a href=\"%s" -"\">auf der Webseite anschauen</a>" -#: templates/web/fixmystreet/report/_support.html:3 -msgid "1 supporter" +#: 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’s been fixed.</p>" +msgid "<p style=\"font-size:150%\">Thank you very much for filling in our questionnaire; glad to hear it’s been fixed.</p>" msgstr "" #: templates/web/fiksgatami/questionnaire/completed-open.html:1 msgid "" "<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" -"suggestions: why not try <a href=\"http://www.norge.no/styresmakter/" -"\">writing\n" +"suggestions: why not try <a href=\"http://www.norge.no/styresmakter/\">writing\n" "direct to your councillor(s)</a> or, if it’s a problem that could be\n" "fixed by local people working together, why not\n" "<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" "</p>" msgstr "" -#: templates/web/fixmystreet/questionnaire/completed-open.html:1 +#: templates/web/fixmystreet/questionnaire/completed-open.html:6 msgid "" "<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" -"suggestions: why not try <a href=\"http://www.writetothem.com/\">writing " -"direct\n" -"to your councillor(s)</a> or, if it’s a problem that could be fixed " -"by\n" +"suggestions: why not try <a href=\"http://www.writetothem.com/\">writing direct\n" +"to your councillor(s)</a> or, if it’s a problem that could be fixed by\n" "local people working together, why not\n" "<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" "</p>" msgstr "" -#: templates/web/default/questionnaire/completed-open.html:1 +#: templates/web/default/questionnaire/completed-open.html:6 msgid "" "<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" -"suggestions: why not try writing to your local representative or, if " -"it’s\n" +"suggestions: why not try writing to your local representative or, if it’s\n" "a problem that could be fixed by local people working together, why not\n" "<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" "</p>" @@ -219,71 +222,55 @@ msgstr "" #: templates/web/default/questionnaire/index.html:35 msgid "" -"<p>Getting empty homes back into use can be difficult, but by now a good " -"council\n" +"<p>Getting empty homes back into use can be difficult, but by now a good council\n" "will have made a lot of progress and reported what they have done on the\n" -"website. Even so properties can remain empty for many months if the owner " -"is\n" -"unwilling or the property is in very poor repair. If nothing has happened " -"or\n" -"you are not satisfied with the progress the council is making, now is the " -"right\n" -"time to say so. We think it’s a good idea to contact some other people " -"who\n" +"website. Even so properties can remain empty for many months if the owner is\n" +"unwilling or the property is in very poor repair. If nothing has happened or\n" +"you are not satisfied with the progress the council is making, now is the right\n" +"time to say so. We think it’s a good idea to contact some other people who\n" "may be able to help or put pressure on the council For advice on how to do\n" "this and other useful information please go to <a\n" -"href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www." -"emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +"href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" msgstr "" #: templates/web/default/questionnaire/index.html:26 msgid "" -"<p>Getting empty homes back into use can be difficult. You shouldn’t " -"expect\n" -"the property to be back into use yet. But a good council will have started " -"work\n" +"<p>Getting empty homes back into use can be difficult. You shouldn’t expect\n" +"the property to be back into use yet. But a good council will have started work\n" "and should have reported what they have done on the website. If you are not\n" -"satisfied with progress or information from the council, now is the right " -"time\n" -"to say. You may also want to try contacting some other people who may be " -"able\n" +"satisfied with progress or information from the council, now is the right time\n" +"to say. You may also want to try contacting some other people who may be able\n" "to help. For advice on how to do this and other useful information please\n" -"go to <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://" -"www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +"go to <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" msgstr "" #: templates/web/default/questionnaire/completed.html:9 msgid "" "<p>Thank you very much for filling in our questionnaire; if you\n" -"get some more information about the status of your problem, please come back " -"to the\n" +"get some more information about the status of your problem, please come back to the\n" "site and leave an update.</p>" msgstr "" #: templates/web/default/around/_report_banner.html:3 #: templates/web/default/around/_report_banner.html:5 -#: templates/web/emptyhomes/around/display_location.html:36 -#: templates/web/emptyhomes/around/display_location.html:38 -msgid "" -"<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this " -"step</a>.</small>" +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'>Überspringen Sie " -"diesen Schritt</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 "" -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:182 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:183 msgid "<strong>No</strong> Let me confirm my report by email" -msgstr "Meldung per eMail bestätigen" +msgstr "" -#: templates/web/fixmystreet/report/display.html:170 +#: templates/web/fixmystreet/report/update-form.html:110 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:51 msgid "<strong>No</strong> let me sign in by email" msgstr "" @@ -295,32 +282,69 @@ msgstr "" msgid "<strong>No</strong>, let me confirm my report by email:" msgstr "" -#: templates/web/default/report/display.html:164 +#: templates/web/default/report/update-form.html:117 msgid "<strong>No</strong>, let me confirm my update by email:" msgstr "" #: templates/web/default/auth/general.html:37 -#: templates/web/default/report/display.html:142 #: templates/web/default/report/new/fill_in_details_form.html:140 +#: templates/web/default/report/update-form.html:95 #: templates/web/fixmystreet/auth/general.html:36 #: templates/web/fixmystreet/auth/general.html:38 -#: templates/web/fixmystreet/report/display.html:147 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:158 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:159 +#: templates/web/fixmystreet/report/update-form.html:87 msgid "<strong>Yes</strong> I have a password" msgstr "" -#: templates/web/default/static/about.html:1 -#: templates/web/default/static/about.html:3 -#: templates/web/emptyhomes/header.html:29 -#: templates/web/emptyhomes/static/about.html:1 -#: templates/web/emptyhomes/static/about.html:3 +#: templates/web/default/static/about-en-gb.html:1 +#: templates/web/default/static/about-en-gb.html:3 +#: templates/web/emptyhomes/header.html:34 +#: templates/web/emptyhomes/static/about-cy.html:1 +#: templates/web/emptyhomes/static/about-cy.html:3 +#: templates/web/emptyhomes/static/about-en-gb.html:1 +#: templates/web/emptyhomes/static/about-en-gb.html:3 msgid "About us" msgstr "Über uns" -#: templates/web/default/admin/council_contacts.html:72 +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:81 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:39 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 +msgid "Action Scheduled" +msgstr "" + +#: 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:88 +#: templates/web/zurich/admin/body.html:30 msgid "Add new category" msgstr "Füge neue Kategorie hinzu" +#: templates/web/default/admin/users.html:45 +msgid "Add user" +msgstr "" + #: templates/web/default/my/my.html:56 templates/web/fixmystreet/my/my.html:60 msgid "Added %s" msgstr "" @@ -329,80 +353,77 @@ msgstr "" msgid "Again:" msgstr "Nochmals:" -#: templates/web/default/admin/timeline.html:37 +#: templates/web/default/admin/timeline.html:35 msgid "Alert %d created for %s, type %s, parameters %s / %s" msgstr "" -#: templates/web/default/admin/timeline.html:39 +#: templates/web/default/admin/timeline.html:37 msgid "Alert %d disabled (created %s)" msgstr "" -#: templates/web/bromley/report/display.html:207 -#: templates/web/default/report/display.html:214 -#: templates/web/fixmystreet/report/display.html:211 +#: templates/web/bromley/report/display.html:209 +#: templates/web/default/report/update-form.html:163 +#: templates/web/fixmystreet/report/update-form.html:148 msgid "Alert me to future updates" msgstr "" #: templates/web/default/reports/index.html:3 +#: templates/web/fixmybarangay/reports/index.html:3 +#: templates/web/zurich/admin/stats.html:5 +#: templates/web/zurich/reports/index.html:15 msgid "All Reports" msgstr "Alle Meldungen" -#: templates/web/default/admin/council_list.html:44 -msgid "All confirmed" -msgstr "Alle bestätigten" - #: 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:49 -#: templates/web/reading/footer.html:8 +#: 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 "Alle Meldungen" #: templates/web/default/admin/stats.html:5 -#, fuzzy +#: templates/web/zurich/admin/stats.html:8 msgid "All reports between %s and %s" -msgstr "Gemeldet von %s um %s" +msgstr "" #: templates/web/default/report/new/councils_text_some.html:2 msgid "All the information you provide here will be sent to" msgstr "" -#: templates/web/default/report/new/councils_text_all.html:10 -#: templates/web/default/report/new/councils_text_all.html:12 -msgid "" -"All the information you provide here will be sent to <strong>%s</strong> or " -"<strong>Roads Service</strong>." +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:13 +msgid "All the information you provide here will be sent to <strong>%s</strong> or <strong>Roads Service</strong>." msgstr "" -#: templates/web/default/report/new/councils_text_all.html:3 -#: templates/web/default/report/new/councils_text_all.html:5 -msgid "" -"All the information you provide here will be sent to <strong>%s</strong> or " -"a relevant local body such as <strong>TfL</strong>, via the London Report-It " -"system." +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_all.html:6 +msgid "All the information you provide here will be sent to <strong>%s</strong> or a relevant local body such as <strong>TfL</strong>, via the London Report-It system." msgstr "" #: templates/web/bromley/report/new/fill_in_details_form.html:4 #: templates/web/bromley/report/new/fill_in_details_form.html:6 -#: templates/web/default/report/new/councils_text_all.html:17 -#: templates/web/default/report/new/councils_text_all.html:19 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:20 #: templates/web/default/report/new/fill_in_details_form.html:11 #: templates/web/default/report/new/fill_in_details_form.html:13 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:8 -msgid "" -"All the information you provide here will be sent to <strong>%s</strong>." -msgstr "" - #: templates/web/emptyhomes/report/new/councils_text_all.html:2 #: templates/web/emptyhomes/report/new/councils_text_all.html:4 -msgid "" -"All the information you provide here will be sent to <strong>%s</strong>. On " -"the site, we will show the subject and details of the problem, plus your " -"name if you give us permission." +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:13 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:8 +msgid "All the information you provide here will be sent to <strong>%s</strong>." msgstr "" #: templates/web/default/questionnaire/index.html:60 @@ -410,57 +431,100 @@ msgstr "" msgid "An update marked this problem as fixed." msgstr "" -#: templates/web/default/admin/list_flagged.html:15 -#: templates/web/default/admin/list_updates.html:10 -#: templates/web/default/admin/search_reports.html:18 +#: templates/web/default/admin/list_updates.html:32 +#: templates/web/default/admin/problem_row.html:20 msgid "Anonymous" msgstr "Anonym" -#: templates/web/default/admin/report_edit.html:26 -#: templates/web/default/admin/update_edit.html:14 +#: templates/web/default/admin/report_edit.html:62 +#: templates/web/default/admin/update_edit.html:23 msgid "Anonymous:" msgstr "Anonym:" #: templates/web/default/footer.html:26 -msgid "" -"Are you a <strong>developer</strong>? Would you like to contribute to " -"FixMyStreet?" +msgid "Are you a <strong>developer</strong>? Would you like to contribute to FixMyStreet?" msgstr "" -#: templates/web/fixmystreet/footer.html:17 +#: templates/web/fixmystreet/footer.html:16 +#: templates/web/stevenage/footer.html:17 msgid "Are you a developer?" msgstr "" -#: templates/web/fixmystreet/footer.html:21 +#: templates/web/fixmystreet/footer.html:20 +#: templates/web/stevenage/footer.html:21 msgid "Are you from a council?" msgstr "" -#: templates/web/default/open311/index.html:17 -msgid "" -"At most %d requests are returned in each query. The returned requests are " -"ordered by requested_datetime, so to get all requests, do several searches " -"with rolling start_date and end_date." +#: templates/web/default/admin/body-form.html:69 +#: templates/web/zurich/admin/body-form.html:24 +msgid "Area covered" msgstr "" -#: templates/web/default/open311/index.html:9 +#: 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:153 +msgid "Assign to external body:" +msgstr "" + +#: 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:141 +#: templates/web/zurich/report/updates.html:11 +msgid "Assigned to %s" +msgstr "" + +#: templates/web/default/open311/index.html:86 +msgid "At most %d requests are returned in each query. The returned requests are ordered by requested_datetime, so to get all requests, do several searches with rolling start_date and end_date." +msgstr "" + +#: templates/web/default/open311/index.html:78 msgid "At the moment only searching for and looking at reports work." msgstr "" +#: 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:32 +#: templates/web/oxfordshire/js/translation_strings.html:26 +msgid "Back" +msgstr "" + #: templates/web/default/admin/report_blocks.html:11 msgid "Ban email address" msgstr "" #: templates/web/fixmybarangay/report/new/notes.html:7 -msgid "" -"Be sure to choose the right category, because we use that to determine to " -"whom the report is sent." +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: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: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:32 +msgid "Body:" msgstr "" #: templates/web/fiksgatami/footer.html:16 #: templates/web/fiksgatami/nn/footer.html:16 -msgid "" -"Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained " -"by <a href=\"http://www.nuug.no/\">NUUG</a>" +msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained by <a href=\"http://www.nuug.no/\">NUUG</a>" msgstr "" #: templates/web/default/admin/stats.html:80 @@ -471,32 +535,40 @@ msgstr "" #: templates/web/fixmystreet/around/_report_banner.html:8 msgid "Can't see the map? <a href='%s' rel='nofollow'>Skip this step</a>" msgstr "" -"Karte nicht sichtbar? <a href='%s' rel='nofollow'>Überspringen Sie " -"diesen Schritt</a>" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:633 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:660 #: templates/web/bromley/report/new/fill_in_details_form.html:68 -#: templates/web/default/admin/council_contacts.html:37 -#: templates/web/default/admin/index.html:36 -#: templates/web/default/admin/list_flagged.html:14 -#: templates/web/default/admin/search_reports.html:17 +#: 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 "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/council_contacts.html:78 -#: templates/web/default/admin/council_edit.html:23 -#: templates/web/default/admin/report_edit.html:25 +#: 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 "Kategorie:" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:336 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366 msgid "Category: %s" msgstr "Kategorie: %s" @@ -506,25 +578,68 @@ msgstr "Kategorie: %s" msgid "Change Password" msgstr "Passwort ändern" +#: 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" -#: templates/web/bromley/report/display.html:80 -#: templates/web/bromley/report/display.html:82 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:20 -#: templates/web/default/dashboard/index.html:138 -#: templates/web/default/dashboard/index.html:140 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:81 +#: 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 +#: templates/web/default/dashboard/index.html:142 +#: templates/web/default/dashboard/index.html:144 #: templates/web/fixmystreet/report/banner.html:15 -#: templates/web/fixmystreet/report/display.html:90 -#: templates/web/fixmystreet/report/display.html:92 +#: 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 "Geschlossen" -#: perllib/FixMyStreet/DB/Result/Problem.pm:698 +#: perllib/FixMyStreet/DB/Result/Problem.pm:744 msgid "Closed by council" msgstr "" @@ -532,7 +647,7 @@ msgstr "" msgid "Closed reports" msgstr "" -#: templates/web/default/admin/problem_row.html:25 +#: templates/web/default/admin/problem_row.html:38 msgid "Closed:" msgstr "Geschlossen:" @@ -541,47 +656,40 @@ msgstr "Geschlossen:" msgid "Closest nearby problems <small>(within %skm)</small>" msgstr "" -#: templates/web/default/admin/report_edit.html:15 +#: 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 "Koordinaten:" -#: templates/web/default/admin/list_flagged.html:16 -#: templates/web/default/admin/list_updates.html:13 -#: templates/web/default/admin/search_reports.html:19 +#: templates/web/default/admin/list_updates.html:10 msgid "Cobrand" msgstr "" -#: templates/web/default/admin/report_edit.html:39 -#: templates/web/default/admin/update_edit.html:41 +#: templates/web/default/admin/report_edit.html:75 +#: templates/web/default/admin/update_edit.html:50 msgid "Cobrand data:" msgstr "" -#: templates/web/default/admin/report_edit.html:38 -#: templates/web/default/admin/update_edit.html:40 +#: templates/web/default/admin/report_edit.html:74 +#: templates/web/default/admin/update_edit.html:49 msgid "Cobrand:" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:365 -msgid "Configuration updated" -msgstr "" +#: templates/web/default/admin/config_page.html:1 +#, fuzzy +msgid "Configuration" +msgstr "Bestätigung" -#: perllib/FixMyStreet/App/Controller/Admin.pm:380 +#: perllib/FixMyStreet/App/Controller/Admin.pm:421 msgid "Configuration updated - contacts will be generated automatically later" msgstr "" -#: templates/web/default/admin/council_edit.html:34 +#: templates/web/default/admin/body_edit.html:47 msgid "Configure Endpoint" msgstr "" -#: templates/web/default/admin/council_contacts.html:168 -msgid "Configure Open311" -msgstr "" - -#: templates/web/default/admin/council_contacts.html:116 -msgid "Configure Open311 integration" -msgstr "" - -#: templates/web/default/admin/council_contacts.html:46 +#: templates/web/default/admin/body.html:62 msgid "Confirm" msgstr "Bestätigen" @@ -589,11 +697,9 @@ msgstr "Bestätigen" msgid "Confirm account" msgstr "" -#: templates/web/fixmystreet/report/display.html:165 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:176 -msgid "" -"Confirm by email below, providing a new password at that point. When you " -"confirm, your password will be updated." +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:177 +#: templates/web/fixmystreet/report/update-form.html:105 +msgid "Confirm by email below, providing a new password at that point. When you confirm, your password will be updated." msgstr "" #: templates/web/default/questionnaire/creator_fixed.html:1 @@ -603,13 +709,18 @@ msgstr "" #: templates/web/default/tokens/confirm_update.html:3 #: templates/web/emptyhomes/tokens/confirm_problem.html:1 #: templates/web/emptyhomes/tokens/confirm_problem.html:3 +#: templates/web/southampton/tokens/confirm_problem.html:1 +#: templates/web/southampton/tokens/confirm_problem.html:3 +#: templates/web/zurich/tokens/confirm_problem.html:1 +#: templates/web/zurich/tokens/confirm_problem.html:3 msgid "Confirmation" msgstr "Bestätigung" -#: templates/web/default/admin/council_contacts.html:39 -#: templates/web/default/admin/council_contacts.html:88 -#: templates/web/default/admin/council_edit.html:28 -#: templates/web/default/admin/council_edit.html:71 +#: 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 "Bestätigt" @@ -617,8 +728,9 @@ msgstr "Bestätigt" msgid "Confirmed reports between %s and %s" msgstr "" -#: templates/web/default/admin/problem_row.html:23 -#: templates/web/default/admin/report_edit.html:34 +#: 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 "Bestätigt:" @@ -643,43 +755,38 @@ msgstr "" #: templates/web/bromley/contact/submit.html:3 #: templates/web/default/contact/index.html:6 #: templates/web/default/contact/submit.html:3 -#: templates/web/fixmystreet/contact/index.html:7 +#: templates/web/fixmystreet/contact/index.html:19 msgid "Contact the team" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1164 -#: perllib/FixMyStreet/App/Controller/Admin.pm:1192 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1310 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1338 msgid "Could not find user" msgstr "" -#: templates/web/default/admin/list_flagged.html:13 -#: templates/web/default/admin/list_updates.html:12 -#: templates/web/default/admin/search_reports.html:16 -#: templates/web/default/admin/search_users.html:14 -msgid "Council" +#: templates/web/default/js/translation_strings.html:37 +#: templates/web/oxfordshire/js/translation_strings.html:31 +msgid "Could not look up location" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1036 -#: templates/web/default/admin/council_list.html:1 -msgid "Council contacts" +#: templates/web/default/admin/list_updates.html:9 +msgid "Council" msgstr "" -#: templates/web/default/admin/council_contacts.html:1 -#: templates/web/default/admin/council_edit.html:1 +#: templates/web/default/admin/body.html:1 +#: templates/web/default/admin/body_edit.html:1 +#: templates/web/zurich/admin/body.html:1 msgid "Council contacts for %s" msgstr "" #: templates/web/default/admin/stats.html:84 -#: templates/web/default/admin/user_edit.html:12 msgid "Council:" msgstr "" -#: templates/web/default/admin/council_list.html:36 -msgid "Councils" -msgstr "" - #: templates/web/default/admin/stats.html:12 #: templates/web/default/admin/stats.html:32 +#: templates/web/zurich/admin/stats.html:45 +#: templates/web/zurich/admin/stats.html:50 msgid "Count" msgstr "" @@ -687,18 +794,23 @@ msgstr "" msgid "Create a report" msgstr "Erfasse eine Meldung" -#: templates/web/default/admin/council_contacts.html:107 +#: templates/web/default/admin/body.html:179 +#: templates/web/zurich/admin/body.html:53 msgid "Create category" msgstr "" -#: templates/web/default/admin/list_flagged.html:17 -#: templates/web/default/admin/list_updates.html:9 -#: templates/web/default/admin/search_reports.html:20 +#: 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 "Erstellt" -#: templates/web/default/admin/report_edit.html:33 -#: templates/web/default/admin/update_edit.html:42 +#: 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 "Erstellt:" @@ -706,37 +818,58 @@ msgstr "Erstellt:" msgid "Current state" msgstr "" -#: templates/web/default/admin/council_list.html:40 -msgid "Currently has 1+ deleted" -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" msgstr "" -#: templates/web/default/admin/council_contacts.html:40 -#: templates/web/default/admin/council_contacts.html:91 -#: templates/web/default/admin/council_edit.html:29 -#: templates/web/default/admin/council_edit.html:72 +#: templates/web/zurich/admin/stats.html:35 +msgid "Dealt with by subdivision within 5 working days" +msgstr "" + +#: 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 "Gelöscht" +#: templates/web/zurich/admin/index-dm.html:22 +#: templates/web/zurich/admin/index-sdm.html:20 +#: templates/web/zurich/admin/reports.html:12 +msgid "Description" +msgstr "" + #: 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 "Beschreibung" -#: templates/web/default/admin/report_edit.html:14 +#: 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 "Beschreibung:" -#: templates/web/default/admin/council_contacts.html:41 +#: templates/web/default/admin/body.html:57 msgid "Devolved" msgstr "" -#: templates/web/default/admin/council_list.html:23 +#: templates/web/default/admin/edit-league.html:8 msgid "Diligency prize league table" msgstr "Weiss ich nicht" @@ -746,8 +879,8 @@ msgstr "" #: templates/web/default/auth/general.html:32 #: templates/web/fixmystreet/auth/general.html:32 -#: templates/web/fixmystreet/report/display.html:144 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:154 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:155 +#: templates/web/fixmystreet/report/update-form.html:84 msgid "Do you have a FixMyStreet password?" msgstr "" @@ -756,17 +889,47 @@ msgstr "" msgid "Don’t know" msgstr "" -#: templates/web/default/admin/list_updates.html:35 -#: templates/web/default/admin/problem_row.html:29 -#: templates/web/default/admin/search_users.html:24 +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:82 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:47 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 +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:31 +#: templates/web/zurich/admin/problem_row.html:42 msgid "Edit" msgstr "" +#: templates/web/default/admin/body.html:189 +#: templates/web/zurich/admin/body.html:64 +msgid "Edit body details" +msgstr "" + #: templates/web/default/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:4 +#: templates/web/zurich/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit.html:5 msgid "Editing problem %d" msgstr "" #: templates/web/default/admin/update_edit.html:1 +#: templates/web/zurich/admin/update_edit.html:1 msgid "Editing update %d" msgstr "" @@ -774,29 +937,36 @@ msgstr "" msgid "Editing user %d" msgstr "" -#: templates/web/default/admin/council_edit.html:73 +#: templates/web/default/admin/body_edit.html:86 msgid "Editor" msgstr "" -#: templates/web/bromley/report/display.html:126 -#: templates/web/default/admin/council_contacts.html:38 -#: templates/web/default/admin/council_edit.html:70 -#: templates/web/default/admin/list_flagged.html:12 -#: templates/web/default/admin/list_flagged.html:35 -#: templates/web/default/admin/list_updates.html:8 -#: templates/web/default/admin/search_abuse.html:11 -#: templates/web/default/admin/search_reports.html:15 -#: templates/web/default/admin/search_users.html:13 +#: 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/display.html:136 +#: 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:1140 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1286 msgid "Email added to abuse list" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1137 +#: 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 "" @@ -804,29 +974,35 @@ msgstr "" msgid "Email me new local problems" msgstr "" -#: templates/web/default/report/display.html:30 +#: templates/web/default/report/display.html:34 msgid "Email me updates" msgstr "Schicken sie mir Aktualisierungen" -#: templates/web/default/admin/council_contacts.html:83 -#: templates/web/default/admin/council_edit.html:26 -#: templates/web/default/admin/report_edit.html:31 -#: templates/web/default/admin/update_edit.html:24 -#: templates/web/default/admin/user_edit.html:11 +#: 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:34 +#: 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/App/Controller/Report/New.pm:612 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318 +msgid "Email: %s" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:620 msgid "Empty flat or maisonette" msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:611 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:619 msgid "Empty house or bungalow" msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:614 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:622 msgid "Empty office or other commercial" msgstr "" @@ -834,35 +1010,46 @@ msgstr "" msgid "Empty property details form" msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:615 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:623 msgid "Empty pub or bar" msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:616 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:624 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/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:72 -msgid "End day:" +#: templates/web/default/admin/stats.html:70 +msgid "End Date:" msgstr "" -#: templates/web/default/admin/stats.html:71 -msgid "End month:" +#: templates/web/default/admin/body-form.html:126 +msgid "Endpoint" msgstr "" -#: templates/web/emptyhomes/index.html:40 -#: templates/web/emptyhomes/index.html:41 -msgid "Enter a nearby GB postcode, or street name and area" -msgstr "Geben Sie eine Adresse an" +#: perllib/FixMyStreet/Cobrand/Zurich.pm:71 +msgid "Enter a Zürich street name" +msgstr "" #: perllib/FixMyStreet/Cobrand/UK.pm:18 -#, fuzzy msgid "Enter a nearby UK postcode, or street name and area" -msgstr "Geben Sie eine Adresse an" +msgstr "" #: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:25 msgid "Enter a nearby postcode, or street name and area" @@ -870,28 +1057,29 @@ msgstr "Geben Sie eine Adresse an" #: templates/web/default/around/postcode_form.html:1 #: templates/web/default/around/postcode_form.html:2 -#: templates/web/fixmystreet/around/postcode_form.html:13 -#: templates/web/fixmystreet/around/postcode_form.html:14 -#, fuzzy +#: templates/web/fixmystreet/around/postcode_form.html:10 +#: templates/web/fixmystreet/around/postcode_form.html:11 +#: templates/web/seesomething/around/postcode_form.html:3 +#: templates/web/seesomething/around/postcode_form.html:4 msgid "Enter a nearby street name and area" msgstr "Geben Sie eine Adresse an" #: templates/web/default/auth/general.html:64 -#: templates/web/default/report/display.html:171 #: templates/web/default/report/new/fill_in_details_form.html:169 +#: templates/web/default/report/update-form.html:124 msgid "Enter a new password:" msgstr "" -#: templates/web/bromley/report/display.html:148 +#: 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/display.html:182 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:210 +#: 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 "" -#: templates/web/default/index.html:33 templates/web/emptyhomes/index.html:58 -#: templates/web/fixmystreet/index.html:46 +#: templates/web/default/index-steps.html:26 msgid "Enter details of the problem" msgstr "Beschreiben sie den Mangel" @@ -905,27 +1093,34 @@ msgstr "Beschreiben sie den Mangel" msgid "Error" msgstr "Fehler" -#: templates/web/default/admin/council_contacts.html:13 -#: templates/web/default/admin/council_edit.html:18 +#: templates/web/default/admin/body.html:11 +#: templates/web/default/admin/body_edit.html:18 msgid "Example postcode %s" msgstr "Beispieladresse" -#: templates/web/default/open311/index.html:27 +#: templates/web/default/open311/index.html:96 msgid "Examples:" msgstr "Beispiele:" -#: templates/web/default/admin/report_edit.html:40 +#: templates/web/default/admin/report_edit.html:76 msgid "Extra data:" msgstr "" #: templates/web/bromley/contact/submit.html:14 #: templates/web/default/contact/submit.html:15 -msgid "" -"Failed to send message. Please try again, or <a href=\"mailto:%s\">email " -"us</a>." +msgid "Failed to send message. Please try again, or <a href=\"mailto:%s\">email us</a>." +msgstr "" + +#: templates/web/zurich/admin/index-dm.html:33 +#: templates/web/zurich/admin/index-sdm.html:30 +msgid "Filter report list" msgstr "" -#: templates/web/bromley/report/display.html:189 +#: templates/web/emptyhomes/front/stats.html:6 +msgid "Find latest local and national news" +msgstr "" + +#: templates/web/bromley/report/display.html:191 #: templates/web/bromley/report/new/fill_in_details_form.html:113 #: templates/web/bromley/report/new/fill_in_details_form.html:160 msgid "First Name" @@ -936,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" @@ -945,20 +1144,14 @@ msgstr "" msgid "FixMyStreet" msgstr "" -#: templates/web/default/admin/header.html:13 +#: templates/web/default/admin/header.html:10 msgid "FixMyStreet admin:" msgstr "" -#: templates/web/default/admin/header.html:3 -msgid "FixMyStreet administration" -msgstr "" - #: templates/web/default/alert/index.html:11 msgid "" -"FixMyStreet has a variety of RSS feeds and email alerts for local problems, " -"including\n" -"alerts for all problems within a particular ward or council, or all " -"problems\n" +"FixMyStreet has a variety of RSS feeds and email alerts for local problems, including\n" +"alerts for all problems within a particular ward or council, or all problems\n" "within a certain distance of a particular location." msgstr "" @@ -966,39 +1159,36 @@ msgstr "" #: templates/web/fixmystreet/alert/_list.html:73 msgid "" "FixMyStreet sends different categories of problem\n" -"to the appropriate council, so problems within the boundary of a particular " -"council\n" -"might not match the problems sent to that council. For example, a graffiti " -"report\n" -"will be sent to the district council, so will appear in both of the " -"district\n" -"council’s alerts, but will only appear in the \"Within the boundary\" " -"alert\n" +"to the appropriate council, so problems within the boundary of a particular council\n" +"might not match the problems sent to that council. For example, a graffiti report\n" +"will be sent to the district council, so will appear in both of the district\n" +"council’s alerts, but will only appear in the \"Within the boundary\" alert\n" "for the county council." msgstr "" #: templates/web/bromley/report/display.html:80 -#: templates/web/bromley/report/display.html:82 -#: templates/web/default/admin/index.html:36 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:20 -#: templates/web/default/dashboard/index.html:138 -#: templates/web/default/dashboard/index.html:140 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:81 +#: 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/display.html:90 -#: templates/web/fixmystreet/report/display.html:92 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:32 msgid "Fixed" msgstr "Gelöst" -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:43 msgid "Fixed - Council" msgstr "" -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:42 msgid "Fixed - User" msgstr "" @@ -1006,69 +1196,86 @@ msgstr "" msgid "Fixed reports" msgstr "" -#: templates/web/default/admin/problem_row.html:24 +#: templates/web/default/admin/problem_row.html:37 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 "" -#: templates/web/default/admin/search_users.html:15 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1181 +#: templates/web/default/admin/users.html:19 msgid "Flagged" msgstr "" -#: templates/web/default/admin/report_edit.html:42 -#: templates/web/default/admin/user_edit.html:18 +#: 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 "" #: templates/web/default/reports/_ward-list.html:3 -#: templates/web/emptyhomes/reports/council.html:19 #: templates/web/fixmystreet/reports/_ward-list.html:4 msgid "Follow a ward link to view only reports within that ward." msgstr "" -#: templates/web/default/admin/report_edit.html:16 +#: templates/web/default/admin/report_edit.html:30 msgid "For council(s):" msgstr "" -#: templates/web/fixmystreet/report/display.html:164 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:175 -#, fuzzy +#: 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 "Ihr Passwort" +msgstr "" #: templates/web/default/faq/faq-en-gb.html:1 #: templates/web/emptyhomes/faq/faq-cy.html:1 #: templates/web/emptyhomes/faq/faq-en-gb.html:1 #: templates/web/fiksgatami/faq/faq-nb.html:1 #: templates/web/fiksgatami/nn/faq/faq-nn.html:1 +#: templates/web/fixmindelo/faq/faq-pt-cv.html:1 #: templates/web/fixmybarangay/faq/faq-en-gb.html:1 #: templates/web/fixmystreet/faq/faq-en-gb.html:1 #: templates/web/fixmystreet/static/privacy.html:1 -#: templates/web/zurich/faq/faq-de.html:1 +#: templates/web/oxfordshire/faq/faq-en-gb.html:1 msgid "Frequently Asked Questions" msgstr "" -#: templates/web/emptyhomes/static/about.html:34 -msgid "Further information about our work on empty homes." -msgstr "" - -#: templates/web/default/open311/index.html:69 +#: templates/web/default/open311/index.html:138 msgid "GeoRSS on Google Maps" msgstr "" #: templates/web/bromley/report/display.html:30 -#: templates/web/fixmystreet/report/display.html:27 +#: templates/web/fixmystreet/around/_updates.html:3 +#: templates/web/fixmystreet/report/display.html:38 msgid "Get updates" msgstr "" #: templates/web/fixmystreet/reports/_rss.html:3 #: templates/web/fixmystreet/reports/_rss.html:9 -#, fuzzy msgid "Get updates of %s problems" -msgstr "Beschreiben sie den Mangel" +msgstr "" #: templates/web/fixmystreet/reports/_rss.html:11 #: templates/web/fixmystreet/reports/_rss.html:3 @@ -1083,21 +1290,21 @@ msgstr "" #: templates/web/default/alert/index.html:34 #: templates/web/default/around/postcode_form.html:8 -#: templates/web/emptyhomes/index.html:47 -#: templates/web/fixmystreet/around/postcode_form.html:24 +#: templates/web/fixmystreet/around/postcode_form.html:21 +#: templates/web/seesomething/around/postcode_form.html:10 +#: templates/web/zurich/admin/stats.html:26 msgid "Go" msgstr "Los" -#: templates/web/default/admin/report_edit.html:41 +#: templates/web/default/admin/report_edit.html:77 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 "" #: templates/web/default/reports/index.html:8 -#: templates/web/emptyhomes/reports/index.html:5 msgid "Greyed-out lines are councils that no longer exist." msgstr "" @@ -1108,19 +1315,25 @@ msgstr "" #: templates/web/default/questionnaire/index.html:74 #: templates/web/fixmystreet/questionnaire/index.html:68 -msgid "" -"Have you ever reported a problem to a council before, or is this your first " -"time?" +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:28 +#: 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:53 +#: 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 "Hilfe" @@ -1132,35 +1345,53 @@ msgstr "" #: templates/web/barnet/header.html:70 templates/web/bromley/header.html:64 #: templates/web/bromley/header.html:99 #: templates/web/fixmybarangay/header.html:66 -#: templates/web/fixmystreet/header.html:47 -#: templates/web/zurich/header.html:47 +#: templates/web/fixmystreet/header.html:50 +#: templates/web/oxfordshire/header.html:111 +#: templates/web/oxfordshire/header.html:47 +#: templates/web/stevenage/header.html:97 templates/web/zurich/footer.html:11 msgid "Hi %s" msgstr "Hallo %s" -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 -#: templates/web/default/admin/update_edit.html:19 +#: 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 "Unsichtbar" -#: templates/web/default/around/display_location.html:63 +#: templates/web/default/around/display_location.html:67 msgid "Hide old" msgstr "Alte ausblenden" -#: templates/web/default/around/display_location.html:58 +#: templates/web/default/around/display_location.html:62 msgid "Hide pins" msgstr "Stecknadeln ausblenden" -#: templates/web/default/admin/council_edit.html:66 +#: templates/web/default/admin/body_edit.html:79 msgid "History" msgstr "History" -#: templates/web/default/index.html:28 templates/web/emptyhomes/index.html:53 -#: templates/web/fixmystreet/index.html:36 +#: templates/web/default/js/translation_strings.html:31 +#: templates/web/oxfordshire/js/translation_strings.html:25 +msgid "Home" +msgstr "" + +#: templates/web/default/index-steps.html:1 msgid "How to report a problem" msgstr "Erfasse eine neue Meldung:" -#: perllib/FixMyStreet/App/Controller/Admin.pm:648 +#: 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:733 msgid "I am afraid you cannot confirm unconfirmed reports." msgstr "" @@ -1169,49 +1400,64 @@ msgid "I'm afraid we couldn't locate your problem in the database.\n" msgstr "" #: perllib/FixMyStreet/App/Controller/Tokens.pm:44 -msgid "" -"I'm afraid we couldn't validate that token, as the report was made too long " -"ago." +msgid "I'm afraid we couldn't validate that token, as the report was made too long ago." msgstr "" -#: perllib/FixMyStreet/App/Controller/Tokens.pm:235 -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öst werden. Falls sie die URL aus " -"einer Mail kopiert haben, überprüfen sie bitte ob sie die gesamte " -"URL kopiert haben.\n" +#: perllib/FixMyStreet/App/Controller/Tokens.pm:259 +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öst werden. Falls sie die URL aus einer Mail kopiert haben, überprüfen sie bitte ob sie die gesamte URL kopiert haben.\n" -#: templates/web/default/admin/list_flagged.html:9 -#: templates/web/default/admin/list_updates.html:5 -#: templates/web/default/admin/search_reports.html:12 +#: 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 "ID" -#: templates/web/default/report/new/councils_text_none.html:11 -#: templates/web/default/report/new/councils_text_none.html:12 +#: templates/web/default/admin/body-form.html:24 +#: templates/web/default/admin/body-form.html:25 msgid "" -"If you submit a problem here the subject and details of the problem will be " -"public, but the problem will <strong>not</strong> be reported to the council." +"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/emptyhomes/report/new/councils_text_none.html:9 +#: templates/web/default/admin/body.html:104 msgid "" -"If you submit a report here it will be left on the site, but not reported to " -"the council – please still leave your report, so that we can show to " -"the council the activity in their area." +"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/auth/token.html:23 -#: templates/web/default/email_sent.html:24 -msgid "" -"If you use web-based email or have 'junk mail' filters, you may wish to " -"check your bulk/spam mail folders: sometimes, our messages are marked that " -"way." +#: templates/web/default/email_sent.html:19 +msgid "If you do not, your alert will not be activated." +msgstr "" + +#: templates/web/default/email_sent.html:15 +msgid "If you do not, your problem will not be posted." msgstr "" -#: templates/web/default/questionnaire/index.html:83 +#: templates/web/default/email_sent.html:17 +msgid "If you do not, your update will not be posted." +msgstr "" + +#: templates/web/default/report/new/councils_text_none.html:8 +#: templates/web/default/report/new/councils_text_none.html:9 +msgid "If you submit a problem here the subject and details of the problem will be public, but the problem will <strong>not</strong> be reported to the council." +msgstr "" + +#: templates/web/emptyhomes/report/new/councils_text_none.html:9 +msgid "If you submit a report here it will be left on the site, but not reported to the council – please still leave your report, so that we can show to the council the activity in their area." +msgstr "" + +#: templates/web/default/auth/token.html:22 +#: templates/web/default/email_sent.html:9 +msgid "If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way." +msgstr "" + +#: templates/web/default/questionnaire/index.html:86 #: templates/web/fixmystreet/questionnaire/index.html:77 msgid "" "If you wish to leave a public update on the problem, please enter it here\n" @@ -1219,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" @@ -1229,42 +1502,64 @@ msgstr "" #: templates/web/bromley/report/display.html:80 #: templates/web/bromley/report/display.html:82 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:20 -#: templates/web/default/dashboard/index.html:138 -#: templates/web/default/dashboard/index.html:140 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:81 -#: templates/web/fixmystreet/report/display.html:90 -#: templates/web/fixmystreet/report/display.html:92 +#: 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:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 msgid "In Progress" msgstr "In Bearbeitung" -#: templates/web/default/open311/index.html:21 -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)." +#: 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: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 "In Bearbeitung" +#: templates/web/seesomething/report/new/fill_in_details_form.html:38 +msgid "Incident Category" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:163 +msgid "Include reporter personal details" +msgstr "" + #: templates/web/default/admin/stats.html:76 msgid "Include unconfirmed reports" msgstr "" -#: perllib/FixMyStreet/App/Controller/Open311.pm:356 +#: perllib/FixMyStreet/App/Controller/Open311.pm:354 msgid "Incorrect has_photo value \"%s\"" msgstr "" -#: perllib/FixMyStreet/App/Controller/Open311.pm:341 +#: 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 +msgid "Internal referral" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:339 msgid "Invalid agency_responsible value %s" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:956 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1096 msgid "Invalid end date" msgstr "Ung&ultiges Enddatum" @@ -1272,79 +1567,75 @@ msgstr "Ung&ultiges Enddatum" msgid "Invalid format %s specified." msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:946 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1092 msgid "Invalid start date" msgstr "Ung&ultiges Startdatum" #: templates/web/bromley/report/display.html:80 #: templates/web/bromley/report/display.html:81 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:19 -#: templates/web/default/dashboard/index.html:138 -#: templates/web/default/dashboard/index.html:139 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:80 -#: templates/web/fixmystreet/report/display.html:90 -#: templates/web/fixmystreet/report/display.html:91 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:37 +#: templates/web/default/dashboard/index.html:142 +#: templates/web/default/dashboard/index.html:143 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 msgid "Investigating" msgstr "" #: templates/web/emptyhomes/tokens/confirm_problem.html:12 #: templates/web/emptyhomes/tokens/confirm_problem.html:14 -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’t mean the council " -"isn’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." +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’t mean the council isn’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:166 +#: 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/display.html:151 #: 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/display.html:160 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:171 +#: 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 "" -#: templates/web/bromley/report/display.html:195 +#: templates/web/bromley/report/display.html:197 #: templates/web/bromley/report/new/fill_in_details_form.html:119 #: templates/web/bromley/report/new/fill_in_details_form.html:166 -#, fuzzy msgid "Last Name" -msgstr "Letzte Bearbeitung" +msgstr "" -#: templates/web/default/admin/council_contacts.html:42 +#: templates/web/default/admin/body.html:58 +#: templates/web/zurich/admin/body.html:15 msgid "Last editor" msgstr "Letzter Bearbeiter" -#: templates/web/default/admin/report_edit.html:36 +#: templates/web/default/admin/report_edit.html:72 msgid "Last update:" msgstr "Letzte Bearbeitung" -#: templates/web/default/admin/problem_row.html:26 -#, fuzzy +#: templates/web/default/admin/problem_row.html:39 msgid "Last update:" -msgstr "Letzte Bearbeitung" +msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1042 -msgid "List Flagged" +#: 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/council_contacts.html:16 -#: templates/web/default/admin/council_contacts.html:18 +#: templates/web/default/admin/body.html:14 +#: templates/web/default/admin/body.html:16 msgid "List all reported problems" msgstr "Liste aller Meldungen" #: templates/web/bromley/report/new/fill_in_details_form.html:69 #: templates/web/default/report/new/fill_in_details_form.html:68 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:51 #: templates/web/fixmystreet/report/new/fill_in_details_form.html:75 +#: templates/web/seesomething/report/new/fill_in_details_form.html:25 +#: templates/web/zurich/report/new/fill_in_details_form.html:51 msgid "Loading..." msgstr "" @@ -1376,25 +1667,33 @@ 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:51 -#: templates/web/reading/footer.html:9 +#: 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 "RSS" -#: templates/web/default/index.html:32 templates/web/emptyhomes/index.html:57 -#: templates/web/fixmystreet/index.html:45 +#: templates/web/default/index-steps.html:25 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:43 +#: templates/web/oxfordshire/js/translation_strings.html:37 +msgid "MAP" +msgstr "" + #: perllib/FixMyStreet/Map/OSM.pm:44 -msgid "" -"Map © <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>" +msgid "Map © <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/fixmystreet/contact/index.html:86 +#: 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" @@ -1406,80 +1705,104 @@ msgstr "Nachricht:" msgid "Missing jurisdiction_id" msgstr "" +#: templates/web/zurich/admin/stats.html:34 +msgid "Moderated by division within one working day" +msgstr "" + #: templates/web/default/admin/stats.html:11 msgid "Month" msgstr "Monat" -#: templates/web/default/report/display.html:26 +#: templates/web/default/report/display.html:30 msgid "More problems nearby" msgstr "Meldungen in der Nähe" -#: templates/web/default/admin/list_flagged.html:11 -#: templates/web/default/admin/list_flagged.html:34 +#: 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/search_reports.html:14 -#: templates/web/default/admin/search_users.html:12 +#: 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:10 +#: 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/display.html:199 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:119 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:186 +#: 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 "Name" -#: templates/web/default/admin/report_edit.html:30 -#: templates/web/default/admin/update_edit.html:23 -#: templates/web/default/admin/user_edit.html:10 +#: templates/web/seesomething/report/new/fill_in_details_form.html:74 +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: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:317 +msgid "Name: %s" +msgstr "" + #: templates/web/fiksgatami/footer.html:3 #: templates/web/fiksgatami/nn/footer.html:3 #: templates/web/reading/footer.html:4 msgid "Navigation" msgstr "Navigation" -#: perllib/FixMyStreet/Geocode/OSM.pm:161 -msgid "" -"Nearest named road to the pin placed on the map (automatically generated " -"using OpenStreetMap): %s%s" +#: perllib/FixMyStreet/Geocode/OSM.pm:166 +msgid "Nearest named road to the pin placed on the map (automatically generated using OpenStreetMap): %s%s" msgstr "" -#: perllib/FixMyStreet/Cobrand/UK.pm:152 -msgid "" -"Nearest postcode to the pin placed on the map (automatically generated): %s " -"(%sm away)" +#: perllib/FixMyStreet/Cobrand/UK.pm:148 +msgid "Nearest postcode to the pin placed on the map (automatically generated): %s (%sm away)" msgstr "" -#: perllib/FixMyStreet/Cobrand/Default.pm:406 -#: perllib/FixMyStreet/Cobrand/Default.pm:446 -msgid "" -"Nearest road to the pin placed on the map (automatically generated by Bing " -"Maps): %s" +#: perllib/FixMyStreet/Cobrand/Default.pm:418 +#: perllib/FixMyStreet/Cobrand/Default.pm:458 +msgid "Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s" msgstr "" -#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:265 +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:273 msgid "" -"Nearest road to the pin placed on the map (automatically generated by Bing " -"Maps): %s\n" +"Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s\n" "\n" msgstr "" -#: templates/web/default/email_sent.html:20 +#: templates/web/default/email_sent.html:3 msgid "Nearly Done! Now check your email..." msgstr "Fast Fertig! Bitte checken Sie ihre Mailbox..." #: templates/web/default/reports/index.html:16 +#: templates/web/fixmybarangay/reports/index.html:16 msgid "New <br>problems" -msgstr "Neue <br>Meldungen" +msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:320 +#: perllib/FixMyStreet/App/Controller/Admin.pm:264 +msgid "New body added" +msgstr "" + +#: 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 "" @@ -1488,7 +1811,7 @@ msgstr "" msgid "New local reports on reportemptyhomes.com" msgstr "" -#: templates/web/emptyhomes/reports/index.html:11 +#: templates/web/emptyhomes/reports/index.html:10 #: templates/web/fiksgatami/nn/reports/index.html:10 #: templates/web/fiksgatami/reports/index.html:10 msgid "New problems" @@ -1514,9 +1837,12 @@ msgstr "" msgid "New problems within {{NAME}}'s boundary on FixMyStreet" msgstr "" +#: templates/web/zurich/admin/index-sdm.html:4 +msgid "New reports" +msgstr "" + #: db/alert_types_eha.pl:23 -msgid "" -"New reports for {{COUNCIL}} within {{WARD}} ward on reportemptyhomes.com" +msgid "New reports for {{COUNCIL}} within {{WARD}} ward on reportemptyhomes.com" msgstr "" #: db/alert_types_eha.pl:5 @@ -1539,55 +1865,68 @@ msgstr "" msgid "New state" msgstr "" +#: templates/web/zurich/admin/report_edit-sdm.html:61 +msgid "New update:" +msgstr "" + #: templates/web/fiksgatami/front/news.html:9 #: templates/web/fiksgatami/nn/front/news.html:9 #: templates/web/fixmystreet/front/news.html:8 msgid "New!" msgstr "Neu!" -#: templates/web/default/admin/council_contacts.html:52 -#: templates/web/default/admin/council_contacts.html:53 -#: templates/web/default/admin/council_contacts.html:54 -#: templates/web/default/admin/council_edit.html:4 -#: templates/web/default/admin/list_updates.html:30 -#: templates/web/default/admin/list_updates.html:31 +#: templates/web/default/pagination.html:13 +msgid "Next" +msgstr "" + +#: 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/problem_row.html:19 -#: templates/web/default/admin/report_edit.html:28 -#: templates/web/default/admin/report_edit.html:41 -#: templates/web/default/admin/update_edit.html:16 +#: 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:107 +#: 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 "Nein" +#: templates/web/default/admin/user-form.html:33 +msgid "No body" +msgstr "" + #: templates/web/default/admin/stats.html:85 -#: templates/web/default/admin/user_edit.html:13 msgid "No council" msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:336 +#: perllib/FixMyStreet/DB/Result/Problem.pm:362 msgid "No council selected" msgstr "" -#: templates/web/default/admin/council_list.html:32 +#: templates/web/default/admin/edit-league.html:17 msgid "No edits have yet been made." msgstr "Noch keine Antwort" -#: templates/web/default/admin/list_flagged.html:26 -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/list_flagged.html:47 -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/default/admin/council_list.html:38 -msgid "No info at all" -msgstr "Keine Informationen" +#: templates/web/zurich/admin/report_edit-sdm.html:68 +msgid "No further updates" +msgstr "" #: templates/web/default/around/around_map_list_items.html:17 #: templates/web/fixmystreet/around/around_map_list_items.html:8 @@ -1599,51 +1938,86 @@ msgstr "Keine Meldungen gefunden." msgid "No problems have been reported yet." msgstr "Bisher wurden noch keine Meldungen erfasst." -#: templates/web/fixmystreet/report/_support.html:3 +#: 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/council_contacts.html:57 +#: templates/web/default/admin/body.html:73 msgid "Non Public" msgstr "" -#: templates/web/default/admin/council_list.html:5 -#: templates/web/default/admin/report_edit.html:16 +#: 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 "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 +#: 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 "" + +#: templates/web/zurich/admin/report_edit-sdm.html:21 +msgid "Not for my subdivision" +msgstr "" + #: templates/web/default/admin/questionnaire.html:6 msgid "Not reported before" msgstr "" -#: templates/web/default/report/_main.html:11 -#: templates/web/emptyhomes/report/display.html:24 -#: templates/web/fixmystreet/report/_main.html:13 +#: templates/web/default/report/_main.html:10 msgid "Not reported to council" msgstr "" -#: templates/web/default/admin/council_contacts.html:43 -#: templates/web/default/admin/council_edit.html:74 +#: 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 "" #: templates/web/default/admin/stats.html:51 -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" +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/council_contacts.html:95 -#: templates/web/default/admin/council_edit.html:32 +#: 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 "" -#: templates/web/default/open311/index.html:6 +#: templates/web/default/open311/index.html:75 msgid "Note: <strong>%s</strong>" msgstr "" -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:153 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:154 msgid "Now to submit your report…" msgstr "" @@ -1651,20 +2025,26 @@ msgstr "" msgid "Now to submit your report… do you have a FixMyStreet password?" msgstr "" -#: templates/web/fixmystreet/report/display.html:143 +#: templates/web/fixmystreet/report/update-form.html:83 msgid "Now to submit your update…" msgstr "" -#: templates/web/default/report/display.html:133 +#: templates/web/default/report/update-form.html:86 msgid "Now to submit your update… do you have a FixMyStreet password?" msgstr "" -#: templates/web/default/report/display.html:21 +#: templates/web/default/js/translation_strings.html:42 +#: templates/web/oxfordshire/js/translation_strings.html:36 +msgid "OK" +msgstr "" + +#: templates/web/default/report/display.html:24 #: templates/web/default/report/update.html:16 msgid "Offensive? Unsuitable? Tell us" msgstr "" #: templates/web/default/reports/index.html:18 +#: templates/web/fixmybarangay/reports/index.html:18 msgid "Old / unknown <br>problems" msgstr "" @@ -1678,31 +2058,41 @@ msgid "Old state" msgstr "" #: templates/web/default/reports/index.html:20 +#: templates/web/fixmybarangay/reports/index.html:20 msgid "Older <br>fixed" msgstr "" #: templates/web/default/reports/index.html:17 +#: templates/web/fixmybarangay/reports/index.html:17 msgid "Older <br>problems" msgstr "" -#: templates/web/emptyhomes/reports/index.html:14 #: templates/web/fiksgatami/nn/reports/index.html:14 #: templates/web/fiksgatami/reports/index.html:14 msgid "Older fixed" msgstr "" -#: templates/web/emptyhomes/reports/index.html:12 +#: templates/web/emptyhomes/reports/index.html:11 #: templates/web/fiksgatami/nn/reports/index.html:11 #: templates/web/fiksgatami/reports/index.html:11 msgid "Older problems" msgstr "" +#: perllib/FixMyStreet/Cobrand/Zurich.pm:115 #: templates/web/bromley/report/display.html:80 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/update_edit.html:19 -#: templates/web/default/dashboard/index.html:138 -#: templates/web/default/report/display.html:79 -#: templates/web/fixmystreet/report/display.html:90 +#: 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 "Öffnen" @@ -1710,15 +2100,15 @@ msgstr "Öffnen" msgid "Open reports" msgstr "" -#: templates/web/default/open311/index.html:3 +#: templates/web/default/open311/index.html:72 msgid "Open311 API for the mySociety FixMyStreet server" msgstr "" -#: templates/web/default/open311/index.html:13 +#: templates/web/default/open311/index.html:82 msgid "Open311 initiative web page" msgstr "" -#: templates/web/default/open311/index.html:14 +#: templates/web/default/open311/index.html:83 msgid "Open311 specification" msgstr "" @@ -1729,30 +2119,26 @@ msgstr "" #: templates/web/default/alert/_list.html:33 #: templates/web/fixmystreet/alert/_list.html:36 -msgid "" -"Or you can subscribe to an alert based upon what ward or council you’" -"re in:" -msgstr "" - -#: perllib/FixMyStreet/App/Controller/Report/New.pm:1008 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:658 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:659 -#: perllib/FixMyStreet/DB/Result/Problem.pm:505 -#: perllib/FixMyStreet/DB/Result/Problem.pm:515 -#: perllib/FixMyStreet/DB/Result/Problem.pm:525 -#: perllib/FixMyStreet/DB/Result/Problem.pm:537 -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:331 -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:340 +msgid "Or you can subscribe to an alert based upon what ward or council you’re in:" +msgstr "" + +#: 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 "" #: templates/web/default/footer.html:27 -msgid "" -"Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet" -"\">available on GitHub</a>." +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:11 +#: templates/web/default/admin/list_updates.html:8 msgid "Owner" msgstr "Besitzer" @@ -1761,16 +2147,23 @@ msgstr "Besitzer" msgid "Page Not Found" msgstr "" -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 +#: templates/web/default/admin/body-form.html:31 +#: templates/web/zurich/admin/body-form.html:14 +msgid "Parent" +msgstr "" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:51 msgid "Partial" msgstr "" -#: templates/web/bromley/report/display.html:145 +#: 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/display.html:179 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:207 +#: 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 "" @@ -1778,29 +2171,50 @@ msgstr "" msgid "Password:" msgstr "" +#: 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:137 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:204 +#: 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 "Telefonnummer (optional)" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:262 -#: templates/web/default/admin/report_edit.html:32 +#: 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 "Telefonnummer:" -#: templates/web/bromley/report/display.html:109 +#: templates/web/bromley/report/display.html:111 #: templates/web/bromley/report/new/fill_in_details_form.html:104 -#: templates/web/fixmystreet/report/display.html:119 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:110 +#: 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 "Foto" -#: templates/web/default/questionnaire/index.html:95 -#: templates/web/default/report/display.html:109 +#: templates/web/default/questionnaire/index.html:99 #: templates/web/default/report/new/fill_in_details_form.html:102 +#: templates/web/default/report/update-form.html:62 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:99 #: templates/web/fixmystreet/questionnaire/index.html:90 msgid "Photo:" msgstr "Foto:" @@ -1809,27 +2223,30 @@ msgstr "Foto:" msgid "Photos of recent nearby reports" msgstr "Fotos von neuen Meldungen in der Nähe" -#: templates/web/bromley/report/display.html:80 -#: templates/web/bromley/report/display.html:81 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:19 -#: templates/web/default/dashboard/index.html:138 -#: templates/web/default/dashboard/index.html:139 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:80 -#: templates/web/fixmystreet/report/display.html:90 -#: templates/web/fixmystreet/report/display.html:91 +#: 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:89 +#: templates/web/zurich/admin/report_edit.html:92 msgid "Planned" msgstr "Geplant" #: templates/web/fixmystreet/questionnaire/index.html:44 -msgid "" -"Please <a class=\"tab_link\" href=\"#report\">take a look</a> at the updates " -"that have been left." +msgid "Please <a class=\"tab_link\" href=\"#report\">take a look</a> at the updates that have been left." msgstr "" #: templates/web/default/report/new/notes.html:6 -#: templates/web/fixmystreet/report/new/notes.html:5 +#: templates/web/fixmystreet/report/new/notes.html:6 +#: templates/web/oxfordshire/report/new/notes.html:5 msgid "Please be polite, concise and to the point." msgstr "Bitte seien Sie freundlich und prägnant." @@ -1838,7 +2255,7 @@ msgstr "Bitte seien Sie freundlich und prägnant." msgid "Please check the passwords and try again" msgstr "" -#: templates/web/default/auth/token.html:17 +#: templates/web/default/auth/token.html:14 msgid "Please check your email" msgstr "Bitte überprüfen sie ihre eMail" @@ -1846,65 +2263,84 @@ msgstr "Bitte überprüfen sie ihre eMail" #: templates/web/default/auth/general.html:8 #: templates/web/fixmystreet/auth/general.html:15 #: templates/web/fixmystreet/auth/general.html:9 +#: templates/web/seesomething/auth/general.html:15 +#: templates/web/seesomething/auth/general.html:9 +#: templates/web/zurich/auth/general.html:3 +#: templates/web/zurich/auth/general.html:9 msgid "Please check your email address is correct" msgstr "Bitte überprüfen Sie ob Ihre eMail-Adresse korrekt ist" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:824 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:831 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:850 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:893 -#: perllib/FixMyStreet/DB/Result/Problem.pm:355 -#: templates/web/default/js/validation_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 "Bitte wählen Sie eine Kategorie" -#: perllib/FixMyStreet/DB/Result/Problem.pm:361 +#: perllib/FixMyStreet/DB/Result/Problem.pm:387 msgid "Please choose a property type" msgstr "" +#: templates/web/seesomething/js/translation_strings.html:6 +msgid "Please choose a transport category" +msgstr "" + +#: templates/web/seesomething/js/translation_strings.html:7 +msgid "Please choose an incident category" +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”" +msgid "Please describe the exact location of the report. Example: “2 dumped mattresses outside Number 19 Stockwell Close”" msgstr "" #: templates/web/default/contact/blurb.html:2 msgid "" -"Please do <strong>not</strong> report problems through this form; messages " -"go to\n" +"Please do <strong>not</strong> report problems through this form; messages go to\n" "the team behind FixMyStreet, not a council. To report a problem,\n" "please <a href=\"/\">go to the front page</a> and follow the instructions." msgstr "" #: templates/web/default/report/new/notes.html:7 -#: templates/web/fixmystreet/report/new/notes.html:6 -#, fuzzy -msgid "" -"Please do not be abusive — abusing your council devalues the service " -"for all users." +#: templates/web/fixmystreet/report/new/notes.html:7 +#: templates/web/oxfordshire/report/new/notes.html:6 +msgid "Please do not be abusive — abusing your council devalues the service for all users." +msgstr "" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:46 +msgid "Please do not give address or personal information in this section." msgstr "" -"Bitte missbrauchen Sie diesen Service nicht. Die Schaden damit nicht nur der " -"Verwaltung, sondern sämtlichen Bewohnern von Zü,rich." -#: perllib/FixMyStreet/DB/Result/Comment.pm:146 -#: templates/web/default/js/validation_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/js/translation_strings.html:19 msgid "Please enter a password" msgstr "" #: perllib/FixMyStreet/App/Controller/Contact.pm:97 -#: perllib/FixMyStreet/DB/Result/Problem.pm:330 -#: templates/web/default/js/validation_strings.html:3 +#: 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:104 -#: templates/web/default/js/validation_strings.html:12 -#: templates/web/default/js/validation_strings.html:16 +#: 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 "Bitte geben Sie eine gültige eMail-Adresse an" @@ -1913,67 +2349,86 @@ msgstr "Bitte geben Sie eine gültige eMail-Adresse an" msgid "Please enter a valid email address" msgstr "Bitte geben Sie eine gültige eMail-Adresse an" -#: perllib/FixMyStreet/DB/Result/Problem.pm:333 -#: templates/web/default/js/validation_strings.html:4 +#: 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" #: perllib/FixMyStreet/App/Controller/Contact.pm:96 -#: perllib/FixMyStreet/DB/Result/User.pm:101 +#: 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/validation_strings.html:11 -#: templates/web/default/js/validation_strings.html:15 +#: 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 "Bitte geben Sie Ihre eMail-Adresse an" #: templates/web/bromley/report/new/fill_in_details_form.html:149 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:150 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:151 +#: templates/web/seesomething/report/new/fill_in_details_form.html:85 +#: templates/web/zurich/report/new/fill_in_details_form.html:92 msgid "Please enter your email address" msgstr "Bitte geben Sie eine Ihre eMail-Adresse an" -#: templates/web/default/js/validation_strings.html:19 -#, fuzzy +#: 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" +msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:348 -#: templates/web/default/js/validation_strings.html:7 -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" +#: 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:143 -#: perllib/FixMyStreet/DB/Result/Problem.pm:341 -#: perllib/FixMyStreet/DB/Result/User.pm:97 -#: templates/web/default/js/validation_strings.html:6 +#: 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/validation_strings.html:20 +#: templates/web/default/js/translation_strings.html:22 #, fuzzy -msgid "Please enter your second name" +msgid "Please enter your phone number" msgstr "Bitte geben Sie Ihren Namen an" -#: templates/web/default/js/validation_strings.html:18 -#, fuzzy +#: 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:24 +#: templates/web/oxfordshire/js/translation_strings.html:18 msgid "Please enter your title" -msgstr "Bitte geben Sie Ihre eMail-Adresse an" +msgstr "" + +#: 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 "" #: templates/web/emptyhomes/report/new/fill_in_details_text.html:1 msgid "" "Please fill in details of the empty property below, saying what type of\n" "property it is e.g. an empty home, block of flats, office etc. Tell us\n" -"something about its condition and any other information you feel is " -"relevant.\n" -"There is no need for you to give the exact address. Please be polite, " -"concise\n" -"and to the point; writing your message entirely in block capitals makes it " -"hard\n" +"something about its condition and any other information you feel is relevant.\n" +"There is no need for you to give the exact address. Please be polite, concise\n" +"and to the point; writing your message entirely in block capitals makes it hard\n" "to read, as does a lack of punctuation." msgstr "" @@ -1982,51 +2437,39 @@ msgstr "" #: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 #: templates/web/fixmybarangay/report/new/fill_in_details_text.html:10 #: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 -#: templates/web/fixmystreet/report/new/fill_in_details_text.html:11 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:8 msgid "Please fill in details of the problem below." msgstr "" #: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 #: templates/web/fixmybarangay/report/new/fill_in_details_text.html:3 -#, fuzzy msgid "" -"Please fill in details of the problem below. Leave as much detail as you " -"can, \n" +"Please fill in details of the problem below. Leave as much detail as you can, \n" "and if possible describe the exact location of\n" "the problem (e.g. if there is a streetlight number or road name)." msgstr "" -"Bitte beschreiben sie Ihre Meldung weiter unten. Wir können den Mangel " -"nur beheben, wenn Sie soviel Details wie möglich angeben: Beschreiben " -"sie die exakte Lage (z.B. An der Wand Richtung Strasse), was genau der " -"Mangel ist, wie lange dieser schon da ist und laden sie wenn möglich " -"ein Photo des Mangels hoch." #: templates/web/default/report/new/fill_in_details_text.html:1 #: templates/web/default/report/new/fill_in_details_text.html:3 msgid "" "Please fill in details of the problem below. The council won't be able\n" -"to help unless you leave as much detail as you can, so please describe the " -"exact location of\n" -"the problem (e.g. on a wall), what it is, how long it has been there, a " -"description (and a\n" +"to help unless you leave as much detail as you can, so please describe the exact location of\n" +"the problem (e.g. on a wall), what it is, how long it has been there, a description (and a\n" "photo of the problem if you have one), etc." -msgstr "" -"Bitte beschreiben sie Ihre Meldung weiter unten. Wir können den Mangel " -"nur beheben, wenn Sie soviel Details wie möglich angeben: Beschreiben " -"sie die exakte Lage (z.B. An der Wand Richtung Strasse), was genau der " -"Mangel ist, wie lange dieser schon da ist und laden sie wenn möglich " -"ein Photo des Mangels hoch." +msgstr "Bitte beschreiben sie Ihre Meldung weiter unten. Wir können den Mangel nur beheben, wenn Sie soviel Details wie möglich angeben: Beschreiben sie die exakte Lage (z.B. An der Wand Richtung Strasse), was genau der Mangel ist, wie lange dieser schon da ist und laden sie wenn möglich ein Photo des Mangels hoch." #: templates/web/fixmystreet/report/new/fill_in_details_form.html:70 +#: templates/web/seesomething/report/new/fill_in_details_form.html:20 +#: templates/web/zurich/report/new/fill_in_details_form.html:46 msgid "Please fill in details of the problem." msgstr "" #: templates/web/bromley/report/new/fill_in_details_form.html:28 #: templates/web/default/report/new/fill_in_details_form.html:27 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:26 #: templates/web/fixmystreet/report/new/fill_in_details_form.html:35 -msgid "" -"Please fill in the form below with details of the problem, and describe the " -"location as precisely as possible in the details box." +#: templates/web/zurich/report/new/fill_in_details_form.html:20 +msgid "Please fill in the form below with details of the problem, and describe the location as precisely as possible in the details box." msgstr "" #: perllib/FixMyStreet/App/Controller/Questionnaire.pm:243 @@ -2037,34 +2480,26 @@ msgstr "" msgid "Please note that updates are not sent to the council." msgstr "" -#: templates/web/default/report/display.html:56 -msgid "" -"Please note that updates are not sent to the council. If you leave your name " -"it will be public. Your information will only be used in accordance with our " -"<a href=\"/faq#privacy\">privacy policy</a>" +#: templates/web/default/report/update-form.html:7 +msgid "Please note that updates are not sent to the council. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" msgstr "" #: templates/web/barnet/report/updates-sidebar-notes.html:1 -#, fuzzy -msgid "" -"Please note that updates are not sent to the relevant department. If you " -"leave your name it will be public. Your information will only be used in " -"accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgid "Please note that updates are not sent to the relevant department. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" msgstr "" -"Wir verwenden Ihre persönlichen Daten nur entsprechend unserer <a href=" -"\"/faq#privacy\">Datenschutzrichtlinien.</a>" #: templates/web/bromley/report/new/fill_in_details_form.html:23 #: templates/web/default/report/new/fill_in_details_form.html:5 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:5 #: templates/web/fixmystreet/report/new/fill_in_details_form.html:26 -msgid "" -"Please note your report has <strong>not yet been sent</strong>. Choose a " -"category and add further information below, then submit." +#: templates/web/zurich/report/new/fill_in_details_form.html:11 +msgid "Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit." msgstr "" #: templates/web/default/report/new/notes.html:1 #: templates/web/fixmybarangay/report/new/notes.html:1 #: templates/web/fixmystreet/report/new/notes.html:1 +#: templates/web/oxfordshire/report/new/notes.html:1 msgid "Please note:" msgstr "Hinweise:" @@ -2078,8 +2513,7 @@ msgstr "" #: perllib/FixMyStreet/App/Controller/Questionnaire.pm:116 #: perllib/FixMyStreet/App/Controller/Questionnaire.pm:239 -msgid "" -"Please say whether you've ever reported a problem to your council before" +msgid "Please say whether you've ever reported a problem to your council before" msgstr "" #: perllib/FixMyStreet/App/Controller/Alert.pm:80 @@ -2098,11 +2532,11 @@ msgstr "" msgid "Please take a look at the updates that have been left." msgstr "" -#: perllib/FixMyStreet/App/Controller/Photo.pm:175 +#: perllib/FixMyStreet/App/Controller/Photo.pm:176 msgid "Please upload a JPEG image only" msgstr "" -#: perllib/FixMyStreet/App/Controller/Photo.pm:182 +#: perllib/FixMyStreet/App/Controller/Photo.pm:183 msgid "Please upload a JPEG image only\n" msgstr "" @@ -2111,63 +2545,72 @@ msgid "Please write a message" msgstr "" #: templates/web/bromley/report/display.html:70 -#: templates/web/fixmystreet/report/display.html:85 +#: templates/web/fixmystreet/report/update-form.html:23 msgid "Please write your update here" msgstr "" -#: templates/web/bromley/report/display.html:121 -#: templates/web/bromley/report/display.html:149 -#: templates/web/bromley/report/display.html:161 +#: templates/web/bromley/report/display.html:123 +#: templates/web/bromley/report/display.html:151 +#: templates/web/bromley/report/display.html:163 #: templates/web/default/contact/index.html:93 -#: templates/web/default/report/display.html:119 -#: templates/web/default/report/display.html:156 -#: templates/web/default/report/display.html:178 -#: templates/web/fixmystreet/contact/index.html:93 -#: templates/web/fixmystreet/report/display.html:131 -#: templates/web/fixmystreet/report/display.html:155 -#: templates/web/fixmystreet/report/display.html:183 +#: templates/web/default/report/update-form.html:109 +#: templates/web/default/report/update-form.html:131 +#: templates/web/default/report/update-form.html:72 +#: templates/web/fixmystreet/contact/index.html:105 +#: templates/web/fixmystreet/report/update-form.html:123 +#: templates/web/fixmystreet/report/update-form.html:71 +#: templates/web/fixmystreet/report/update-form.html:95 msgid "Post" msgstr "" -#: templates/web/default/report/updates.html:14 +#: templates/web/default/report/updates.html:15 msgid "Posted anonymously at %s" msgstr "" -#: templates/web/default/report/updates.html:21 +#: templates/web/default/report/updates.html:22 msgid "Posted by %s (<strong>%s</strong>) at %s" msgstr "" -#: templates/web/default/report/updates.html:23 +#: templates/web/default/report/updates.html:24 msgid "Posted by %s at %s" msgstr "" -#: templates/web/default/admin/council_contacts.html:100 -#: templates/web/default/admin/council_edit.html:30 -#: templates/web/default/admin/report_edit.html:43 +#: templates/web/default/pagination.html:7 +msgid "Previous" +msgstr "" + +#: 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 "" +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:108 +msgid "Private information (not shown on site)" +msgstr "" + #: templates/web/default/maps/openlayers.html:85 msgid "Problem" msgstr "Meldung" -#: templates/web/default/admin/timeline.html:24 +#: templates/web/default/admin/timeline.html:22 msgid "Problem %d created" msgstr "" -#: templates/web/default/admin/timeline.html:26 +#: templates/web/default/admin/timeline.html:24 msgid "Problem %s confirmed" msgstr "" -#: templates/web/default/admin/timeline.html:28 +#: templates/web/default/admin/timeline.html:26 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:833 +#: perllib/FixMyStreet/App/Controller/Admin.pm:950 msgid "Problem marked as open." msgstr "" @@ -2175,7 +2618,7 @@ msgstr "" msgid "Problem state change based on survey results" msgstr "" -#: templates/web/default/admin/list_flagged.html:5 +#: templates/web/default/admin/flagged.html:10 msgid "Problems" msgstr "Meldungen" @@ -2185,11 +2628,12 @@ msgstr "Meldungen in dieser Gegend" #: templates/web/bromley/report/display.html:31 #: templates/web/fixmystreet/around/tabbed_lists.html:4 -#: templates/web/fixmystreet/report/display.html:31 +#: templates/web/fixmystreet/report/display.html:46 msgid "Problems nearby" msgstr "Meldungen in der Nähe" #: templates/web/fixmystreet/around/tabbed_lists.html:3 +#: templates/web/fixmystreet/report/display.html:44 msgid "Problems on the map" msgstr "Meldungen auf der Karte" @@ -2202,20 +2646,20 @@ msgstr "Meldungen, welche kürzlich gelöst wurden" msgid "Problems within %.1fkm of this location" msgstr "" -#: perllib/FixMyStreet/Cobrand/Default.pm:611 -#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:95 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:162 -#: perllib/FixMyStreet/Cobrand/UK.pm:231 +#: perllib/FixMyStreet/Cobrand/Default.pm:626 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:109 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:155 +#: perllib/FixMyStreet/Cobrand/UK.pm:228 msgid "Problems within %s" msgstr "Meldungen innerhalb %s" -#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:103 -#: perllib/FixMyStreet/Cobrand/UK.pm:245 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:117 +#: perllib/FixMyStreet/Cobrand/UK.pm:242 msgid "Problems within %s ward" msgstr "" -#: templates/web/default/reports/council.html:0 -#: templates/web/default/reports/council.html:29 +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:24 msgid "Problems within %s, FixMyStreet" msgstr "" @@ -2229,7 +2673,12 @@ msgstr "" msgid "Properties recently reported as put back to use on reportemptyhomes.com" msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:618 +#: templates/web/default/admin/report_edit.html:32 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:115 +msgid "Property address:" +msgstr "" + +#: templates/web/default/report/new/category.html:8 msgid "Property type:" msgstr "" @@ -2239,32 +2688,50 @@ msgid "Provide a title" msgstr "" #: templates/web/bromley/report/display.html:57 -#: templates/web/default/report/display.html:51 -#: templates/web/fixmystreet/report/display.html:66 +#: templates/web/default/report/update-form.html:3 +#: templates/web/fixmystreet/report/update-form.html:4 msgid "Provide an update" msgstr "Meldung aktualisieren" +#: templates/web/fixmystreet/auth/general.html:53 +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 "" + #: 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." +msgid "Providing a password is optional, but doing so will allow you to more easily report future problems, leave updates and manage your reports." msgstr "" -#: templates/web/bromley/report/display.html:142 -#: templates/web/default/report/display.html:175 +#: templates/web/bromley/report/display.html:144 #: templates/web/default/report/new/fill_in_details_form.html:173 -#: templates/web/fixmystreet/report/display.html:176 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:201 -msgid "" -"Providing a password is optional, but doing so will allow you to more easily " -"report problems, leave updates and manage your reports." +#: templates/web/default/report/update-form.html:128 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:202 +#: templates/web/fixmystreet/report/update-form.html:116 +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/council_contacts.html:44 -#: templates/web/default/admin/council_contacts.html:57 +#: templates/web/default/admin/body.html:60 +#: templates/web/default/admin/body.html:73 msgid "Public" msgstr "" +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:44 +msgid "Public information (shown on site)" +msgstr "" + +#: 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:80 +#: templates/web/zurich/admin/stats.html:38 +msgid "Publish photo" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:222 +msgid "Publish the response" +msgstr "" + #: templates/web/default/questionnaire/completed.html:1 #: templates/web/default/questionnaire/completed.html:2 #: templates/web/default/questionnaire/index.html:0 @@ -2277,11 +2744,11 @@ msgstr "" msgid "Questionnaire" msgstr "" -#: templates/web/default/admin/timeline.html:32 +#: templates/web/default/admin/timeline.html:30 msgid "Questionnaire %d answered for problem %d, %s to %s" msgstr "" -#: templates/web/default/admin/timeline.html:30 +#: templates/web/default/admin/timeline.html:28 msgid "Questionnaire %d sent for problem %d" msgstr "" @@ -2293,31 +2760,31 @@ msgstr "" #: templates/web/default/alert/_list.html:21 #: templates/web/default/around/display_location.html:1 #: templates/web/default/around/display_location.html:3 -#: templates/web/default/report/display.html:42 +#: templates/web/default/report/display.html:46 #: templates/web/default/reports/_rss.html:1 #: templates/web/fixmystreet/alert/_list.html:22 #: templates/web/fixmystreet/alert/updates.html:9 -#: templates/web/fixmystreet/report/display.html:45 +#: templates/web/fixmystreet/report/display.html:61 msgid "RSS feed" msgstr "" -#: perllib/FixMyStreet/Cobrand/UK.pm:274 perllib/FixMyStreet/Cobrand/UK.pm:286 +#: perllib/FixMyStreet/Cobrand/UK.pm:271 perllib/FixMyStreet/Cobrand/UK.pm:283 msgid "RSS feed for %s" msgstr "" -#: perllib/FixMyStreet/Cobrand/UK.pm:280 perllib/FixMyStreet/Cobrand/UK.pm:292 +#: perllib/FixMyStreet/Cobrand/UK.pm:277 perllib/FixMyStreet/Cobrand/UK.pm:289 msgid "RSS feed for %s ward, %s" msgstr "" -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:178 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:186 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:196 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:204 -#: perllib/FixMyStreet/Cobrand/UK.pm:300 perllib/FixMyStreet/Cobrand/UK.pm:312 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:171 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:179 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:189 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:197 +#: perllib/FixMyStreet/Cobrand/UK.pm:297 perllib/FixMyStreet/Cobrand/UK.pm:309 msgid "RSS feed of %s" msgstr "" -#: perllib/FixMyStreet/Cobrand/UK.pm:305 perllib/FixMyStreet/Cobrand/UK.pm:317 +#: perllib/FixMyStreet/Cobrand/UK.pm:302 perllib/FixMyStreet/Cobrand/UK.pm:314 msgid "RSS feed of %s, within %s ward" msgstr "" @@ -2330,15 +2797,15 @@ msgstr "" msgid "RSS feed of problems in this %s" msgstr "" -#: perllib/FixMyStreet/Cobrand/Default.pm:612 -#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:96 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:161 -#: perllib/FixMyStreet/Cobrand/UK.pm:238 +#: perllib/FixMyStreet/Cobrand/Default.pm:627 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:110 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:154 +#: perllib/FixMyStreet/Cobrand/UK.pm:235 msgid "RSS feed of problems within %s" msgstr "" -#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:102 -#: perllib/FixMyStreet/Cobrand/UK.pm:244 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:116 +#: perllib/FixMyStreet/Cobrand/UK.pm:241 msgid "RSS feed of problems within %s ward" msgstr "" @@ -2348,95 +2815,97 @@ msgid "RSS feed of recent local problems" msgstr "" #: templates/web/bromley/report/display.html:37 -#: templates/web/default/report/display.html:42 +#: templates/web/default/report/display.html:46 #: templates/web/fixmystreet/alert/updates.html:9 -#: templates/web/fixmystreet/report/display.html:45 +#: templates/web/fixmystreet/report/display.html:61 msgid "RSS feed of updates to this problem" msgstr "" #: templates/web/bromley/report/display.html:39 #: templates/web/default/alert/updates.html:9 -#: templates/web/default/report/display.html:33 +#: templates/web/default/report/display.html:37 #: templates/web/fixmystreet/alert/updates.html:14 -#: templates/web/fixmystreet/report/display.html:47 +#: templates/web/fixmystreet/report/display.html:63 msgid "Receive email when updates are left on this problem." msgstr "Erhalten Sie Aktualisierungen dieser Meldung." #: templates/web/default/around/display_location.html:0 -#: templates/web/default/around/display_location.html:34 +#: templates/web/default/around/display_location.html:32 msgid "Recent local problems, FixMyStreet" msgstr "" #: templates/web/default/reports/index.html:19 +#: templates/web/fixmybarangay/reports/index.html:19 msgid "Recently <br>fixed" -msgstr "Kürzlich <br>gelöst" +msgstr "" -#: templates/web/emptyhomes/reports/index.html:13 #: templates/web/fiksgatami/nn/reports/index.html:13 #: templates/web/fiksgatami/reports/index.html:13 msgid "Recently fixed" msgstr "Kürzlich gelöst" -#: templates/web/default/index.html:50 templates/web/fixmystreet/index.html:68 +#: templates/web/default/index.html:35 templates/web/emptyhomes/index.html:24 +#: templates/web/fixmystreet/index.html:45 msgid "Recently reported problems" msgstr "Kürzlich erfasste Meldungen" #: templates/web/default/report/new/notes.html:9 -#: templates/web/fixmystreet/report/new/notes.html:8 -msgid "" -"Remember that FixMyStreet is primarily for reporting physical problems that " -"can be fixed. If your problem is not appropriate for submission via this " -"site remember that you can contact your council directly using their own " -"website." -msgstr "" -"Fix My Zürich wird primär dafür verwendet, physische Mä" -"ngel zu melden, welche behoben werden können. Wenn Ihr Problem dafü" -"r nicht passend erscheint, können sie die entsprechende Dienststelle " -"weiterhin telefonisch oder per eMail erreichen." +#: templates/web/fixmystreet/report/new/notes.html:10 +msgid "Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site remember that you can contact your council directly using their own website." +msgstr "Fix My Zürich wird primär dafür verwendet, physische Mängel zu melden, welche behoben werden können. Wenn Ihr Problem dafür nicht passend erscheint, können sie die entsprechende Dienststelle weiterhin telefonisch oder per eMail erreichen." #: templates/web/fixmybarangay/report/new/notes.html:9 -msgid "" -"Remember that, for the pilot project, FixMyBarangay is only for reporting " -"potholes and streetlights in bgy. Luz or Basak San Nicolas." +msgid "Remember that, for the pilot project, FixMyBarangay is only for reporting potholes and streetlights in bgy. Luz or Basak San Nicolas." msgstr "" #: templates/web/default/admin/report_blocks.html:16 msgid "Remove flag" msgstr "" -#: templates/web/default/admin/report_edit.html:54 -#: templates/web/default/admin/update_edit.html:48 +#: templates/web/default/admin/report_edit.html:89 +#: templates/web/default/admin/update_edit.html:57 +#: templates/web/zurich/admin/update_edit.html:35 msgid "Remove photo (can't be undone!)" msgstr "" -#: templates/web/emptyhomes/header.html:10 +#: templates/web/emptyhomes/header.html:12 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:27 +#: 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:45 +#: 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 "Eine Meldung erfassen" #: templates/web/bromley/report/display.html:28 -#: templates/web/fixmystreet/report/display.html:26 +#: templates/web/fixmystreet/report/display.html:35 msgid "Report abuse" msgstr "Missbrauch melden" -#: templates/web/emptyhomes/index.html:37 -msgid "Report empty properties" +#: templates/web/default/report_created.html:1 +#: templates/web/default/report_created.html:3 +#: templates/web/seesomething/report_created.html:0 +#: templates/web/seesomething/report_created.html:8 +msgid "Report created" msgstr "" -#: perllib/FixMyStreet/App/Controller/Rss.pm:277 +#: perllib/FixMyStreet/App/Controller/Rss.pm:295 msgid "Report on %s" msgstr "" -#: templates/web/default/index.html:15 -#: templates/web/fixmystreet/around/postcode_form.html:9 +#: templates/web/default/index.html:14 templates/web/emptyhomes/index.html:5 +#: templates/web/fixmystreet/around/intro.html:1 +#: templates/web/stevenage/around/intro.html:1 +#: templates/web/zurich/around/intro.html:1 msgid "Report, view, or discuss local problems" msgstr "Melden sie Mängel an der Infrastruktur von Zürich" @@ -2448,9 +2917,9 @@ msgstr "" msgid "Reported %s, to %s" msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:520 +#: perllib/FixMyStreet/DB/Result/Problem.pm:559 #: templates/web/default/contact/index.html:45 -#: templates/web/fixmystreet/contact/index.html:46 +#: templates/web/fixmystreet/contact/index.html:58 msgid "Reported anonymously at %s" msgstr "Anonym gemeldet um" @@ -2460,154 +2929,190 @@ msgstr "Anonym gemeldet um" msgid "Reported before" msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:512 -msgid "Reported by %s anonymously at %s" -msgstr "Anonym gemeldet von %s um %s " - -#: perllib/FixMyStreet/DB/Result/Problem.pm:543 +#: perllib/FixMyStreet/DB/Result/Problem.pm:582 #: templates/web/default/contact/index.html:47 -#: templates/web/fixmystreet/contact/index.html:48 +#: 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:534 -msgid "Reported by %s by %s at %s" -msgstr "" - -#: perllib/FixMyStreet/DB/Result/Problem.pm:508 -msgid "Reported by %s in the %s category anonymously at %s" -msgstr "" - -#: perllib/FixMyStreet/DB/Result/Problem.pm:528 -msgid "Reported by %s in the %s category by %s at %s" +#: templates/web/zurich/report/_main.html:2 +msgid "Reported in the %s category" msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:516 +#: perllib/FixMyStreet/DB/Result/Problem.pm:555 msgid "Reported in the %s category anonymously at %s" msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:538 +#: 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: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 "Verfassen Sie eine Meldung" +#: 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: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 +msgid "Reports awaiting approval" +msgstr "" + #: templates/web/default/around/tabbed_lists.html:3 msgid "Reports on and around the map" msgstr "" -#: templates/web/default/admin/report_edit.html:35 +#: templates/web/zurich/admin/index-sdm.html:10 +msgid "Reports published" +msgstr "" + +#: templates/web/default/admin/report_edit.html:71 msgid "Resend report" msgstr "" -#: perllib/FixMyStreet/Geocode/OSM.pm:168 -msgid "" -"Road operator for this named road (derived from road reference number and " -"type): %s" +#: templates/web/default/js/translation_strings.html:28 +#: templates/web/oxfordshire/js/translation_strings.html:22 +msgid "Right place?" msgstr "" -#: perllib/FixMyStreet/Geocode/OSM.pm:165 -msgid "Road operator for this named road (from OpenStreetMap): %s" +#: perllib/FixMyStreet/Geocode/OSM.pm:173 +msgid "Road operator for this named road (derived from road reference number and type): %s" msgstr "" -#: templates/web/default/admin/council_edit.html:63 -msgid "Save changes" -msgstr "Änderungen speichern" +#: perllib/FixMyStreet/Geocode/OSM.pm:170 +msgid "Road operator for this named road (from OpenStreetMap): %s" +msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1041 -msgid "Search Abuse" +#: 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 "" -#: templates/web/default/admin/search_abuse.html:1 -msgid "Search Abuse Table" +#: 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 "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1037 -#: templates/web/default/admin/list_flagged.html:1 -#: templates/web/default/admin/search_reports.html:1 +#: templates/web/default/admin/body_edit.html:76 +msgid "Save changes" +msgstr "Änderungen speichern" + +#: templates/web/default/admin/reports.html:1 +#: templates/web/zurich/admin/reports.html:1 msgid "Search Reports" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1040 -#: templates/web/default/admin/search_users.html:1 +#: templates/web/default/admin/users.html:1 msgid "Search Users" msgstr "" -#: templates/web/default/admin/search_abuse.html:4 -#: templates/web/default/admin/search_reports.html:5 -#: templates/web/default/admin/search_users.html:5 +#: templates/web/zurich/header.html:77 +msgid "Search reports" +msgstr "" + +#: templates/web/default/admin/reports.html:5 +#: templates/web/default/admin/users.html:8 +#: templates/web/zurich/admin/reports.html:5 msgid "Search:" msgstr "Suchen:" +#: 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:71 +#: templates/web/zurich/admin/body-form.html:26 +msgid "Select an area" +msgstr "" + #: templates/web/default/alert/_list.html:8 #: templates/web/fixmystreet/alert/_list.html:10 -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." +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:626 +#: perllib/FixMyStreet/DB/Result/Problem.pm:664 msgid "Sent to %s %s later" msgstr "" -#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:71 msgid "Sent:" msgstr "Gesendet:" -#: templates/web/default/admin/report_edit.html:37 +#: templates/web/default/admin/report_edit.html:73 +#: templates/web/zurich/admin/stats.html:45 msgid "Service:" msgstr "" -#: templates/web/fixmystreet/report/display.html:29 +#: templates/web/fixmystreet/report/display.html:41 msgid "Share" msgstr "" -#: templates/web/emptyhomes/static/about.html:21 -msgid "Shelter Cymru" -msgstr "" - -#: templates/web/emptyhomes/static/about.html:23 -msgid "" -"Shelter Cymru is Wales’ people and homes charity and wants\n" -" everyone in Wales to have a decent home. We believe a home is a " -"fundamental\n" -" right and essential to the health and well-being of people and " -"communities.\n" -" We work for people in housing need. We have offices all over Wales and\n" -" prevent people from losing their homes by offering free, confidential " -"and\n" -" independent advice. When necessary we constructively challenge on behalf " -"of\n" -" people to ensure they are properly assisted and to improve practice and\n" -" learning. We believe that bringing empty homes back into use can make a\n" -" significant contribution to the supply of affordable homes in Wales." -msgstr "" - -#: templates/web/bromley/report/display.html:203 +#: templates/web/bromley/report/display.html:205 #: templates/web/bromley/report/new/fill_in_details_form.html:129 #: templates/web/bromley/report/new/fill_in_details_form.html:175 -#: templates/web/default/report/display.html:208 #: templates/web/default/report/new/fill_in_details_form.html:210 -#: templates/web/fixmystreet/report/display.html:207 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:128 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:196 +#: templates/web/default/report/update-form.html:157 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:129 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:197 +#: templates/web/fixmystreet/report/update-form.html:144 msgid "Show my name publicly" msgstr "" -#: templates/web/default/around/display_location.html:65 +#: templates/web/default/around/display_location.html:69 msgid "Show old" msgstr "" -#: templates/web/default/around/display_location.html:56 +#: templates/web/default/around/display_location.html:60 msgid "Show pins" msgstr "Zeige Stecknadeln" @@ -2617,8 +3122,13 @@ msgstr "Zeige Stecknadeln" #: templates/web/fixmystreet/auth/general.html:3 #: templates/web/fixmystreet/auth/general.html:42 #: templates/web/fixmystreet/auth/general.html:62 -#: templates/web/fixmystreet/header.html:51 -#: templates/web/zurich/header.html:51 +#: templates/web/fixmystreet/header.html:54 +#: templates/web/oxfordshire/header.html:115 +#: templates/web/seesomething/auth/general.html:3 +#: templates/web/seesomething/auth/general.html:39 +#: templates/web/stevenage/header.html:101 +#: templates/web/zurich/auth/general.html:18 +#: templates/web/zurich/auth/general.html:35 msgid "Sign in" msgstr "" @@ -2628,22 +3138,26 @@ msgstr "" #: templates/web/default/auth/general.html:1 #: templates/web/fixmystreet/auth/general.html:1 +#: templates/web/seesomething/auth/general.html:1 +#: templates/web/zurich/auth/general.html:1 msgid "Sign in or create an account" msgstr "" #: templates/web/bromley/auth/sign_out.html:1 #: templates/web/default/auth/sign_out.html:1 #: templates/web/default/header.html:30 -#: templates/web/emptyhomes/header.html:41 +#: templates/web/emptyhomes/header.html:46 #: templates/web/fiksgatami/header.html:22 #: templates/web/fiksgatami/nn/header.html:22 #: templates/web/lichfielddc/header.html:177 #: templates/web/reading/header.html:33 +#: templates/web/seesomething/auth/sign_out.html:1 +#: templates/web/zurich/auth/sign_out.html:1 msgid "Sign out" msgstr "" #: templates/web/default/header.html:29 -#: templates/web/emptyhomes/header.html:40 +#: templates/web/emptyhomes/header.html:45 #: templates/web/fiksgatami/header.html:21 #: templates/web/fiksgatami/nn/header.html:21 #: templates/web/lichfielddc/header.html:177 @@ -2657,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" @@ -2667,28 +3188,24 @@ msgstr "" msgid "Some text to localize" msgstr "" -#: templates/web/default/admin/council_list.html:42 -msgid "Some unconfirmeds" -msgstr "" - -#: perllib/FixMyStreet/Cobrand/UK.pm:89 -msgid "" -"Sorry, that appears to be a Crown dependency postcode, which we don't cover." +#: perllib/FixMyStreet/Cobrand/UK.pm:93 +msgid "Sorry, that appears to be a Crown dependency postcode, which we don't cover." msgstr "" #: templates/web/default/tokens/abuse.html:5 msgid "Sorry, there has been an error confirming your problem." msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:213 -#: perllib/FixMyStreet/Geocode.pm:27 perllib/FixMyStreet/Geocode/Bing.pm:51 -#: perllib/FixMyStreet/Geocode/Google.pm:69 -#: perllib/FixMyStreet/Geocode/OSM.pm:61 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:215 +#: perllib/FixMyStreet/Geocode.pm:28 perllib/FixMyStreet/Geocode/Bing.pm:58 +#: perllib/FixMyStreet/Geocode/Google.pm:74 +#: perllib/FixMyStreet/Geocode/OSM.pm:66 msgid "Sorry, we could not find that location." msgstr "" -#: perllib/FixMyStreet/Geocode/Bing.pm:46 -#: perllib/FixMyStreet/Geocode/Google.pm:64 +#: perllib/FixMyStreet/Geocode/Bing.pm:53 +#: perllib/FixMyStreet/Geocode/Google.pm:69 +#: perllib/FixMyStreet/Geocode/Zurich.pm:87 msgid "Sorry, we could not parse that location. Please try again." msgstr "" @@ -2698,49 +3215,63 @@ 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/list_flagged.html:18 -#: templates/web/default/admin/list_updates.html:6 -#: templates/web/default/admin/search_reports.html:21 -#: templates/web/fixmystreet/report/display.html:88 +#: 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:17 -#: templates/web/default/admin/update_edit.html:18 -#: templates/web/default/report/display.html:77 +#: 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:1043 +#: 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 "" -#: templates/web/default/report/updates.html:9 +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Status" +msgstr "" + +#: templates/web/default/report/updates.html:10 msgid "Still open, via questionnaire, %s" msgstr "" +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370 +msgid "Subcategory: %s" +msgstr "" + +#: templates/web/zurich/admin/index-dm.html:27 +msgid "Subdivision/Body" +msgstr "" + #: templates/web/bromley/report/new/fill_in_details_form.html:48 -#: templates/web/fixmystreet/contact/index.html:79 +#: templates/web/fixmystreet/contact/index.html:91 #: templates/web/fixmystreet/report/new/fill_in_details_form.html:60 msgid "Subject" msgstr "Titel" -#: templates/web/default/admin/report_edit.html:13 +#: 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 "Titel:" @@ -2751,28 +3282,47 @@ msgstr "Titel:" #: 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/fixmystreet/report/new/fill_in_details_form.html:141 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:166 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:211 +#: 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 "Abschicken" -#: templates/web/default/admin/report_edit.html:57 -#: templates/web/default/admin/update_edit.html:51 -#: templates/web/default/admin/user_edit.html:20 +#: 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 "" -#: templates/web/default/questionnaire/index.html:112 +#: templates/web/default/questionnaire/index.html:116 #: templates/web/fixmystreet/questionnaire/index.html:105 msgid "Submit questionnaire" msgstr "" +#: 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 "" + #: templates/web/bromley/report/display.html:44 #: templates/web/default/alert/updates.html:17 -#: templates/web/default/report/display.html:38 +#: templates/web/default/report/display.html:42 #: templates/web/fixmystreet/alert/updates.html:23 -#: templates/web/fixmystreet/report/display.html:52 +#: templates/web/fixmystreet/report/display.html:68 msgid "Subscribe" msgstr "" @@ -2786,8 +3336,13 @@ msgstr "" msgid "Subscribe to an alert based upon what baranagay you’re in:" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1035 +#: 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 "Zusammenfassung" @@ -2795,80 +3350,65 @@ msgstr "Zusammenfassung" #: templates/web/emptyhomes/reports/index.html:1 #: templates/web/fiksgatami/nn/reports/index.html:1 #: templates/web/fiksgatami/reports/index.html:1 +#: templates/web/fixmybarangay/reports/index.html:1 +#: templates/web/zurich/reports/index.html:0 +#: templates/web/zurich/reports/index.html:4 msgid "Summary reports" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1039 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1179 +msgid "Survey" +msgstr "" + #: templates/web/default/admin/questionnaire.html:1 msgid "Survey Results" msgstr "" -#: templates/web/default/admin/list_updates.html:14 +#: 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 "" -#: templates/web/default/admin/council_contacts.html:20 +#: templates/web/default/admin/body.html:18 msgid "Text only version" msgstr "" -#: templates/web/default/admin/update_edit.html:13 +#: templates/web/default/admin/update_edit.html:20 +#: templates/web/zurich/admin/update_edit.html:12 msgid "Text:" msgstr "" #: templates/web/default/tokens/confirm_update.html:7 #: templates/web/default/tokens/confirm_update.html:8 -#, fuzzy -msgid "" -"Thank you — you can <a href=\"%s\">view your updated problem</a> on " -"the site." +msgid "Thank you — you can <a href=\"%s\">view your updated problem</a> on the site." msgstr "" -"Danke &mdash; Sie können Ihre aktualisierte Meldung <a href=\"%s" -"\">auf der Webseite anschauen</a>" #: templates/web/emptyhomes/tokens/confirm_problem.html:6 #: templates/web/emptyhomes/tokens/confirm_problem.html:8 -msgid "" -"Thank you for reporting an empty property on ReportEmptyHomes.com. We have " -"emailed the lead officer for empty homes in the council responsible with " -"details, and asked them to do whatever they can to get the empty property " -"back into use as soon as possible." +msgid "Thank you for reporting an empty property on ReportEmptyHomes.com. We have emailed the lead officer for empty homes in the council responsible with details, and asked them to do whatever they can to get the empty property back into use as soon as possible." msgstr "" #: templates/web/emptyhomes/tokens/confirm_problem.html:30 #: templates/web/emptyhomes/tokens/confirm_problem.html:31 msgid "" "Thank you for reporting this empty property on ReportEmptyHomes.com.\n" -"At present the report cannot be sent through to the council for this area. " -"We\n" -"are working with councils to link them into the system so that as many " -"areas\n" +"At present the report cannot be sent through to the council for this area. We\n" +"are working with councils to link them into the system so that as many areas\n" "as possible will be covered." msgstr "" #: templates/web/default/tokens/error.html:7 -msgid "" -"Thank you for trying to confirm your update or problem. We seem to have an " -"error ourselves though, so <a href=\"%s\">please let us know what went on</" -"a> and we'll look into it." +msgid "Thank you for trying to confirm your update or problem. We seem to have an error ourselves though, so <a href=\"%s\">please let us know what went on</a> and we'll look into it." msgstr "" #: templates/web/emptyhomes/tokens/confirm_problem.html:24 #: templates/web/emptyhomes/tokens/confirm_problem.html:26 -msgid "" -"Thank you for using ReportEmptyHomes.com. Your action is already helping to " -"resolve the UK’s empty homes crisis." +msgid "Thank you for using ReportEmptyHomes.com. Your action is already helping to resolve the UK’s empty homes crisis." msgstr "" #: templates/web/fixmystreet/around/around_index.html:27 -msgid "" -"Thanks for uploading your photo. We now need to locate your problem, so " -"please enter a nearby street name or postcode in the box above :" -msgstr "" - -#: templates/web/default/around/around_index.html:28 -msgid "" -"Thanks for uploading your photo. We now need to locate your problem, so " -"please enter a nearby street name or postcode in the box below :" +msgid "Thanks for uploading your photo. We now need to locate your problem, so please enter a nearby street name or postcode in the box above :" msgstr "" #: templates/web/default/contact/submit.html:8 @@ -2876,123 +3416,110 @@ msgid "Thanks for your feedback. We'll get back to you as soon as we can!" msgstr "" #: templates/web/default/questionnaire/creator_fixed.html:9 -msgid "" -"Thanks, glad to hear it's been fixed! Could we just ask if you have ever " -"reported a problem to a council before?" +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:189 -msgid "" -"That image doesn't appear to have uploaded correctly (%s), please try again." +#: perllib/FixMyStreet/App/Controller/Photo.pm:190 +msgid "That image doesn't appear to have uploaded correctly (%s), please try again." msgstr "" -#: perllib/FixMyStreet/App/Controller/Council.pm:91 -msgid "" -"That location does not appear to be covered by a council; perhaps it is " -"offshore or outside the country. Please try again." +#: perllib/FixMyStreet/App/Controller/Council.pm:90 +msgid "That location does not appear to be covered by a council; perhaps it is offshore or outside the country. Please try again." msgstr "" -#: perllib/FixMyStreet/App/Controller/Location.pm:120 +#: perllib/FixMyStreet/App/Controller/Location.pm:123 msgid "That location does not appear to be in the UK; please try again." msgstr "" #: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:63 -#: perllib/FixMyStreet/Cobrand/UK.pm:82 +#: perllib/FixMyStreet/Cobrand/UK.pm:86 msgid "That postcode was not recognised, sorry." msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:616 +#: perllib/FixMyStreet/App/Controller/Admin.pm:704 msgid "That problem will now be resent." msgstr "" -#: perllib/FixMyStreet/App/Controller/Report.pm:98 -#, fuzzy -msgid "That report cannot be viewed on FixMyStreet." -msgstr "Diese Meldung wurde von Fix My Zürich entfernt." +#: perllib/FixMyStreet/App/Controller/Report.pm:117 +msgid "That report cannot be viewed on %s." +msgstr "" -#: perllib/FixMyStreet/App/Controller/Report.pm:92 +#: perllib/FixMyStreet/App/Controller/Report.pm:111 msgid "That report has been removed from FixMyStreet." msgstr "Diese Meldung wurde von Fix My Zürich entfernt." -#: templates/web/emptyhomes/static/about.html:7 -msgid "The Empty Homes Agency" +#: 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/emptyhomes/static/about.html:9 +#: templates/web/default/admin/body-form.html:119 +#: templates/web/default/admin/body-form.html:120 msgid "" -"The Empty Homes agency is an independent campaigning charity. We\n" -" are not part of government, and have no formal links with local " -"councils\n" -" although we work in cooperation with both. We exist to highlight the " -"waste\n" -" of empty property and work with others to devise and promote " -"sustainable\n" -" solutions to bring empty property back into use. We are based in London " -"but\n" -" work across England. We also work in partnership with other charities " -"across\n" -" the UK." -msgstr "" - -#: templates/web/default/open311/index.html:23 +"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 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." +"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/auth/token.html:21 -#: templates/web/default/email_sent.html:22 +#: templates/web/default/admin/body-form.html:90 +#: templates/web/default/admin/body-form.html:91 msgid "" -"The confirmation email <strong>may</strong> take a few minutes to arrive " -"— <em>please</em> be patient." +"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 — <em>please</em> be patient." msgstr "" #: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 #: templates/web/fixmystreet/report/new/fill_in_details_text.html:3 -#, fuzzy -msgid "" -"The council won’t be able to help unless you leave as much\n" -"detail as you can. Please describe the exact location of the problem (e.g. " -"on a\n" -"wall), what it is, how long it has been there, a description (and a photo " -"of\n" -"the problem if you have one), etc." -msgstr "" -"Bitte beschreiben sie Ihre Meldung weiter unten. Wir können den Mangel " -"nur beheben, wenn Sie soviel Details wie möglich angeben: Beschreiben " -"sie die exakte Lage (z.B. An der Wand Richtung Strasse), was genau der " -"Mangel ist, wie lange dieser schon da ist und laden sie wenn möglich " -"ein Photo des Mangels hoch." +msgid "The council won’t be able to help unless you leave as much detail as you can. Please describe the exact location of the problem (e.g. on a wall), what it is, how long it has been there, a description (and a photo of the problem if you have one), etc." +msgstr "" #: templates/web/fixmystreet/questionnaire/index.html:43 msgid "The details of your problem are available from the other tab above." msgstr "" #: templates/web/default/questionnaire/index.html:49 -msgid "" -"The details of your problem are available on the right hand side of this " -"page." +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:43 -#: perllib/FixMyStreet/App/Controller/Reports.pm:74 +#: perllib/FixMyStreet/App/Controller/Reports.pm:72 msgid "The error was: %s" msgstr "" -#: templates/web/default/open311/index.html:19 -msgid "" -"The following Open311 v2 attributes are returned for each request: " -"service_request_id, description, lat, long, media_url, status, " -"requested_datetime, updated_datetime, service_code and service_name." +#: templates/web/default/open311/index.html:88 +msgid "The following Open311 v2 attributes are returned for each request: service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code and service_name." msgstr "" -#: perllib/FixMyStreet/Geocode/OSM.pm:160 -msgid "" -"The following information about the nearest road might be inaccurate or " -"irrelevant, if the problem is close to several roads or close to a road " -"without a name registered in OpenStreetMap." +#: perllib/FixMyStreet/Geocode/OSM.pm:165 +msgid "The following information about the nearest road might be inaccurate or irrelevant, if the problem is close to several roads or close to a road without a name registered in OpenStreetMap." msgstr "" #: db/alert_types.pl:19 db/alert_types.pl:23 db/alert_types.pl:27 @@ -3009,8 +3536,7 @@ msgid "The latest problems for {{COUNCIL}} reported by users" msgstr "" #: db/alert_types.pl:39 -msgid "" -"The latest problems for {{COUNCIL}} within {{WARD}} ward reported by users" +msgid "The latest problems for {{COUNCIL}} within {{WARD}} ward reported by users" msgstr "" #: db/alert_types.pl:11 @@ -3034,14 +3560,17 @@ msgid "The latest reports for {{COUNCIL}} reported by users" msgstr "" #: db/alert_types_eha.pl:24 -msgid "" -"The latest reports for {{COUNCIL}} within {{WARD}} ward reported by users" +msgid "The latest reports for {{COUNCIL}} within {{WARD}} ward reported by users" msgstr "" #: db/alert_types_eha.pl:28 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" @@ -3063,117 +3592,138 @@ msgstr "" #: templates/web/default/report/new/councils_text_some.html:11 #: templates/web/default/report/new/fill_in_details_form.html:17 #: templates/web/fixmystreet/report/new/fill_in_details_form.html:12 -msgid "" -"The subject and details of the problem will be public, plus your name if you " -"give us permission." +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:271 -msgid "" -"The user could not locate the problem on a map, but to see the area around " -"the location they entered" +#: 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 "" -#: perllib/FixMyStreet/App/Controller/Reports.pm:71 +#: templates/web/default/admin/user-form.html:12 +#: templates/web/default/admin/user-form.html:13 msgid "" -"There was a problem showing the All Reports page. Please try again later." +"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 "" +#: perllib/FixMyStreet/App/Controller/Contact.pm:116 #: perllib/FixMyStreet/App/Controller/Dashboard.pm:59 msgid "There was a problem showing this page. Please try again later." msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:738 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:747 #: perllib/FixMyStreet/App/Controller/Report/Update.pm:134 #: templates/web/default/auth/general.html:23 #: templates/web/fixmystreet/auth/general.html:24 -msgid "" -"There was a problem with your email/password combination. If you cannot " -"remember your password, or do not have one, please fill in the ‘sign " -"in by email’ section of the form." +#: templates/web/seesomething/auth/general.html:24 +#: templates/web/zurich/auth/general.html:28 +msgid "There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the ‘sign in by email’ section of the form." msgstr "" #: perllib/FixMyStreet/App/Controller/Alert.pm:355 -msgid "" -"There was a problem with your email/password combination. Please try again." +msgid "There was a problem with your email/password combination. Please try again." msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/Update.pm:256 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:272 msgid "There was a problem with your update. Please try again." msgstr "" -#: perllib/FixMyStreet/App/Controller/Contact.pm:117 +#: perllib/FixMyStreet/App/Controller/Contact.pm:120 msgid "There were problems with your report. Please see below." msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/Update.pm:283 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:299 msgid "There were problems with your update. Please see below." msgstr "" -#: templates/web/default/open311/index.html:10 +#: templates/web/default/admin/body-form.html:108 +#: templates/web/default/admin/body-form.html:109 msgid "" -"This API implementation is work in progress and not yet stabilized. It will " -"change without warnings in the future." +"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 "" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:341 +#: 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 "" + +#: templates/web/default/admin/body.html:33 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." +"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 "" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:344 +#: templates/web/default/admin/body-form.html:52 +#: templates/web/default/admin/body-form.html:53 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." +"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/App/Controller/Report/New.pm:870 -#: perllib/FixMyStreet/Cobrand/UK.pm:54 +#: 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: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" msgstr "Diese Information wird benötigt" #: templates/web/default/debug_header.html:3 -msgid "" -"This is a developer site; things might break at any time, and the database " -"will be periodically deleted." +msgid "This is a developer site; things might break at any time, and the database will be periodically deleted." msgstr "" -#: templates/web/emptyhomes/reports/council.html:58 -msgid "This is a summary of all reports for one %s." +#: templates/web/fixmybarangay/reports/index.html:7 +msgid "This is a summary of all reports on this site; select a particular barangay to see the reports sent there." msgstr "" -#: templates/web/emptyhomes/reports/council.html:60 -msgid "This is a summary of all reports for this %s." +#: templates/web/emptyhomes/reports/index.html:4 +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 "" #: templates/web/default/reports/index.html:7 -#: templates/web/emptyhomes/reports/index.html:4 #: templates/web/fiksgatami/nn/reports/index.html:4 #: templates/web/fiksgatami/reports/index.html:4 -msgid "" -"This is a summary of all reports on this site; select a particular council " -"to see the reports sent there." +msgid "This is a summary of all reports on this site; select a particular council to see the reports sent there." +msgstr "" + +#: templates/web/default/auth/token.html:9 +msgid "This may be because the link is too old or already used, or the address was not copied correctly." msgstr "" #: templates/web/default/report/banner.html:15 msgid "This problem has been closed" msgstr "" -#: templates/web/bromley/report/display.html:96 +#: templates/web/bromley/report/display.html:98 #: templates/web/default/report/banner.html:12 -#: templates/web/default/report/display.html:95 -#: templates/web/emptyhomes/report/display.html:12 -#: templates/web/fixmystreet/report/display.html:106 +#: templates/web/default/report/update-form.html:48 +#: templates/web/emptyhomes/report/banner.html:3 +#: templates/web/fixmystreet/report/update-form.html:46 msgid "This problem has been fixed" msgstr "Dieser Mangel wurde behoben" -#: templates/web/bromley/report/display.html:90 -#: templates/web/default/report/display.html:90 -#: templates/web/fixmystreet/report/display.html:100 +#: templates/web/bromley/report/display.html:92 +#: templates/web/default/report/update-form.html:43 +#: templates/web/fixmystreet/report/update-form.html:40 msgid "This problem has not been fixed" msgstr "Dieser Mangel wurde nicht behoben" @@ -3185,6 +3735,12 @@ 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:108 +#: perllib/FixMyStreet/Cobrand/Zurich.pm:109 +#: templates/web/zurich/report/_main.html:14 +msgid "This report is awaiting moderation." +msgstr "" + #: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:86 msgid "This report is currently marked as closed." msgstr "" @@ -3197,58 +3753,70 @@ msgstr "" msgid "This report is currently marked as open." msgstr "" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:264 -msgid "" -"This web page also contains a photo of the problem, provided by the user." +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315 +msgid "This report was submitted anonymously" +msgstr "" + +#: 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:1038 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1178 #: templates/web/default/admin/timeline.html:1 msgid "Timeline" msgstr "" -#: templates/web/default/admin/list_flagged.html:10 -#: templates/web/default/admin/search_reports.html:13 +#: templates/web/default/admin/flagged.html:15 +#: templates/web/default/admin/reports.html:12 msgid "Title" msgstr "Titel" #: templates/web/default/around/_report_banner.html:2 -msgid "" -"To <strong>report a problem</strong>, click on the map at the correct " -"location." -msgstr "" - -#: templates/web/emptyhomes/around/display_location.html:35 -msgid "" -"To <strong>report a problem</strong>, simply click on the map at the correct " -"location." +msgid "To <strong>report a problem</strong>, click on the map at the correct location." msgstr "" #: templates/web/default/alert/index.html:27 -#, fuzzy -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" +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:270 +#: 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 +#: templates/web/zurich/admin/stats.html:30 msgid "Total" msgstr "Total" -#: perllib/FixMyStreet/App/Controller/Reports.pm:42 -msgid "Unable to look up areas in MaPit. Please try again later." +#: templates/web/seesomething/report/new/fill_in_details_form.html:24 +msgid "Transport Category" msgstr "" -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 -#: templates/web/default/admin/update_edit.html:19 +#: templates/web/default/js/translation_strings.html:29 +#: templates/web/oxfordshire/js/translation_strings.html:23 +msgid "Try again" +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 "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:48 +#: templates/web/zurich/admin/report_edit.html:61 +#: templates/web/zurich/admin/update_edit.html:18 msgid "Unconfirmed" msgstr "Unbestätigt" @@ -3256,34 +3824,44 @@ msgstr "Unbestätigt" msgid "Unknown" msgstr "Unbekannt" -#: perllib/FixMyStreet/App/Controller/Rss.pm:164 +#: perllib/FixMyStreet/App/Controller/Rss.pm:173 msgid "Unknown alert type" msgstr "" -#: perllib/FixMyStreet/App/Controller/Report.pm:87 +#: templates/web/default/js/translation_strings.html:39 +#: templates/web/oxfordshire/js/translation_strings.html:33 +msgid "Unknown error" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report.pm:106 msgid "Unknown problem ID" msgstr "" #: templates/web/bromley/report/display.html:66 -#: templates/web/fixmystreet/report/display.html:81 +#: templates/web/fixmystreet/report/update-form.html:19 msgid "Update" msgstr "Beschreibung" -#: templates/web/default/admin/timeline.html:35 +#: templates/web/default/admin/timeline.html:33 msgid "Update %s created for problem %d; by %s" msgstr "" #: templates/web/default/contact/index.html:21 -#: templates/web/fixmystreet/contact/index.html:22 +#: templates/web/fixmystreet/contact/index.html:34 msgid "Update below added anonymously at %s" msgstr "" #: templates/web/default/contact/index.html:23 -#: templates/web/fixmystreet/contact/index.html:24 +#: templates/web/fixmystreet/contact/index.html:36 msgid "Update below added by %s at %s" msgstr "" -#: templates/web/default/admin/index.html:30 +#: 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:38 msgid "Update breakdown by state" msgstr "" @@ -3291,38 +3869,54 @@ msgstr "" msgid "Update by {{name}}" msgstr "" -#: templates/web/default/admin/update_edit.html:33 +#: templates/web/default/admin/update_edit.html:42 +#: templates/web/zurich/admin/update_edit.html:25 msgid "Update changed problem state to %s" msgstr "" -#: templates/web/default/admin/update_edit.html:35 +#: templates/web/default/admin/update_edit.html:44 msgid "Update marked problem as fixed" msgstr "" -#: templates/web/default/admin/update_edit.html:37 +#: templates/web/default/admin/update_edit.html:46 msgid "Update reopened problem" msgstr "" -#: templates/web/default/admin/council_contacts.html:68 +#: templates/web/default/admin/body.html:83 msgid "Update statuses" msgstr "" -#: templates/web/default/report/display.html:71 +#: templates/web/default/report/update-form.html:22 msgid "Update:" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:708 -#: perllib/FixMyStreet/App/Controller/Admin.pm:823 -#: perllib/FixMyStreet/App/Controller/Admin.pm:903 +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Updated" +msgstr "" + +#: 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:1 +#: 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:131 +msgid "Updates are limited to 2000 characters in length. Please shorten your update" +msgstr "" + #: db/alert_types.pl:5 db/alert_types.pl:6 msgid "Updates on {{title}}" msgstr "" @@ -3330,35 +3924,54 @@ msgstr "" #: templates/web/bromley/report/display.html:0 #: templates/web/bromley/report/display.html:8 #: templates/web/default/report/display.html:0 -#: templates/web/default/report/display.html:7 +#: templates/web/default/report/display.html:5 #: templates/web/fixmystreet/report/display.html:0 #: templates/web/fixmystreet/report/display.html:8 msgid "Updates to this problem, FixMyStreet" msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1196 +#: 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:1168 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1314 msgid "User flagged" msgstr "" -#: templates/web/default/admin/list_flagged.html:30 +#: 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:315 -#: perllib/FixMyStreet/App/Controller/Admin.pm:345 +#: perllib/FixMyStreet/App/Controller/Admin.pm:371 +#: perllib/FixMyStreet/App/Controller/Admin.pm:401 msgid "Values updated" msgstr "" -#: templates/web/default/admin/report_edit.html:12 -#: templates/web/default/admin/update_edit.html:12 +#: templates/web/default/admin/report_edit.html:18 +#: templates/web/default/admin/update_edit.html:18 +#: templates/web/zurich/admin/report_edit-sdm.html:24 +#: templates/web/zurich/admin/report_edit.html:23 +#: templates/web/zurich/admin/update_edit.html:10 msgid "View report on site" msgstr "" -#: templates/web/default/reports/council.html:18 +#: templates/web/default/reports/body.html:14 msgid "View reports by ward" msgstr "" @@ -3367,258 +3980,243 @@ msgid "View your report" msgstr "" #: templates/web/default/around/display_location.html:0 -#: templates/web/default/around/display_location.html:33 -#: templates/web/emptyhomes/around/display_location.html:0 -#: templates/web/emptyhomes/around/display_location.html:16 +#: templates/web/default/around/display_location.html:34 +#: templates/web/seesomething/around/display_location.html:0 +#: templates/web/seesomething/around/display_location.html:16 msgid "Viewing a location" msgstr "" #: templates/web/bromley/report/display.html:0 #: templates/web/default/report/display.html:0 -#: templates/web/emptyhomes/report/display.html:1 -#: templates/web/emptyhomes/report/display.html:2 #: templates/web/fixmystreet/report/display.html:0 msgid "Viewing a problem" msgstr "" -#: templates/web/default/reports/council.html:20 -#: templates/web/emptyhomes/reports/council.html:18 +#: templates/web/default/reports/body.html:16 msgid "Wards of this council" msgstr "" #: templates/web/default/alert/choose.html:6 -#: templates/web/default/around/around_index.html:17 +#: templates/web/default/around/around_index.html:13 #: templates/web/fixmystreet/around/around_index.html:16 -msgid "" -"We found more than one match for that location. We show up to ten matches, " -"please try a different search if yours is not here." +#: templates/web/seesomething/around/around_index.html:13 +msgid "We found more than one match for that location. We show up to ten matches, please try a different search if yours is not here." msgstr "" -#: templates/web/default/auth/token.html:19 +#: templates/web/default/auth/token.html:8 +msgid "We have not been able to confirm your account - sorry." +msgstr "" + +#: templates/web/default/auth/token.html:16 msgid "We have sent you an email containing a link to confirm your account." msgstr "" #: templates/web/emptyhomes/tokens/confirm_problem.html:18 #: templates/web/emptyhomes/tokens/confirm_problem.html:20 -msgid "" -"We may contact you periodically to ask if anything has changed with the " -"property you reported." +msgid "We may contact you periodically to ask if anything has changed with the property you reported." msgstr "" -#: templates/web/bromley/report/display.html:141 -#: templates/web/fixmystreet/report/display.html:175 +#: templates/web/bromley/report/display.html:143 +#: templates/web/fixmystreet/report/update-form.html:115 msgid "We never show your email" msgstr "Ihre eMail wird nie angezeigt" #: templates/web/bromley/report/new/fill_in_details_form.html:133 #: templates/web/bromley/report/new/fill_in_details_form.html:179 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:133 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:200 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:134 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:201 +#: templates/web/zurich/report/new/fill_in_details_form.html:96 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:351 -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." +#: 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 "" -#: templates/web/default/index.html:34 templates/web/emptyhomes/index.html:59 -#: templates/web/fixmystreet/index.html:50 +#: templates/web/default/index-steps.html:31 msgid "We send it to the council on your behalf" msgstr "" #: templates/web/bromley/report/new/fill_in_details_form.html:217 #: templates/web/default/report/new/notes.html:5 #: templates/web/fixmybarangay/report/new/notes.html:5 -msgid "" -"We will only use your personal information in accordance with our <a href=\"/" -"faq#privacy\">privacy policy.</a>" +msgid "We will only use your personal information in accordance with our <a href=\"/faq#privacy\">privacy policy.</a>" msgstr "" -"Wir verwenden Ihre persönlichen Daten nur entsprechend unserer <a href=" -"\"/faq#privacy\">Datenschutzrichtlinien.</a>" #: templates/web/fixmystreet/report/new/notes.html:4 -#, fuzzy -msgid "" -"We will only use your personal information in accordance with our <a href=\"/" -"privacy\">privacy policy.</a>" +#: templates/web/oxfordshire/report/new/notes.html:4 +msgid "We will only use your personal information in accordance with our <a href=\"/privacy\">privacy policy.</a>" msgstr "" -"Wir verwenden Ihre persönlichen Daten nur entsprechend unserer <a href=" -"\"/faq#privacy\">Datenschutzrichtlinien.</a>" #: templates/web/emptyhomes/contact/blurb.html:2 -msgid "" -"We’d love to hear what you think about this website. Just fill in the " -"form. Please don’t contact us about individual empty homes; use the " -"box accessed from <a href=\"/\">the front page</a>." +msgid "We’d love to hear what you think about this website. Just fill in the form. Please don’t contact us about individual empty homes; use the box accessed from <a href=\"/\">the front page</a>." msgstr "" #: templates/web/default/contact/blurb.html:8 -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>:" +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/council_contacts.html:45 -#: templates/web/default/admin/council_edit.html:69 +#: 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 "Wann editiert" -#: templates/web/default/admin/list_flagged.html:19 -#: templates/web/default/admin/search_reports.html:22 +#: templates/web/default/admin/problem_row.html:35 msgid "When sent" msgstr "Wann gesendet" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:613 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:621 msgid "Whole block of empty flats" msgstr "" -#: templates/web/default/open311/index.html:25 -msgid "" -"With request searches, it is also possible to search for agency_responsible " -"to limit the requests to those sent to a single administration. The search " -"term is the administration ID provided by <a href=\"%s\">MaPit</a>." +#: templates/web/default/open311/index.html:94 +msgid "With request searches, it is also possible to search for agency_responsible to limit the requests to those sent to a single administration. The search term is the administration ID provided by <a href=\"%s\">MaPit</a>." msgstr "" -#: templates/web/fixmystreet/footer.html:22 -msgid "" -"Would you like better integration with FixMyStreet? <a href=\"http://www." -"mysociety.org/for-councils/fixmystreet/\">Find out about FixMyStreet for " -"councils</a>." +#: templates/web/fixmystreet/footer.html:21 +#: templates/web/stevenage/footer.html:22 +msgid "Would you like better integration with FixMyStreet? <a href=\"http://www.mysociety.org/for-councils/fixmystreet/\">Find out about FixMyStreet for councils</a>." msgstr "" -#: templates/web/fixmystreet/footer.html:18 -msgid "" -"Would you like to contribute to FixMyStreet? Our code is open source and <a " -"href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>." +#: templates/web/fixmystreet/footer.html:17 +#: templates/web/stevenage/footer.html:18 +msgid "Would you like to contribute to FixMyStreet? Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>." msgstr "" -#: templates/web/default/questionnaire/index.html:102 +#: templates/web/default/questionnaire/index.html:106 #: templates/web/fixmystreet/questionnaire/index.html:96 -msgid "" -"Would you like to receive another questionnaire in 4 weeks, reminding you to " -"check the status?" +msgid "Would you like to receive another questionnaire in 4 weeks, reminding you to check the status?" msgstr "" #: templates/web/default/report/new/notes.html:8 #: templates/web/fixmybarangay/report/new/notes.html:8 -#: templates/web/fixmystreet/report/new/notes.html:7 -msgid "" -"Writing your message entirely in block capitals makes it hard to read, as " -"does a lack of punctuation." -msgstr "" -"Meldungen gänzlich in Grossbuchstaben zu schreiben macht diese " -"unleserlich. Ebenso wenn keine Satzzeichen verwendet werden." +#: templates/web/fixmystreet/report/new/notes.html:8 +#: templates/web/oxfordshire/report/new/notes.html:7 +msgid "Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation." +msgstr "Meldungen gänzlich in Grossbuchstaben zu schreiben macht diese unleserlich. Ebenso wenn keine Satzzeichen verwendet werden." #: templates/web/default/admin/stats.html:10 msgid "Year" msgstr "Jahr" -#: templates/web/default/admin/council_contacts.html:52 -#: templates/web/default/admin/council_contacts.html:53 -#: templates/web/default/admin/council_contacts.html:54 -#: templates/web/default/admin/council_edit.html:5 -#: templates/web/default/admin/list_updates.html:30 -#: templates/web/default/admin/list_updates.html:31 +#: 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/problem_row.html:19 -#: templates/web/default/admin/report_edit.html:27 -#: templates/web/default/admin/report_edit.html:41 -#: templates/web/default/admin/search_users.html:23 -#: templates/web/default/admin/update_edit.html:15 +#: 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:105 +#: 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 "Ja" -#: templates/web/bromley/report/display.html:155 +#: templates/web/bromley/report/display.html:157 #: templates/web/bromley/report/new/fill_in_details_form.html:198 -#: templates/web/fixmystreet/report/display.html:149 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:160 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:161 +#: templates/web/fixmystreet/report/update-form.html:89 msgid "Yes I have a password" msgstr "" #: templates/web/default/contact/index.html:37 -#: templates/web/fixmystreet/contact/index.html:38 -msgid "" -"You are reporting the following problem report for being abusive, containing " -"personal information, or similar:" +#: templates/web/fixmystreet/contact/index.html:50 +msgid "You are reporting the following problem report for being abusive, containing personal information, or similar:" msgstr "" #: templates/web/default/contact/index.html:15 -#: templates/web/fixmystreet/contact/index.html:16 -msgid "" -"You are reporting the following update for being abusive, containing " -"personal information, or similar:" +#: templates/web/fixmystreet/contact/index.html:28 +msgid "You are reporting the following update for being abusive, containing personal information, or similar:" msgstr "" -#: templates/web/emptyhomes/reports/council.html:64 -msgid "" -"You can <a href=\"%s\">view all reports for the council</a> or <a href=\"/" -"reports\">show all councils</a>." +#: templates/web/default/tokens/confirm_problem.html:19 +#: templates/web/default/tokens/confirm_problem.html:21 +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:8 +msgid "You can <a href=\"%s%s\">view the problem on this site</a>." msgstr "" -#: templates/web/emptyhomes/reports/council.html:66 -msgid "You can <a href=\"/reports\">show all councils</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/report/new/councils_text_none.html:14 -#: templates/web/default/report/new/councils_text_none.html:16 +#: 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>." +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/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 "" #: perllib/FixMyStreet/App/Controller/Questionnaire.pm:38 -msgid "" -"You have already answered this questionnaire. If you have a question, please " -"<a href='%s'>get in touch</a>, or <a href='%s'>view your problem</a>.\n" +msgid "You have already answered this questionnaire. If you have a question, please <a href='%s'>get in touch</a>, or <a href='%s'>view your problem</a>.\n" msgstr "" #: templates/web/bromley/report/new/fill_in_details_form.html:97 -#: templates/web/default/questionnaire/index.html:92 +#: templates/web/default/questionnaire/index.html:96 #: templates/web/default/report/new/fill_in_details_form.html:93 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:90 #: templates/web/fixmystreet/questionnaire/index.html:87 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:103 -msgid "" -"You have already attached a photo to this report, attaching another one will " -"replace it." +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:99 +#: templates/web/seesomething/report/new/fill_in_details_form.html:59 +#: templates/web/zurich/report/new/fill_in_details_form.html:75 +msgid "You have already attached a photo to this report, attaching another one will replace it." msgstr "" -#: templates/web/bromley/report/display.html:106 -#: templates/web/default/report/display.html:106 -#: templates/web/fixmystreet/report/display.html:116 -msgid "" -"You have already attached a photo to this update, attaching another one will " -"replace it." +#: templates/web/bromley/report/display.html:108 +#: templates/web/default/report/update-form.html:59 +#: templates/web/fixmystreet/report/update-form.html:56 +msgid "You have already attached a photo to this update, attaching another one will replace it." msgstr "" #: templates/web/default/auth/sign_out.html:3 +#: templates/web/seesomething/auth/sign_out.html:3 +#: templates/web/zurich/auth/sign_out.html:3 msgid "You have been signed out" msgstr "" #: templates/web/bromley/report/new/fill_in_details_form.html:25 #: templates/web/default/report/new/fill_in_details_form.html:7 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:7 #: templates/web/fixmystreet/report/new/fill_in_details_form.html:28 -msgid "" -"You have located the problem at the point marked with a green pin on the " -"map. If this is not the correct location, simply click on the map again. " -msgstr "" -"Der grüne Pin auf der Karte repräsentiert ihre Meldung. Falls " -"dieser Ort nicht der Richtige ist, klicken Sie einfach nochmals am richtigen " -"Ort auf die Karte." +#: templates/web/zurich/report/new/fill_in_details_form.html:13 +msgid "You have located the problem at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. " +msgstr "Der gr¨ne Pin auf der Karte repräsentiert ihre Meldung. Falls dieser Ort nicht der Richtige ist, klicken Sie einfach nochmals am richtigen Ort auf die Karte." #: templates/web/default/tokens/confirm_alert.html:7 msgid "You have successfully confirmed your alert." msgstr "" +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:6 +msgid "You have successfully confirmed your email address." +msgstr "" + #: templates/web/default/tokens/confirm_problem.html:14 #: templates/web/default/tokens/confirm_problem.html:15 msgid "You have successfully confirmed your problem" @@ -3626,9 +4224,7 @@ msgstr "Sie haben Ihre Meldung erfolgreich bestätigt" #: templates/web/default/tokens/confirm_update.html:11 #: templates/web/default/tokens/confirm_update.html:12 -msgid "" -"You have successfully confirmed your update and you can now <a href=\"%s" -"\">view it on the site</a>." +msgid "You have successfully confirmed your update and you can now <a href=\"%s\">view it on the site</a>." msgstr "" #: templates/web/default/tokens/confirm_alert.html:11 @@ -3639,20 +4235,27 @@ msgstr "" msgid "You have successfully deleted your alert." msgstr "" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:745 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:754 #: perllib/FixMyStreet/App/Controller/Report/Update.pm:140 -msgid "" -"You have successfully signed in; please check and confirm your details are " -"accurate:" +msgid "You have successfully signed in; please check and confirm your details are accurate:" +msgstr "" + +#: templates/web/default/email_sent.html:13 +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/email_sent.html:26 +#: templates/web/default/admin/bodies.html:9 msgid "" -"You must now click the link in the email we've just sent you — if you " -"do not, %s." +"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:35 +#: templates/web/default/admin/report_edit.html:71 msgid "You really want to resend?" msgstr "" @@ -3669,16 +4272,25 @@ msgstr "" #: templates/web/fixmystreet/alert/_list.html:89 #: templates/web/fixmystreet/alert/updates.html:19 #: templates/web/fixmystreet/alert/updates.html:22 -#: templates/web/fixmystreet/contact/index.html:72 -#: templates/web/fixmystreet/report/display.html:49 -#: templates/web/fixmystreet/report/display.html:51 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:146 +#: templates/web/fixmystreet/contact/index.html:84 +#: templates/web/fixmystreet/report/display.html:65 +#: templates/web/fixmystreet/report/display.html:67 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:115 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:147 +#: templates/web/zurich/report/new/fill_in_details_form.html:88 msgid "Your email" msgstr "Ihre eMail" -#: templates/web/bromley/report/display.html:130 +#: templates/web/seesomething/report/new/fill_in_details_form.html:81 +msgid "Your email (optional)" +msgstr "" + +#: templates/web/bromley/report/display.html:132 #: templates/web/fixmystreet/auth/general.html:26 -#: templates/web/fixmystreet/report/display.html:140 +#: 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 "Ihre eMail-Adresse" @@ -3687,55 +4299,55 @@ msgid "Your email address:" msgstr "Ihre eMail-Adresse:" #: templates/web/default/alert/_list.html:92 -#: templates/web/default/report/display.html:128 #: templates/web/default/report/new/fill_in_details_form.html:124 +#: templates/web/default/report/update-form.html:81 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:133 #: templates/web/fixmybarangay/alert/_list.html:37 msgid "Your email:" msgstr "Ihre eMail:" -#: templates/web/bromley/report/display.html:193 +#: templates/web/bromley/report/display.html:195 #: templates/web/bromley/report/new/fill_in_details_form.html:117 #: templates/web/bromley/report/new/fill_in_details_form.html:164 -#, fuzzy msgid "Your first name" -msgstr "Ihr Name" +msgstr "" #: templates/web/fixmystreet/report/updates-sidebar-notes.html:5 -#, fuzzy -msgid "" -"Your information will only be used in accordance with our <a href=\"/privacy" -"\">privacy policy</a>" +msgid "Your information will only be used in accordance with our <a href=\"/privacy\">privacy policy</a>" msgstr "" -"Wir verwenden Ihre persönlichen Daten nur entsprechend unserer <a href=" -"\"/faq#privacy\">Datenschutzrichtlinien.</a>" -#: templates/web/bromley/report/display.html:199 +#: templates/web/bromley/report/display.html:201 #: templates/web/bromley/report/new/fill_in_details_form.html:123 #: templates/web/bromley/report/new/fill_in_details_form.html:170 -#, fuzzy msgid "Your last name" -msgstr "Ihr Name" +msgstr "" #: templates/web/fixmystreet/auth/general.html:57 -#: templates/web/fixmystreet/contact/index.html:65 -#: templates/web/fixmystreet/report/display.html:203 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:123 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:191 +#: 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 "Ihr Name" #: templates/web/default/auth/general.html:59 #: templates/web/default/contact/index.html:68 -#: templates/web/default/report/display.html:202 #: templates/web/default/report/new/fill_in_details_form.html:203 +#: templates/web/default/report/update-form.html:151 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:124 msgid "Your name:" msgstr "Ihr Name:" -#: templates/web/bromley/report/display.html:160 +#: templates/web/bromley/report/display.html:162 #: templates/web/bromley/report/new/fill_in_details_form.html:203 #: templates/web/fixmystreet/auth/general.html:41 -#: templates/web/fixmystreet/report/display.html:154 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:165 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:166 +#: templates/web/fixmystreet/report/update-form.html:94 +#: templates/web/seesomething/auth/general.html:30 +#: templates/web/zurich/auth/general.html:34 msgid "Your password" msgstr "Ihr Passwort" @@ -3745,8 +4357,10 @@ msgstr "Ihr Passwort wurde geändert" #: 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:138 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:205 +#: 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 "Ihre Telefonnummer" @@ -3754,12 +4368,19 @@ msgstr "Ihre Telefonnummer" msgid "Your report" msgstr "Ihre Meldung" +#: templates/web/default/report_created.html:6 +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:47 -#: templates/web/reading/footer.html:7 +#: 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 "Ihre Meldungen" @@ -3768,51 +4389,96 @@ msgid "Your updates" msgstr "" #: templates/web/default/contact/index.html:76 -#, fuzzy msgid "Your email:" -msgstr "Ihre eMail:" +msgstr "" -#: templates/web/default/admin/timeline.html:6 +#: templates/web/default/admin/timeline.html:4 msgid "by %s" msgstr "" -#: templates/web/default/reports/council.html:12 -#: templates/web/default/reports/council.html:13 -#: templates/web/emptyhomes/reports/council.html:6 -#: templates/web/emptyhomes/reports/council.html:7 +#: templates/web/default/reports/body.html:6 +#: templates/web/default/reports/body.html:7 msgid "council" msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:611 +#: perllib/FixMyStreet/DB/Result/Problem.pm:649 msgid "council ref: %s" msgstr "" -#: templates/web/default/admin/report_edit.html:15 +#: 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 "hat Karte nicht verwendet" #: templates/web/default/alert/index.html:33 -#: templates/web/fixmystreet/around/postcode_form.html:23 +#: templates/web/fixmystreet/around/postcode_form.html:20 +#: templates/web/seesomething/around/postcode_form.html:9 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 "" -#: perllib/Utils.pm:295 +#: 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 "" + +#: perllib/Utils.pm:263 msgid "less than a minute" msgstr "weniger als einer Minute" -#: templates/web/default/report/updates.html:27 -msgid "marked as %s" +#: templates/web/default/report/updates.html:57 +msgid "marked as a duplicate report" +msgstr "" + +#: templates/web/default/report/updates.html:47 +msgid "marked as action scheduled" +msgstr "" + +#: templates/web/default/report/updates.html:59 +msgid "marked as an internal referral" msgstr "" -#: templates/web/default/report/updates.html:25 +#: templates/web/default/report/updates.html:49 +msgid "marked as closed" +msgstr "" + +#: templates/web/default/report/updates.html:28 +#: templates/web/default/report/updates.html:51 msgid "marked as fixed" msgstr "als gelöst markiert" -#: perllib/FixMyStreet/App/Controller/Admin.pm:113 +#: templates/web/default/report/updates.html:45 +msgid "marked as in progress" +msgstr "" + +#: templates/web/default/report/updates.html:41 +msgid "marked as investigating" +msgstr "" + +#: templates/web/default/report/updates.html:55 +msgid "marked as not the council's responsibility" +msgstr "" + +#: templates/web/default/report/updates.html:43 +msgid "marked as planned" +msgstr "" + +#: templates/web/default/report/updates.html:53 +msgid "marked as unable to fix" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:130 #: templates/web/default/admin/questionnaire.html:15 #: templates/web/default/admin/questionnaire.html:16 msgid "n/a" @@ -3824,23 +4490,42 @@ msgstr "" msgid "or" msgstr "oder" -#: templates/web/default/admin/report_edit.html:15 -msgid "originally entered" +#: 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:16 +#: 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: “%s”" +msgstr "" + +#: templates/web/default/admin/report_edit.html:30 msgid "other areas:" msgstr "" -#: templates/web/default/report/updates.html:26 +#: templates/web/default/report/updates.html:29 +#: templates/web/default/report/updates.html:39 msgid "reopened" msgstr "" #: templates/web/barnet/header.html:71 templates/web/bromley/header.html:100 #: templates/web/bromley/header.html:65 #: templates/web/fixmybarangay/header.html:67 -#: templates/web/fixmystreet/header.html:48 -#: templates/web/zurich/header.html:48 +#: templates/web/fixmystreet/header.html:51 +#: templates/web/oxfordshire/header.html:112 +#: templates/web/oxfordshire/header.html:48 +#: templates/web/stevenage/header.html:98 templates/web/zurich/footer.html:12 msgid "sign out" msgstr "ausloggen" @@ -3848,72 +4533,45 @@ msgstr "ausloggen" #: templates/web/bromley/report/new/fill_in_details_form.html:7 #: templates/web/default/report/new/fill_in_details_form.html:11 #: templates/web/default/report/new/fill_in_details_form.html:14 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:14 #: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 #: templates/web/fixmystreet/report/new/fill_in_details_form.html:9 msgid "the local council" msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:549 +#: templates/web/default/report/_main.html:6 +#: templates/web/zurich/report/_main.html:5 msgid "there is no pin shown as the user did not use the map" msgstr "" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:332 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362 msgid "this type of local problem" msgstr "" -#: perllib/Utils.pm:269 +#: perllib/Utils.pm:235 msgid "today" msgstr "heute" -#: templates/web/default/admin/report_edit.html:15 +#: 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 "" -#: templates/web/default/admin/update_edit.html:26 +#: templates/web/default/admin/update_edit.html:35 msgid "user is from same council as problem - %d" msgstr "" -#: templates/web/default/admin/update_edit.html:29 +#: templates/web/default/admin/update_edit.html:38 msgid "user is problem owner" msgstr "" -#: templates/web/default/reports/council.html:0 -#: templates/web/default/reports/council.html:9 -#: templates/web/emptyhomes/reports/council.html:0 -#: templates/web/emptyhomes/reports/council.html:3 +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:3 msgid "ward" msgstr "" -#: templates/web/default/email_sent.html:15 -#: templates/web/default/email_sent.html:3 -msgid "we'll hang on to your alert while you're checking your email." -msgstr "" - -#: templates/web/default/email_sent.html:3 -#: templates/web/default/email_sent.html:7 -msgid "we'll hang on to your problem report while you're checking your email." -msgstr "" - -#: templates/web/default/email_sent.html:11 -#: templates/web/default/email_sent.html:3 -msgid "we'll hang on to your update while you're checking your email." -msgstr "" - -#: templates/web/default/email_sent.html:14 -#: templates/web/default/email_sent.html:3 -msgid "your alert will not be activated" -msgstr "" - -#: templates/web/default/email_sent.html:3 -#: templates/web/default/email_sent.html:6 -msgid "your problem will not be posted" -msgstr "" - -#: templates/web/default/email_sent.html:10 -#: templates/web/default/email_sent.html:3 -msgid "your update will not be posted" -msgstr "" - #: templates/web/default/front/stats.html:17 #, perl-format msgid "<big>%s</big> report recently" @@ -3921,19 +4579,26 @@ msgid_plural "<big>%s</big> reports recently" msgstr[0] "" msgstr[1] "" -#: perllib/Utils.pm:314 +#: perllib/Utils.pm:282 #, perl-format msgid "%d hour" msgid_plural "%d hours" -msgstr[0] "%d Stunde" -msgstr[1] "%d Stunden" +msgstr[0] "" +msgstr[1] "" + +#: templates/web/default/report/_support.html:6 +#, perl-format +msgid "%d supporter" +msgid_plural "%d supporters" +msgstr[0] "" +msgstr[1] "" -#: perllib/Utils.pm:316 +#: perllib/Utils.pm:284 #, perl-format msgid "%d minute" msgid_plural "%d minutes" -msgstr[0] "%d Minute" -msgstr[1] "%d Minuten" +msgstr[0] "" +msgstr[1] "" #: templates/web/default/front/stats.html:29 #, perl-format @@ -3942,19 +4607,19 @@ msgid_plural "<big>%s</big> updates on reports" msgstr[0] "<big>%s</big> Meldung bearbeitet" msgstr[1] "<big>%s</big> Meldungen bearbeitet" -#: templates/web/default/report/new/councils_text_none.html:5 +#: templates/web/emptyhomes/report/new/councils_text_none.html:3 #, perl-format 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." +msgid_plural "We do not yet have details for the councils that cover this location." msgstr[0] "" +msgstr[1] "" -#: perllib/Utils.pm:310 +#: perllib/Utils.pm:278 #, perl-format msgid "%d week" msgid_plural "%d weeks" -msgstr[0] "%d Woche" -msgstr[1] "%d Wochen" +msgstr[0] "" +msgstr[1] "" #: templates/web/default/front/stats.html:12 #, perl-format @@ -3972,26 +4637,18 @@ msgstr[1] "<big>%s</big> im letzten Monat gehoben" #: templates/web/default/report/new/councils_text_some.html:14 #, perl-format -msgid "" -"We do <strong>not</strong> yet have details for the other council that " -"covers this location." -msgid_plural "" -"We do <strong>not</strong> yet have details for the other councils that " -"cover this location." +msgid "We do <strong>not</strong> yet have details for the other council that covers this location." +msgid_plural "We do <strong>not</strong> yet have details for the other councils that cover this location." msgstr[0] "" msgstr[1] "" -#: perllib/Utils.pm:312 +#: perllib/Utils.pm:280 #, perl-format msgid "%d day" msgid_plural "%d days" -msgstr[0] "%d Tag" -msgstr[1] "%d Tage" - -#~ msgid "All" -#~ msgstr "Alle" +msgstr[0] "" +msgstr[1] "" -#~ msgid "the map was not used so pin location may be inaccurate" -#~ msgstr "" -#~ "Die Karte wurde nicht verwendet und die Stecknadel könnte demnach " -#~ "ungenau sein" +#, fuzzy +#~ msgid "The email field is required" +#~ msgstr "Diese Information wird benötigt" diff --git a/locale/es.UTF-8/LC_MESSAGES/FixMyStreet.po b/locale/es.UTF-8/LC_MESSAGES/FixMyStreet.po new file mode 100644 index 000000000..8533f6c21 --- /dev/null +++ b/locale/es.UTF-8/LC_MESSAGES/FixMyStreet.po @@ -0,0 +1,4736 @@ +# 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: fixmystreet\n" +"Report-Msgid-Bugs-To: matthew@mysociety.org\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" +"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" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:602 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373 +msgid " and " +msgstr " y " + +#: templates/web/default/tokens/confirm_problem.html:14 +#: templates/web/default/tokens/confirm_problem.html:17 +msgid " and <strong>we will now send it to the council</strong>" +msgstr " y <strong>ahora lo enviaremos al Ayuntamiento </ strong>" + +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_none.html:11 +#: templates/web/default/report/new/councils_text_none.html:14 +#: templates/web/default/report/new/councils_text_some.html:20 +#: templates/web/default/report/new/councils_text_some.html:23 +#: templates/web/default/report/new/councils_text_some.html:5 +#: templates/web/emptyhomes/report/new/councils_text_all.html:2 +msgid " or " +msgstr " o " + +#: templates/web/default/admin/bodies.html:46 +msgid "%d addresses" +msgstr "%d direcciones" + +#: 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:27 +#: templates/web/zurich/admin/index.html:6 +msgid "%d council contacts – %d confirmed, %d unconfirmed" +msgstr "%d contactos en Ayuntamiento – %d confirmados, %d sin confirmar" + +#: templates/web/default/admin/edit-league.html:12 +msgid "%d edits by %s" +msgstr "%d ediciones por %s" + +#: templates/web/default/admin/index.html:24 +msgid "%d live updates" +msgstr "%d actualizaciones en vivo" + +#: templates/web/default/admin/index.html:26 +msgid "%d questionnaires sent – %d answered (%s%%)" +msgstr "%d cuestionarios enviados – %d respondidos (%s%%)" + +#: templates/web/default/pagination.html:10 +msgid "%d to %d of %d" +msgstr "" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:22 +msgid "%s - Summary reports" +msgstr "%s - Informes de notificación" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:651 +msgid "%s ref: %s" +msgstr "%s ref: %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:276 perllib/FixMyStreet/Cobrand/UK.pm:288 +msgid "%s ward, %s" +msgstr "%s barrio, %s" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:538 +msgid "%s, reported at %s" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/UK.pm:303 perllib/FixMyStreet/Cobrand/UK.pm:315 +msgid "%s, within %s ward" +msgstr "%s , en %s barrio" + +#: templates/web/default/email_sent.html:29 +msgid "(Don't worry — we'll hang on to your alert while you're checking your email.)" +msgstr "" + +#: templates/web/default/email_sent.html:25 +msgid "(Don't worry — we'll hang on to your problem report while you're checking your email.)" +msgstr "" + +#: templates/web/default/email_sent.html:27 +msgid "(Don't worry — 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:29 +msgid "(Email in abuse table)" +msgstr "(Correo electrónico en el cuadro abuso)" + +#: templates/web/default/alert/_list.html:20 +#: templates/web/fixmystreet/alert/_list.html:24 +msgid "(a default distance which covers roughly 200,000 people)" +msgstr "(Una distancia predeterminada que cubre aproximadamente 200.000 personas)" + +#: templates/web/default/alert/_list.html:25 +#: templates/web/fixmystreet/alert/_list.html:28 +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 +#: templates/web/zurich/report/_item.html:21 +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 +#: templates/web/zurich/report/_item.html:19 +msgid "(fixed)" +msgstr "(arreglado)" + +#: 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 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)" +msgstr "(sin enviar al Ayuntamiento)" + +#: templates/web/default/report/new/fill_in_details_form.html:217 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:140 +#: templates/web/zurich/report/new/fill_in_details_form.html:100 +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)" +msgstr "(enviado a ambos)" + +#: templates/web/default/report/new/fill_in_details_form.html:211 +msgid "(we never show your email address or phone number)" +msgstr "(nunca se muestra su dirección de correo electrónico o número de teléfono)" + +#: templates/web/default/report/update-form.html:158 +msgid "(we never show your email)" +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:379 +msgid "-- Pick a category --" +msgstr "-- Elige una categoría --" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:618 +#: perllib/FixMyStreet/DB/Result/Problem.pm:385 +msgid "-- Pick a property type --" +msgstr "-- Escoja un tipo de propiedad --" + +#: templates/web/emptyhomes/front/stats.html:5 +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’s been fixed.</p>" +msgstr "<p style=\"font-size:150%\"> Muchas gracias por rellenar el cuestionario; alegra saber que ha sido arreglado </ p>." + +#: templates/web/fiksgatami/questionnaire/completed-open.html:1 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try <a href=\"http://www.norge.no/styresmakter/\">writing\n" +"direct to your councillor(s)</a> or, if it’s a problem that could be\n" +"fixed by local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "" +"<p style=\"font-size:150%\"> Sentimos tener que oír eso. Tenemos dos\n" +"sugerencias: ¿por qué no tratar de escribir <a href=\"http://www.norge.no/styresmakter/\">\n" +"directamente a su concejal (es)</ a> o, si es un problema que podría ser\n" +"arreglado de forma conjunta por conciudadanos, ¿por qué no\n" +"<a href=\"http://www.pledgebank.com/new\">comprometerse y darlo a conocer</ a>?\n" +"</p>" + +#: templates/web/fixmystreet/questionnaire/completed-open.html:6 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try <a href=\"http://www.writetothem.com/\">writing direct\n" +"to your councillor(s)</a> or, if it’s a problem that could be fixed by\n" +"local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "" +"<p style=\"font-size:150%\">Sentimos tener que oír eso. Tenemos dos\n" +"sugerencias: ¿por qué no tratar de escribir <a href=\"http://www.norge.no/styresmakter/\">\n" +"directamente a su concejal (es)</ a> o, si es un problema que podría ser\n" +"arreglado de forma conjunta por conciudadanos, ¿por qué no\n" +"<a href=\"http://www.pledgebank.com/new\">comprometerse y darlo a conocer</ a>?\n" +"</p>" + +#: templates/web/default/questionnaire/completed-open.html:6 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try writing to your local representative or, if it’s\n" +"a problem that could be fixed by local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "" +"<p style=\"font-size:150%\">Sentimos tener que oír eso. Tenemos dos\n" +"sugerencias: ¿por qué no tratar de escribir <a href=\"http://www.norge.no/styresmakter/\">\n" +"directamente a su concejal (es)</ a> o, si es un problema que podría ser\n" +"arreglado de forma conjunta por conciudadanos, ¿por qué no\n" +"<a href=\"http://www.pledgebank.com/new\">comprometerse y darlo a conocer</ a>?\n" +"</p>" + +#: templates/web/default/questionnaire/index.html:35 +msgid "" +"<p>Getting empty homes back into use can be difficult, but by now a good council\n" +"will have made a lot of progress and reported what they have done on the\n" +"website. Even so properties can remain empty for many months if the owner is\n" +"unwilling or the property is in very poor repair. If nothing has happened or\n" +"you are not satisfied with the progress the council is making, now is the right\n" +"time to say so. We think it’s a good idea to contact some other people who\n" +"may be able to help or put pressure on the council For advice on how to do\n" +"this and other useful information please go to <a\n" +"href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +msgstr "" +"<p>Hacer habitables viviendas vacías puede ser dificil, pero por ahora es un buen consejo\n" +" se ha hecho un gran progreso e informó lo que han hecho en el website\n" +". Aún así las propiedades puede permanecer vacío durante muchos meses si el propietario es\n" +" unwilling o la propiedad se encuentra en muy mal estado. Si no ha pasado nada o\n" +" Si no está satisfecho con el progreso que el Ayuntamiento está haciendo, ahora es el derecho \n" +" Time decirlo. Creemos que es una buena idea ponerse en contacto con otras personas que\n" +" may ser capaces de ayudar o presionar al Consejo para su asesoramiento sobre cómo hacer\n" +" Este y otra información útil por favor vaya </p>\n" + +#: templates/web/default/questionnaire/index.html:26 +msgid "" +"<p>Getting empty homes back into use can be difficult. You shouldn’t expect\n" +"the property to be back into use yet. But a good council will have started work\n" +"and should have reported what they have done on the website. If you are not\n" +"satisfied with progress or information from the council, now is the right time\n" +"to say. You may also want to try contacting some other people who may be able\n" +"to help. For advice on how to do this and other useful information please\n" +"go to <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +msgstr "" +"<p> Conseguir viviendas vacías de nuevo en uso puede ser difícil. Usted no debe esperar\n" +" la propiedad de estar de vuelta en uso todavía. Sin embargo, un consejo de buena voluntad han comenzado a trabajar\n" +" y debería haber informado lo que han hecho en la web. Si usted no es\n" +" satisfied con el progreso o la información del Consejo, ahora es el momento adecuado\n" +" para decir. También puede intentar ponerse en contacto con otras personas que pueden ser capaces\n" +" help me arrepentí. Para consejos sobre cómo hacer esto y otra información útil por favor\n" + +#: templates/web/default/questionnaire/completed.html:9 +msgid "" +"<p>Thank you very much for filling in our questionnaire; if you\n" +"get some more information about the status of your problem, please come back to the\n" +"site and leave an update.</p>" +msgstr "" +"<p>Muchas gracias por rellenar el cuestionario, si\n" +"descubre más información sobre el estado de su notificación, por favor vuelva\n" +" y realice una actualización.</p>" + +#: templates/web/default/around/_report_banner.html:3 +#: templates/web/default/around/_report_banner.html:5 +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:22 +#: templates/web/zurich/admin/index.html:4 +msgid "<strong>%d</strong> live problems" +msgstr "<strong>%d</ strong> notificaciones en curso" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:183 +msgid "<strong>No</strong> Let me confirm my report by email" +msgstr "<strong>No</ strong> permítanme confirmar mi notificación por email" + +#: templates/web/fixmystreet/report/update-form.html:110 +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:51 +msgid "<strong>No</strong> let me sign in by email" +msgstr "<strong>No</ strong> permítanme registrarme por email" + +#: templates/web/default/auth/general.html:55 +msgid "<strong>No</strong>, I do not, let me sign in by email:" +msgstr "<strong>No</strong>, no lo haré, permítanme registrarme por email:" + +#: templates/web/default/report/new/fill_in_details_form.html:162 +msgid "<strong>No</strong>, let me confirm my report by email:" +msgstr "<strong>No</ strong>, permítanme confirmar mi notificación por email:" + +#: templates/web/default/report/update-form.html:117 +msgid "<strong>No</strong>, let me confirm my update by email:" +msgstr "<strong>No</strong>, permítanme confirmar mi actualización por correo electrónico:" + +#: templates/web/default/auth/general.html:37 +#: templates/web/default/report/new/fill_in_details_form.html:140 +#: templates/web/default/report/update-form.html:95 +#: templates/web/fixmystreet/auth/general.html:36 +#: templates/web/fixmystreet/auth/general.html:38 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:159 +#: templates/web/fixmystreet/report/update-form.html:87 +msgid "<strong>Yes</strong> I have a password" +msgstr "<strong>Sí</strong> tengo una contraseña" + +#: templates/web/default/static/about-en-gb.html:1 +#: templates/web/default/static/about-en-gb.html:3 +#: templates/web/emptyhomes/header.html:34 +#: templates/web/emptyhomes/static/about-cy.html:1 +#: templates/web/emptyhomes/static/about-cy.html:3 +#: templates/web/emptyhomes/static/about-en-gb.html:1 +#: templates/web/emptyhomes/static/about-en-gb.html:3 +msgid "About us" +msgstr "¿Quiénes somos?" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:81 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:39 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 +msgid "Action Scheduled" +msgstr "" + +#: 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:88 +#: templates/web/zurich/admin/body.html:30 +msgid "Add new category" +msgstr "Agregar nueva categoría" + +#: templates/web/default/admin/users.html:45 +msgid "Add user" +msgstr "" + +#: templates/web/default/my/my.html:56 templates/web/fixmystreet/my/my.html:60 +msgid "Added %s" +msgstr "Añadido %s" + +#: templates/web/default/auth/change_password.html:29 +msgid "Again:" +msgstr "Otra vez:" + +#: templates/web/default/admin/timeline.html:35 +msgid "Alert %d created for %s, type %s, parameters %s / %s" +msgstr "Alerta %d creada por %s , tipo %s , los parámetros %s / %s" + +#: templates/web/default/admin/timeline.html:37 +msgid "Alert %d disabled (created %s)" +msgstr "Alerta %d desactivada (creada %s)" + +#: templates/web/bromley/report/display.html:209 +#: templates/web/default/report/update-form.html:163 +#: templates/web/fixmystreet/report/update-form.html:148 +msgid "Alert me to future updates" +msgstr "Avisarme de las actualizaciones futuras" + +#: templates/web/default/reports/index.html:3 +#: templates/web/fixmybarangay/reports/index.html:3 +#: templates/web/zurich/admin/stats.html:5 +#: templates/web/zurich/reports/index.html:15 +msgid "All Reports" +msgstr "Todas las notificaciones" + +#: 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 "Todas las notificaciones" + +#: templates/web/default/admin/stats.html:5 +#: templates/web/zurich/admin/stats.html:8 +msgid "All reports between %s and %s" +msgstr "" + +#: templates/web/default/report/new/councils_text_some.html:2 +msgid "All the information you provide here will be sent to" +msgstr "Toda la información proporcionada será enviada a" + +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:13 +msgid "All the information you provide here will be sent to <strong>%s</strong> or <strong>Roads Service</strong>." +msgstr "Toda la información proporcionada será enviada a <strong>%s</strong> o al <strong>Servicio de Carreteras</strong>." + +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_all.html:6 +msgid "All the information you provide here will be sent to <strong>%s</strong> or a relevant local body such as <strong>TfL</strong>, via the London Report-It system." +msgstr "Toda la información proporcionada será enviada a <strong>%s</strong> o al órgano competente local, como <strong>TfL</strong>, a través del Informe de Londres-It sistema." + +#: templates/web/bromley/report/new/fill_in_details_form.html:4 +#: templates/web/bromley/report/new/fill_in_details_form.html:6 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:20 +#: templates/web/default/report/new/fill_in_details_form.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:13 +#: templates/web/emptyhomes/report/new/councils_text_all.html:2 +#: templates/web/emptyhomes/report/new/councils_text_all.html:4 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:13 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:8 +msgid "All the information you provide here will be sent to <strong>%s</strong>." +msgstr "Toda la información proporcionada será enviada a <strong>%s</strong>." + +#: templates/web/default/questionnaire/index.html:60 +#: templates/web/fixmystreet/questionnaire/index.html:54 +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:32 +#: templates/web/default/admin/problem_row.html:20 +msgid "Anonymous" +msgstr "Anónimo" + +#: templates/web/default/admin/report_edit.html:62 +#: templates/web/default/admin/update_edit.html:23 +msgid "Anonymous:" +msgstr "Anónimo:" + +#: templates/web/default/footer.html:26 +msgid "Are you a <strong>developer</strong>? Would you like to contribute to FixMyStreet?" +msgstr "¿Eres strong>programador</strong>? ¿Te gustaría contribuir a FixMyStreet?" + +#: templates/web/fixmystreet/footer.html:16 +#: templates/web/stevenage/footer.html:17 +msgid "Are you a developer?" +msgstr "¿Eres programador?" + +#: templates/web/fixmystreet/footer.html:20 +#: templates/web/stevenage/footer.html:21 +msgid "Are you from a council?" +msgstr "¿Pertenece al Ayuntamiento?" + +#: 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:144 +#: templates/web/zurich/admin/stats.html:36 +msgid "Assign to different category:" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:153 +msgid "Assign to external body:" +msgstr "" + +#: 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:141 +#: templates/web/zurich/report/updates.html:11 +msgid "Assigned to %s" +msgstr "" + +#: templates/web/default/open311/index.html:86 +msgid "At most %d requests are returned in each query. The returned requests are ordered by requested_datetime, so to get all requests, do several searches with rolling start_date and end_date." +msgstr "Se devuelven como máximo %d solicitudes por cada consulta. Las solicitudes devueltas se ordenan por requested_datetime, así que para obtener todas las solicitudes, es necesario hacer varias secuencias de búsqueda con start_date y end_date." + +#: templates/web/default/open311/index.html:78 +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:334 +#: templates/web/zurich/report/_item.html:11 +msgid "Awaiting moderation" +msgstr "" + +#: templates/web/default/js/translation_strings.html:32 +#: templates/web/oxfordshire/js/translation_strings.html:26 +msgid "Back" +msgstr "" + +#: templates/web/default/admin/report_blocks.html:11 +msgid "Ban email address" +msgstr "Prohibir dirección de email" + +#: templates/web/fixmybarangay/report/new/notes.html:7 +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: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: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:32 +msgid "Body:" +msgstr "" + +#: templates/web/fiksgatami/footer.html:16 +#: templates/web/fiksgatami/nn/footer.html:16 +msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained by <a href=\"http://www.nuug.no/\">NUUG</a>" +msgstr "Construido por <a href=\"http://www.mysociety.org/\">mySociety</a> y mantenido por <a href=\"http://www.nuug.no/\">NUUG</ a>" + +#: templates/web/default/admin/stats.html:80 +msgid "By Date" +msgstr "Por Fecha" + +#: templates/web/fixmystreet/around/_report_banner.html:10 +#: templates/web/fixmystreet/around/_report_banner.html:8 +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: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 "Categoría" + +#: 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: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 "Categoría:" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366 +msgid "Category: %s" +msgstr "Categoría: %s" + +#: templates/web/default/auth/change_password.html:1 +#: templates/web/default/auth/change_password.html:3 +#: templates/web/default/auth/change_password.html:33 +msgid "Change Password" +msgstr "Cambiar contraseña" + +#: 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" + +#: 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 +#: 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 "Cerrada" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:744 +msgid "Closed by council" +msgstr "Cerrado por el Ayuntamiento" + +#: templates/web/default/my/my.html:32 templates/web/fixmystreet/my/my.html:36 +msgid "Closed reports" +msgstr "Informes cerrados" + +#: templates/web/default/admin/problem_row.html:38 +msgid "Closed:" +msgstr "Cerrado:" + +#: templates/web/default/around/tabbed_lists.html:10 +#: templates/web/default/around/tabbed_lists.html:12 +msgid "Closest nearby problems <small>(within %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:36 +#: templates/web/zurich/admin/report_edit.html:49 +msgid "Co-ordinates:" +msgstr "Coordenadas:" + +#: templates/web/default/admin/list_updates.html:10 +msgid "Cobrand" +msgstr "Cobrand" + +#: templates/web/default/admin/report_edit.html:75 +#: templates/web/default/admin/update_edit.html:50 +msgid "Cobrand data:" +msgstr "Datos cobrand:" + +#: templates/web/default/admin/report_edit.html:74 +#: templates/web/default/admin/update_edit.html:49 +msgid "Cobrand:" +msgstr "Cobrand:" + +#: 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" + +#: templates/web/default/admin/body_edit.html:47 +msgid "Configure Endpoint" +msgstr "" + +#: templates/web/default/admin/body.html:62 +msgid "Confirm" +msgstr "Confirmar" + +#: templates/web/default/auth/token.html:1 +msgid "Confirm account" +msgstr "Confirmar cuenta" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:177 +#: templates/web/fixmystreet/report/update-form.html:105 +msgid "Confirm by email below, providing a new password at that point. When you confirm, your password will be updated." +msgstr "" + +#: templates/web/default/questionnaire/creator_fixed.html:1 +#: templates/web/default/tokens/confirm_problem.html:1 +#: templates/web/default/tokens/confirm_problem.html:3 +#: templates/web/default/tokens/confirm_update.html:1 +#: templates/web/default/tokens/confirm_update.html:3 +#: templates/web/emptyhomes/tokens/confirm_problem.html:1 +#: templates/web/emptyhomes/tokens/confirm_problem.html:3 +#: templates/web/southampton/tokens/confirm_problem.html:1 +#: templates/web/southampton/tokens/confirm_problem.html:3 +#: templates/web/zurich/tokens/confirm_problem.html:1 +#: templates/web/zurich/tokens/confirm_problem.html:3 +msgid "Confirmation" +msgstr "Confirmación" + +#: 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 "Confirmado" + +#: templates/web/default/admin/stats.html:5 +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:" +msgstr "Confirmado:" + +#: templates/web/fiksgatami/footer.html:10 +#: templates/web/fiksgatami/nn/footer.html:10 +msgid "Contact" +msgstr "Contacto" + +#: templates/web/default/footer.html:24 +msgid "Contact FixMyStreet" +msgstr "Contactar FixMyStreet" + +#: templates/web/bromley/contact/submit.html:1 +#: templates/web/default/contact/index.html:1 +#: templates/web/default/contact/index.html:2 +#: templates/web/default/contact/submit.html:1 +#: templates/web/fixmystreet/contact/index.html:1 +#: templates/web/fixmystreet/contact/index.html:2 +msgid "Contact Us" +msgstr "Contáctenos" + +#: templates/web/bromley/contact/submit.html:3 +#: templates/web/default/contact/index.html:6 +#: templates/web/default/contact/submit.html:3 +#: templates/web/fixmystreet/contact/index.html:19 +msgid "Contact the team" +msgstr "Contactar con el equipo" + +#: 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:37 +#: templates/web/oxfordshire/js/translation_strings.html:31 +msgid "Could not look up location" +msgstr "" + +#: templates/web/default/admin/list_updates.html:9 +msgid "Council" +msgstr "Ayuntamiento" + +#: templates/web/default/admin/body.html:1 +#: templates/web/default/admin/body_edit.html:1 +#: templates/web/zurich/admin/body.html:1 +msgid "Council contacts for %s" +msgstr "Contactos del Ayuntamiento para %s" + +#: templates/web/default/admin/stats.html:84 +msgid "Council:" +msgstr "Ayuntamiento:" + +#: templates/web/default/admin/stats.html:12 +#: templates/web/default/admin/stats.html:32 +#: templates/web/zurich/admin/stats.html:45 +#: templates/web/zurich/admin/stats.html:50 +msgid "Count" +msgstr "Total" + +#: templates/web/default/email_sent.html:1 +msgid "Create a report" +msgstr "Crear una notificación" + +#: 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/problem_row.html:34 +#: 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:50 +#: templates/web/zurich/admin/report_edit.html:64 +#: templates/web/zurich/admin/update_edit.html:29 +msgid "Created:" +msgstr "Creado:" + +#: templates/web/default/admin/stats.html:31 +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" +msgstr "Cuadro de mando" + +#: templates/web/zurich/admin/stats.html:35 +msgid "Dealt with by subdivision within 5 working days" +msgstr "" + +#: 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 "Eliminado" + +#: templates/web/zurich/admin/index-dm.html:22 +#: templates/web/zurich/admin/index-sdm.html:20 +#: templates/web/zurich/admin/reports.html:12 +msgid "Description" +msgstr "" + +#: 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 "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: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:57 +msgid "Devolved" +msgstr "" + +#: templates/web/default/admin/edit-league.html:8 +msgid "Diligency prize league table" +msgstr "Ranking de premios a la constancia" + +#: templates/web/fixmystreet/auth/general.html:30 +msgid "Do you have a FixMyBarangay password?" +msgstr "¿Tiene una contraseña FixMyBarangay?" + +#: templates/web/default/auth/general.html:32 +#: templates/web/fixmystreet/auth/general.html:32 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:155 +#: templates/web/fixmystreet/report/update-form.html:84 +msgid "Do you have a FixMyStreet password?" +msgstr "¿Tiene una contraseña FixMyStreet?" + +#: templates/web/default/questionnaire/index.html:70 +#: templates/web/fixmystreet/questionnaire/index.html:64 +msgid "Don’t know" +msgstr "No lo se" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:82 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:47 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 +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:31 +#: templates/web/zurich/admin/problem_row.html:42 +msgid "Edit" +msgstr "Editar" + +#: templates/web/default/admin/body.html:189 +#: templates/web/zurich/admin/body.html:64 +msgid "Edit body details" +msgstr "" + +#: templates/web/default/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:4 +#: templates/web/zurich/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit.html:5 +msgid "Editing problem %d" +msgstr "Editando problema %d" + +#: templates/web/default/admin/update_edit.html:1 +#: templates/web/zurich/admin/update_edit.html:1 +msgid "Editing update %d" +msgstr "Editando actualización %d" + +#: templates/web/default/admin/user_edit.html:1 +msgid "Editing user %d" +msgstr "Editando usuario %d" + +#: templates/web/default/admin/body_edit.html:86 +msgid "Editor" +msgstr "Editor" + +#: 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 "Email:" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1286 +msgid "Email added to abuse list" +msgstr "Email añadido a lista de abusos" + +#: 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" + +#: templates/web/default/around/_updates.html:5 +msgid "Email me new local problems" +msgstr "Reciba por email nuevos problemas locales" + +#: templates/web/default/report/display.html:34 +msgid "Email me updates" +msgstr "Recibir por email actualizaciones" + +#: 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 "Email:" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318 +msgid "Email: %s" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:620 +msgid "Empty flat or maisonette" +msgstr "Piso o duplex vacío" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:619 +msgid "Empty house or bungalow" +msgstr "Casa o bungalow vacío" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:622 +msgid "Empty office or other commercial" +msgstr "Oficina u otros establecimientos comerciales vacíos" + +#: templates/web/emptyhomes/report/new/form_heading.html:1 +msgid "Empty property details form" +msgstr "Limpiar detalles de la propiedad" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:623 +msgid "Empty pub or bar" +msgstr "Pub o bar vacío" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:624 +msgid "Empty public building - school, hospital, etc." +msgstr "Edificio público vacío - escuela, hospital, etc" + +#: 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/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:70 +#, fuzzy +msgid "End Date:" +msgstr "Día de fin:" + +#: templates/web/default/admin/body-form.html:126 +msgid "Endpoint" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/Zurich.pm:71 +msgid "Enter a Zürich street name" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/UK.pm:18 +msgid "Enter a nearby UK postcode, or street name and area" +msgstr "Introduzca un código postal cercano de su región, o nombre de la calle y el área" + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:25 +msgid "Enter a nearby postcode, or street name and area" +msgstr "Introduzca un código postal cercano, o nombre de la calle y el área" + +#: templates/web/default/around/postcode_form.html:1 +#: templates/web/default/around/postcode_form.html:2 +#: templates/web/fixmystreet/around/postcode_form.html:10 +#: templates/web/fixmystreet/around/postcode_form.html:11 +#: templates/web/seesomething/around/postcode_form.html:3 +#: templates/web/seesomething/around/postcode_form.html:4 +msgid "Enter a nearby street name and area" +msgstr "Introduzca un nombre de la calle y la zona cercana" + +#: templates/web/default/auth/general.html:64 +#: templates/web/default/report/new/fill_in_details_form.html:169 +#: templates/web/default/report/update-form.html:124 +msgid "Enter a new password:" +msgstr "Introduzca una nueva contraseña:" + +#: 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 "Introduzca una contraseña" + +#: templates/web/default/index-steps.html:26 +msgid "Enter details of the problem" +msgstr "Introduzca detalles del problema" + +#: templates/web/default/auth/token.html:5 +#: templates/web/default/errors/generic.html:1 +#: templates/web/default/errors/generic.html:3 +#: templates/web/default/tokens/abuse.html:1 +#: templates/web/default/tokens/abuse.html:3 +#: templates/web/default/tokens/error.html:1 +#: templates/web/default/tokens/error.html:3 +msgid "Error" +msgstr "Error" + +#: templates/web/default/admin/body.html:11 +#: templates/web/default/admin/body_edit.html:18 +msgid "Example postcode %s" +msgstr "Ejemplo de código postal %s" + +#: templates/web/default/open311/index.html:96 +msgid "Examples:" +msgstr "Ejemplos:" + +#: templates/web/default/admin/report_edit.html:76 +msgid "Extra data:" +msgstr "Datos adicionales:" + +#: templates/web/bromley/contact/submit.html:14 +#: templates/web/default/contact/submit.html:15 +msgid "Failed to send message. Please try again, or <a href=\"mailto:%s\">email us</a>." +msgstr "No se ha podido enviar el mensaje. Por favor, inténtelo de nuevo, o <a href=\"mailto: %s\">envíenos un correo electrónico</a>." + +#: templates/web/zurich/admin/index-dm.html:33 +#: templates/web/zurich/admin/index-sdm.html:30 +msgid "Filter report list" +msgstr "" + +#: templates/web/emptyhomes/front/stats.html:6 +msgid "Find latest local and national news" +msgstr "" + +#: templates/web/bromley/report/display.html:191 +#: templates/web/bromley/report/new/fill_in_details_form.html:113 +#: templates/web/bromley/report/new/fill_in_details_form.html:160 +msgid "First Name" +msgstr "Nombre" + +#: templates/web/default/questionnaire/index.html:79 +#: templates/web/fixmystreet/questionnaire/index.html:73 +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" +msgstr "Fix <span id=\"my\"> My </span> Street" + +#: templates/web/default/header.html:24 +msgid "FixMyStreet" +msgstr "FixMyStreet" + +#: templates/web/default/admin/header.html:10 +msgid "FixMyStreet admin:" +msgstr "Admin FixMyStreet:" + +#: templates/web/default/alert/index.html:11 +msgid "" +"FixMyStreet has a variety of RSS feeds and email alerts for local problems, including\n" +"alerts for all problems within a particular ward or council, or all problems\n" +"within a certain distance of a particular location." +msgstr "" +"FixMyStreet dispone de varias fuentes RSS y alertas por email de los problemas locales, incluyendo\n" +"alertas para todos los problemas dentro de un barrio o ayuntamiento concreto, o para todos los problemas \n" +"alrededor de una distancia determinada o zona en particular." + +#: templates/web/default/alert/_list.html:71 +#: templates/web/fixmystreet/alert/_list.html:73 +msgid "" +"FixMyStreet sends different categories of problem\n" +"to the appropriate council, so problems within the boundary of a particular council\n" +"might not match the problems sent to that council. For example, a graffiti report\n" +"will be sent to the district council, so will appear in both of the district\n" +"council’s alerts, but will only appear in the \"Within the boundary\" alert\n" +"for the county council." +msgstr "" +"FixMyStreet envía problemas de diferentes categorías\n" +" a la Concejalía adecuada en el Ayuntamiento, por lo cual los problemas dentro de los límites de una determinada Concejalía\n" +" pueden no responden a los problemas enviados. Por ejemplo, una notificación de graffiti\n" +" se enviará a la Concejalía de Distritos, por lo que aparecerá tanto en el distrito de alertas\n" +" council, pero sólo aparecerán en la carpeta \"Dentro del límite\" alerta \n" +" para la Diputación Provincial." + +#: 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 "Arreglado" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:43 +msgid "Fixed - Council" +msgstr "Arreglado - Ayuntamiento" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:42 +msgid "Fixed - User" +msgstr "Arreglado - Usuario" + +#: templates/web/default/my/my.html:27 templates/web/fixmystreet/my/my.html:31 +msgid "Fixed reports" +msgstr "Notificaciones arregladas" + +#: templates/web/default/admin/problem_row.html:37 +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: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:51 +msgid "Flagged:" +msgstr "Marcado:" + +#: templates/web/default/reports/_ward-list.html:3 +#: templates/web/fixmystreet/reports/_ward-list.html:4 +msgid "Follow a ward link to view only reports within that ward." +msgstr "Clic en el enlace de un barrio para ver solo las notificaciones en ese barrio" + +#: templates/web/default/admin/report_edit.html:30 +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?" +msgstr "" + +#: templates/web/default/faq/faq-en-gb.html:1 +#: templates/web/emptyhomes/faq/faq-cy.html:1 +#: templates/web/emptyhomes/faq/faq-en-gb.html:1 +#: templates/web/fiksgatami/faq/faq-nb.html:1 +#: templates/web/fiksgatami/nn/faq/faq-nn.html:1 +#: templates/web/fixmindelo/faq/faq-pt-cv.html:1 +#: templates/web/fixmybarangay/faq/faq-en-gb.html:1 +#: templates/web/fixmystreet/faq/faq-en-gb.html:1 +#: templates/web/fixmystreet/static/privacy.html:1 +#: templates/web/oxfordshire/faq/faq-en-gb.html:1 +msgid "Frequently Asked Questions" +msgstr "Preguntas frecuentes" + +#: templates/web/default/open311/index.html:138 +msgid "GeoRSS on Google Maps" +msgstr "GeoRSS en Google Maps" + +#: templates/web/bromley/report/display.html:30 +#: templates/web/fixmystreet/around/_updates.html:3 +#: templates/web/fixmystreet/report/display.html:38 +msgid "Get updates" +msgstr "Recibe actualizaciones" + +#: templates/web/fixmystreet/reports/_rss.html:3 +#: templates/web/fixmystreet/reports/_rss.html:9 +msgid "Get updates of %s problems" +msgstr "Recibe actualizaciones de %s problemas" + +#: templates/web/fixmystreet/reports/_rss.html:11 +#: templates/web/fixmystreet/reports/_rss.html:3 +msgid "Get updates of problems in this %s" +msgstr "Recibe actualizaciones de los problemas en este %s" + +#: templates/web/default/alert/_list.html:83 +#: templates/web/fixmybarangay/alert/_list.html:28 +#: templates/web/fixmystreet/alert/_list.html:82 +msgid "Give me an RSS feed" +msgstr "Dame un feed RSS" + +#: templates/web/default/alert/index.html:34 +#: templates/web/default/around/postcode_form.html:8 +#: templates/web/fixmystreet/around/postcode_form.html:21 +#: templates/web/seesomething/around/postcode_form.html:10 +#: templates/web/zurich/admin/stats.html:26 +msgid "Go" +msgstr "Ir" + +#: templates/web/default/admin/report_edit.html:77 +msgid "Going to send questionnaire?" +msgstr "¿Va a enviar cuestionario?" + +#: 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" + +#: templates/web/default/reports/index.html:8 +msgid "Greyed-out lines are councils that no longer exist." +msgstr "Líneas de color gris son las Concejalías que ya no existen." + +#: templates/web/default/questionnaire/index.html:61 +#: templates/web/fixmystreet/questionnaire/index.html:55 +msgid "Has this problem been fixed?" +msgstr "¿Ha sido corregido este problema?" + +#: templates/web/default/questionnaire/index.html:74 +#: templates/web/fixmystreet/questionnaire/index.html:68 +msgid "Have you ever reported a problem to a council before, or is this your first time?" +msgstr "¿Alguna vez informó de un problema a un Ayuntamiento antes, o es tu primera vez?" + +#: 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 "Ayuda" + +#: templates/web/default/alert/_list.html:6 +#: templates/web/fixmystreet/alert/_list.html:8 +msgid "Here are the types of local problem alerts for ‘%s’." +msgstr "Estos son los tipos de alertas de problemas locales para '%s'." + +#: templates/web/barnet/header.html:70 templates/web/bromley/header.html:64 +#: templates/web/bromley/header.html:99 +#: templates/web/fixmybarangay/header.html:66 +#: templates/web/fixmystreet/header.html:50 +#: templates/web/oxfordshire/header.html:111 +#: templates/web/oxfordshire/header.html:47 +#: templates/web/stevenage/header.html:97 templates/web/zurich/footer.html:11 +msgid "Hi %s" +msgstr "Hola %s" + +#: 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 "Oculto" + +#: templates/web/default/around/display_location.html:67 +msgid "Hide old" +msgstr "Ocultar antiguos" + +#: templates/web/default/around/display_location.html:62 +msgid "Hide pins" +msgstr "Ocultar pines" + +#: templates/web/default/admin/body_edit.html:79 +msgid "History" +msgstr "Historial" + +#: templates/web/default/js/translation_strings.html:31 +#: templates/web/oxfordshire/js/translation_strings.html:25 +msgid "Home" +msgstr "" + +#: templates/web/default/index-steps.html:1 +msgid "How to report a problem" +msgstr "Cómo notificar un problema" + +#: 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:733 +msgid "I am afraid you cannot confirm unconfirmed reports." +msgstr "Me temo que no puede confirmar informes no confirmados." + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:89 +msgid "I'm afraid we couldn't locate your problem in the database.\n" +msgstr "Me temo que no se ha podido localizar su problema en la base de datos.\n" + +#: perllib/FixMyStreet/App/Controller/Tokens.pm:44 +msgid "I'm afraid we couldn't validate that token, as the report was made too long ago." +msgstr "Me temo que no ha podido verificar token, ya que el informe se hizo hace mucho tiempo." + +#: perllib/FixMyStreet/App/Controller/Tokens.pm:259 +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: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 "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 "" + +#: templates/web/default/email_sent.html:15 +msgid "If you do not, your problem will not be posted." +msgstr "" + +#: templates/web/default/email_sent.html:17 +msgid "If you do not, your update will not be posted." +msgstr "" + +#: templates/web/default/report/new/councils_text_none.html:8 +#: templates/web/default/report/new/councils_text_none.html:9 +msgid "If you submit a problem here the subject and details of the problem will be public, but the problem will <strong>not</strong> be reported to the council." +msgstr "Si envía un problema, el título y detalles serán públicos pero el problema <strong>no</ strong> se informará al Ayuntamiento." + +#: templates/web/emptyhomes/report/new/councils_text_none.html:9 +msgid "If you submit a report here it will be left on the site, but not reported to the council – please still leave your report, so that we can show to the council the activity in their area." +msgstr "Si envía una notificación aquí, se quedará en el site pero no se informará al Ayuntamiento - por favor sigua dejando su notificación de manera que podamos mostrar al Ayuntamiento la actividad en su área." + +#: templates/web/default/auth/token.html:22 +#: templates/web/default/email_sent.html:9 +msgid "If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way." +msgstr "Si utiliza correo electrónico web o tiene filtros anti-spam es recomendable que compruebe carpetas de spam: a veces, los mensajes se marcan así." + +#: templates/web/default/questionnaire/index.html:86 +#: templates/web/fixmystreet/questionnaire/index.html:77 +msgid "" +"If you wish to leave a public update on the problem, please enter it here\n" +"(please note it will not be sent to the council). For example, what was\n" +"your experience of getting the problem fixed?" +msgstr "" +"Si desea dejar una actualización pública en el problema, por favor ingrese aquí\n" +"(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" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:100 +msgid "Illegal feed selection" +msgstr "Selección de feed ilegal" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:82 +#: 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:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 +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: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 "En Progreso" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:38 +msgid "Incident Category" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:163 +msgid "Include reporter personal details" +msgstr "" + +#: templates/web/default/admin/stats.html:76 +msgid "Include unconfirmed reports" +msgstr "Incluir notificaciones no confirmadas" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:354 +msgid "Incorrect has_photo value \"%s\"" +msgstr "Valor incorrecto para has_photo \"%s\"" + +#: 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 +msgid "Internal referral" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:339 +msgid "Invalid agency_responsible value %s" +msgstr "Valor inválido para agency_responsible %s" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1096 +msgid "Invalid end date" +msgstr "Fecha de fin inválida" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:432 +msgid "Invalid format %s specified." +msgstr "Formato no válido %s especificado." + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1092 +msgid "Invalid start date" +msgstr "Fecha de inicio no válida" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:81 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:37 +#: templates/web/default/dashboard/index.html:142 +#: templates/web/default/dashboard/index.html:143 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 +msgid "Investigating" +msgstr "Investigando" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:12 +#: templates/web/emptyhomes/tokens/confirm_problem.html:14 +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’t mean the council isn’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 "Cabe señalar sin embargo que el proceso puede ser lento, especialmente si la propiedad está en muy mal estado o el propietario no está dispuesto a actuar. En la mayoría de los casos puede tomar seis meses o más antes de que usted pueda ver cualquier cambio y a veces puede haber una propiedad comprada de nuevo para ser usada. Esto no significa que el Ayuntamiento no esté haciendo nada. Animamos a los Ayuntamientos a actualizar la web para que pueda ver lo que está sucediendo. Puede ser un proceso largo, pero notificar sus preocupaciones sobre esta propiedad al Ayuntamiento es un primer paso valioso." + +#: 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 "Recordar mi contraseña en este ordenador" + +#: templates/web/bromley/report/display.html:197 +#: templates/web/bromley/report/new/fill_in_details_form.html:119 +#: templates/web/bromley/report/new/fill_in_details_form.html:166 +msgid "Last Name" +msgstr "Apellido" + +#: templates/web/default/admin/body.html:58 +#: templates/web/zurich/admin/body.html:15 +msgid "Last editor" +msgstr "Último editor" + +#: templates/web/default/admin/report_edit.html:72 +msgid "Last update:" +msgstr "Última actualización:" + +#: templates/web/default/admin/problem_row.html:39 +msgid "Last 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" +msgstr "Listar todos los problemas notificados" + +#: templates/web/bromley/report/new/fill_in_details_form.html:69 +#: templates/web/default/report/new/fill_in_details_form.html:68 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:51 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:75 +#: templates/web/seesomething/report/new/fill_in_details_form.html:25 +#: templates/web/zurich/report/new/fill_in_details_form.html:51 +msgid "Loading..." +msgstr "Cargando..." + +#: templates/web/default/alert/choose.html:1 +#: templates/web/default/alert/choose.html:3 +#: templates/web/default/alert/index.html:1 +#: templates/web/default/alert/index.html:3 +#: templates/web/default/alert/list.html:1 +#: templates/web/default/alert/list.html:5 +#: templates/web/default/alert/updates.html:1 +#: templates/web/default/tokens/confirm_alert.html:1 +#: templates/web/default/tokens/confirm_alert.html:3 +#: templates/web/emptyhomes/alert/index.html:1 +#: templates/web/emptyhomes/alert/index.html:3 +#: templates/web/fixmybarangay/alert/index.html:1 +#: templates/web/fixmybarangay/alert/index.html:3 +#: templates/web/fixmystreet/alert/updates.html:1 +msgid "Local RSS feeds and email alerts" +msgstr "Feeds RSS locales y alertas por email" + +#: templates/web/default/alert/list.html:1 +#: templates/web/default/alert/list.html:12 +#: templates/web/default/alert/list.html:14 +#: templates/web/default/alert/list.html:3 +msgid "Local RSS feeds and email alerts for ‘%s’" +msgstr "Feeds RSS locales y alertas por email para '%s'" + +#: 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 "Alertas locales" + +#: templates/web/default/index-steps.html:25 +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:43 +#: templates/web/oxfordshire/js/translation_strings.html:37 +msgid "MAP" +msgstr "" + +#: perllib/FixMyStreet/Map/OSM.pm:44 +msgid "Map © <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:" + +#: templates/web/default/contact/index.html:90 +msgid "Message:" +msgstr "Mensaje:" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:440 +msgid "Missing jurisdiction_id" +msgstr "Falta jurisdiction_id" + +#: templates/web/zurich/admin/stats.html:34 +msgid "Moderated by division within one working day" +msgstr "" + +#: templates/web/default/admin/stats.html:11 +msgid "Month" +msgstr "Mes" + +#: templates/web/default/report/display.html:30 +msgid "More problems nearby" +msgstr "Más problemas cercanos" + +#: 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 "Nombre" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:74 +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: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:317 +msgid "Name: %s" +msgstr "" + +#: templates/web/fiksgatami/footer.html:3 +#: templates/web/fiksgatami/nn/footer.html:3 +#: templates/web/reading/footer.html:4 +msgid "Navigation" +msgstr "Navegación" + +#: perllib/FixMyStreet/Geocode/OSM.pm:166 +msgid "Nearest named road to the pin placed on the map (automatically generated using OpenStreetMap): %s%s" +msgstr "Camino más cercano al pin colocado en el mapa (se genera automáticamente utilizando OpenStreetMap): %s%s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:148 +msgid "Nearest postcode to the pin placed on the map (automatically generated): %s (%sm away)" +msgstr "Código postal más cercano al pin colocado en el mapa (generado automáticamente): %s (%sm de distancia)" + +#: perllib/FixMyStreet/Cobrand/Default.pm:418 +#: perllib/FixMyStreet/Cobrand/Default.pm:458 +msgid "Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s" +msgstr "Camino más cercano al pin colocado en el mapa (generado automáticamente por Bing Maps): %s" + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:273 +msgid "" +"Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s\n" +"\n" +msgstr "" +"Camino más cercano al pin colocado en el mapa (generada automáticamente por Bing Maps): %s\n" +"\n" + +#: templates/web/default/email_sent.html:3 +msgid "Nearly Done! Now check your email..." +msgstr "¡Casi terminado! Ahora compruebe su correo electrónico ..." + +#: templates/web/default/reports/index.html:16 +#: templates/web/fixmybarangay/reports/index.html:16 +msgid "New <br>problems" +msgstr "Nuevos <br>problemas" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:264 +msgid "New body added" +msgstr "" + +#: 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" + +#: db/alert_types_eha.pl:12 +msgid "New local reports on reportemptyhomes.com" +msgstr "Nuevas notificaciones locales en reportemptyhomes.com" + +#: templates/web/emptyhomes/reports/index.html:10 +#: templates/web/fiksgatami/nn/reports/index.html:10 +#: templates/web/fiksgatami/reports/index.html:10 +msgid "New problems" +msgstr "Nuevos problemas" + +#: db/alert_types.pl:38 +msgid "New problems for {{COUNCIL}} within {{WARD}} ward on FixMyStreet" +msgstr "Nuevos problemas en {{COUNCIL}} para el barrio {{WARD}} en FixMyStreet" + +#: db/alert_types.pl:26 db/alert_types.pl:30 +msgid "New problems near {{POSTCODE}} on FixMyStreet" +msgstr "Nuevos problemas cerca de {{POSTCODE}} En FixMyStreet" + +#: db/alert_types.pl:10 +msgid "New problems on FixMyStreet" +msgstr "Nuevos problemas en FixMyStreet" + +#: db/alert_types.pl:34 +msgid "New problems to {{COUNCIL}} on FixMyStreet" +msgstr "Nuevos problemas en {{COUNCIL}} en FixMyStreet" + +#: db/alert_types.pl:42 +msgid "New problems within {{NAME}}'s boundary on FixMyStreet" +msgstr "Nuevos problemas en los límites de {{NAME}} en FixMyStreet" + +#: templates/web/zurich/admin/index-sdm.html:4 +msgid "New reports" +msgstr "" + +#: db/alert_types_eha.pl:23 +msgid "New reports for {{COUNCIL}} within {{WARD}} ward on reportemptyhomes.com" +msgstr "Nuevas notificaciones en {{COUNCIL}} para el barrio {{WARD}} en reportemptyhomes.com" + +#: db/alert_types_eha.pl:5 +msgid "New reports on reportemptyhomes.com" +msgstr "Nuevas notificaciones en reportemptyhomes.com" + +#: db/alert_types_eha.pl:16 +msgid "New reports on reportemptyhomes.com near {{POSTCODE}}" +msgstr "Nuevas notificaciones en reportemptyhome.com cerca de {{POSTCODE}}" + +#: db/alert_types_eha.pl:19 +msgid "New reports to {{COUNCIL}} on reportemptyhomes.com" +msgstr "Nuevas notificaciones en {{COUNCIL}} en reportemptyhomes.com" + +#: db/alert_types_eha.pl:27 +msgid "New reports within {{NAME}}'s boundary on reportemptyhomes.com" +msgstr "Nuevas notificaciones dentro de los límites de {{NAME}} en reportemptyhomes.com" + +#: templates/web/default/admin/questionnaire.html:24 +msgid "New state" +msgstr "Nuevo estado" + +#: templates/web/zurich/admin/report_edit-sdm.html:61 +msgid "New update:" +msgstr "" + +#: templates/web/fiksgatami/front/news.html:9 +#: templates/web/fiksgatami/nn/front/news.html:9 +#: templates/web/fixmystreet/front/news.html:8 +msgid "New!" +msgstr "¡Nuevo!" + +#: templates/web/default/pagination.html:13 +msgid "Next" +msgstr "" + +#: 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 "No" + +#: templates/web/default/admin/user-form.html:33 +msgid "No body" +msgstr "" + +#: templates/web/default/admin/stats.html:85 +msgid "No council" +msgstr "Sin Ayuntamiento" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:362 +msgid "No council selected" +msgstr "Ningún Ayuntamiento seleccionado" + +#: 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:25 +#, fuzzy +msgid "No flagged problems found." +msgstr "No se encontraron problemas marcados" + +#: 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:68 +msgid "No further updates" +msgstr "" + +#: templates/web/default/around/around_map_list_items.html:17 +#: templates/web/fixmystreet/around/around_map_list_items.html:8 +msgid "No problems found." +msgstr "No se han encontrado problemas." + +#: templates/web/default/around/on_map_list_items.html:14 +#: templates/web/fixmystreet/around/on_map_list_items.html:6 +msgid "No problems have been reported yet." +msgstr "No se han notificado problemas todavía." + +#: 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:73 +msgid "Non Public" +msgstr "" + +#: 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 "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 +#: 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 "" + +#: templates/web/zurich/admin/report_edit-sdm.html:21 +msgid "Not for my subdivision" +msgstr "" + +#: templates/web/default/admin/questionnaire.html:6 +msgid "Not reported before" +msgstr "No se notificó antes" + +#: templates/web/default/report/_main.html:10 +msgid "Not reported to council" +msgstr "Sin comunicar al Ayuntamiento" + +#: 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 "Nota" + +#: templates/web/default/admin/stats.html:51 +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:157 +#: templates/web/default/admin/body_edit.html:44 +#: templates/web/zurich/admin/body.html:47 +msgid "Note:" +msgstr "Nota:" + +#: templates/web/default/open311/index.html:75 +msgid "Note: <strong>%s</strong>" +msgstr "Nota: <strong>%s</strong>" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:154 +msgid "Now to submit your report…" +msgstr "Y ahora a enviar tu notificación ..." + +#: templates/web/default/report/new/fill_in_details_form.html:131 +msgid "Now to submit your report… do you have a FixMyStreet password?" +msgstr "Y ahora a enviar tu notificación ... no tienes contraseña en FixMyStreet?" + +#: templates/web/fixmystreet/report/update-form.html:83 +msgid "Now to submit your update…" +msgstr "Y ahora a enviar tu actualización ..." + +#: templates/web/default/report/update-form.html:86 +msgid "Now to submit your update… 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:42 +#: templates/web/oxfordshire/js/translation_strings.html:36 +msgid "OK" +msgstr "" + +#: templates/web/default/report/display.html:24 +#: templates/web/default/report/update.html:16 +msgid "Offensive? Unsuitable? Tell us" +msgstr "Ofensiva? Inadecuado? Cuéntanos" + +#: templates/web/default/reports/index.html:18 +#: templates/web/fixmybarangay/reports/index.html:18 +msgid "Old / unknown <br>problems" +msgstr "Problemas<br> Antiguos / desconocidos" + +#: templates/web/fiksgatami/nn/reports/index.html:12 +#: templates/web/fiksgatami/reports/index.html:12 +msgid "Old problems,<br>state unknown" +msgstr "Problemas antiguos,<br>estado desconocido" + +#: templates/web/default/admin/questionnaire.html:24 +msgid "Old state" +msgstr "Estado antiguo" + +#: templates/web/default/reports/index.html:20 +#: templates/web/fixmybarangay/reports/index.html:20 +msgid "Older <br>fixed" +msgstr "Antiguo <br>arreglado" + +#: templates/web/default/reports/index.html:17 +#: templates/web/fixmybarangay/reports/index.html:17 +msgid "Older <br>problems" +msgstr "Problemas <br>antiguos" + +#: templates/web/fiksgatami/nn/reports/index.html:14 +#: templates/web/fiksgatami/reports/index.html:14 +msgid "Older fixed" +msgstr "Antiguo arreglado" + +#: templates/web/emptyhomes/reports/index.html:11 +#: templates/web/fiksgatami/nn/reports/index.html:11 +#: templates/web/fiksgatami/reports/index.html:11 +msgid "Older problems" +msgstr "Problemas antiguos" + +#: 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 "Abierto" + +#: templates/web/default/my/my.html:22 templates/web/fixmystreet/my/my.html:26 +msgid "Open reports" +msgstr "Notificaciones abiertas" + +#: templates/web/default/open311/index.html:72 +msgid "Open311 API for the mySociety FixMyStreet server" +msgstr "API Open311 para el servidor FixMyStreet de mySociety" + +#: templates/web/default/open311/index.html:82 +msgid "Open311 initiative web page" +msgstr "Página web de la iniciativa Open311" + +#: templates/web/default/open311/index.html:83 +msgid "Open311 specification" +msgstr "Especificación Open311" + +#: templates/web/default/alert/_list.html:58 +#: templates/web/fixmystreet/alert/_list.html:60 +msgid "Or problems reported to:" +msgstr "O problemas notificados a:" + +#: templates/web/default/alert/_list.html:33 +#: templates/web/fixmystreet/alert/_list.html:36 +msgid "Or you can subscribe to an alert based upon what ward or council you’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: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 "Otros" + +#: templates/web/default/footer.html:27 +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:8 +msgid "Owner" +msgstr "Propietario" + +#: templates/web/default/errors/page_error_404_not_found.html:1 +#: templates/web/default/errors/page_error_404_not_found.html:3 +msgid "Page Not Found" +msgstr "Página no encontrada" + +#: templates/web/default/admin/body-form.html:31 +#: templates/web/zurich/admin/body-form.html:14 +msgid "Parent" +msgstr "" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:51 +msgid "Partial" +msgstr "Parcial" + +#: 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 "Contraseña (opcional)" + +#: templates/web/default/auth/change_password.html:25 +msgid "Password:" +msgstr "Contraseña:" + +#: 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 +msgid "Phone number (optional)" +msgstr "Número de teléfono (opcional)" + +#: 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 "Teléfono:" + +#: 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 "Foto" + +#: templates/web/default/questionnaire/index.html:99 +#: templates/web/default/report/new/fill_in_details_form.html:102 +#: templates/web/default/report/update-form.html:62 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:99 +#: templates/web/fixmystreet/questionnaire/index.html:90 +msgid "Photo:" +msgstr "Foto:" + +#: templates/web/default/alert/list.html:26 +msgid "Photos of recent nearby reports" +msgstr "Fotos notificaciones cercanas recientes" + +#: 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:89 +#: templates/web/zurich/admin/report_edit.html:92 +msgid "Planned" +msgstr "Planificado" + +#: templates/web/fixmystreet/questionnaire/index.html:44 +msgid "Please <a class=\"tab_link\" href=\"#report\">take a look</a> at the updates that have been left." +msgstr "Por favor, <a class=\"tab_link\" href=\"#report\"> eche un vistazo</a> a las actualizaciones que han sido dejadas." + +#: templates/web/default/report/new/notes.html:6 +#: templates/web/fixmystreet/report/new/notes.html:6 +#: templates/web/oxfordshire/report/new/notes.html:5 +msgid "Please be polite, concise and to the point." +msgstr "Por favor, sea cortés, conciso y vaya al grano." + +#: templates/web/default/auth/change_password.html:12 +#: templates/web/default/auth/change_password.html:17 +msgid "Please check the passwords and try again" +msgstr "Por favor, comprueba la contraseña e inténtalo de nuevo." + +#: templates/web/default/auth/token.html:14 +msgid "Please check your email" +msgstr "Por favor, consulte su email" + +#: templates/web/default/auth/general.html:14 +#: templates/web/default/auth/general.html:8 +#: templates/web/fixmystreet/auth/general.html:15 +#: templates/web/fixmystreet/auth/general.html:9 +#: templates/web/seesomething/auth/general.html:15 +#: templates/web/seesomething/auth/general.html:9 +#: templates/web/zurich/auth/general.html:3 +#: templates/web/zurich/auth/general.html:9 +msgid "Please check your email address is correct" +msgstr "Por favor, compruebe que su dirección de email es correcta" + +#: 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 "Por favor, elija una categoría" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:387 +msgid "Please choose a property type" +msgstr "Por favor, elija un tipo de propiedad" + +#: templates/web/seesomething/js/translation_strings.html:6 +msgid "Please choose a transport category" +msgstr "" + +#: templates/web/seesomething/js/translation_strings.html:7 +msgid "Please choose an incident category" +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”" +msgstr "Por favor, describa la ubicación exacta de la notificación. Ejemplo: \"2 colchones vertidos en la calle en el número 19 de la Calle Bellavista\"" + +#: templates/web/default/contact/blurb.html:2 +msgid "" +"Please do <strong>not</strong> report problems through this form; messages go to\n" +"the team behind FixMyStreet, not a council. To report a problem,\n" +"please <a href=\"/\">go to the front page</a> and follow the instructions." +msgstr "" +"Por favor <strong>no</strong> notifique de problemas a través de este formulario, los mensajes van a\n" +"el equipo de FixMyStreet, no a un Ayuntamiento. Para notificar un problema,\n" +"por favor <a href=\"/\">vaya a la página principal </a> y siga las instrucciones." + +#: templates/web/default/report/new/notes.html:7 +#: templates/web/fixmystreet/report/new/notes.html:7 +#: templates/web/oxfordshire/report/new/notes.html:6 +msgid "Please do not be abusive — abusing your council devalues the service for all users." +msgstr "" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:46 +msgid "Please do not give address or personal information in this section." +msgstr "" + +#: 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: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" +msgstr "Por favor, introduce una dirección de email válida" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:346 +#: perllib/FixMyStreet/App/Controller/Contact.pm:107 +msgid "Please enter a valid email address" +msgstr "Por favor, introduzca una dirección válida de email" + +#: 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" + +#: 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 "Por favor, introduzca su dirección de email" + +#: templates/web/bromley/report/new/fill_in_details_form.html:149 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:151 +#: templates/web/seesomething/report/new/fill_in_details_form.html:85 +#: templates/web/zurich/report/new/fill_in_details_form.html:92 +msgid "Please enter your email address" +msgstr "Email" + +#: 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: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: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: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:24 +#: templates/web/oxfordshire/js/translation_strings.html:18 +msgid "Please enter your title" +msgstr "Por favor, introduzca su 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 "" + +#: templates/web/emptyhomes/report/new/fill_in_details_text.html:1 +msgid "" +"Please fill in details of the empty property below, saying what type of\n" +"property it is e.g. an empty home, block of flats, office etc. Tell us\n" +"something about its condition and any other information you feel is relevant.\n" +"There is no need for you to give the exact address. Please be polite, concise\n" +"and to the point; writing your message entirely in block capitals makes it hard\n" +"to read, as does a lack of punctuation." +msgstr "" +"Por favor, complete los detalles de la propiedad vacía abajo, indicando qué tipo de\n" +"propiedad es, por ejemplo una casa vacía, bloque de pisos, oficinas, etc Díganos\n" +"salgo acerca de su condición y cualquier otra información que considere relevante. \n" +"No hay necesidad de dar la dirección exacta. Por favor, sea cortés, conciso\n" +"y al grano; al escribir su mensaje en mayúsculas hace que sea difícil\n" +" su lectura, al igual que la falta de puntuación correcta." + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/default/report/new/fill_in_details_text.html:11 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:10 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:8 +msgid "Please fill in details of the problem below." +msgstr "Por favor, rellene los datos del siguiente problema." + +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:3 +msgid "" +"Please fill in details of the problem below. Leave as much detail as you can, \n" +"and if possible describe the exact location of\n" +"the problem (e.g. if there is a streetlight number or road name)." +msgstr "" + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/default/report/new/fill_in_details_text.html:3 +msgid "" +"Please fill in details of the problem below. The council won't be able\n" +"to help unless you leave as much detail as you can, so please describe the exact location of\n" +"the problem (e.g. on a wall), what it is, how long it has been there, a description (and a\n" +"photo of the problem if you have one), etc." +msgstr "" +"Por favor, rellene los datos del siguiente problema. El Ayuntamiento no podrá\n" +"ayudar a menos que deje todos los detalles que pueda, por favor describa la ubicación exacta del\n" +"problema (por ejemplo, sobre una pared), lo que es, cuánto tiempo ha estado allí, una descripción (y una \n" +"foto del problema, si tuviera una), etc." + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:70 +#: templates/web/seesomething/report/new/fill_in_details_form.html:20 +#: templates/web/zurich/report/new/fill_in_details_form.html:46 +msgid "Please fill in details of the problem." +msgstr "Por favor, rellene los datos del problema." + +#: templates/web/bromley/report/new/fill_in_details_form.html:28 +#: templates/web/default/report/new/fill_in_details_form.html:27 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:26 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:35 +#: templates/web/zurich/report/new/fill_in_details_form.html:20 +msgid "Please fill in the form below with details of the problem, and describe the location as precisely as possible in the details box." +msgstr "Por favor, complete el siguiente formulario con los detalles del problema y describa la ubicación con la mayor precisión posible en el cuadro de detalles." + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:243 +msgid "Please indicate whether you'd like to receive another questionnaire" +msgstr "Por favor, indique si desea otro cuestionario" + +#: templates/web/fixmystreet/report/updates-sidebar-notes.html:3 +msgid "Please note that updates are not sent to the council." +msgstr "Tenga en cuenta que las actualizaciones no se envían al Ayuntamiento." + +#: templates/web/default/report/update-form.html:7 +msgid "Please note that updates are not sent to the council. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgstr "Tenga en cuenta que las actualizaciones no se envían al Ayuntamiento. Si usted deja su nombre será público. Su información sólo será usada de acuerdo con nuestra <a href=\"/faq#privacy\">política de privacidad</ a>" + +#: templates/web/barnet/report/updates-sidebar-notes.html:1 +msgid "Please note that updates are not sent to the relevant department. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgstr "Tenga en cuenta que las actualizaciones no se envían al departamento pertinente. Si usted deja su nombre será público. Su información sólo será usada de acuerdo con nuestra <a href=\"/faq#privacy\">política de privacidad</ a>" + +#: templates/web/bromley/report/new/fill_in_details_form.html:23 +#: templates/web/default/report/new/fill_in_details_form.html:5 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:5 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:26 +#: templates/web/zurich/report/new/fill_in_details_form.html:11 +msgid "Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit." +msgstr "Por favor, tenga en cuenta la notificación <strong>no ha sido enviada aún</ strong>. Elija una categoría y añada más información a continuación antes que enviar." + +#: templates/web/default/report/new/notes.html:1 +#: templates/web/fixmybarangay/report/new/notes.html:1 +#: templates/web/fixmystreet/report/new/notes.html:1 +#: templates/web/oxfordshire/report/new/notes.html:1 +msgid "Please note:" +msgstr "Por favor, tenga en cuenta:" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:246 +msgid "Please provide some explanation as to why you're reopening this report" +msgstr "Por favor, explique por qué está reabriendo esta notificación." + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:253 +msgid "Please provide some text as well as a photo" +msgstr "Proporcione un texto así como una foto" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:116 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:239 +msgid "Please say whether you've ever reported a problem to your council before" +msgstr "Por favor, diga si alguna vez ha notificado de un problema al Ayuntamiento con anterioridad" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:80 +msgid "Please select the feed you want" +msgstr "Por favor, seleccione el feed que desea" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:118 +msgid "Please select the type of alert you want" +msgstr "Por favor, seleccione el tipo de alerta que desea" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:235 +msgid "Please state whether or not the problem has been fixed" +msgstr "Por favor, indique si el problema se ha solucionado" + +#: templates/web/default/questionnaire/index.html:50 +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:176 +msgid "Please upload a JPEG image only" +msgstr "Por favor, suba una imagen JPEG" + +#: perllib/FixMyStreet/App/Controller/Photo.pm:183 +msgid "Please upload a JPEG image only\n" +msgstr "Por favor, suba una imagen JPEG\n" + +#: perllib/FixMyStreet/App/Controller/Contact.pm:98 +msgid "Please write a message" +msgstr "Por favor, escriba un mensaje" + +#: templates/web/bromley/report/display.html:70 +#: templates/web/fixmystreet/report/update-form.html:23 +msgid "Please write your update here" +msgstr "Por favor, escriba su actualización aquí" + +#: templates/web/bromley/report/display.html:123 +#: templates/web/bromley/report/display.html:151 +#: templates/web/bromley/report/display.html:163 +#: templates/web/default/contact/index.html:93 +#: templates/web/default/report/update-form.html:109 +#: templates/web/default/report/update-form.html:131 +#: templates/web/default/report/update-form.html:72 +#: templates/web/fixmystreet/contact/index.html:105 +#: templates/web/fixmystreet/report/update-form.html:123 +#: templates/web/fixmystreet/report/update-form.html:71 +#: templates/web/fixmystreet/report/update-form.html:95 +msgid "Post" +msgstr "Publicar" + +#: templates/web/default/report/updates.html:15 +msgid "Posted anonymously at %s" +msgstr "Publicado de forma anónima en %s" + +#: templates/web/default/report/updates.html:22 +msgid "Posted by %s (<strong>%s</strong>) at %s" +msgstr "Publicado por %s (<strong>%s</strong>) en %s" + +#: templates/web/default/report/updates.html:24 +msgid "Posted by %s at %s" +msgstr "Publicado por %s en %s" + +#: templates/web/default/pagination.html:7 +msgid "Previous" +msgstr "" + +#: 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 "" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:108 +msgid "Private information (not shown on site)" +msgstr "" + +#: templates/web/default/maps/openlayers.html:85 +msgid "Problem" +msgstr "Problema" + +#: templates/web/default/admin/timeline.html:22 +msgid "Problem %d created" +msgstr "Problema %d creado" + +#: templates/web/default/admin/timeline.html:24 +msgid "Problem %s confirmed" +msgstr "Problema %s confirmado" + +#: templates/web/default/admin/timeline.html:26 +msgid "Problem %s sent to council %s" +msgstr "Problema %s enviado al Ayuntamiento %s" + +#: 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:950 +msgid "Problem marked as open." +msgstr "Problema marcado como abierto." + +#: templates/web/default/admin/questionnaire.html:21 +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:10 +msgid "Problems" +msgstr "Problemas" + +#: templates/web/default/around/_updates.html:1 +msgid "Problems in this area" +msgstr "Problemas en este área" + +#: templates/web/bromley/report/display.html:31 +#: templates/web/fixmystreet/around/tabbed_lists.html:4 +#: templates/web/fixmystreet/report/display.html:46 +msgid "Problems nearby" +msgstr "Problemas cercanos" + +#: templates/web/fixmystreet/around/tabbed_lists.html:3 +#: templates/web/fixmystreet/report/display.html:44 +msgid "Problems on the map" +msgstr "Problemas en el mapa" + +#: db/alert_types.pl:14 +msgid "Problems recently reported fixed on FixMyStreet" +msgstr "Problemas recientemente notificados como arreglados en FixMyStreet" + +#: templates/web/default/alert/_list.html:19 +#: templates/web/fixmystreet/alert/_list.html:21 +msgid "Problems within %.1fkm of this location" +msgstr "Problemas en %.1fkm alrededor" + +#: perllib/FixMyStreet/Cobrand/Default.pm:626 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:109 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:155 +#: perllib/FixMyStreet/Cobrand/UK.pm:228 +msgid "Problems within %s" +msgstr "Problemas en %s" + +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:117 +#: perllib/FixMyStreet/Cobrand/UK.pm:242 +msgid "Problems within %s ward" +msgstr "Problemas en el barrio %s" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:24 +msgid "Problems within %s, FixMyStreet" +msgstr "Problemas en %s, FixMyStreet" + +#: templates/web/default/alert/_list.html:40 +#: templates/web/fixmybarangay/alert/_list.html:13 +#: templates/web/fixmystreet/alert/_list.html:42 +msgid "Problems within the boundary of:" +msgstr "Problemas en los alrededores de:" + +#: db/alert_types_eha.pl:8 +msgid "Properties recently reported as put back to use on reportemptyhomes.com" +msgstr "Propiedades recientemente notificadas como vueltas a usar en reportemptyhomes.com" + +#: templates/web/default/admin/report_edit.html:32 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:115 +msgid "Property address:" +msgstr "" + +#: templates/web/default/report/new/category.html:8 +msgid "Property type:" +msgstr "Tipo de propiedad:" + +#: templates/web/bromley/report/new/fill_in_details_form.html:52 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:64 +msgid "Provide a title" +msgstr "Proporcionar un título" + +#: templates/web/bromley/report/display.html:57 +#: templates/web/default/report/update-form.html:3 +#: templates/web/fixmystreet/report/update-form.html:4 +msgid "Provide an update" +msgstr "Proporcionar una actualización" + +#: templates/web/fixmystreet/auth/general.html:53 +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 "" + +#: 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." +msgstr "Proporcionar una contraseña es opcional, pero al hacerlo le permitirá informar más fácilmente problemas en el futuro, dejar actualizaciones y administrar sus notificaciones." + +#: templates/web/bromley/report/display.html:144 +#: templates/web/default/report/new/fill_in_details_form.html:173 +#: templates/web/default/report/update-form.html:128 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:202 +#: templates/web/fixmystreet/report/update-form.html:116 +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:60 +#: templates/web/default/admin/body.html:73 +msgid "Public" +msgstr "" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:44 +msgid "Public information (shown on site)" +msgstr "" + +#: 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:80 +#: templates/web/zurich/admin/stats.html:38 +msgid "Publish photo" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:222 +msgid "Publish the response" +msgstr "" + +#: templates/web/default/questionnaire/completed.html:1 +#: templates/web/default/questionnaire/completed.html:2 +#: templates/web/default/questionnaire/index.html:0 +#: templates/web/default/questionnaire/index.html:14 +#: templates/web/default/questionnaire/index.html:4 +#: templates/web/fixmystreet/questionnaire/index.html:0 +#: templates/web/fixmystreet/questionnaire/index.html:14 +#: templates/web/fixmystreet/questionnaire/index.html:32 +#: templates/web/fixmystreet/questionnaire/index.html:4 +msgid "Questionnaire" +msgstr "Cuestionario" + +#: templates/web/default/admin/timeline.html:30 +msgid "Questionnaire %d answered for problem %d, %s to %s" +msgstr "Cuestionario %d respuesto para el problema de %d, %s para %s" + +#: templates/web/default/admin/timeline.html:28 +msgid "Questionnaire %d sent for problem %d" +msgstr "Cuestionario %d enviado para el problema %d" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:192 +msgid "Questionnaire filled in by problem reporter" +msgstr "Cuestionario cumplimentado por el notificador problema" + +#: templates/web/bromley/report/display.html:37 +#: templates/web/default/alert/_list.html:21 +#: templates/web/default/around/display_location.html:1 +#: templates/web/default/around/display_location.html:3 +#: templates/web/default/report/display.html:46 +#: templates/web/default/reports/_rss.html:1 +#: templates/web/fixmystreet/alert/_list.html:22 +#: templates/web/fixmystreet/alert/updates.html:9 +#: templates/web/fixmystreet/report/display.html:61 +msgid "RSS feed" +msgstr "Feed RSS" + +#: perllib/FixMyStreet/Cobrand/UK.pm:271 perllib/FixMyStreet/Cobrand/UK.pm:283 +msgid "RSS feed for %s" +msgstr "Feed RSS para %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:277 perllib/FixMyStreet/Cobrand/UK.pm:289 +msgid "RSS feed for %s ward, %s" +msgstr "Feed RSS para %s del barrio, %s" + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:171 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:179 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:189 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:197 +#: perllib/FixMyStreet/Cobrand/UK.pm:297 perllib/FixMyStreet/Cobrand/UK.pm:309 +msgid "RSS feed of %s" +msgstr "Feed RSS para %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:302 perllib/FixMyStreet/Cobrand/UK.pm:314 +msgid "RSS feed of %s, within %s ward" +msgstr "Feed RSS para %s, en el barrio %s" + +#: templates/web/default/alert/_list.html:21 +#: templates/web/fixmystreet/alert/_list.html:22 +msgid "RSS feed of nearby problems" +msgstr "Feed RSS de los problemas más cercanos" + +#: templates/web/default/reports/_rss.html:1 +msgid "RSS feed of problems in this %s" +msgstr "Feed RSS de los problemas en este %s" + +#: perllib/FixMyStreet/Cobrand/Default.pm:627 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:110 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:154 +#: perllib/FixMyStreet/Cobrand/UK.pm:235 +msgid "RSS feed of problems within %s" +msgstr "Feed RSS de los problemas dentro de %s" + +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:116 +#: perllib/FixMyStreet/Cobrand/UK.pm:241 +msgid "RSS feed of problems within %s ward" +msgstr "Feed RSS feed de los problemas dentro del barrio %s" + +#: templates/web/default/around/display_location.html:1 +#: templates/web/default/around/display_location.html:4 +msgid "RSS feed of recent local problems" +msgstr "Feed RSS de los problemas locales más recientes" + +#: templates/web/bromley/report/display.html:37 +#: templates/web/default/report/display.html:46 +#: templates/web/fixmystreet/alert/updates.html:9 +#: templates/web/fixmystreet/report/display.html:61 +msgid "RSS feed of updates to this problem" +msgstr "Feed RSS de actualizaciones sobre este problema" + +#: templates/web/bromley/report/display.html:39 +#: templates/web/default/alert/updates.html:9 +#: templates/web/default/report/display.html:37 +#: templates/web/fixmystreet/alert/updates.html:14 +#: templates/web/fixmystreet/report/display.html:63 +msgid "Receive email when updates are left on this problem." +msgstr "Reciba un correo cuando se dejen actualizaciones sobre este problema." + +#: templates/web/default/around/display_location.html:0 +#: templates/web/default/around/display_location.html:32 +msgid "Recent local problems, FixMyStreet" +msgstr "Problemas locales recientes, FixMyStreet" + +#: templates/web/default/reports/index.html:19 +#: templates/web/fixmybarangay/reports/index.html:19 +msgid "Recently <br>fixed" +msgstr "Recientemente <br>arreglado" + +#: templates/web/fiksgatami/nn/reports/index.html:13 +#: templates/web/fiksgatami/reports/index.html:13 +msgid "Recently fixed" +msgstr "Recientemente arreglado" + +#: templates/web/default/index.html:35 templates/web/emptyhomes/index.html:24 +#: templates/web/fixmystreet/index.html:45 +msgid "Recently reported problems" +msgstr "Problemas recientemente notificados" + +#: templates/web/default/report/new/notes.html:9 +#: templates/web/fixmystreet/report/new/notes.html:10 +msgid "Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site remember that you can contact your council directly using their own website." +msgstr "Recuerde que FixMyStreet es principalmente para informar sobre problemas físicos que pueden ser arreglados. Si su problema no es apropiado para ser presentado a través de este sitio recuerde que puede ponerse en contacto directamente Ayuntamiento mediante su página web." + +#: templates/web/fixmybarangay/report/new/notes.html:9 +msgid "Remember that, for the pilot project, FixMyBarangay is only for reporting potholes and streetlights in bgy. Luz or Basak San Nicolas." +msgstr "" + +#: templates/web/default/admin/report_blocks.html:16 +msgid "Remove flag" +msgstr "Eliminar Marca" + +#: templates/web/default/admin/report_edit.html:89 +#: templates/web/default/admin/update_edit.html:57 +#: templates/web/zurich/admin/update_edit.html:35 +msgid "Remove photo (can't be undone!)" +msgstr "Quitar foto (¡no se puede deshacer!)" + +#: templates/web/emptyhomes/header.html:12 +msgid "Report Empty Homes" +msgstr "Notificar viviendas vacías" + +#: 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 "Notificar un problema" + +#: templates/web/bromley/report/display.html:28 +#: templates/web/fixmystreet/report/display.html:35 +msgid "Report abuse" +msgstr "Denunciar abuso" + +#: templates/web/default/report_created.html:1 +#: templates/web/default/report_created.html:3 +#: templates/web/seesomething/report_created.html:0 +#: templates/web/seesomething/report_created.html:8 +msgid "Report created" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Rss.pm:295 +msgid "Report on %s" +msgstr "Notificar sobre %s" + +#: templates/web/default/index.html:14 templates/web/emptyhomes/index.html:5 +#: templates/web/fixmystreet/around/intro.html:1 +#: templates/web/stevenage/around/intro.html:1 +#: templates/web/zurich/around/intro.html:1 +msgid "Report, view, or discuss local problems" +msgstr "Notifique, vea o discuta problemas locales" + +#: templates/web/default/my/my.html:74 +msgid "Reported %s" +msgstr "Notificado %s" + +#: templates/web/default/my/my.html:72 +msgid "Reported %s, to %s" +msgstr "Notificados %s, a %s" + +#: 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 "Notificado anónimamente en %s" + +#: templates/web/default/admin/questionnaire.html:5 +#: templates/web/default/questionnaire/index.html:77 +#: templates/web/fixmystreet/questionnaire/index.html:71 +msgid "Reported before" +msgstr "Notificado con anterioridad" + +#: 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" + +#: templates/web/zurich/report/_main.html:2 +msgid "Reported in the %s category" +msgstr "" + +#: 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: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: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 "Notificar un problema" + +#: 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: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 +msgid "Reports awaiting approval" +msgstr "" + +#: templates/web/default/around/tabbed_lists.html:3 +msgid "Reports on and around the map" +msgstr "Notificaciones en y alrededor del mapa" + +#: templates/web/zurich/admin/index-sdm.html:10 +msgid "Reports published" +msgstr "" + +#: templates/web/default/admin/report_edit.html:71 +msgid "Resend report" +msgstr "Vuelva a enviar la notificación" + +#: templates/web/default/js/translation_strings.html:28 +#: templates/web/oxfordshire/js/translation_strings.html:22 +msgid "Right place?" +msgstr "" + +#: perllib/FixMyStreet/Geocode/OSM.pm:173 +msgid "Road operator for this named road (derived from road reference number and type): %s" +msgstr "Operador de camino operador para este camino (derivado del número de referencia y tipo del camino): %s" + +#: perllib/FixMyStreet/Geocode/OSM.pm:170 +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: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:1377 +#: templates/web/default/admin/report_edit.html:86 +#: templates/web/zurich/admin/report_edit.html:77 +msgid "Rotate Right" +msgstr "" + +#: templates/web/default/admin/body_edit.html:76 +msgid "Save changes" +msgstr "Guardar cambios" + +#: templates/web/default/admin/reports.html:1 +#: templates/web/zurich/admin/reports.html:1 +msgid "Search Reports" +msgstr "Buscar Notificaciones" + +#: templates/web/default/admin/users.html:1 +msgid "Search Users" +msgstr "Buscar Usuarios" + +#: templates/web/zurich/header.html:77 +msgid "Search reports" +msgstr "" + +#: templates/web/default/admin/reports.html:5 +#: templates/web/default/admin/users.html:8 +#: templates/web/zurich/admin/reports.html:5 +msgid "Search:" +msgstr "Buscar:" + +#: 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:71 +#: templates/web/zurich/admin/body-form.html:26 +msgid "Select an area" +msgstr "" + +#: templates/web/default/alert/_list.html:8 +#: templates/web/fixmystreet/alert/_list.html:10 +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:664 +msgid "Sent to %s %s later" +msgstr "Enviado a %s %s después" + +#: templates/web/default/admin/report_edit.html:71 +msgid "Sent:" +msgstr "Enviado:" + +#: templates/web/default/admin/report_edit.html:73 +#: templates/web/zurich/admin/stats.html:45 +msgid "Service:" +msgstr "Servicio:" + +#: templates/web/fixmystreet/report/display.html:41 +msgid "Share" +msgstr "" + +#: templates/web/bromley/report/display.html:205 +#: templates/web/bromley/report/new/fill_in_details_form.html:129 +#: templates/web/bromley/report/new/fill_in_details_form.html:175 +#: templates/web/default/report/new/fill_in_details_form.html:210 +#: templates/web/default/report/update-form.html:157 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:129 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:197 +#: templates/web/fixmystreet/report/update-form.html:144 +msgid "Show my name publicly" +msgstr "Mostrar mi nombre en público" + +#: templates/web/default/around/display_location.html:69 +msgid "Show old" +msgstr "Mostrar antiguos" + +#: templates/web/default/around/display_location.html:60 +msgid "Show pins" +msgstr "Mostrar pines" + +#: templates/web/default/auth/general.html:3 +#: templates/web/default/auth/general.html:49 +#: templates/web/fixmybarangay/header.html:70 +#: templates/web/fixmystreet/auth/general.html:3 +#: templates/web/fixmystreet/auth/general.html:42 +#: templates/web/fixmystreet/auth/general.html:62 +#: templates/web/fixmystreet/header.html:54 +#: templates/web/oxfordshire/header.html:115 +#: templates/web/seesomething/auth/general.html:3 +#: templates/web/seesomething/auth/general.html:39 +#: templates/web/stevenage/header.html:101 +#: templates/web/zurich/auth/general.html:18 +#: templates/web/zurich/auth/general.html:35 +msgid "Sign in" +msgstr "Registrarse" + +#: templates/web/default/auth/general.html:74 +msgid "Sign in by email" +msgstr "Registrarse con email" + +#: templates/web/default/auth/general.html:1 +#: templates/web/fixmystreet/auth/general.html:1 +#: templates/web/seesomething/auth/general.html:1 +#: templates/web/zurich/auth/general.html:1 +msgid "Sign in or create an account" +msgstr "Entrar o crear una cuenta" + +#: templates/web/bromley/auth/sign_out.html:1 +#: templates/web/default/auth/sign_out.html:1 +#: templates/web/default/header.html:30 +#: templates/web/emptyhomes/header.html:46 +#: templates/web/fiksgatami/header.html:22 +#: templates/web/fiksgatami/nn/header.html:22 +#: templates/web/lichfielddc/header.html:177 +#: templates/web/reading/header.html:33 +#: templates/web/seesomething/auth/sign_out.html:1 +#: templates/web/zurich/auth/sign_out.html:1 +msgid "Sign out" +msgstr "Salir" + +#: templates/web/default/header.html:29 +#: templates/web/emptyhomes/header.html:45 +#: templates/web/fiksgatami/header.html:21 +#: templates/web/fiksgatami/nn/header.html:21 +#: templates/web/lichfielddc/header.html:177 +#: templates/web/reading/header.html:32 +msgid "Signed in as %s" +msgstr "Conectado como %s" + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +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" +msgstr "Algunas fotos de notificaciones recientes" + +#: perllib/FixMyStreet/App/View/Email.pm:32 +#: perllib/FixMyStreet/App/View/Web.pm:44 +msgid "Some text to localize" +msgstr "Algún texto para localizar" + +#: perllib/FixMyStreet/Cobrand/UK.pm:93 +msgid "Sorry, that appears to be a Crown dependency postcode, which we don't cover." +msgstr "Lo sentimos, eso parece ser un código postal dependiente de La Corona, los cuales no son soportados." + +#: templates/web/default/tokens/abuse.html:5 +msgid "Sorry, there has been an error confirming your problem." +msgstr "Lo sentimos, hubo un error confirmando su problema." + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:215 +#: perllib/FixMyStreet/Geocode.pm:28 perllib/FixMyStreet/Geocode/Bing.pm:58 +#: perllib/FixMyStreet/Geocode/Google.pm:74 +#: perllib/FixMyStreet/Geocode/OSM.pm:66 +msgid "Sorry, we could not find that location." +msgstr "Lo sentimos, no hemos podido encontrar ese lugar." + +#: perllib/FixMyStreet/Geocode/Bing.pm:53 +#: perllib/FixMyStreet/Geocode/Google.pm:69 +#: perllib/FixMyStreet/Geocode/Zurich.pm:87 +msgid "Sorry, we could not parse that location. Please try again." +msgstr "Lo sentimos, pero no pudo analizar esa ubicación. Por favor, inténtelo de nuevo." + +#: templates/web/fiksgatami/footer.html:16 +#: templates/web/fiksgatami/nn/footer.html:16 +msgid "Source code" +msgstr "Código fuente" + +#: templates/web/default/admin/stats.html:64 +#, fuzzy +msgid "Start Date:" +msgstr "Día de inicio:" + +#: 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 "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: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: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 "Estadísticas" + +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Status" +msgstr "" + +#: templates/web/default/report/updates.html:10 +msgid "Still open, via questionnaire, %s" +msgstr "Sigue abierta, a través de cuestionario, %s" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370 +msgid "Subcategory: %s" +msgstr "" + +#: templates/web/zurich/admin/index-dm.html:27 +msgid "Subdivision/Body" +msgstr "" + +#: templates/web/bromley/report/new/fill_in_details_form.html:48 +#: templates/web/fixmystreet/contact/index.html:91 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:60 +msgid "Subject" +msgstr "Título:" + +#: 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 "Título:" + +#: 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 "Enviar" + +#: 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 "Enviar Cambios" + +#: templates/web/default/questionnaire/index.html:116 +#: templates/web/fixmystreet/questionnaire/index.html:105 +msgid "Submit questionnaire" +msgstr "Enviar cuestionario" + +#: 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 "" + +#: templates/web/bromley/report/display.html:44 +#: templates/web/default/alert/updates.html:17 +#: templates/web/default/report/display.html:42 +#: templates/web/fixmystreet/alert/updates.html:23 +#: templates/web/fixmystreet/report/display.html:68 +msgid "Subscribe" +msgstr "Suscribirse" + +#: templates/web/default/alert/_list.html:97 +#: templates/web/fixmybarangay/alert/_list.html:42 +#: templates/web/fixmystreet/alert/_list.html:92 +msgid "Subscribe me to an email alert" +msgstr "Suscríbeme a alertas por email" + +#: templates/web/fixmybarangay/alert/_list.html:6 +msgid "Subscribe to an alert based upon what baranagay you’re in:" +msgstr "Suscríbeme a una alerta basada en la baranagay en la que estás:" + +#: 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 "Resumen" + +#: templates/web/default/reports/index.html:1 +#: templates/web/emptyhomes/reports/index.html:1 +#: templates/web/fiksgatami/nn/reports/index.html:1 +#: templates/web/fiksgatami/reports/index.html:1 +#: templates/web/fixmybarangay/reports/index.html:1 +#: templates/web/zurich/reports/index.html:0 +#: templates/web/zurich/reports/index.html:4 +msgid "Summary reports" +msgstr "Resumen de notificaciones" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1179 +msgid "Survey" +msgstr "" + +#: templates/web/default/admin/questionnaire.html:1 +msgid "Survey Results" +msgstr "Resultados de la Encuesta" + +#: 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" + +#: templates/web/default/admin/body.html:18 +msgid "Text only version" +msgstr "Versión solo texto" + +#: templates/web/default/admin/update_edit.html:20 +#: templates/web/zurich/admin/update_edit.html:12 +msgid "Text:" +msgstr "Texto:" + +#: templates/web/default/tokens/confirm_update.html:7 +#: templates/web/default/tokens/confirm_update.html:8 +msgid "Thank you — you can <a href=\"%s\">view your updated problem</a> on the site." +msgstr "Gracias - puede <a href=\"%s\">ver su problema actualizado</a> en el sitio web." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:6 +#: templates/web/emptyhomes/tokens/confirm_problem.html:8 +msgid "Thank you for reporting an empty property on ReportEmptyHomes.com. We have emailed the lead officer for empty homes in the council responsible with details, and asked them to do whatever they can to get the empty property back into use as soon as possible." +msgstr "Gracias por informarnos de una propiedad vacía en ReportEmptyHomes.com. Hemos escrito a la oficina principal de viviendas vacías en el Ayuntamiento, responsable por los detalles, y les pedimos que hicieran todo lo posible para volver a poner la propiedad vacía en uso lo antes posible." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:30 +#: templates/web/emptyhomes/tokens/confirm_problem.html:31 +msgid "" +"Thank you for reporting this empty property on ReportEmptyHomes.com.\n" +"At present the report cannot be sent through to the council for this area. We\n" +"are working with councils to link them into the system so that as many areas\n" +"as possible will be covered." +msgstr "" +"Gracias por notificarnos sobre este inmueble vacío en ReportEmptyHomes.com.\n" +"Por el momento la notificación no puede ser enviada al Ayuntamiento para este área. Estamos\n" +" trabajando con el Ayuntamiento poder cubrir tantas areas\n" +" como nos sea posible." + +#: templates/web/default/tokens/error.html:7 +msgid "Thank you for trying to confirm your update or problem. We seem to have an error ourselves though, so <a href=\"%s\">please let us know what went on</a> and we'll look into it." +msgstr "Gracias por tratar de confirmar la actualización o problema. Parece que tenemos un error interno, así que <a href=\"%s\"> por favor, háganos saber lo que pasó </a> y echaremos un vistazo." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:24 +#: templates/web/emptyhomes/tokens/confirm_problem.html:26 +msgid "Thank you for using ReportEmptyHomes.com. Your action is already helping to resolve the UK’s empty homes crisis." +msgstr "Gracias por usar ReportEmptyHomes.com. Su acción ya está ayudando a resolver la crisis de viviendas vacías en UK." + +#: templates/web/fixmystreet/around/around_index.html:27 +msgid "Thanks for uploading your photo. We now need to locate your problem, so please enter a nearby street name or postcode in the box above :" +msgstr "Gracias por subir tu foto. Ahora necesitamos situar el problema, así que por favor escriba el nombre o código postal de una calle cercana en el cuadro de arriba:" + +#: templates/web/default/contact/submit.html:8 +msgid "Thanks for your feedback. We'll get back to you as soon as we can!" +msgstr "Gracias por tus comentarios. ¡Nos pondremos en contacto con usted tan pronto como nos sea posible!" + +#: templates/web/default/questionnaire/creator_fixed.html:9 +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: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." + +#: perllib/FixMyStreet/App/Controller/Council.pm:90 +msgid "That location does not appear to be covered by a council; perhaps it is offshore or outside the country. Please try again." +msgstr "Esa localización no parece estar cubierta por un Ayuntamiento, tal vez esté en alta mar o fuera del país. Por favor, inténtelo de nuevo." + +#: perllib/FixMyStreet/App/Controller/Location.pm:123 +msgid "That location does not appear to be in the UK; please try again." +msgstr "Esa localización no parece ser de UK, por favor inténtelo de nuevo." + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:63 +#: perllib/FixMyStreet/Cobrand/UK.pm:86 +msgid "That postcode was not recognised, sorry." +msgstr "Ese código postal no fue reconocido, lo siento." + +#: perllib/FixMyStreet/App/Controller/Admin.pm:704 +msgid "That problem will now be resent." +msgstr "El problema ahora será reenviado." + +#: perllib/FixMyStreet/App/Controller/Report.pm:117 +msgid "That report cannot be viewed on %s." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report.pm:111 +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 — <em>please</em> be patient." +msgstr "El email de confirmación <strong>puede</strong> tardar unos minutos en llegar - <em>por favor</em>, se paciente." + +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:3 +msgid "The council won’t be able to help unless you leave as much detail as you can. Please describe the exact location of the problem (e.g. on a wall), what it is, how long it has been there, a description (and a photo of the problem if you have one), etc." +msgstr "" + +#: templates/web/fixmystreet/questionnaire/index.html:43 +msgid "The details of your problem are available from the other tab above." +msgstr "Los detalles de su problema están disponibles en la otra pestaña de arriba" + +#: templates/web/default/questionnaire/index.html:49 +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" +msgstr "El error fue: %s" + +#: templates/web/default/open311/index.html:88 +msgid "The following Open311 v2 attributes are returned for each request: service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code and service_name." +msgstr "Los siguientes atributos Open311 v2 son devueltos para cada petición: service_request_id, descripción, lat, long, media_url, status, requested_datetime, updated_datetime, service_code y service_name." + +#: perllib/FixMyStreet/Geocode/OSM.pm:165 +msgid "The following information about the nearest road might be inaccurate or irrelevant, if the problem is close to several roads or close to a road without a name registered in OpenStreetMap." +msgstr "La información siguiente sobre la carretera más cercana podría ser incorrecta o irrelevante si el problema se encuentra cerca de varias carreteras o cerca de una carretera sin nombre registrado en OpenStreetMap." + +#: db/alert_types.pl:19 db/alert_types.pl:23 db/alert_types.pl:27 +#: db/alert_types.pl:31 +msgid "The latest local problems reported by users" +msgstr "Últimos problemas notificados por los usuarios locales" + +#: db/alert_types_eha.pl:13 +msgid "The latest local reports reported by users" +msgstr "Últimas notificaciones locales notificadas por los usuarios" + +#: db/alert_types.pl:35 +msgid "The latest problems for {{COUNCIL}} reported by users" +msgstr "Últimos problemas para {{COUNCIL}} notificados por los usuarios" + +#: db/alert_types.pl:39 +msgid "The latest problems for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "Últimos problemas para {{CONSEJO}} en el barrio de {{WARD}} notificados por los usuarios" + +#: db/alert_types.pl:11 +msgid "The latest problems reported by users" +msgstr "Últimos problemas notificados por los usuarios" + +#: db/alert_types.pl:15 +msgid "The latest problems reported fixed by users" +msgstr "Últimos problemas notificados por los usuarios como arreglados" + +#: db/alert_types.pl:43 +msgid "The latest problems within {{NAME}}'s boundary reported by users" +msgstr "Últimos problemas dentro de los límites de {{NAME}} notificados por los usuarios" + +#: db/alert_types_eha.pl:9 +msgid "The latest properties reported back to use by users" +msgstr "Últimas propiedades notificadas por los usuarios como de en uso de nuevo" + +#: db/alert_types_eha.pl:20 +msgid "The latest reports for {{COUNCIL}} reported by users" +msgstr "Últimas notificaciones para {{Ayuntamiento}} notificadas por los usuarios" + +#: db/alert_types_eha.pl:24 +msgid "The latest reports for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "Últimas notificaciones de {{COUNCIL}} en el barrio de {{WARD}} notificadas por los usuarios" + +#: db/alert_types_eha.pl:28 +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" +msgstr "Las contraseñas no coinciden." + +#: templates/web/default/errors/page_error_404_not_found.html:10 +#: templates/web/default/errors/page_error_404_not_found.html:12 +msgid "The requested URL '%s' was not found on this server" +msgstr "La URL '%s' solicitada no fue encontrada en el servidor" + +#: templates/web/default/alert/_list.html:14 +#: templates/web/fixmystreet/alert/_list.html:16 +msgid "The simplest alert is our geographic one:" +msgstr "La alerta más sencilla es nuestra alerta geográfica:" + +#: templates/web/barnet/report/new/councils_text_all.html:3 +#: templates/web/default/report/new/councils_extra_text.html:1 +#: templates/web/default/report/new/councils_text_some.html:10 +#: templates/web/default/report/new/councils_text_some.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:17 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:12 +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: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." + +#: perllib/FixMyStreet/App/Controller/Contact.pm:116 +#: perllib/FixMyStreet/App/Controller/Dashboard.pm:59 +msgid "There was a problem showing this page. Please try again later." +msgstr "Hubo un problema mostrando esta página. Por favor, inténtelo de nuevo más tarde." + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:747 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:134 +#: templates/web/default/auth/general.html:23 +#: templates/web/fixmystreet/auth/general.html:24 +#: templates/web/seesomething/auth/general.html:24 +#: templates/web/zurich/auth/general.html:28 +msgid "There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the ‘sign in by email’ section of the form." +msgstr "Hubo un problema con su email/contraseña. Si no recuerda, o no tiene, contraseña por favor rellene la sección 'registrarse con email' del formulario." + +#: perllib/FixMyStreet/App/Controller/Alert.pm:355 +msgid "There was a problem with your email/password combination. Please try again." +msgstr "Hubo un problema con su email/contraseña. Por favor, inténtelo de nuevo." + +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:272 +msgid "There was a problem with your update. Please try again." +msgstr "Hubo un problema con su actualización. Por favor, inténtelo de nuevo." + +#: perllib/FixMyStreet/App/Controller/Contact.pm:120 +msgid "There were problems with your report. Please see below." +msgstr "Hubo problemas con su notificación. Por favor, vea más abajo." + +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:299 +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." + +#: 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: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" +msgstr "Esta información es necesaria" + +#: templates/web/default/debug_header.html:3 +msgid "This is a developer site; things might break at any time, and the database will be periodically deleted." +msgstr "Este es un sitio para desarrolladores, las cosas podrían romperse en cualquier momento, y la base de datos se eliminará periódicamente." + +#: templates/web/fixmybarangay/reports/index.html:7 +msgid "This is a summary of all reports on this site; select a particular barangay to see the reports sent there." +msgstr "" + +#: templates/web/emptyhomes/reports/index.html:4 +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 "" + +#: templates/web/default/reports/index.html:7 +#: templates/web/fiksgatami/nn/reports/index.html:4 +#: templates/web/fiksgatami/reports/index.html:4 +msgid "This is a summary of all reports on this site; select a particular council to see the reports sent there." +msgstr "Este es un resumen de todas las notificaciones sobre este sitio, seleccione un Ayuntamiento especial para ver los informes enviados allí." + +#: templates/web/default/auth/token.html:9 +msgid "This may be because the link is too old or already used, or the address was not copied correctly." +msgstr "" + +#: templates/web/default/report/banner.html:15 +msgid "This problem has been closed" +msgstr "Este problema ha sido cerrado" + +#: templates/web/bromley/report/display.html:98 +#: templates/web/default/report/banner.html:12 +#: templates/web/default/report/update-form.html:48 +#: templates/web/emptyhomes/report/banner.html:3 +#: templates/web/fixmystreet/report/update-form.html:46 +msgid "This problem has been fixed" +msgstr "Este problema se ha arreglado" + +#: templates/web/bromley/report/display.html:92 +#: templates/web/default/report/update-form.html:43 +#: templates/web/fixmystreet/report/update-form.html:40 +msgid "This problem has not been fixed" +msgstr "Este problema no se ha arreglado" + +#: templates/web/default/report/banner.html:19 +msgid "This problem is in progress" +msgstr "Este problema se encuentra en progreso" + +#: templates/web/default/report/banner.html:9 +msgid "This problem is old and of unknown status." +msgstr "Este problema es antiguo y de estatus desconocido." + +#: 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 "" + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:86 +msgid "This report is currently marked as closed." +msgstr "Esta notificación está marcada como cerrada." + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:84 +msgid "This report is currently marked as fixed." +msgstr "Esta notificación está actualmente marcada como arreglada." + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:88 +msgid "This report is currently marked as open." +msgstr "Esta notificación está marcada como abierta." + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315 +msgid "This report was submitted anonymously" +msgstr "" + +#: 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:1178 +#: templates/web/default/admin/timeline.html:1 +msgid "Timeline" +msgstr "Cronología" + +#: templates/web/default/admin/flagged.html:15 +#: templates/web/default/admin/reports.html:12 +msgid "Title" +msgstr "Título" + +#: templates/web/default/around/_report_banner.html:2 +msgid "To <strong>report a problem</strong>, click on the map at the correct location." +msgstr "Para <strong>notificar de un problema</strong>, haz clic en el mapa en la ubicación correcta." + +#: templates/web/default/alert/index.html:27 +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: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: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 "Total" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:24 +msgid "Transport Category" +msgstr "" + +#: templates/web/default/js/translation_strings.html:29 +#: templates/web/oxfordshire/js/translation_strings.html:23 +msgid "Try again" +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 "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:48 +#: templates/web/zurich/admin/report_edit.html:61 +#: templates/web/zurich/admin/update_edit.html:18 +msgid "Unconfirmed" +msgstr "Sin confirmar" + +#: templates/web/fixmystreet/report/banner.html:9 +msgid "Unknown" +msgstr "Desconocido" + +#: perllib/FixMyStreet/App/Controller/Rss.pm:173 +msgid "Unknown alert type" +msgstr "Tipo de alerta desconocida" + +#: templates/web/default/js/translation_strings.html:39 +#: templates/web/oxfordshire/js/translation_strings.html:33 +msgid "Unknown error" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report.pm:106 +msgid "Unknown problem ID" +msgstr "ID de problema desconocido" + +#: templates/web/bromley/report/display.html:66 +#: templates/web/fixmystreet/report/update-form.html:19 +msgid "Update" +msgstr "Actualizar" + +#: templates/web/default/admin/timeline.html:33 +msgid "Update %s created for problem %d; by %s" +msgstr "Actualización %s creada para el problema %d; por %s" + +#: templates/web/default/contact/index.html:21 +#: templates/web/fixmystreet/contact/index.html:34 +msgid "Update below added anonymously at %s" +msgstr "La actualización de abajo fue añadida de forma anónima en %s" + +#: templates/web/default/contact/index.html:23 +#: templates/web/fixmystreet/contact/index.html:36 +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:233 +#: templates/web/zurich/admin/body-form.html:51 +msgid "Update body" +msgstr "" + +#: templates/web/default/admin/index.html:38 +msgid "Update breakdown by state" +msgstr "Actualizar desglose por estado" + +#: db/alert_types.pl:7 +msgid "Update by {{name}}" +msgstr "Actualización por {{name}}" + +#: templates/web/default/admin/update_edit.html:42 +#: templates/web/zurich/admin/update_edit.html:25 +msgid "Update changed problem state to %s" +msgstr "La actualización modificó el estado del problema a %s" + +#: templates/web/default/admin/update_edit.html:44 +msgid "Update marked problem as fixed" +msgstr "La actualización marcó el problema como arreglado" + +#: templates/web/default/admin/update_edit.html:46 +msgid "Update reopened problem" +msgstr "La actualización reabrió el problema" + +#: templates/web/default/admin/body.html:83 +msgid "Update statuses" +msgstr "Actualización de estados" + +#: templates/web/default/report/update-form.html:22 +msgid "Update:" +msgstr "Actualizar:" + +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Updated" +msgstr "" + +#: 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:24 +#: templates/web/zurich/report/updates.html:2 +msgid "Updates" +msgstr "Actualizaciones" + +#: perllib/FixMyStreet/DB/Result/Comment.pm:131 +msgid "Updates are limited to 2000 characters in length. Please shorten your update" +msgstr "" + +#: db/alert_types.pl:5 db/alert_types.pl:6 +msgid "Updates on {{title}}" +msgstr "Actualizaciones en {{title}}" + +#: templates/web/bromley/report/display.html:0 +#: templates/web/bromley/report/display.html:8 +#: templates/web/default/report/display.html:0 +#: templates/web/default/report/display.html:5 +#: templates/web/fixmystreet/report/display.html:0 +#: templates/web/fixmystreet/report/display.html:8 +msgid "Updates to this problem, FixMyStreet" +msgstr "Actualizaciones para este problema, FixMyStreet" + +#: 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:1314 +msgid "User flagged" +msgstr "Usuario marcado" + +#: 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:371 +#: perllib/FixMyStreet/App/Controller/Admin.pm:401 +msgid "Values updated" +msgstr "Valores actualizados" + +#: templates/web/default/admin/report_edit.html:18 +#: templates/web/default/admin/update_edit.html:18 +#: templates/web/zurich/admin/report_edit-sdm.html:24 +#: templates/web/zurich/admin/report_edit.html:23 +#: templates/web/zurich/admin/update_edit.html:10 +msgid "View report on site" +msgstr "Ver notificaciones en el site" + +#: templates/web/default/reports/body.html:14 +msgid "View reports by ward" +msgstr "Ver notificaciones por barrio" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:39 +msgid "View your report" +msgstr "Ver tus notificaciones" + +#: templates/web/default/around/display_location.html:0 +#: templates/web/default/around/display_location.html:34 +#: templates/web/seesomething/around/display_location.html:0 +#: templates/web/seesomething/around/display_location.html:16 +msgid "Viewing a location" +msgstr "Visualizando una ubicación" + +#: templates/web/bromley/report/display.html:0 +#: templates/web/default/report/display.html:0 +#: templates/web/fixmystreet/report/display.html:0 +msgid "Viewing a problem" +msgstr "Visualizando un problema" + +#: templates/web/default/reports/body.html:16 +msgid "Wards of this council" +msgstr "Barrios de este Ayuntamiento" + +#: templates/web/default/alert/choose.html:6 +#: templates/web/default/around/around_index.html:13 +#: templates/web/fixmystreet/around/around_index.html:16 +#: templates/web/seesomething/around/around_index.html:13 +msgid "We found more than one match for that location. We show up to ten matches, please try a different search if yours is not here." +msgstr "Hemos encontrado más de una coincidencia para esa ubicación. Se muestra un máximo de diez, intenta una búsqueda diferente si no lo encuentra aquí." + +#: templates/web/default/auth/token.html:8 +msgid "We have not been able to confirm your account - sorry." +msgstr "" + +#: templates/web/default/auth/token.html:16 +msgid "We have sent you an email containing a link to confirm your account." +msgstr "Te hemos enviado un correo electrónico con un enlace para confirmar tu cuenta." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:18 +#: templates/web/emptyhomes/tokens/confirm_problem.html:20 +msgid "We may contact you periodically to ask if anything has changed with the property you reported." +msgstr "Podemos comunicarnos con usted periódicamente para preguntar si hay algo que ha cambiado con la propiedad que ha notificado." + +#: templates/web/bromley/report/display.html:143 +#: templates/web/fixmystreet/report/update-form.html:115 +msgid "We never show your email" +msgstr "Nunca mostramos su dirección de email" + +#: templates/web/bromley/report/new/fill_in_details_form.html:133 +#: templates/web/bromley/report/new/fill_in_details_form.html:179 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:134 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:201 +#: templates/web/zurich/report/new/fill_in_details_form.html:96 +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: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." + +#: templates/web/default/index-steps.html:31 +msgid "We send it to the council on your behalf" +msgstr "Se lo enviamos al Ayuntamiento en su nombre" + +#: templates/web/bromley/report/new/fill_in_details_form.html:217 +#: templates/web/default/report/new/notes.html:5 +#: templates/web/fixmybarangay/report/new/notes.html:5 +msgid "We will only use your personal information in accordance with our <a href=\"/faq#privacy\">privacy policy.</a>" +msgstr "Sólo utilizaremos su información personal de acuerdo a nuestra <a href=\"/faq#privacy\">política de privacidad</a>." + +#: templates/web/fixmystreet/report/new/notes.html:4 +#: templates/web/oxfordshire/report/new/notes.html:4 +msgid "We will only use your personal information in accordance with our <a href=\"/privacy\">privacy policy.</a>" +msgstr "Sólo utilizaremos su información personal de acuerdo a nuestra <a href=\"/faq#privacy\">política de privacidad</a>." + +#: templates/web/emptyhomes/contact/blurb.html:2 +msgid "We’d love to hear what you think about this website. Just fill in the form. Please don’t contact us about individual empty homes; use the box accessed from <a href=\"/\">the front page</a>." +msgstr "Nos encantaría saber lo que piensas acerca de este sitio web. Sólo tienes que rellenar el formulario. Por favor no contacte con nosotros sobre viviendas vacías, use la caja que encontrará en <a href=\"/\">la página principal</a>." + +#: templates/web/default/contact/blurb.html:8 +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:61 +#: templates/web/default/admin/body_edit.html:82 +#: templates/web/zurich/admin/body.html:17 +msgid "When edited" +msgstr "Una vez editada" + +#: templates/web/default/admin/problem_row.html:35 +msgid "When sent" +msgstr "Una vez enviada" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:621 +msgid "Whole block of empty flats" +msgstr "Todo el bloque de pisos vacíos" + +#: templates/web/default/open311/index.html:94 +msgid "With request searches, it is also possible to search for agency_responsible to limit the requests to those sent to a single administration. The search term is the administration ID provided by <a href=\"%s\">MaPit</a>." +msgstr "En las búsquedas de solicitudes, es también posible buscar por agency_responsible para limitar las solicitudes a las enviados a una sola administración. El término de búsqueda es el ID de administración proporcionada por <a href=\"%s\">MapIT</a>." + +#: templates/web/fixmystreet/footer.html:21 +#: templates/web/stevenage/footer.html:22 +msgid "Would you like better integration with FixMyStreet? <a href=\"http://www.mysociety.org/for-councils/fixmystreet/\">Find out about FixMyStreet for councils</a>." +msgstr "¿Le gustaría una mejor integración con FixMyStreet? <a href=\"http://www.mysociety.org/for-councils/fixmystreet/\">Conozca sobre FixMyStreet para Ayuntamientos</a>." + +#: templates/web/fixmystreet/footer.html:17 +#: templates/web/stevenage/footer.html:18 +msgid "Would you like to contribute to FixMyStreet? Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>." +msgstr "¿Le gustaría contribuir a FixMyStreet? Nuestro código es open source y está <a href=\"http://github.com/mysociety/fixmystreet\">disponible en GitHub</a>." + +#: templates/web/default/questionnaire/index.html:106 +#: templates/web/fixmystreet/questionnaire/index.html:96 +msgid "Would you like to receive another questionnaire in 4 weeks, reminding you to check the status?" +msgstr "¿Quieres recibir otro cuestionario en 4 semanas, recordándote que debes comprobar el estado?" + +#: templates/web/default/report/new/notes.html:8 +#: templates/web/fixmybarangay/report/new/notes.html:8 +#: templates/web/fixmystreet/report/new/notes.html:8 +#: templates/web/oxfordshire/report/new/notes.html:7 +msgid "Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation." +msgstr "Escribir su mensaje completamente en mayúsculas hace que sea difícil de leer, al igual que la falta de puntuacion." + +#: templates/web/default/admin/stats.html:10 +msgid "Year" +msgstr "Año" + +#: 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 "SÍ" + +#: templates/web/bromley/report/display.html:157 +#: templates/web/bromley/report/new/fill_in_details_form.html:198 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:161 +#: templates/web/fixmystreet/report/update-form.html:89 +msgid "Yes I have a password" +msgstr "Sí, tengo una contraseña" + +#: templates/web/default/contact/index.html:37 +#: templates/web/fixmystreet/contact/index.html:50 +msgid "You are reporting the following problem report for being abusive, containing personal information, or similar:" +msgstr "Estás reportando por abusiva la siguiente notificación, que contiene información personal, o similar:" + +#: templates/web/default/contact/index.html:15 +#: templates/web/fixmystreet/contact/index.html:28 +msgid "You are reporting the following update for being abusive, containing personal information, or similar:" +msgstr "Estás reportando por abusiva la siguiente actualización, que contiene información personal, o similar:" + +#: templates/web/default/tokens/confirm_problem.html:19 +#: templates/web/default/tokens/confirm_problem.html:21 +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:8 +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 "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/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 "" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:38 +msgid "You have already answered this questionnaire. If you have a question, please <a href='%s'>get in touch</a>, or <a href='%s'>view your problem</a>.\n" +msgstr "Usted ya respondió a esta encuesta. Si tiene alguna pregunta, por favor, <a href='%s'>póngase en contacto </a>, o <a href ='%s'>vea su problema</a>.\n" + +#: templates/web/bromley/report/new/fill_in_details_form.html:97 +#: templates/web/default/questionnaire/index.html:96 +#: templates/web/default/report/new/fill_in_details_form.html:93 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:90 +#: templates/web/fixmystreet/questionnaire/index.html:87 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:99 +#: templates/web/seesomething/report/new/fill_in_details_form.html:59 +#: templates/web/zurich/report/new/fill_in_details_form.html:75 +msgid "You have already attached a photo to this report, attaching another one will replace it." +msgstr "Usted ya adjuntó una foto para esta notificación, adjuntando otra la reemplazará." + +#: templates/web/bromley/report/display.html:108 +#: templates/web/default/report/update-form.html:59 +#: templates/web/fixmystreet/report/update-form.html:56 +msgid "You have already attached a photo to this update, attaching another one will replace it." +msgstr "Usted ya ha adjuntado una foto para esta actualización, adjuntando otra la reemplazará." + +#: templates/web/default/auth/sign_out.html:3 +#: templates/web/seesomething/auth/sign_out.html:3 +#: templates/web/zurich/auth/sign_out.html:3 +msgid "You have been signed out" +msgstr "Ha cerrado la sesión correctamente." + +#: templates/web/bromley/report/new/fill_in_details_form.html:25 +#: templates/web/default/report/new/fill_in_details_form.html:7 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:7 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:28 +#: templates/web/zurich/report/new/fill_in_details_form.html:13 +msgid "You have located the problem at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. " +msgstr "Has ubicado el problema en el punto marcado con el pin verde en el mapa. Si este no es el lugar correcto, simplemente haga clic en el mapa de nuevo. " + +#: templates/web/default/tokens/confirm_alert.html:7 +msgid "You have successfully confirmed your alert." +msgstr "Ha confirmado su alerta." + +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:6 +msgid "You have successfully confirmed your email address." +msgstr "" + +#: templates/web/default/tokens/confirm_problem.html:14 +#: templates/web/default/tokens/confirm_problem.html:15 +msgid "You have successfully confirmed your problem" +msgstr "Ha confirmado su problema" + +#: templates/web/default/tokens/confirm_update.html:11 +#: templates/web/default/tokens/confirm_update.html:12 +msgid "You have successfully confirmed your update and you can now <a href=\"%s\">view it on the site</a>." +msgstr "Ha confirmado su actualización y ahora puede <a href=\"%s\">verla en el site</a>." + +#: templates/web/default/tokens/confirm_alert.html:11 +msgid "You have successfully created your alert." +msgstr "Ha creado la alerta." + +#: templates/web/default/tokens/confirm_alert.html:9 +msgid "You have successfully deleted your alert." +msgstr "Ha borrado la alerta." + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:754 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:140 +msgid "You have successfully signed in; please check and confirm your details are accurate:" +msgstr "Ha iniciado sesión correctamente, por favor revise y confirme si sus detalles son precisos:" + +#: templates/web/default/email_sent.html:13 +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?" + +#: templates/web/default/my/my.html:0 templates/web/default/my/my.html:14 +#: templates/web/default/my/my.html:3 templates/web/fixmystreet/my/my.html:0 +#: templates/web/fixmystreet/my/my.html:14 +#: templates/web/fixmystreet/my/my.html:3 +msgid "Your Reports" +msgstr "Sus notificaciones" + +#: templates/web/bromley/report/display.html:41 +#: templates/web/bromley/report/display.html:43 +#: templates/web/bromley/report/new/fill_in_details_form.html:145 +#: templates/web/fixmystreet/alert/_list.html:89 +#: templates/web/fixmystreet/alert/updates.html:19 +#: templates/web/fixmystreet/alert/updates.html:22 +#: templates/web/fixmystreet/contact/index.html:84 +#: templates/web/fixmystreet/report/display.html:65 +#: templates/web/fixmystreet/report/display.html:67 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:115 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:147 +#: templates/web/zurich/report/new/fill_in_details_form.html:88 +msgid "Your email" +msgstr "Su email:" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:81 +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:58 +msgid "Your email address" +msgstr "Su dirección de email" + +#: templates/web/default/auth/general.html:27 +msgid "Your email address:" +msgstr "Su dirección de email:" + +#: templates/web/default/alert/_list.html:92 +#: templates/web/default/report/new/fill_in_details_form.html:124 +#: templates/web/default/report/update-form.html:81 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:133 +#: templates/web/fixmybarangay/alert/_list.html:37 +msgid "Your email:" +msgstr "Su email:" + +#: templates/web/bromley/report/display.html:195 +#: templates/web/bromley/report/new/fill_in_details_form.html:117 +#: templates/web/bromley/report/new/fill_in_details_form.html:164 +msgid "Your first name" +msgstr "Su nombre:" + +#: templates/web/fixmystreet/report/updates-sidebar-notes.html:5 +msgid "Your information will only be used in accordance with our <a href=\"/privacy\">privacy policy</a>" +msgstr "Su información sólo será usada de acuerdo con nuestra <a href=\"/privacy\">política de privacidad</a>" + +#: templates/web/bromley/report/display.html:201 +#: templates/web/bromley/report/new/fill_in_details_form.html:123 +#: templates/web/bromley/report/new/fill_in_details_form.html:170 +msgid "Your last name" +msgstr "Sus Apellidos" + +#: 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 "Su Nombre" + +#: templates/web/default/auth/general.html:59 +#: templates/web/default/contact/index.html:68 +#: templates/web/default/report/new/fill_in_details_form.html:203 +#: templates/web/default/report/update-form.html:151 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:124 +msgid "Your name:" +msgstr "Su Nombre:" + +#: templates/web/bromley/report/display.html:162 +#: templates/web/bromley/report/new/fill_in_details_form.html:203 +#: templates/web/fixmystreet/auth/general.html:41 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:166 +#: templates/web/fixmystreet/report/update-form.html:94 +#: templates/web/seesomething/auth/general.html:30 +#: templates/web/zurich/auth/general.html:34 +msgid "Your password" +msgstr "Su contraseña" + +#: templates/web/default/auth/change_password.html:6 +msgid "Your password has been changed" +msgstr "Su contraseña ha cambiado." + +#: 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 "Su número de teléfono" + +#: templates/web/fixmystreet/questionnaire/index.html:15 +msgid "Your report" +msgstr "Su notificación" + +#: templates/web/default/report_created.html:6 +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/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 "Sus notificaciones" + +#: templates/web/default/my/my.html:45 templates/web/fixmystreet/my/my.html:49 +msgid "Your updates" +msgstr "Sus actualizaciones" + +#: templates/web/default/contact/index.html:76 +msgid "Your email:" +msgstr "Su email:" + +#: templates/web/default/admin/timeline.html:4 +msgid "by %s" +msgstr "por %s" + +#: templates/web/default/reports/body.html:6 +#: templates/web/default/reports/body.html:7 +msgid "council" +msgstr "Ayuntamiento" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:649 +msgid "council ref: %s" +msgstr "" + +#: 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 "no utilizó mapa" + +#: templates/web/default/alert/index.html:33 +#: templates/web/fixmystreet/around/postcode_form.html:20 +#: templates/web/seesomething/around/postcode_form.html:9 +msgid "e.g. ‘%s’ or ‘%s’" +msgstr "por ejemplo, '%s' o '%s'" + +#: 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" +msgstr "" + +#: perllib/Utils.pm:263 +msgid "less than a minute" +msgstr "menos de un minuto" + +#: templates/web/default/report/updates.html:57 +msgid "marked as a duplicate report" +msgstr "" + +#: templates/web/default/report/updates.html:47 +msgid "marked as action scheduled" +msgstr "" + +#: templates/web/default/report/updates.html:59 +msgid "marked as an internal referral" +msgstr "" + +#: templates/web/default/report/updates.html:49 +msgid "marked as closed" +msgstr "" + +#: templates/web/default/report/updates.html:28 +#: templates/web/default/report/updates.html:51 +msgid "marked as fixed" +msgstr "marcado como arreglado" + +#: templates/web/default/report/updates.html:45 +msgid "marked as in progress" +msgstr "" + +#: templates/web/default/report/updates.html:41 +msgid "marked as investigating" +msgstr "" + +#: templates/web/default/report/updates.html:55 +msgid "marked as not the council's responsibility" +msgstr "" + +#: templates/web/default/report/updates.html:43 +msgid "marked as planned" +msgstr "" + +#: templates/web/default/report/updates.html:53 +msgid "marked as unable to fix" +msgstr "" + +#: 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 "n/a" + +#: templates/web/default/alert/_list.html:87 +#: templates/web/fixmybarangay/alert/_list.html:32 +#: templates/web/fixmystreet/alert/_list.html:85 +msgid "or" +msgstr "o" + +#: 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: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: “%s”" +msgstr "" + +#: templates/web/default/admin/report_edit.html:30 +msgid "other areas:" +msgstr "otras áreas:" + +#: templates/web/default/report/updates.html:29 +#: templates/web/default/report/updates.html:39 +msgid "reopened" +msgstr "reabierto" + +#: templates/web/barnet/header.html:71 templates/web/bromley/header.html:100 +#: templates/web/bromley/header.html:65 +#: templates/web/fixmybarangay/header.html:67 +#: templates/web/fixmystreet/header.html:51 +#: templates/web/oxfordshire/header.html:112 +#: templates/web/oxfordshire/header.html:48 +#: templates/web/stevenage/header.html:98 templates/web/zurich/footer.html:12 +msgid "sign out" +msgstr "Salir" + +#: templates/web/bromley/report/new/fill_in_details_form.html:4 +#: templates/web/bromley/report/new/fill_in_details_form.html:7 +#: templates/web/default/report/new/fill_in_details_form.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:14 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:14 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:9 +msgid "the local council" +msgstr "el Ayuntamiento local" + +#: templates/web/default/report/_main.html:6 +#: templates/web/zurich/report/_main.html:5 +msgid "there is no pin shown as the user did not use the map" +msgstr "" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362 +msgid "this type of local problem" +msgstr "este tipo de problema local" + +#: perllib/Utils.pm:235 +msgid "today" +msgstr "hoy" + +#: 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 "mapa utilizado" + +#: templates/web/default/admin/update_edit.html:35 +msgid "user is from same council as problem - %d" +msgstr "El usuario es del mismo Ayuntamiento que el problema - %d" + +#: templates/web/default/admin/update_edit.html:38 +msgid "user is problem owner" +msgstr "El usuario es el propietario del problema" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:3 +msgid "ward" +msgstr "barrio" + +#: templates/web/default/front/stats.html:17 +#, perl-format +msgid "<big>%s</big> report recently" +msgid_plural "<big>%s</big> reports recently" +msgstr[0] "<big>%s</big> notificadas recientemente" +msgstr[1] "<big>%s</big> notificadas recientemente" + +#: perllib/Utils.pm:282 +#, perl-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" +msgstr[1] "" + +#: templates/web/default/report/_support.html:6 +#, perl-format +msgid "%d supporter" +msgid_plural "%d supporters" +msgstr[0] "" +msgstr[1] "" + +#: perllib/Utils.pm:284 +#, perl-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "" +msgstr[1] "" + +#: templates/web/default/front/stats.html:29 +#, perl-format +msgid "<big>%s</big> update on reports" +msgid_plural "<big>%s</big> updates on reports" +msgstr[0] "<big>%s</big> notificaciones actualizadas" +msgstr[1] "<big>%s</big> notificaciones actualizadas" + +#: templates/web/emptyhomes/report/new/councils_text_none.html:3 +#, perl-format +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] "Todavía no tenemos detalles para el Ayuntamiento que cubre esta zona." +msgstr[1] "Todavía no tenemos detalles para el Ayuntamiento que cubre esta zona." + +#: perllib/Utils.pm:278 +#, perl-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "" +msgstr[1] "" + +#: templates/web/default/front/stats.html:12 +#, perl-format +msgid "<big>%s</big> report in past week" +msgid_plural "<big>%s</big> reports in past week" +msgstr[0] "<big>%s</big> notificadas la semana pasada" +msgstr[1] "<big>%s</big> notificadas la semana pasada" + +#: templates/web/default/front/stats.html:23 +#, perl-format +msgid "<big>%s</big> fixed in past month" +msgid_plural "<big>%s</big> fixed in past month" +msgstr[0] "<big>%s</big> arregladas la semana pasada" +msgstr[1] "<big>%s</big> arregladas la semana pasada" + +#: templates/web/default/report/new/councils_text_some.html:14 +#, perl-format +msgid "We do <strong>not</strong> yet have details for the other council that covers this location." +msgid_plural "We do <strong>not</strong> yet have details for the other councils that cover this location." +msgstr[0] "Todavía <strong>no</strong> tenemos detalles para el Ayuntamiento que cubre esta zona." +msgstr[1] "Todavía <strong>no</strong> tenemos detalles para el Ayuntamiento que cubre esta zona." + +#: perllib/Utils.pm:280 +#, perl-format +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 new file mode 100644 index 000000000..b3e3514dd --- /dev/null +++ b/locale/fr_FR.UTF-8/LC_MESSAGES/FixMyStreet.po @@ -0,0 +1,4695 @@ +# 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: +# Tim Morley <>, 2012 +msgid "" +msgstr "" +"Project-Id-Version: fixmystreet\n" +"Report-Msgid-Bugs-To: matthew@mysociety.org\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" +"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" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:602 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373 +msgid " and " +msgstr " et " + +#: templates/web/default/tokens/confirm_problem.html:14 +#: templates/web/default/tokens/confirm_problem.html:17 +msgid " and <strong>we will now send it to the council</strong>" +msgstr " et <strong>nous allons maintenant l'envoyer à l'administration</strong>" + +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_none.html:11 +#: templates/web/default/report/new/councils_text_none.html:14 +#: templates/web/default/report/new/councils_text_some.html:20 +#: templates/web/default/report/new/councils_text_some.html:23 +#: templates/web/default/report/new/councils_text_some.html:5 +#: templates/web/emptyhomes/report/new/councils_text_all.html:2 +msgid " or " +msgstr " ou " + +#: templates/web/default/admin/bodies.html:46 +msgid "%d addresses" +msgstr "%d adresses" + +#: 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:27 +#: templates/web/zurich/admin/index.html:6 +msgid "%d council contacts – %d confirmed, %d unconfirmed" +msgstr "%d contacts administratifs – %d confirmés, %d non confirmés" + +#: templates/web/default/admin/edit-league.html:12 +msgid "%d edits by %s" +msgstr "%d changements par %s" + +#: 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:26 +msgid "%d questionnaires sent – %d answered (%s%%)" +msgstr "%d questionnaires envoyés – %d complétés (%s%%)" + +#: templates/web/default/pagination.html:10 +msgid "%d to %d of %d" +msgstr "" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:22 +msgid "%s - Summary reports" +msgstr "%s - Rapports sommaires" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:651 +msgid "%s ref: %s" +msgstr "%s réf : %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:276 perllib/FixMyStreet/Cobrand/UK.pm:288 +msgid "%s ward, %s" +msgstr "Localité %s, %s" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:538 +msgid "%s, reported at %s" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/UK.pm:303 perllib/FixMyStreet/Cobrand/UK.pm:315 +msgid "%s, within %s ward" +msgstr "%s, dans la localité %s" + +#: templates/web/default/email_sent.html:29 +msgid "(Don't worry — we'll hang on to your alert while you're checking your email.)" +msgstr "" + +#: templates/web/default/email_sent.html:25 +msgid "(Don't worry — we'll hang on to your problem report while you're checking your email.)" +msgstr "" + +#: templates/web/default/email_sent.html:27 +msgid "(Don't worry — 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:29 +msgid "(Email in abuse table)" +msgstr "(email dans la liste des abus)" + +#: templates/web/default/alert/_list.html:20 +#: templates/web/fixmystreet/alert/_list.html:24 +msgid "(a default distance which covers roughly 200,000 people)" +msgstr "(une distance par défaut qui couvre environs 200 000 personnes)" + +#: templates/web/default/alert/_list.html:25 +#: templates/web/fixmystreet/alert/_list.html:28 +msgid "(alternatively the RSS feed can be customised, within" +msgstr "(sinon, le flux RSS peut être personnalisé, dans l’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 +#: templates/web/zurich/report/_item.html:21 +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 +#: templates/web/zurich/report/_item.html:19 +msgid "(fixed)" +msgstr "(résolu)" + +#: 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 "(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)" +msgstr "(non signalé à l’administration)" + +#: templates/web/default/report/new/fill_in_details_form.html:217 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:140 +#: templates/web/zurich/report/new/fill_in_details_form.html:100 +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)" +msgstr "(envoyé aux deux)" + +#: templates/web/default/report/new/fill_in_details_form.html:211 +msgid "(we never show your email address or phone number)" +msgstr "(nous n’affichons jamais votre email ou numéro de téléphone)" + +#: templates/web/default/report/update-form.html:158 +msgid "(we never show your email)" +msgstr "(nous n’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:379 +msgid "-- Pick a category --" +msgstr "-- Choisissez une catégorie --" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:618 +#: perllib/FixMyStreet/DB/Result/Problem.pm:385 +msgid "-- Pick a property type --" +msgstr "-- Choisissez un type de propriété --" + +#: templates/web/emptyhomes/front/stats.html:5 +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’s been fixed.</p>" +msgstr "<p style=\"font-size:150%\">Merci beaucoup d'avoir répondu à nos questions ; heureux d’entendre que ça a été résolu.</p>" + +#: templates/web/fiksgatami/questionnaire/completed-open.html:1 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try <a href=\"http://www.norge.no/styresmakter/\">writing\n" +"direct to your councillor(s)</a> or, if it’s a problem that could be\n" +"fixed by local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "" + +#: templates/web/fixmystreet/questionnaire/completed-open.html:6 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try <a href=\"http://www.writetothem.com/\">writing direct\n" +"to your councillor(s)</a> or, if it’s a problem that could be fixed by\n" +"local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "" + +#: templates/web/default/questionnaire/completed-open.html:6 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try writing to your local representative or, if it’s\n" +"a problem that could be fixed by local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "" + +#: templates/web/default/questionnaire/index.html:35 +msgid "" +"<p>Getting empty homes back into use can be difficult, but by now a good council\n" +"will have made a lot of progress and reported what they have done on the\n" +"website. Even so properties can remain empty for many months if the owner is\n" +"unwilling or the property is in very poor repair. If nothing has happened or\n" +"you are not satisfied with the progress the council is making, now is the right\n" +"time to say so. We think it’s a good idea to contact some other people who\n" +"may be able to help or put pressure on the council For advice on how to do\n" +"this and other useful information please go to <a\n" +"href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +msgstr "" + +#: templates/web/default/questionnaire/index.html:26 +msgid "" +"<p>Getting empty homes back into use can be difficult. You shouldn’t expect\n" +"the property to be back into use yet. But a good council will have started work\n" +"and should have reported what they have done on the website. If you are not\n" +"satisfied with progress or information from the council, now is the right time\n" +"to say. You may also want to try contacting some other people who may be able\n" +"to help. For advice on how to do this and other useful information please\n" +"go to <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +msgstr "" + +#: templates/web/default/questionnaire/completed.html:9 +msgid "" +"<p>Thank you very much for filling in our questionnaire; if you\n" +"get some more information about the status of your problem, please come back to the\n" +"site and leave an update.</p>" +msgstr "" +"<p>Merci beaucoup d'avoir répondu à nos questions ; si vous\n" +"recevez plus d'informations sur l'état de votre problème, merci de revenir sur le\n" +"site et de faire une mise à jour.</p>" + +#: templates/web/default/around/_report_banner.html:3 +#: templates/web/default/around/_report_banner.html:5 +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:22 +#: templates/web/zurich/admin/index.html:4 +msgid "<strong>%d</strong> live problems" +msgstr "<strong>%d</strong> problèmes actifs" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:183 +msgid "<strong>No</strong> Let me confirm my report by email" +msgstr "<strong>Non</strong>, laissez-moi confirmer mon rapport par email :" + +#: templates/web/fixmystreet/report/update-form.html:110 +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:51 +msgid "<strong>No</strong> let me sign in by email" +msgstr "<strong>Non</strong>, laissez-moi m'authentifier par email :" + +#: templates/web/default/auth/general.html:55 +msgid "<strong>No</strong>, I do not, let me sign in by email:" +msgstr "<strong>Non</strong>, je n'en ai pas, laissez-moi m'authentifier par email :" + +#: templates/web/default/report/new/fill_in_details_form.html:162 +msgid "<strong>No</strong>, let me confirm my report by email:" +msgstr "<strong>Non</strong>, laissez-moi confirmer mon rapport par email :" + +#: templates/web/default/report/update-form.html:117 +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/default/auth/general.html:37 +#: templates/web/default/report/new/fill_in_details_form.html:140 +#: templates/web/default/report/update-form.html:95 +#: templates/web/fixmystreet/auth/general.html:36 +#: templates/web/fixmystreet/auth/general.html:38 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:159 +#: templates/web/fixmystreet/report/update-form.html:87 +msgid "<strong>Yes</strong> I have a password" +msgstr "<strong>Oui</strong>, j'ai un mot de passe :" + +#: templates/web/default/static/about-en-gb.html:1 +#: templates/web/default/static/about-en-gb.html:3 +#: templates/web/emptyhomes/header.html:34 +#: templates/web/emptyhomes/static/about-cy.html:1 +#: templates/web/emptyhomes/static/about-cy.html:3 +#: templates/web/emptyhomes/static/about-en-gb.html:1 +#: templates/web/emptyhomes/static/about-en-gb.html:3 +msgid "About us" +msgstr "À propos" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:81 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:39 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 +msgid "Action Scheduled" +msgstr "" + +#: 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:88 +#: templates/web/zurich/admin/body.html:30 +msgid "Add new category" +msgstr "Ajouter une catégorie" + +#: templates/web/default/admin/users.html:45 +msgid "Add user" +msgstr "" + +#: templates/web/default/my/my.html:56 templates/web/fixmystreet/my/my.html:60 +msgid "Added %s" +msgstr "Ajouté %s" + +#: templates/web/default/auth/change_password.html:29 +msgid "Again:" +msgstr "Encore une fois :" + +#: templates/web/default/admin/timeline.html:35 +msgid "Alert %d created for %s, type %s, parameters %s / %s" +msgstr "Alerte %d créée pour %s, type %s, paramètres %s / %s" + +#: templates/web/default/admin/timeline.html:37 +msgid "Alert %d disabled (created %s)" +msgstr "Alerte %d désactivée (création %s)" + +#: templates/web/bromley/report/display.html:209 +#: templates/web/default/report/update-form.html:163 +#: templates/web/fixmystreet/report/update-form.html:148 +msgid "Alert me to future updates" +msgstr "M'alerter de futures mises à jour" + +#: templates/web/default/reports/index.html:3 +#: templates/web/fixmybarangay/reports/index.html:3 +#: templates/web/zurich/admin/stats.html:5 +#: templates/web/zurich/reports/index.html:15 +msgid "All Reports" +msgstr "Tous les rapports" + +#: 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 "Tous les rapports" + +#: templates/web/default/admin/stats.html:5 +#: templates/web/zurich/admin/stats.html:8 +msgid "All reports between %s and %s" +msgstr "" + +#: templates/web/default/report/new/councils_text_some.html:2 +msgid "All the information you provide here will be sent to" +msgstr "Toutes les informations que vous fournissez ici seront envoyées à" + +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:13 +msgid "All the information you provide here will be sent to <strong>%s</strong> or <strong>Roads Service</strong>." +msgstr "" + +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_all.html:6 +msgid "All the information you provide here will be sent to <strong>%s</strong> or a relevant local body such as <strong>TfL</strong>, via the London Report-It system." +msgstr "Toutes les informations que vous fournissez ici seront envoyées à <strong>%s</strong> ou l'autorité locale compétente, par exemple <strong>TfL</strong>, via le système London Report-It." + +#: templates/web/bromley/report/new/fill_in_details_form.html:4 +#: templates/web/bromley/report/new/fill_in_details_form.html:6 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:20 +#: templates/web/default/report/new/fill_in_details_form.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:13 +#: templates/web/emptyhomes/report/new/councils_text_all.html:2 +#: templates/web/emptyhomes/report/new/councils_text_all.html:4 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:13 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:8 +msgid "All the information you provide here will be sent to <strong>%s</strong>." +msgstr "Toutes les informations que vous fournissez ici seront envoyées à <strong>%s</strong>." + +#: templates/web/default/questionnaire/index.html:60 +#: templates/web/fixmystreet/questionnaire/index.html:54 +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:32 +#: templates/web/default/admin/problem_row.html:20 +msgid "Anonymous" +msgstr "Anonyme" + +#: templates/web/default/admin/report_edit.html:62 +#: templates/web/default/admin/update_edit.html:23 +msgid "Anonymous:" +msgstr "Anonyme :" + +#: templates/web/default/footer.html:26 +msgid "Are you a <strong>developer</strong>? Would you like to contribute to FixMyStreet?" +msgstr "Vous êtes un <strong>développeur</strong> ? Vous aimeriez contribuer à Fix.lu ?" + +#: templates/web/fixmystreet/footer.html:16 +#: templates/web/stevenage/footer.html:17 +msgid "Are you a developer?" +msgstr "Vous êtes un développeur ?" + +#: templates/web/fixmystreet/footer.html:20 +#: templates/web/stevenage/footer.html:21 +msgid "Are you from a council?" +msgstr "Vous faites partie d'une administration ?" + +#: 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:144 +#: templates/web/zurich/admin/stats.html:36 +msgid "Assign to different category:" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:153 +msgid "Assign to external body:" +msgstr "" + +#: 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:141 +#: templates/web/zurich/report/updates.html:11 +msgid "Assigned to %s" +msgstr "" + +#: templates/web/default/open311/index.html:86 +msgid "At most %d requests are returned in each query. The returned requests are ordered by requested_datetime, so to get all requests, do several searches with rolling start_date and end_date." +msgstr "Un maximum de %d requètes sont renvoyées pour chaque requète. Les requètes sont triées par requested_datetime; pour obtenir toutes les requètes, faites plusieurs recherches avec une succession de start_date et end_date." + +#: templates/web/default/open311/index.html:78 +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:334 +#: templates/web/zurich/report/_item.html:11 +msgid "Awaiting moderation" +msgstr "" + +#: templates/web/default/js/translation_strings.html:32 +#: templates/web/oxfordshire/js/translation_strings.html:26 +msgid "Back" +msgstr "" + +#: templates/web/default/admin/report_blocks.html:11 +msgid "Ban email address" +msgstr "Bannir l'adresse mail" + +#: templates/web/fixmybarangay/report/new/notes.html:7 +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: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: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:32 +msgid "Body:" +msgstr "" + +#: templates/web/fiksgatami/footer.html:16 +#: templates/web/fiksgatami/nn/footer.html:16 +msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained by <a href=\"http://www.nuug.no/\">NUUG</a>" +msgstr "Créé par <a href=\"http://www.mysociety.org/\">mySociety</a> et administré par <a href=\"http://stereo.lu/\">Guillaume Rischard</a>" + +#: templates/web/default/admin/stats.html:80 +msgid "By Date" +msgstr "Par Date" + +#: templates/web/fixmystreet/around/_report_banner.html:10 +#: templates/web/fixmystreet/around/_report_banner.html:8 +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: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 "Catégorie" + +#: 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: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 "Catégorie :" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366 +msgid "Category: %s" +msgstr "Catégorie : %s" + +#: templates/web/default/auth/change_password.html:1 +#: templates/web/default/auth/change_password.html:3 +#: templates/web/default/auth/change_password.html:33 +msgid "Change Password" +msgstr "Changer le mot de passe" + +#: 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" + +#: 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 +#: 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 "Clos" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:744 +msgid "Closed by council" +msgstr "Clos par l'administration" + +#: templates/web/default/my/my.html:32 templates/web/fixmystreet/my/my.html:36 +msgid "Closed reports" +msgstr "Rapports clos" + +#: templates/web/default/admin/problem_row.html:38 +msgid "Closed:" +msgstr "Clos :" + +#: templates/web/default/around/tabbed_lists.html:10 +#: templates/web/default/around/tabbed_lists.html:12 +msgid "Closest nearby problems <small>(within %skm)</small>" +msgstr "Problèmes clos à proximité <small>(dans l'intervalle de %skm)</small>" + +#: 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 "Coordonnées" + +#: templates/web/default/admin/list_updates.html:10 +msgid "Cobrand" +msgstr "Collaboration" + +#: templates/web/default/admin/report_edit.html:75 +#: templates/web/default/admin/update_edit.html:50 +msgid "Cobrand data:" +msgstr "Données de collaboration :" + +#: templates/web/default/admin/report_edit.html:74 +#: templates/web/default/admin/update_edit.html:49 +msgid "Cobrand:" +msgstr "Collaboration :" + +#: 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" + +#: templates/web/default/admin/body_edit.html:47 +msgid "Configure Endpoint" +msgstr "Configurez Endpoint" + +#: templates/web/default/admin/body.html:62 +msgid "Confirm" +msgstr "Confirmer" + +#: templates/web/default/auth/token.html:1 +msgid "Confirm account" +msgstr "Confirmer le compte" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:177 +#: templates/web/fixmystreet/report/update-form.html:105 +msgid "Confirm by email below, providing a new password at that point. When you confirm, your password will be updated." +msgstr "" + +#: templates/web/default/questionnaire/creator_fixed.html:1 +#: templates/web/default/tokens/confirm_problem.html:1 +#: templates/web/default/tokens/confirm_problem.html:3 +#: templates/web/default/tokens/confirm_update.html:1 +#: templates/web/default/tokens/confirm_update.html:3 +#: templates/web/emptyhomes/tokens/confirm_problem.html:1 +#: templates/web/emptyhomes/tokens/confirm_problem.html:3 +#: templates/web/southampton/tokens/confirm_problem.html:1 +#: templates/web/southampton/tokens/confirm_problem.html:3 +#: templates/web/zurich/tokens/confirm_problem.html:1 +#: templates/web/zurich/tokens/confirm_problem.html:3 +msgid "Confirmation" +msgstr "Confirmation" + +#: 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 "Confirmé" + +#: templates/web/default/admin/stats.html:5 +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:" +msgstr "Confirmé :" + +#: templates/web/fiksgatami/footer.html:10 +#: templates/web/fiksgatami/nn/footer.html:10 +msgid "Contact" +msgstr "Contact" + +#: templates/web/default/footer.html:24 +msgid "Contact FixMyStreet" +msgstr "Contacter Fix.lu" + +#: templates/web/bromley/contact/submit.html:1 +#: templates/web/default/contact/index.html:1 +#: templates/web/default/contact/index.html:2 +#: templates/web/default/contact/submit.html:1 +#: templates/web/fixmystreet/contact/index.html:1 +#: templates/web/fixmystreet/contact/index.html:2 +msgid "Contact Us" +msgstr "Nous contacter" + +#: templates/web/bromley/contact/submit.html:3 +#: templates/web/default/contact/index.html:6 +#: templates/web/default/contact/submit.html:3 +#: templates/web/fixmystreet/contact/index.html:19 +msgid "Contact the team" +msgstr "Contacter l'équipe" + +#: 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:37 +#: templates/web/oxfordshire/js/translation_strings.html:31 +msgid "Could not look up location" +msgstr "" + +#: templates/web/default/admin/list_updates.html:9 +msgid "Council" +msgstr "Administration" + +#: templates/web/default/admin/body.html:1 +#: templates/web/default/admin/body_edit.html:1 +#: templates/web/zurich/admin/body.html:1 +msgid "Council contacts for %s" +msgstr "Contacts de l'administration pour %s" + +#: templates/web/default/admin/stats.html:84 +msgid "Council:" +msgstr "Administration :" + +#: templates/web/default/admin/stats.html:12 +#: templates/web/default/admin/stats.html:32 +#: templates/web/zurich/admin/stats.html:45 +#: templates/web/zurich/admin/stats.html:50 +msgid "Count" +msgstr "Nombre" + +#: templates/web/default/email_sent.html:1 +msgid "Create a report" +msgstr "Créer un rapport" + +#: 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/problem_row.html:34 +#: 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:50 +#: templates/web/zurich/admin/report_edit.html:64 +#: templates/web/zurich/admin/update_edit.html:29 +msgid "Created:" +msgstr "Créé :" + +#: templates/web/default/admin/stats.html:31 +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" +msgstr "" + +#: templates/web/zurich/admin/stats.html:35 +msgid "Dealt with by subdivision within 5 working days" +msgstr "" + +#: 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 "Effacé" + +#: templates/web/zurich/admin/index-dm.html:22 +#: templates/web/zurich/admin/index-sdm.html:20 +#: templates/web/zurich/admin/reports.html:12 +msgid "Description" +msgstr "" + +#: 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 "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: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:57 +msgid "Devolved" +msgstr "" + +#: templates/web/default/admin/edit-league.html:8 +msgid "Diligency prize league table" +msgstr "Tableau d'honneur de la réactivité" + +#: templates/web/fixmystreet/auth/general.html:30 +msgid "Do you have a FixMyBarangay password?" +msgstr "" + +#: templates/web/default/auth/general.html:32 +#: templates/web/fixmystreet/auth/general.html:32 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:155 +#: templates/web/fixmystreet/report/update-form.html:84 +msgid "Do you have a FixMyStreet password?" +msgstr "Avez-vous un mot de passe Fix.lu ?" + +#: templates/web/default/questionnaire/index.html:70 +#: templates/web/fixmystreet/questionnaire/index.html:64 +msgid "Don’t know" +msgstr "Je ne sais pas" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:82 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:47 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 +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:31 +#: templates/web/zurich/admin/problem_row.html:42 +msgid "Edit" +msgstr "Éditer" + +#: templates/web/default/admin/body.html:189 +#: templates/web/zurich/admin/body.html:64 +msgid "Edit body details" +msgstr "" + +#: templates/web/default/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:4 +#: templates/web/zurich/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit.html:5 +msgid "Editing problem %d" +msgstr "Édition du problème %d" + +#: templates/web/default/admin/update_edit.html:1 +#: templates/web/zurich/admin/update_edit.html:1 +msgid "Editing update %d" +msgstr "Édition de la mise à jour %d" + +#: templates/web/default/admin/user_edit.html:1 +msgid "Editing user %d" +msgstr "Édition de l'utilisateur %d'" + +#: templates/web/default/admin/body_edit.html:86 +msgid "Editor" +msgstr "Éditeur" + +#: 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 "Email" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1286 +msgid "Email added to abuse list" +msgstr "Email rajouté à la liste des abus" + +#: 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" + +#: templates/web/default/around/_updates.html:5 +msgid "Email me new local problems" +msgstr "Envoyez-moi les nouveaux problèmes locaux" + +#: templates/web/default/report/display.html:34 +msgid "Email me updates" +msgstr "Envoyez-moi les mises à jour" + +#: 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 "Email :" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318 +msgid "Email: %s" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:620 +msgid "Empty flat or maisonette" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:619 +msgid "Empty house or bungalow" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:622 +msgid "Empty office or other commercial" +msgstr "" + +#: templates/web/emptyhomes/report/new/form_heading.html:1 +msgid "Empty property details form" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:623 +msgid "Empty pub or bar" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:624 +msgid "Empty public building - school, hospital, etc." +msgstr "" + +#: 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/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:70 +#, fuzzy +msgid "End Date:" +msgstr "Fin jour :" + +#: templates/web/default/admin/body-form.html:126 +msgid "Endpoint" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/Zurich.pm:71 +msgid "Enter a Zürich street name" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/UK.pm:18 +msgid "Enter a nearby UK postcode, or street name and area" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:25 +msgid "Enter a nearby postcode, or street name and area" +msgstr "Entrez un code postal proche, ou une rue et une localité" + +#: templates/web/default/around/postcode_form.html:1 +#: templates/web/default/around/postcode_form.html:2 +#: templates/web/fixmystreet/around/postcode_form.html:10 +#: templates/web/fixmystreet/around/postcode_form.html:11 +#: templates/web/seesomething/around/postcode_form.html:3 +#: templates/web/seesomething/around/postcode_form.html:4 +msgid "Enter a nearby street name and area" +msgstr "" + +#: templates/web/default/auth/general.html:64 +#: templates/web/default/report/new/fill_in_details_form.html:169 +#: templates/web/default/report/update-form.html:124 +msgid "Enter a new password:" +msgstr "Entrez un nouveau mot de passe :" + +#: 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 "Entrez un mot de passe :" + +#: templates/web/default/index-steps.html:26 +msgid "Enter details of the problem" +msgstr "Entrez les détails du problème" + +#: templates/web/default/auth/token.html:5 +#: templates/web/default/errors/generic.html:1 +#: templates/web/default/errors/generic.html:3 +#: templates/web/default/tokens/abuse.html:1 +#: templates/web/default/tokens/abuse.html:3 +#: templates/web/default/tokens/error.html:1 +#: templates/web/default/tokens/error.html:3 +msgid "Error" +msgstr "Erreur" + +#: templates/web/default/admin/body.html:11 +#: templates/web/default/admin/body_edit.html:18 +msgid "Example postcode %s" +msgstr "Exemple de code postal %s" + +#: templates/web/default/open311/index.html:96 +msgid "Examples:" +msgstr "Exemples :" + +#: templates/web/default/admin/report_edit.html:76 +msgid "Extra data:" +msgstr "" + +#: templates/web/bromley/contact/submit.html:14 +#: templates/web/default/contact/submit.html:15 +msgid "Failed to send message. Please try again, or <a href=\"mailto:%s\">email us</a>." +msgstr "Échec lors de l'envoi du message. Merci de réessayer, ou <a href=\"mailto:%s\">de nous écrire</a>." + +#: templates/web/zurich/admin/index-dm.html:33 +#: templates/web/zurich/admin/index-sdm.html:30 +msgid "Filter report list" +msgstr "" + +#: templates/web/emptyhomes/front/stats.html:6 +msgid "Find latest local and national news" +msgstr "" + +#: templates/web/bromley/report/display.html:191 +#: templates/web/bromley/report/new/fill_in_details_form.html:113 +#: templates/web/bromley/report/new/fill_in_details_form.html:160 +msgid "First Name" +msgstr "" + +#: templates/web/default/questionnaire/index.html:79 +#: templates/web/fixmystreet/questionnaire/index.html:73 +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" +msgstr "Fi<span id=\"my\">x</span>.lu" + +#: templates/web/default/header.html:24 +msgid "FixMyStreet" +msgstr "Fix.lu" + +#: templates/web/default/admin/header.html:10 +msgid "FixMyStreet admin:" +msgstr "Administrateur Fix.lu" + +#: templates/web/default/alert/index.html:11 +msgid "" +"FixMyStreet has a variety of RSS feeds and email alerts for local problems, including\n" +"alerts for all problems within a particular ward or council, or all problems\n" +"within a certain distance of a particular location." +msgstr "" +"Fix.lu a une variété de flux RSS et d'alertes par email pour les problèmes locaux qui comprennent\n" +"des alertes pour tous les problèmes dans une commune, ou tous les problèmes inclus\n" +"dans une certaine distance d'un endroit précis'." + +#: templates/web/default/alert/_list.html:71 +#: templates/web/fixmystreet/alert/_list.html:73 +msgid "" +"FixMyStreet sends different categories of problem\n" +"to the appropriate council, so problems within the boundary of a particular council\n" +"might not match the problems sent to that council. For example, a graffiti report\n" +"will be sent to the district council, so will appear in both of the district\n" +"council’s alerts, but will only appear in the \"Within the boundary\" alert\n" +"for the county council." +msgstr "" +"Fix.lu envoie les différentes catégories de problèmes\n" +"à l'administration appropriée, ce qui veut dire que tous les problèmes à l'intérieur\n" +"d'une commune ne seront pas toujours ceux envoyés à la commune. Par exemple, un\n" +"nid de poule sur une route nationale sera envoyée aux Ponts et Chausséees et apparaitra\n" +"dans les deux les alertes des Ponts et Chaussées, mais uniquement dans l'alerte « À l'intérieur de » pour la commune." + +#: 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 "Résolu" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:43 +msgid "Fixed - Council" +msgstr "Résolu - Administration" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:42 +msgid "Fixed - User" +msgstr "Résolu - Usager" + +#: templates/web/default/my/my.html:27 templates/web/fixmystreet/my/my.html:31 +msgid "Fixed reports" +msgstr "Rapports résolus" + +#: templates/web/default/admin/problem_row.html:37 +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: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:51 +msgid "Flagged:" +msgstr "Signalé :" + +#: templates/web/default/reports/_ward-list.html:3 +#: templates/web/fixmystreet/reports/_ward-list.html:4 +msgid "Follow a ward link to view only reports within that ward." +msgstr "Suivez un lien de localité pour voir uniquement les rapports à l'intérieur de cette localité" + +#: templates/web/default/admin/report_edit.html:30 +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?" +msgstr "" + +#: templates/web/default/faq/faq-en-gb.html:1 +#: templates/web/emptyhomes/faq/faq-cy.html:1 +#: templates/web/emptyhomes/faq/faq-en-gb.html:1 +#: templates/web/fiksgatami/faq/faq-nb.html:1 +#: templates/web/fiksgatami/nn/faq/faq-nn.html:1 +#: templates/web/fixmindelo/faq/faq-pt-cv.html:1 +#: templates/web/fixmybarangay/faq/faq-en-gb.html:1 +#: templates/web/fixmystreet/faq/faq-en-gb.html:1 +#: templates/web/fixmystreet/static/privacy.html:1 +#: templates/web/oxfordshire/faq/faq-en-gb.html:1 +msgid "Frequently Asked Questions" +msgstr "Foire Aux Questions" + +#: templates/web/default/open311/index.html:138 +msgid "GeoRSS on Google Maps" +msgstr "GeoRSS sur Google Maps" + +#: templates/web/bromley/report/display.html:30 +#: templates/web/fixmystreet/around/_updates.html:3 +#: templates/web/fixmystreet/report/display.html:38 +msgid "Get updates" +msgstr "Recevoir les mises à jour" + +#: templates/web/fixmystreet/reports/_rss.html:3 +#: templates/web/fixmystreet/reports/_rss.html:9 +msgid "Get updates of %s problems" +msgstr "" + +#: templates/web/fixmystreet/reports/_rss.html:11 +#: templates/web/fixmystreet/reports/_rss.html:3 +msgid "Get updates of problems in this %s" +msgstr "Recevez les mises à jour pour les problèmes dans cette %s" + +#: templates/web/default/alert/_list.html:83 +#: templates/web/fixmybarangay/alert/_list.html:28 +#: templates/web/fixmystreet/alert/_list.html:82 +msgid "Give me an RSS feed" +msgstr "Donnez-moi un flux RSS" + +#: templates/web/default/alert/index.html:34 +#: templates/web/default/around/postcode_form.html:8 +#: templates/web/fixmystreet/around/postcode_form.html:21 +#: templates/web/seesomething/around/postcode_form.html:10 +#: templates/web/zurich/admin/stats.html:26 +msgid "Go" +msgstr "C'est parti !" + +#: templates/web/default/admin/report_edit.html:77 +msgid "Going to send questionnaire?" +msgstr "Envoi du questionnaire ?" + +#: 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" + +#: templates/web/default/reports/index.html:8 +msgid "Greyed-out lines are councils that no longer exist." +msgstr "Les lignes grisées sont des communes qui n'existent plus" + +#: templates/web/default/questionnaire/index.html:61 +#: templates/web/fixmystreet/questionnaire/index.html:55 +msgid "Has this problem been fixed?" +msgstr "Est-ce que le problème a été réglé ?" + +#: templates/web/default/questionnaire/index.html:74 +#: templates/web/fixmystreet/questionnaire/index.html:68 +msgid "Have you ever reported a problem to a council before, or is this your first time?" +msgstr "Est-ce que vous aviez déjà signalé un problème à une administration, ou est-ce que c'est votre première fois ?" + +#: 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 "Aide" + +#: templates/web/default/alert/_list.html:6 +#: templates/web/fixmystreet/alert/_list.html:8 +msgid "Here are the types of local problem alerts for ‘%s’." +msgstr "Voici les types de problèmes locaux pour « %s »." + +#: templates/web/barnet/header.html:70 templates/web/bromley/header.html:64 +#: templates/web/bromley/header.html:99 +#: templates/web/fixmybarangay/header.html:66 +#: templates/web/fixmystreet/header.html:50 +#: templates/web/oxfordshire/header.html:111 +#: templates/web/oxfordshire/header.html:47 +#: templates/web/stevenage/header.html:97 templates/web/zurich/footer.html:11 +msgid "Hi %s" +msgstr "Moien %s" + +#: 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 "Caché(s)" + +#: templates/web/default/around/display_location.html:67 +msgid "Hide old" +msgstr "Cachés anciens" + +#: templates/web/default/around/display_location.html:62 +msgid "Hide pins" +msgstr "Cacher les épingles" + +#: templates/web/default/admin/body_edit.html:79 +msgid "History" +msgstr "Historique" + +#: templates/web/default/js/translation_strings.html:31 +#: templates/web/oxfordshire/js/translation_strings.html:25 +msgid "Home" +msgstr "" + +#: templates/web/default/index-steps.html:1 +msgid "How to report a problem" +msgstr "Comment signaler un problème" + +#: 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: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" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:89 +msgid "I'm afraid we couldn't locate your problem in the database.\n" +msgstr "Je suis désolé, nous n'avons pas trouvé votre problème dans notre base de données.\n" + +#: perllib/FixMyStreet/App/Controller/Tokens.pm:44 +msgid "I'm afraid we couldn't validate that token, as the report was made too long ago." +msgstr "Je suis désolé, nous n'avons pas pu valider cet accusé de réception car le rapport a été fait il y a trop longtemps." + +#: perllib/FixMyStreet/App/Controller/Tokens.pm:259 +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: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 "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 "" + +#: templates/web/default/email_sent.html:15 +msgid "If you do not, your problem will not be posted." +msgstr "" + +#: templates/web/default/email_sent.html:17 +msgid "If you do not, your update will not be posted." +msgstr "" + +#: templates/web/default/report/new/councils_text_none.html:8 +#: templates/web/default/report/new/councils_text_none.html:9 +msgid "If you submit a problem here the subject and details of the problem will be public, but the problem will <strong>not</strong> be reported to the council." +msgstr "Si vous signalez un problème ici, le sujet et les détails seront publics, mais le problème ne sera <strong>pas</strong> signalé à l'administration." + +#: templates/web/emptyhomes/report/new/councils_text_none.html:9 +msgid "If you submit a report here it will be left on the site, but not reported to the council – please still leave your report, so that we can show to the council the activity in their area." +msgstr "Si vous soumettez un rapport ici il sera affiché sur le site, mais ne sera pas signalé à l'administration responsable ; merci de le soumettre malgré tout pour que nous puissions montrer à l'administration qu'il y a de l'activité sur leur territoire." + +#: templates/web/default/auth/token.html:22 +#: templates/web/default/email_sent.html:9 +msgid "If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way." +msgstr "Si vous consultez vos emails sur un site web ou que vous utilisez un filtre antispam, vérifiez peut-être votre boîte Spam/Courrier indésirable : nos messages sont parfois filtrés par erreur." + +#: templates/web/default/questionnaire/index.html:86 +#: templates/web/fixmystreet/questionnaire/index.html:77 +msgid "" +"If you wish to leave a public update on the problem, please enter it here\n" +"(please note it will not be sent to the council). For example, what was\n" +"your experience of getting the problem fixed?" +msgstr "" +"Si vous souhaitez laisser une actualisation publique sur le problème, merci de l'entrer ici\n" +"(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" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:100 +msgid "Illegal feed selection" +msgstr "Sélection de flux invalide" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:82 +#: 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:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 +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: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 "En cours" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:38 +msgid "Incident Category" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:163 +msgid "Include reporter personal details" +msgstr "" + +#: templates/web/default/admin/stats.html:76 +msgid "Include unconfirmed reports" +msgstr "Inclure les rapports non confirmés" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:354 +msgid "Incorrect has_photo value \"%s\"" +msgstr "Valeur has_photo invalide \"%s\"" + +#: 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 +msgid "Internal referral" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:339 +msgid "Invalid agency_responsible value %s" +msgstr "Valeur agency_responsible invalide \"%s\"" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1096 +msgid "Invalid end date" +msgstr "Date de fin invalide" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:432 +msgid "Invalid format %s specified." +msgstr "Format spécifié %s invalide" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1092 +msgid "Invalid start date" +msgstr "Date de début invalide" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:81 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:37 +#: templates/web/default/dashboard/index.html:142 +#: templates/web/default/dashboard/index.html:143 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 +msgid "Investigating" +msgstr "En examen" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:12 +#: templates/web/emptyhomes/tokens/confirm_problem.html:14 +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’t mean the council isn’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:40 +msgid "Keep me signed in on this computer" +msgstr "Se souvenir de moi sur cet ordinateur" + +#: templates/web/bromley/report/display.html:197 +#: templates/web/bromley/report/new/fill_in_details_form.html:119 +#: templates/web/bromley/report/new/fill_in_details_form.html:166 +msgid "Last Name" +msgstr "" + +#: templates/web/default/admin/body.html:58 +#: templates/web/zurich/admin/body.html:15 +msgid "Last editor" +msgstr "Dernier auteur" + +#: templates/web/default/admin/report_edit.html:72 +msgid "Last update:" +msgstr "Dernière actualisation :" + +#: templates/web/default/admin/problem_row.html:39 +msgid "Last update:" +msgstr "Dernière 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" +msgstr "Lister tous les problèmes rapportés" + +#: templates/web/bromley/report/new/fill_in_details_form.html:69 +#: templates/web/default/report/new/fill_in_details_form.html:68 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:51 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:75 +#: templates/web/seesomething/report/new/fill_in_details_form.html:25 +#: templates/web/zurich/report/new/fill_in_details_form.html:51 +msgid "Loading..." +msgstr "Chargement…" + +#: templates/web/default/alert/choose.html:1 +#: templates/web/default/alert/choose.html:3 +#: templates/web/default/alert/index.html:1 +#: templates/web/default/alert/index.html:3 +#: templates/web/default/alert/list.html:1 +#: templates/web/default/alert/list.html:5 +#: templates/web/default/alert/updates.html:1 +#: templates/web/default/tokens/confirm_alert.html:1 +#: templates/web/default/tokens/confirm_alert.html:3 +#: templates/web/emptyhomes/alert/index.html:1 +#: templates/web/emptyhomes/alert/index.html:3 +#: templates/web/fixmybarangay/alert/index.html:1 +#: templates/web/fixmybarangay/alert/index.html:3 +#: templates/web/fixmystreet/alert/updates.html:1 +msgid "Local RSS feeds and email alerts" +msgstr "Flux RSS et alertes email locaux" + +#: templates/web/default/alert/list.html:1 +#: templates/web/default/alert/list.html:12 +#: templates/web/default/alert/list.html:14 +#: templates/web/default/alert/list.html:3 +msgid "Local RSS feeds and email alerts for ‘%s’" +msgstr "Flux RSS et alertes email locales pour « %s »" + +#: 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 "Alertes locales" + +#: templates/web/default/index-steps.html:25 +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:43 +#: templates/web/oxfordshire/js/translation_strings.html:37 +msgid "MAP" +msgstr "" + +#: perllib/FixMyStreet/Map/OSM.pm:44 +msgid "Map © <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 © <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" + +#: templates/web/default/contact/index.html:90 +msgid "Message:" +msgstr "Message :" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:440 +msgid "Missing jurisdiction_id" +msgstr "jurisdiction_id manquant" + +#: templates/web/zurich/admin/stats.html:34 +msgid "Moderated by division within one working day" +msgstr "" + +#: templates/web/default/admin/stats.html:11 +msgid "Month" +msgstr "Mois" + +#: templates/web/default/report/display.html:30 +msgid "More problems nearby" +msgstr "Encore plus de problèmes aux alentours" + +#: 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 "Nom" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:74 +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: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:317 +msgid "Name: %s" +msgstr "" + +#: templates/web/fiksgatami/footer.html:3 +#: templates/web/fiksgatami/nn/footer.html:3 +#: templates/web/reading/footer.html:4 +msgid "Navigation" +msgstr "Navigation" + +#: perllib/FixMyStreet/Geocode/OSM.pm:166 +msgid "Nearest named road to the pin placed on the map (automatically generated using OpenStreetMap): %s%s" +msgstr "Route la plus proche de l'épingle placée sur le plan (génerée automatiquement à partir d'OpenStreetMap): %s%s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:148 +msgid "Nearest postcode to the pin placed on the map (automatically generated): %s (%sm away)" +msgstr "Code postal le plus proche de l'épingle placée sur le plan (géneré automatiquement): %s (à %sm d'ici)" + +#: perllib/FixMyStreet/Cobrand/Default.pm:418 +#: perllib/FixMyStreet/Cobrand/Default.pm:458 +msgid "Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s" +msgstr "Route la plus proche de l'épingle placée sur le plan (génerée automatiquement à partir de Bing Maps): %s%s" + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:273 +msgid "" +"Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s\n" +"\n" +msgstr "" +"Route la plus proche de l'épingle placée sur le plan (génerée automatiquement à partir de Bing Maps): %s\n" +"\n" + +#: templates/web/default/email_sent.html:3 +msgid "Nearly Done! Now check your email..." +msgstr "Presque fini! Maintenant allez voir vos emails…" + +#: templates/web/default/reports/index.html:16 +#: templates/web/fixmybarangay/reports/index.html:16 +msgid "New <br>problems" +msgstr "Nouveaux <br />problèmes" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:264 +msgid "New body added" +msgstr "" + +#: 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" + +#: db/alert_types_eha.pl:12 +msgid "New local reports on reportemptyhomes.com" +msgstr "" + +#: templates/web/emptyhomes/reports/index.html:10 +#: templates/web/fiksgatami/nn/reports/index.html:10 +#: templates/web/fiksgatami/reports/index.html:10 +msgid "New problems" +msgstr "Nouveaux problèmes" + +#: db/alert_types.pl:38 +msgid "New problems for {{COUNCIL}} within {{WARD}} ward on FixMyStreet" +msgstr "Nouveaux problèmes pour {{COUNCIL}} dans la localité {{WARD}} sur Fix.lu" + +#: db/alert_types.pl:26 db/alert_types.pl:30 +msgid "New problems near {{POSTCODE}} on FixMyStreet" +msgstr "Nouveaux problèmes à proximité du code postal {{POSTCODE}} sur Fix.lu" + +#: db/alert_types.pl:10 +msgid "New problems on FixMyStreet" +msgstr "Nouveaux problèmes sur Fix.lu" + +#: db/alert_types.pl:34 +msgid "New problems to {{COUNCIL}} on FixMyStreet" +msgstr "Nouveaux problèmes à destination de {{COUNCIL}} sur Fix.lu" + +#: db/alert_types.pl:42 +msgid "New problems within {{NAME}}'s boundary on FixMyStreet" +msgstr "Nouveaux problèmes dans les limites de {{NAME}} sur Fix.lu" + +#: templates/web/zurich/admin/index-sdm.html:4 +msgid "New reports" +msgstr "" + +#: db/alert_types_eha.pl:23 +msgid "New reports for {{COUNCIL}} within {{WARD}} ward on reportemptyhomes.com" +msgstr "" + +#: db/alert_types_eha.pl:5 +msgid "New reports on reportemptyhomes.com" +msgstr "" + +#: db/alert_types_eha.pl:16 +msgid "New reports on reportemptyhomes.com near {{POSTCODE}}" +msgstr "" + +#: db/alert_types_eha.pl:19 +msgid "New reports to {{COUNCIL}} on reportemptyhomes.com" +msgstr "" + +#: db/alert_types_eha.pl:27 +msgid "New reports within {{NAME}}'s boundary on reportemptyhomes.com" +msgstr "" + +#: templates/web/default/admin/questionnaire.html:24 +msgid "New state" +msgstr "Nouvel état" + +#: templates/web/zurich/admin/report_edit-sdm.html:61 +msgid "New update:" +msgstr "" + +#: templates/web/fiksgatami/front/news.html:9 +#: templates/web/fiksgatami/nn/front/news.html:9 +#: templates/web/fixmystreet/front/news.html:8 +msgid "New!" +msgstr "Nouveau !" + +#: templates/web/default/pagination.html:13 +msgid "Next" +msgstr "" + +#: 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 "Non" + +#: templates/web/default/admin/user-form.html:33 +msgid "No body" +msgstr "" + +#: templates/web/default/admin/stats.html:85 +msgid "No council" +msgstr "Pas d'administration" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:362 +msgid "No council selected" +msgstr "Aucune administration sélectionnée" + +#: 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:25 +#, fuzzy +msgid "No flagged problems found." +msgstr "Aucun problème signalé n'a été trouvé" + +#: 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:68 +msgid "No further updates" +msgstr "" + +#: templates/web/default/around/around_map_list_items.html:17 +#: templates/web/fixmystreet/around/around_map_list_items.html:8 +msgid "No problems found." +msgstr "Aucun problème trouvé." + +#: templates/web/default/around/on_map_list_items.html:14 +#: templates/web/fixmystreet/around/on_map_list_items.html:6 +msgid "No problems have been reported yet." +msgstr "Aucun problème n'a encore été signalé." + +#: 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:73 +msgid "Non Public" +msgstr "" + +#: 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 "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 +#: 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 "" + +#: templates/web/zurich/admin/report_edit-sdm.html:21 +msgid "Not for my subdivision" +msgstr "" + +#: templates/web/default/admin/questionnaire.html:6 +msgid "Not reported before" +msgstr "Jamais signalé" + +#: templates/web/default/report/_main.html:10 +msgid "Not reported to council" +msgstr "Pas signalé à l'administration" + +#: 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 "Note" + +#: templates/web/default/admin/stats.html:51 +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:157 +#: templates/web/default/admin/body_edit.html:44 +#: templates/web/zurich/admin/body.html:47 +msgid "Note:" +msgstr "Note :" + +#: templates/web/default/open311/index.html:75 +msgid "Note: <strong>%s</strong>" +msgstr "Note : <strong>%s</strong>" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:154 +msgid "Now to submit your report…" +msgstr "Maintenant pour envoyer votre rapport…" + +#: templates/web/default/report/new/fill_in_details_form.html:131 +msgid "Now to submit your report… do you have a FixMyStreet password?" +msgstr "Maintenant pour envoyer votre rapport… avez-vous un mot de passe Fix.lu ?" + +#: templates/web/fixmystreet/report/update-form.html:83 +msgid "Now to submit your update…" +msgstr "Now to submit your mise à jour…" + +#: templates/web/default/report/update-form.html:86 +msgid "Now to submit your update… do you have a FixMyStreet password?" +msgstr "Maintenant pour envoyer votre mise à jour… avez-vous un mot de passe Fix.lu ?" + +#: templates/web/default/js/translation_strings.html:42 +#: templates/web/oxfordshire/js/translation_strings.html:36 +msgid "OK" +msgstr "" + +#: templates/web/default/report/display.html:24 +#: templates/web/default/report/update.html:16 +msgid "Offensive? Unsuitable? Tell us" +msgstr "Offensant ? Inapproprié ? Dites-le nous" + +#: templates/web/default/reports/index.html:18 +#: templates/web/fixmybarangay/reports/index.html:18 +msgid "Old / unknown <br>problems" +msgstr "Probèmes<br /> anciens / inconnus" + +#: templates/web/fiksgatami/nn/reports/index.html:12 +#: templates/web/fiksgatami/reports/index.html:12 +msgid "Old problems,<br>state unknown" +msgstr "Probèmes anciens,<br /> état inconnu" + +#: templates/web/default/admin/questionnaire.html:24 +msgid "Old state" +msgstr "Ancien état" + +#: templates/web/default/reports/index.html:20 +#: templates/web/fixmybarangay/reports/index.html:20 +msgid "Older <br>fixed" +msgstr "Anciens <br />résolus" + +#: templates/web/default/reports/index.html:17 +#: templates/web/fixmybarangay/reports/index.html:17 +msgid "Older <br>problems" +msgstr "Anciens <br />problèmes" + +#: templates/web/fiksgatami/nn/reports/index.html:14 +#: templates/web/fiksgatami/reports/index.html:14 +msgid "Older fixed" +msgstr "Anciens résolus" + +#: templates/web/emptyhomes/reports/index.html:11 +#: templates/web/fiksgatami/nn/reports/index.html:11 +#: templates/web/fiksgatami/reports/index.html:11 +msgid "Older problems" +msgstr "Anciens problèmes" + +#: 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 "Ouvert" + +#: templates/web/default/my/my.html:22 templates/web/fixmystreet/my/my.html:26 +msgid "Open reports" +msgstr "Rapports ouverts" + +#: templates/web/default/open311/index.html:72 +msgid "Open311 API for the mySociety FixMyStreet server" +msgstr "API Open311 pour le serveur Fix.lu" + +#: templates/web/default/open311/index.html:82 +msgid "Open311 initiative web page" +msgstr "Page web de l'initiative Open311" + +#: templates/web/default/open311/index.html:83 +msgid "Open311 specification" +msgstr "Spécification Open311" + +#: templates/web/default/alert/_list.html:58 +#: templates/web/fixmystreet/alert/_list.html:60 +msgid "Or problems reported to:" +msgstr "Ou problèmes signalés à :" + +#: templates/web/default/alert/_list.html:33 +#: templates/web/fixmystreet/alert/_list.html:36 +msgid "Or you can subscribe to an alert based upon what ward or council you’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: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 "Autres" + +#: templates/web/default/footer.html:27 +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:8 +msgid "Owner" +msgstr "Propriétaire" + +#: templates/web/default/errors/page_error_404_not_found.html:1 +#: templates/web/default/errors/page_error_404_not_found.html:3 +msgid "Page Not Found" +msgstr "Page Introuvable" + +#: templates/web/default/admin/body-form.html:31 +#: templates/web/zurich/admin/body-form.html:14 +msgid "Parent" +msgstr "" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:51 +msgid "Partial" +msgstr "Partiel" + +#: 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 "Mot de passe (facultatif)" + +#: templates/web/default/auth/change_password.html:25 +msgid "Password:" +msgstr "Mot de passe :" + +#: 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 +msgid "Phone number (optional)" +msgstr "Téléphone (facultatif)" + +#: 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 "Téléphone" + +#: 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 "Photo" + +#: templates/web/default/questionnaire/index.html:99 +#: templates/web/default/report/new/fill_in_details_form.html:102 +#: templates/web/default/report/update-form.html:62 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:99 +#: templates/web/fixmystreet/questionnaire/index.html:90 +msgid "Photo:" +msgstr "Photo :" + +#: templates/web/default/alert/list.html:26 +msgid "Photos of recent nearby reports" +msgstr "Photos de rapports récents à proximité" + +#: 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:89 +#: templates/web/zurich/admin/report_edit.html:92 +msgid "Planned" +msgstr "Planifié" + +#: templates/web/fixmystreet/questionnaire/index.html:44 +msgid "Please <a class=\"tab_link\" href=\"#report\">take a look</a> at the updates that have been left." +msgstr "Merci de <a class=\"tab_link\" href=\"#report\">consulter</a> aux mises à jour qui ont été faites." + +#: templates/web/default/report/new/notes.html:6 +#: templates/web/fixmystreet/report/new/notes.html:6 +#: templates/web/oxfordshire/report/new/notes.html:5 +msgid "Please be polite, concise and to the point." +msgstr "Merci d'être poli, concis et précis." + +#: templates/web/default/auth/change_password.html:12 +#: templates/web/default/auth/change_password.html:17 +msgid "Please check the passwords and try again" +msgstr "Merci de vérifier les mots de passe et de réessayer" + +#: templates/web/default/auth/token.html:14 +msgid "Please check your email" +msgstr "Merci de consulter vos emails" + +#: templates/web/default/auth/general.html:14 +#: templates/web/default/auth/general.html:8 +#: templates/web/fixmystreet/auth/general.html:15 +#: templates/web/fixmystreet/auth/general.html:9 +#: templates/web/seesomething/auth/general.html:15 +#: templates/web/seesomething/auth/general.html:9 +#: templates/web/zurich/auth/general.html:3 +#: templates/web/zurich/auth/general.html:9 +msgid "Please check your email address is correct" +msgstr "Merci de vérifier que votre adresse email est correcte" + +#: 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 "Merci de sélectionner une catégorie" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:387 +msgid "Please choose a property type" +msgstr "Merci de choisir un type de propriété" + +#: templates/web/seesomething/js/translation_strings.html:6 +msgid "Please choose a transport category" +msgstr "" + +#: templates/web/seesomething/js/translation_strings.html:7 +msgid "Please choose an incident category" +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”" +msgstr "" + +#: templates/web/default/contact/blurb.html:2 +msgid "" +"Please do <strong>not</strong> report problems through this form; messages go to\n" +"the team behind FixMyStreet, not a council. To report a problem,\n" +"please <a href=\"/\">go to the front page</a> and follow the instructions." +msgstr "" +"Merci de ne <strong>pas</strong> rapporter des problèmes via ce formulaires; ces\n" +"messages sont envoyés à l'équipe de Fix.lu, pas à une administration. Pour signaler un,\n" +"problème, merci <a href=\"/\">d'aller à la première page</a> et de suivre les instructions." + +#: templates/web/default/report/new/notes.html:7 +#: templates/web/fixmystreet/report/new/notes.html:7 +#: templates/web/oxfordshire/report/new/notes.html:6 +msgid "Please do not be abusive — abusing your council devalues the service for all users." +msgstr "" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:46 +msgid "Please do not give address or personal information in this section." +msgstr "" + +#: 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: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" +msgstr "Merci d'entrer un email valide" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:346 +#: perllib/FixMyStreet/App/Controller/Contact.pm:107 +msgid "Please enter a valid email address" +msgstr "Merci d'entrer une adresse email valide" + +#: 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" + +#: 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 "Merci d'entrer votre email" + +#: templates/web/bromley/report/new/fill_in_details_form.html:149 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:151 +#: templates/web/seesomething/report/new/fill_in_details_form.html:85 +#: templates/web/zurich/report/new/fill_in_details_form.html:92 +msgid "Please enter your email address" +msgstr "Merci d'entrer votre adresse email" + +#: 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: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: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: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:24 +#: templates/web/oxfordshire/js/translation_strings.html:18 +msgid "Please enter your title" +msgstr "" + +#: 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 "" + +#: templates/web/emptyhomes/report/new/fill_in_details_text.html:1 +msgid "" +"Please fill in details of the empty property below, saying what type of\n" +"property it is e.g. an empty home, block of flats, office etc. Tell us\n" +"something about its condition and any other information you feel is relevant.\n" +"There is no need for you to give the exact address. Please be polite, concise\n" +"and to the point; writing your message entirely in block capitals makes it hard\n" +"to read, as does a lack of punctuation." +msgstr "" + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/default/report/new/fill_in_details_text.html:11 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:10 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:8 +msgid "Please fill in details of the problem below." +msgstr "Merci d'entrer les détails du problème ci-dessous" + +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:3 +msgid "" +"Please fill in details of the problem below. Leave as much detail as you can, \n" +"and if possible describe the exact location of\n" +"the problem (e.g. if there is a streetlight number or road name)." +msgstr "" + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/default/report/new/fill_in_details_text.html:3 +msgid "" +"Please fill in details of the problem below. The council won't be able\n" +"to help unless you leave as much detail as you can, so please describe the exact location of\n" +"the problem (e.g. on a wall), what it is, how long it has been there, a description (and a\n" +"photo of the problem if you have one), etc." +msgstr "" +"Merci d'entrer les détails du problème ci-dessous. L'administration ne pourra pas\n" +"le résoudre sauf si vous fournissez autant de détails que possible; merci de décrire\n" +"l'emplacement exact du problème (par exemple sur un mur), ce que c'est, depuis\n" +"combien de temps il existe, une description (et une photo du problème si vous en\n" +"avez une), etc." + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:70 +#: templates/web/seesomething/report/new/fill_in_details_form.html:20 +#: templates/web/zurich/report/new/fill_in_details_form.html:46 +msgid "Please fill in details of the problem." +msgstr "Merci d'entrer les détails du problème." + +#: templates/web/bromley/report/new/fill_in_details_form.html:28 +#: templates/web/default/report/new/fill_in_details_form.html:27 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:26 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:35 +#: templates/web/zurich/report/new/fill_in_details_form.html:20 +msgid "Please fill in the form below with details of the problem, and describe the location as precisely as possible in the details box." +msgstr "Merci de remplir le formulaire ci-dessous avec les détails du problème, et de décrir l'emplacement aussi précisément que possible dans les détails." + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:243 +msgid "Please indicate whether you'd like to receive another questionnaire" +msgstr "Merci d'indiquer si vous souhaitez recevoir un autre questionnaire" + +#: templates/web/fixmystreet/report/updates-sidebar-notes.html:3 +msgid "Please note that updates are not sent to the council." +msgstr "" + +#: templates/web/default/report/update-form.html:7 +msgid "Please note that updates are not sent to the council. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgstr "Merci de bien noter que les mises à jour ne sont pas envoyées à l'administration. Si vous laissez votre nom, il sera public. Vos informations seront uniquement utilisées conformément à nore <a href=\"/faq#privacy\">politique de confidentialité</a>" + +#: templates/web/barnet/report/updates-sidebar-notes.html:1 +msgid "Please note that updates are not sent to the relevant department. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgstr "" + +#: templates/web/bromley/report/new/fill_in_details_form.html:23 +#: templates/web/default/report/new/fill_in_details_form.html:5 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:5 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:26 +#: templates/web/zurich/report/new/fill_in_details_form.html:11 +msgid "Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit." +msgstr "Merci de noter que votre rapport n'a <strong>pas</strong> été envoyé. Choisissez une catégorie et rajoutez des informations supplémentaires ci-dessous, puis envoyez." + +#: templates/web/default/report/new/notes.html:1 +#: templates/web/fixmybarangay/report/new/notes.html:1 +#: templates/web/fixmystreet/report/new/notes.html:1 +#: templates/web/oxfordshire/report/new/notes.html:1 +msgid "Please note:" +msgstr "Quelques remarques :" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:246 +msgid "Please provide some explanation as to why you're reopening this report" +msgstr "Merci d'expliquer pourquoi vous ré-ouvrez ce rapport" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:253 +msgid "Please provide some text as well as a photo" +msgstr "Merci de fournir du texte ainsi qu'une photo." + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:116 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:239 +msgid "Please say whether you've ever reported a problem to your council before" +msgstr "Merci de nous dire si vous avez signalé un problème à une administration auparavant." + +#: perllib/FixMyStreet/App/Controller/Alert.pm:80 +msgid "Please select the feed you want" +msgstr "Merci de sélectionner le type de flux que vous voulez" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:118 +msgid "Please select the type of alert you want" +msgstr "Merci de sélectionner le type d'alerte que vous voulez" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:235 +msgid "Please state whether or not the problem has been fixed" +msgstr "Merci de préciser si le problème a été réglé ou non." + +#: templates/web/default/questionnaire/index.html:50 +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:176 +msgid "Please upload a JPEG image only" +msgstr "Merci de charger uniquement des images JPEG" + +#: perllib/FixMyStreet/App/Controller/Photo.pm:183 +msgid "Please upload a JPEG image only\n" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Contact.pm:98 +msgid "Please write a message" +msgstr "Merci d'entrer un message" + +#: templates/web/bromley/report/display.html:70 +#: templates/web/fixmystreet/report/update-form.html:23 +msgid "Please write your update here" +msgstr "Merci d'écrire votre mise à jour ici" + +#: templates/web/bromley/report/display.html:123 +#: templates/web/bromley/report/display.html:151 +#: templates/web/bromley/report/display.html:163 +#: templates/web/default/contact/index.html:93 +#: templates/web/default/report/update-form.html:109 +#: templates/web/default/report/update-form.html:131 +#: templates/web/default/report/update-form.html:72 +#: templates/web/fixmystreet/contact/index.html:105 +#: templates/web/fixmystreet/report/update-form.html:123 +#: templates/web/fixmystreet/report/update-form.html:71 +#: templates/web/fixmystreet/report/update-form.html:95 +msgid "Post" +msgstr "Envoyer" + +#: templates/web/default/report/updates.html:15 +msgid "Posted anonymously at %s" +msgstr "Signalé anonymement à %s" + +#: templates/web/default/report/updates.html:22 +msgid "Posted by %s (<strong>%s</strong>) at %s" +msgstr "Envoyé par %s (<strong>%s</strong>) à %s" + +#: templates/web/default/report/updates.html:24 +msgid "Posted by %s at %s" +msgstr "Signalé par %s à %s" + +#: templates/web/default/pagination.html:7 +msgid "Previous" +msgstr "" + +#: 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 "" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:108 +msgid "Private information (not shown on site)" +msgstr "" + +#: templates/web/default/maps/openlayers.html:85 +msgid "Problem" +msgstr "Problème" + +#: templates/web/default/admin/timeline.html:22 +msgid "Problem %d created" +msgstr "Problème %d créé" + +#: templates/web/default/admin/timeline.html:24 +msgid "Problem %s confirmed" +msgstr "Problème %d confirmé" + +#: templates/web/default/admin/timeline.html:26 +msgid "Problem %s sent to council %s" +msgstr "Problème %d signalé à l’administration %s" + +#: 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:950 +msgid "Problem marked as open." +msgstr "Problème signalé comme ouvert." + +#: templates/web/default/admin/questionnaire.html:21 +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:10 +msgid "Problems" +msgstr "Problèmes" + +#: templates/web/default/around/_updates.html:1 +msgid "Problems in this area" +msgstr "Problèmes dans cette zone" + +#: templates/web/bromley/report/display.html:31 +#: templates/web/fixmystreet/around/tabbed_lists.html:4 +#: templates/web/fixmystreet/report/display.html:46 +msgid "Problems nearby" +msgstr "Problèmes aux alentours" + +#: templates/web/fixmystreet/around/tabbed_lists.html:3 +#: templates/web/fixmystreet/report/display.html:44 +msgid "Problems on the map" +msgstr "Problèmes sur la carte" + +#: db/alert_types.pl:14 +msgid "Problems recently reported fixed on FixMyStreet" +msgstr "Problèmes récemment signalés sur Fix.lu" + +#: templates/web/default/alert/_list.html:19 +#: templates/web/fixmystreet/alert/_list.html:21 +msgid "Problems within %.1fkm of this location" +msgstr "Problèmes à moins de %.1fkm de ce lieu" + +#: perllib/FixMyStreet/Cobrand/Default.pm:626 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:109 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:155 +#: perllib/FixMyStreet/Cobrand/UK.pm:228 +msgid "Problems within %s" +msgstr "Problèmes à l'intérieur de %s" + +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:117 +#: perllib/FixMyStreet/Cobrand/UK.pm:242 +msgid "Problems within %s ward" +msgstr "Problèmes dans la localité %s" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:24 +msgid "Problems within %s, FixMyStreet" +msgstr "Problèmes à l'intérieur de %s, Fix.lu" + +#: templates/web/default/alert/_list.html:40 +#: templates/web/fixmybarangay/alert/_list.html:13 +#: templates/web/fixmystreet/alert/_list.html:42 +msgid "Problems within the boundary of:" +msgstr "Problèmes à l'intérieur des limites de :" + +#: db/alert_types_eha.pl:8 +msgid "Properties recently reported as put back to use on reportemptyhomes.com" +msgstr "" + +#: templates/web/default/admin/report_edit.html:32 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:115 +msgid "Property address:" +msgstr "" + +#: templates/web/default/report/new/category.html:8 +msgid "Property type:" +msgstr "Type de propriété:" + +#: templates/web/bromley/report/new/fill_in_details_form.html:52 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:64 +msgid "Provide a title" +msgstr "Entrez un titre" + +#: templates/web/bromley/report/display.html:57 +#: templates/web/default/report/update-form.html:3 +#: templates/web/fixmystreet/report/update-form.html:4 +msgid "Provide an update" +msgstr "Apporter une mise à jour" + +#: templates/web/fixmystreet/auth/general.html:53 +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 "" + +#: 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." +msgstr "" + +#: templates/web/bromley/report/display.html:144 +#: templates/web/default/report/new/fill_in_details_form.html:173 +#: templates/web/default/report/update-form.html:128 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:202 +#: templates/web/fixmystreet/report/update-form.html:116 +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:60 +#: templates/web/default/admin/body.html:73 +msgid "Public" +msgstr "" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:44 +msgid "Public information (shown on site)" +msgstr "" + +#: 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:80 +#: templates/web/zurich/admin/stats.html:38 +msgid "Publish photo" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:222 +msgid "Publish the response" +msgstr "" + +#: templates/web/default/questionnaire/completed.html:1 +#: templates/web/default/questionnaire/completed.html:2 +#: templates/web/default/questionnaire/index.html:0 +#: templates/web/default/questionnaire/index.html:14 +#: templates/web/default/questionnaire/index.html:4 +#: templates/web/fixmystreet/questionnaire/index.html:0 +#: templates/web/fixmystreet/questionnaire/index.html:14 +#: templates/web/fixmystreet/questionnaire/index.html:32 +#: templates/web/fixmystreet/questionnaire/index.html:4 +msgid "Questionnaire" +msgstr "Questionnaire" + +#: templates/web/default/admin/timeline.html:30 +msgid "Questionnaire %d answered for problem %d, %s to %s" +msgstr "Questionnaire %d rempli pour problème %d, %s à %s" + +#: templates/web/default/admin/timeline.html:28 +msgid "Questionnaire %d sent for problem %d" +msgstr "Questionnaire %d envoyé pour problème %s" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:192 +msgid "Questionnaire filled in by problem reporter" +msgstr "Questionnaire rempli par le requérant" + +#: templates/web/bromley/report/display.html:37 +#: templates/web/default/alert/_list.html:21 +#: templates/web/default/around/display_location.html:1 +#: templates/web/default/around/display_location.html:3 +#: templates/web/default/report/display.html:46 +#: templates/web/default/reports/_rss.html:1 +#: templates/web/fixmystreet/alert/_list.html:22 +#: templates/web/fixmystreet/alert/updates.html:9 +#: templates/web/fixmystreet/report/display.html:61 +msgid "RSS feed" +msgstr "Flux RSS" + +#: perllib/FixMyStreet/Cobrand/UK.pm:271 perllib/FixMyStreet/Cobrand/UK.pm:283 +msgid "RSS feed for %s" +msgstr "Flux RSS pour %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:277 perllib/FixMyStreet/Cobrand/UK.pm:289 +msgid "RSS feed for %s ward, %s" +msgstr "Flux RSS pour la localité %s, %s" + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:171 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:179 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:189 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:197 +#: perllib/FixMyStreet/Cobrand/UK.pm:297 perllib/FixMyStreet/Cobrand/UK.pm:309 +msgid "RSS feed of %s" +msgstr "Flux RSS de %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:302 perllib/FixMyStreet/Cobrand/UK.pm:314 +msgid "RSS feed of %s, within %s ward" +msgstr "Flux RSS de %s, dans la localité %s" + +#: templates/web/default/alert/_list.html:21 +#: templates/web/fixmystreet/alert/_list.html:22 +msgid "RSS feed of nearby problems" +msgstr "Flux RSS de problèmes à proximité" + +#: templates/web/default/reports/_rss.html:1 +msgid "RSS feed of problems in this %s" +msgstr "Flux RSS de problèmes à l'intérieur de cette %s" + +#: perllib/FixMyStreet/Cobrand/Default.pm:627 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:110 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:154 +#: perllib/FixMyStreet/Cobrand/UK.pm:235 +msgid "RSS feed of problems within %s" +msgstr "Flux RSS de problèmes à l'intérieur de %s" + +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:116 +#: perllib/FixMyStreet/Cobrand/UK.pm:241 +msgid "RSS feed of problems within %s ward" +msgstr "Flux RSS de problèmes à l'intérieur de la localité %s" + +#: templates/web/default/around/display_location.html:1 +#: templates/web/default/around/display_location.html:4 +msgid "RSS feed of recent local problems" +msgstr "Flux RSS de problèmes récents locaux" + +#: templates/web/bromley/report/display.html:37 +#: templates/web/default/report/display.html:46 +#: templates/web/fixmystreet/alert/updates.html:9 +#: templates/web/fixmystreet/report/display.html:61 +msgid "RSS feed of updates to this problem" +msgstr "Flux RSS des mises à jour pour ce problème" + +#: templates/web/bromley/report/display.html:39 +#: templates/web/default/alert/updates.html:9 +#: templates/web/default/report/display.html:37 +#: templates/web/fixmystreet/alert/updates.html:14 +#: templates/web/fixmystreet/report/display.html:63 +msgid "Receive email when updates are left on this problem." +msgstr "Apprendre par email quand ce problème est mis à jour." + +#: templates/web/default/around/display_location.html:0 +#: templates/web/default/around/display_location.html:32 +msgid "Recent local problems, FixMyStreet" +msgstr "Problèmes locaux récents, Fix.lu" + +#: templates/web/default/reports/index.html:19 +#: templates/web/fixmybarangay/reports/index.html:19 +msgid "Recently <br>fixed" +msgstr "Récemment<br />résolus" + +#: templates/web/fiksgatami/nn/reports/index.html:13 +#: templates/web/fiksgatami/reports/index.html:13 +msgid "Recently fixed" +msgstr "Récemment résolus" + +#: templates/web/default/index.html:35 templates/web/emptyhomes/index.html:24 +#: templates/web/fixmystreet/index.html:45 +msgid "Recently reported problems" +msgstr "Problèmes signalés récemment" + +#: templates/web/default/report/new/notes.html:9 +#: templates/web/fixmystreet/report/new/notes.html:10 +msgid "Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site remember that you can contact your council directly using their own website." +msgstr "Rappelez-vous que FixMyStreet est principalement destiné au signalement de problèmes physiques qui peuvent être résolus. Si votre problème ne convient pas pour être soumis via ce site, n'oubliez pas que vous pouvez contacter votre administration directement à l'aide de leur propre site web." + +#: templates/web/fixmybarangay/report/new/notes.html:9 +msgid "Remember that, for the pilot project, FixMyBarangay is only for reporting potholes and streetlights in bgy. Luz or Basak San Nicolas." +msgstr "" + +#: templates/web/default/admin/report_blocks.html:16 +msgid "Remove flag" +msgstr "Effacer le signalement" + +#: templates/web/default/admin/report_edit.html:89 +#: templates/web/default/admin/update_edit.html:57 +#: templates/web/zurich/admin/update_edit.html:35 +msgid "Remove photo (can't be undone!)" +msgstr "Effacer la photo (ne peut pas être annulé !)" + +#: templates/web/emptyhomes/header.html:12 +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/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 "Signaler un problème" + +#: templates/web/bromley/report/display.html:28 +#: templates/web/fixmystreet/report/display.html:35 +msgid "Report abuse" +msgstr "Signaler un abus" + +#: templates/web/default/report_created.html:1 +#: templates/web/default/report_created.html:3 +#: templates/web/seesomething/report_created.html:0 +#: templates/web/seesomething/report_created.html:8 +msgid "Report created" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Rss.pm:295 +msgid "Report on %s" +msgstr "Signaler sur %s" + +#: templates/web/default/index.html:14 templates/web/emptyhomes/index.html:5 +#: templates/web/fixmystreet/around/intro.html:1 +#: templates/web/stevenage/around/intro.html:1 +#: templates/web/zurich/around/intro.html:1 +msgid "Report, view, or discuss local problems" +msgstr "Signalez, voyez ou discutez des problèmes locaux" + +#: templates/web/default/my/my.html:74 +msgid "Reported %s" +msgstr "Signalé %s" + +#: templates/web/default/my/my.html:72 +msgid "Reported %s, to %s" +msgstr "Signalé %s, à %s" + +#: 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 "Signalé anonymement à %s" + +#: templates/web/default/admin/questionnaire.html:5 +#: templates/web/default/questionnaire/index.html:77 +#: templates/web/fixmystreet/questionnaire/index.html:71 +msgid "Reported before" +msgstr "Signalé avant" + +#: 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" + +#: templates/web/zurich/report/_main.html:2 +msgid "Reported in the %s category" +msgstr "" + +#: 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: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: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 "Signalisation d'un problème" + +#: 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: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 +msgid "Reports awaiting approval" +msgstr "" + +#: templates/web/default/around/tabbed_lists.html:3 +msgid "Reports on and around the map" +msgstr "Rapports sur et autour du plan" + +#: templates/web/zurich/admin/index-sdm.html:10 +msgid "Reports published" +msgstr "" + +#: templates/web/default/admin/report_edit.html:71 +msgid "Resend report" +msgstr "Renvoyer le rapport" + +#: templates/web/default/js/translation_strings.html:28 +#: templates/web/oxfordshire/js/translation_strings.html:22 +msgid "Right place?" +msgstr "" + +#: perllib/FixMyStreet/Geocode/OSM.pm:173 +msgid "Road operator for this named road (derived from road reference number and type): %s" +msgstr "Opérateur pour cette route (déterminé à partir de la référence et du type de la route): %s" + +#: perllib/FixMyStreet/Geocode/OSM.pm:170 +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: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:1377 +#: templates/web/default/admin/report_edit.html:86 +#: templates/web/zurich/admin/report_edit.html:77 +msgid "Rotate Right" +msgstr "" + +#: templates/web/default/admin/body_edit.html:76 +msgid "Save changes" +msgstr "Enregistrer les modifications" + +#: templates/web/default/admin/reports.html:1 +#: templates/web/zurich/admin/reports.html:1 +msgid "Search Reports" +msgstr "Rechercher rapports" + +#: templates/web/default/admin/users.html:1 +msgid "Search Users" +msgstr "Rechercher utilisateurs" + +#: templates/web/zurich/header.html:77 +msgid "Search reports" +msgstr "" + +#: templates/web/default/admin/reports.html:5 +#: templates/web/default/admin/users.html:8 +#: templates/web/zurich/admin/reports.html:5 +msgid "Search:" +msgstr "Rechercher :" + +#: 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:71 +#: templates/web/zurich/admin/body-form.html:26 +msgid "Select an area" +msgstr "" + +#: templates/web/default/alert/_list.html:8 +#: templates/web/fixmystreet/alert/_list.html:10 +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:664 +msgid "Sent to %s %s later" +msgstr "Envoyé à %s %s plus tard)" + +#: templates/web/default/admin/report_edit.html:71 +msgid "Sent:" +msgstr "Envoyé :" + +#: templates/web/default/admin/report_edit.html:73 +#: templates/web/zurich/admin/stats.html:45 +msgid "Service:" +msgstr "Service:" + +#: templates/web/fixmystreet/report/display.html:41 +msgid "Share" +msgstr "" + +#: templates/web/bromley/report/display.html:205 +#: templates/web/bromley/report/new/fill_in_details_form.html:129 +#: templates/web/bromley/report/new/fill_in_details_form.html:175 +#: templates/web/default/report/new/fill_in_details_form.html:210 +#: templates/web/default/report/update-form.html:157 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:129 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:197 +#: templates/web/fixmystreet/report/update-form.html:144 +msgid "Show my name publicly" +msgstr "Afficher mon nom publiquement" + +#: templates/web/default/around/display_location.html:69 +msgid "Show old" +msgstr "Montrer anciens" + +#: templates/web/default/around/display_location.html:60 +msgid "Show pins" +msgstr "Montrer les épingles" + +#: templates/web/default/auth/general.html:3 +#: templates/web/default/auth/general.html:49 +#: templates/web/fixmybarangay/header.html:70 +#: templates/web/fixmystreet/auth/general.html:3 +#: templates/web/fixmystreet/auth/general.html:42 +#: templates/web/fixmystreet/auth/general.html:62 +#: templates/web/fixmystreet/header.html:54 +#: templates/web/oxfordshire/header.html:115 +#: templates/web/seesomething/auth/general.html:3 +#: templates/web/seesomething/auth/general.html:39 +#: templates/web/stevenage/header.html:101 +#: templates/web/zurich/auth/general.html:18 +#: templates/web/zurich/auth/general.html:35 +msgid "Sign in" +msgstr "S'authentifier" + +#: templates/web/default/auth/general.html:74 +msgid "Sign in by email" +msgstr "S'authentifier par email" + +#: templates/web/default/auth/general.html:1 +#: templates/web/fixmystreet/auth/general.html:1 +#: templates/web/seesomething/auth/general.html:1 +#: templates/web/zurich/auth/general.html:1 +msgid "Sign in or create an account" +msgstr "Connectez-vous ou créez un compte" + +#: templates/web/bromley/auth/sign_out.html:1 +#: templates/web/default/auth/sign_out.html:1 +#: templates/web/default/header.html:30 +#: templates/web/emptyhomes/header.html:46 +#: templates/web/fiksgatami/header.html:22 +#: templates/web/fiksgatami/nn/header.html:22 +#: templates/web/lichfielddc/header.html:177 +#: templates/web/reading/header.html:33 +#: templates/web/seesomething/auth/sign_out.html:1 +#: templates/web/zurich/auth/sign_out.html:1 +msgid "Sign out" +msgstr "Déconnexion" + +#: templates/web/default/header.html:29 +#: templates/web/emptyhomes/header.html:45 +#: templates/web/fiksgatami/header.html:21 +#: templates/web/fiksgatami/nn/header.html:21 +#: templates/web/lichfielddc/header.html:177 +#: templates/web/reading/header.html:32 +msgid "Signed in as %s" +msgstr "Connecté en tant que %s" + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +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" +msgstr "Photos de rapports récents" + +#: perllib/FixMyStreet/App/View/Email.pm:32 +#: perllib/FixMyStreet/App/View/Web.pm:44 +msgid "Some text to localize" +msgstr "Du texte à localiser" + +#: perllib/FixMyStreet/Cobrand/UK.pm:93 +msgid "Sorry, that appears to be a Crown dependency postcode, which we don't cover." +msgstr "Désolé, ceci semble être un code postal d'une dépendance de la Couronne, que nous ne couvrons pas." + +#: templates/web/default/tokens/abuse.html:5 +msgid "Sorry, there has been an error confirming your problem." +msgstr "Désolé, il n'y a eu une erreur lors de la confirmation de votre problème." + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:215 +#: perllib/FixMyStreet/Geocode.pm:28 perllib/FixMyStreet/Geocode/Bing.pm:58 +#: perllib/FixMyStreet/Geocode/Google.pm:74 +#: perllib/FixMyStreet/Geocode/OSM.pm:66 +msgid "Sorry, we could not find that location." +msgstr "Désolé, nous n'avons pas pu trouver cet emplacement." + +#: perllib/FixMyStreet/Geocode/Bing.pm:53 +#: perllib/FixMyStreet/Geocode/Google.pm:69 +#: perllib/FixMyStreet/Geocode/Zurich.pm:87 +msgid "Sorry, we could not parse that location. Please try again." +msgstr "Désolé, nous n'avons pas pu trouver cet emplacement. Merci de réessayer." + +#: templates/web/fiksgatami/footer.html:16 +#: templates/web/fiksgatami/nn/footer.html:16 +msgid "Source code" +msgstr "Code source" + +#: templates/web/default/admin/stats.html:64 +#, fuzzy +msgid "Start Date:" +msgstr "Jour de début :" + +#: 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 "É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: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: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 "Stats" + +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Status" +msgstr "" + +#: templates/web/default/report/updates.html:10 +msgid "Still open, via questionnaire, %s" +msgstr "Encore ouvert, via questionnaire, %s" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370 +msgid "Subcategory: %s" +msgstr "" + +#: templates/web/zurich/admin/index-dm.html:27 +msgid "Subdivision/Body" +msgstr "" + +#: templates/web/bromley/report/new/fill_in_details_form.html:48 +#: templates/web/fixmystreet/contact/index.html:91 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:60 +msgid "Subject" +msgstr "Sujet" + +#: 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 "Sujet :" + +#: 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 "Envoyer" + +#: 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 "Envoyer les modifications" + +#: templates/web/default/questionnaire/index.html:116 +#: templates/web/fixmystreet/questionnaire/index.html:105 +msgid "Submit questionnaire" +msgstr "Envoi du questionnaire" + +#: 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 "" + +#: templates/web/bromley/report/display.html:44 +#: templates/web/default/alert/updates.html:17 +#: templates/web/default/report/display.html:42 +#: templates/web/fixmystreet/alert/updates.html:23 +#: templates/web/fixmystreet/report/display.html:68 +msgid "Subscribe" +msgstr "S'abonner" + +#: templates/web/default/alert/_list.html:97 +#: templates/web/fixmybarangay/alert/_list.html:42 +#: templates/web/fixmystreet/alert/_list.html:92 +msgid "Subscribe me to an email alert" +msgstr "M'abonner à une alerte par email" + +#: templates/web/fixmybarangay/alert/_list.html:6 +msgid "Subscribe to an alert based upon what baranagay you’re in:" +msgstr "" + +#: 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 "Sommaires" + +#: templates/web/default/reports/index.html:1 +#: templates/web/emptyhomes/reports/index.html:1 +#: templates/web/fiksgatami/nn/reports/index.html:1 +#: templates/web/fiksgatami/reports/index.html:1 +#: templates/web/fixmybarangay/reports/index.html:1 +#: templates/web/zurich/reports/index.html:0 +#: templates/web/zurich/reports/index.html:4 +msgid "Summary reports" +msgstr "Rapports sommaires" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1179 +msgid "Survey" +msgstr "" + +#: templates/web/default/admin/questionnaire.html:1 +msgid "Survey Results" +msgstr "Résultats de l'enquête" + +#: 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" + +#: templates/web/default/admin/body.html:18 +msgid "Text only version" +msgstr "Version texte seulement" + +#: templates/web/default/admin/update_edit.html:20 +#: templates/web/zurich/admin/update_edit.html:12 +msgid "Text:" +msgstr "Texte :" + +#: templates/web/default/tokens/confirm_update.html:7 +#: templates/web/default/tokens/confirm_update.html:8 +msgid "Thank you — you can <a href=\"%s\">view your updated problem</a> on the site." +msgstr "Merci — vous pouvez <a href=\"%s\">voir votre problème mis à jour</a> sur le site." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:6 +#: templates/web/emptyhomes/tokens/confirm_problem.html:8 +msgid "Thank you for reporting an empty property on ReportEmptyHomes.com. We have emailed the lead officer for empty homes in the council responsible with details, and asked them to do whatever they can to get the empty property back into use as soon as possible." +msgstr "" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:30 +#: templates/web/emptyhomes/tokens/confirm_problem.html:31 +msgid "" +"Thank you for reporting this empty property on ReportEmptyHomes.com.\n" +"At present the report cannot be sent through to the council for this area. We\n" +"are working with councils to link them into the system so that as many areas\n" +"as possible will be covered." +msgstr "" + +#: templates/web/default/tokens/error.html:7 +msgid "Thank you for trying to confirm your update or problem. We seem to have an error ourselves though, so <a href=\"%s\">please let us know what went on</a> and we'll look into it." +msgstr "Merci d'essayer de confirmer votre mise à jour ou un problème. Nous semblons rencontrer une erreur de notre côte ; s'il vous plaît, <a href=\"%s\"> dites-nous nous ce qui s'est passé</ a> et nous nous pencherons sur la question." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:24 +#: templates/web/emptyhomes/tokens/confirm_problem.html:26 +msgid "Thank you for using ReportEmptyHomes.com. Your action is already helping to resolve the UK’s empty homes crisis." +msgstr "" + +#: templates/web/fixmystreet/around/around_index.html:27 +msgid "Thanks for uploading your photo. We now need to locate your problem, so please enter a nearby street name or postcode in the box above :" +msgstr "" + +#: templates/web/default/contact/submit.html:8 +msgid "Thanks for your feedback. We'll get back to you as soon as we can!" +msgstr "Merci pour vos commentaires. Nous reviendrons vers vous dès que nous le pouvons !" + +#: templates/web/default/questionnaire/creator_fixed.html:9 +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: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." + +#: perllib/FixMyStreet/App/Controller/Council.pm:90 +msgid "That location does not appear to be covered by a council; perhaps it is offshore or outside the country. Please try again." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Location.pm:123 +msgid "That location does not appear to be in the UK; please try again." +msgstr "" + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:63 +#: perllib/FixMyStreet/Cobrand/UK.pm:86 +msgid "That postcode was not recognised, sorry." +msgstr "Ce code postal n'a pas été reconnu, désolé." + +#: perllib/FixMyStreet/App/Controller/Admin.pm:704 +msgid "That problem will now be resent." +msgstr "Ce problème va maintenant être renvoyé." + +#: perllib/FixMyStreet/App/Controller/Report.pm:117 +msgid "That report cannot be viewed on %s." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report.pm:111 +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 — <em>please</em> be patient." +msgstr "L'email de confirmation <strong>peut</ strong> prendre quelques minutes pour arriver — <em>merci</em> de patienter." + +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:3 +msgid "The council won’t be able to help unless you leave as much detail as you can. Please describe the exact location of the problem (e.g. on a wall), what it is, how long it has been there, a description (and a photo of the problem if you have one), etc." +msgstr "" + +#: templates/web/fixmystreet/questionnaire/index.html:43 +msgid "The details of your problem are available from the other tab above." +msgstr "Les détails de votre problème sont disponibles à partir de l'onglet autre au-dessus." + +#: templates/web/default/questionnaire/index.html:49 +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" +msgstr "L'erreur était : %s" + +#: templates/web/default/open311/index.html:88 +msgid "The following Open311 v2 attributes are returned for each request: service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code and service_name." +msgstr "Les attributs Open311 v2 suivants sont retournés pour chaque requête : service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code et service_name." + +#: perllib/FixMyStreet/Geocode/OSM.pm:165 +msgid "The following information about the nearest road might be inaccurate or irrelevant, if the problem is close to several roads or close to a road without a name registered in OpenStreetMap." +msgstr "Les informations suivantes au sujet de la route la plus proche pourrait être inexactes ou non pertinentes si le problème est proche de plusieurs routes ou près d'une route sans nom enregistré dans OpenStreetMap." + +#: db/alert_types.pl:19 db/alert_types.pl:23 db/alert_types.pl:27 +#: db/alert_types.pl:31 +msgid "The latest local problems reported by users" +msgstr "Les derniers problèmes locaux rapportés par les utilisateurs" + +#: db/alert_types_eha.pl:13 +msgid "The latest local reports reported by users" +msgstr "Les derniers rapports locaux rapportés par les utilisateurs" + +#: db/alert_types.pl:35 +msgid "The latest problems for {{COUNCIL}} reported by users" +msgstr "Les derniers problèmes pour {{COUNCIL}} rapportés par les utilisateurs" + +#: db/alert_types.pl:39 +msgid "The latest problems for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "Les derniers problèmes pour {{COUNCIL}} dans {{WARD}} rapportés par les utilisateurs" + +#: db/alert_types.pl:11 +msgid "The latest problems reported by users" +msgstr "Les derniers problèmes rapportés par les utilisateurs" + +#: db/alert_types.pl:15 +msgid "The latest problems reported fixed by users" +msgstr "Les derniers problèmes locaux signalés comme résolus par les utilisateurs" + +#: db/alert_types.pl:43 +msgid "The latest problems within {{NAME}}'s boundary reported by users" +msgstr "Les derniers problèmes à l'intérieur de {{NAME}} rapportés par les utilisateurs" + +#: db/alert_types_eha.pl:9 +msgid "The latest properties reported back to use by users" +msgstr "" + +#: db/alert_types_eha.pl:20 +msgid "The latest reports for {{COUNCIL}} reported by users" +msgstr "Les derniers rapports pour {{COUNCIL}} rapportés par les utilisateurs" + +#: db/alert_types_eha.pl:24 +msgid "The latest reports for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "Les derniers rapports pour {{COUNCIL}} dans {{WARD}} rapportés par les utilisateurs" + +#: db/alert_types_eha.pl:28 +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" +msgstr "Les mots de passe ne correspondent pas" + +#: templates/web/default/errors/page_error_404_not_found.html:10 +#: templates/web/default/errors/page_error_404_not_found.html:12 +msgid "The requested URL '%s' was not found on this server" +msgstr "L'URL demandée « %s » n'a pas été trouvée sur ce serveur" + +#: templates/web/default/alert/_list.html:14 +#: templates/web/fixmystreet/alert/_list.html:16 +msgid "The simplest alert is our geographic one:" +msgstr "La plus simple de nos alertes est la géographique :" + +#: templates/web/barnet/report/new/councils_text_all.html:3 +#: templates/web/default/report/new/councils_extra_text.html:1 +#: templates/web/default/report/new/councils_text_some.html:10 +#: templates/web/default/report/new/councils_text_some.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:17 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:12 +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: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." + +#: perllib/FixMyStreet/App/Controller/Contact.pm:116 +#: perllib/FixMyStreet/App/Controller/Dashboard.pm:59 +msgid "There was a problem showing this page. Please try again later." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:747 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:134 +#: templates/web/default/auth/general.html:23 +#: templates/web/fixmystreet/auth/general.html:24 +#: templates/web/seesomething/auth/general.html:24 +#: templates/web/zurich/auth/general.html:28 +msgid "There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the ‘sign in by email’ section of the form." +msgstr "Il y a un problème avec votre combinaison email / mot de passe. Si vous ne pouvez pas vous souvenir de votre mot de passe, ou n'en avez pas, remplissez s'il vous plaît la section « s'authentifier par email » du formulaire." + +#: perllib/FixMyStreet/App/Controller/Alert.pm:355 +msgid "There was a problem with your email/password combination. Please try again." +msgstr "Il y a un problème avec votre combinaison email / mot de passe. Réessayez s'il vous plaît." + +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:272 +msgid "There was a problem with your update. Please try again." +msgstr "Il y a un problème avec votre mise à jour. Réessayez s'il vous plaît." + +#: perllib/FixMyStreet/App/Controller/Contact.pm:120 +msgid "There were problems with your report. Please see below." +msgstr "Il y a un problème avec votre rapport. Voir s'il vous plaît plus bas." + +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:299 +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." + +#: 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: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" +msgstr "Ces renseignements sont nécessaires" + +#: templates/web/default/debug_header.html:3 +msgid "This is a developer site; things might break at any time, and the database will be periodically deleted." +msgstr "Ceci est un site de développement, les choses pourraient casser à tout moment, et la base de données sera régulièrement effacée." + +#: templates/web/fixmybarangay/reports/index.html:7 +msgid "This is a summary of all reports on this site; select a particular barangay to see the reports sent there." +msgstr "" + +#: templates/web/emptyhomes/reports/index.html:4 +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 "" + +#: templates/web/default/reports/index.html:7 +#: templates/web/fiksgatami/nn/reports/index.html:4 +#: templates/web/fiksgatami/reports/index.html:4 +msgid "This is a summary of all reports on this site; select a particular council to see the reports sent there." +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." + +#: templates/web/default/auth/token.html:9 +msgid "This may be because the link is too old or already used, or the address was not copied correctly." +msgstr "" + +#: templates/web/default/report/banner.html:15 +msgid "This problem has been closed" +msgstr "Ce problème a été clos" + +#: templates/web/bromley/report/display.html:98 +#: templates/web/default/report/banner.html:12 +#: templates/web/default/report/update-form.html:48 +#: templates/web/emptyhomes/report/banner.html:3 +#: templates/web/fixmystreet/report/update-form.html:46 +msgid "This problem has been fixed" +msgstr "Ce problème a été résolu" + +#: templates/web/bromley/report/display.html:92 +#: templates/web/default/report/update-form.html:43 +#: templates/web/fixmystreet/report/update-form.html:40 +msgid "This problem has not been fixed" +msgstr "Ce problème n'a pas été résolu" + +#: templates/web/default/report/banner.html:19 +msgid "This problem is in progress" +msgstr "Ce problème est en cours" + +#: templates/web/default/report/banner.html:9 +msgid "This problem is old and of unknown status." +msgstr "Ce problème est vieux et de statut inconnu." + +#: 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 "" + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:86 +msgid "This report is currently marked as closed." +msgstr "Ce rapport est actuellement marqué comme fermé." + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:84 +msgid "This report is currently marked as fixed." +msgstr "Ce rapport est actuellement marqué comme résolu." + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:88 +msgid "This report is currently marked as open." +msgstr "Ce rapport est actuellement marqué comme ouvert." + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315 +msgid "This report was submitted anonymously" +msgstr "" + +#: 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:1178 +#: templates/web/default/admin/timeline.html:1 +msgid "Timeline" +msgstr "Chronologie" + +#: templates/web/default/admin/flagged.html:15 +#: templates/web/default/admin/reports.html:12 +msgid "Title" +msgstr "Titre" + +#: templates/web/default/around/_report_banner.html:2 +msgid "To <strong>report a problem</strong>, click on the map at the correct location." +msgstr "Pour <strong>signaler un problème</ strong>, cliquez sur la carte à l'emplacement correct." + +#: templates/web/default/alert/index.html:27 +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: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: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 "Total" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:24 +msgid "Transport Category" +msgstr "" + +#: templates/web/default/js/translation_strings.html:29 +#: templates/web/oxfordshire/js/translation_strings.html:23 +msgid "Try again" +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 "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:48 +#: templates/web/zurich/admin/report_edit.html:61 +#: templates/web/zurich/admin/update_edit.html:18 +msgid "Unconfirmed" +msgstr "Non confirmé" + +#: templates/web/fixmystreet/report/banner.html:9 +msgid "Unknown" +msgstr "Inconnu" + +#: perllib/FixMyStreet/App/Controller/Rss.pm:173 +msgid "Unknown alert type" +msgstr "Type d'alerte inconnu" + +#: templates/web/default/js/translation_strings.html:39 +#: templates/web/oxfordshire/js/translation_strings.html:33 +msgid "Unknown error" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report.pm:106 +msgid "Unknown problem ID" +msgstr "ID de problème inconnu" + +#: templates/web/bromley/report/display.html:66 +#: templates/web/fixmystreet/report/update-form.html:19 +msgid "Update" +msgstr "Mise à jour" + +#: templates/web/default/admin/timeline.html:33 +msgid "Update %s created for problem %d; by %s" +msgstr "Mise à jour %s créée pour le problème %d; par %s" + +#: templates/web/default/contact/index.html:21 +#: templates/web/fixmystreet/contact/index.html:34 +msgid "Update below added anonymously at %s" +msgstr "Mise à jour ci-dessous ajoutée anonymement à %s" + +#: templates/web/default/contact/index.html:23 +#: templates/web/fixmystreet/contact/index.html:36 +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:233 +#: templates/web/zurich/admin/body-form.html:51 +msgid "Update body" +msgstr "" + +#: templates/web/default/admin/index.html:38 +msgid "Update breakdown by state" +msgstr "Répartition des problèmes par état" + +#: db/alert_types.pl:7 +msgid "Update by {{name}}" +msgstr "Mise à jour par {{name}}" + +#: templates/web/default/admin/update_edit.html:42 +#: templates/web/zurich/admin/update_edit.html:25 +msgid "Update changed problem state to %s" +msgstr "Mise à jour du statut du problème vers %s" + +#: templates/web/default/admin/update_edit.html:44 +msgid "Update marked problem as fixed" +msgstr "Une mise à jour a marqué ce problème comme résolu" + +#: templates/web/default/admin/update_edit.html:46 +msgid "Update reopened problem" +msgstr "Mettre a jour le problème réouvert" + +#: templates/web/default/admin/body.html:83 +msgid "Update statuses" +msgstr "Mettre à jour les statuts" + +#: templates/web/default/report/update-form.html:22 +msgid "Update:" +msgstr "Mise à jour :" + +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Updated" +msgstr "" + +#: 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:24 +#: templates/web/zurich/report/updates.html:2 +msgid "Updates" +msgstr "Mises à jour" + +#: perllib/FixMyStreet/DB/Result/Comment.pm:131 +msgid "Updates are limited to 2000 characters in length. Please shorten your update" +msgstr "" + +#: db/alert_types.pl:5 db/alert_types.pl:6 +msgid "Updates on {{title}}" +msgstr "Mises à jour sur {{title}}" + +#: templates/web/bromley/report/display.html:0 +#: templates/web/bromley/report/display.html:8 +#: templates/web/default/report/display.html:0 +#: templates/web/default/report/display.html:5 +#: templates/web/fixmystreet/report/display.html:0 +#: templates/web/fixmystreet/report/display.html:8 +msgid "Updates to this problem, FixMyStreet" +msgstr "Mises à jour pour ce problème, Fix.lu" + +#: 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:1314 +msgid "User flagged" +msgstr "Utilisateur signalé" + +#: 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:371 +#: perllib/FixMyStreet/App/Controller/Admin.pm:401 +msgid "Values updated" +msgstr "Valeurs mises à jour" + +#: templates/web/default/admin/report_edit.html:18 +#: templates/web/default/admin/update_edit.html:18 +#: templates/web/zurich/admin/report_edit-sdm.html:24 +#: templates/web/zurich/admin/report_edit.html:23 +#: templates/web/zurich/admin/update_edit.html:10 +msgid "View report on site" +msgstr "Voir le rapport sur le site" + +#: templates/web/default/reports/body.html:14 +msgid "View reports by ward" +msgstr "" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:39 +msgid "View your report" +msgstr "Voir votre rapport" + +#: templates/web/default/around/display_location.html:0 +#: templates/web/default/around/display_location.html:34 +#: templates/web/seesomething/around/display_location.html:0 +#: templates/web/seesomething/around/display_location.html:16 +msgid "Viewing a location" +msgstr "Consultation d'un lieu" + +#: templates/web/bromley/report/display.html:0 +#: templates/web/default/report/display.html:0 +#: templates/web/fixmystreet/report/display.html:0 +msgid "Viewing a problem" +msgstr "Consultation d'un problème" + +#: templates/web/default/reports/body.html:16 +msgid "Wards of this council" +msgstr "Localités de cette administration" + +#: templates/web/default/alert/choose.html:6 +#: templates/web/default/around/around_index.html:13 +#: templates/web/fixmystreet/around/around_index.html:16 +#: templates/web/seesomething/around/around_index.html:13 +msgid "We found more than one match for that location. We show up to ten matches, please try a different search if yours is not here." +msgstr "Nous avons trouvé plus d'une correspondance pour cet endroit. Nous montrons jusqu'à dix résultats, essayez s'il vous plaît une recherche différente si le vôtre n'est pas ici." + +#: templates/web/default/auth/token.html:8 +msgid "We have not been able to confirm your account - sorry." +msgstr "" + +#: templates/web/default/auth/token.html:16 +msgid "We have sent you an email containing a link to confirm your account." +msgstr "Nous vous avons envoyé un email contenant un lien pour confirmer votre compte." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:18 +#: templates/web/emptyhomes/tokens/confirm_problem.html:20 +msgid "We may contact you periodically to ask if anything has changed with the property you reported." +msgstr "" + +#: templates/web/bromley/report/display.html:143 +#: templates/web/fixmystreet/report/update-form.html:115 +msgid "We never show your email" +msgstr "Nous n’affichons jamais votre email" + +#: templates/web/bromley/report/new/fill_in_details_form.html:133 +#: templates/web/bromley/report/new/fill_in_details_form.html:179 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:134 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:201 +#: templates/web/zurich/report/new/fill_in_details_form.html:96 +msgid "We never show your email address or phone number." +msgstr "Nous n’affichons jamais votre email ou numéro de téléphone." + +#: 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." + +#: templates/web/default/index-steps.html:31 +msgid "We send it to the council on your behalf" +msgstr "Nous l'envoyons à l'administration en votre nom" + +#: templates/web/bromley/report/new/fill_in_details_form.html:217 +#: templates/web/default/report/new/notes.html:5 +#: templates/web/fixmybarangay/report/new/notes.html:5 +msgid "We will only use your personal information in accordance with our <a href=\"/faq#privacy\">privacy policy.</a>" +msgstr "Nous n'utiliserons vos renseignements personnels que conformément à notre <a href=\"/faq#privacy\">politique de confidentialité</a>." + +#: templates/web/fixmystreet/report/new/notes.html:4 +#: templates/web/oxfordshire/report/new/notes.html:4 +msgid "We will only use your personal information in accordance with our <a href=\"/privacy\">privacy policy.</a>" +msgstr "" + +#: templates/web/emptyhomes/contact/blurb.html:2 +msgid "We’d love to hear what you think about this website. Just fill in the form. Please don’t contact us about individual empty homes; use the box accessed from <a href=\"/\">the front page</a>." +msgstr "" + +#: templates/web/default/contact/blurb.html:8 +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:61 +#: templates/web/default/admin/body_edit.html:82 +#: templates/web/zurich/admin/body.html:17 +msgid "When edited" +msgstr "Édité quand" + +#: templates/web/default/admin/problem_row.html:35 +msgid "When sent" +msgstr "Envoyé quand" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:621 +msgid "Whole block of empty flats" +msgstr "" + +#: templates/web/default/open311/index.html:94 +msgid "With request searches, it is also possible to search for agency_responsible to limit the requests to those sent to a single administration. The search term is the administration ID provided by <a href=\"%s\">MaPit</a>." +msgstr "Avec les recherches à requètes, il est également possible de rechercher des agency_responsible pour limiter les demandes à celles qui sont envoyées à une administration unique. Le terme de recherche est l'ID de l'administration fourni par <a href=\"%s\">MapIt</ a>." + +#: templates/web/fixmystreet/footer.html:21 +#: templates/web/stevenage/footer.html:22 +msgid "Would you like better integration with FixMyStreet? <a href=\"http://www.mysociety.org/for-councils/fixmystreet/\">Find out about FixMyStreet for councils</a>." +msgstr "" + +#: templates/web/fixmystreet/footer.html:17 +#: templates/web/stevenage/footer.html:18 +msgid "Would you like to contribute to FixMyStreet? Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>." +msgstr "Aimeriez-vous contribuer à FixMyStreet? Notre code est open source et <a href=\"http://github.com/grischard/fixmystreet\"> disponible sur GitHub </a>." + +#: templates/web/default/questionnaire/index.html:106 +#: templates/web/fixmystreet/questionnaire/index.html:96 +msgid "Would you like to receive another questionnaire in 4 weeks, reminding you to check the status?" +msgstr "Aimeriez-vous recevoir un autre questionnaire dans 4 semaines, pour vous rappeler de vérifier l'état?" + +#: templates/web/default/report/new/notes.html:8 +#: templates/web/fixmybarangay/report/new/notes.html:8 +#: templates/web/fixmystreet/report/new/notes.html:8 +#: templates/web/oxfordshire/report/new/notes.html:7 +msgid "Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation." +msgstr "Si vous rédigez votre message entièrement en capitales, ou sans ponctuation, il sera difficile à lire." + +#: templates/web/default/admin/stats.html:10 +msgid "Year" +msgstr "Année" + +#: 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 "Oui" + +#: templates/web/bromley/report/display.html:157 +#: templates/web/bromley/report/new/fill_in_details_form.html:198 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:161 +#: templates/web/fixmystreet/report/update-form.html:89 +msgid "Yes I have a password" +msgstr "Oui j'ai un mot de passe" + +#: templates/web/default/contact/index.html:37 +#: templates/web/fixmystreet/contact/index.html:50 +msgid "You are reporting the following problem report for being abusive, containing personal information, or similar:" +msgstr "Vous signalez le rapport de problème suivant comme étant violent, contenant des renseignements personnels, ou semblables :" + +#: templates/web/default/contact/index.html:15 +#: templates/web/fixmystreet/contact/index.html:28 +msgid "You are reporting the following update for being abusive, containing personal information, or similar:" +msgstr "Vous signalez la mise à jour suivante comme étant violente, contenant des renseignements personnels, ou semblables :" + +#: templates/web/default/tokens/confirm_problem.html:19 +#: templates/web/default/tokens/confirm_problem.html:21 +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:8 +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 "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/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 "" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:38 +msgid "You have already answered this questionnaire. If you have a question, please <a href='%s'>get in touch</a>, or <a href='%s'>view your problem</a>.\n" +msgstr "Vous avez déjà répondu à ce questionnaire. Si vous avez une question, <a href='%s'>entrez en contact avec nous</a>, ou <a href='%s'>affichez votre problème</a>.\n" + +#: templates/web/bromley/report/new/fill_in_details_form.html:97 +#: templates/web/default/questionnaire/index.html:96 +#: templates/web/default/report/new/fill_in_details_form.html:93 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:90 +#: templates/web/fixmystreet/questionnaire/index.html:87 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:99 +#: templates/web/seesomething/report/new/fill_in_details_form.html:59 +#: templates/web/zurich/report/new/fill_in_details_form.html:75 +msgid "You have already attached a photo to this report, attaching another one will replace it." +msgstr "Vous avez déjà joint une photo à ce rapport, en joindre un autre la remplacera." + +#: templates/web/bromley/report/display.html:108 +#: templates/web/default/report/update-form.html:59 +#: templates/web/fixmystreet/report/update-form.html:56 +msgid "You have already attached a photo to this update, attaching another one will replace it." +msgstr "Vous avez déjà joint une photo à cette mise à jour, en joindre un autre la remplacera." + +#: templates/web/default/auth/sign_out.html:3 +#: templates/web/seesomething/auth/sign_out.html:3 +#: templates/web/zurich/auth/sign_out.html:3 +msgid "You have been signed out" +msgstr "Vous avez été déconnecté" + +#: templates/web/bromley/report/new/fill_in_details_form.html:25 +#: templates/web/default/report/new/fill_in_details_form.html:7 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:7 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:28 +#: templates/web/zurich/report/new/fill_in_details_form.html:13 +msgid "You have located the problem at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. " +msgstr "Vous avez localisé le problème au point marqué avec une épingle verte sur la carte. Si ce n'est pas le bon endroit, il suffit de cliquer à nouveau sur la carte." + +#: templates/web/default/tokens/confirm_alert.html:7 +msgid "You have successfully confirmed your alert." +msgstr "Vous avez réussi à confirmer votre alerte." + +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:6 +msgid "You have successfully confirmed your email address." +msgstr "" + +#: templates/web/default/tokens/confirm_problem.html:14 +#: templates/web/default/tokens/confirm_problem.html:15 +msgid "You have successfully confirmed your problem" +msgstr "Vous avez réussi à confirmer votre problème." + +#: templates/web/default/tokens/confirm_update.html:11 +#: templates/web/default/tokens/confirm_update.html:12 +msgid "You have successfully confirmed your update and you can now <a href=\"%s\">view it on the site</a>." +msgstr "Vous avez réussi à confirmer votre mise à jour et vous pouvez maintenant <a href=\"%s\">la voir sur le site</a>." + +#: templates/web/default/tokens/confirm_alert.html:11 +msgid "You have successfully created your alert." +msgstr "Vous avez réussi à créer votre alerte." + +#: templates/web/default/tokens/confirm_alert.html:9 +msgid "You have successfully deleted your alert." +msgstr "Vous avez réussi à effacer votre alerte." + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:754 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:140 +msgid "You have successfully signed in; please check and confirm your details are accurate:" +msgstr "Vous avez réussi à vous connecter ; veuillez vérifier et confirmer que vos coordonnées sont exactes :" + +#: templates/web/default/email_sent.html:13 +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?" + +#: templates/web/default/my/my.html:0 templates/web/default/my/my.html:14 +#: templates/web/default/my/my.html:3 templates/web/fixmystreet/my/my.html:0 +#: templates/web/fixmystreet/my/my.html:14 +#: templates/web/fixmystreet/my/my.html:3 +msgid "Your Reports" +msgstr "Vos rapports" + +#: templates/web/bromley/report/display.html:41 +#: templates/web/bromley/report/display.html:43 +#: templates/web/bromley/report/new/fill_in_details_form.html:145 +#: templates/web/fixmystreet/alert/_list.html:89 +#: templates/web/fixmystreet/alert/updates.html:19 +#: templates/web/fixmystreet/alert/updates.html:22 +#: templates/web/fixmystreet/contact/index.html:84 +#: templates/web/fixmystreet/report/display.html:65 +#: templates/web/fixmystreet/report/display.html:67 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:115 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:147 +#: templates/web/zurich/report/new/fill_in_details_form.html:88 +msgid "Your email" +msgstr "Votre email" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:81 +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:58 +msgid "Your email address" +msgstr "Votre adresse email" + +#: templates/web/default/auth/general.html:27 +msgid "Your email address:" +msgstr "Votre adresse mail:" + +#: templates/web/default/alert/_list.html:92 +#: templates/web/default/report/new/fill_in_details_form.html:124 +#: templates/web/default/report/update-form.html:81 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:133 +#: templates/web/fixmybarangay/alert/_list.html:37 +msgid "Your email:" +msgstr "Votre email:" + +#: templates/web/bromley/report/display.html:195 +#: templates/web/bromley/report/new/fill_in_details_form.html:117 +#: templates/web/bromley/report/new/fill_in_details_form.html:164 +msgid "Your first name" +msgstr "" + +#: templates/web/fixmystreet/report/updates-sidebar-notes.html:5 +msgid "Your information will only be used in accordance with our <a href=\"/privacy\">privacy policy</a>" +msgstr "" + +#: templates/web/bromley/report/display.html:201 +#: templates/web/bromley/report/new/fill_in_details_form.html:123 +#: templates/web/bromley/report/new/fill_in_details_form.html:170 +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:61 +#: templates/web/zurich/report/new/fill_in_details_form.html:104 +msgid "Your name" +msgstr "Votre nom" + +#: templates/web/default/auth/general.html:59 +#: templates/web/default/contact/index.html:68 +#: templates/web/default/report/new/fill_in_details_form.html:203 +#: templates/web/default/report/update-form.html:151 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:124 +msgid "Your name:" +msgstr "Votre nom :" + +#: templates/web/bromley/report/display.html:162 +#: templates/web/bromley/report/new/fill_in_details_form.html:203 +#: templates/web/fixmystreet/auth/general.html:41 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:166 +#: templates/web/fixmystreet/report/update-form.html:94 +#: templates/web/seesomething/auth/general.html:30 +#: templates/web/zurich/auth/general.html:34 +msgid "Your password" +msgstr "Votre mot de passe" + +#: templates/web/default/auth/change_password.html:6 +msgid "Your password has been changed" +msgstr "Votre mot de passe a été changé" + +#: 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 "Votre numéro de téléphone" + +#: templates/web/fixmystreet/questionnaire/index.html:15 +msgid "Your report" +msgstr "Votre rapport" + +#: templates/web/default/report_created.html:6 +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/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 "Vos rapports" + +#: templates/web/default/my/my.html:45 templates/web/fixmystreet/my/my.html:49 +msgid "Your updates" +msgstr "Vos mises à jour" + +#: templates/web/default/contact/index.html:76 +msgid "Your email:" +msgstr "votre email :" + +#: templates/web/default/admin/timeline.html:4 +msgid "by %s" +msgstr "par %s" + +#: templates/web/default/reports/body.html:6 +#: templates/web/default/reports/body.html:7 +msgid "council" +msgstr "administration" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:649 +msgid "council ref: %s" +msgstr "" + +#: 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 "n'a pas utilisé le plan" + +#: templates/web/default/alert/index.html:33 +#: templates/web/fixmystreet/around/postcode_form.html:20 +#: templates/web/seesomething/around/postcode_form.html:9 +msgid "e.g. ‘%s’ or ‘%s’" +msgstr "Par exemple '%s' ou '%s'" + +#: 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" +msgstr "" + +#: perllib/Utils.pm:263 +msgid "less than a minute" +msgstr "moins d'une minute" + +#: templates/web/default/report/updates.html:57 +msgid "marked as a duplicate report" +msgstr "" + +#: templates/web/default/report/updates.html:47 +msgid "marked as action scheduled" +msgstr "" + +#: templates/web/default/report/updates.html:59 +msgid "marked as an internal referral" +msgstr "" + +#: templates/web/default/report/updates.html:49 +msgid "marked as closed" +msgstr "" + +#: templates/web/default/report/updates.html:28 +#: templates/web/default/report/updates.html:51 +msgid "marked as fixed" +msgstr "marqué(s) comme réglé(s)" + +#: templates/web/default/report/updates.html:45 +msgid "marked as in progress" +msgstr "" + +#: templates/web/default/report/updates.html:41 +msgid "marked as investigating" +msgstr "" + +#: templates/web/default/report/updates.html:55 +msgid "marked as not the council's responsibility" +msgstr "" + +#: templates/web/default/report/updates.html:43 +msgid "marked as planned" +msgstr "" + +#: templates/web/default/report/updates.html:53 +msgid "marked as unable to fix" +msgstr "" + +#: 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 "s.o." + +#: templates/web/default/alert/_list.html:87 +#: templates/web/fixmybarangay/alert/_list.html:32 +#: templates/web/fixmystreet/alert/_list.html:85 +msgid "or" +msgstr " ou " + +#: 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: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: “%s”" +msgstr "" + +#: templates/web/default/admin/report_edit.html:30 +msgid "other areas:" +msgstr "autres lieux:" + +#: templates/web/default/report/updates.html:29 +#: templates/web/default/report/updates.html:39 +msgid "reopened" +msgstr "réouvert" + +#: templates/web/barnet/header.html:71 templates/web/bromley/header.html:100 +#: templates/web/bromley/header.html:65 +#: templates/web/fixmybarangay/header.html:67 +#: templates/web/fixmystreet/header.html:51 +#: templates/web/oxfordshire/header.html:112 +#: templates/web/oxfordshire/header.html:48 +#: templates/web/stevenage/header.html:98 templates/web/zurich/footer.html:12 +msgid "sign out" +msgstr "déconnexion" + +#: templates/web/bromley/report/new/fill_in_details_form.html:4 +#: templates/web/bromley/report/new/fill_in_details_form.html:7 +#: templates/web/default/report/new/fill_in_details_form.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:14 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:14 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:9 +msgid "the local council" +msgstr "L'administration locale" + +#: templates/web/default/report/_main.html:6 +#: templates/web/zurich/report/_main.html:5 +msgid "there is no pin shown as the user did not use the map" +msgstr "" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362 +msgid "this type of local problem" +msgstr "Ce type de problème local" + +#: perllib/Utils.pm:235 +msgid "today" +msgstr "aujourd'hui" + +#: 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 "plan utilisé" + +#: templates/web/default/admin/update_edit.html:35 +msgid "user is from same council as problem - %d" +msgstr "l'utilisateur est de la même administration que le problème - %d" + +#: templates/web/default/admin/update_edit.html:38 +msgid "user is problem owner" +msgstr "utilisateurs propriétaire du problème" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:3 +msgid "ward" +msgstr "localité" + +#: templates/web/default/front/stats.html:17 +#, perl-format +msgid "<big>%s</big> report recently" +msgid_plural "<big>%s</big> reports recently" +msgstr[0] "<big>%s</big> rapport récemment" +msgstr[1] "<big>%s</big> rapports récemment" + +#: perllib/Utils.pm:282 +#, perl-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" +msgstr[1] "" + +#: templates/web/default/report/_support.html:6 +#, perl-format +msgid "%d supporter" +msgid_plural "%d supporters" +msgstr[0] "" +msgstr[1] "" + +#: perllib/Utils.pm:284 +#, perl-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "" +msgstr[1] "" + +#: templates/web/default/front/stats.html:29 +#, perl-format +msgid "<big>%s</big> update on reports" +msgid_plural "<big>%s</big> updates on reports" +msgstr[0] "<big>%s</big> mise à jour de rapport" +msgstr[1] "<big>%s</big> mises à jour de rapports" + +#: templates/web/emptyhomes/report/new/councils_text_none.html:3 +#, perl-format +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] "Nous n'avons pas encore de détails pour l'administration responsable de ce lieu." +msgstr[1] "Nous n'avons pas encore de détails pour les administrations responsables de ce lieu." + +#: perllib/Utils.pm:278 +#, perl-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "" +msgstr[1] "" + +#: templates/web/default/front/stats.html:12 +#, perl-format +msgid "<big>%s</big> report in past week" +msgid_plural "<big>%s</big> reports in past week" +msgstr[0] "<big>%s</big> rapport la semaine passée" +msgstr[1] "<big>%s</big> rapports la semaine passée" + +#: templates/web/default/front/stats.html:23 +#, perl-format +msgid "<big>%s</big> fixed in past month" +msgid_plural "<big>%s</big> fixed in past month" +msgstr[0] "<big>%s</big> résolu le mois passé" +msgstr[1] "<big>%s</big> résolus le mois passé" + +#: templates/web/default/report/new/councils_text_some.html:14 +#, perl-format +msgid "We do <strong>not</strong> yet have details for the other council that covers this location." +msgid_plural "We do <strong>not</strong> yet have details for the other councils that cover this location." +msgstr[0] "Nous n'avons pas encore de détails pour l'autre administration responsable de ce lieu." +msgstr[1] "Nous n'avons pas encore de détails pour les autres administrations responsables de ce lieu." + +#: perllib/Utils.pm:280 +#, perl-format +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 new file mode 100644 index 000000000..5d2f1bc6c --- /dev/null +++ b/locale/hr.UTF-8/LC_MESSAGES/FixMyStreet.po @@ -0,0 +1,4725 @@ +# 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: +# Antonia <antonia.banovic@gmail.com>, 2013 +# BojanOpacak <bojan@rationalinternational.net>, 2012 +msgid "" +msgstr "" +"Project-Id-Version: fixmystreet\n" +"Report-Msgid-Bugs-To: matthew@mysociety.org\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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"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:602 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373 +msgid " and " +msgstr "i" + +#: templates/web/default/tokens/confirm_problem.html:14 +#: templates/web/default/tokens/confirm_problem.html:17 +msgid " and <strong>we will now send it to the council</strong>" +msgstr "i <strong>mi to sad šaljemo odgovornim tijelima</strong>" + +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_none.html:11 +#: templates/web/default/report/new/councils_text_none.html:14 +#: templates/web/default/report/new/councils_text_some.html:20 +#: templates/web/default/report/new/councils_text_some.html:23 +#: templates/web/default/report/new/councils_text_some.html:5 +#: templates/web/emptyhomes/report/new/councils_text_all.html:2 +msgid " or " +msgstr "ili" + +#: templates/web/default/admin/bodies.html:46 +msgid "%d addresses" +msgstr "%d adrese" + +#: 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:27 +#: templates/web/zurich/admin/index.html:6 +msgid "%d council contacts – %d confirmed, %d unconfirmed" +msgstr "%d kontakti vijeća – %d potvrđeni, %d nepotvrđeni" + +#: 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:24 +msgid "%d live updates" +msgstr "%d ažuriranje uživo" + +#: templates/web/default/admin/index.html:26 +msgid "%d questionnaires sent – %d answered (%s%%)" +msgstr "%d Upitnici poslani – %d odgovoreno (%s%%)" + +#: templates/web/default/pagination.html:10 +msgid "%d to %d of %d" +msgstr "" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:22 +msgid "%s - Summary reports" +msgstr "%s - Sažetak izvješća" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:651 +msgid "%s ref: %s" +msgstr "%s ref: %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:276 perllib/FixMyStreet/Cobrand/UK.pm:288 +msgid "%s ward, %s" +msgstr "" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:538 +msgid "%s, reported at %s" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/UK.pm:303 perllib/FixMyStreet/Cobrand/UK.pm:315 +msgid "%s, within %s ward" +msgstr "" + +#: templates/web/default/email_sent.html:29 +msgid "(Don't worry — we'll hang on to your alert while you're checking your email.)" +msgstr "" + +#: templates/web/default/email_sent.html:25 +msgid "(Don't worry — we'll hang on to your problem report while you're checking your email.)" +msgstr "" + +#: templates/web/default/email_sent.html:27 +msgid "(Don't worry — 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:29 +msgid "(Email in abuse table)" +msgstr "(Email na crnoj listi)" + +#: templates/web/default/alert/_list.html:20 +#: templates/web/fixmystreet/alert/_list.html:24 +msgid "(a default distance which covers roughly 200,000 people)" +msgstr "(zadana udaljenost koja obuhvaća približno 200,000 stanovnika)" + +#: templates/web/default/alert/_list.html:25 +#: templates/web/fixmystreet/alert/_list.html:28 +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 +#: templates/web/zurich/report/_item.html:21 +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 +#: templates/web/zurich/report/_item.html:19 +msgid "(fixed)" +msgstr "(popravljeno)" + +#: 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 "(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)" +msgstr "(nije poslano odgovornom tijelu)" + +#: templates/web/default/report/new/fill_in_details_form.html:217 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:140 +#: templates/web/zurich/report/new/fill_in_details_form.html:100 +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)" +msgstr "(poslano na obje adrese)" + +#: templates/web/default/report/new/fill_in_details_form.html:211 +msgid "(we never show your email address or phone number)" +msgstr "(vašu email adresu i broj telefona držimo u tajnosti)" + +#: templates/web/default/report/update-form.html:158 +msgid "(we never show your email)" +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:379 +msgid "-- Pick a category --" +msgstr "-- Izaberi kategoriju --" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:618 +#: perllib/FixMyStreet/DB/Result/Problem.pm:385 +msgid "-- Pick a property type --" +msgstr "-- Izaberite vrstu posjeda --" + +#: templates/web/emptyhomes/front/stats.html:5 +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’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>" + +#: templates/web/fiksgatami/questionnaire/completed-open.html:1 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try <a href=\"http://www.norge.no/styresmakter/\">writing\n" +"direct to your councillor(s)</a> or, if it’s a problem that could be\n" +"fixed by local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "" +"<p style=\"font-size:150%\">’Žao nam je što to čujemo. Imamo dva prijedloga: zašto ne biste <a href=\"http://www.norge.no/styresmakter/\">pisali\n" +"direktno vašem vijećniku(s)</a> ili, ako ’bi problem mogli rješiti lokalni stanovnici radeći zajedno, zašto se ne\n" +"<a href=\"http://www.pledgebank.com/new\">biste obvezali na to i isto objavili</a>?\n" +"</p>" + +#: templates/web/fixmystreet/questionnaire/completed-open.html:6 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try <a href=\"http://www.writetothem.com/\">writing direct\n" +"to your councillor(s)</a> or, if it’s a problem that could be fixed by\n" +"local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "" +"<p style=\"font-size:150%\">’Žao nam je što to čujemo. Imamo dva prijedloga:zašto ne biste <a href=\"http://www.writetothem.com/\">pisali direktno vašem vijećniku (s)</a> ili, ako ’s bi problem mogli rješiti lokalni stanovnici radeći zajedno, zašto se ne\n" +"<a href=\"http://www.pledgebank.com/new\">biste obvezali na to i isto objavili </a>?\n" +"</p>" + +#: templates/web/default/questionnaire/completed-open.html:6 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try writing to your local representative or, if it’s\n" +"a problem that could be fixed by local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "" +"<p style=\"font-size:150%\">’Žao nam je što to čujemo. Imamo dva prijedloga: zašto ne biste pokušali pisati vašem lokalnom predstavniku ili, ako ’s\n" +"problem mogu rješiti mještani radeći zajedno, zašto se ne \n" +"<a href=\"http://www.pledgebank.com/new\">biste obvezali na to i isto objavili</a>?\n" +"</p>" + +#: templates/web/default/questionnaire/index.html:35 +msgid "" +"<p>Getting empty homes back into use can be difficult, but by now a good council\n" +"will have made a lot of progress and reported what they have done on the\n" +"website. Even so properties can remain empty for many months if the owner is\n" +"unwilling or the property is in very poor repair. If nothing has happened or\n" +"you are not satisfied with the progress the council is making, now is the right\n" +"time to say so. We think it’s a good idea to contact some other people who\n" +"may be able to help or put pressure on the council For advice on how to do\n" +"this and other useful information please go to <a\n" +"href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +msgstr "" +"<p>Vraćanje napuštenih kuća u upotrebu može biti teško, ali do su sada dobra odgovorna tijela dosta napredovala te su priopćili što su napravili na internet stranici. Unatoč tome nekretnine mogu ostati prazne puno mjeseci ako vlasnik nije voljan ili ako je posjed u vrlo lošem stanju. Ako se ništa nije dogodilo ili ako niste zadovoljni sa napredovanjem odgovornih tijela, sada je pravo vrijeme da to i kažete. Mislimo ’ da bi bilo dobro kontaktirati neke druge osobe koje bi mogle pomoći ili prisiliti odgovorna tijela \n" +"Za savjet kako to učiniti i za ostale korisne informacije molimo idite na <a\n" +"href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" + +#: templates/web/default/questionnaire/index.html:26 +msgid "" +"<p>Getting empty homes back into use can be difficult. You shouldn’t expect\n" +"the property to be back into use yet. But a good council will have started work\n" +"and should have reported what they have done on the website. If you are not\n" +"satisfied with progress or information from the council, now is the right time\n" +"to say. You may also want to try contacting some other people who may be able\n" +"to help. For advice on how to do this and other useful information please\n" +"go to <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +msgstr "<p>Vraćanje napuštenih kuća u upotrebu može biti teško. Ne biste još trebali očekivati da će imanje biti vraćeno u upotrebu. Ali dobra odgovorna tijela će početi raditi i na internetskim stranicama bi trebali izvještavati o onome što su napravili. Ako niste zadovoljni napredovanjem ili informacijama od strane odgovornog tijela, sada je pravo vrijeme da to kažete. Jednako tako možete pokušati kontaktirati neke druge osobe koje bi mogle pomoći. Za savjet kako to učiniti i za ostale korisne informacije molimo idite na <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" + +#: templates/web/default/questionnaire/completed.html:9 +msgid "" +"<p>Thank you very much for filling in our questionnaire; if you\n" +"get some more information about the status of your problem, please come back to the\n" +"site and leave an update.</p>" +msgstr "<p>Hvala Vam mnogo što ste ispunili naš upitnik; ukoliko⏎ dobijete više informacija o stanju Vašeg problema, molimo Vas da ponovno posjetite našu⏎ stranicu i ostavite informaciju.</p>" + +#: templates/web/default/around/_report_banner.html:3 +#: templates/web/default/around/_report_banner.html:5 +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:22 +#: templates/web/zurich/admin/index.html:4 +msgid "<strong>%d</strong> live problems" +msgstr "<strong>%d</strong> postojeći problemi" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:183 +msgid "<strong>No</strong> Let me confirm my report by email" +msgstr "<strong>No</strong> Potvrdi moju prijavu e-mailom" + +#: templates/web/fixmystreet/report/update-form.html:110 +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:51 +msgid "<strong>No</strong> let me sign in by email" +msgstr "<strong>No</strong> prijavi se e-mailom" + +#: templates/web/default/auth/general.html:55 +msgid "<strong>No</strong>, I do not, let me sign in by email:" +msgstr "<strong>No</strong>, Nemam, prijavi me e-mailom:" + +#: templates/web/default/report/new/fill_in_details_form.html:162 +msgid "<strong>No</strong>, let me confirm my report by email:" +msgstr "<strong>No</strong>, potvrdi moju prijavu e-mailom:" + +#: templates/web/default/report/update-form.html:117 +msgid "<strong>No</strong>, let me confirm my update by email:" +msgstr "<strong>No</strong>, potvrdi moje ažuriranje e-mailom:" + +#: templates/web/default/auth/general.html:37 +#: templates/web/default/report/new/fill_in_details_form.html:140 +#: templates/web/default/report/update-form.html:95 +#: templates/web/fixmystreet/auth/general.html:36 +#: templates/web/fixmystreet/auth/general.html:38 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:159 +#: templates/web/fixmystreet/report/update-form.html:87 +msgid "<strong>Yes</strong> I have a password" +msgstr "<strong>Da</strong> Imam password" + +#: templates/web/default/static/about-en-gb.html:1 +#: templates/web/default/static/about-en-gb.html:3 +#: templates/web/emptyhomes/header.html:34 +#: templates/web/emptyhomes/static/about-cy.html:1 +#: templates/web/emptyhomes/static/about-cy.html:3 +#: templates/web/emptyhomes/static/about-en-gb.html:1 +#: templates/web/emptyhomes/static/about-en-gb.html:3 +msgid "About us" +msgstr "O nama" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:81 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:39 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 +msgid "Action Scheduled" +msgstr "" + +#: 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:88 +#: templates/web/zurich/admin/body.html:30 +msgid "Add new category" +msgstr "Dodaj novu kategoriju" + +#: templates/web/default/admin/users.html:45 +msgid "Add user" +msgstr "" + +#: templates/web/default/my/my.html:56 templates/web/fixmystreet/my/my.html:60 +msgid "Added %s" +msgstr "Dodano %s" + +#: templates/web/default/auth/change_password.html:29 +msgid "Again:" +msgstr "Još jednom:" + +#: templates/web/default/admin/timeline.html:35 +msgid "Alert %d created for %s, type %s, parameters %s / %s" +msgstr "Upozorenje %d kreirano za %s, tip %s, parametri%s / %s" + +#: templates/web/default/admin/timeline.html:37 +msgid "Alert %d disabled (created %s)" +msgstr "Upozorenje %d onemogućeno (kreirano%s)" + +#: templates/web/bromley/report/display.html:209 +#: templates/web/default/report/update-form.html:163 +#: templates/web/fixmystreet/report/update-form.html:148 +msgid "Alert me to future updates" +msgstr "Javi mi buduće promjene" + +#: templates/web/default/reports/index.html:3 +#: templates/web/fixmybarangay/reports/index.html:3 +#: templates/web/zurich/admin/stats.html:5 +#: templates/web/zurich/reports/index.html:15 +msgid "All Reports" +msgstr "Sve Prijave" + +#: 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 "Sve prijave" + +#: templates/web/default/admin/stats.html:5 +#: templates/web/zurich/admin/stats.html:8 +msgid "All reports between %s and %s" +msgstr "Sve prijave između %s i %s" + +#: templates/web/default/report/new/councils_text_some.html:2 +msgid "All the information you provide here will be sent to" +msgstr "Sve unešene informacije bit će poslane na" + +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:13 +msgid "All the information you provide here will be sent to <strong>%s</strong> or <strong>Roads Service</strong>." +msgstr "Sve informacije koje nam dostavite biti će proslijeđene <strong>%s</strong> ili <strong>HAKu</strong>." + +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_all.html:6 +msgid "All the information you provide here will be sent to <strong>%s</strong> or a relevant local body such as <strong>TfL</strong>, via the London Report-It system." +msgstr "Sve informacije koje nam dostavite bit će proslijeđene <strong>%s</strong> ili će relevantno lokalno tijelo kao <strong>TfL</strong>, putem London Report-It system." + +#: templates/web/bromley/report/new/fill_in_details_form.html:4 +#: templates/web/bromley/report/new/fill_in_details_form.html:6 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:20 +#: templates/web/default/report/new/fill_in_details_form.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:13 +#: templates/web/emptyhomes/report/new/councils_text_all.html:2 +#: templates/web/emptyhomes/report/new/councils_text_all.html:4 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:13 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:8 +msgid "All the information you provide here will be sent to <strong>%s</strong>." +msgstr "Sve informacije koje nam dostavite bit će proslijeđene <strong>%s</strong>." + +#: templates/web/default/questionnaire/index.html:60 +#: templates/web/fixmystreet/questionnaire/index.html:54 +msgid "An update marked this problem as fixed." +msgstr "Ažuriranjem je ovaj problem evidentiran kao popravljen." + +#: templates/web/default/admin/list_updates.html:32 +#: templates/web/default/admin/problem_row.html:20 +msgid "Anonymous" +msgstr "Anonimno" + +#: templates/web/default/admin/report_edit.html:62 +#: templates/web/default/admin/update_edit.html:23 +msgid "Anonymous:" +msgstr "Anonimno:" + +#: templates/web/default/footer.html:26 +msgid "Are you a <strong>developer</strong>? Would you like to contribute to FixMyStreet?" +msgstr "Jeste li <strong>developer</strong>? Biste li htjeli doprinijeti ideji popravi.to?" + +#: templates/web/fixmystreet/footer.html:16 +#: templates/web/stevenage/footer.html:17 +msgid "Are you a developer?" +msgstr "Jeste li programer?" + +#: templates/web/fixmystreet/footer.html:20 +#: templates/web/stevenage/footer.html:21 +msgid "Are you from a council?" +msgstr "Pripadate li odgovornom tijelu?" + +#: 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:144 +#: templates/web/zurich/admin/stats.html:36 +msgid "Assign to different category:" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:153 +msgid "Assign to external body:" +msgstr "" + +#: 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:141 +#: templates/web/zurich/report/updates.html:11 +msgid "Assigned to %s" +msgstr "" + +#: templates/web/default/open311/index.html:86 +msgid "At most %d requests are returned in each query. The returned requests are ordered by requested_datetime, so to get all requests, do several searches with rolling start_date and end_date." +msgstr "Većinom %d su zahtjevi vraćeni na query. Vraćeni zahtjevi poredani su prema traženom_datumu, pa da biste dobili sve zahtjeve, pretražite nekoliko puta sa pomičnim datumom_početka i završetka_." + +#: templates/web/default/open311/index.html:78 +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:334 +#: templates/web/zurich/report/_item.html:11 +msgid "Awaiting moderation" +msgstr "" + +#: templates/web/default/js/translation_strings.html:32 +#: templates/web/oxfordshire/js/translation_strings.html:26 +msgid "Back" +msgstr "" + +#: templates/web/default/admin/report_blocks.html:11 +msgid "Ban email address" +msgstr "Onemogući e-mail adrese" + +#: templates/web/fixmybarangay/report/new/notes.html:7 +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: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: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:32 +msgid "Body:" +msgstr "" + +#: templates/web/fiksgatami/footer.html:16 +#: templates/web/fiksgatami/nn/footer.html:16 +msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained by <a href=\"http://www.nuug.no/\">NUUG</a>" +msgstr "Izradili <a href=\"http://www.mysociety.org/\">mySociety</a> održava <a href=\"http://www.nuug.no/\">NUUG</a>" + +#: templates/web/default/admin/stats.html:80 +msgid "By Date" +msgstr "Po datumu" + +#: templates/web/fixmystreet/around/_report_banner.html:10 +#: templates/web/fixmystreet/around/_report_banner.html:8 +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: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 "Kategorija" + +#: 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: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 "Kategorija:" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366 +msgid "Category: %s" +msgstr "Kategorija: %s" + +#: templates/web/default/auth/change_password.html:1 +#: templates/web/default/auth/change_password.html:3 +#: templates/web/default/auth/change_password.html:33 +msgid "Change Password" +msgstr "Promijeni lozinku" + +#: 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" + +#: 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 +#: 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 "Zatvoreno" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:744 +msgid "Closed by council" +msgstr "Zatvorilo je odgovorno tijelo" + +#: templates/web/default/my/my.html:32 templates/web/fixmystreet/my/my.html:36 +msgid "Closed reports" +msgstr "Zatvorene prijave" + +#: templates/web/default/admin/problem_row.html:38 +msgid "Closed:" +msgstr "Zatvoreno:" + +#: templates/web/default/around/tabbed_lists.html:10 +#: templates/web/default/around/tabbed_lists.html:12 +msgid "Closest nearby problems <small>(within %skm)</small>" +msgstr "Najbliži problemi <small>(within %skm)</small>" + +#: 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 "Koordinate:" + +#: templates/web/default/admin/list_updates.html:10 +msgid "Cobrand" +msgstr "Cobrand" + +#: templates/web/default/admin/report_edit.html:75 +#: templates/web/default/admin/update_edit.html:50 +msgid "Cobrand data:" +msgstr "Cobrand podaci:" + +#: templates/web/default/admin/report_edit.html:74 +#: templates/web/default/admin/update_edit.html:49 +msgid "Cobrand:" +msgstr "Cobrand:" + +#: 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" + +#: templates/web/default/admin/body_edit.html:47 +msgid "Configure Endpoint" +msgstr "Konfiguriraj Endpoint" + +#: templates/web/default/admin/body.html:62 +msgid "Confirm" +msgstr "Potvrdi" + +#: templates/web/default/auth/token.html:1 +msgid "Confirm account" +msgstr "Potvrdi račun" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:177 +#: templates/web/fixmystreet/report/update-form.html:105 +msgid "Confirm by email below, providing a new password at that point. When you confirm, your password will be updated." +msgstr "Potvrdi pomoću dolje navedene e-mail adrese, a potom upiši novu lozinku. Nakon potvrde tvoja će lozinka biti ažurirana. " + +#: templates/web/default/questionnaire/creator_fixed.html:1 +#: templates/web/default/tokens/confirm_problem.html:1 +#: templates/web/default/tokens/confirm_problem.html:3 +#: templates/web/default/tokens/confirm_update.html:1 +#: templates/web/default/tokens/confirm_update.html:3 +#: templates/web/emptyhomes/tokens/confirm_problem.html:1 +#: templates/web/emptyhomes/tokens/confirm_problem.html:3 +#: templates/web/southampton/tokens/confirm_problem.html:1 +#: templates/web/southampton/tokens/confirm_problem.html:3 +#: templates/web/zurich/tokens/confirm_problem.html:1 +#: templates/web/zurich/tokens/confirm_problem.html:3 +msgid "Confirmation" +msgstr "Potvrda" + +#: 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 "Potvrđeno" + +#: templates/web/default/admin/stats.html:5 +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:" +msgstr "Potvrđeno:" + +#: templates/web/fiksgatami/footer.html:10 +#: templates/web/fiksgatami/nn/footer.html:10 +msgid "Contact" +msgstr "Kontakt" + +#: templates/web/default/footer.html:24 +msgid "Contact FixMyStreet" +msgstr "Kontaktiraj potvrdi.to" + +#: templates/web/bromley/contact/submit.html:1 +#: templates/web/default/contact/index.html:1 +#: templates/web/default/contact/index.html:2 +#: templates/web/default/contact/submit.html:1 +#: templates/web/fixmystreet/contact/index.html:1 +#: templates/web/fixmystreet/contact/index.html:2 +msgid "Contact Us" +msgstr "Kontaktiraj nas" + +#: templates/web/bromley/contact/submit.html:3 +#: templates/web/default/contact/index.html:6 +#: templates/web/default/contact/submit.html:3 +#: templates/web/fixmystreet/contact/index.html:19 +msgid "Contact the team" +msgstr "Kontaktiraj tim" + +#: 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:37 +#: templates/web/oxfordshire/js/translation_strings.html:31 +msgid "Could not look up location" +msgstr "" + +#: templates/web/default/admin/list_updates.html:9 +msgid "Council" +msgstr "Vijeće" + +#: templates/web/default/admin/body.html:1 +#: templates/web/default/admin/body_edit.html:1 +#: templates/web/zurich/admin/body.html:1 +msgid "Council contacts for %s" +msgstr "Kontakti vijeća za %s" + +#: templates/web/default/admin/stats.html:84 +msgid "Council:" +msgstr "Vijeće:" + +#: templates/web/default/admin/stats.html:12 +#: templates/web/default/admin/stats.html:32 +#: templates/web/zurich/admin/stats.html:45 +#: templates/web/zurich/admin/stats.html:50 +msgid "Count" +msgstr "Brojač" + +#: templates/web/default/email_sent.html:1 +msgid "Create a report" +msgstr "Kreiraj izvješće" + +#: templates/web/default/admin/body.html:179 +#: templates/web/zurich/admin/body.html:53 +msgid "Create category" +msgstr "Kreiraj kategoriju" + +#: 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 "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:50 +#: templates/web/zurich/admin/report_edit.html:64 +#: templates/web/zurich/admin/update_edit.html:29 +msgid "Created:" +msgstr "Kreirano:" + +#: templates/web/default/admin/stats.html:31 +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" +msgstr "Nadzorna ploča" + +#: templates/web/zurich/admin/stats.html:35 +msgid "Dealt with by subdivision within 5 working days" +msgstr "" + +#: 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 "Izbrisano" + +#: templates/web/zurich/admin/index-dm.html:22 +#: templates/web/zurich/admin/index-sdm.html:20 +#: templates/web/zurich/admin/reports.html:12 +msgid "Description" +msgstr "" + +#: 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 "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: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:57 +msgid "Devolved" +msgstr "Prenešeno" + +#: templates/web/default/admin/edit-league.html:8 +msgid "Diligency prize league table" +msgstr "" + +#: templates/web/fixmystreet/auth/general.html:30 +msgid "Do you have a FixMyBarangay password?" +msgstr "Imaš li popravi.to lozinku?" + +#: templates/web/default/auth/general.html:32 +#: templates/web/fixmystreet/auth/general.html:32 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:155 +#: templates/web/fixmystreet/report/update-form.html:84 +msgid "Do you have a FixMyStreet password?" +msgstr "Imaš li popravi.to lozinku?" + +#: templates/web/default/questionnaire/index.html:70 +#: templates/web/fixmystreet/questionnaire/index.html:64 +msgid "Don’t know" +msgstr "Ne’znam" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:82 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:47 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 +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:31 +#: templates/web/zurich/admin/problem_row.html:42 +msgid "Edit" +msgstr "Uredi" + +#: templates/web/default/admin/body.html:189 +#: templates/web/zurich/admin/body.html:64 +msgid "Edit body details" +msgstr "" + +#: templates/web/default/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:4 +#: templates/web/zurich/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit.html:5 +msgid "Editing problem %d" +msgstr "Uređivanje problema %d" + +#: templates/web/default/admin/update_edit.html:1 +#: templates/web/zurich/admin/update_edit.html:1 +msgid "Editing update %d" +msgstr "Uređivanje ažuriranja %d" + +#: templates/web/default/admin/user_edit.html:1 +msgid "Editing user %d" +msgstr "Uređivane korisnika %d" + +#: templates/web/default/admin/body_edit.html:86 +msgid "Editor" +msgstr "Urednik" + +#: 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 "E-mail" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1286 +msgid "Email added to abuse list" +msgstr "E-mail dodan na listu zloupotrebe" + +#: 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" + +#: templates/web/default/around/_updates.html:5 +msgid "Email me new local problems" +msgstr "Pošalji nam e-mail o novom lokalnom problemu" + +#: templates/web/default/report/display.html:34 +msgid "Email me updates" +msgstr "Pošalji mi e-mail o ažuriranjima" + +#: 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 "E-mail:" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318 +msgid "Email: %s" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:620 +msgid "Empty flat or maisonette" +msgstr "Prazan stan ili kućica" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:619 +msgid "Empty house or bungalow" +msgstr "Prazna kuća ili bungalov" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:622 +msgid "Empty office or other commercial" +msgstr "Prazan ured ili poslovni prostor" + +#: templates/web/emptyhomes/report/new/form_heading.html:1 +msgid "Empty property details form" +msgstr "Formular o detaljima napuštene nekretnine" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:623 +msgid "Empty pub or bar" +msgstr "Prazan kafić ili bar" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:624 +msgid "Empty public building - school, hospital, etc." +msgstr "Prazne javne zgrade - škola, bolnica, itd." + +#: 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/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:70 +#, fuzzy +msgid "End Date:" +msgstr "Dan završetka:" + +#: templates/web/default/admin/body-form.html:126 +msgid "Endpoint" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/Zurich.pm:71 +msgid "Enter a Zürich street name" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/UK.pm:18 +msgid "Enter a nearby UK postcode, or street name and area" +msgstr "Unesi obližnji poštanski broj ili ime ulice i kvarta" + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:25 +msgid "Enter a nearby postcode, or street name and area" +msgstr "Unesi obližnji poštanski broj ili ime ulice i kvarta" + +#: templates/web/default/around/postcode_form.html:1 +#: templates/web/default/around/postcode_form.html:2 +#: templates/web/fixmystreet/around/postcode_form.html:10 +#: templates/web/fixmystreet/around/postcode_form.html:11 +#: templates/web/seesomething/around/postcode_form.html:3 +#: templates/web/seesomething/around/postcode_form.html:4 +msgid "Enter a nearby street name and area" +msgstr "Unesi ime obližnje ulice i kvarta" + +#: templates/web/default/auth/general.html:64 +#: templates/web/default/report/new/fill_in_details_form.html:169 +#: templates/web/default/report/update-form.html:124 +msgid "Enter a new password:" +msgstr "Unesi novu lozinku:" + +#: 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 "Unesi lozinku" + +#: templates/web/default/index-steps.html:26 +msgid "Enter details of the problem" +msgstr "Unesi detalje o problemu" + +#: templates/web/default/auth/token.html:5 +#: templates/web/default/errors/generic.html:1 +#: templates/web/default/errors/generic.html:3 +#: templates/web/default/tokens/abuse.html:1 +#: templates/web/default/tokens/abuse.html:3 +#: templates/web/default/tokens/error.html:1 +#: templates/web/default/tokens/error.html:3 +msgid "Error" +msgstr "Greška" + +#: templates/web/default/admin/body.html:11 +#: templates/web/default/admin/body_edit.html:18 +msgid "Example postcode %s" +msgstr "Primjer poštanskog broja %s" + +#: templates/web/default/open311/index.html:96 +msgid "Examples:" +msgstr "Primjeri:" + +#: templates/web/default/admin/report_edit.html:76 +msgid "Extra data:" +msgstr "Dodatni podaci:" + +#: templates/web/bromley/contact/submit.html:14 +#: templates/web/default/contact/submit.html:15 +msgid "Failed to send message. Please try again, or <a href=\"mailto:%s\">email us</a>." +msgstr "Neuspješno slanje poruke. Molimo pokušajte opet ili nas <a href=\"mailto:%s\">kontaktirajte</a>." + +#: templates/web/zurich/admin/index-dm.html:33 +#: templates/web/zurich/admin/index-sdm.html:30 +msgid "Filter report list" +msgstr "" + +#: templates/web/emptyhomes/front/stats.html:6 +msgid "Find latest local and national news" +msgstr "" + +#: templates/web/bromley/report/display.html:191 +#: templates/web/bromley/report/new/fill_in_details_form.html:113 +#: templates/web/bromley/report/new/fill_in_details_form.html:160 +msgid "First Name" +msgstr "Ime" + +#: templates/web/default/questionnaire/index.html:79 +#: templates/web/fixmystreet/questionnaire/index.html:73 +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" +msgstr "Popravi<span id=\"my\">My</span>to" + +#: templates/web/default/header.html:24 +msgid "FixMyStreet" +msgstr "Popravi.to" + +#: templates/web/default/admin/header.html:10 +msgid "FixMyStreet admin:" +msgstr "Popravi.to admin:" + +#: templates/web/default/alert/index.html:11 +msgid "" +"FixMyStreet has a variety of RSS feeds and email alerts for local problems, including\n" +"alerts for all problems within a particular ward or council, or all problems\n" +"within a certain distance of a particular location." +msgstr "" +"Popravi.to ima niz RSS i e-mail upozorenja za lokalne probleme, uključujući\n" +"upozorenja za sve probleme u određenom odjelu ili vijeću ili za sve probleme\n" +"na određenoj udaljenosti od pojedine lokaciji." + +#: templates/web/default/alert/_list.html:71 +#: templates/web/fixmystreet/alert/_list.html:73 +msgid "" +"FixMyStreet sends different categories of problem\n" +"to the appropriate council, so problems within the boundary of a particular council\n" +"might not match the problems sent to that council. For example, a graffiti report\n" +"will be sent to the district council, so will appear in both of the district\n" +"council’s alerts, but will only appear in the \"Within the boundary\" alert\n" +"for the county council." +msgstr "" +"Popravi.to šalje različite kategorije problema\n" +"određenom odgovornom tijelu, tako da problemi u granicama određenog odgovornog tijela\n" +"možda ne odgovaraju problemima koji su poslani odgovornog tijelu.Na primjer, prijave grafita\n" +"bit će poslane općinskom vijeću i tako će se pojaviti u upozorenjima za oba vijeća’ ali će se samo pojaviti u upozorenju \"Unutar granica\" \n" +"županijskog vijeća." + +#: 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 "Popravljeno" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:43 +msgid "Fixed - Council" +msgstr "Popravljeno - odgovorno tijelo" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:42 +msgid "Fixed - User" +msgstr "Popravljeno - Korisnik" + +#: templates/web/default/my/my.html:27 templates/web/fixmystreet/my/my.html:31 +msgid "Fixed reports" +msgstr "Popravljene prijave" + +#: templates/web/default/admin/problem_row.html:37 +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: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:51 +msgid "Flagged:" +msgstr "Označen:" + +#: templates/web/default/reports/_ward-list.html:3 +#: templates/web/fixmystreet/reports/_ward-list.html:4 +msgid "Follow a ward link to view only reports within that ward." +msgstr "" + +#: templates/web/default/admin/report_edit.html:30 +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?" +msgstr "Zaboravili ste šifru?" + +#: templates/web/default/faq/faq-en-gb.html:1 +#: templates/web/emptyhomes/faq/faq-cy.html:1 +#: templates/web/emptyhomes/faq/faq-en-gb.html:1 +#: templates/web/fiksgatami/faq/faq-nb.html:1 +#: templates/web/fiksgatami/nn/faq/faq-nn.html:1 +#: templates/web/fixmindelo/faq/faq-pt-cv.html:1 +#: templates/web/fixmybarangay/faq/faq-en-gb.html:1 +#: templates/web/fixmystreet/faq/faq-en-gb.html:1 +#: templates/web/fixmystreet/static/privacy.html:1 +#: templates/web/oxfordshire/faq/faq-en-gb.html:1 +msgid "Frequently Asked Questions" +msgstr "Često postavljana pitanja" + +#: templates/web/default/open311/index.html:138 +msgid "GeoRSS on Google Maps" +msgstr "GeoRSS na Google Mapama" + +#: templates/web/bromley/report/display.html:30 +#: templates/web/fixmystreet/around/_updates.html:3 +#: templates/web/fixmystreet/report/display.html:38 +msgid "Get updates" +msgstr "Primite ažuriranja" + +#: templates/web/fixmystreet/reports/_rss.html:3 +#: templates/web/fixmystreet/reports/_rss.html:9 +msgid "Get updates of %s problems" +msgstr "Primite ažuriranja %s problema" + +#: templates/web/fixmystreet/reports/_rss.html:11 +#: templates/web/fixmystreet/reports/_rss.html:3 +msgid "Get updates of problems in this %s" +msgstr "Primite ažuriranja problema u ovom %s" + +#: templates/web/default/alert/_list.html:83 +#: templates/web/fixmybarangay/alert/_list.html:28 +#: templates/web/fixmystreet/alert/_list.html:82 +msgid "Give me an RSS feed" +msgstr "Prijavi se na RSS izvor" + +#: templates/web/default/alert/index.html:34 +#: templates/web/default/around/postcode_form.html:8 +#: templates/web/fixmystreet/around/postcode_form.html:21 +#: templates/web/seesomething/around/postcode_form.html:10 +#: templates/web/zurich/admin/stats.html:26 +msgid "Go" +msgstr "Idi" + +#: templates/web/default/admin/report_edit.html:77 +msgid "Going to send questionnaire?" +msgstr "Pošalji upitnik?" + +#: 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" + +#: templates/web/default/reports/index.html:8 +msgid "Greyed-out lines are councils that no longer exist." +msgstr "Sivo osjenčani su councils koji više ne postoje" + +#: templates/web/default/questionnaire/index.html:61 +#: templates/web/fixmystreet/questionnaire/index.html:55 +msgid "Has this problem been fixed?" +msgstr "Je li ovaj problem popravljen?" + +#: templates/web/default/questionnaire/index.html:74 +#: templates/web/fixmystreet/questionnaire/index.html:68 +msgid "Have you ever reported a problem to a council before, or is this your first time?" +msgstr "Jeste li prije prijavljivali problem odgovornom tijelu ili je ovo prvi put?" + +#: 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 "Pomoć" + +#: templates/web/default/alert/_list.html:6 +#: templates/web/fixmystreet/alert/_list.html:8 +msgid "Here are the types of local problem alerts for ‘%s’." +msgstr "Vrste upozorenja za lokalne probleme ‘%s’." + +#: templates/web/barnet/header.html:70 templates/web/bromley/header.html:64 +#: templates/web/bromley/header.html:99 +#: templates/web/fixmybarangay/header.html:66 +#: templates/web/fixmystreet/header.html:50 +#: templates/web/oxfordshire/header.html:111 +#: templates/web/oxfordshire/header.html:47 +#: templates/web/stevenage/header.html:97 templates/web/zurich/footer.html:11 +msgid "Hi %s" +msgstr "Zdravo %s" + +#: 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 "Skriveno" + +#: templates/web/default/around/display_location.html:67 +msgid "Hide old" +msgstr "Sakrij staro" + +#: templates/web/default/around/display_location.html:62 +msgid "Hide pins" +msgstr "Sakrij pinove" + +#: templates/web/default/admin/body_edit.html:79 +msgid "History" +msgstr "Povijest" + +#: templates/web/default/js/translation_strings.html:31 +#: templates/web/oxfordshire/js/translation_strings.html:25 +msgid "Home" +msgstr "" + +#: templates/web/default/index-steps.html:1 +msgid "How to report a problem" +msgstr "Kako prijaviti problem" + +#: 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:733 +msgid "I am afraid you cannot confirm unconfirmed reports." +msgstr "Nažalost, ne možeš potvrditi nepotvrđena izvješća" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:89 +msgid "I'm afraid we couldn't locate your problem in the database.\n" +msgstr "Nažalost, ne možemo locirati tvoj problem u bazi podataka.⏎\n" + +#: perllib/FixMyStreet/App/Controller/Tokens.pm:44 +msgid "I'm afraid we couldn't validate that token, as the report was made too long ago." +msgstr "Nažalost, ne možemo provjeriti token jer je prijava davno izvršena." + +#: perllib/FixMyStreet/App/Controller/Tokens.pm:259 +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: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 "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 "" + +#: templates/web/default/email_sent.html:15 +msgid "If you do not, your problem will not be posted." +msgstr "" + +#: templates/web/default/email_sent.html:17 +msgid "If you do not, your update will not be posted." +msgstr "" + +#: templates/web/default/report/new/councils_text_none.html:8 +#: templates/web/default/report/new/councils_text_none.html:9 +msgid "If you submit a problem here the subject and details of the problem will be public, but the problem will <strong>not</strong> be reported to the council." +msgstr "Ako iznesete problem ovdje sadržaj i detalji problema bit će javni, ali će problem <strong>not</strong> biti prijavljen vijeću." + +#: templates/web/emptyhomes/report/new/councils_text_none.html:9 +msgid "If you submit a report here it will be left on the site, but not reported to the council – please still leave your report, so that we can show to the council the activity in their area." +msgstr "Ako iznesete problem ovdje on će biti prikazan na stranici, ali ne i prijavljen vijeću – Molimo da problem ipak iznesete kako bi pokazali vijeću aktivnost na ovome području. " + +#: templates/web/default/auth/token.html:22 +#: templates/web/default/email_sent.html:9 +msgid "If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way." +msgstr "Ako koristite e-mail na Webu ili 'junk mail' filtere, provjerite svoje bulk / spam mail mape: ponekad su naše poruke označene na taj način." + +#: templates/web/default/questionnaire/index.html:86 +#: templates/web/fixmystreet/questionnaire/index.html:77 +msgid "" +"If you wish to leave a public update on the problem, please enter it here\n" +"(please note it will not be sent to the council). For example, what was\n" +"your experience of getting the problem fixed?" +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" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:100 +msgid "Illegal feed selection" +msgstr "Ilegalan odabir izvora" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:82 +#: 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:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 +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: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 "U tijeku" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:38 +msgid "Incident Category" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:163 +msgid "Include reporter personal details" +msgstr "" + +#: templates/web/default/admin/stats.html:76 +msgid "Include unconfirmed reports" +msgstr "Uključi nepotvrđene prijave" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:354 +msgid "Incorrect has_photo value \"%s\"" +msgstr "Pogrešno ima_foto vrijednost\"%s\"" + +#: 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 +msgid "Internal referral" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:339 +msgid "Invalid agency_responsible value %s" +msgstr "Nevažeća odgovorna_vrijednost agencije %s" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1096 +msgid "Invalid end date" +msgstr "Nevažeći datum završetka" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:432 +msgid "Invalid format %s specified." +msgstr "Naveden nevažeći %s format." + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1092 +msgid "Invalid start date" +msgstr "Nevažeći datum početka" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:81 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:37 +#: templates/web/default/dashboard/index.html:142 +#: templates/web/default/dashboard/index.html:143 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 +msgid "Investigating" +msgstr "Istražujem" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:12 +#: templates/web/emptyhomes/tokens/confirm_problem.html:14 +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’t mean the council isn’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 "Međutim, važno je napomenuti da proces ponekad može biti spor, osobito ako je imovina u vrlo lošem stanju ili ako vlasnik ne želi sudjelovati. U većini slučajeva, može proći šest mjeseci ili više prije nego što se primjete neke promjene, a ponekad mogu postojati bitne prepreke u pokušaju osposobljavanja imovine za uporabu. To ne znači’ da odgovorno tijelo ’ništa ne radi. Potičemo odgovorna tijela na redovito ažuriranje web stranice kako biste mogli vidjeti što se događa. .To može biti dug proces, ali prijavljivanje vaših nedoumica odgovornom tijelu je važan prvi korak." + +#: 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 "Ostani prijavljen na ovom računalu" + +#: templates/web/bromley/report/display.html:197 +#: templates/web/bromley/report/new/fill_in_details_form.html:119 +#: templates/web/bromley/report/new/fill_in_details_form.html:166 +msgid "Last Name" +msgstr "Prezime" + +#: templates/web/default/admin/body.html:58 +#: templates/web/zurich/admin/body.html:15 +msgid "Last editor" +msgstr "Posljednji " + +#: templates/web/default/admin/report_edit.html:72 +msgid "Last update:" +msgstr "Posljednje ažuriranje" + +#: templates/web/default/admin/problem_row.html:39 +msgid "Last update:" +msgstr "Posljednje 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" +msgstr "Izlistaj sve prijavljenje probleme" + +#: templates/web/bromley/report/new/fill_in_details_form.html:69 +#: templates/web/default/report/new/fill_in_details_form.html:68 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:51 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:75 +#: templates/web/seesomething/report/new/fill_in_details_form.html:25 +#: templates/web/zurich/report/new/fill_in_details_form.html:51 +msgid "Loading..." +msgstr "Učitavanje" + +#: templates/web/default/alert/choose.html:1 +#: templates/web/default/alert/choose.html:3 +#: templates/web/default/alert/index.html:1 +#: templates/web/default/alert/index.html:3 +#: templates/web/default/alert/list.html:1 +#: templates/web/default/alert/list.html:5 +#: templates/web/default/alert/updates.html:1 +#: templates/web/default/tokens/confirm_alert.html:1 +#: templates/web/default/tokens/confirm_alert.html:3 +#: templates/web/emptyhomes/alert/index.html:1 +#: templates/web/emptyhomes/alert/index.html:3 +#: templates/web/fixmybarangay/alert/index.html:1 +#: templates/web/fixmybarangay/alert/index.html:3 +#: templates/web/fixmystreet/alert/updates.html:1 +msgid "Local RSS feeds and email alerts" +msgstr "Lokalni RSS izvori i e-mail upozorenja" + +#: templates/web/default/alert/list.html:1 +#: templates/web/default/alert/list.html:12 +#: templates/web/default/alert/list.html:14 +#: templates/web/default/alert/list.html:3 +msgid "Local RSS feeds and email alerts for ‘%s’" +msgstr "Lokalni RSS izvori i e-mail upozorenja za‘%s’" + +#: 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 "Lokalna upozorenja" + +#: templates/web/default/index-steps.html:25 +msgid "Locate the problem on a map of the area" +msgstr "Lociraj problem na mapi područja" + +#: templates/web/default/js/translation_strings.html:43 +#: templates/web/oxfordshire/js/translation_strings.html:37 +msgid "MAP" +msgstr "" + +#: perllib/FixMyStreet/Map/OSM.pm:44 +msgid "Map © <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" + +#: templates/web/default/contact/index.html:90 +msgid "Message:" +msgstr "Poruka:" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:440 +msgid "Missing jurisdiction_id" +msgstr "Nedostaje nadležni_ID" + +#: templates/web/zurich/admin/stats.html:34 +msgid "Moderated by division within one working day" +msgstr "" + +#: templates/web/default/admin/stats.html:11 +msgid "Month" +msgstr "Mjesec" + +#: templates/web/default/report/display.html:30 +msgid "More problems nearby" +msgstr "Više problema u blizini" + +#: 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 "Ime" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:74 +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: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:317 +msgid "Name: %s" +msgstr "" + +#: templates/web/fiksgatami/footer.html:3 +#: templates/web/fiksgatami/nn/footer.html:3 +#: templates/web/reading/footer.html:4 +msgid "Navigation" +msgstr "Navigacija" + +#: perllib/FixMyStreet/Geocode/OSM.pm:166 +msgid "Nearest named road to the pin placed on the map (automatically generated using OpenStreetMap): %s%s" +msgstr "Najbliža imenovana cesta smještena pokraj oznake na mapi (automatski generirano pomoću OpenStreetMap): %s%s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:148 +msgid "Nearest postcode to the pin placed on the map (automatically generated): %s (%sm away)" +msgstr "Najbliži poštanski broj pokraj oznake na mapi (automatski generiran): %s (%sm away)" + +#: perllib/FixMyStreet/Cobrand/Default.pm:418 +#: perllib/FixMyStreet/Cobrand/Default.pm:458 +msgid "Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s" +msgstr "Najbliža cesta smještena pokraj oznake na mapi (automatski generirano pomoću Bing Maps): %s" + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:273 +msgid "" +"Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s\n" +"\n" +msgstr "" +"Najbliža cesta smještena pokraj oznake na mapi (automatically generated by Bing Maps): %s\n" +"\n" + +#: templates/web/default/email_sent.html:3 +msgid "Nearly Done! Now check your email..." +msgstr "Skoro učinjeno! Sada provjeri svoj e-mail..." + +#: templates/web/default/reports/index.html:16 +#: templates/web/fixmybarangay/reports/index.html:16 +msgid "New <br>problems" +msgstr "Novi <br>problemi" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:264 +msgid "New body added" +msgstr "" + +#: 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" + +#: db/alert_types_eha.pl:12 +msgid "New local reports on reportemptyhomes.com" +msgstr "Nove lokalne prijave na kućoprazna.joj" + +#: templates/web/emptyhomes/reports/index.html:10 +#: templates/web/fiksgatami/nn/reports/index.html:10 +#: templates/web/fiksgatami/reports/index.html:10 +msgid "New problems" +msgstr "Novi problemi" + +#: db/alert_types.pl:38 +msgid "New problems for {{COUNCIL}} within {{WARD}} ward on FixMyStreet" +msgstr "Novi problemi za {{COUNCIL}} unutar{{WARD}} na Popravi.to" + +#: db/alert_types.pl:26 db/alert_types.pl:30 +msgid "New problems near {{POSTCODE}} on FixMyStreet" +msgstr "Novi problemi blizu {{POSTCODE}} na Popravi.to" + +#: db/alert_types.pl:10 +msgid "New problems on FixMyStreet" +msgstr "Novi problemi na Popravi.to" + +#: db/alert_types.pl:34 +msgid "New problems to {{COUNCIL}} on FixMyStreet" +msgstr "Novi problemi za {{COUNCIL}} na Popravi.to" + +#: db/alert_types.pl:42 +msgid "New problems within {{NAME}}'s boundary on FixMyStreet" +msgstr "Novi problemi unutar {{NAME}} granice na Popravi.to" + +#: templates/web/zurich/admin/index-sdm.html:4 +msgid "New reports" +msgstr "" + +#: db/alert_types_eha.pl:23 +msgid "New reports for {{COUNCIL}} within {{WARD}} ward on reportemptyhomes.com" +msgstr "Nove prijave za {{COUNCIL}} unutar{{WARD}} na kucoprazna.joj" + +#: db/alert_types_eha.pl:5 +msgid "New reports on reportemptyhomes.com" +msgstr "Nove prijave na praznakuco.joj" + +#: db/alert_types_eha.pl:16 +msgid "New reports on reportemptyhomes.com near {{POSTCODE}}" +msgstr "Nove prijave na praznakuco.joj blizu{{POŠTANSKI BROJ}}" + +#: db/alert_types_eha.pl:19 +msgid "New reports to {{COUNCIL}} on reportemptyhomes.com" +msgstr "Nove prijave {{ODGOVORNOM TIJELU}} na praznakuco.joj" + +#: db/alert_types_eha.pl:27 +msgid "New reports within {{NAME}}'s boundary on reportemptyhomes.com" +msgstr "Nove prijave u djelokrugu {{IME}} na praznakuco.joj" + +#: templates/web/default/admin/questionnaire.html:24 +msgid "New state" +msgstr "Novo stanje" + +#: templates/web/zurich/admin/report_edit-sdm.html:61 +msgid "New update:" +msgstr "" + +#: templates/web/fiksgatami/front/news.html:9 +#: templates/web/fiksgatami/nn/front/news.html:9 +#: templates/web/fixmystreet/front/news.html:8 +msgid "New!" +msgstr "Novo" + +#: templates/web/default/pagination.html:13 +msgid "Next" +msgstr "" + +#: 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 "Ne" + +#: templates/web/default/admin/user-form.html:33 +msgid "No body" +msgstr "" + +#: templates/web/default/admin/stats.html:85 +msgid "No council" +msgstr "Nema odgovornog tijela" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:362 +msgid "No council selected" +msgstr "Nije odabrano odgovorno tijelo" + +#: 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:25 +#, fuzzy +msgid "No flagged problems found." +msgstr "Nisu pronađeni označeni problemi" + +#: 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:68 +msgid "No further updates" +msgstr "" + +#: templates/web/default/around/around_map_list_items.html:17 +#: templates/web/fixmystreet/around/around_map_list_items.html:8 +msgid "No problems found." +msgstr "Nisu pronađeni problemi." + +#: templates/web/default/around/on_map_list_items.html:14 +#: templates/web/fixmystreet/around/on_map_list_items.html:6 +msgid "No problems have been reported yet." +msgstr "Još uvijek nisu prijavljeni nikakvi problemi." + +#: 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:73 +msgid "Non Public" +msgstr "Bez javnosti" + +#: 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 "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 +#: 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 "" + +#: templates/web/zurich/admin/report_edit-sdm.html:21 +msgid "Not for my subdivision" +msgstr "" + +#: templates/web/default/admin/questionnaire.html:6 +msgid "Not reported before" +msgstr "Nije prethodno prijavljeno" + +#: templates/web/default/report/_main.html:10 +msgid "Not reported to council" +msgstr "Nije prijavljeno odgovornom tijelu" + +#: 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 "Napomena" + +#: templates/web/default/admin/stats.html:51 +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:157 +#: templates/web/default/admin/body_edit.html:44 +#: templates/web/zurich/admin/body.html:47 +msgid "Note:" +msgstr "Napomena:" + +#: templates/web/default/open311/index.html:75 +msgid "Note: <strong>%s</strong>" +msgstr "Napomena: <strong>%s</strong>" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:154 +msgid "Now to submit your report…" +msgstr "Podnesite svoju prijavu…" + +#: templates/web/default/report/new/fill_in_details_form.html:131 +msgid "Now to submit your report… do you have a FixMyStreet password?" +msgstr "Podnesite svoju prijavu… imate li Popravi.to lozinku?" + +#: templates/web/fixmystreet/report/update-form.html:83 +msgid "Now to submit your update…" +msgstr "Pošaljite svoje ažuriranje…" + +#: templates/web/default/report/update-form.html:86 +msgid "Now to submit your update… do you have a FixMyStreet password?" +msgstr "Pošaljite svoje ažuriranje… imate li Popravi.to lozinku?" + +#: templates/web/default/js/translation_strings.html:42 +#: templates/web/oxfordshire/js/translation_strings.html:36 +msgid "OK" +msgstr "" + +#: templates/web/default/report/display.html:24 +#: templates/web/default/report/update.html:16 +msgid "Offensive? Unsuitable? Tell us" +msgstr "Uvredljivo? Neprikladno? Recite nam" + +#: templates/web/default/reports/index.html:18 +#: templates/web/fixmybarangay/reports/index.html:18 +msgid "Old / unknown <br>problems" +msgstr "Stari / nepoznati <br>problemi" + +#: templates/web/fiksgatami/nn/reports/index.html:12 +#: templates/web/fiksgatami/reports/index.html:12 +msgid "Old problems,<br>state unknown" +msgstr "Stari problemi,<br>nepoznato stanje" + +#: templates/web/default/admin/questionnaire.html:24 +msgid "Old state" +msgstr "Staro stanje" + +#: templates/web/default/reports/index.html:20 +#: templates/web/fixmybarangay/reports/index.html:20 +msgid "Older <br>fixed" +msgstr "Starije <br>popravljeno" + +#: templates/web/default/reports/index.html:17 +#: templates/web/fixmybarangay/reports/index.html:17 +msgid "Older <br>problems" +msgstr "Stariji <br>problemi" + +#: templates/web/fiksgatami/nn/reports/index.html:14 +#: templates/web/fiksgatami/reports/index.html:14 +msgid "Older fixed" +msgstr "Starije popravljeno" + +#: templates/web/emptyhomes/reports/index.html:11 +#: templates/web/fiksgatami/nn/reports/index.html:11 +#: templates/web/fiksgatami/reports/index.html:11 +msgid "Older problems" +msgstr "Stariji problemi" + +#: 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 "Otvori" + +#: templates/web/default/my/my.html:22 templates/web/fixmystreet/my/my.html:26 +msgid "Open reports" +msgstr "Otvori izvješća" + +#: templates/web/default/open311/index.html:72 +msgid "Open311 API for the mySociety FixMyStreet server" +msgstr "Open311 API za Popravi.to server" + +#: templates/web/default/open311/index.html:82 +msgid "Open311 initiative web page" +msgstr "Open311 prvotna web stranica" + +#: templates/web/default/open311/index.html:83 +msgid "Open311 specification" +msgstr "Open311 specifikacija" + +#: templates/web/default/alert/_list.html:58 +#: templates/web/fixmystreet/alert/_list.html:60 +msgid "Or problems reported to:" +msgstr "Ili problemi prijavljeni:" + +#: templates/web/default/alert/_list.html:33 +#: templates/web/fixmystreet/alert/_list.html:36 +msgid "Or you can subscribe to an alert based upon what ward or council you’re in:" +msgstr "Ili se možete pretplatiti na upozorenja unutar vašeg vijeća ’:" + +#: 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 "Drugo" + +#: templates/web/default/footer.html:27 +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:8 +msgid "Owner" +msgstr "Vlasnik" + +#: templates/web/default/errors/page_error_404_not_found.html:1 +#: templates/web/default/errors/page_error_404_not_found.html:3 +msgid "Page Not Found" +msgstr "Stranica nije pronađena" + +#: templates/web/default/admin/body-form.html:31 +#: templates/web/zurich/admin/body-form.html:14 +msgid "Parent" +msgstr "" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:51 +msgid "Partial" +msgstr "Djelomično" + +#: 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 "Lozinka (neobvezno)" + +#: templates/web/default/auth/change_password.html:25 +msgid "Password:" +msgstr "Lozinka:" + +#: 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 +msgid "Phone number (optional)" +msgstr "Telefonski broj (neobavezan)" + +#: 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 "Telefon:" + +#: 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 "Slika" + +#: templates/web/default/questionnaire/index.html:99 +#: templates/web/default/report/new/fill_in_details_form.html:102 +#: templates/web/default/report/update-form.html:62 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:99 +#: templates/web/fixmystreet/questionnaire/index.html:90 +msgid "Photo:" +msgstr "Slika:" + +#: templates/web/default/alert/list.html:26 +msgid "Photos of recent nearby reports" +msgstr "Fotografije posljednjih obližnjih prijava" + +#: 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:89 +#: templates/web/zurich/admin/report_edit.html:92 +msgid "Planned" +msgstr "Planirano" + +#: templates/web/fixmystreet/questionnaire/index.html:44 +msgid "Please <a class=\"tab_link\" href=\"#report\">take a look</a> at the updates that have been left." +msgstr "Molimo<a class=\"tab_link\" href=\"#report\">pregledajte</a> poslana ažuriranja." + +#: templates/web/default/report/new/notes.html:6 +#: templates/web/fixmystreet/report/new/notes.html:6 +#: templates/web/oxfordshire/report/new/notes.html:5 +msgid "Please be polite, concise and to the point." +msgstr "Molimo da budete pristojni, jezgroviti i jasni." + +#: templates/web/default/auth/change_password.html:12 +#: templates/web/default/auth/change_password.html:17 +msgid "Please check the passwords and try again" +msgstr "Provjeri lozinku i pokušaj ponovno" + +#: templates/web/default/auth/token.html:14 +msgid "Please check your email" +msgstr "Provjeri svoj e-mail" + +#: templates/web/default/auth/general.html:14 +#: templates/web/default/auth/general.html:8 +#: templates/web/fixmystreet/auth/general.html:15 +#: templates/web/fixmystreet/auth/general.html:9 +#: templates/web/seesomething/auth/general.html:15 +#: templates/web/seesomething/auth/general.html:9 +#: templates/web/zurich/auth/general.html:3 +#: templates/web/zurich/auth/general.html:9 +msgid "Please check your email address is correct" +msgstr "Provjerite je li vaša e-mail adresa točna" + +#: 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 "Izaberi kategoriju" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:387 +msgid "Please choose a property type" +msgstr "Izaberi tip imovine" + +#: templates/web/seesomething/js/translation_strings.html:6 +msgid "Please choose a transport category" +msgstr "" + +#: templates/web/seesomething/js/translation_strings.html:7 +msgid "Please choose an incident category" +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”" +msgstr "Molimo opišite točnu lokaciju prijave. Primjer: “2 bačena madraca na broju 19 Stockwell Close”" + +#: templates/web/default/contact/blurb.html:2 +msgid "" +"Please do <strong>not</strong> report problems through this form; messages go to\n" +"the team behind FixMyStreet, not a council. To report a problem,\n" +"please <a href=\"/\">go to the front page</a> and follow the instructions." +msgstr "" +"Molimo<strong>not</strong> prijavite probleme pomoću sljedećeg obrasca; poruke idu\n" +"timu Popravi.to, ne odgovornom tijelu. Kako biste prijavili problem,\n" +"molimo<a href=\"/\">idite na početnu stranicu</a> i slijedite upute." + +#: templates/web/default/report/new/notes.html:7 +#: templates/web/fixmystreet/report/new/notes.html:7 +#: templates/web/oxfordshire/report/new/notes.html:6 +msgid "Please do not be abusive — abusing your council devalues the service for all users." +msgstr "" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:46 +msgid "Please do not give address or personal information in this section." +msgstr "" + +#: 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: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" +msgstr "Unesi valjani e-mail" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:346 +#: perllib/FixMyStreet/App/Controller/Contact.pm:107 +msgid "Please enter a valid email address" +msgstr "Unesi valjanu e-mail adresu" + +#: 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" + +#: 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 "Unesi svoj e-mail" + +#: templates/web/bromley/report/new/fill_in_details_form.html:149 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:151 +#: templates/web/seesomething/report/new/fill_in_details_form.html:85 +#: templates/web/zurich/report/new/fill_in_details_form.html:92 +msgid "Please enter your email address" +msgstr "Unesi svoju e-mail adresu" + +#: 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: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: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: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:24 +#: templates/web/oxfordshire/js/translation_strings.html:18 +msgid "Please enter your title" +msgstr "Unesite svoju titulu" + +#: 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 "" + +#: templates/web/emptyhomes/report/new/fill_in_details_text.html:1 +msgid "" +"Please fill in details of the empty property below, saying what type of\n" +"property it is e.g. an empty home, block of flats, office etc. Tell us\n" +"something about its condition and any other information you feel is relevant.\n" +"There is no need for you to give the exact address. Please be polite, concise\n" +"and to the point; writing your message entirely in block capitals makes it hard\n" +"to read, as does a lack of punctuation." +msgstr "" +"U nastavku popunite detalje o praznoj imovini navodeći o kakvom je tipu imovine riječ, npr. prazna kuća, stanovi, ured itd. Recite nam \n" +"nešto o trenutnom stanju i navedite bilo koju drugu informaciju koju smatrate korisnom.\n" +"Ne trebate navoditi točnu adresu. Molimo budite pristojni, jezgroviti\n" +"i precizni; pisanje poruke tiskanim slovima i nedostatak interpunkcije otežava čitanje." + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/default/report/new/fill_in_details_text.html:11 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:10 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:8 +msgid "Please fill in details of the problem below." +msgstr "Popunite detalje o problemu u nastavku." + +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:3 +msgid "" +"Please fill in details of the problem below. Leave as much detail as you can, \n" +"and if possible describe the exact location of\n" +"the problem (e.g. if there is a streetlight number or road name)." +msgstr "" +"Popunite detalje o problemu u nastavku. Iznesite što više detalja\n" +"i ako je moguće navedite točnu lokaciju\n" +"problema (npr. ako postoji broj javne rasvjete ili ime ceste)." + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/default/report/new/fill_in_details_text.html:3 +msgid "" +"Please fill in details of the problem below. The council won't be able\n" +"to help unless you leave as much detail as you can, so please describe the exact location of\n" +"the problem (e.g. on a wall), what it is, how long it has been there, a description (and a\n" +"photo of the problem if you have one), etc." +msgstr "" +"Popunite detalje o problemu u nastavku. Odgovorno tijelo neće moći pomoći ukoliko ne iznesete što više detalja pa molimo opišite točnu lokaciju \n" +"problema (npr. na zidu), o čemu se radi, koliko je dugo na tom mjestu, opis (i ako imate \n" +"fotografiju problema), itd." + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:70 +#: templates/web/seesomething/report/new/fill_in_details_form.html:20 +#: templates/web/zurich/report/new/fill_in_details_form.html:46 +msgid "Please fill in details of the problem." +msgstr "Popunite detalje o problemu u nastavku." + +#: templates/web/bromley/report/new/fill_in_details_form.html:28 +#: templates/web/default/report/new/fill_in_details_form.html:27 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:26 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:35 +#: templates/web/zurich/report/new/fill_in_details_form.html:20 +msgid "Please fill in the form below with details of the problem, and describe the location as precisely as possible in the details box." +msgstr "Popunite detalje o problemu u nastavku i opišite lokaciju što preciznije." + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:243 +msgid "Please indicate whether you'd like to receive another questionnaire" +msgstr "Molimo navedite želite li primiti novi upitnik" + +#: templates/web/fixmystreet/report/updates-sidebar-notes.html:3 +msgid "Please note that updates are not sent to the council." +msgstr "Napominjemo da se ažuriranja ne šalju odgovornom tijelu." + +#: templates/web/default/report/update-form.html:7 +msgid "Please note that updates are not sent to the council. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgstr "Napominjemo da se ažuriranja ne šalju odgovornom tijelu. Ako navedete svoje ime, bit će vidljivo. Vaše informacije će biti korištene u skladu s našim <a href=\"/faq#privacy\">pravilima o privatnosti</a>" + +#: templates/web/barnet/report/updates-sidebar-notes.html:1 +msgid "Please note that updates are not sent to the relevant department. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgstr "Napominjemo da se ažuriranja ne šalju nadležnom odjelu. Ako navedete svoje ime, bit će vidljivo. Vaše informacije će biti korištene u skaldu s našim <a href=\"/faq#privacy\">pravilima o privatnosti</a>" + +#: templates/web/bromley/report/new/fill_in_details_form.html:23 +#: templates/web/default/report/new/fill_in_details_form.html:5 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:5 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:26 +#: templates/web/zurich/report/new/fill_in_details_form.html:11 +msgid "Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit." +msgstr "Napominjemo da vaša prijava <strong>još nije poslana</strong>. Izaberite kategoriju i navedite dodatne informacije u nastavku te zatim potvrdite." + +#: templates/web/default/report/new/notes.html:1 +#: templates/web/fixmybarangay/report/new/notes.html:1 +#: templates/web/fixmystreet/report/new/notes.html:1 +#: templates/web/oxfordshire/report/new/notes.html:1 +msgid "Please note:" +msgstr "Napominjemo:" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:246 +msgid "Please provide some explanation as to why you're reopening this report" +msgstr "Molimo navedite obrazloženje ponovnog otvaranja ove prijave" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:253 +msgid "Please provide some text as well as a photo" +msgstr "Molimo unesite tekst i fotografiju " + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:116 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:239 +msgid "Please say whether you've ever reported a problem to your council before" +msgstr "Jeste li do sada ikada prijavljivali problem odgovoronom tijelu" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:80 +msgid "Please select the feed you want" +msgstr "Izaberite izvor koji želite" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:118 +msgid "Please select the type of alert you want" +msgstr "Izaberite tip upozorenja koji želite" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:235 +msgid "Please state whether or not the problem has been fixed" +msgstr "Navedite je li problem rješen " + +#: templates/web/default/questionnaire/index.html:50 +msgid "Please take a look at the updates that have been left." +msgstr "Pregledajte ažuriranja" + +#: 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:183 +msgid "Please upload a JPEG image only\n" +msgstr "Molimo učitajte samo JPEG slike\n" + +#: perllib/FixMyStreet/App/Controller/Contact.pm:98 +msgid "Please write a message" +msgstr "Napiši poruku" + +#: templates/web/bromley/report/display.html:70 +#: templates/web/fixmystreet/report/update-form.html:23 +msgid "Please write your update here" +msgstr "Ovdje ažurirajte" + +#: templates/web/bromley/report/display.html:123 +#: templates/web/bromley/report/display.html:151 +#: templates/web/bromley/report/display.html:163 +#: templates/web/default/contact/index.html:93 +#: templates/web/default/report/update-form.html:109 +#: templates/web/default/report/update-form.html:131 +#: templates/web/default/report/update-form.html:72 +#: templates/web/fixmystreet/contact/index.html:105 +#: templates/web/fixmystreet/report/update-form.html:123 +#: templates/web/fixmystreet/report/update-form.html:71 +#: templates/web/fixmystreet/report/update-form.html:95 +msgid "Post" +msgstr "Objavi" + +#: templates/web/default/report/updates.html:15 +msgid "Posted anonymously at %s" +msgstr "Objavljeno anonimno na %s" + +#: templates/web/default/report/updates.html:22 +msgid "Posted by %s (<strong>%s</strong>) at %s" +msgstr "Objavio %s (<strong>%s</strong>) na %s" + +#: templates/web/default/report/updates.html:24 +msgid "Posted by %s at %s" +msgstr "Objavio %s na %s" + +#: templates/web/default/pagination.html:7 +msgid "Previous" +msgstr "" + +#: 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 "Privatno" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:108 +msgid "Private information (not shown on site)" +msgstr "" + +#: templates/web/default/maps/openlayers.html:85 +msgid "Problem" +msgstr "Problem" + +#: templates/web/default/admin/timeline.html:22 +msgid "Problem %d created" +msgstr "Problem %d oblikovan" + +#: templates/web/default/admin/timeline.html:24 +msgid "Problem %s confirmed" +msgstr "Problem %s potvrđen" + +#: templates/web/default/admin/timeline.html:26 +msgid "Problem %s sent to council %s" +msgstr "Problem %s poslan odgovornom tijelu %s" + +#: 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:950 +msgid "Problem marked as open." +msgstr "Problem označen kao otvoren." + +#: templates/web/default/admin/questionnaire.html:21 +msgid "Problem state change based on survey results" +msgstr "Stanje problema izmijenjeno na temelju rezultata ankete" + +#: templates/web/default/admin/flagged.html:10 +msgid "Problems" +msgstr "Problemi" + +#: templates/web/default/around/_updates.html:1 +msgid "Problems in this area" +msgstr "Problemi u ovom području" + +#: templates/web/bromley/report/display.html:31 +#: templates/web/fixmystreet/around/tabbed_lists.html:4 +#: templates/web/fixmystreet/report/display.html:46 +msgid "Problems nearby" +msgstr "Okolni problemi" + +#: templates/web/fixmystreet/around/tabbed_lists.html:3 +#: templates/web/fixmystreet/report/display.html:44 +msgid "Problems on the map" +msgstr "Problemi na mapi" + +#: db/alert_types.pl:14 +msgid "Problems recently reported fixed on FixMyStreet" +msgstr "Problems nedavno prijavljeni kao popravljeni na Popravi.to" + +#: templates/web/default/alert/_list.html:19 +#: templates/web/fixmystreet/alert/_list.html:21 +msgid "Problems within %.1fkm of this location" +msgstr "Problemi unutar%.1fkm od ove lokacije" + +#: perllib/FixMyStreet/Cobrand/Default.pm:626 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:109 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:155 +#: perllib/FixMyStreet/Cobrand/UK.pm:228 +msgid "Problems within %s" +msgstr "Problemi unutar %s" + +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:117 +#: perllib/FixMyStreet/Cobrand/UK.pm:242 +msgid "Problems within %s ward" +msgstr "Problemi unutar %s ward" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:24 +msgid "Problems within %s, FixMyStreet" +msgstr "Problemi unutar%s, Popravi.to" + +#: templates/web/default/alert/_list.html:40 +#: templates/web/fixmybarangay/alert/_list.html:13 +#: templates/web/fixmystreet/alert/_list.html:42 +msgid "Problems within the boundary of:" +msgstr "Problemi unutar granice:" + +#: db/alert_types_eha.pl:8 +msgid "Properties recently reported as put back to use on reportemptyhomes.com" +msgstr "Objekti nedavno prijavljeni za ponovno korištenje na praznakuco.joj" + +#: templates/web/default/admin/report_edit.html:32 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:115 +msgid "Property address:" +msgstr "" + +#: templates/web/default/report/new/category.html:8 +msgid "Property type:" +msgstr "Tip objekta:" + +#: templates/web/bromley/report/new/fill_in_details_form.html:52 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:64 +msgid "Provide a title" +msgstr "Navedite naslov" + +#: templates/web/bromley/report/display.html:57 +#: templates/web/default/report/update-form.html:3 +#: templates/web/fixmystreet/report/update-form.html:4 +msgid "Provide an update" +msgstr "Ažuriranje" + +#: templates/web/fixmystreet/auth/general.html:53 +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 "" + +#: 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." +msgstr "Lozinka nije obvezna, ali će vam omogućiti lakše prijavljivanje budućih problema, ažuriranja i upravljanje vašim izvješćima." + +#: templates/web/bromley/report/display.html:144 +#: templates/web/default/report/new/fill_in_details_form.html:173 +#: templates/web/default/report/update-form.html:128 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:202 +#: templates/web/fixmystreet/report/update-form.html:116 +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:60 +#: templates/web/default/admin/body.html:73 +msgid "Public" +msgstr "Javno" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:44 +msgid "Public information (shown on site)" +msgstr "" + +#: 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:80 +#: templates/web/zurich/admin/stats.html:38 +msgid "Publish photo" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:222 +msgid "Publish the response" +msgstr "" + +#: templates/web/default/questionnaire/completed.html:1 +#: templates/web/default/questionnaire/completed.html:2 +#: templates/web/default/questionnaire/index.html:0 +#: templates/web/default/questionnaire/index.html:14 +#: templates/web/default/questionnaire/index.html:4 +#: templates/web/fixmystreet/questionnaire/index.html:0 +#: templates/web/fixmystreet/questionnaire/index.html:14 +#: templates/web/fixmystreet/questionnaire/index.html:32 +#: templates/web/fixmystreet/questionnaire/index.html:4 +msgid "Questionnaire" +msgstr "Upitnik" + +#: templates/web/default/admin/timeline.html:30 +msgid "Questionnaire %d answered for problem %d, %s to %s" +msgstr " Upitnik %d odgovren za problem %d, %s za %s" + +#: templates/web/default/admin/timeline.html:28 +msgid "Questionnaire %d sent for problem %d" +msgstr "Upitnik %d poslan za problem %d" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:192 +msgid "Questionnaire filled in by problem reporter" +msgstr "Upitnik popunila osoba koja je prijavila problem" + +#: templates/web/bromley/report/display.html:37 +#: templates/web/default/alert/_list.html:21 +#: templates/web/default/around/display_location.html:1 +#: templates/web/default/around/display_location.html:3 +#: templates/web/default/report/display.html:46 +#: templates/web/default/reports/_rss.html:1 +#: templates/web/fixmystreet/alert/_list.html:22 +#: templates/web/fixmystreet/alert/updates.html:9 +#: templates/web/fixmystreet/report/display.html:61 +msgid "RSS feed" +msgstr "RSS izvor" + +#: perllib/FixMyStreet/Cobrand/UK.pm:271 perllib/FixMyStreet/Cobrand/UK.pm:283 +msgid "RSS feed for %s" +msgstr "RSS izvor za %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:277 perllib/FixMyStreet/Cobrand/UK.pm:289 +msgid "RSS feed for %s ward, %s" +msgstr "RSS izvor za %s ward, %s" + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:171 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:179 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:189 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:197 +#: perllib/FixMyStreet/Cobrand/UK.pm:297 perllib/FixMyStreet/Cobrand/UK.pm:309 +msgid "RSS feed of %s" +msgstr "RSS izvor za %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:302 perllib/FixMyStreet/Cobrand/UK.pm:314 +msgid "RSS feed of %s, within %s ward" +msgstr "RSS izvor za %s, unutar %s ward" + +#: templates/web/default/alert/_list.html:21 +#: templates/web/fixmystreet/alert/_list.html:22 +msgid "RSS feed of nearby problems" +msgstr "RSS izvor za okolne probleme" + +#: templates/web/default/reports/_rss.html:1 +msgid "RSS feed of problems in this %s" +msgstr "RSS izvor za probleme u ovom %s" + +#: perllib/FixMyStreet/Cobrand/Default.pm:627 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:110 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:154 +#: perllib/FixMyStreet/Cobrand/UK.pm:235 +msgid "RSS feed of problems within %s" +msgstr "RSS izvor za probleme unutar %s" + +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:116 +#: perllib/FixMyStreet/Cobrand/UK.pm:241 +msgid "RSS feed of problems within %s ward" +msgstr "RSS izvor za probleme unutar %s ward" + +#: templates/web/default/around/display_location.html:1 +#: templates/web/default/around/display_location.html:4 +msgid "RSS feed of recent local problems" +msgstr "RSS izvor za nedavne lokalne probleme" + +#: templates/web/bromley/report/display.html:37 +#: templates/web/default/report/display.html:46 +#: templates/web/fixmystreet/alert/updates.html:9 +#: templates/web/fixmystreet/report/display.html:61 +msgid "RSS feed of updates to this problem" +msgstr "RSS izvor za ažuriranja ovog problema" + +#: templates/web/bromley/report/display.html:39 +#: templates/web/default/alert/updates.html:9 +#: templates/web/default/report/display.html:37 +#: templates/web/fixmystreet/alert/updates.html:14 +#: templates/web/fixmystreet/report/display.html:63 +msgid "Receive email when updates are left on this problem." +msgstr "Primite e-mail s ažuriranjima ovog problema" + +#: templates/web/default/around/display_location.html:0 +#: templates/web/default/around/display_location.html:32 +msgid "Recent local problems, FixMyStreet" +msgstr "Nedavni lokalni problemi, Popravi.to" + +#: templates/web/default/reports/index.html:19 +#: templates/web/fixmybarangay/reports/index.html:19 +msgid "Recently <br>fixed" +msgstr "Nedavno<br>popravljeno" + +#: templates/web/fiksgatami/nn/reports/index.html:13 +#: templates/web/fiksgatami/reports/index.html:13 +msgid "Recently fixed" +msgstr "Nedavno popravljeno" + +#: templates/web/default/index.html:35 templates/web/emptyhomes/index.html:24 +#: templates/web/fixmystreet/index.html:45 +msgid "Recently reported problems" +msgstr "Nedavno prijavljeni problemi" + +#: templates/web/default/report/new/notes.html:9 +#: templates/web/fixmystreet/report/new/notes.html:10 +msgid "Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site remember that you can contact your council directly using their own website." +msgstr "Popravi.to prvenstveno služi za izvještavanje fizičkih problema koji se mogu popraviti. Ako vaš problem nije prikladan za prijavljivanje preko ove stranice, uvijek se možete obratiti direktno svom vijeću preko njihove web stranice." + +#: templates/web/fixmybarangay/report/new/notes.html:9 +msgid "Remember that, for the pilot project, FixMyBarangay is only for reporting potholes and streetlights in bgy. Luz or Basak San Nicolas." +msgstr "Napominjemo da, u sklopu pilot projekt, FixMyBarangay služi samo za prijavljivanje rupa i rasvjete u bgy. Luz ili Basak San Nicolas." + +#: templates/web/default/admin/report_blocks.html:16 +msgid "Remove flag" +msgstr "Ukloni oznaku" + +#: templates/web/default/admin/report_edit.html:89 +#: templates/web/default/admin/update_edit.html:57 +#: templates/web/zurich/admin/update_edit.html:35 +msgid "Remove photo (can't be undone!)" +msgstr "Ukloni fotografiju (nije moguće poništiti!)" + +#: templates/web/emptyhomes/header.html:12 +msgid "Report Empty Homes" +msgstr "Prijavi prazne kuće" + +#: 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 "Prijavi problem" + +#: templates/web/bromley/report/display.html:28 +#: templates/web/fixmystreet/report/display.html:35 +msgid "Report abuse" +msgstr "Prijavi zloupotrebu" + +#: templates/web/default/report_created.html:1 +#: templates/web/default/report_created.html:3 +#: templates/web/seesomething/report_created.html:0 +#: templates/web/seesomething/report_created.html:8 +msgid "Report created" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Rss.pm:295 +msgid "Report on %s" +msgstr "Prijava za %s" + +#: templates/web/default/index.html:14 templates/web/emptyhomes/index.html:5 +#: templates/web/fixmystreet/around/intro.html:1 +#: templates/web/stevenage/around/intro.html:1 +#: templates/web/zurich/around/intro.html:1 +msgid "Report, view, or discuss local problems" +msgstr "Prijavi, pregledaj ili raspravljaj o lokalnim problemima" + +#: templates/web/default/my/my.html:74 +msgid "Reported %s" +msgstr "Prijavljeno %s" + +#: templates/web/default/my/my.html:72 +msgid "Reported %s, to %s" +msgstr "Prijavljeno %s, za %s" + +#: 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 "Prijavljeno anonimno %s" + +#: templates/web/default/admin/questionnaire.html:5 +#: templates/web/default/questionnaire/index.html:77 +#: templates/web/fixmystreet/questionnaire/index.html:71 +msgid "Reported before" +msgstr "Prije prijavljeno" + +#: 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" + +#: templates/web/zurich/report/_main.html:2 +msgid "Reported in the %s category" +msgstr "" + +#: 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: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: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 "Prijavljivanje problema" + +#: 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: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 +msgid "Reports awaiting approval" +msgstr "" + +#: templates/web/default/around/tabbed_lists.html:3 +msgid "Reports on and around the map" +msgstr "Prijave na i oko mape" + +#: templates/web/zurich/admin/index-sdm.html:10 +msgid "Reports published" +msgstr "" + +#: templates/web/default/admin/report_edit.html:71 +msgid "Resend report" +msgstr "Ponovno pošalji prijavu" + +#: templates/web/default/js/translation_strings.html:28 +#: templates/web/oxfordshire/js/translation_strings.html:22 +msgid "Right place?" +msgstr "" + +#: perllib/FixMyStreet/Geocode/OSM.pm:173 +msgid "Road operator for this named road (derived from road reference number and type): %s" +msgstr "Cestovni operater za ovu imenovanu cestu (izveden iz cestovnog referentnog broja i tipa): %s" + +#: perllib/FixMyStreet/Geocode/OSM.pm:170 +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: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:1377 +#: templates/web/default/admin/report_edit.html:86 +#: templates/web/zurich/admin/report_edit.html:77 +msgid "Rotate Right" +msgstr "" + +#: templates/web/default/admin/body_edit.html:76 +msgid "Save changes" +msgstr "Spremi promjene" + +#: templates/web/default/admin/reports.html:1 +#: templates/web/zurich/admin/reports.html:1 +msgid "Search Reports" +msgstr "Pretraži prijave" + +#: templates/web/default/admin/users.html:1 +msgid "Search Users" +msgstr "Pretraži korisnike" + +#: templates/web/zurich/header.html:77 +msgid "Search reports" +msgstr "" + +#: templates/web/default/admin/reports.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/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:71 +#: templates/web/zurich/admin/body-form.html:26 +msgid "Select an area" +msgstr "" + +#: templates/web/default/alert/_list.html:8 +#: templates/web/fixmystreet/alert/_list.html:10 +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:664 +msgid "Sent to %s %s later" +msgstr "Pošalji %s %s naknadno" + +#: templates/web/default/admin/report_edit.html:71 +msgid "Sent:" +msgstr "Poslano:" + +#: templates/web/default/admin/report_edit.html:73 +#: templates/web/zurich/admin/stats.html:45 +msgid "Service:" +msgstr "Servis:" + +#: templates/web/fixmystreet/report/display.html:41 +msgid "Share" +msgstr "Podijeli" + +#: templates/web/bromley/report/display.html:205 +#: templates/web/bromley/report/new/fill_in_details_form.html:129 +#: templates/web/bromley/report/new/fill_in_details_form.html:175 +#: templates/web/default/report/new/fill_in_details_form.html:210 +#: templates/web/default/report/update-form.html:157 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:129 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:197 +#: templates/web/fixmystreet/report/update-form.html:144 +msgid "Show my name publicly" +msgstr "Prikaži moje ime javno" + +#: templates/web/default/around/display_location.html:69 +msgid "Show old" +msgstr "Prikaži staro" + +#: templates/web/default/around/display_location.html:60 +msgid "Show pins" +msgstr "Prikaži pinove" + +#: templates/web/default/auth/general.html:3 +#: templates/web/default/auth/general.html:49 +#: templates/web/fixmybarangay/header.html:70 +#: templates/web/fixmystreet/auth/general.html:3 +#: templates/web/fixmystreet/auth/general.html:42 +#: templates/web/fixmystreet/auth/general.html:62 +#: templates/web/fixmystreet/header.html:54 +#: templates/web/oxfordshire/header.html:115 +#: templates/web/seesomething/auth/general.html:3 +#: templates/web/seesomething/auth/general.html:39 +#: templates/web/stevenage/header.html:101 +#: templates/web/zurich/auth/general.html:18 +#: templates/web/zurich/auth/general.html:35 +msgid "Sign in" +msgstr "Prijavi se" + +#: templates/web/default/auth/general.html:74 +msgid "Sign in by email" +msgstr "Prijavi se putem e-maila" + +#: templates/web/default/auth/general.html:1 +#: templates/web/fixmystreet/auth/general.html:1 +#: templates/web/seesomething/auth/general.html:1 +#: templates/web/zurich/auth/general.html:1 +msgid "Sign in or create an account" +msgstr "Prijavi se ili kreiraj korisnički račun" + +#: templates/web/bromley/auth/sign_out.html:1 +#: templates/web/default/auth/sign_out.html:1 +#: templates/web/default/header.html:30 +#: templates/web/emptyhomes/header.html:46 +#: templates/web/fiksgatami/header.html:22 +#: templates/web/fiksgatami/nn/header.html:22 +#: templates/web/lichfielddc/header.html:177 +#: templates/web/reading/header.html:33 +#: templates/web/seesomething/auth/sign_out.html:1 +#: templates/web/zurich/auth/sign_out.html:1 +msgid "Sign out" +msgstr "Odjavi se" + +#: templates/web/default/header.html:29 +#: templates/web/emptyhomes/header.html:45 +#: templates/web/fiksgatami/header.html:21 +#: templates/web/fiksgatami/nn/header.html:21 +#: templates/web/lichfielddc/header.html:177 +#: templates/web/reading/header.html:32 +msgid "Signed in as %s" +msgstr "Prijavljen kao %s" + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +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" +msgstr "Fotografije nedavnih prijava" + +#: perllib/FixMyStreet/App/View/Email.pm:32 +#: perllib/FixMyStreet/App/View/Web.pm:44 +msgid "Some text to localize" +msgstr "Tekst za lakšu lokalizaciju" + +#: perllib/FixMyStreet/Cobrand/UK.pm:93 +msgid "Sorry, that appears to be a Crown dependency postcode, which we don't cover." +msgstr "Žao nam je,ne pokrivamo područje na kojem se nalazi taj problem." + +#: templates/web/default/tokens/abuse.html:5 +msgid "Sorry, there has been an error confirming your problem." +msgstr "Žao nam je, došlo je do greške pri potvrđivanju problema." + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:215 +#: perllib/FixMyStreet/Geocode.pm:28 perllib/FixMyStreet/Geocode/Bing.pm:58 +#: perllib/FixMyStreet/Geocode/Google.pm:74 +#: perllib/FixMyStreet/Geocode/OSM.pm:66 +msgid "Sorry, we could not find that location." +msgstr "Žao nam je, ne možemo pronaći tu lokaciju." + +#: perllib/FixMyStreet/Geocode/Bing.pm:53 +#: perllib/FixMyStreet/Geocode/Google.pm:69 +#: perllib/FixMyStreet/Geocode/Zurich.pm:87 +msgid "Sorry, we could not parse that location. Please try again." +msgstr "Žao nam je, nije moguće analizirati tu lokaciju. Molimo pokušajte ponovno." + +#: templates/web/fiksgatami/footer.html:16 +#: templates/web/fiksgatami/nn/footer.html:16 +msgid "Source code" +msgstr "Izvorni kod" + +#: templates/web/default/admin/stats.html:64 +#, fuzzy +msgid "Start Date:" +msgstr "Dan početka:" + +#: 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 "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: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: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 "Statistika" + +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Status" +msgstr "" + +#: templates/web/default/report/updates.html:10 +msgid "Still open, via questionnaire, %s" +msgstr "I dalje otvoreno, putem upitnika %s" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370 +msgid "Subcategory: %s" +msgstr "" + +#: templates/web/zurich/admin/index-dm.html:27 +msgid "Subdivision/Body" +msgstr "" + +#: templates/web/bromley/report/new/fill_in_details_form.html:48 +#: templates/web/fixmystreet/contact/index.html:91 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:60 +msgid "Subject" +msgstr "Predmet" + +#: 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 "Predmet:" + +#: 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 "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: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" + +#: templates/web/default/questionnaire/index.html:116 +#: templates/web/fixmystreet/questionnaire/index.html:105 +msgid "Submit questionnaire" +msgstr "Pošalji upitnik" + +#: 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 "" + +#: templates/web/bromley/report/display.html:44 +#: templates/web/default/alert/updates.html:17 +#: templates/web/default/report/display.html:42 +#: templates/web/fixmystreet/alert/updates.html:23 +#: templates/web/fixmystreet/report/display.html:68 +msgid "Subscribe" +msgstr "Pretplati se" + +#: templates/web/default/alert/_list.html:97 +#: templates/web/fixmybarangay/alert/_list.html:42 +#: templates/web/fixmystreet/alert/_list.html:92 +msgid "Subscribe me to an email alert" +msgstr "Pretplati se na e-mail upozorenja" + +#: templates/web/fixmybarangay/alert/_list.html:6 +msgid "Subscribe to an alert based upon what baranagay you’re in:" +msgstr "Pretplati se na upozorenja svog kvarta ’" + +#: 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 "Sažetak" + +#: templates/web/default/reports/index.html:1 +#: templates/web/emptyhomes/reports/index.html:1 +#: templates/web/fiksgatami/nn/reports/index.html:1 +#: templates/web/fiksgatami/reports/index.html:1 +#: templates/web/fixmybarangay/reports/index.html:1 +#: templates/web/zurich/reports/index.html:0 +#: templates/web/zurich/reports/index.html:4 +msgid "Summary reports" +msgstr "Sažetak prijava" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1179 +msgid "Survey" +msgstr "" + +#: templates/web/default/admin/questionnaire.html:1 +msgid "Survey Results" +msgstr "Rezultati ispitivanja" + +#: 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" + +#: templates/web/default/admin/body.html:18 +msgid "Text only version" +msgstr "Tekst samo verzija" + +#: templates/web/default/admin/update_edit.html:20 +#: templates/web/zurich/admin/update_edit.html:12 +msgid "Text:" +msgstr "Tekst:" + +#: templates/web/default/tokens/confirm_update.html:7 +#: templates/web/default/tokens/confirm_update.html:8 +msgid "Thank you — you can <a href=\"%s\">view your updated problem</a> on the site." +msgstr "Hvala — možete <a href=\"%s\">pregledati vaš ažurirani post</a> na stranici." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:6 +#: templates/web/emptyhomes/tokens/confirm_problem.html:8 +msgid "Thank you for reporting an empty property on ReportEmptyHomes.com. We have emailed the lead officer for empty homes in the council responsible with details, and asked them to do whatever they can to get the empty property back into use as soon as possible." +msgstr "Hvala na prijavljivanju praznog objekta na Prijavi.to. Poslali smo detaljan e-mail glavnom službeniku za prazne kuće u council i zamolili smo ih da učine što god mogu ne bi li se čim prije prazni objekti vratili u upotrebu. " + +#: templates/web/emptyhomes/tokens/confirm_problem.html:30 +#: templates/web/emptyhomes/tokens/confirm_problem.html:31 +msgid "" +"Thank you for reporting this empty property on ReportEmptyHomes.com.\n" +"At present the report cannot be sent through to the council for this area. We\n" +"are working with councils to link them into the system so that as many areas\n" +"as possible will be covered." +msgstr "" +"Hvala na prijavi ovog objekta na kućoprazna.joj.\n" +"Prijava trenutno ne može biti poslana odgovornom tijelu ovog područja.\n" +"Radimo na uspostavljanju kontakta s nadležnima kako bismo sustavom obuhvatili što više područja. " + +#: templates/web/default/tokens/error.html:7 +msgid "Thank you for trying to confirm your update or problem. We seem to have an error ourselves though, so <a href=\"%s\">please let us know what went on</a> and we'll look into it." +msgstr "Zahvaljujemo se na pokušaju slanja vaše nadopune ili problema. Izgleda da imamo problem pa<a href=\"%s\">vas molimo da nam pojasnite što se dogodilo</a> te ćemo pokušati popraviti." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:24 +#: templates/web/emptyhomes/tokens/confirm_problem.html:26 +msgid "Thank you for using ReportEmptyHomes.com. Your action is already helping to resolve the UK’s empty homes crisis." +msgstr "Zahvaljujemo na korištenju kucoprazna.joj. Vaše sudjelovanje doprinosi rješavanju krize praznih ’kuća." + +#: templates/web/fixmystreet/around/around_index.html:27 +msgid "Thanks for uploading your photo. We now need to locate your problem, so please enter a nearby street name or postcode in the box above :" +msgstr "Hvala na učitavanju slike. Sada trebamo locirati problem pa vas molimo da unesete naziv obližnje ulice ili poštanski broj u gornji okvir : :" + +#: templates/web/default/contact/submit.html:8 +msgid "Thanks for your feedback. We'll get back to you as soon as we can!" +msgstr "Zahvaljujemo se na feedbacku. Javit ćemo se čim stignemo!" + +#: templates/web/default/questionnaire/creator_fixed.html:9 +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: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." + +#: perllib/FixMyStreet/App/Controller/Council.pm:90 +msgid "That location does not appear to be covered by a council; perhaps it is offshore or outside the country. Please try again." +msgstr "Odgovorno tijelo ne pokriva navedenu lokaciju, možda je riječ o obalnom dijelu ili je izvan zemlje. Molimo pokušajte ponovno." + +#: perllib/FixMyStreet/App/Controller/Location.pm:123 +msgid "That location does not appear to be in the UK; please try again." +msgstr "Lokacija se ne nalazi u Hrvatskoj. Molimo pokušajte ponovno." + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:63 +#: perllib/FixMyStreet/Cobrand/UK.pm:86 +msgid "That postcode was not recognised, sorry." +msgstr "Žao nam je, poštanski broj nije prepoznat." + +#: perllib/FixMyStreet/App/Controller/Admin.pm:704 +msgid "That problem will now be resent." +msgstr "Navedeni problem će biti ponovno poslan" + +#: perllib/FixMyStreet/App/Controller/Report.pm:117 +msgid "That report cannot be viewed on %s." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report.pm:111 +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 — <em>please</em> be patient." +msgstr "Molimo<strong> pričekajte </strong> — <em>email</em> potvrde." + +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:3 +msgid "The council won’t be able to help unless you leave as much detail as you can. Please describe the exact location of the problem (e.g. on a wall), what it is, how long it has been there, a description (and a photo of the problem if you have one), etc." +msgstr "" + +#: templates/web/fixmystreet/questionnaire/index.html:43 +msgid "The details of your problem are available from the other tab above." +msgstr "Pojedinosti problema dostupne su u gornjem dijelu stranice" + +#: templates/web/default/questionnaire/index.html:49 +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" +msgstr "Greška je: %s" + +#: templates/web/default/open311/index.html:88 +msgid "The following Open311 v2 attributes are returned for each request: service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code and service_name." +msgstr "" + +#: perllib/FixMyStreet/Geocode/OSM.pm:165 +msgid "The following information about the nearest road might be inaccurate or irrelevant, if the problem is close to several roads or close to a road without a name registered in OpenStreetMap." +msgstr "Informacija o najbližoj cesti može biti netočna ili irelevantna u slučaju da je problem u blizini više prometnica ili u neposrednoj blizini neimenovane ceste u OpenStreetMap" + +#: db/alert_types.pl:19 db/alert_types.pl:23 db/alert_types.pl:27 +#: db/alert_types.pl:31 +msgid "The latest local problems reported by users" +msgstr "Posljednji prijavljeni problemi " + +#: db/alert_types_eha.pl:13 +msgid "The latest local reports reported by users" +msgstr "Posljednji lokalni izvještaji " + +#: db/alert_types.pl:35 +msgid "The latest problems for {{COUNCIL}} reported by users" +msgstr "Posljednji problemi za {{ODGOVORNO TIJELO}} " + +#: db/alert_types.pl:39 +msgid "The latest problems for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "Posljednji problemi za {{ODGOVORNO TIJELO}} unutar {{WARD}} " + +#: db/alert_types.pl:11 +msgid "The latest problems reported by users" +msgstr "Posljednji prijavljeni problemi " + +#: db/alert_types.pl:15 +msgid "The latest problems reported fixed by users" +msgstr "Posljednji riješeni problemi" + +#: db/alert_types.pl:43 +msgid "The latest problems within {{NAME}}'s boundary reported by users" +msgstr "Posljednji prijavljeni problemi za {{IME}}" + +#: db/alert_types_eha.pl:9 +msgid "The latest properties reported back to use by users" +msgstr "Posljednji prijavljeni napušteni objekti" + +#: db/alert_types_eha.pl:20 +msgid "The latest reports for {{COUNCIL}} reported by users" +msgstr "Zadnje prijave za {{COUNCIL}} dostavljene od strane korisnika" + +#: db/alert_types_eha.pl:24 +msgid "The latest reports for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "Zadnje prijave za {{COUNCIL}} unutar {{WARD}} dostavljene od strane korisnika" + +#: db/alert_types_eha.pl:28 +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" +msgstr "Lozinke se ne podudaraju" + +#: templates/web/default/errors/page_error_404_not_found.html:10 +#: templates/web/default/errors/page_error_404_not_found.html:12 +msgid "The requested URL '%s' was not found on this server" +msgstr "Traženi URL '%s' nije pronađen na ovom serveru" + +#: templates/web/default/alert/_list.html:14 +#: templates/web/fixmystreet/alert/_list.html:16 +msgid "The simplest alert is our geographic one:" +msgstr "Dojavljivanja problema preko karte:" + +#: templates/web/barnet/report/new/councils_text_all.html:3 +#: templates/web/default/report/new/councils_extra_text.html:1 +#: templates/web/default/report/new/councils_text_some.html:10 +#: templates/web/default/report/new/councils_text_some.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:17 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:12 +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: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." + +#: perllib/FixMyStreet/App/Controller/Contact.pm:116 +#: perllib/FixMyStreet/App/Controller/Dashboard.pm:59 +msgid "There was a problem showing this page. Please try again later." +msgstr "Došlo je do problema pri učitavanju ove stranice. Molimo pokušajte ponovno." + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:747 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:134 +#: templates/web/default/auth/general.html:23 +#: templates/web/fixmystreet/auth/general.html:24 +#: templates/web/seesomething/auth/general.html:24 +#: templates/web/zurich/auth/general.html:28 +msgid "There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the ‘sign in by email’ section of the form." +msgstr "Došlo je do problema s kombinacijom Vašeg e-maila i lozinke.Ako se ne možete sjetiti ili nemate lozinku, molimo odaberite ‘ model prijave putem e-maila ’." + +#: perllib/FixMyStreet/App/Controller/Alert.pm:355 +msgid "There was a problem with your email/password combination. Please try again." +msgstr "Došlo je do problema s kombinacijom Vaše e-maila i lozinke. Molimo pokušajte ponovno." + +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:272 +msgid "There was a problem with your update. Please try again." +msgstr "Došlo je do problema pri ažuriranju. Molimo pokušajte ponovno." + +#: perllib/FixMyStreet/App/Controller/Contact.pm:120 +msgid "There were problems with your report. Please see below." +msgstr "Došlo je do problema pri prijavi. Detalje pogledajte u nastavku." + +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:299 +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." + +#: 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: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" +msgstr "Potrebna informacija" + +#: templates/web/default/debug_header.html:3 +msgid "This is a developer site; things might break at any time, and the database will be periodically deleted." +msgstr "Ovo je stranica za razvojne programere; ovdje se sve može prekinuti u bilo kojem trenutku. Baza će biti povremeno izbrisana." + +#: templates/web/fixmybarangay/reports/index.html:7 +msgid "This is a summary of all reports on this site; select a particular barangay to see the reports sent there." +msgstr "" + +#: templates/web/emptyhomes/reports/index.html:4 +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 "" + +#: templates/web/default/reports/index.html:7 +#: templates/web/fiksgatami/nn/reports/index.html:4 +#: templates/web/fiksgatami/reports/index.html:4 +msgid "This is a summary of all reports on this site; select a particular council to see the reports sent there." +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." + +#: templates/web/default/auth/token.html:9 +msgid "This may be because the link is too old or already used, or the address was not copied correctly." +msgstr "" + +#: templates/web/default/report/banner.html:15 +msgid "This problem has been closed" +msgstr "Problem je zatvoren" + +#: templates/web/bromley/report/display.html:98 +#: templates/web/default/report/banner.html:12 +#: templates/web/default/report/update-form.html:48 +#: templates/web/emptyhomes/report/banner.html:3 +#: templates/web/fixmystreet/report/update-form.html:46 +msgid "This problem has been fixed" +msgstr "Problem je riješen" + +#: templates/web/bromley/report/display.html:92 +#: templates/web/default/report/update-form.html:43 +#: templates/web/fixmystreet/report/update-form.html:40 +msgid "This problem has not been fixed" +msgstr "Problem još nije riješen" + +#: templates/web/default/report/banner.html:19 +msgid "This problem is in progress" +msgstr "Problem je i dalje aktualan" + +#: templates/web/default/report/banner.html:9 +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:108 +#: perllib/FixMyStreet/Cobrand/Zurich.pm:109 +#: templates/web/zurich/report/_main.html:14 +msgid "This report is awaiting moderation." +msgstr "" + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:86 +msgid "This report is currently marked as closed." +msgstr "Ova prijava je trenutno označena kao zatvorena." + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:84 +msgid "This report is currently marked as fixed." +msgstr "Prijava je trenutno označena kao popravljena." + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:88 +msgid "This report is currently marked as open." +msgstr "Prijava je trenutno označena kao otvorena." + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315 +msgid "This report was submitted anonymously" +msgstr "" + +#: 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:1178 +#: templates/web/default/admin/timeline.html:1 +msgid "Timeline" +msgstr "Vremenska skala" + +#: templates/web/default/admin/flagged.html:15 +#: templates/web/default/admin/reports.html:12 +msgid "Title" +msgstr "Naslov" + +#: templates/web/default/around/_report_banner.html:2 +msgid "To <strong>report a problem</strong>, click on the map at the correct location." +msgstr "Kako<strong>biste prijavili problem</strong>, na karti označite točnu lokaciju." + +#: templates/web/default/alert/index.html:27 +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: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: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 "Ukupno" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:24 +msgid "Transport Category" +msgstr "" + +#: templates/web/default/js/translation_strings.html:29 +#: templates/web/oxfordshire/js/translation_strings.html:23 +msgid "Try again" +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 "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:48 +#: templates/web/zurich/admin/report_edit.html:61 +#: templates/web/zurich/admin/update_edit.html:18 +msgid "Unconfirmed" +msgstr "Nepotvrđeno" + +#: templates/web/fixmystreet/report/banner.html:9 +msgid "Unknown" +msgstr "Nepoznato" + +#: perllib/FixMyStreet/App/Controller/Rss.pm:173 +msgid "Unknown alert type" +msgstr "Nepoznat tip upozorenja" + +#: templates/web/default/js/translation_strings.html:39 +#: templates/web/oxfordshire/js/translation_strings.html:33 +msgid "Unknown error" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report.pm:106 +msgid "Unknown problem ID" +msgstr "Nepoznat IB problema" + +#: templates/web/bromley/report/display.html:66 +#: templates/web/fixmystreet/report/update-form.html:19 +msgid "Update" +msgstr "Ažuriranje" + +#: templates/web/default/admin/timeline.html:33 +msgid "Update %s created for problem %d; by %s" +msgstr "Problem %s ažurirao %d; korisnik %s" + +#: templates/web/default/contact/index.html:21 +#: templates/web/fixmystreet/contact/index.html:34 +msgid "Update below added anonymously at %s" +msgstr "Ažuriranje u nastavku dodao je anonimni korisnik u %s" + +#: templates/web/default/contact/index.html:23 +#: templates/web/fixmystreet/contact/index.html:36 +msgid "Update below added by %s at %s" +msgstr "Ažuriranje u nastavku dodao %s u %s" + +#: 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:38 +msgid "Update breakdown by state" +msgstr "" + +#: db/alert_types.pl:7 +msgid "Update by {{name}}" +msgstr "Ažuraranje dodao {{ime}}" + +#: templates/web/default/admin/update_edit.html:42 +#: templates/web/zurich/admin/update_edit.html:25 +msgid "Update changed problem state to %s" +msgstr "Ažuriranjem se status problema promijenio u %s" + +#: templates/web/default/admin/update_edit.html:44 +msgid "Update marked problem as fixed" +msgstr "Ažuriranjem je problem označen kao popravljen" + +#: templates/web/default/admin/update_edit.html:46 +msgid "Update reopened problem" +msgstr "Ažuriranjem je problem ponovno otvoren" + +#: templates/web/default/admin/body.html:83 +msgid "Update statuses" +msgstr "Status ažuriranja" + +#: templates/web/default/report/update-form.html:22 +msgid "Update:" +msgstr "Ažuriranje:" + +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Updated" +msgstr "" + +#: 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:24 +#: templates/web/zurich/report/updates.html:2 +msgid "Updates" +msgstr "Ažuriranja" + +#: perllib/FixMyStreet/DB/Result/Comment.pm:131 +msgid "Updates are limited to 2000 characters in length. Please shorten your update" +msgstr "" + +#: db/alert_types.pl:5 db/alert_types.pl:6 +msgid "Updates on {{title}}" +msgstr "Ažuriranja za {{naslov}}" + +#: templates/web/bromley/report/display.html:0 +#: templates/web/bromley/report/display.html:8 +#: templates/web/default/report/display.html:0 +#: templates/web/default/report/display.html:5 +#: templates/web/fixmystreet/report/display.html:0 +#: templates/web/fixmystreet/report/display.html:8 +msgid "Updates to this problem, FixMyStreet" +msgstr "Ažuriranja za ovaj problem,Popravi.to" + +#: 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:1314 +msgid "User flagged" +msgstr "Korisnik označen" + +#: 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:371 +#: perllib/FixMyStreet/App/Controller/Admin.pm:401 +msgid "Values updated" +msgstr "Vrijednosti ažurirane" + +#: templates/web/default/admin/report_edit.html:18 +#: templates/web/default/admin/update_edit.html:18 +#: templates/web/zurich/admin/report_edit-sdm.html:24 +#: templates/web/zurich/admin/report_edit.html:23 +#: templates/web/zurich/admin/update_edit.html:10 +msgid "View report on site" +msgstr "Pogledaj prijave na stranici" + +#: templates/web/default/reports/body.html:14 +msgid "View reports by ward" +msgstr "Pregled prijava za ward" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:39 +msgid "View your report" +msgstr "Prikaz Vaše prijave" + +#: templates/web/default/around/display_location.html:0 +#: templates/web/default/around/display_location.html:34 +#: templates/web/seesomething/around/display_location.html:0 +#: templates/web/seesomething/around/display_location.html:16 +msgid "Viewing a location" +msgstr "Prikaz lokacije" + +#: templates/web/bromley/report/display.html:0 +#: templates/web/default/report/display.html:0 +#: templates/web/fixmystreet/report/display.html:0 +msgid "Viewing a problem" +msgstr "Prikaz problema" + +#: templates/web/default/reports/body.html:16 +msgid "Wards of this council" +msgstr "Općine ove županije" + +#: templates/web/default/alert/choose.html:6 +#: templates/web/default/around/around_index.html:13 +#: templates/web/fixmystreet/around/around_index.html:16 +#: templates/web/seesomething/around/around_index.html:13 +msgid "We found more than one match for that location. We show up to ten matches, please try a different search if yours is not here." +msgstr "Pronađeno je više rezultata za tnavedenulokaciju. Prikazano je do deset rezlutata. Ukoliko nije naveden traženi problem, molimo pokušajte s drugom pretragom." + +#: templates/web/default/auth/token.html:8 +msgid "We have not been able to confirm your account - sorry." +msgstr "" + +#: templates/web/default/auth/token.html:16 +msgid "We have sent you an email containing a link to confirm your account." +msgstr "Poslali smo Vam e-mail s linkom za potvrdu korisničkog računa." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:18 +#: templates/web/emptyhomes/tokens/confirm_problem.html:20 +msgid "We may contact you periodically to ask if anything has changed with the property you reported." +msgstr "Možda ćemo Vas povremeno kontaktirati kako bismo saznali je li se nešto mijenjalo s objektom koji ste prijavili." + +#: templates/web/bromley/report/display.html:143 +#: templates/web/fixmystreet/report/update-form.html:115 +msgid "We never show your email" +msgstr "Nikada ne prikazujemo vašu e-mail adresu" + +#: templates/web/bromley/report/new/fill_in_details_form.html:133 +#: templates/web/bromley/report/new/fill_in_details_form.html:179 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:134 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:201 +#: templates/web/zurich/report/new/fill_in_details_form.html:96 +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: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." + +#: templates/web/default/index-steps.html:31 +msgid "We send it to the council on your behalf" +msgstr "Poslan je odgovornom tijelu u Vaše ime" + +#: templates/web/bromley/report/new/fill_in_details_form.html:217 +#: templates/web/default/report/new/notes.html:5 +#: templates/web/fixmybarangay/report/new/notes.html:5 +msgid "We will only use your personal information in accordance with our <a href=\"/faq#privacy\">privacy policy.</a>" +msgstr "Vaše privatne podatke koristimo u skladu s našim <a href=\"/faq#privacy\">pravilima o privatnosti.</a>" + +#: templates/web/fixmystreet/report/new/notes.html:4 +#: templates/web/oxfordshire/report/new/notes.html:4 +msgid "We will only use your personal information in accordance with our <a href=\"/privacy\">privacy policy.</a>" +msgstr "Vaše privatne podatke koristimo u skladu s našim <a href=\"/privacy\">pravilima o privatnosti.</a>" + +#: templates/web/emptyhomes/contact/blurb.html:2 +msgid "We’d love to hear what you think about this website. Just fill in the form. Please don’t contact us about individual empty homes; use the box accessed from <a href=\"/\">the front page</a>." +msgstr "Rado’bismo čuli vaše mišljenje o ovoj stranici. Da biste to učinili, dovoljno je ispuniti obrazac. Molimo’da nas ne kontaktirate kako biste prijavili pojedine prazne kuće, već koristite okvir kojem možete pristupiti na <a href=\"/\">naslovnoj stranici</a>." + +#: templates/web/default/contact/blurb.html:8 +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:61 +#: templates/web/default/admin/body_edit.html:82 +#: templates/web/zurich/admin/body.html:17 +msgid "When edited" +msgstr "Prilikom ažuriranja" + +#: templates/web/default/admin/problem_row.html:35 +msgid "When sent" +msgstr "Prilikom slanja" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:621 +msgid "Whole block of empty flats" +msgstr "Cijeli blok praznih stanova" + +#: templates/web/default/open311/index.html:94 +msgid "With request searches, it is also possible to search for agency_responsible to limit the requests to those sent to a single administration. The search term is the administration ID provided by <a href=\"%s\">MaPit</a>." +msgstr "Osim pretraživanja prijava, moguće je pretražiti i odgovorne_agencije kako biste ograničili prijave na one poslane određenom uredu. Pojam za pretraživanje je IB pojedinog ureda kojeg možete saznati pomoću <a href=\"%s\">MaPit</a>." + +#: templates/web/fixmystreet/footer.html:21 +#: templates/web/stevenage/footer.html:22 +msgid "Would you like better integration with FixMyStreet? <a href=\"http://www.mysociety.org/for-councils/fixmystreet/\">Find out about FixMyStreet for councils</a>." +msgstr "Želite li se bolje integrirati na Popravi.to? <a href=\"http://www.mysociety.org/for-councils/fixmystreet/\">Saznajte više o Popravi.to za pojedina odgovorna tijela</a>." + +#: templates/web/fixmystreet/footer.html:17 +#: templates/web/stevenage/footer.html:18 +msgid "Would you like to contribute to FixMyStreet? Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>." +msgstr "Želite li sudjelovati u Popravi.to? Naš kod je open source i <a href=\"http://github.com/mysociety/fixmystreet\">dostupan na GitHub</a>." + +#: templates/web/default/questionnaire/index.html:106 +#: templates/web/fixmystreet/questionnaire/index.html:96 +msgid "Would you like to receive another questionnaire in 4 weeks, reminding you to check the status?" +msgstr "Želite li za 4 tjedna primiti još jedan upitnik koji bi Vas podsjetio da provjerite status?" + +#: templates/web/default/report/new/notes.html:8 +#: templates/web/fixmybarangay/report/new/notes.html:8 +#: templates/web/fixmystreet/report/new/notes.html:8 +#: templates/web/oxfordshire/report/new/notes.html:7 +msgid "Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation." +msgstr "Pisanje velikim tiskanim slovima i bez interpunkcijskih znakova čini poruku teško čitljivom." + +#: templates/web/default/admin/stats.html:10 +msgid "Year" +msgstr "Godina" + +#: 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 "Da" + +#: templates/web/bromley/report/display.html:157 +#: templates/web/bromley/report/new/fill_in_details_form.html:198 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:161 +#: templates/web/fixmystreet/report/update-form.html:89 +msgid "Yes I have a password" +msgstr "Da, imam lozinku" + +#: templates/web/default/contact/index.html:37 +#: templates/web/fixmystreet/contact/index.html:50 +msgid "You are reporting the following problem report for being abusive, containing personal information, or similar:" +msgstr "Sljedeće izvješće o problemu prijavljujete jer je uvredljivo, sadrži osobne podatke ili slično:" + +#: templates/web/default/contact/index.html:15 +#: templates/web/fixmystreet/contact/index.html:28 +msgid "You are reporting the following update for being abusive, containing personal information, or similar:" +msgstr "Sljedeće ažuriranje prijavljujete jer je uvredljivo, sadrži osobne podatke ili slično:" + +#: templates/web/default/tokens/confirm_problem.html:19 +#: templates/web/default/tokens/confirm_problem.html:21 +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:8 +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 "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/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 "" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:38 +msgid "You have already answered this questionnaire. If you have a question, please <a href='%s'>get in touch</a>, or <a href='%s'>view your problem</a>.\n" +msgstr "Već ste ogovorili na upitnik. Ako imate nekih pitanja, molimo da nam<a href='%s'>se javite</a>, ili<a href='%s'>pregledate problem koji vas zanima</a>.\n" + +#: templates/web/bromley/report/new/fill_in_details_form.html:97 +#: templates/web/default/questionnaire/index.html:96 +#: templates/web/default/report/new/fill_in_details_form.html:93 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:90 +#: templates/web/fixmystreet/questionnaire/index.html:87 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:99 +#: templates/web/seesomething/report/new/fill_in_details_form.html:59 +#: templates/web/zurich/report/new/fill_in_details_form.html:75 +msgid "You have already attached a photo to this report, attaching another one will replace it." +msgstr "Već ste priložiti fotografiju ovoj prijavi, ako dodate novu, zamijenit će prethodno postojeću." + +#: templates/web/bromley/report/display.html:108 +#: templates/web/default/report/update-form.html:59 +#: templates/web/fixmystreet/report/update-form.html:56 +msgid "You have already attached a photo to this update, attaching another one will replace it." +msgstr "Već ste priložiti fotografiju ovom ažuriranju, ako dodate novu, zamijenit će prethodno postojeću." + +#: templates/web/default/auth/sign_out.html:3 +#: templates/web/seesomething/auth/sign_out.html:3 +#: templates/web/zurich/auth/sign_out.html:3 +msgid "You have been signed out" +msgstr "Odjavljeni ste" + +#: templates/web/bromley/report/new/fill_in_details_form.html:25 +#: templates/web/default/report/new/fill_in_details_form.html:7 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:7 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:28 +#: templates/web/zurich/report/new/fill_in_details_form.html:13 +msgid "You have located the problem at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. " +msgstr "Locirali ste problem na mjestu označenom zelenom iglom na karti. Ako to nije točna lokacija, jednostavno opet kliknite na karti ." + +#: templates/web/default/tokens/confirm_alert.html:7 +msgid "You have successfully confirmed your alert." +msgstr "Uspješno ste potvrdili Vaše upozorenje" + +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:6 +msgid "You have successfully confirmed your email address." +msgstr "" + +#: templates/web/default/tokens/confirm_problem.html:14 +#: templates/web/default/tokens/confirm_problem.html:15 +msgid "You have successfully confirmed your problem" +msgstr "Uspješno ste potvrdili Vaš problem" + +#: templates/web/default/tokens/confirm_update.html:11 +#: templates/web/default/tokens/confirm_update.html:12 +msgid "You have successfully confirmed your update and you can now <a href=\"%s\">view it on the site</a>." +msgstr "Uspješno ste potvrdili ažuriranje te ga možete<a href=\"%s\">pregledati na stranici</a>." + +#: templates/web/default/tokens/confirm_alert.html:11 +msgid "You have successfully created your alert." +msgstr "Uspješno ste dodali upozorenje." + +#: templates/web/default/tokens/confirm_alert.html:9 +msgid "You have successfully deleted your alert." +msgstr "Uspješno ste izbrisali upozorenje." + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:754 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:140 +msgid "You have successfully signed in; please check and confirm your details are accurate:" +msgstr "Uapješno ste se prijavili; molimo provjerite i potvrdite točnost Vaših podataka:" + +#: templates/web/default/email_sent.html:13 +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?" + +#: templates/web/default/my/my.html:0 templates/web/default/my/my.html:14 +#: templates/web/default/my/my.html:3 templates/web/fixmystreet/my/my.html:0 +#: templates/web/fixmystreet/my/my.html:14 +#: templates/web/fixmystreet/my/my.html:3 +msgid "Your Reports" +msgstr "Vaše prijave" + +#: templates/web/bromley/report/display.html:41 +#: templates/web/bromley/report/display.html:43 +#: templates/web/bromley/report/new/fill_in_details_form.html:145 +#: templates/web/fixmystreet/alert/_list.html:89 +#: templates/web/fixmystreet/alert/updates.html:19 +#: templates/web/fixmystreet/alert/updates.html:22 +#: templates/web/fixmystreet/contact/index.html:84 +#: templates/web/fixmystreet/report/display.html:65 +#: templates/web/fixmystreet/report/display.html:67 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:115 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:147 +#: templates/web/zurich/report/new/fill_in_details_form.html:88 +msgid "Your email" +msgstr "Vaš e-mail" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:81 +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:58 +msgid "Your email address" +msgstr "Vaša e-mail adresa" + +#: templates/web/default/auth/general.html:27 +msgid "Your email address:" +msgstr "Vaša e-mail adresa:" + +#: templates/web/default/alert/_list.html:92 +#: templates/web/default/report/new/fill_in_details_form.html:124 +#: templates/web/default/report/update-form.html:81 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:133 +#: templates/web/fixmybarangay/alert/_list.html:37 +msgid "Your email:" +msgstr "Vaš e-mail:" + +#: templates/web/bromley/report/display.html:195 +#: templates/web/bromley/report/new/fill_in_details_form.html:117 +#: templates/web/bromley/report/new/fill_in_details_form.html:164 +msgid "Your first name" +msgstr "Ime" + +#: templates/web/fixmystreet/report/updates-sidebar-notes.html:5 +msgid "Your information will only be used in accordance with our <a href=\"/privacy\">privacy policy</a>" +msgstr "Vaše informacije će se koristiti isključivo u skladu s našim<a href=\"/privacy\">pravilima o privatnosti</a>" + +#: templates/web/bromley/report/display.html:201 +#: templates/web/bromley/report/new/fill_in_details_form.html:123 +#: templates/web/bromley/report/new/fill_in_details_form.html:170 +msgid "Your last name" +msgstr "Prezime" + +#: 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 "Ime" + +#: templates/web/default/auth/general.html:59 +#: templates/web/default/contact/index.html:68 +#: templates/web/default/report/new/fill_in_details_form.html:203 +#: templates/web/default/report/update-form.html:151 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:124 +msgid "Your name:" +msgstr "Ime:" + +#: templates/web/bromley/report/display.html:162 +#: templates/web/bromley/report/new/fill_in_details_form.html:203 +#: templates/web/fixmystreet/auth/general.html:41 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:166 +#: templates/web/fixmystreet/report/update-form.html:94 +#: templates/web/seesomething/auth/general.html:30 +#: templates/web/zurich/auth/general.html:34 +msgid "Your password" +msgstr "Lozinka" + +#: templates/web/default/auth/change_password.html:6 +msgid "Your password has been changed" +msgstr "Vaša lozinka je promijenjena" + +#: 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 "Vaš broj telefona" + +#: templates/web/fixmystreet/questionnaire/index.html:15 +msgid "Your report" +msgstr "Vaša prijava" + +#: templates/web/default/report_created.html:6 +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/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 "Vaše prijave" + +#: templates/web/default/my/my.html:45 templates/web/fixmystreet/my/my.html:49 +msgid "Your updates" +msgstr "Vaša ažuriranja" + +#: templates/web/default/contact/index.html:76 +msgid "Your email:" +msgstr "Vaš e-mail:" + +#: templates/web/default/admin/timeline.html:4 +msgid "by %s" +msgstr "od %s" + +#: templates/web/default/reports/body.html:6 +#: templates/web/default/reports/body.html:7 +msgid "council" +msgstr "odgovorno tijelo" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:649 +msgid "council ref: %s" +msgstr "odgovorno tijelo ref: %s" + +#: 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 "nije korištena karta" + +#: templates/web/default/alert/index.html:33 +#: templates/web/fixmystreet/around/postcode_form.html:20 +#: templates/web/seesomething/around/postcode_form.html:9 +msgid "e.g. ‘%s’ or ‘%s’" +msgstr "npr. ‘%s’ ili‘%s’" + +#: 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" +msgstr "" + +#: perllib/Utils.pm:263 +msgid "less than a minute" +msgstr "manje od minute" + +#: templates/web/default/report/updates.html:57 +msgid "marked as a duplicate report" +msgstr "" + +#: templates/web/default/report/updates.html:47 +msgid "marked as action scheduled" +msgstr "" + +#: templates/web/default/report/updates.html:59 +msgid "marked as an internal referral" +msgstr "" + +#: templates/web/default/report/updates.html:49 +msgid "marked as closed" +msgstr "" + +#: templates/web/default/report/updates.html:28 +#: templates/web/default/report/updates.html:51 +msgid "marked as fixed" +msgstr "označeno kao popravljeno" + +#: templates/web/default/report/updates.html:45 +msgid "marked as in progress" +msgstr "" + +#: templates/web/default/report/updates.html:41 +msgid "marked as investigating" +msgstr "" + +#: templates/web/default/report/updates.html:55 +msgid "marked as not the council's responsibility" +msgstr "" + +#: templates/web/default/report/updates.html:43 +msgid "marked as planned" +msgstr "" + +#: templates/web/default/report/updates.html:53 +msgid "marked as unable to fix" +msgstr "" + +#: 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 "n/a" + +#: templates/web/default/alert/_list.html:87 +#: templates/web/fixmybarangay/alert/_list.html:32 +#: templates/web/fixmystreet/alert/_list.html:85 +msgid "or" +msgstr "ili" + +#: 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: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: “%s”" +msgstr "" + +#: templates/web/default/admin/report_edit.html:30 +msgid "other areas:" +msgstr "druga područja:" + +#: templates/web/default/report/updates.html:29 +#: templates/web/default/report/updates.html:39 +msgid "reopened" +msgstr "ponovno otvoreno" + +#: templates/web/barnet/header.html:71 templates/web/bromley/header.html:100 +#: templates/web/bromley/header.html:65 +#: templates/web/fixmybarangay/header.html:67 +#: templates/web/fixmystreet/header.html:51 +#: templates/web/oxfordshire/header.html:112 +#: templates/web/oxfordshire/header.html:48 +#: templates/web/stevenage/header.html:98 templates/web/zurich/footer.html:12 +msgid "sign out" +msgstr "odjavi se" + +#: templates/web/bromley/report/new/fill_in_details_form.html:4 +#: templates/web/bromley/report/new/fill_in_details_form.html:7 +#: templates/web/default/report/new/fill_in_details_form.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:14 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:14 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:9 +msgid "the local council" +msgstr "lokalno odgovorno tijelo" + +#: templates/web/default/report/_main.html:6 +#: templates/web/zurich/report/_main.html:5 +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:362 +msgid "this type of local problem" +msgstr "ovaj tip " + +#: perllib/Utils.pm:235 +msgid "today" +msgstr "danas" + +#: 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 "korištena karta" + +#: templates/web/default/admin/update_edit.html:35 +msgid "user is from same council as problem - %d" +msgstr "Korisnik je iz istog područja kao i problem - %d" + +#: templates/web/default/admin/update_edit.html:38 +msgid "user is problem owner" +msgstr "korisnik je vlasnik problema" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:3 +msgid "ward" +msgstr "" + +#: templates/web/default/front/stats.html:17 +#, perl-format +msgid "<big>%s</big> report recently" +msgid_plural "<big>%s</big> reports recently" +msgstr[0] "<big>%s</big> novija prijava" +msgstr[1] "<big>%s</big> novije prijave" +msgstr[2] "<big>%s</big> novije prijave" + +#: perllib/Utils.pm:282 +#, perl-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d sat" +msgstr[1] "%d sati" +msgstr[2] "%d sati" + +#: templates/web/default/report/_support.html:6 +#, perl-format +msgid "%d supporter" +msgid_plural "%d supporters" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: perllib/Utils.pm:284 +#, perl-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuta" +msgstr[1] "%d minute" +msgstr[2] "%d minute" + +#: templates/web/default/front/stats.html:29 +#, perl-format +msgid "<big>%s</big> update on reports" +msgid_plural "<big>%s</big> updates on reports" +msgstr[0] "<big>%s</big> ažuriranje za prijavu" +msgstr[1] "<big>%s</big> ažuriranja za prijavu" +msgstr[2] "<big>%s</big> ažuriranja za prijavu" + +#: templates/web/emptyhomes/report/new/councils_text_none.html:3 +#, perl-format +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] "Još uvijek nemamo podatke za odgovorno tijelo koja pokriva ovu lokaciju." +msgstr[1] "Još uvijek nemamo podatke za odgovorna tijela koja pokrivaju ovu lokaciju." +msgstr[2] "Još uvijek nemamo podatke za odgovorna tijela koja pokrivaju ovu lokaciju." + +#: perllib/Utils.pm:278 +#, perl-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "%d tjedan" +msgstr[1] "%d tjedni" +msgstr[2] "%d tjedni" + +#: templates/web/default/front/stats.html:12 +#, perl-format +msgid "<big>%s</big> report in past week" +msgid_plural "<big>%s</big> reports in past week" +msgstr[0] "<big>%s</big> prijava u prošlom tjednu" +msgstr[1] "<big>%s</big> prijave u prošlom tjednu" +msgstr[2] "<big>%s</big> prijave u prošlom tjednu" + +#: templates/web/default/front/stats.html:23 +#, perl-format +msgid "<big>%s</big> fixed in past month" +msgid_plural "<big>%s</big> fixed in past month" +msgstr[0] "<big>%s</big> popravljeno u posljednjih mjesec dana" +msgstr[1] "<big>%s</big> popravljeno u posljednjih mjesec dana" +msgstr[2] "<big>%s</big> popravljeno u posljednjih mjesec dana" + +#: templates/web/default/report/new/councils_text_some.html:14 +#, perl-format +msgid "We do <strong>not</strong> yet have details for the other council that covers this location." +msgid_plural "We do <strong>not</strong> yet have details for the other councils that cover this location." +msgstr[0] "Još <strong>nemamo</strong> podatke za drugo odgovorno tijelo koje je odgovorno za ovu lokaciju." +msgstr[1] "Još <strong>nemamo</strong> podatke za ostala odgovorna tijela koja su odgovorna za ovu lokaciju." +msgstr[2] "Još <strong>nemamo</strong> podatke za ostala odgovorna tijela koja su odgovorna za ovu lokaciju." + +#: perllib/Utils.pm:280 +#, perl-format +msgid "%d day" +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 bcf77f56c..9b12958eb 100644 --- a/locale/nb_NO.UTF-8/LC_MESSAGES/FixMyStreet.po +++ b/locale/nb_NO.UTF-8/LC_MESSAGES/FixMyStreet.po @@ -1,42 +1,43 @@ -# translation of FixMyStreet.po to Norwegian Bokmål # FixMyStreet original .po file, autogenerated by gettext-extract. -# Copyright (C) 2008 UK Citizens Online Democracy +# 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. # -# Matthew Somerville <matthew@mysociety.org>, 2008-04-15. -# Petter Reinholdtsen <pere@hungry.com>, 2011. -# Anders Einar Hilden <hildenae@gmail.com>, 2012. +# Translators: +# Anders Einar Hilden <hildenae@gmail.com>, 2012 +# Guttorm Flatabø <post@guttormflatabo.com>, 2013 +# Anders Einar Hilden <hildenae@gmail.com>, 2013 +# pere <pere-transifex@hungry.com>, 2012 +# Petter Reinholdtsen <pere@hungry.com>, 2011 msgid "" msgstr "" -"Project-Id-Version: FixMyStreet\n" +"Project-Id-Version: fixmystreet\n" "Report-Msgid-Bugs-To: matthew@mysociety.org\n" -"POT-Creation-Date: 2012-08-21 09:54+0100\n" -"PO-Revision-Date: 2012-09-14 00:22+0100\n" -"Last-Translator: Anders Einar Hilden <hildenae@gmail.com>\n" -"Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.uio.no>\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" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: KBabel 1.11.4\n" -"X-Poedit-Basepath: ../../../\n" -"Language: Norwegian Bokmål\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: perllib/FixMyStreet/DB/Result/Problem.pm:555 -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:337 +#: perllib/FixMyStreet/DB/Result/Problem.pm:602 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373 msgid " and " msgstr " og " #: templates/web/default/tokens/confirm_problem.html:14 -#: templates/web/default/tokens/confirm_problem.html:18 +#: templates/web/default/tokens/confirm_problem.html:17 msgid " and <strong>we will now send it to the council</strong>" msgstr " og <strong>vi sender det nå til administrasjonen</strong>" -#: templates/web/default/report/new/councils_text_all.html:10 -#: templates/web/default/report/new/councils_text_all.html:17 -#: templates/web/default/report/new/councils_text_all.html:3 +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_none.html:11 #: templates/web/default/report/new/councils_text_none.html:14 -#: templates/web/default/report/new/councils_text_none.html:17 #: templates/web/default/report/new/councils_text_some.html:20 #: templates/web/default/report/new/councils_text_some.html:23 #: templates/web/default/report/new/councils_text_some.html:5 @@ -44,98 +45,70 @@ msgstr " og <strong>vi sender det nå til administrasjonen</strong>" msgid " or " msgstr " eller " -#: templates/web/default/admin/council_list.html:17 +#: 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 – %d confirmed, %d unconfirmed" msgstr "%d administrasjonskontakter – %d bekreftet, %d ubekreftet" -#: perllib/Utils.pm:293 -msgid "%d day" -msgstr "%d dag" - -#: perllib/Utils.pm:293 -msgid "%d days" -msgstr "%d dager" - -#: templates/web/default/admin/council_list.html:27 +#: templates/web/default/admin/edit-league.html:12 msgid "%d edits by %s" msgstr "%d redigeringer av %s" -#: perllib/Utils.pm:294 -msgid "%d hour" -msgstr "%d time" - -#: perllib/Utils.pm:294 -msgid "%d hours" -msgstr "%d timer" - -#: templates/web/default/admin/index.html:16 +#: templates/web/default/admin/index.html:24 msgid "%d live updates" msgstr "%d aktive oppdateringer" -#: perllib/Utils.pm:295 -msgid "%d minute" -msgstr "%d minutt" - -#: perllib/Utils.pm:295 -msgid "%d minutes" -msgstr "%d minutter" - -#: templates/web/default/admin/index.html:18 +#: templates/web/default/admin/index.html:26 msgid "%d questionnaires sent – %d answered (%s%%)" msgstr "%d spørreskjema sendt – %d besvart (%s%%)" -#: perllib/Utils.pm:292 -msgid "%d week" -msgstr "%d uke" - -#: perllib/Utils.pm:292 -msgid "%d weeks" -msgstr "%d uker" +#: templates/web/default/pagination.html:10 +msgid "%d to %d of %d" +msgstr "%d til %d av %d" -#: templates/web/default/reports/council.html:0 -#: templates/web/default/reports/council.html:26 -#: templates/web/emptyhomes/reports/council.html:11 -#: templates/web/emptyhomes/reports/council.html:13 +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:22 msgid "%s - Summary reports" msgstr "%s - oppsummeringsrapporter" -#: perllib/FixMyStreet/DB/Result/Problem.pm:605 +#: perllib/FixMyStreet/DB/Result/Problem.pm:651 msgid "%s ref: %s" msgstr "%s ref: %s" -#: perllib/FixMyStreet/Cobrand/UK.pm:288 perllib/FixMyStreet/Cobrand/UK.pm:300 +#: perllib/FixMyStreet/Cobrand/UK.pm:276 perllib/FixMyStreet/Cobrand/UK.pm:288 msgid "%s ward, %s" msgstr "%s bydel, %s" -#: perllib/FixMyStreet/DB/Result/Problem.pm:488 -msgid "%s, reported anonymously at %s" -msgstr "%s, rapportert anonymt %s" - -#: perllib/FixMyStreet/DB/Result/Problem.pm:490 -msgid "%s, reported by %s at %s" -msgstr "%s, rapportert av %s %s" +#: perllib/FixMyStreet/DB/Result/Problem.pm:538 +msgid "%s, reported at %s" +msgstr "%s, rapportert %s" -#: perllib/FixMyStreet/Cobrand/UK.pm:315 perllib/FixMyStreet/Cobrand/UK.pm:327 +#: perllib/FixMyStreet/Cobrand/UK.pm:303 perllib/FixMyStreet/Cobrand/UK.pm:315 msgid "%s, within %s ward" msgstr "%s, innefor bydel %s" -#: templates/web/default/admin/stats.html:5 -msgid "%sreports between %s and %s" -msgstr "%srapporter mellom %s og %s" +#: templates/web/default/email_sent.html:29 +msgid "(Don't worry — we'll hang on to your alert while you're checking your email.)" +msgstr "(Ta det med ro; vi tar vare på varselet ditt mens du sjekker e-posten din.)" + +#: templates/web/default/email_sent.html:25 +msgid "(Don't worry — we'll hang on to your problem report while you're checking your email.)" +msgstr "(Ta det med ro — vi tar vare på varselet ditt mens du sjekker e-posten din.)" -#: templates/web/default/email_sent.html:28 -msgid "(Don't worry — %s)" -msgstr "(Ingen grunn til bekymring — %s)" +#: templates/web/default/email_sent.html:27 +msgid "(Don't worry — we'll hang on to your update while you're checking your email.)" +msgstr "(Ta det med ro — 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:29 msgid "(Email in abuse table)" msgstr "(Epost i misbrukstabellen)" @@ -149,35 +122,42 @@ 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:23 +#: templates/web/fixmystreet/report/_item.html:22 +#: templates/web/zurich/report/_item.html:21 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:21 +#: templates/web/fixmystreet/report/_item.html:20 +#: templates/web/zurich/report/_item.html:19 msgid "(fixed)" msgstr "(løst)" #: templates/web/default/index.html:12 templates/web/default/index.html:8 -#: templates/web/fixmystreet/around/postcode_form.html:7 +#: templates/web/fixmystreet/around/intro.html:2 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:17 +#: templates/web/fixmystreet/report/_item.html:16 msgid "(not sent to council)" msgstr "(ikke rapportert til administrasjonen)" #: templates/web/default/report/new/fill_in_details_form.html:217 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:140 +#: templates/web/zurich/report/new/fill_in_details_form.html:100 msgid "(optional)" msgstr "(valgfritt)" -# Denne teksten er lite forklarende +#: templates/web/bromley/report/_item.html:15 #: templates/web/default/reports/_list-entry.html:2 -#: templates/web/fixmystreet/report/_item.html:16 +#: templates/web/fixmystreet/report/_item.html:15 msgid "(sent to both)" msgstr "(sendt til begge)" @@ -185,162 +165,143 @@ msgstr "(sendt til begge)" msgid "(we never show your email address or phone number)" msgstr "(vi viser aldri din e-postadresse eller telefonnummer)" -#: templates/web/default/report/display.html:209 +#: templates/web/default/report/update-form.html:158 msgid "(we never show your email)" msgstr "(vi viser aldri din e-postadresse)" -#: perllib/FixMyStreet/App/Controller/Admin.pm:284 -msgid "*unknown*" -msgstr "*ukjent*" - -#: perllib/FixMyStreet/App/Controller/Report/New.pm:629 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:655 -#: perllib/FixMyStreet/DB/Result/Problem.pm:345 +#: 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 "-- Velg en kategori --" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:609 -#: perllib/FixMyStreet/DB/Result/Problem.pm:351 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:618 +#: perllib/FixMyStreet/DB/Result/Problem.pm:385 msgid "-- Pick a property type --" msgstr "-- Velg en eiendomsstype --" -# Trenger kontekst for bedre oversettelse -#: templates/web/default/tokens/confirm_problem.html:14 -#: templates/web/default/tokens/confirm_problem.html:22 -msgid ". You can <a href=\"%s%s\">view the problem on this site</a>." -msgstr ". Du kan <a href=\"%s\">lese om problemet på denne siden</a>." +#: templates/web/emptyhomes/front/stats.html:5 +msgid "<big>%s</big> reports" +msgstr "<big>%s</big> rapporter" -#: templates/web/default/questionnaire/completed.html:20 +#: templates/web/default/admin/body-form.html:42 +#: templates/web/default/admin/body-form.html:43 msgid "" -"<p style=\"font-size:150%\">Thank you very much for filling in our " -"questionnaire; glad to hear it’s been fixed.</p>" +"<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 "" -"<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>" -# Er pledgebank noe vi vil sende uvitende, norske innbyggere til? +#: 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’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>" + #: templates/web/fiksgatami/questionnaire/completed-open.html:1 msgid "" "<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" -"suggestions: why not try <a href=\"http://www.norge.no/styresmakter/" -"\">writing\n" +"suggestions: why not try <a href=\"http://www.norge.no/styresmakter/\">writing\n" "direct to your councillor(s)</a> or, if it’s a problem that could be\n" "fixed by local people working together, why not\n" "<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" "</p>" msgstr "" -"<p style=\"font-size:150%\">Det var trist å høre dette. Vi har to forslag: " -"hva med å forsøke\n" +"<p style=\"font-size:150%\">Det var trist å høre dette. Vi har to forslag: hva med å forsøke\n" "<a href=\"http://www.norge.no/styresmakter/\">å skrive direkte til dine \n" "representanter</a>, eller hvis det er et problem som kan fikses\n" -"av folk i nabolaget som jobber sammen, hva med å <a href=\"http://www." -"pledgebank.com/new\">publisere en utfordring om å bidra</a>?</p>" +"av folk i nabolaget som jobber sammen, hva med å <a href=\"http://www.pledgebank.com/new\">publisere en utfordring om å bidra</a>?</p>" -#: templates/web/fixmystreet/questionnaire/completed-open.html:1 +#: templates/web/fixmystreet/questionnaire/completed-open.html:6 msgid "" "<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" -"suggestions: why not try <a href=\"http://www.writetothem.com/\">writing " -"direct\n" -"to your councillor(s)</a> or, if it’s a problem that could be fixed " -"by\n" +"suggestions: why not try <a href=\"http://www.writetothem.com/\">writing direct\n" +"to your councillor(s)</a> or, if it’s a problem that could be fixed by\n" "local people working together, why not\n" "<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" "</p>" msgstr "" -"<p style=\"font-size:150%\">Det var trist å høre dette. Vi har to forslag: " -"hva med å forsøke\n" -"<a href=\"%s\">å skrive direkte til dine representanter</a>, eller hvis det " -"er et problem som kan fikses\n" -"av folk i nabolaget som jobber sammen, hva med å <a href=\"http://www." -"pledgebank.com/new\">publisere en utfordring om å bidra</a>?</p>" - -#: templates/web/default/questionnaire/completed-open.html:1 +"<p style=\"font-size:150%\">Det var trist å høre dette. Vi har to forslag: hva med å forsøke\n" +"<a href=\"%s\">å skrive direkte til dine representanter</a>, eller hvis det er et problem som kan fikses\n" +"av folk i nabolaget som jobber sammen, hva med å <a href=\"http://www.pledgebank.com/new\">publisere en utfordring om å bidra</a>?</p>" + +#: templates/web/default/questionnaire/completed-open.html:6 msgid "" "<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" -"suggestions: why not try writing to your local representative or, if " -"it’s\n" +"suggestions: why not try writing to your local representative or, if it’s\n" "a problem that could be fixed by local people working together, why not\n" "<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" "</p>" msgstr "" -"<p style=\"font-size:150%%\">Det var trist å høre dette. Vi har to forslag: " -"hva med å forsøke\n" -"å skrive direkte til dine representanter, eller hvis det er et problem som " -"kan fikses\n" -"av folk i nabolaget som jobber sammen, hva med å <a href=\"http://www." -"pledgebank.com/new\">publisere en utfordring om å bidra</a>?</p>" +"<p style=\"font-size:150%%\">Det var trist å høre dette. Vi har to forslag: hva med å forsøke\n" +"å skrive direkte til dine representanter, eller hvis det er et problem som kan fikses\n" +"av folk i nabolaget som jobber sammen, hva med å <a href=\"http://www.pledgebank.com/new\">publisere en utfordring om å bidra</a>?</p>" #: templates/web/default/questionnaire/index.html:35 msgid "" -"<p>Getting empty homes back into use can be difficult, but by now a good " -"council\n" +"<p>Getting empty homes back into use can be difficult, but by now a good council\n" "will have made a lot of progress and reported what they have done on the\n" -"website. Even so properties can remain empty for many months if the owner " -"is\n" -"unwilling or the property is in very poor repair. If nothing has happened " -"or\n" -"you are not satisfied with the progress the council is making, now is the " -"right\n" -"time to say so. We think it’s a good idea to contact some other people " -"who\n" +"website. Even so properties can remain empty for many months if the owner is\n" +"unwilling or the property is in very poor repair. If nothing has happened or\n" +"you are not satisfied with the progress the council is making, now is the right\n" +"time to say so. We think it’s a good idea to contact some other people who\n" "may be able to help or put pressure on the council For advice on how to do\n" "this and other useful information please go to <a\n" -"href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www." -"emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +"href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" msgstr "" +"<p>Å få tomme boliger i bruk igjen kan være vanskelig, men nå bør en god administrasjon \n" +"ha gjort mye fremgang og rapportert hva de har gjort på nettstedet. Likevel kan tomter \n" +"forbli tome i mange måneder hvis eieren er uvillig eller eiendommen er i svært dårlig \n" +"stand. Hvis ingenting har skjedd eller du ikke er fornøyd med fremdriften administrasjon \n" +"er å gjøre, er nå den rette tid til å si det. Vi tror det er en god idé å kontakte noen andre \n" +"som kan være i stand til å hjelpe eller legge press på kommunen. For å få råd om hvordan \n" +"du gjør dette og annen nyttig informasjon kan du gå til <a\n" +" href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" #: templates/web/default/questionnaire/index.html:26 msgid "" -"<p>Getting empty homes back into use can be difficult. You shouldn’t " -"expect\n" -"the property to be back into use yet. But a good council will have started " -"work\n" +"<p>Getting empty homes back into use can be difficult. You shouldn’t expect\n" +"the property to be back into use yet. But a good council will have started work\n" "and should have reported what they have done on the website. If you are not\n" -"satisfied with progress or information from the council, now is the right " -"time\n" -"to say. You may also want to try contacting some other people who may be " -"able\n" +"satisfied with progress or information from the council, now is the right time\n" +"to say. You may also want to try contacting some other people who may be able\n" "to help. For advice on how to do this and other useful information please\n" -"go to <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://" -"www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +"go to <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" msgstr "" +"<p>Å få tomme boliger i bruk kan være vanskelig. Du burde ikke forvente at eiendommen \n" +"er klar til bruk enda. Men en god administrasjon bør ha begynt å arbeide, og burde \n" +"ha rapportert hva de har gjort på nettstedet. Hvis du ikke er fornøyd med fremdriften eller informasjonen fra administrasjon, er nå den rette tid til å si det. Vi tror det er en god idé å \n" +"kontakte noen andre som kan være i stand til å hjelpe eller legge press på kommunen. For å \n" +"få råd om hvordan du gjør dette og annen nyttig informasjon kan du gå til <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" #: templates/web/default/questionnaire/completed.html:9 msgid "" "<p>Thank you very much for filling in our questionnaire; if you\n" -"get some more information about the status of your problem, please come back " -"to the\n" +"get some more information about the status of your problem, please come back to the\n" "site and leave an update.</p>" msgstr "" "<p>Tusen takk for at du fylte ut vårt spørreskjema. Hvis du\n" -"får mer informasjon om status for ditt problem, vær så snill å kom tilbake " -"hit til\n" +"får mer informasjon om status for ditt problem, vær så snill å kom tilbake hit til\n" "nettstedet og legg igjen en oppdatering.</p>" -#: templates/web/default/around/display_location.html:70 -#: templates/web/default/around/display_location.html:72 -#: templates/web/emptyhomes/around/display_location.html:36 -#: templates/web/emptyhomes/around/display_location.html:38 -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/around/_report_banner.html:3 +#: templates/web/default/around/_report_banner.html:5 +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" -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:172 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:183 msgid "<strong>No</strong> Let me confirm my report by email" msgstr "<strong>Nei</strong> La meg bekrefte min rapport med e-post" -#: templates/web/fixmystreet/report/display.html:148 +#: templates/web/fixmystreet/report/update-form.html:110 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:46 +#: 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 "<strong>Nei</strong>, la meg logge inn med e-post:" @@ -352,33 +313,70 @@ msgstr "<strong>Nei</strong>, det gjør jeg ikke. La meg logge inn med e-post:" msgid "<strong>No</strong>, let me confirm my report by email:" msgstr "<strong>Nei</strong>, la meg bekrefte min rapport med e-post:" -#: templates/web/default/report/display.html:164 +#: templates/web/default/report/update-form.html:117 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/default/auth/general.html:37 -#: templates/web/default/report/display.html:142 #: templates/web/default/report/new/fill_in_details_form.html:140 -#: templates/web/fixmystreet/auth/general.html:32 -#: templates/web/fixmystreet/auth/general.html:34 -#: templates/web/fixmystreet/report/display.html:131 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:154 +#: templates/web/default/report/update-form.html:95 +#: templates/web/fixmystreet/auth/general.html:36 +#: templates/web/fixmystreet/auth/general.html:38 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:159 +#: templates/web/fixmystreet/report/update-form.html:87 msgid "<strong>Yes</strong> I have a password" msgstr "<strong>Ja</strong> Jeg har et passord" -#: templates/web/default/static/about.html:1 -#: templates/web/default/static/about.html:3 -#: templates/web/emptyhomes/header.html:29 -#: templates/web/emptyhomes/static/about.html:1 -#: templates/web/emptyhomes/static/about.html:3 +#: templates/web/default/static/about-en-gb.html:1 +#: templates/web/default/static/about-en-gb.html:3 +#: templates/web/emptyhomes/header.html:34 +#: templates/web/emptyhomes/static/about-cy.html:1 +#: templates/web/emptyhomes/static/about-cy.html:3 +#: templates/web/emptyhomes/static/about-en-gb.html:1 +#: templates/web/emptyhomes/static/about-en-gb.html:3 msgid "About us" msgstr "Om oss" -#: templates/web/default/admin/council_contacts.html:66 +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:81 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:39 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 +msgid "Action Scheduled" +msgstr "Handling planlagt" + +#: 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:88 +#: templates/web/zurich/admin/body.html:30 msgid "Add new category" msgstr "Legg til ny kategori" -#: templates/web/default/my/my.html:56 templates/web/fixmystreet/my/my.html:56 +#: templates/web/default/admin/users.html:45 +msgid "Add user" +msgstr "Legg til bruker" + +#: templates/web/default/my/my.html:56 templates/web/fixmystreet/my/my.html:60 msgid "Added %s" msgstr "La til %s" @@ -386,182 +384,222 @@ msgstr "La til %s" msgid "Again:" msgstr "Gjenta:" -#: templates/web/default/admin/timeline.html:37 +#: templates/web/default/admin/timeline.html:35 msgid "Alert %d created for %s, type %s, parameters %s / %s" msgstr "Varsel %d opprettet for %s, type %s, parameter %s / %s" -#: templates/web/default/admin/timeline.html:39 +#: templates/web/default/admin/timeline.html:37 msgid "Alert %d disabled (created %s)" msgstr "Varsel %d koblet ut (opprettet %s)" -#: templates/web/bromley/report/display.html:207 -#: templates/web/default/report/display.html:214 -#: templates/web/fixmystreet/report/display.html:189 +#: templates/web/bromley/report/display.html:209 +#: templates/web/default/report/update-form.html:163 +#: templates/web/fixmystreet/report/update-form.html:148 msgid "Alert me to future updates" msgstr "Send meg varsel ved fremtidige oppdateringer" -#: templates/web/default/admin/stats.html:5 -msgid "All" -msgstr "Alle" - #: templates/web/default/reports/index.html:3 +#: templates/web/fixmybarangay/reports/index.html:3 +#: templates/web/zurich/admin/stats.html:5 +#: templates/web/zurich/reports/index.html:15 msgid "All Reports" msgstr "Alle rapporter" -#: templates/web/default/admin/council_list.html:44 -msgid "All confirmed" -msgstr "Alle bekreftet" - #: 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/fixmystreet/footer.html:49 -#: templates/web/reading/footer.html:8 +#: 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 "Alle rapporter" +#: templates/web/default/admin/stats.html:5 +#: templates/web/zurich/admin/stats.html:8 +msgid "All reports between %s and %s" +msgstr "Alle rapporter mellom %s og %s" + #: templates/web/default/report/new/councils_text_some.html:2 msgid "All the information you provide here will be sent to" msgstr "All informasjonen du har lagt inn her vil bli sendt til" -#: templates/web/default/report/new/councils_text_all.html:10 -#: templates/web/default/report/new/councils_text_all.html:12 -msgid "" -"All the information you provide here will be sent to <strong>%s</strong> or " -"<strong>Roads Service</strong>." -msgstr "" -"All informasjon du legger inn her vil bli sendt til <strong>%s</strong>." +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:13 +msgid "All the information you provide here will be sent to <strong>%s</strong> or <strong>Roads Service</strong>." +msgstr "All informasjon du legger inn her vil bli sendt til <strong>%s</strong>." -#: templates/web/default/report/new/councils_text_all.html:3 -#: templates/web/default/report/new/councils_text_all.html:5 -msgid "" -"All the information you provide here will be sent to <strong>%s</strong> or " -"a relevant local body such as <strong>TfL</strong>, via the London Report-It " -"system." -msgstr "" -"All informasjonen du gir oss her vil bli sendt til <strong>%s</strong> eller " -"en relevant lokal etat som <strong>TfL</strong>, via systemet London Report-" -"It." +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_all.html:6 +msgid "All the information you provide here will be sent to <strong>%s</strong> or a relevant local body such as <strong>TfL</strong>, via the London Report-It system." +msgstr "All informasjonen du gir oss her vil bli sendt til <strong>%s</strong> eller en relevant lokal etat som <strong>TfL</strong>, via systemet London Report-It." #: templates/web/bromley/report/new/fill_in_details_form.html:4 #: templates/web/bromley/report/new/fill_in_details_form.html:6 -#: templates/web/default/report/new/councils_text_all.html:17 -#: templates/web/default/report/new/councils_text_all.html:19 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:20 #: templates/web/default/report/new/fill_in_details_form.html:11 #: templates/web/default/report/new/fill_in_details_form.html:13 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:8 -msgid "" -"All the information you provide here will be sent to <strong>%s</strong>." -msgstr "" -"All informasjonen du har lagt inn her vil bli sendt til <strong>%s</strong>." - #: templates/web/emptyhomes/report/new/councils_text_all.html:2 #: templates/web/emptyhomes/report/new/councils_text_all.html:4 -msgid "" -"All the information you provide here will be sent to <strong>%s</strong>. On " -"the site, we will show the subject and details of the problem, plus your " -"name if you give us permission." -msgstr "" -"All informasjonen du legger inn her vil bli sendt til <strong>%s</strong>.\n" -"På dette nettestedet vil vi vise emne og detaljer om problemet, inkludert " -"ditt navn\n" -"dersom du gir oss lov." +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:13 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:8 +msgid "All the information you provide here will be sent to <strong>%s</strong>." +msgstr "All informasjonen du har lagt inn her vil bli sendt til <strong>%s</strong>." #: templates/web/default/questionnaire/index.html:60 #: templates/web/fixmystreet/questionnaire/index.html:54 msgid "An update marked this problem as fixed." msgstr "En oppdatering markerte dette problemet som fikset." -#: templates/web/default/admin/list_flagged.html:15 -#: templates/web/default/admin/list_updates.html:10 -#: templates/web/default/admin/search_reports.html:18 +#: templates/web/default/admin/list_updates.html:32 +#: templates/web/default/admin/problem_row.html:20 msgid "Anonymous" msgstr "Anonym" -#: templates/web/default/admin/report_edit.html:26 -#: templates/web/default/admin/update_edit.html:14 +#: templates/web/default/admin/report_edit.html:62 +#: templates/web/default/admin/update_edit.html:23 msgid "Anonymous:" msgstr "Anonym:" #: templates/web/default/footer.html:26 -msgid "" -"Are you a <strong>developer</strong>? Would you like to contribute to " -"FixMyStreet?" -msgstr "" -"Er du en <strong>utvikler</strong>? Kunne du tenke deg å bidra til " -"FiksGataMi?" +msgid "Are you a <strong>developer</strong>? Would you like to contribute to FixMyStreet?" +msgstr "Er du en <strong>utvikler</strong>? Kunne du tenke deg å bidra til FiksGataMi?" -#: templates/web/fixmystreet/footer.html:17 +#: templates/web/fixmystreet/footer.html:16 +#: templates/web/stevenage/footer.html:17 msgid "Are you a developer?" msgstr "Er du en utvikler?" -#: templates/web/fixmystreet/footer.html:21 +#: templates/web/fixmystreet/footer.html:20 +#: templates/web/stevenage/footer.html:21 msgid "Are you from a council?" -msgstr "Der du fra den lokale administrasjonen?" +msgstr "Er du fra den lokale administrasjonen?" -#: templates/web/default/open311/index.html:17 -msgid "" -"At most %d requests are returned in each query. The returned requests are " -"ordered by requested_datetime, so to get all requests, do several searches " -"with rolling start_date and end_date." -msgstr "" -"På det meste blir %d forespørsler returnert i hver spørring. De returnerte " -"forespørslene blir sortert på requested_datetime, så en må gjøre flere søk " -"med rullerende start_date og end_date for å få tak i alle forespørslene." +#: 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: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:153 +msgid "Assign to external body:" +msgstr "Tildel til ekstern administrasjon:" + +#: 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:141 +#: templates/web/zurich/report/updates.html:11 +msgid "Assigned to %s" +msgstr "Tildelt %s" -#: templates/web/default/open311/index.html:9 +#: templates/web/default/open311/index.html:86 +msgid "At most %d requests are returned in each query. The returned requests are ordered by requested_datetime, so to get all requests, do several searches with rolling start_date and end_date." +msgstr "På det meste blir %d forespørsler returnert i hver spørring. De returnerte forespørslene blir sortert på requested_datetime, så en må gjøre flere søk med rullerende start_date og end_date for å få tak i alle forespørslene." + +#: templates/web/default/open311/index.html:78 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:334 +#: templates/web/zurich/report/_item.html:11 +msgid "Awaiting moderation" +msgstr "Avventer moderasjon" + +#: templates/web/default/js/translation_strings.html:32 +#: templates/web/oxfordshire/js/translation_strings.html:26 +msgid "Back" +msgstr "Tilbake" + #: templates/web/default/admin/report_blocks.html:11 msgid "Ban email address" msgstr "Bannlys epostadresse" +#: templates/web/fixmybarangay/report/new/notes.html:7 +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: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:17 +#: templates/web/default/admin/reports.html:14 +#: templates/web/default/admin/users.html:17 +msgid "Body" +msgstr "Administrasjon" + +#: templates/web/default/admin/user-form.html:32 +msgid "Body:" +msgstr "Administrasjon:" + #: templates/web/fiksgatami/footer.html:16 #: templates/web/fiksgatami/nn/footer.html:16 -msgid "" -"Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained " -"by <a href=\"http://www.nuug.no/\">NUUG</a>" -msgstr "" -"Bygget av <a href=\"http://www.mysociety.org/\">mySociety</a> og " -"vedlikeholdt av <a href=\"http://www.nuug.no/\">NUUG</a>" +msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained by <a href=\"http://www.nuug.no/\">NUUG</a>" +msgstr "Bygget av <a href=\"http://www.mysociety.org/\">mySociety</a> og vedlikeholdt av <a href=\"http://www.nuug.no/\">NUUG</a>" #: templates/web/default/admin/stats.html:80 msgid "By Date" msgstr "På dato" -#: templates/web/fixmystreet/around/display_location.html:80 -#: templates/web/fixmystreet/around/display_location.html:82 +#: templates/web/fixmystreet/around/_report_banner.html:10 +#: templates/web/fixmystreet/around/_report_banner.html:8 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>." +msgstr "Hvis du ikke kan se kartet, <a href='%s' rel='nofollow'>hopp over dette steget</a>." -#: perllib/FixMyStreet/App/Controller/Report/New.pm:632 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:657 #: templates/web/bromley/report/new/fill_in_details_form.html:68 -#: templates/web/default/admin/council_contacts.html:35 -#: templates/web/default/admin/index.html:36 -#: templates/web/default/admin/list_flagged.html:14 -#: templates/web/default/admin/search_reports.html:17 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:72 +#: 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 "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/council_contacts.html:72 -#: templates/web/default/admin/council_edit.html:23 -#: templates/web/default/admin/report_edit.html:25 +#: 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 "Kategori:" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:334 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366 msgid "Category: %s" msgstr "Kategori: %s" @@ -571,79 +609,118 @@ msgstr "Kategori: %s" msgid "Change Password" msgstr "Bytt passord" -#: templates/web/fixmystreet/around/display_location.html:72 -#: templates/web/fixmystreet/around/display_location.html:73 +#: 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" -#: templates/web/bromley/report/display.html:80 -#: templates/web/bromley/report/display.html:82 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:20 -#: templates/web/default/dashboard/index.html:136 -#: templates/web/default/dashboard/index.html:138 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:81 +#: 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 +#: templates/web/default/dashboard/index.html:142 +#: templates/web/default/dashboard/index.html:144 #: templates/web/fixmystreet/report/banner.html:15 -#: templates/web/fixmystreet/report/display.html:74 -#: templates/web/fixmystreet/report/display.html:76 +#: 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 "Lukket" -#: perllib/FixMyStreet/DB/Result/Problem.pm:690 +#: perllib/FixMyStreet/DB/Result/Problem.pm:744 msgid "Closed by council" msgstr "(ikke rapportert til administrasjonen)" -#: templates/web/default/my/my.html:32 templates/web/fixmystreet/my/my.html:32 +#: templates/web/default/my/my.html:32 templates/web/fixmystreet/my/my.html:36 msgid "Closed reports" msgstr "Fiksede rapporter" -#: templates/web/default/admin/problem_row.html:25 +#: templates/web/default/admin/problem_row.html:38 msgid "Closed:" msgstr "Lukket:" -#: templates/web/default/around/display_location.html:103 -#: templates/web/default/around/display_location.html:105 +#: templates/web/default/around/tabbed_lists.html:10 +#: templates/web/default/around/tabbed_lists.html:12 msgid "Closest nearby problems <small>(within %skm)</small>" msgstr "De nærmeste problemene <small>(innenfor %skm)</small>" -#: templates/web/default/admin/report_edit.html:15 +#: 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 "Koordinater:" -#: templates/web/default/admin/list_flagged.html:16 -#: templates/web/default/admin/list_updates.html:13 -#: templates/web/default/admin/search_reports.html:19 +#: templates/web/default/admin/list_updates.html:10 msgid "Cobrand" msgstr "Merkevaresamarbeid" -#: templates/web/default/admin/report_edit.html:39 -#: templates/web/default/admin/update_edit.html:41 +#: templates/web/default/admin/report_edit.html:75 +#: templates/web/default/admin/update_edit.html:50 msgid "Cobrand data:" msgstr "Merkevaresamarbeidsdata:" -#: templates/web/default/admin/report_edit.html:38 -#: templates/web/default/admin/update_edit.html:40 +#: templates/web/default/admin/report_edit.html:74 +#: templates/web/default/admin/update_edit.html:49 msgid "Cobrand:" msgstr "Merkevaresamarbeid:" -#: perllib/FixMyStreet/App/Controller/Admin.pm:358 -msgid "Configuration updated" -msgstr "Oppsett oppdatert" +#: templates/web/default/admin/config_page.html:1 +#, fuzzy +msgid "Configuration" +msgstr "Bekreftelse" -#: perllib/FixMyStreet/App/Controller/Admin.pm:372 +#: 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" -#: templates/web/default/admin/council_contacts.html:153 -msgid "Configure Open311" -msgstr "Sett opp Open311" - -#: templates/web/default/admin/council_contacts.html:105 -msgid "Configure Open311 integration" -msgstr "Sett opp Open311-integrasjon" +#: templates/web/default/admin/body_edit.html:47 +msgid "Configure Endpoint" +msgstr "Sett opp endepunkt" -#: templates/web/default/admin/council_contacts.html:42 +#: templates/web/default/admin/body.html:62 msgid "Confirm" msgstr "Bekreft" @@ -651,6 +728,11 @@ msgstr "Bekreft" msgid "Confirm account" msgstr "Bekreft konto" +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:177 +#: templates/web/fixmystreet/report/update-form.html:105 +msgid "Confirm by email below, providing a new password at that point. When you confirm, your password will be updated." +msgstr "Bekreft via epost under, og oppgi et nytt passord der. Når du har bekreftet vil passordet ditt bli oppdatert." + #: templates/web/default/questionnaire/creator_fixed.html:1 #: templates/web/default/tokens/confirm_problem.html:1 #: templates/web/default/tokens/confirm_problem.html:3 @@ -658,19 +740,28 @@ msgstr "Bekreft konto" #: templates/web/default/tokens/confirm_update.html:3 #: templates/web/emptyhomes/tokens/confirm_problem.html:1 #: templates/web/emptyhomes/tokens/confirm_problem.html:3 +#: templates/web/southampton/tokens/confirm_problem.html:1 +#: templates/web/southampton/tokens/confirm_problem.html:3 +#: templates/web/zurich/tokens/confirm_problem.html:1 +#: templates/web/zurich/tokens/confirm_problem.html:3 msgid "Confirmation" msgstr "Bekreftelse" -#: templates/web/default/admin/council_contacts.html:37 -#: templates/web/default/admin/council_contacts.html:82 -#: templates/web/default/admin/council_edit.html:28 -#: templates/web/default/admin/council_edit.html:43 -#: templates/web/default/admin/stats.html:5 +#: 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 "Bekreftet" -#: templates/web/default/admin/problem_row.html:23 -#: templates/web/default/admin/report_edit.html:34 +#: templates/web/default/admin/stats.html:5 +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:" msgstr "Bekreftet:" @@ -695,43 +786,38 @@ msgstr "Kontakt oss" #: templates/web/bromley/contact/submit.html:3 #: templates/web/default/contact/index.html:6 #: templates/web/default/contact/submit.html:3 -#: templates/web/fixmystreet/contact/index.html:7 +#: templates/web/fixmystreet/contact/index.html:19 msgid "Contact the team" msgstr "Kontakt prosjektgruppen" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1150 -#: perllib/FixMyStreet/App/Controller/Admin.pm:1178 +#: 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/admin/list_flagged.html:13 -#: templates/web/default/admin/list_updates.html:12 -#: templates/web/default/admin/search_reports.html:16 -#: templates/web/default/admin/search_users.html:14 +#: 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:9 msgid "Council" msgstr "Administrasjon" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1022 -#: templates/web/default/admin/council_list.html:1 -msgid "Council contacts" -msgstr "Administrasjonskontakter" - -#: templates/web/default/admin/council_contacts.html:1 -#: templates/web/default/admin/council_edit.html:1 +#: templates/web/default/admin/body.html:1 +#: templates/web/default/admin/body_edit.html:1 +#: templates/web/zurich/admin/body.html:1 msgid "Council contacts for %s" msgstr "Administrasjonskontakter for %s" #: templates/web/default/admin/stats.html:84 -#: templates/web/default/admin/user_edit.html:12 msgid "Council:" msgstr "Administrasjon:" -#: templates/web/default/admin/council_list.html:36 -msgid "Councils" -msgstr "Administrasjoner" - #: templates/web/default/admin/stats.html:12 #: templates/web/default/admin/stats.html:32 +#: templates/web/zurich/admin/stats.html:45 +#: templates/web/zurich/admin/stats.html:50 msgid "Count" msgstr "Antall" @@ -739,18 +825,23 @@ msgstr "Antall" msgid "Create a report" msgstr "Lag en rapport" -#: templates/web/default/admin/council_contacts.html:96 +#: 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_flagged.html:17 -#: templates/web/default/admin/list_updates.html:9 -#: templates/web/default/admin/search_reports.html:20 +#: 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 "Opprettet" -#: templates/web/default/admin/report_edit.html:33 -#: templates/web/default/admin/update_edit.html:42 +#: 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 "Opprettet:" @@ -758,40 +849,69 @@ msgstr "Opprettet:" msgid "Current state" msgstr "Gjeldende tilstand" -#: templates/web/default/admin/council_list.html:40 -msgid "Currently has 1+ deleted" -msgstr "For tiden har 1+ slettet" +#: 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" msgstr "Oversikt" -#: templates/web/default/admin/council_contacts.html:38 -#: templates/web/default/admin/council_contacts.html:85 -#: templates/web/default/admin/council_edit.html:29 -#: templates/web/default/admin/council_edit.html:44 +#: templates/web/zurich/admin/stats.html:35 +msgid "Dealt with by subdivision within 5 working days" +msgstr "Behandlet av underavdeling innen 5 arbeidsdager" + +#: 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 "Slettet" +#: templates/web/zurich/admin/index-dm.html:22 +#: templates/web/zurich/admin/index-sdm.html:20 +#: templates/web/zurich/admin/reports.html:12 +msgid "Description" +msgstr "Beskrivelse" + #: templates/web/bromley/report/new/fill_in_details_form.html:54 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:64 +#: 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 "Detaljer" -#: templates/web/default/admin/report_edit.html:14 +#: 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 "Detaljer:" -#: templates/web/default/admin/council_list.html:23 +#: templates/web/default/admin/body.html:57 +msgid "Devolved" +msgstr "Delegert" + +#: templates/web/default/admin/edit-league.html:8 msgid "Diligency prize league table" msgstr "Arbeidshester" +#: templates/web/fixmystreet/auth/general.html:30 +msgid "Do you have a FixMyBarangay password?" +msgstr "Har du et FixMyBarangay-passord?" + #: templates/web/default/auth/general.html:32 -#: templates/web/fixmystreet/auth/general.html:29 -#: templates/web/fixmystreet/report/display.html:128 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:150 +#: templates/web/fixmystreet/auth/general.html:32 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:155 +#: templates/web/fixmystreet/report/update-form.html:84 msgid "Do you have a FixMyStreet password?" msgstr "Har du et FiksGataMi-passord?" @@ -800,17 +920,47 @@ msgstr "Har du et FiksGataMi-passord?" msgid "Don’t know" msgstr "Vet ikke" -#: templates/web/default/admin/list_updates.html:35 -#: templates/web/default/admin/problem_row.html:29 -#: templates/web/default/admin/search_users.html:24 +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:82 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:47 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 +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:31 +#: templates/web/zurich/admin/problem_row.html:42 msgid "Edit" msgstr "Rediger" +#: templates/web/default/admin/body.html:189 +#: templates/web/zurich/admin/body.html:64 +msgid "Edit body details" +msgstr "Rediger detaljer for administrasjon" + #: templates/web/default/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:4 +#: templates/web/zurich/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit.html:5 msgid "Editing problem %d" msgstr "Rediger problem %d" #: templates/web/default/admin/update_edit.html:1 +#: templates/web/zurich/admin/update_edit.html:1 msgid "Editing update %d" msgstr "Redigerer oppdatering %d" @@ -818,59 +968,72 @@ msgstr "Redigerer oppdatering %d" msgid "Editing user %d" msgstr "Redigerer bruker %d" -#: templates/web/default/admin/council_edit.html:45 +#: templates/web/default/admin/body_edit.html:86 msgid "Editor" msgstr "Oppdatert av" -#: templates/web/bromley/report/display.html:126 -#: templates/web/default/admin/council_contacts.html:36 -#: templates/web/default/admin/council_edit.html:42 -#: templates/web/default/admin/list_flagged.html:12 -#: templates/web/default/admin/list_flagged.html:35 -#: templates/web/default/admin/list_updates.html:8 -#: templates/web/default/admin/search_abuse.html:11 -#: templates/web/default/admin/search_reports.html:15 -#: templates/web/default/admin/search_users.html:13 +#: 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/display.html:120 +#: 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 "E-post" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1126 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1286 msgid "Email added to abuse list" msgstr "Epost lagt til misbruksliste" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1123 +#: 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" -#: templates/web/default/around/display_location.html:85 +#: templates/web/default/around/_updates.html:5 msgid "Email me new local problems" msgstr "Send meg e-post om lokale problemer" -#: templates/web/default/report/display.html:30 +#: templates/web/default/report/display.html:34 msgid "Email me updates" msgstr "Send meg oppdateringer" -#: templates/web/default/admin/council_contacts.html:77 -#: templates/web/default/admin/council_edit.html:26 -#: templates/web/default/admin/report_edit.html:31 -#: templates/web/default/admin/update_edit.html:24 -#: templates/web/default/admin/user_edit.html:11 +#: 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:34 +#: 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 "E-post:" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:611 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318 +msgid "Email: %s" +msgstr "E-post: %s" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:620 msgid "Empty flat or maisonette" msgstr "Tom leilighet" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:610 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:619 msgid "Empty house or bungalow" msgstr "Tomt hus eller bungalow" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:613 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:622 msgid "Empty office or other commercial" msgstr "Tomt kontor eller forretningsbygg" @@ -878,32 +1041,44 @@ msgstr "Tomt kontor eller forretningsbygg" msgid "Empty property details form" msgstr "Tom eiendom detaljskjema" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:614 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:623 msgid "Empty pub or bar" msgstr "Tom pub eller bar" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:615 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:624 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/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:72 -msgid "End day:" +#: templates/web/default/admin/stats.html:70 +#, fuzzy +msgid "End Date:" msgstr "Slutt-dag:" -#: templates/web/default/admin/stats.html:71 -msgid "End month:" -msgstr "Sluttmåned:" +#: templates/web/default/admin/body-form.html:126 +msgid "Endpoint" +msgstr "Endepunkt" -#: templates/web/emptyhomes/index.html:40 -#: templates/web/emptyhomes/index.html:41 -msgid "Enter a nearby GB postcode, or street name and area" -msgstr "Skriv inn GB-postnummer i nærheten, eller veinavn og sted" +#: perllib/FixMyStreet/Cobrand/Zurich.pm:71 +msgid "Enter a Zürich street name" +msgstr "Skriv inn et veinavn i Zürich" -# Fra UK cobrand #: perllib/FixMyStreet/Cobrand/UK.pm:18 msgid "Enter a nearby UK postcode, or street name and area" msgstr "Skriv inn et britisk postnummer i nærheten, eller veinavn og sted" @@ -912,30 +1087,31 @@ msgstr "Skriv inn et britisk postnummer i nærheten, eller veinavn og sted" msgid "Enter a nearby postcode, or street name and area" msgstr "Skriv inn postnummer i nærheten, eller veinavn og sted" -# Kan "Oppgi" være bedre? #: templates/web/default/around/postcode_form.html:1 #: templates/web/default/around/postcode_form.html:2 #: templates/web/fixmystreet/around/postcode_form.html:10 #: templates/web/fixmystreet/around/postcode_form.html:11 +#: templates/web/seesomething/around/postcode_form.html:3 +#: templates/web/seesomething/around/postcode_form.html:4 msgid "Enter a nearby street name and area" msgstr "Skriv inn et veinavn og sted" #: templates/web/default/auth/general.html:64 -#: templates/web/default/report/display.html:171 #: templates/web/default/report/new/fill_in_details_form.html:169 +#: templates/web/default/report/update-form.html:124 msgid "Enter a new password:" msgstr "Skriv inn et nytt passord:" -#: templates/web/bromley/report/display.html:148 +#: templates/web/bromley/report/display.html:150 #: templates/web/bromley/report/new/fill_in_details_form.html:189 -#: templates/web/fixmystreet/auth/general.html:57 -#: templates/web/fixmystreet/report/display.html:160 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:200 +#: 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 "Skriv inn et nytt passord" -#: templates/web/default/index.html:33 templates/web/emptyhomes/index.html:58 -#: templates/web/fixmystreet/index.html:41 +#: templates/web/default/index-steps.html:26 msgid "Enter details of the problem" msgstr "Legg inn detaljer om problemet" @@ -949,29 +1125,34 @@ msgstr "Legg inn detaljer om problemet" msgid "Error" msgstr "Feil" -#: templates/web/default/admin/council_contacts.html:11 -#: templates/web/default/admin/council_edit.html:18 +#: templates/web/default/admin/body.html:11 +#: templates/web/default/admin/body_edit.html:18 msgid "Example postcode %s" msgstr "Eksempel-postnummer %s" -#: templates/web/default/open311/index.html:27 +#: templates/web/default/open311/index.html:96 msgid "Examples:" msgstr "Eksempler:" -#: templates/web/default/admin/report_edit.html:40 +#: templates/web/default/admin/report_edit.html:76 msgid "Extra data:" msgstr "Ekstra data:" #: templates/web/bromley/contact/submit.html:14 #: templates/web/default/contact/submit.html:15 -msgid "" -"Failed to send message. Please try again, or <a href=\"mailto:%s\">email " -"us</a>." -msgstr "" -"Klarte ikke å sende melding. Vennligst prøv igjen senere eller <a href=" -"\"mailto:%s\">send oss en e-post</a>." +msgid "Failed to send message. Please try again, or <a href=\"mailto:%s\">email us</a>." +msgstr "Klarte ikke å sende melding. Vennligst prøv igjen senere eller <a href=\"mailto:%s\">send oss en e-post</a>." + +#: templates/web/zurich/admin/index-dm.html:33 +#: templates/web/zurich/admin/index-sdm.html:30 +msgid "Filter report list" +msgstr "Filtrer rapportliste" + +#: templates/web/emptyhomes/front/stats.html:6 +msgid "Find latest local and national news" +msgstr "Finn nyeste lokale og nasjonale nyheter" -#: templates/web/bromley/report/display.html:189 +#: templates/web/bromley/report/display.html:191 #: templates/web/bromley/report/new/fill_in_details_form.html:113 #: templates/web/bromley/report/new/fill_in_details_form.html:160 msgid "First Name" @@ -982,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" @@ -991,122 +1176,133 @@ msgstr "Fiks<span id=\"my\">Gata</span>Mi" msgid "FixMyStreet" msgstr "FiksGataMi" -#: templates/web/default/admin/header.html:13 +#: templates/web/default/admin/header.html:10 msgid "FixMyStreet admin:" msgstr "FiksGataMi-administrator:" -#: templates/web/default/admin/header.html:3 -msgid "FixMyStreet administration" -msgstr "Fiksgatami-administrasjon" - #: templates/web/default/alert/index.html:11 msgid "" -"FixMyStreet has a variety of RSS feeds and email alerts for local problems, " -"including\n" -"alerts for all problems within a particular ward or council, or all " -"problems\n" +"FixMyStreet has a variety of RSS feeds and email alerts for local problems, including\n" +"alerts for all problems within a particular ward or council, or all problems\n" "within a certain distance of a particular location." msgstr "" -"Fiksgatami har ulike RSS-strømmer og e-postlister om lokale problemer, dette " -"inkluderer problemer meldt innenfor en bestemt bydel eller administrasjon, " -"eller et område med problemer\n" +"Fiksgatami har ulike RSS-strømmer og e-postlister om lokale problemer, dette inkluderer problemer meldt innenfor en bestemt bydel eller administrasjon, eller et område med problemer\n" "innen en angitt distanse fra en bestemt posisjon." #: templates/web/default/alert/_list.html:71 #: templates/web/fixmystreet/alert/_list.html:73 msgid "" "FixMyStreet sends different categories of problem\n" -"to the appropriate council, so problems within the boundary of a particular " -"council\n" -"might not match the problems sent to that council. For example, a graffiti " -"report\n" -"will be sent to the district council, so will appear in both of the " -"district\n" -"council’s alerts, but will only appear in the \"Within the boundary\" " -"alert\n" +"to the appropriate council, so problems within the boundary of a particular council\n" +"might not match the problems sent to that council. For example, a graffiti report\n" +"will be sent to the district council, so will appear in both of the district\n" +"council’s alerts, but will only appear in the \"Within the boundary\" alert\n" "for the county council." -msgstr "" -"FiksGataMi sender forskjellige kategorier problemer til forskjellige " -"administrasjoner, problemer som gjelder flere administrasjoner blir sendt " -"til alle de det gjelder." +msgstr "FiksGataMi sender forskjellige kategorier problemer til forskjellige administrasjoner, problemer som gjelder flere administrasjoner blir sendt til alle de det gjelder." #: templates/web/bromley/report/display.html:80 -#: templates/web/bromley/report/display.html:82 -#: templates/web/default/admin/index.html:36 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:20 -#: templates/web/default/dashboard/index.html:136 -#: templates/web/default/dashboard/index.html:138 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:81 +#: 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/display.html:74 -#: templates/web/fixmystreet/report/display.html:76 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:32 msgid "Fixed" msgstr "Løst" -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:43 msgid "Fixed - Council" msgstr "Løst - Administrasjon" -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:42 msgid "Fixed - User" msgstr "Løst - Bruker" -#: templates/web/default/my/my.html:27 templates/web/fixmystreet/my/my.html:27 +#: templates/web/default/my/my.html:27 templates/web/fixmystreet/my/my.html:31 msgid "Fixed reports" msgstr "Fiksede rapporter" -#: templates/web/default/admin/problem_row.html:24 +#: templates/web/default/admin/problem_row.html:37 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" -#: templates/web/default/admin/search_users.html:15 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1181 +#: templates/web/default/admin/users.html:19 msgid "Flagged" msgstr "Flagget:" -#: templates/web/default/admin/report_edit.html:42 -#: templates/web/default/admin/user_edit.html:18 +#: 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 "Flagget:" #: templates/web/default/reports/_ward-list.html:3 -#: templates/web/emptyhomes/reports/council.html:19 #: templates/web/fixmystreet/reports/_ward-list.html:4 msgid "Follow a ward link to view only reports within that ward." msgstr "Følg en bydelslenke for å kun se rapporter innenfor den bydelen." -#: templates/web/default/admin/report_edit.html:16 +#: templates/web/default/admin/report_edit.html:30 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?" +msgstr "Glemt passordet ditt?" + #: templates/web/default/faq/faq-en-gb.html:1 #: templates/web/emptyhomes/faq/faq-cy.html:1 #: templates/web/emptyhomes/faq/faq-en-gb.html:1 #: templates/web/fiksgatami/faq/faq-nb.html:1 #: templates/web/fiksgatami/nn/faq/faq-nn.html:1 +#: templates/web/fixmindelo/faq/faq-pt-cv.html:1 +#: templates/web/fixmybarangay/faq/faq-en-gb.html:1 #: templates/web/fixmystreet/faq/faq-en-gb.html:1 #: templates/web/fixmystreet/static/privacy.html:1 -#: templates/web/zurich/faq/faq-de.html:1 +#: templates/web/oxfordshire/faq/faq-en-gb.html:1 msgid "Frequently Asked Questions" msgstr "Ofte spurte spørsmål" -#: templates/web/emptyhomes/static/about.html:34 -msgid "Further information about our work on empty homes." -msgstr "Mer informasjon om vårt arbeid med tomme hjem" - -#: templates/web/default/open311/index.html:69 +#: templates/web/default/open311/index.html:138 msgid "GeoRSS on Google Maps" msgstr "GeoRSS på Google Maps" #: templates/web/bromley/report/display.html:30 -#: templates/web/fixmystreet/report/display.html:23 +#: templates/web/fixmystreet/around/_updates.html:3 +#: templates/web/fixmystreet/report/display.html:38 msgid "Get updates" msgstr "Få oppdateringer" @@ -1121,30 +1317,30 @@ msgid "Get updates of problems in this %s" msgstr "Få oppdateringer for problemer i denne %s" #: templates/web/default/alert/_list.html:83 +#: templates/web/fixmybarangay/alert/_list.html:28 #: templates/web/fixmystreet/alert/_list.html:82 msgid "Give me an RSS feed" msgstr "Gi meg en RSS-strøm" #: templates/web/default/alert/index.html:34 #: templates/web/default/around/postcode_form.html:8 -#: templates/web/emptyhomes/index.html:47 -#: templates/web/fixmystreet/around/postcode_form.html:18 +#: templates/web/fixmystreet/around/postcode_form.html:21 +#: templates/web/seesomething/around/postcode_form.html:10 +#: templates/web/zurich/admin/stats.html:26 msgid "Go" msgstr "Fortsett" -#: templates/web/default/admin/report_edit.html:41 +#: templates/web/default/admin/report_edit.html:77 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" #: templates/web/default/reports/index.html:8 -#: templates/web/emptyhomes/reports/index.html:5 msgid "Greyed-out lines are councils that no longer exist." -msgstr "" -"Linjer med grå bakgrunn er administrasjoner som ikke lenger eksisterer." +msgstr "Linjer med grå bakgrunn er administrasjoner som ikke lenger eksisterer." #: templates/web/default/questionnaire/index.html:61 #: templates/web/fixmystreet/questionnaire/index.html:55 @@ -1153,63 +1349,83 @@ msgstr "Har dette problemet blitt løst?" #: templates/web/default/questionnaire/index.html:74 #: templates/web/fixmystreet/questionnaire/index.html:68 -msgid "" -"Have you ever reported a problem to a council before, or is this your first " -"time?" -msgstr "" -"Har du rapportert et problem til en administrasjon før, eller er dette " -"første gangen?" +msgid "Have you ever reported a problem to a council before, or is this your first time?" +msgstr "Har du rapportert et problem til en administrasjon før, eller er dette første gangen?" #: 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:28 +#: templates/web/emptyhomes/header.html:33 #: templates/web/fiksgatami/footer.html:9 #: templates/web/fiksgatami/nn/footer.html:9 -#: templates/web/fixmystreet/footer.html:53 +#: 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 "Hjelp" #: templates/web/default/alert/_list.html:6 #: templates/web/fixmystreet/alert/_list.html:8 msgid "Here are the types of local problem alerts for ‘%s’." -msgstr "" -"Her er de forskjellige typene lokale problemvarsler for ‘%s’." +msgstr "Her er de forskjellige typene lokale problemvarsler for ‘%s’." #: templates/web/barnet/header.html:70 templates/web/bromley/header.html:64 #: templates/web/bromley/header.html:99 -#: templates/web/fixmybarangay/header.html.orig:42 -#: templates/web/fixmystreet/header.html:47 -#: templates/web/zurich/header.html:47 +#: templates/web/fixmybarangay/header.html:66 +#: templates/web/fixmystreet/header.html:50 +#: templates/web/oxfordshire/header.html:111 +#: templates/web/oxfordshire/header.html:47 +#: templates/web/stevenage/header.html:97 templates/web/zurich/footer.html:11 msgid "Hi %s" msgstr "Hei, %s" -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 -#: templates/web/default/admin/update_edit.html:19 +#: 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 "Skjul" -#: templates/web/default/around/display_location.html:58 -#: templates/web/fixmystreet/around/display_location.html:58 +#: templates/web/default/around/display_location.html:67 msgid "Hide old" msgstr "Skjul gamle" -#: templates/web/default/around/display_location.html:53 -#: templates/web/fixmystreet/around/display_location.html:54 +#: templates/web/default/around/display_location.html:62 msgid "Hide pins" msgstr "Skjul nåler" -#: templates/web/default/admin/council_edit.html:38 +#: templates/web/default/admin/body_edit.html:79 msgid "History" msgstr "Historie" -#: templates/web/default/index.html:28 templates/web/emptyhomes/index.html:53 -#: templates/web/fixmystreet/index.html:36 +#: templates/web/default/js/translation_strings.html:31 +#: templates/web/oxfordshire/js/translation_strings.html:25 +msgid "Home" +msgstr "Hjem" + +#: templates/web/default/index-steps.html:1 msgid "How to report a problem" msgstr "Hvordan rapportere et problem" -#: perllib/FixMyStreet/App/Controller/Admin.pm:637 +#: 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:733 msgid "I am afraid you cannot confirm unconfirmed reports." msgstr "Jeg er redd du ikke kan bekrefte ubekreftede rapporter." @@ -1218,70 +1434,101 @@ msgid "I'm afraid we couldn't locate your problem in the database.\n" msgstr "Jeg er redd vi ikke klarte å finne ditt problem i databasen.\n" #: perllib/FixMyStreet/App/Controller/Tokens.pm:44 -msgid "" -"I'm afraid we couldn't validate that token, as the report was made too long " -"ago." -msgstr "" -"Jeg er redd vi ikke kunne verifisere den referansen, da det er for lenge " -"siden rapporten ble laget." +msgid "I'm afraid we couldn't validate that token, as the report was made too long ago." +msgstr "Jeg er redd vi ikke kunne verifisere den referansen, da det er for lenge siden rapporten ble laget." -#: perllib/FixMyStreet/App/Controller/Tokens.pm:235 -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" +#: perllib/FixMyStreet/App/Controller/Tokens.pm:259 +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/list_flagged.html:9 -#: templates/web/default/admin/list_updates.html:5 -#: templates/web/default/admin/search_reports.html:12 +#: 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 "ID" -#: templates/web/default/report/new/councils_text_none.html:11 -#: templates/web/default/report/new/councils_text_none.html:12 +#: templates/web/default/admin/body-form.html:24 +#: templates/web/default/admin/body-form.html:25 msgid "" -"If you submit a problem here the subject and details of the problem will be " -"public, but the problem will <strong>not</strong> be reported to the council." +"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 "" -"Hvis du sender inn et problem hit, så vil emne og detaljer for problemet " -"være offentlig, men problemet vil <strong>ikke</strong> bli rapportert til " -"administrasjonen." -#: templates/web/emptyhomes/report/new/councils_text_none.html:9 +#: templates/web/default/admin/body.html:104 msgid "" -"If you submit a report here it will be left on the site, but not reported to " -"the council – please still leave your report, so that we can show to " -"the council the activity in their area." +"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 "" -"Hvis du sender inn en rapport her så vil den bli tilgjengelig her men ikke " -"rapportert til administrasjonen. – det er fint om du likevel sender " -"inn din rapport, slik at vi kan vise administrasjonen aktiviteten i deres " -"område." -#: templates/web/default/auth/token.html:23 -#: templates/web/default/email_sent.html:24 -msgid "" -"If you use web-based email or have 'junk mail' filters, you may wish to " -"check your bulk/spam mail folders: sometimes, our messages are marked that " -"way." -msgstr "" -"Hvis du bruker web-basert e-post eller har filtre for søppel-e-post på din e-" -"postkonto, kan du i noen tilfellet måtte se etter våre meldinger der." +#: 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" + +#: templates/web/default/email_sent.html:15 +msgid "If you do not, your problem will not be posted." +msgstr "Hvis du ikke gjør dette vil ikke din rapport bli publisert" + +#: templates/web/default/email_sent.html:17 +msgid "If you do not, your update will not be posted." +msgstr "Hvis du ikke gjør dette vil ikke din oppdatering bli publisert" -#: templates/web/default/questionnaire/index.html:83 +#: templates/web/default/report/new/councils_text_none.html:8 +#: templates/web/default/report/new/councils_text_none.html:9 +msgid "If you submit a problem here the subject and details of the problem will be public, but the problem will <strong>not</strong> be reported to the council." +msgstr "Hvis du sender inn et problem hit, så vil emne og detaljer for problemet være offentlig, men problemet vil <strong>ikke</strong> bli rapportert til administrasjonen." + +#: templates/web/emptyhomes/report/new/councils_text_none.html:9 +msgid "If you submit a report here it will be left on the site, but not reported to the council – please still leave your report, so that we can show to the council the activity in their area." +msgstr "Hvis du sender inn en rapport her så vil den bli tilgjengelig her men ikke rapportert til administrasjonen. – det er fint om du likevel sender inn din rapport, slik at vi kan vise administrasjonen aktiviteten i deres område." + +#: templates/web/default/auth/token.html:22 +#: templates/web/default/email_sent.html:9 +msgid "If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way." +msgstr "Hvis du bruker web-basert e-post eller har filtre for søppel-e-post på din e-postkonto, kan du i noen tilfellet måtte se etter våre meldinger der." + +#: templates/web/default/questionnaire/index.html:86 #: templates/web/fixmystreet/questionnaire/index.html:77 msgid "" "If you wish to leave a public update on the problem, please enter it here\n" "(please note it will not be sent to the council). For example, what was\n" "your experience of getting the problem fixed?" msgstr "" -"Hvis du ønsker å legge til en offentlig kommentar på problemet, legg den til " -"her\n" +"Hvis du ønsker å legge til en offentlig kommentar på problemet, legg den til her\n" "(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" @@ -1292,46 +1539,66 @@ msgstr "Ugyldig valg av feed" #: templates/web/bromley/report/display.html:80 #: templates/web/bromley/report/display.html:82 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:20 -#: templates/web/default/dashboard/index.html:136 -#: templates/web/default/dashboard/index.html:138 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:81 -#: templates/web/fixmystreet/report/display.html:74 -#: templates/web/fixmystreet/report/display.html:76 +#: 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:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 msgid "In Progress" msgstr "Under arbeid" -#: templates/web/default/open311/index.html:21 -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)." +#: 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: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 "Under arbeid" +#: templates/web/seesomething/report/new/fill_in_details_form.html:38 +msgid "Incident Category" +msgstr "Hendelseskategori" + +#: templates/web/zurich/admin/report_edit.html:163 +msgid "Include reporter personal details" +msgstr "Inkluder rapporørens personlige detaljer" + #: templates/web/default/admin/stats.html:76 msgid "Include unconfirmed reports" msgstr "Inkluder ubekreftede problemer" -#: perllib/FixMyStreet/App/Controller/Open311.pm:356 +#: perllib/FixMyStreet/App/Controller/Open311.pm:354 msgid "Incorrect has_photo value \"%s\"" msgstr "Feil has_photo-verdi \"%s\"" -#: perllib/FixMyStreet/App/Controller/Open311.pm:341 +#: 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 +msgid "Internal referral" +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:942 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1096 msgid "Invalid end date" msgstr "Ugyldig slutt-dato" @@ -1339,77 +1606,75 @@ msgstr "Ugyldig slutt-dato" msgid "Invalid format %s specified." msgstr "Ugyldig format %s oppgitt." -#: perllib/FixMyStreet/App/Controller/Admin.pm:932 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1092 msgid "Invalid start date" msgstr "Ugyldig startdato" #: templates/web/bromley/report/display.html:80 #: templates/web/bromley/report/display.html:81 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:19 -#: templates/web/default/dashboard/index.html:136 -#: templates/web/default/dashboard/index.html:137 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:80 -#: templates/web/fixmystreet/report/display.html:74 -#: templates/web/fixmystreet/report/display.html:75 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:37 +#: templates/web/default/dashboard/index.html:142 +#: templates/web/default/dashboard/index.html:143 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 msgid "Investigating" msgstr "Undersøkes" #: templates/web/emptyhomes/tokens/confirm_problem.html:12 #: templates/web/emptyhomes/tokens/confirm_problem.html:14 -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’t mean the council " -"isn’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 "" +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’t mean the council isn’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 "Det er verdt å merke seg imidlertid at prosessen kan være treg, spesielt hvis eiendommen er i svært dårlig reparasjon eller eieren ikke er villig til å handle. I de fleste tilfeller kan det ta seks måneder eller mer før du kan forvente å se noe endring og noen ganger kan det være betydelige hindre før en eiendom blir brakt tilbake i bruk. Dette betyr ikke at kommunen ikke gjør noe. Vi oppfordrer kommunene til å oppdatere nettsiden slik at du kan se hva som skjer. Det kan være en lang prosess, men det at du rapportere dine bekymringer om denne eiendommen til rådet er en verdifull første skritt." -#: templates/web/bromley/report/display.html:166 +#: 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/display.html:151 #: templates/web/default/report/new/fill_in_details_form.html:149 -#: templates/web/fixmystreet/auth/general.html:42 -#: templates/web/fixmystreet/report/display.html:144 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:167 +#: 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 "Husk min innlogging på denne datamaskinen" -#: templates/web/bromley/report/display.html:195 +#: templates/web/bromley/report/display.html:197 #: templates/web/bromley/report/new/fill_in_details_form.html:119 #: templates/web/bromley/report/new/fill_in_details_form.html:166 msgid "Last Name" msgstr "Etternavn" -#: templates/web/default/admin/council_contacts.html:39 +#: templates/web/default/admin/body.html:58 +#: templates/web/zurich/admin/body.html:15 msgid "Last editor" msgstr "Sist redigert av" -#: templates/web/default/admin/report_edit.html:36 +#: templates/web/default/admin/report_edit.html:72 msgid "Last update:" msgstr "Siste oppdatering:" -#: templates/web/default/admin/problem_row.html:26 +#: templates/web/default/admin/problem_row.html:39 msgid "Last update:" msgstr "Siste oppdatering:" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1028 -msgid "List Flagged" -msgstr "List flagget" +#: 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/council_contacts.html:14 -#: templates/web/default/admin/council_contacts.html:16 +#: templates/web/default/admin/body.html:14 +#: templates/web/default/admin/body.html:16 msgid "List all reported problems" msgstr "List alle rapporterte problemer" #: templates/web/bromley/report/new/fill_in_details_form.html:69 #: templates/web/default/report/new/fill_in_details_form.html:68 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:73 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:51 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:75 +#: templates/web/seesomething/report/new/fill_in_details_form.html:25 +#: templates/web/zurich/report/new/fill_in_details_form.html:51 msgid "Loading..." msgstr "Laster..." @@ -1424,6 +1689,8 @@ msgstr "Laster..." #: templates/web/default/tokens/confirm_alert.html:3 #: templates/web/emptyhomes/alert/index.html:1 #: templates/web/emptyhomes/alert/index.html:3 +#: templates/web/fixmybarangay/alert/index.html:1 +#: templates/web/fixmybarangay/alert/index.html:3 #: templates/web/fixmystreet/alert/updates.html:1 msgid "Local RSS feeds and email alerts" msgstr "Lokal RSS-strøm og e-postvarsel" @@ -1439,27 +1706,33 @@ 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/fixmystreet/footer.html:51 -#: templates/web/reading/footer.html:9 +#: 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 "Lokale varsler" -#: templates/web/default/index.html:32 templates/web/emptyhomes/index.html:57 -#: templates/web/fixmystreet/index.html:40 +#: templates/web/default/index-steps.html:25 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:43 +#: templates/web/oxfordshire/js/translation_strings.html:37 +msgid "MAP" +msgstr "KART" + #: perllib/FixMyStreet/Map/OSM.pm:44 -msgid "" -"Map © <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>" +msgid "Map © <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 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 "" -"Kart © <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/fixmystreet/contact/index.html:86 +#: templates/web/fixmystreet/contact/index.html:98 msgid "Message" msgstr "Melding" @@ -1471,89 +1744,107 @@ msgstr "Melding:" msgid "Missing jurisdiction_id" msgstr "Mangler jurisdiction_id" +#: templates/web/zurich/admin/stats.html:34 +msgid "Moderated by division within one working day" +msgstr "Moderert av avdeling innen en arbeidsdag" + #: templates/web/default/admin/stats.html:11 msgid "Month" msgstr "Måned" -#: templates/web/default/report/display.html:26 +#: templates/web/default/report/display.html:30 msgid "More problems nearby" msgstr "Flere problemer i nærheten" -#: templates/web/default/admin/list_flagged.html:11 -#: templates/web/default/admin/list_flagged.html:34 +#: 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/search_reports.html:14 -#: templates/web/default/admin/search_users.html:12 +#: 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:10 +#: templates/web/emptyhomes/reports/index.html:9 #: templates/web/fiksgatami/nn/reports/index.html:9 #: templates/web/fiksgatami/reports/index.html:9 -#: templates/web/fixmystreet/auth/general.html:52 -#: templates/web/fixmystreet/report/display.html:177 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:117 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:176 +#: 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 "Navn" -#: templates/web/default/admin/report_edit.html:30 -#: templates/web/default/admin/update_edit.html:23 -#: templates/web/default/admin/user_edit.html:10 +#: templates/web/seesomething/report/new/fill_in_details_form.html:74 +msgid "Name (optional)" +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: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:317 +msgid "Name: %s" +msgstr "Navn: %s" + #: templates/web/fiksgatami/footer.html:3 #: templates/web/fiksgatami/nn/footer.html:3 #: templates/web/reading/footer.html:4 msgid "Navigation" msgstr "Navigasjon" -#: perllib/FixMyStreet/Geocode/OSM.pm:159 -msgid "" -"Nearest named road to the pin placed on the map (automatically generated " -"using OpenStreetMap): %s%s" -msgstr "" -"Nærmeste navngitte vei til nålen plassert på kartet (automatisk generert ved " -"hjelp av OpenStreetMap): %s%s" +#: perllib/FixMyStreet/Geocode/OSM.pm:166 +msgid "Nearest named road to the pin placed on the map (automatically generated using OpenStreetMap): %s%s" +msgstr "Nærmeste navngitte vei til nålen plassert på kartet (automatisk generert ved hjelp av OpenStreetMap): %s%s" -#: perllib/FixMyStreet/Cobrand/UK.pm:161 -msgid "" -"Nearest postcode to the pin placed on the map (automatically generated): %s " -"(%sm away)" -msgstr "" -"Nærmeste postnummer til nålen plassert på kartet (automatisk generert): %s " -"(%sm unna)" +#: perllib/FixMyStreet/Cobrand/UK.pm:148 +msgid "Nearest postcode to the pin placed on the map (automatically generated): %s (%sm away)" +msgstr "Nærmeste postnummer til nålen plassert på kartet (automatisk generert): %s (%sm unna)" -#: perllib/FixMyStreet/Cobrand/Default.pm:404 -#: perllib/FixMyStreet/Cobrand/Default.pm:444 -msgid "" -"Nearest road to the pin placed on the map (automatically generated by Bing " -"Maps): %s" -msgstr "" -"Nærmeste vei til nålen plassert på kartet (automatisk generert ved hjelp av " -"Bing Maps): %s" +#: perllib/FixMyStreet/Cobrand/Default.pm:418 +#: perllib/FixMyStreet/Cobrand/Default.pm:458 +msgid "Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s" +msgstr "Nærmeste vei til nålen plassert på kartet (automatisk generert ved hjelp av Bing Maps): %s" -#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:245 +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:273 msgid "" -"Nearest road to the pin placed on the map (automatically generated by Bing " -"Maps): %s\n" +"Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s\n" "\n" msgstr "" -"Nærmeste vei til nålen plassert på kartet (automatisk generert ved hjelp av " -"Bing Maps) er: %s\n" +"Nærmeste vei til nålen plassert på kartet (automatisk generert ved hjelp av Bing Maps) er: %s\n" "\n" -#: templates/web/default/email_sent.html:20 +#: templates/web/default/email_sent.html:3 msgid "Nearly Done! Now check your email..." msgstr "Nesten ferdig! Nå må du sjekke e-posten din..." #: templates/web/default/reports/index.html:16 +#: templates/web/fixmybarangay/reports/index.html:16 msgid "New <br>problems" msgstr "Nye <br>problemer" -#: perllib/FixMyStreet/App/Controller/Admin.pm:314 +#: perllib/FixMyStreet/App/Controller/Admin.pm:264 +msgid "New body added" +msgstr "Ny administrasjon lagt til" + +#: 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" @@ -1562,7 +1853,7 @@ msgstr "Nye lokale problemer på FiksGataMi" msgid "New local reports on reportemptyhomes.com" msgstr "Nye lokale rapporter på reportemptyhomes.com" -#: templates/web/emptyhomes/reports/index.html:11 +#: templates/web/emptyhomes/reports/index.html:10 #: templates/web/fiksgatami/nn/reports/index.html:10 #: templates/web/fiksgatami/reports/index.html:10 msgid "New problems" @@ -1588,11 +1879,13 @@ msgstr "Nye problemer i {{COUNCIL}} på FiksGataMi" msgid "New problems within {{NAME}}'s boundary on FixMyStreet" msgstr "Nye rapporter innenfor grensen til {{NAME}} på FiksGataMi" +#: templates/web/zurich/admin/index-sdm.html:4 +msgid "New reports" +msgstr "Nye rapporter" + #: db/alert_types_eha.pl:23 -msgid "" -"New reports for {{COUNCIL}} within {{WARD}} ward on reportemptyhomes.com" -msgstr "" -"Nye rapporter for {{COUNCIL}} innenfor {{WARD}} bydel på reportemptyhomes.com" +msgid "New reports for {{COUNCIL}} within {{WARD}} ward on reportemptyhomes.com" +msgstr "Nye rapporter for {{COUNCIL}} innenfor {{WARD}} bydel på reportemptyhomes.com" #: db/alert_types_eha.pl:5 msgid "New reports on reportemptyhomes.com" @@ -1614,54 +1907,68 @@ msgstr "Nye rapporter innenfor grensen til {{NAME}} på reportemptyhomes.com" msgid "New state" msgstr "Ny tilstand" +#: templates/web/zurich/admin/report_edit-sdm.html:61 +msgid "New update:" +msgstr "Ny oppdatering:" + #: templates/web/fiksgatami/front/news.html:9 #: templates/web/fiksgatami/nn/front/news.html:9 #: templates/web/fixmystreet/front/news.html:8 msgid "New!" msgstr "Ny!" -#: templates/web/default/admin/council_contacts.html:48 -#: templates/web/default/admin/council_contacts.html:49 -#: templates/web/default/admin/council_edit.html:4 -#: templates/web/default/admin/list_updates.html:30 -#: templates/web/default/admin/list_updates.html:31 +#: templates/web/default/pagination.html:13 +msgid "Next" +msgstr "Neste" + +#: 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/problem_row.html:19 -#: templates/web/default/admin/report_edit.html:28 -#: templates/web/default/admin/report_edit.html:41 -#: templates/web/default/admin/update_edit.html:16 +#: 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:107 +#: 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 "Nei" +#: templates/web/default/admin/user-form.html:33 +msgid "No body" +msgstr "Ingen administrasjon" + #: templates/web/default/admin/stats.html:85 -#: templates/web/default/admin/user_edit.html:13 msgid "No council" msgstr "Ingen administrasjon" -#: perllib/FixMyStreet/DB/Result/Problem.pm:328 +#: perllib/FixMyStreet/DB/Result/Problem.pm:362 msgid "No council selected" msgstr "Ingen administrasjon er valgt" -#: templates/web/default/admin/council_list.html:32 +#: 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/list_flagged.html:26 -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/list_flagged.html:47 -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/default/admin/council_list.html:38 -msgid "No info at all" -msgstr "Helt uten informasjon" +#: templates/web/zurich/admin/report_edit-sdm.html:68 +msgid "No further updates" +msgstr "Ingen flere oppdateringer" #: templates/web/default/around/around_map_list_items.html:17 #: templates/web/fixmystreet/around/around_map_list_items.html:8 @@ -1673,46 +1980,86 @@ msgstr "Ingen problemer ble funnet." msgid "No problems have been reported yet." msgstr "Ingen problemer er rapportert" -#: templates/web/default/admin/council_list.html:5 -#: templates/web/default/admin/report_edit.html:16 +#: 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:73 +msgid "Non Public" +msgstr "Ikke-offentlig" + +#: 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 "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 +#: 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 "Ikke ansvarlig" + +#: templates/web/zurich/admin/report_edit-sdm.html:21 +msgid "Not for my subdivision" +msgstr "Ikke for min underavdeling" + #: templates/web/default/admin/questionnaire.html:6 msgid "Not reported before" msgstr "Ikke rapportert tidligere" -#: templates/web/default/report/_main.html:11 -#: templates/web/emptyhomes/report/display.html:24 -#: templates/web/fixmystreet/report/_main.html:13 +#: templates/web/default/report/_main.html:10 msgid "Not reported to council" msgstr "Ikke rapportert til administrasjonen" -#: templates/web/default/admin/council_contacts.html:40 -#: templates/web/default/admin/council_edit.html:46 +#: 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 "Merk" #: templates/web/default/admin/stats.html:51 -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." +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/council_contacts.html:89 -#: templates/web/default/admin/council_edit.html:31 +#: 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 "Merk:" -#: templates/web/default/open311/index.html:6 +#: templates/web/default/open311/index.html:75 msgid "Note: <strong>%s</strong>" msgstr "Note: <strong>%d</strong>" -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:149 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:154 msgid "Now to submit your report…" msgstr "På tide å sende din rapport…" @@ -1720,21 +2067,26 @@ msgstr "På tide å sende din rapport…" msgid "Now to submit your report… do you have a FixMyStreet password?" msgstr "På tide å sende din rapport… har du et FiksGataMi-passord?" -#: templates/web/fixmystreet/report/display.html:127 +#: templates/web/fixmystreet/report/update-form.html:83 msgid "Now to submit your update…" msgstr "På tide å registrere din oppdatering…" -#: templates/web/default/report/display.html:133 +#: templates/web/default/report/update-form.html:86 msgid "Now to submit your update… do you have a FixMyStreet password?" -msgstr "" -"På tide å registrere din oppdatering… har du et FiksGataMi-passord?" +msgstr "På tide å registrere din oppdatering… har du et FiksGataMi-passord?" + +#: templates/web/default/js/translation_strings.html:42 +#: templates/web/oxfordshire/js/translation_strings.html:36 +msgid "OK" +msgstr "OK" -#: templates/web/default/report/display.html:21 +#: templates/web/default/report/display.html:24 #: templates/web/default/report/update.html:16 msgid "Offensive? Unsuitable? Tell us" msgstr "Støtende? Upassende? Gi oss beskjed" #: templates/web/default/reports/index.html:18 +#: templates/web/fixmybarangay/reports/index.html:18 msgid "Old / unknown <br>problems" msgstr "Gamle / ukjente <br>problemer" @@ -1748,47 +2100,57 @@ msgid "Old state" msgstr "Gammel tilstand" #: templates/web/default/reports/index.html:20 +#: templates/web/fixmybarangay/reports/index.html:20 msgid "Older <br>fixed" msgstr "Eldre <br>løste" #: templates/web/default/reports/index.html:17 +#: templates/web/fixmybarangay/reports/index.html:17 msgid "Older <br>problems" msgstr "Eldre <br>problemer" -#: templates/web/emptyhomes/reports/index.html:14 #: templates/web/fiksgatami/nn/reports/index.html:14 #: templates/web/fiksgatami/reports/index.html:14 msgid "Older fixed" msgstr "Eldre løste" -#: templates/web/emptyhomes/reports/index.html:12 +#: templates/web/emptyhomes/reports/index.html:11 #: templates/web/fiksgatami/nn/reports/index.html:11 #: templates/web/fiksgatami/reports/index.html:11 msgid "Older problems" msgstr "Eldre problemer" +#: perllib/FixMyStreet/Cobrand/Zurich.pm:115 #: templates/web/bromley/report/display.html:80 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/update_edit.html:19 -#: templates/web/default/dashboard/index.html:136 -#: templates/web/default/report/display.html:79 -#: templates/web/fixmystreet/report/display.html:74 +#: 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 "Åpen" -#: templates/web/default/my/my.html:22 templates/web/fixmystreet/my/my.html:22 +#: templates/web/default/my/my.html:22 templates/web/fixmystreet/my/my.html:26 msgid "Open reports" msgstr "Åpne rapporter" -#: templates/web/default/open311/index.html:3 +#: templates/web/default/open311/index.html:72 msgid "Open311 API for the mySociety FixMyStreet server" msgstr "Open311-API for mySocietys FiksGataMi-tjener" -#: templates/web/default/open311/index.html:13 +#: templates/web/default/open311/index.html:82 msgid "Open311 initiative web page" msgstr "Open311-initiativets nettside" -#: templates/web/default/open311/index.html:14 +#: templates/web/default/open311/index.html:83 msgid "Open311 specification" msgstr "Open311-spesifikasjon" @@ -1799,34 +2161,26 @@ msgstr "Eller problemer meldt til:" #: templates/web/default/alert/_list.html:33 #: templates/web/fixmystreet/alert/_list.html:36 -msgid "" -"Or you can subscribe to an alert based upon what ward or council you’" -"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:655 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:656 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:999 -#: perllib/FixMyStreet/DB/Result/Problem.pm:497 -#: perllib/FixMyStreet/DB/Result/Problem.pm:507 -#: perllib/FixMyStreet/DB/Result/Problem.pm:517 -#: perllib/FixMyStreet/DB/Result/Problem.pm:529 -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:329 -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:338 +msgid "Or you can subscribe to an alert based upon what ward or council you’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: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 "Annet" #: templates/web/default/footer.html:27 -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>." +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:11 +#: templates/web/default/admin/list_updates.html:8 msgid "Owner" msgstr "Eier" @@ -1835,16 +2189,23 @@ msgstr "Eier" msgid "Page Not Found" msgstr "Fant ikke siden" -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 +#: templates/web/default/admin/body-form.html:31 +#: templates/web/zurich/admin/body-form.html:14 +msgid "Parent" +msgstr "Forelder" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:51 msgid "Partial" msgstr "Delvis" -#: templates/web/bromley/report/display.html:145 +#: templates/web/bromley/report/display.html:147 #: templates/web/bromley/report/new/fill_in_details_form.html:186 -#: templates/web/fixmystreet/auth/general.html:55 -#: templates/web/fixmystreet/report/display.html:157 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:197 +#: 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 "Passord (valgfritt)" @@ -1852,29 +2213,50 @@ msgstr "Passord (valgfritt)" msgid "Password:" msgstr "Passord:" +#: 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:133 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:194 +#: 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 "Telefonnummer (valgfritt)" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:260 -#: templates/web/default/admin/report_edit.html:32 +#: 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 "Telefon:" -#: templates/web/bromley/report/display.html:109 +#: templates/web/bromley/report/display.html:111 #: templates/web/bromley/report/new/fill_in_details_form.html:104 -#: templates/web/fixmystreet/report/display.html:103 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:108 +#: 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 "Bilde" -#: templates/web/default/questionnaire/index.html:95 -#: templates/web/default/report/display.html:109 +#: templates/web/default/questionnaire/index.html:99 #: templates/web/default/report/new/fill_in_details_form.html:102 +#: templates/web/default/report/update-form.html:62 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:99 #: templates/web/fixmystreet/questionnaire/index.html:90 msgid "Photo:" msgstr "Bilde:" @@ -1883,29 +2265,30 @@ msgstr "Bilde:" msgid "Photos of recent nearby reports" msgstr "Bilder av nye problemer i nærheten" -#: templates/web/bromley/report/display.html:80 -#: templates/web/bromley/report/display.html:81 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:19 -#: templates/web/default/dashboard/index.html:136 -#: templates/web/default/dashboard/index.html:137 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:80 -#: templates/web/fixmystreet/report/display.html:74 -#: templates/web/fixmystreet/report/display.html:75 +#: 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" + +#: 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 "Planlagt" #: templates/web/fixmystreet/questionnaire/index.html:44 -msgid "" -"Please <a class=\"tab_link\" href=\"#report\">take a look</a> at the updates " -"that have been left." -msgstr "" -"Vennligst <a class=\"tab_link\" href=\"#report\">se over</a> oppdateringene " -"som har blitt lagt inn." +msgid "Please <a class=\"tab_link\" href=\"#report\">take a look</a> at the updates that have been left." +msgstr "Vennligst <a class=\"tab_link\" href=\"#report\">se over</a> oppdateringene som har blitt lagt inn." #: templates/web/default/report/new/notes.html:6 -#: templates/web/fixmystreet/report/new/notes.html:5 +#: templates/web/fixmystreet/report/new/notes.html:6 +#: templates/web/oxfordshire/report/new/notes.html:5 msgid "Please be polite, concise and to the point." msgstr "Vær høflig, poengtert og kortfattet." @@ -1914,7 +2297,7 @@ msgstr "Vær høflig, poengtert og kortfattet." msgid "Please check the passwords and try again" msgstr "Vennligst sjekk passordene og prøv igjen" -#: templates/web/default/auth/token.html:17 +#: templates/web/default/auth/token.html:14 msgid "Please check your email" msgstr "Vennligst sjekk e-posten du oppgav" @@ -1922,71 +2305,87 @@ msgstr "Vennligst sjekk e-posten du oppgav" #: templates/web/default/auth/general.html:8 #: templates/web/fixmystreet/auth/general.html:15 #: templates/web/fixmystreet/auth/general.html:9 +#: templates/web/seesomething/auth/general.html:15 +#: templates/web/seesomething/auth/general.html:9 +#: templates/web/zurich/auth/general.html:3 +#: templates/web/zurich/auth/general.html:9 msgid "Please check your email address is correct" msgstr "Vennligst sjekk at du har skrevet en gyldig e-postadresse" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:819 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:826 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:845 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:884 -#: perllib/FixMyStreet/DB/Result/Problem.pm:347 -#: templates/web/default/js/validation_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 "Velg en kategori" -#: perllib/FixMyStreet/DB/Result/Problem.pm:353 +#: perllib/FixMyStreet/DB/Result/Problem.pm:387 msgid "Please choose a property type" msgstr "Velg en type egenskap" +#: templates/web/seesomething/js/translation_strings.html:6 +msgid "Please choose a transport category" +msgstr "Vennligst velg en transportkategori" + +#: templates/web/seesomething/js/translation_strings.html:7 +msgid "Please choose an incident category" +msgstr "Vennligst velg en hendelseskategori" + #: 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”" -msgstr "" -"Vennligst beskriv den nøyaktige posisjonen til problemet. For eksempel: «2 " -"madrasser dumpet utenfor Jernbanegata 19»" +msgid "Please describe the exact location of the report. Example: “2 dumped mattresses outside Number 19 Stockwell Close”" +msgstr "Vennligst beskriv den nøyaktige posisjonen til problemet. For eksempel: «2 madrasser dumpet utenfor Jernbanegata 19»" #: templates/web/default/contact/blurb.html:2 msgid "" -"Please do <strong>not</strong> report problems through this form; messages " -"go to\n" +"Please do <strong>not</strong> report problems through this form; messages go to\n" "the team behind FixMyStreet, not a council. To report a problem,\n" "please <a href=\"/\">go to the front page</a> and follow the instructions." msgstr "" -"Vennligst <strong>ikke</strong> rapporter feil gjennom denne siden; " -"meldingene går til\n" -"gruppen som står bak FiksGataMi, og ikke til en administrasjon. For å " -"rapportere et problem,\n" +"Vennligst <strong>ikke</strong> rapporter feil gjennom denne siden; meldingene går til\n" +"gruppen som står bak FiksGataMi, og ikke til en administrasjon. For å rapportere et problem,\n" "vennligst <a href=\"/\">gå til forsiden</a> og følg instruksjonene." #: templates/web/default/report/new/notes.html:7 -#: templates/web/fixmystreet/report/new/notes.html:6 -msgid "" -"Please do not be abusive — abusing your council devalues the service " -"for all users." -msgstr "" -"Ikke vær ufin — å kjefte på din administrasjon skader verdien av " -"tjenesten for alle brukerne." +#: templates/web/fixmystreet/report/new/notes.html:7 +#: templates/web/oxfordshire/report/new/notes.html:6 +msgid "Please do not be abusive — abusing your council devalues the service for all users." +msgstr "Ikke vær ufin — å kjefte på din administrasjon skader verdien av tjenesten for alle brukerne." + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:46 +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:146 -#: templates/web/default/js/validation_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 "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:322 -#: templates/web/default/js/validation_strings.html:3 +#: 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/DB/Result/User.pm:104 -#: templates/web/default/js/validation_strings.html:12 -#: templates/web/default/js/validation_strings.html:16 +#: 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 "Legg til en gyldig e-post" @@ -1995,172 +2394,186 @@ 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:325 -#: templates/web/default/js/validation_strings.html:4 +#: 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" #: perllib/FixMyStreet/App/Controller/Contact.pm:96 -#: perllib/FixMyStreet/DB/Result/User.pm:101 +#: 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/validation_strings.html:11 -#: templates/web/default/js/validation_strings.html:15 +#: 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 "Legg inn din e-post" #: templates/web/bromley/report/new/fill_in_details_form.html:149 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:146 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:151 +#: templates/web/seesomething/report/new/fill_in_details_form.html:85 +#: templates/web/zurich/report/new/fill_in_details_form.html:92 msgid "Please enter your email address" msgstr "Vennligst tast inn din e-postadresse" -#: templates/web/default/js/validation_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:340 -#: templates/web/default/js/validation_strings.html:7 -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/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:143 -#: perllib/FixMyStreet/DB/Result/Problem.pm:333 -#: perllib/FixMyStreet/DB/Result/User.pm:97 -#: templates/web/default/js/validation_strings.html:6 +#: 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/validation_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/validation_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" +#: 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 "Du kan også <a href=\"%s\">logge inn igjen</a> eller gå tilbake til <a href=\"/\">framsiden</a>." + #: templates/web/emptyhomes/report/new/fill_in_details_text.html:1 msgid "" "Please fill in details of the empty property below, saying what type of\n" "property it is e.g. an empty home, block of flats, office etc. Tell us\n" -"something about its condition and any other information you feel is " -"relevant.\n" -"There is no need for you to give the exact address. Please be polite, " -"concise\n" -"and to the point; writing your message entirely in block capitals makes it " -"hard\n" +"something about its condition and any other information you feel is relevant.\n" +"There is no need for you to give the exact address. Please be polite, concise\n" +"and to the point; writing your message entirely in block capitals makes it hard\n" "to read, as does a lack of punctuation." msgstr "" +"Vennligst fyll ut detaljer om den tomme eiendomen under, si hva slags\n" +"eiendom er det eksempel et tomt hjem, boligblokk, kontor etc. Fortell oss\n" +"noe om dets tilstand og annen informasjon du føler er relevant.\n" +"Det er ikke nødvendig for å gi den nøyaktige adressen. Vær høflig, konsis\n" +"og rett på sak, skriver du meldingen i bare store bokstaver blir den vanskelig\n" +"å lese, det samme gjør manglende tegnsetting." #: templates/web/default/report/new/fill_in_details_text.html:1 #: templates/web/default/report/new/fill_in_details_text.html:11 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:10 #: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 -#: templates/web/fixmystreet/report/new/fill_in_details_text.html:11 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:8 msgid "Please fill in details of the problem below." msgstr "Vennligst fyll ut detaljer om problemet under" +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:3 +msgid "" +"Please fill in details of the problem below. Leave as much detail as you can, \n" +"and if possible describe the exact location of\n" +"the problem (e.g. if there is a streetlight number or road name)." +msgstr "" +"Vennligst fyll inn detaljene om problemet under. Legg inn så mange detaljer som du kan, og om mulig beskriv eksakt plassering for problemet (f.eks. på en vegg), hva det er, hvor lenge det har\n" +"vært der, osv." + #: templates/web/default/report/new/fill_in_details_text.html:1 #: templates/web/default/report/new/fill_in_details_text.html:3 msgid "" "Please fill in details of the problem below. The council won't be able\n" -"to help unless you leave as much detail as you can, so please describe the " -"exact location of\n" -"the problem (e.g. on a wall), what it is, how long it has been there, a " -"description (and a\n" +"to help unless you leave as much detail as you can, so please describe the exact location of\n" +"the problem (e.g. on a wall), what it is, how long it has been there, a description (and a\n" "photo of the problem if you have one), etc." msgstr "" -"Vennligst fyll inn detaljene om problemet under. Administrasjonen vil ikke " -"være i stand\n" +"Vennligst fyll inn detaljene om problemet under. Administrasjonen vil ikke være i stand\n" "til å hjelpe med mindre du legger inn så mange detaljer som du kan. Beskriv\n" -"eksakt plassering for problemet (f.eks. på en vegg), hva det er, hvor lenge " -"det har\n" +"eksakt plassering for problemet (f.eks. på en vegg), hva det er, hvor lenge det har\n" "vært der, en beskrivelse (og et bilde av problemet hvis du har et), osv." -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:68 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:70 +#: templates/web/seesomething/report/new/fill_in_details_form.html:20 +#: templates/web/zurich/report/new/fill_in_details_form.html:46 msgid "Please fill in details of the problem." msgstr "Vennligst fyll ut detaljer om problemet." #: templates/web/bromley/report/new/fill_in_details_form.html:28 #: templates/web/default/report/new/fill_in_details_form.html:27 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:34 -msgid "" -"Please fill in the form below with details of the problem, and describe the " -"location as precisely as possible in the details box." +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:26 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:35 +#: templates/web/zurich/report/new/fill_in_details_form.html:20 +msgid "Please fill in the form below with details of the problem, and describe the location as precisely as possible in the details box." msgstr "" "Vennligst fyll inn skjemaet under med detaljene om problemet,\n" "og beskriv plasseringen så nøyaktig som mulig i boksen for detaljer." -#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:241 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:243 msgid "Please indicate whether you'd like to receive another questionnaire" msgstr "Vennligst indiker om du ønsker å motta et nytt spørreskjema" #: templates/web/fixmystreet/report/updates-sidebar-notes.html:3 msgid "Please note that updates are not sent to the council." -msgstr "" -"Vær oppmerksom på at oppdaterginger ikke blir videresendt til " -"administrasjonen." +msgstr "Vær oppmerksom på at oppdaterginger ikke blir videresendt til administrasjonen." -#: templates/web/default/report/display.html:56 -msgid "" -"Please note that updates are not sent to the council. If you leave your name " -"it will be public. Your information will only be used in accordance with our " -"<a href=\"/faq#privacy\">privacy policy</a>" -msgstr "" -"Vennligst merk at oppdateringer ikke blir sendt til administrasjonen. Hvis " -"du legger igjen navnet ditt så vil det være offentlig tilgjengelig. Din " -"informasjon vil kun bli brukt i henhold til våre <a href=\"/faq#privacy" -"\">personvernpolicy</a>" +#: templates/web/default/report/update-form.html:7 +msgid "Please note that updates are not sent to the council. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgstr "Vennligst merk at oppdateringer ikke blir sendt til administrasjonen. Hvis du legger igjen navnet ditt så vil det være offentlig tilgjengelig. Din informasjon vil kun bli brukt i henhold til våre <a href=\"/faq#privacy\">personvernpolicy</a>" #: templates/web/barnet/report/updates-sidebar-notes.html:1 -msgid "" -"Please note that updates are not sent to the relevant department. If you " -"leave your name it will be public. Your information will only be used in " -"accordance with our <a href=\"/faq#privacy\">privacy policy</a>" -msgstr "" -"Vennligst merk at oppdateringer ikke vil bli sendt til administrasjonen. " -"Dersom du legger igjen navnet ditt vil det være synlig for alle. Din " -"informasjon vil kun bli brukt i henhold til våre <a href=\"/faq#privacy" -"\">personvernsregler</a>" +msgid "Please note that updates are not sent to the relevant department. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgstr "Vennligst merk at oppdateringer ikke vil bli sendt til administrasjonen. Dersom du legger igjen navnet ditt vil det være synlig for alle. Din informasjon vil kun bli brukt i henhold til våre <a href=\"/faq#privacy\">personvernsregler</a>" #: templates/web/bromley/report/new/fill_in_details_form.html:23 #: templates/web/default/report/new/fill_in_details_form.html:5 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:25 -msgid "" -"Please note your report has <strong>not yet been sent</strong>. Choose a " -"category and add further information below, then submit." -msgstr "" -"Merk at din rapport <strong>ennå ikke er sendt</strong. Velg en kategori og " -"legg til mer informasjon under før du sender inn." +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:5 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:26 +#: templates/web/zurich/report/new/fill_in_details_form.html:11 +msgid "Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit." +msgstr "Merk at din rapport <strong>ennå ikke er sendt</strong. Velg en kategori og legg til mer informasjon under før du sender inn." #: templates/web/default/report/new/notes.html:1 +#: templates/web/fixmybarangay/report/new/notes.html:1 #: templates/web/fixmystreet/report/new/notes.html:1 +#: templates/web/oxfordshire/report/new/notes.html:1 msgid "Please note:" msgstr "Vennligst merk deg:" -#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:244 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:246 msgid "Please provide some explanation as to why you're reopening this report" -msgstr "" -"Vennligst bidra med en forklaring for hvorfor du gjenåpner denne " -"problemrapporten" +msgstr "Vennligst bidra med en forklaring for hvorfor du gjenåpner denne problemrapporten" -#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:251 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:253 msgid "Please provide some text as well as a photo" msgstr "Vennligst bidra med litt tekst i tilegg til et bilde" #: perllib/FixMyStreet/App/Controller/Questionnaire.pm:116 -#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:237 -msgid "" -"Please say whether you've ever reported a problem to your council before" -msgstr "" -"Vennligst opplys om du har rapportert et problem til din administrasjon " -"tidligere" +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:239 +msgid "Please say whether you've ever reported a problem to your council before" +msgstr "Vennligst opplys om du har rapportert et problem til din administrasjon tidligere" #: perllib/FixMyStreet/App/Controller/Alert.pm:80 msgid "Please select the feed you want" @@ -2170,7 +2583,7 @@ msgstr "Velg den kilden du ønsker" msgid "Please select the type of alert you want" msgstr "Vennligst velg hvilken type varsel du ønsker" -#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:233 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:235 msgid "Please state whether or not the problem has been fixed" msgstr "Vennligs oppgi om dette problemet er blitt fikset eller ikke" @@ -2191,57 +2604,72 @@ msgid "Please write a message" msgstr "Skriv inn en melding" #: templates/web/bromley/report/display.html:70 -#: templates/web/fixmystreet/report/display.html:69 +#: templates/web/fixmystreet/report/update-form.html:23 msgid "Please write your update here" msgstr "Vennligst skriv inn din oppdatering her" -#: templates/web/bromley/report/display.html:121 -#: templates/web/bromley/report/display.html:149 -#: templates/web/bromley/report/display.html:161 +#: templates/web/bromley/report/display.html:123 +#: templates/web/bromley/report/display.html:151 +#: templates/web/bromley/report/display.html:163 #: templates/web/default/contact/index.html:93 -#: templates/web/default/report/display.html:119 -#: templates/web/default/report/display.html:156 -#: templates/web/default/report/display.html:178 -#: templates/web/fixmystreet/contact/index.html:93 -#: templates/web/fixmystreet/report/display.html:115 -#: templates/web/fixmystreet/report/display.html:139 -#: templates/web/fixmystreet/report/display.html:161 +#: templates/web/default/report/update-form.html:109 +#: templates/web/default/report/update-form.html:131 +#: templates/web/default/report/update-form.html:72 +#: templates/web/fixmystreet/contact/index.html:105 +#: templates/web/fixmystreet/report/update-form.html:123 +#: templates/web/fixmystreet/report/update-form.html:71 +#: templates/web/fixmystreet/report/update-form.html:95 msgid "Post" msgstr "Send inn" -#: templates/web/default/report/updates.html:14 +#: templates/web/default/report/updates.html:15 msgid "Posted anonymously at %s" msgstr "Publisert anonymt %s" -#: templates/web/default/report/updates.html:21 +#: templates/web/default/report/updates.html:22 msgid "Posted by %s (<strong>%s</strong>) at %s" msgstr "Lagt inn av %s (<strong>%s</strong>) %s" -#: templates/web/default/report/updates.html:23 +#: templates/web/default/report/updates.html:24 msgid "Posted by %s at %s" msgstr "Sendt inn av %s %s" +#: templates/web/default/pagination.html:7 +msgid "Previous" +msgstr "Forrige" + +#: 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 "Privat" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:108 +msgid "Private information (not shown on site)" +msgstr "Privat informasjon (vises ikke på websiden)" + #: templates/web/default/maps/openlayers.html:85 msgid "Problem" msgstr "Problem" -#: templates/web/default/admin/timeline.html:24 +#: templates/web/default/admin/timeline.html:22 msgid "Problem %d created" msgstr "Problem %d opprettet" -#: templates/web/default/admin/timeline.html:26 +#: templates/web/default/admin/timeline.html:24 msgid "Problem %s confirmed" msgstr "Problem %s bekreftet" -#: templates/web/default/admin/timeline.html:28 +#: templates/web/default/admin/timeline.html:26 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:819 +#: perllib/FixMyStreet/App/Controller/Admin.pm:950 msgid "Problem marked as open." msgstr "Problem markert som åpent." @@ -2249,21 +2677,22 @@ msgstr "Problem markert som åpent." msgid "Problem state change based on survey results" msgstr "Problemtilstandsendring basert på spørreundersøkelsesresultater" -#: templates/web/default/admin/list_flagged.html:5 +#: templates/web/default/admin/flagged.html:10 msgid "Problems" msgstr "Problemer" -#: templates/web/default/around/display_location.html:81 +#: templates/web/default/around/_updates.html:1 msgid "Problems in this area" msgstr "Problemer i dette området" #: templates/web/bromley/report/display.html:31 -#: templates/web/fixmystreet/around/display_location.html:98 -#: templates/web/fixmystreet/report/display.html:24 +#: templates/web/fixmystreet/around/tabbed_lists.html:4 +#: templates/web/fixmystreet/report/display.html:46 msgid "Problems nearby" msgstr "Problemer i nærheten" -#: templates/web/fixmystreet/around/display_location.html:97 +#: templates/web/fixmystreet/around/tabbed_lists.html:3 +#: templates/web/fixmystreet/report/display.html:44 msgid "Problems on the map" msgstr "Problemer på kartet" @@ -2276,69 +2705,91 @@ msgstr "Problemer nylig rapportert fikset på FiksGataMi" msgid "Problems within %.1fkm of this location" msgstr "Problemer innenfor %.1fkm av denne posisjonen" -#: perllib/FixMyStreet/Cobrand/Default.pm:609 -#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:95 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:162 -#: perllib/FixMyStreet/Cobrand/UK.pm:240 +#: perllib/FixMyStreet/Cobrand/Default.pm:626 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:109 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:155 +#: perllib/FixMyStreet/Cobrand/UK.pm:228 msgid "Problems within %s" msgstr "Problemer innenfor %s" -#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:103 -#: perllib/FixMyStreet/Cobrand/UK.pm:254 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:117 +#: perllib/FixMyStreet/Cobrand/UK.pm:242 msgid "Problems within %s ward" msgstr "Problemer innenfor %s bydel" -#: templates/web/default/reports/council.html:0 -#: templates/web/default/reports/council.html:29 +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:24 msgid "Problems within %s, FixMyStreet" msgstr "Problemer innenfor %s, Fiksgatami" #: templates/web/default/alert/_list.html:40 +#: templates/web/fixmybarangay/alert/_list.html:13 #: templates/web/fixmystreet/alert/_list.html:42 msgid "Problems within the boundary of:" msgstr "Problemer innenfor grensene av:" #: db/alert_types_eha.pl:8 msgid "Properties recently reported as put back to use on reportemptyhomes.com" -msgstr "" -"Eiendommer nylig rapportert som gått tilbake i bruk på reportemptyhomes.com" +msgstr "Eiendommer nylig rapportert som gått tilbake i bruk på reportemptyhomes.com" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:617 +#: templates/web/default/admin/report_edit.html:32 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:115 +msgid "Property address:" +msgstr "Eiendomsadresse:" + +#: templates/web/default/report/new/category.html:8 msgid "Property type:" msgstr "Type egenskap:" #: templates/web/bromley/report/new/fill_in_details_form.html:52 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:62 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:64 msgid "Provide a title" msgstr "Oppgi en tittel" #: templates/web/bromley/report/display.html:57 -#: templates/web/default/report/display.html:51 -#: templates/web/fixmystreet/report/display.html:50 +#: templates/web/default/report/update-form.html:3 +#: templates/web/fixmystreet/report/update-form.html:4 msgid "Provide an update" msgstr "Bidra med en oppdatering" -#: 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." +#: templates/web/fixmystreet/auth/general.html:53 +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." -#: templates/web/bromley/report/display.html:142 -#: templates/web/default/report/display.html:175 +#: 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." +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/bromley/report/display.html:144 #: templates/web/default/report/new/fill_in_details_form.html:173 -#: templates/web/fixmystreet/report/display.html:154 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:191 -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/report/update-form.html:128 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:202 +#: templates/web/fixmystreet/report/update-form.html:116 +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:60 +#: templates/web/default/admin/body.html:73 +msgid "Public" +msgstr "Offentlig" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:44 +msgid "Public information (shown on site)" +msgstr "Offentlig informasjon (vises på websiden)" + +#: 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:80 +#: templates/web/zurich/admin/stats.html:38 +msgid "Publish photo" +msgstr "Publiser bilde" + +#: templates/web/zurich/admin/report_edit.html:222 +msgid "Publish the response" +msgstr "Publiser svar" #: templates/web/default/questionnaire/completed.html:1 #: templates/web/default/questionnaire/completed.html:2 @@ -2352,15 +2803,15 @@ msgstr "" msgid "Questionnaire" msgstr "Spørreskjema" -#: templates/web/default/admin/timeline.html:32 +#: templates/web/default/admin/timeline.html:30 msgid "Questionnaire %d answered for problem %d, %s to %s" msgstr "Spørreskjema %d fylt inn for problem %d, %s til %s" -#: templates/web/default/admin/timeline.html:30 +#: templates/web/default/admin/timeline.html:28 msgid "Questionnaire %d sent for problem %d" msgstr "Spørreskjema %d sendt for problem %d" -#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:190 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:192 msgid "Questionnaire filled in by problem reporter" msgstr "Spørreskjema fylt inn av feilrapportøren" @@ -2368,33 +2819,31 @@ msgstr "Spørreskjema fylt inn av feilrapportøren" #: templates/web/default/alert/_list.html:21 #: templates/web/default/around/display_location.html:1 #: templates/web/default/around/display_location.html:3 -#: templates/web/default/report/display.html:42 +#: templates/web/default/report/display.html:46 #: templates/web/default/reports/_rss.html:1 #: templates/web/fixmystreet/alert/_list.html:22 #: templates/web/fixmystreet/alert/updates.html:9 -#: templates/web/fixmystreet/around/display_location.html:1 -#: templates/web/fixmystreet/around/display_location.html:3 -#: templates/web/fixmystreet/report/display.html:30 +#: templates/web/fixmystreet/report/display.html:61 msgid "RSS feed" msgstr "RSS-strøm" -#: perllib/FixMyStreet/Cobrand/UK.pm:283 perllib/FixMyStreet/Cobrand/UK.pm:295 +#: perllib/FixMyStreet/Cobrand/UK.pm:271 perllib/FixMyStreet/Cobrand/UK.pm:283 msgid "RSS feed for %s" msgstr "RSS-strøm for %s" -#: perllib/FixMyStreet/Cobrand/UK.pm:289 perllib/FixMyStreet/Cobrand/UK.pm:301 +#: perllib/FixMyStreet/Cobrand/UK.pm:277 perllib/FixMyStreet/Cobrand/UK.pm:289 msgid "RSS feed for %s ward, %s" msgstr "RSS-strøm for %s bydel, %s" -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:178 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:186 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:196 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:204 -#: perllib/FixMyStreet/Cobrand/UK.pm:309 perllib/FixMyStreet/Cobrand/UK.pm:321 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:171 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:179 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:189 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:197 +#: perllib/FixMyStreet/Cobrand/UK.pm:297 perllib/FixMyStreet/Cobrand/UK.pm:309 msgid "RSS feed of %s" msgstr "RSS-strøm fra %s" -#: perllib/FixMyStreet/Cobrand/UK.pm:314 perllib/FixMyStreet/Cobrand/UK.pm:326 +#: perllib/FixMyStreet/Cobrand/UK.pm:302 perllib/FixMyStreet/Cobrand/UK.pm:314 msgid "RSS feed of %s, within %s ward" msgstr "RSS-strøm av %s, innenfor %s bydel" @@ -2407,111 +2856,115 @@ msgstr "RSS-strøm med problemer i nærheten" msgid "RSS feed of problems in this %s" msgstr "RSS-strøm for problemer i denne %s" -#: perllib/FixMyStreet/Cobrand/Default.pm:610 -#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:96 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:161 -#: perllib/FixMyStreet/Cobrand/UK.pm:247 +#: perllib/FixMyStreet/Cobrand/Default.pm:627 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:110 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:154 +#: perllib/FixMyStreet/Cobrand/UK.pm:235 msgid "RSS feed of problems within %s" msgstr "RSS-strøm for problemer innenfor %s" -#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:102 -#: perllib/FixMyStreet/Cobrand/UK.pm:253 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:116 +#: perllib/FixMyStreet/Cobrand/UK.pm:241 msgid "RSS feed of problems within %s ward" msgstr "RSS-strøm for problemer innenfor %s bydel" #: templates/web/default/around/display_location.html:1 #: templates/web/default/around/display_location.html:4 -#: templates/web/fixmystreet/around/display_location.html:1 -#: templates/web/fixmystreet/around/display_location.html:4 msgid "RSS feed of recent local problems" msgstr "RSS-strøm med nylige lokale problemer" #: templates/web/bromley/report/display.html:37 -#: templates/web/default/report/display.html:42 +#: templates/web/default/report/display.html:46 #: templates/web/fixmystreet/alert/updates.html:9 -#: templates/web/fixmystreet/report/display.html:30 +#: templates/web/fixmystreet/report/display.html:61 msgid "RSS feed of updates to this problem" msgstr "RSS-strøm med oppdateringer for dette problemet" #: templates/web/bromley/report/display.html:39 #: templates/web/default/alert/updates.html:9 -#: templates/web/default/report/display.html:33 +#: templates/web/default/report/display.html:37 #: templates/web/fixmystreet/alert/updates.html:14 -#: templates/web/fixmystreet/report/display.html:32 +#: templates/web/fixmystreet/report/display.html:63 msgid "Receive email when updates are left on this problem." msgstr "Motta e-post når det er oppdateringer på dette problemet" #: templates/web/default/around/display_location.html:0 -#: templates/web/default/around/display_location.html:34 -#: templates/web/fixmystreet/around/display_location.html:0 -#: templates/web/fixmystreet/around/display_location.html:34 +#: templates/web/default/around/display_location.html:32 msgid "Recent local problems, FixMyStreet" msgstr "Nylige lokale problemer, FiksGataMi." #: templates/web/default/reports/index.html:19 +#: templates/web/fixmybarangay/reports/index.html:19 msgid "Recently <br>fixed" msgstr "Nylig løste <br>problemer" -#: templates/web/emptyhomes/reports/index.html:13 #: templates/web/fiksgatami/nn/reports/index.html:13 #: templates/web/fiksgatami/reports/index.html:13 msgid "Recently fixed" msgstr "Nylig løste problemer" -#: templates/web/default/index.html:50 templates/web/fixmystreet/index.html:62 +#: templates/web/default/index.html:35 templates/web/emptyhomes/index.html:24 +#: templates/web/fixmystreet/index.html:45 msgid "Recently reported problems" msgstr "Nylig meldte problemer" #: templates/web/default/report/new/notes.html:9 -#: templates/web/fixmystreet/report/new/notes.html:8 -msgid "" -"Remember that FixMyStreet is primarily for reporting physical problems that " -"can be fixed. If your problem is not appropriate for submission via this " -"site remember that you can contact your council directly using their own " -"website." -msgstr "" -"Husk at FiksGataMi primert er laget for å rapportere fysiske problemer som " -"kan bli fikset. Hvis ditt problem ikke er egnet for å sende inn via denne " -"tjenesten, husk at du kan kontakte administrasjonen direkte via deres egen " -"nettside." +#: templates/web/fixmystreet/report/new/notes.html:10 +msgid "Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site remember that you can contact your council directly using their own website." +msgstr "Husk at FiksGataMi primert er laget for å rapportere fysiske problemer som kan bli fikset. Hvis ditt problem ikke er egnet for å sende inn via denne tjenesten, husk at du kan kontakte administrasjonen direkte via deres egen nettside." + +#: templates/web/fixmybarangay/report/new/notes.html:9 +msgid "Remember that, for the pilot project, FixMyBarangay is only for reporting potholes and streetlights in bgy. Luz or Basak San Nicolas." +msgstr "Husk at for testprosjektet er FixMyBarangay kun veihull og manglende lys i distriktene Luz eller Basak San Nicolas." #: templates/web/default/admin/report_blocks.html:16 msgid "Remove flag" msgstr "Fjern flagg" -#: templates/web/default/admin/report_edit.html:53 -#: templates/web/default/admin/update_edit.html:48 +#: templates/web/default/admin/report_edit.html:89 +#: templates/web/default/admin/update_edit.html:57 +#: templates/web/zurich/admin/update_edit.html:35 msgid "Remove photo (can't be undone!)" msgstr "Fjern bilde (kan ikke gjøres om!)" -#: templates/web/emptyhomes/header.html:10 +#: templates/web/emptyhomes/header.html:12 msgid "Report Empty Homes" msgstr "Rapporter tomme hjem" #: templates/web/barnet/footer.html:16 templates/web/bromley/footer.html:17 -#: templates/web/default/footer.html:7 templates/web/emptyhomes/header.html:27 +#: 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:45 +#: 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 "Rapporter et problem" #: templates/web/bromley/report/display.html:28 -#: templates/web/fixmystreet/report/display.html:22 +#: templates/web/fixmystreet/report/display.html:35 msgid "Report abuse" msgstr "Rapporter misbruk" -#: templates/web/emptyhomes/index.html:37 -msgid "Report empty properties" -msgstr "Rapporter tomme hjem" +#: templates/web/default/report_created.html:1 +#: templates/web/default/report_created.html:3 +#: templates/web/seesomething/report_created.html:0 +#: templates/web/seesomething/report_created.html:8 +msgid "Report created" +msgstr "Rapport opprettet" -#: perllib/FixMyStreet/App/Controller/Rss.pm:277 +#: perllib/FixMyStreet/App/Controller/Rss.pm:295 msgid "Report on %s" msgstr "Rapport på %s" -#: templates/web/default/index.html:15 -#: templates/web/fixmystreet/around/postcode_form.html:6 +#: templates/web/default/index.html:14 templates/web/emptyhomes/index.html:5 +#: templates/web/fixmystreet/around/intro.html:1 +#: templates/web/stevenage/around/intro.html:1 +#: templates/web/zurich/around/intro.html:1 msgid "Report, view, or discuss local problems" msgstr "Rapporter, finn eller diskuter lokale problemer" @@ -2523,9 +2976,9 @@ msgstr "Rapportert %s" msgid "Reported %s, to %s" msgstr "Rapportert %s, til %s" -#: perllib/FixMyStreet/DB/Result/Problem.pm:512 +#: perllib/FixMyStreet/DB/Result/Problem.pm:559 #: templates/web/default/contact/index.html:45 -#: templates/web/fixmystreet/contact/index.html:46 +#: templates/web/fixmystreet/contact/index.html:58 msgid "Reported anonymously at %s" msgstr "Rapportert anonymt %s" @@ -2535,167 +2988,208 @@ msgstr "Rapportert anonymt %s" msgid "Reported before" msgstr "Rapportert tidligere" -#: perllib/FixMyStreet/DB/Result/Problem.pm:504 -msgid "Reported by %s anonymously at %s" -msgstr "Publisert av %s anonymt %s" - -#: perllib/FixMyStreet/DB/Result/Problem.pm:535 +#: perllib/FixMyStreet/DB/Result/Problem.pm:582 #: templates/web/default/contact/index.html:47 -#: templates/web/fixmystreet/contact/index.html:48 +#: templates/web/fixmystreet/contact/index.html:60 msgid "Reported by %s at %s" msgstr "Publisert av %s %s" -#: perllib/FixMyStreet/DB/Result/Problem.pm:526 -msgid "Reported by %s by %s at %s" -msgstr "Rapporter av %s av %s %s" - -#: perllib/FixMyStreet/DB/Result/Problem.pm:500 -msgid "Reported by %s in the %s category anonymously at %s" -msgstr "Rapportert av %s i kategorien %s anonymt %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:520 -msgid "Reported by %s in the %s category by %s at %s" -msgstr "Rapportert av %s i kategorien %s av %s %s" - -#: perllib/FixMyStreet/DB/Result/Problem.pm:508 +#: 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:530 +#: 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: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 "Legger til et problem" -#: templates/web/default/around/display_location.html:95 +#: 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: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 +msgid "Reports awaiting approval" +msgstr "Rapporter som venter på godkjenning" + +#: templates/web/default/around/tabbed_lists.html:3 msgid "Reports on and around the map" msgstr "Problemer i og rundt kartet" -#: templates/web/default/admin/report_edit.html:35 +#: templates/web/zurich/admin/index-sdm.html:10 +msgid "Reports published" +msgstr "Publiserte rapporter" + +#: templates/web/default/admin/report_edit.html:71 msgid "Resend report" msgstr "Send rapport på nytt" -#: perllib/FixMyStreet/Geocode/OSM.pm:166 -msgid "" -"Road operator for this named road (derived from road reference number and " -"type): %s" -msgstr "" -"Veioperatør for denne navngitte veien (utledet fra veiens referansenummer og " -"type) %s" +#: templates/web/default/js/translation_strings.html:28 +#: templates/web/oxfordshire/js/translation_strings.html:22 +msgid "Right place?" +msgstr "Riktig sted?" + +#: perllib/FixMyStreet/Geocode/OSM.pm:173 +msgid "Road operator for this named road (derived from road reference number and type): %s" +msgstr "Veioperatør for denne navngitte veien (utledet fra veiens referansenummer og type) %s" -#: perllib/FixMyStreet/Geocode/OSM.pm:163 +#: perllib/FixMyStreet/Geocode/OSM.pm:170 msgid "Road operator for this named road (from OpenStreetMap): %s" msgstr "Veioperatør for denne navngitte veien (fra OpenStreetMap): %s" -#: templates/web/default/admin/council_edit.html:35 -msgid "Save changes" -msgstr "Lagre endringer" +#: 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 "Roter til venstre" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1027 -msgid "Search Abuse" -msgstr "Søk etter misbruk" +#: 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 "Roter til høyre" -#: templates/web/default/admin/search_abuse.html:1 -msgid "Search Abuse Table" -msgstr "Søk i misbrukstabell" +#: templates/web/default/admin/body_edit.html:76 +msgid "Save changes" +msgstr "Lagre endringer" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1023 -#: templates/web/default/admin/list_flagged.html:1 -#: templates/web/default/admin/search_reports.html:1 +#: templates/web/default/admin/reports.html:1 +#: templates/web/zurich/admin/reports.html:1 msgid "Search Reports" msgstr "Søk i rapporter" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1026 -#: templates/web/default/admin/search_users.html:1 +#: templates/web/default/admin/users.html:1 msgid "Search Users" msgstr "Søk i brukere" -#: templates/web/default/admin/search_abuse.html:4 -#: templates/web/default/admin/search_reports.html:5 -#: templates/web/default/admin/search_users.html:5 +#: templates/web/zurich/header.html:77 +msgid "Search reports" +msgstr "Søk i rapporter" + +#: templates/web/default/admin/reports.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/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:71 +#: templates/web/zurich/admin/body-form.html:26 +msgid "Select an area" +msgstr "Velg et område" + #: templates/web/default/alert/_list.html:8 #: templates/web/fixmystreet/alert/_list.html:10 -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." +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:618 +#: perllib/FixMyStreet/DB/Result/Problem.pm:664 msgid "Sent to %s %s later" msgstr "Sendt til %s %s senere" -#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:71 msgid "Sent:" msgstr "Sendt:" -#: templates/web/default/admin/report_edit.html:37 +#: templates/web/default/admin/report_edit.html:73 +#: templates/web/zurich/admin/stats.html:45 msgid "Service:" msgstr "Tjeneste:" -#: templates/web/emptyhomes/static/about.html:21 -msgid "Shelter Cymru" -msgstr "Shelter Cymru" - -#: templates/web/emptyhomes/static/about.html:23 -msgid "" -"Shelter Cymru is Wales’ people and homes charity and wants\n" -" everyone in Wales to have a decent home. We believe a home is a " -"fundamental\n" -" right and essential to the health and well-being of people and " -"communities.\n" -" We work for people in housing need. We have offices all over Wales and\n" -" prevent people from losing their homes by offering free, confidential " -"and\n" -" independent advice. When necessary we constructively challenge on behalf " -"of\n" -" people to ensure they are properly assisted and to improve practice and\n" -" learning. We believe that bringing empty homes back into use can make a\n" -" significant contribution to the supply of affordable homes in Wales." -msgstr "" +#: templates/web/fixmystreet/report/display.html:41 +msgid "Share" +msgstr "Dele" -#: templates/web/bromley/report/display.html:203 +#: templates/web/bromley/report/display.html:205 #: templates/web/bromley/report/new/fill_in_details_form.html:129 #: templates/web/bromley/report/new/fill_in_details_form.html:175 -#: templates/web/default/report/display.html:208 #: templates/web/default/report/new/fill_in_details_form.html:210 -#: templates/web/fixmystreet/report/display.html:185 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:126 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:186 +#: templates/web/default/report/update-form.html:157 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:129 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:197 +#: templates/web/fixmystreet/report/update-form.html:144 msgid "Show my name publicly" msgstr "Vis mitt navn offentlig" -#: templates/web/default/around/display_location.html:60 -#: templates/web/fixmystreet/around/display_location.html:60 +#: templates/web/default/around/display_location.html:69 msgid "Show old" msgstr "Vis gamle" -#: templates/web/default/around/display_location.html:51 -#: templates/web/fixmystreet/around/display_location.html:52 +#: templates/web/default/around/display_location.html:60 msgid "Show pins" msgstr "Vis nåler" #: templates/web/default/auth/general.html:3 #: templates/web/default/auth/general.html:49 -#: templates/web/fixmybarangay/header.html.orig:46 +#: templates/web/fixmybarangay/header.html:70 #: templates/web/fixmystreet/auth/general.html:3 -#: templates/web/fixmystreet/auth/general.html:38 -#: templates/web/fixmystreet/auth/general.html:58 -#: templates/web/fixmystreet/header.html:51 -#: templates/web/zurich/header.html:51 +#: templates/web/fixmystreet/auth/general.html:42 +#: templates/web/fixmystreet/auth/general.html:62 +#: templates/web/fixmystreet/header.html:54 +#: templates/web/oxfordshire/header.html:115 +#: templates/web/seesomething/auth/general.html:3 +#: templates/web/seesomething/auth/general.html:39 +#: templates/web/stevenage/header.html:101 +#: templates/web/zurich/auth/general.html:18 +#: templates/web/zurich/auth/general.html:35 msgid "Sign in" msgstr "Logg inn" @@ -2705,22 +3199,26 @@ msgstr "Logg inn via epost" #: templates/web/default/auth/general.html:1 #: templates/web/fixmystreet/auth/general.html:1 +#: templates/web/seesomething/auth/general.html:1 +#: templates/web/zurich/auth/general.html:1 msgid "Sign in or create an account" msgstr "Logg inn eller opprett en konto" #: templates/web/bromley/auth/sign_out.html:1 #: templates/web/default/auth/sign_out.html:1 #: templates/web/default/header.html:30 -#: templates/web/emptyhomes/header.html:41 +#: templates/web/emptyhomes/header.html:46 #: templates/web/fiksgatami/header.html:22 #: templates/web/fiksgatami/nn/header.html:22 #: templates/web/lichfielddc/header.html:177 #: templates/web/reading/header.html:33 +#: templates/web/seesomething/auth/sign_out.html:1 +#: templates/web/zurich/auth/sign_out.html:1 msgid "Sign out" msgstr "Logg ut" #: templates/web/default/header.html:29 -#: templates/web/emptyhomes/header.html:40 +#: templates/web/emptyhomes/header.html:45 #: templates/web/fiksgatami/header.html:21 #: templates/web/fiksgatami/nn/header.html:21 #: templates/web/lichfielddc/header.html:177 @@ -2729,11 +3227,20 @@ msgid "Signed in as %s" msgstr "Logget inn som %s" #: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 #: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 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" msgstr "Noen bilder av nylig meldte problemer" @@ -2742,32 +3249,24 @@ msgstr "Noen bilder av nylig meldte problemer" msgid "Some text to localize" msgstr "Noe tekst å oversette" -#: templates/web/default/admin/council_list.html:42 -msgid "Some unconfirmeds" -msgstr "Noen ubekreftede" - -#: perllib/FixMyStreet/Cobrand/UK.pm:97 -msgid "" -"Sorry, that appears to be a Crown dependency postcode, which we don't cover." -msgstr "" -"Beklager det ser ut til å være et \"Crown dependency\"-postnummer, som vi " -"ikke dekker." +#: perllib/FixMyStreet/Cobrand/UK.pm:93 +msgid "Sorry, that appears to be a Crown dependency postcode, which we don't cover." +msgstr "Beklager det ser ut til å være et \"Crown dependency\"-postnummer, som vi ikke dekker." #: templates/web/default/tokens/abuse.html:5 msgid "Sorry, there has been an error confirming your problem." -msgstr "" -"Beklager, men det oppsto et problem når vi forsøkte å bekrefte " -"problemrapporten din" +msgstr "Beklager, men det oppsto et problem når vi forsøkte å bekrefte problemrapporten din" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:214 -#: perllib/FixMyStreet/Geocode.pm:27 perllib/FixMyStreet/Geocode/Bing.pm:51 -#: perllib/FixMyStreet/Geocode/Google.pm:69 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:215 +#: perllib/FixMyStreet/Geocode.pm:28 perllib/FixMyStreet/Geocode/Bing.pm:58 +#: perllib/FixMyStreet/Geocode/Google.pm:74 +#: perllib/FixMyStreet/Geocode/OSM.pm:66 msgid "Sorry, we could not find that location." msgstr "Beklager, vi kunne ikke finne det stedet." -#: perllib/FixMyStreet/Geocode/Bing.pm:46 -#: perllib/FixMyStreet/Geocode/Google.pm:64 -#: perllib/FixMyStreet/Geocode/OSM.pm:59 +#: perllib/FixMyStreet/Geocode/Bing.pm:53 +#: perllib/FixMyStreet/Geocode/Google.pm:69 +#: perllib/FixMyStreet/Geocode/Zurich.pm:87 msgid "Sorry, we could not parse that location. Please try again." msgstr "Beklager, vi kunne ikke tolke den posisjonen. Vennligst prøv på nytt." @@ -2777,49 +3276,63 @@ 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/list_flagged.html:18 -#: templates/web/default/admin/list_updates.html:6 -#: templates/web/default/admin/search_reports.html:21 -#: templates/web/fixmystreet/report/display.html:72 +#: 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 "Tilstand" -#: templates/web/default/admin/report_edit.html:17 -#: templates/web/default/admin/update_edit.html:18 -#: templates/web/default/report/display.html:77 +#: 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 "Tilstand:" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1029 +#: 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 "Statistikk" -#: templates/web/default/report/updates.html:9 +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Status" +msgstr "Status" + +#: templates/web/default/report/updates.html:10 msgid "Still open, via questionnaire, %s" msgstr "Fortsatt åpen via spørreskjema, %s" +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370 +msgid "Subcategory: %s" +msgstr "Underkategori: %s" + +#: templates/web/zurich/admin/index-dm.html:27 +msgid "Subdivision/Body" +msgstr "Underavdeling/administrasjon" + #: templates/web/bromley/report/new/fill_in_details_form.html:48 -#: templates/web/fixmystreet/contact/index.html:79 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:58 +#: templates/web/fixmystreet/contact/index.html:91 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:60 msgid "Subject" msgstr "Emne" -#: templates/web/default/admin/report_edit.html:13 +#: 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 "Emne:" @@ -2830,38 +3343,67 @@ msgstr "Emne:" #: 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/fixmystreet/report/new/fill_in_details_form.html:137 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:162 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:201 +#: 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 "Send inn" -#: templates/web/default/admin/report_edit.html:56 -#: templates/web/default/admin/update_edit.html:51 -#: templates/web/default/admin/user_edit.html:20 +#: 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 "Send inn endringer" -#: templates/web/default/questionnaire/index.html:112 +#: templates/web/default/questionnaire/index.html:116 #: templates/web/fixmystreet/questionnaire/index.html:105 msgid "Submit questionnaire" msgstr "Send inn spørreskjema" +#: 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 "Sendt inn" + #: templates/web/bromley/report/display.html:44 #: templates/web/default/alert/updates.html:17 -#: templates/web/default/report/display.html:38 +#: templates/web/default/report/display.html:42 #: templates/web/fixmystreet/alert/updates.html:23 -#: templates/web/fixmystreet/report/display.html:37 +#: templates/web/fixmystreet/report/display.html:68 msgid "Subscribe" msgstr "Abonner" #: templates/web/default/alert/_list.html:97 +#: templates/web/fixmybarangay/alert/_list.html:42 #: templates/web/fixmystreet/alert/_list.html:92 msgid "Subscribe me to an email alert" msgstr "Jeg ønsker å abonnere på e-postvarsel" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1021 +#: templates/web/fixmybarangay/alert/_list.html:6 +msgid "Subscribe to an alert based upon what baranagay you’re in:" +msgstr "Abonner på varsel basert på hvilket distrikt du hører inn under:" + +#: 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 "Oppsummering" @@ -2869,228 +3411,184 @@ msgstr "Oppsummering" #: templates/web/emptyhomes/reports/index.html:1 #: templates/web/fiksgatami/nn/reports/index.html:1 #: templates/web/fiksgatami/reports/index.html:1 +#: templates/web/fixmybarangay/reports/index.html:1 +#: templates/web/zurich/reports/index.html:0 +#: templates/web/zurich/reports/index.html:4 msgid "Summary reports" msgstr "Oppsummeringsrapporter" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1025 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1179 +msgid "Survey" +msgstr "Spørreundersøkelse" + #: templates/web/default/admin/questionnaire.html:1 msgid "Survey Results" msgstr "Resultater fra spørreundersøkelsen" -#: templates/web/default/admin/list_updates.html:14 +#: 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" -#: templates/web/default/admin/council_contacts.html:18 +#: templates/web/default/admin/body.html:18 msgid "Text only version" msgstr "Tekst-versjon" -#: templates/web/default/admin/update_edit.html:13 +#: templates/web/default/admin/update_edit.html:20 +#: templates/web/zurich/admin/update_edit.html:12 msgid "Text:" msgstr "Tekst:" #: templates/web/default/tokens/confirm_update.html:7 #: templates/web/default/tokens/confirm_update.html:8 -msgid "" -"Thank you — you can <a href=\"%s\">view your updated problem</a> on " -"the site." -msgstr "" -"Tusen takk — du kan <a href=\"%s\">se på ditt oppdaterte problem</a> " -"her hos oss." +msgid "Thank you — you can <a href=\"%s\">view your updated problem</a> on the site." +msgstr "Tusen takk — du kan <a href=\"%s\">se på ditt oppdaterte problem</a> her hos oss." #: templates/web/emptyhomes/tokens/confirm_problem.html:6 #: templates/web/emptyhomes/tokens/confirm_problem.html:8 -msgid "" -"Thank you for reporting an empty property on ReportEmptyHomes.com. We have " -"emailed the lead officer for empty homes in the council responsible with " -"details, and asked them to do whatever they can to get the empty property " -"back into use as soon as possible." -msgstr "" +msgid "Thank you for reporting an empty property on ReportEmptyHomes.com. We have emailed the lead officer for empty homes in the council responsible with details, and asked them to do whatever they can to get the empty property back into use as soon as possible." +msgstr "Takk for rapporten om en tomt eiendom på ReportEmptyHomes.com. Vi har sendt en e-post til den avnsvarlige for tomme eiendommer i administrasjonen med detaljene, og bedt dem om å gjøre hva de kan for å få den tomme eiendommen i bruk igjen så snart som mulig." #: templates/web/emptyhomes/tokens/confirm_problem.html:30 #: templates/web/emptyhomes/tokens/confirm_problem.html:31 msgid "" "Thank you for reporting this empty property on ReportEmptyHomes.com.\n" -"At present the report cannot be sent through to the council for this area. " -"We\n" -"are working with councils to link them into the system so that as many " -"areas\n" +"At present the report cannot be sent through to the council for this area. We\n" +"are working with councils to link them into the system so that as many areas\n" "as possible will be covered." msgstr "" +"Takk for rapporten om en tomt eiendom på ReportEmptyHomes.com. \n" +"Per nå kan vi desverre ikke sende rapporten til den ansvarlige administrasjonen. \n" +"Vi jobber med å koble så mange administrasjoner som mulig til systemet. " #: templates/web/default/tokens/error.html:7 -msgid "" -"Thank you for trying to confirm your update or problem. We seem to have an " -"error ourselves though, so <a href=\"%s\">please let us know what went on</" -"a> and we'll look into it." -msgstr "" -"Takk for at du forsøker å bekrefte din oppdatering eller ditt problem. Vi " -"ser ut til å ha en feil hos oss, så <a href=\"%s\">vær så snill å fortell " -"oss hva som skjedde</a> så skal vi se på saken." +msgid "Thank you for trying to confirm your update or problem. We seem to have an error ourselves though, so <a href=\"%s\">please let us know what went on</a> and we'll look into it." +msgstr "Takk for at du forsøker å bekrefte din oppdatering eller ditt problem. Vi ser ut til å ha en feil hos oss, så <a href=\"%s\">vær så snill å fortell oss hva som skjedde</a> så skal vi se på saken." #: templates/web/emptyhomes/tokens/confirm_problem.html:24 #: templates/web/emptyhomes/tokens/confirm_problem.html:26 -msgid "" -"Thank you for using ReportEmptyHomes.com. Your action is already helping to " -"resolve the UK’s empty homes crisis." -msgstr "" -"Takk for at du bruker ReportEmptyHomes.com. Ditt bidrag bidrar allerede for " -"å løse UKs tomme hjem-krise." +msgid "Thank you for using ReportEmptyHomes.com. Your action is already helping to resolve the UK’s empty homes crisis." +msgstr "Takk for at du bruker ReportEmptyHomes.com. Ditt bidrag bidrar allerede for å løse UKs tomme hjem-krise." #: templates/web/fixmystreet/around/around_index.html:27 -msgid "" -"Thanks for uploading your photo. We now need to locate your problem, so " -"please enter a nearby street name or postcode in the box above :" -msgstr "" -"Takk for at du lastet opp ditt bilde. Vi må nå plassere ditt problem, så " -"vær så snill å skriv inn navnet på en vei eller et postnummer i området i " -"boksen ovenfor :" - -#: templates/web/default/around/around_index.html:28 -msgid "" -"Thanks for uploading your photo. We now need to locate your problem, so " -"please enter a nearby street name or postcode in the box below :" -msgstr "" -"Takk for at du lastet opp ditt bilde. Nå trenger vi å plassere ditt problem," -"så vær så snill å skriv inn navn på vei i nærheten, eller postnummer i " -"boksen under :" +msgid "Thanks for uploading your photo. We now need to locate your problem, so please enter a nearby street name or postcode in the box above :" +msgstr "Takk for at du lastet opp ditt bilde. Vi må nå plassere ditt problem, så vær så snill å skriv inn navnet på en vei eller et postnummer i området i boksen ovenfor :" #: templates/web/default/contact/submit.html:8 msgid "Thanks for your feedback. We'll get back to you as soon as we can!" msgstr "Takk for ditt innspill. Vi gir deg en tilbakemelding så raskt vi kan" #: templates/web/default/questionnaire/creator_fixed.html:9 -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?" +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:190 -msgid "" -"That image doesn't appear to have uploaded correctly (%s), please try again." +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." -#: perllib/FixMyStreet/App/Controller/Council.pm:91 -msgid "" -"That location does not appear to be covered by a council; perhaps it is " -"offshore or outside the country. Please try again." -msgstr "" -"Det stedet dekkes ikke av noen administrasjon, kanskje det er til havs eller " -"utenfor lander - vennligst forsøk et annet sted." +#: perllib/FixMyStreet/App/Controller/Council.pm:90 +msgid "That location does not appear to be covered by a council; perhaps it is offshore or outside the country. Please try again." +msgstr "Det stedet dekkes ikke av noen administrasjon, kanskje det er til havs eller utenfor lander - vennligst forsøk et annet sted." -# Should this be "Norge" or "Storbritannia" ? -#: perllib/FixMyStreet/App/Controller/Location.pm:107 +#: perllib/FixMyStreet/App/Controller/Location.pm:123 msgid "That location does not appear to be in the UK; please try again." msgstr "Det stedet virker ikke å være i Storbritannia. Vennligst prøv igjen." #: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:63 -#: perllib/FixMyStreet/Cobrand/UK.pm:90 +#: perllib/FixMyStreet/Cobrand/UK.pm:86 msgid "That postcode was not recognised, sorry." msgstr "Det postnummeret ble ikke gjenkjent, beklager." -#: perllib/FixMyStreet/App/Controller/Admin.pm:605 +#: perllib/FixMyStreet/App/Controller/Admin.pm:704 msgid "That problem will now be resent." msgstr "Det problemet vil nå bli sendt på nytt." -#: perllib/FixMyStreet/App/Controller/Report.pm:75 +#: perllib/FixMyStreet/App/Controller/Report.pm:117 +msgid "That report cannot be viewed on %s." +msgstr "Dene rapporten kan ikke vises på %s." + +#: perllib/FixMyStreet/App/Controller/Report.pm:111 msgid "That report has been removed from FixMyStreet." msgstr "Den rapporten har blitt fjernet fra FiksGataMi." -#: templates/web/emptyhomes/static/about.html:7 -msgid "The Empty Homes Agency" +#: 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/emptyhomes/static/about.html:9 +#: templates/web/default/admin/body-form.html:132 +#: templates/web/default/admin/body-form.html:133 msgid "" -"The Empty Homes agency is an independent campaigning charity. We\n" -" are not part of government, and have no formal links with local " -"councils\n" -" although we work in cooperation with both. We exist to highlight the " -"waste\n" -" of empty property and work with others to devise and promote " -"sustainable\n" -" solutions to bring empty property back into use. We are based in London " -"but\n" -" work across England. We also work in partnership with other charities " -"across\n" -" the UK." +"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/open311/index.html:23 +#: templates/web/default/admin/body-form.html:90 +#: templates/web/default/admin/body-form.html:91 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." +"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 "" -"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/auth/token.html:21 -#: templates/web/default/email_sent.html:22 +#: 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 confirmation email <strong>may</strong> take a few minutes to arrive " -"— <em>please</em> be patient." +"The body's <strong>name</strong> identifies the body (for example, <em>Borsetshire District Council</em>)\n" +" and may be displayed publically." msgstr "" -"Bekreftelsese-posten <strong>kan</strong> bruke noen minutter før den kommer " -"frem — så vær tålmodig." + +#: 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 — <em>please</em> be patient." +msgstr "Bekreftelsese-posten <strong>kan</strong> bruke noen minutter før den kommer frem — så vær tålmodig." #: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 #: templates/web/fixmystreet/report/new/fill_in_details_text.html:3 -msgid "" -"The council won’t be able to help unless you leave as much\n" -"detail as you can. Please describe the exact location of the problem (e.g. " -"on a\n" -"wall), what it is, how long it has been there, a description (and a photo " -"of\n" -"the problem if you have one), etc." +msgid "The council won’t be able to help unless you leave as much detail as you can. Please describe the exact location of the problem (e.g. on a wall), what it is, how long it has been there, a description (and a photo of the problem if you have one), etc." msgstr "" -"Administrasjonen vil ikke være i stand til å hjelpe med mindre du legger inn " -"så mange\n" +"Administrasjonen vil ikke være i stand til å hjelpe med mindre du legger inn så mange\n" " detaljer som du kan. Beskriv eksakt plassering for problemet (f.eks. på en\n" -" vegg), hva det er, hvor lenge det har vært der, en beskrivelse (og et bilde " -"av\n" +" vegg), hva det er, hvor lenge det har vært der, en beskrivelse (og et bilde av\n" " problemet hvis du har et), osv." #: templates/web/fixmystreet/questionnaire/index.html:43 msgid "The details of your problem are available from the other tab above." -msgstr "" -"Detaljene om ditt problem er tilgjengelig under den andre fanen ovenfor." +msgstr "Detaljene om ditt problem er tilgjengelig under den andre fanen ovenfor." #: templates/web/default/questionnaire/index.html:49 -msgid "" -"The details of your problem are available on the right hand side of this " -"page." +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 "" -"Detaljene om ditt problem er tilgjengelig på høyre kant av denne siden." #: perllib/FixMyStreet/App/Controller/Dashboard.pm:60 -#: perllib/FixMyStreet/App/Controller/Reports.pm:44 -#: perllib/FixMyStreet/App/Controller/Reports.pm:75 +#: perllib/FixMyStreet/App/Controller/Reports.pm:72 msgid "The error was: %s" msgstr "Feilen var: %s" -#: templates/web/default/open311/index.html:19 -msgid "" -"The following Open311 v2 attributes are returned for each request: " -"service_request_id, description, lat, long, media_url, status, " -"requested_datetime, updated_datetime, service_code and service_name." -msgstr "" -"De følgende Open311 v2-atributtene blir returnert for hver forespørsel: " -"service_request_id, description, lat, long, media_url, status, " -"requested_datetime, updated_datetime, service_code and service_name." +#: templates/web/default/open311/index.html:88 +msgid "The following Open311 v2 attributes are returned for each request: service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code and service_name." +msgstr "De følgende Open311 v2-atributtene blir returnert for hver forespørsel: service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code and service_name." -#: perllib/FixMyStreet/Geocode/OSM.pm:158 -msgid "" -"The following information about the nearest road might be inaccurate or " -"irrelevant, if the problem is close to several roads or close to a road " -"without a name registered in OpenStreetMap." -msgstr "" -"Følgende informasjon om nærmeste vei kan være unøyaktig eller irrelevant, " -"hvis problemet er nær flere veier eller nær en vei uten navn registrert i " -"OpenStreetmap." +#: perllib/FixMyStreet/Geocode/OSM.pm:165 +msgid "The following information about the nearest road might be inaccurate or irrelevant, if the problem is close to several roads or close to a road without a name registered in OpenStreetMap." +msgstr "Følgende informasjon om nærmeste vei kan være unøyaktig eller irrelevant, hvis problemet er nær flere veier eller nær en vei uten navn registrert i OpenStreetmap." #: db/alert_types.pl:19 db/alert_types.pl:23 db/alert_types.pl:27 #: db/alert_types.pl:31 @@ -3106,11 +3604,8 @@ msgid "The latest problems for {{COUNCIL}} reported by users" msgstr "De siste problemer for {{COUNCIL}} rapportert av brukere" #: db/alert_types.pl:39 -msgid "" -"The latest problems for {{COUNCIL}} within {{WARD}} ward reported by users" -msgstr "" -"De siste problemene for {{COUNCIL}} innenfor {{WARD}} bydel rapportert av " -"brukere" +msgid "The latest problems for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "De siste problemene for {{COUNCIL}} innenfor {{WARD}} bydel rapportert av brukere" #: db/alert_types.pl:11 msgid "The latest problems reported by users" @@ -3133,16 +3628,17 @@ msgid "The latest reports for {{COUNCIL}} reported by users" msgstr "De siste rapporter for {{COUNCIL}} rapportert av brukere" #: db/alert_types_eha.pl:24 -msgid "" -"The latest reports for {{COUNCIL}} within {{WARD}} ward reported by users" -msgstr "" -"De siste rapporter for {{COUNCIL}} innenfor {{WARD}} bydel rapporter av " -"brukere" +msgid "The latest reports for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "De siste rapporter for {{COUNCIL}} innenfor {{WARD}} bydel rapporter av brukere" #: db/alert_types_eha.pl:28 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" @@ -3164,143 +3660,140 @@ msgstr "Den enkleste meldingen er vår geografiske:" #: templates/web/default/report/new/councils_text_some.html:11 #: templates/web/default/report/new/fill_in_details_form.html:17 #: templates/web/fixmystreet/report/new/fill_in_details_form.html:12 -msgid "" -"The subject and details of the problem will be public, plus your name if you " -"give us permission." +msgid "The subject and details of the problem will be public, plus your name if you give us permission." 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:269 -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" +#: 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" -#: perllib/FixMyStreet/App/Controller/Reports.pm:72 +#: templates/web/default/admin/user-form.html:12 +#: templates/web/default/admin/user-form.html:13 msgid "" -"There was a problem showing the All Reports page. Please try again later." +"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 "" -"Det var problemer med å vise 'Alle rapporter'-siden. Vennligst prøv igjen " -"senere." +#: 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." + +#: perllib/FixMyStreet/App/Controller/Contact.pm:116 #: perllib/FixMyStreet/App/Controller/Dashboard.pm:59 msgid "There was a problem showing this page. Please try again later." msgstr "Det var problemer med å vise denne siden. Vennligst prøv igjen senere." -#: perllib/FixMyStreet/App/Controller/Report/New.pm:733 -#: perllib/FixMyStreet/App/Controller/Report/Update.pm:130 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:747 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:134 #: templates/web/default/auth/general.html:23 #: templates/web/fixmystreet/auth/general.html:24 -msgid "" -"There was a problem with your email/password combination. If you cannot " -"remember your password, or do not have one, please fill in the ‘sign " -"in by email’ section of the form." -msgstr "" -"Det var problemer med din e-post/passord-kombinasjon. Hvis du har glemt ditt " -"passord, eller hvis du ikke har et, vennligst fyll inn «Logg inn via e-post»-" -"delen av skjemaet" +#: templates/web/seesomething/auth/general.html:24 +#: templates/web/zurich/auth/general.html:28 +msgid "There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the ‘sign in by email’ section of the form." +msgstr "Det var problemer med din e-post/passord-kombinasjon. Hvis du har glemt ditt passord, eller hvis du ikke har et, vennligst fyll inn «Logg inn via e-post»-delen av skjemaet" #: perllib/FixMyStreet/App/Controller/Alert.pm:355 -msgid "" -"There was a problem with your email/password combination. Please try again." -msgstr "" -"Det var problemer med din epost/passord-kombinasjon. Vær så snill å forsøk " -"igjen." +msgid "There was a problem with your email/password combination. Please try again." +msgstr "Det var problemer med din epost/passord-kombinasjon. Vær så snill å forsøk igjen." -#: perllib/FixMyStreet/App/Controller/Report/Update.pm:252 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:272 msgid "There was a problem with your update. Please try again." msgstr "Det var problemer med din oppdatering. Vær så snill å forsøk igjen." -#: perllib/FixMyStreet/App/Controller/Contact.pm:117 +#: perllib/FixMyStreet/App/Controller/Contact.pm:120 msgid "There were problems with your report. Please see below." msgstr "Det var problemer med din rapport. Vennligst se under." -#: perllib/FixMyStreet/App/Controller/Report/Update.pm:279 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:299 msgid "There were problems with your update. Please see below." msgstr "Det var problemer med din oppdatering. Vennligst se under." -#: templates/web/default/open311/index.html:10 +#: templates/web/default/admin/body-form.html:108 +#: templates/web/default/admin/body-form.html:109 msgid "" -"This API implementation is work in progress and not yet stabilized. It will " -"change without warnings in the future." +"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 "" -"Denne API-implementasjonen er under arbeid og ennå ikke stabil. Den vil " -"endre seg uten advarsel i fremtiden." -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:339 +#: 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." + +#: templates/web/default/admin/body.html:33 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." +"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 "" -"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:342 +#: templates/web/default/admin/body-form.html:52 +#: templates/web/default/admin/body-form.html:53 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." +"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 "" -"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:865 -#: perllib/FixMyStreet/Cobrand/UK.pm:62 +#: 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: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" msgstr "Denne informasjonen er påkrevd" #: templates/web/default/debug_header.html:3 -msgid "" -"This is a developer site; things might break at any time, and the database " -"will be periodically deleted." -msgstr "" -"Dette er et utviklernettsted. Ting kan knekke når som helst og databasen vil " -"bli periodisk slettet." +msgid "This is a developer site; things might break at any time, and the database will be periodically deleted." +msgstr "Dette er et utviklernettsted. Ting kan knekke når som helst og databasen vil bli periodisk slettet." -#: templates/web/emptyhomes/reports/council.html:58 -msgid "This is a summary of all reports for one %s." -msgstr "Dette er en oppsummering av alle rapporter for en %s." +#: templates/web/fixmybarangay/reports/index.html:7 +msgid "This is a summary of all reports on this site; select a particular barangay to see the reports sent there." +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/council.html:60 -msgid "This is a summary of all reports for this %s." -msgstr "Dette er en oppsummering for alle rapporter for denne %s." +#: templates/web/emptyhomes/reports/index.html:4 +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 "" #: templates/web/default/reports/index.html:7 -#: templates/web/emptyhomes/reports/index.html:4 #: templates/web/fiksgatami/nn/reports/index.html:4 #: templates/web/fiksgatami/reports/index.html:4 -msgid "" -"This is a summary of all reports on this site; select a particular council " -"to see the reports sent there." -msgstr "" -"Dette er en opplisting av alle problemene i denne tjenesten; velg en bestemt " -"administrasjon for å se problemer som er sendt dit." +msgid "This is a summary of all reports on this site; select a particular council to see the reports sent there." +msgstr "Dette er en opplisting av alle problemene i denne tjenesten; velg en bestemt administrasjon for å se problemer som er sendt dit." + +#: templates/web/default/auth/token.html:9 +msgid "This may be because the link is too old or already used, or the address was not copied correctly." +msgstr "Dette kan være fordi lenken er for gammel eller allerede brukt, eller at lenken ikke ble kopiert riktig." #: templates/web/default/report/banner.html:15 msgid "This problem has been closed" msgstr "Dette problemet er lukket" -#: templates/web/bromley/report/display.html:96 +#: templates/web/bromley/report/display.html:98 #: templates/web/default/report/banner.html:12 -#: templates/web/default/report/display.html:95 -#: templates/web/emptyhomes/report/display.html:12 -#: templates/web/fixmystreet/report/display.html:90 +#: templates/web/default/report/update-form.html:48 +#: templates/web/emptyhomes/report/banner.html:3 +#: templates/web/fixmystreet/report/update-form.html:46 msgid "This problem has been fixed" msgstr "Dette problemet er løst" -#: templates/web/bromley/report/display.html:90 -#: templates/web/default/report/display.html:90 -#: templates/web/fixmystreet/report/display.html:84 +#: templates/web/bromley/report/display.html:92 +#: templates/web/default/report/update-form.html:43 +#: templates/web/fixmystreet/report/update-form.html:40 msgid "This problem has not been fixed" msgstr "Dette problemet har ikke blitt løst" @@ -3312,73 +3805,88 @@ 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/DB/ResultSet/AlertType.pm:83 +#: 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" + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:86 msgid "This report is currently marked as closed." msgstr "Denne rapporten er for tiden markert som lukket." -#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:81 +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:84 msgid "This report is currently marked as fixed." msgstr "Denne rapporten er for tiden markert som fikset." -#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:85 +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:88 msgid "This report is currently marked as open." msgstr "Denne rapporten er for tiden markert som åpen." -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:262 -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/DB/ResultSet/Problem.pm:315 +msgid "This report was submitted anonymously" +msgstr "Denne rapporten ble rapportert anonymt" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1024 +#: 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:1178 #: templates/web/default/admin/timeline.html:1 msgid "Timeline" msgstr "Tidslinje" -#: templates/web/default/admin/list_flagged.html:10 -#: templates/web/default/admin/search_reports.html:13 +#: templates/web/default/admin/flagged.html:15 +#: templates/web/default/admin/reports.html:12 msgid "Title" msgstr "Tittel" -#: templates/web/default/around/display_location.html:69 -msgid "" -"To <strong>report a problem</strong>, click on the map at the correct " -"location." -msgstr "" -"For å <strong>rapportere et problem</strong>, klikk på riktig sted på kartet." - -#: templates/web/emptyhomes/around/display_location.html:35 -msgid "" -"To <strong>report a problem</strong>, simply click on the map at the correct " -"location." -msgstr "" -"For å <strong>rapportere et problem</strong>, klikk på kartet på riktig sted." +#: templates/web/default/around/_report_banner.html:2 +msgid "To <strong>report a problem</strong>, click on the map at the correct location." +msgstr "For å <strong>rapportere et problem</strong>, klikk på riktig sted på kartet." #: templates/web/default/alert/index.html:27 -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" +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:268 +#: 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 +#: templates/web/zurich/admin/stats.html:30 msgid "Total" msgstr "Totalt" -#: perllib/FixMyStreet/App/Controller/Reports.pm:43 -msgid "Unable to look up areas in MaPit. Please try again later." -msgstr "Klarte ikke slå opp områder i MaPit. Vennligst forsøk igjen senere." +#: templates/web/seesomething/report/new/fill_in_details_form.html:24 +msgid "Transport Category" +msgstr "Transportkategori" -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 -#: templates/web/default/admin/update_edit.html:19 +#: templates/web/default/js/translation_strings.html:29 +#: templates/web/oxfordshire/js/translation_strings.html:23 +msgid "Try again" +msgstr "Prøv igjen" + +#: 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 "Unable to fix" +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:48 +#: templates/web/zurich/admin/report_edit.html:61 +#: templates/web/zurich/admin/update_edit.html:18 msgid "Unconfirmed" msgstr "Ubekreftet" @@ -3386,34 +3894,44 @@ msgstr "Ubekreftet" msgid "Unknown" msgstr "Ukjent" -#: perllib/FixMyStreet/App/Controller/Rss.pm:164 +#: perllib/FixMyStreet/App/Controller/Rss.pm:173 msgid "Unknown alert type" msgstr "Ukjent varsel-type" -#: perllib/FixMyStreet/App/Controller/Report.pm:70 +#: templates/web/default/js/translation_strings.html:39 +#: templates/web/oxfordshire/js/translation_strings.html:33 +msgid "Unknown error" +msgstr "Ukjent feil" + +#: perllib/FixMyStreet/App/Controller/Report.pm:106 msgid "Unknown problem ID" msgstr "Ukjent problem-Id" #: templates/web/bromley/report/display.html:66 -#: templates/web/fixmystreet/report/display.html:65 +#: templates/web/fixmystreet/report/update-form.html:19 msgid "Update" msgstr "Oppdatering" -#: templates/web/default/admin/timeline.html:35 +#: templates/web/default/admin/timeline.html:33 msgid "Update %s created for problem %d; by %s" msgstr "Oppdatering %s opprettet for problem %d, av %s" #: templates/web/default/contact/index.html:21 -#: templates/web/fixmystreet/contact/index.html:22 +#: templates/web/fixmystreet/contact/index.html:34 msgid "Update below added anonymously at %s" msgstr "Oppdateringen under lagt inn anonymt %s" #: templates/web/default/contact/index.html:23 -#: templates/web/fixmystreet/contact/index.html:24 +#: templates/web/fixmystreet/contact/index.html:36 msgid "Update below added by %s at %s" msgstr "Oppdateringen under lagt til av %s %s" -#: templates/web/default/admin/index.html:30 +#: 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:38 msgid "Update breakdown by state" msgstr "Tilstandsfordeling for oppdateringer" @@ -3421,38 +3939,54 @@ msgstr "Tilstandsfordeling for oppdateringer" msgid "Update by {{name}}" msgstr "Oppdatert av {{name}}" -#: templates/web/default/admin/update_edit.html:33 +#: templates/web/default/admin/update_edit.html:42 +#: templates/web/zurich/admin/update_edit.html:25 msgid "Update changed problem state to %s" msgstr "En oppdatering endret problemets status til %s" -#: templates/web/default/admin/update_edit.html:35 +#: templates/web/default/admin/update_edit.html:44 msgid "Update marked problem as fixed" msgstr "En oppdatering markerte dette problemet som fikset." -#: templates/web/default/admin/update_edit.html:37 +#: templates/web/default/admin/update_edit.html:46 msgid "Update reopened problem" msgstr "En oppdatering gjennåpnet problemet" -#: templates/web/default/admin/council_contacts.html:62 +#: templates/web/default/admin/body.html:83 msgid "Update statuses" msgstr "Oppdater tilstanden" -#: templates/web/default/report/display.html:71 +#: templates/web/default/report/update-form.html:22 msgid "Update:" msgstr "Oppdatering:" -#: perllib/FixMyStreet/App/Controller/Admin.pm:694 -#: perllib/FixMyStreet/App/Controller/Admin.pm:809 -#: perllib/FixMyStreet/App/Controller/Admin.pm:889 +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Updated" +msgstr "Oppdatert" + +#: 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:1 +#: 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 "Oppdateringer" +#: 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." + #: db/alert_types.pl:5 db/alert_types.pl:6 msgid "Updates on {{title}}" msgstr "Oppdateringer av {{title}}" @@ -3460,35 +3994,55 @@ msgstr "Oppdateringer av {{title}}" #: templates/web/bromley/report/display.html:0 #: templates/web/bromley/report/display.html:8 #: templates/web/default/report/display.html:0 -#: templates/web/default/report/display.html:7 +#: templates/web/default/report/display.html:5 #: templates/web/fixmystreet/report/display.html:0 #: templates/web/fixmystreet/report/display.html:8 msgid "Updates to this problem, FixMyStreet" msgstr "Oppdateringer til dette problemet, FiksGataMi" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1182 +#: 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:1154 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1314 msgid "User flagged" msgstr "Bruker flagget" -#: templates/web/default/admin/list_flagged.html:30 +#: 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:309 -#: perllib/FixMyStreet/App/Controller/Admin.pm:339 +#: perllib/FixMyStreet/App/Controller/Admin.pm:371 +#: perllib/FixMyStreet/App/Controller/Admin.pm:401 msgid "Values updated" msgstr "Verdier oppdatert" -#: templates/web/default/admin/report_edit.html:12 -#: templates/web/default/admin/update_edit.html:12 +#: templates/web/default/admin/report_edit.html:18 +#: templates/web/default/admin/update_edit.html:18 +#: templates/web/zurich/admin/report_edit-sdm.html:24 +#: templates/web/zurich/admin/report_edit.html:23 +#: templates/web/zurich/admin/update_edit.html:10 msgid "View report on site" msgstr "Se rapport på nettstedet" -#: templates/web/default/reports/council.html:18 +#: templates/web/default/reports/body.html:14 msgid "View reports by ward" msgstr "Se rapport per bydel" @@ -3497,307 +4051,252 @@ msgid "View your report" msgstr "Vis din rapport" #: templates/web/default/around/display_location.html:0 -#: templates/web/default/around/display_location.html:33 -#: templates/web/emptyhomes/around/display_location.html:0 -#: templates/web/emptyhomes/around/display_location.html:16 -#: templates/web/fixmystreet/around/display_location.html:0 -#: templates/web/fixmystreet/around/display_location.html:33 +#: templates/web/default/around/display_location.html:34 +#: templates/web/seesomething/around/display_location.html:0 +#: templates/web/seesomething/around/display_location.html:16 msgid "Viewing a location" msgstr "Ser på et sted" #: templates/web/bromley/report/display.html:0 #: templates/web/default/report/display.html:0 -#: templates/web/emptyhomes/report/display.html:2 #: templates/web/fixmystreet/report/display.html:0 msgid "Viewing a problem" msgstr "Ser på et problem" -#: templates/web/default/reports/council.html:20 -#: templates/web/emptyhomes/reports/council.html:18 +#: templates/web/default/reports/body.html:16 msgid "Wards of this council" msgstr "Bydeler innenfor denne administrasjonen" #: templates/web/default/alert/choose.html:6 -#: templates/web/default/around/around_index.html:17 +#: templates/web/default/around/around_index.html:13 #: templates/web/fixmystreet/around/around_index.html:16 -msgid "" -"We found more than one match for that location. We show up to ten matches, " -"please try a different search if yours is not here." -msgstr "" -"Vi fant mer en ett treff for den plassen. Vi viser opp til ti treff, så " -"forsøk et annet søk hvis din plass ikke er her." +#: templates/web/seesomething/around/around_index.html:13 +msgid "We found more than one match for that location. We show up to ten matches, please try a different search if yours is not here." +msgstr "Vi fant mer en ett treff for den plassen. Vi viser opp til ti treff, så forsøk et annet søk hvis din plass ikke er her." -#: templates/web/default/auth/token.html:19 +#: templates/web/default/auth/token.html:8 +msgid "We have not been able to confirm your account - sorry." +msgstr "Vi har ikke klart å bekrefte din konto - beklager." + +#: templates/web/default/auth/token.html:16 msgid "We have sent you an email containing a link to confirm your account." -msgstr "" -"Vi har sendt deg en epost som inneholder link for å bekrefte din konto." +msgstr "Vi har sendt deg en epost som inneholder link for å bekrefte din konto." #: templates/web/emptyhomes/tokens/confirm_problem.html:18 #: templates/web/emptyhomes/tokens/confirm_problem.html:20 -msgid "" -"We may contact you periodically to ask if anything has changed with the " -"property you reported." -msgstr "" -"Det kan hende vi periodisk tar kontakt med deg for å spørre om noe har " -"endret seg med eiedommen du rapporterte." +msgid "We may contact you periodically to ask if anything has changed with the property you reported." +msgstr "Det kan hende vi periodisk tar kontakt med deg for å spørre om noe har endret seg med eiedommen du rapporterte." -#: templates/web/bromley/report/display.html:141 -#: templates/web/fixmystreet/report/display.html:153 +#: templates/web/bromley/report/display.html:143 +#: templates/web/fixmystreet/report/update-form.html:115 msgid "We never show your email" msgstr "Vi viser aldri din e-postadresse" #: templates/web/bromley/report/new/fill_in_details_form.html:133 #: templates/web/bromley/report/new/fill_in_details_form.html:179 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:130 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:190 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:134 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:201 +#: templates/web/zurich/report/new/fill_in_details_form.html:96 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:349 -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." +#: 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." -#: templates/web/default/index.html:34 templates/web/emptyhomes/index.html:59 -#: templates/web/fixmystreet/index.html:45 +#: templates/web/default/index-steps.html:31 msgid "We send it to the council on your behalf" msgstr "Vi sender til administrasjon på dine vegne" #: templates/web/bromley/report/new/fill_in_details_form.html:217 #: templates/web/default/report/new/notes.html:5 -msgid "" -"We will only use your personal information in accordance with our <a href=\"/" -"faq#privacy\">privacy policy.</a>" -msgstr "" -"Vi vil kun bruke personlig informasjon om deg i henhold til vår <a href=\"/" -"faq#privacy\">personvernpolicy.</a>" +#: templates/web/fixmybarangay/report/new/notes.html:5 +msgid "We will only use your personal information in accordance with our <a href=\"/faq#privacy\">privacy policy.</a>" +msgstr "Vi vil kun bruke personlig informasjon om deg i henhold til vår <a href=\"/faq#privacy\">personvernpolicy.</a>" #: templates/web/fixmystreet/report/new/notes.html:4 -msgid "" -"We will only use your personal information in accordance with our <a href=\"/" -"privacy\">privacy policy.</a>" -msgstr "" -"Vi vil kun bruke personlige informasjon om deg i henhold til våre <a href=\"/" -"faq#privacy\">personvernsregler.</a>" +#: templates/web/oxfordshire/report/new/notes.html:4 +msgid "We will only use your personal information in accordance with our <a href=\"/privacy\">privacy policy.</a>" +msgstr "Vi vil kun bruke personlige informasjon om deg i henhold til våre <a href=\"/faq#privacy\">personvernsregler.</a>" #: templates/web/emptyhomes/contact/blurb.html:2 -msgid "" -"We’d love to hear what you think about this website. Just fill in the " -"form. Please don’t contact us about individual empty homes; use the " -"box accessed from <a href=\"/\">the front page</a>." -msgstr "" -"Vi vil gjerne høre hva du tenker om dette nettstedet. Det er bare å fylle " -"inn skjemaet. Vær så snill å ikke kontakte oss om individuelle tomme hjem. " -"For det bør du i stedet bruke boksen tilgjengelig fra <a href=\"/" -"\">forsiden</a>." +msgid "We’d love to hear what you think about this website. Just fill in the form. Please don’t contact us about individual empty homes; use the box accessed from <a href=\"/\">the front page</a>." +msgstr "Vi vil gjerne høre hva du tenker om dette nettstedet. Det er bare å fylle inn skjemaet. Vær så snill å ikke kontakte oss om individuelle tomme hjem. For det bør du i stedet bruke boksen tilgjengelig fra <a href=\"/\">forsiden</a>." #: templates/web/default/contact/blurb.html:8 -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>:" +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/council_contacts.html:41 -#: templates/web/default/admin/council_edit.html:41 +#: 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 "Når redigert" -#: templates/web/default/admin/list_flagged.html:19 -#: templates/web/default/admin/search_reports.html:22 +#: templates/web/default/admin/problem_row.html:35 msgid "When sent" msgstr "Når sendt" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:612 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:621 msgid "Whole block of empty flats" msgstr "Hel blokk med tomme leiligheter" -#: templates/web/default/open311/index.html:25 -msgid "" -"With request searches, it is also possible to search for agency_responsible " -"to limit the requests to those sent to a single administration. The search " -"term is the administration ID provided by <a href=\"%s\">MaPit</a>." -msgstr "" -"Når du søker etter forespørsler, så er det også mulig å søke etter " -"agency_responsible for å begrense det til forespørsler som er sendt til en " -"enkelt adminstrasjon. Søktetermen er administrasjons-IDen som oppgitt av <a " -"href=\"%s\">MaPit</a>." +#: templates/web/default/open311/index.html:94 +msgid "With request searches, it is also possible to search for agency_responsible to limit the requests to those sent to a single administration. The search term is the administration ID provided by <a href=\"%s\">MaPit</a>." +msgstr "Når du søker etter forespørsler, så er det også mulig å søke etter agency_responsible for å begrense det til forespørsler som er sendt til en enkelt adminstrasjon. Søktetermen er administrasjons-IDen som oppgitt av <a href=\"%s\">MaPit</a>." -#: templates/web/fixmystreet/footer.html:22 -msgid "" -"Would you like better integration with FixMyStreet? <a href=\"http://www." -"mysociety.org/for-councils/fixmystreet/\">Find out about FixMyStreet for " -"councils</a>." -msgstr "" -"Ønsker dere bedre integrasjon med FiksGataMi? <a href=\"/for-councils\"> " -"Finn ut mer om FiksGataMi for administrajoner</a>." +#: templates/web/fixmystreet/footer.html:21 +#: templates/web/stevenage/footer.html:22 +msgid "Would you like better integration with FixMyStreet? <a href=\"http://www.mysociety.org/for-councils/fixmystreet/\">Find out about FixMyStreet for councils</a>." +msgstr "Ønsker dere bedre integrasjon med FiksGataMi? <a href=\"/for-councils\"> Finn ut mer om FiksGataMi for administrajoner</a>." -#: templates/web/fixmystreet/footer.html:18 -msgid "" -"Would you like to contribute to FixMyStreet? Our code is open source and <a " -"href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>." -msgstr "" -"Ønsker du å bidra til FiksGataMi? Kildekoden vår er fri programvare og <a " -"href=\"http://github.com/mysociety/fixmystreet\">tilgjengelig på GitHub</a>." +#: templates/web/fixmystreet/footer.html:17 +#: templates/web/stevenage/footer.html:18 +msgid "Would you like to contribute to FixMyStreet? Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>." +msgstr "Ønsker du å bidra til FiksGataMi? Kildekoden vår er fri programvare og <a href=\"http://github.com/mysociety/fixmystreet\">tilgjengelig på GitHub</a>." -#: templates/web/default/questionnaire/index.html:102 +#: templates/web/default/questionnaire/index.html:106 #: templates/web/fixmystreet/questionnaire/index.html:96 -msgid "" -"Would you like to receive another questionnaire in 4 weeks, reminding you to " -"check the status?" -msgstr "" -"Kunne du tenke deg å motta en ny forespørsel om 4 uker, som minner deg om å " -"sjekke status?" +msgid "Would you like to receive another questionnaire in 4 weeks, reminding you to check the status?" +msgstr "Kunne du tenke deg å motta en ny forespørsel om 4 uker, som minner deg om å sjekke status?" #: templates/web/default/report/new/notes.html:8 -#: templates/web/fixmystreet/report/new/notes.html:7 -msgid "" -"Writing your message entirely in block capitals makes it hard to read, as " -"does a lack of punctuation." -msgstr "" -"Når du skriver meldingen din med kun store bokstaver blir den vanskelig å " -"lese. Det samme gjelder manglende tegnsetting." +#: templates/web/fixmybarangay/report/new/notes.html:8 +#: templates/web/fixmystreet/report/new/notes.html:8 +#: templates/web/oxfordshire/report/new/notes.html:7 +msgid "Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation." +msgstr "Når du skriver meldingen din med kun store bokstaver blir den vanskelig å lese. Det samme gjelder manglende tegnsetting." #: templates/web/default/admin/stats.html:10 msgid "Year" msgstr "År" -#: templates/web/default/admin/council_contacts.html:48 -#: templates/web/default/admin/council_contacts.html:49 -#: templates/web/default/admin/council_edit.html:5 -#: templates/web/default/admin/list_updates.html:30 -#: templates/web/default/admin/list_updates.html:31 +#: 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/problem_row.html:19 -#: templates/web/default/admin/report_edit.html:27 -#: templates/web/default/admin/report_edit.html:41 -#: templates/web/default/admin/search_users.html:23 -#: templates/web/default/admin/update_edit.html:15 +#: 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:105 +#: 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 "Ja" -#: templates/web/bromley/report/display.html:155 +#: templates/web/bromley/report/display.html:157 #: templates/web/bromley/report/new/fill_in_details_form.html:198 -#: templates/web/fixmystreet/report/display.html:133 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:156 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:161 +#: templates/web/fixmystreet/report/update-form.html:89 msgid "Yes I have a password" msgstr "<strong>Ja</strong>, jeg har et passord" #: templates/web/default/contact/index.html:37 -#: templates/web/fixmystreet/contact/index.html:38 -msgid "" -"You are reporting the following problem report for being abusive, containing " -"personal information, or similar:" -msgstr "" -"Du rapporterer at følgende problem er støtende, inneholder personlig " -"informasjon eller lignende:" +#: templates/web/fixmystreet/contact/index.html:50 +msgid "You are reporting the following problem report for being abusive, containing personal information, or similar:" +msgstr "Du rapporterer at følgende problem er støtende, inneholder personlig informasjon eller lignende:" #: templates/web/default/contact/index.html:15 -#: templates/web/fixmystreet/contact/index.html:16 -msgid "" -"You are reporting the following update for being abusive, containing " -"personal information, or similar:" +#: templates/web/fixmystreet/contact/index.html:28 +msgid "You are reporting the following update for being abusive, containing personal information, or similar:" +msgstr "Du rapporterer at følgende oppdatering er støtende, inneholder personlig informasjon, eller lignende:" + +#: templates/web/default/tokens/confirm_problem.html:19 +#: templates/web/default/tokens/confirm_problem.html:21 +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:8 +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 "" -"Du rapporterer at følgende oppdatering er støtende, inneholder personlig " -"informasjon, eller lignende:" -#: templates/web/emptyhomes/reports/council.html:64 +#: templates/web/default/admin/flagged.html:5 msgid "" -"You can <a href=\"%s\">view all reports for the council</a> or <a href=\"/" -"reports\">show all councils</a>." +"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 "" -"Du kan <a href=\"%s\">se alle rapporter for administrasjonen</a> eller <a " -"href=\"/reports\">se alle administrasjonene</a>." - -#: templates/web/emptyhomes/reports/council.html:66 -msgid "You can <a href=\"/reports\">show all councils</a>." -msgstr "Du kan <a href=\"/reports/\">se alle administrasjoner</a>." -#: templates/web/default/report/new/councils_text_none.html:14 -#: templates/web/default/report/new/councils_text_none.html:16 +#: 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>." +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/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 "" -"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: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" #: perllib/FixMyStreet/App/Controller/Questionnaire.pm:38 -msgid "" -"You have already answered this questionnaire. If you have a question, please " -"<a href='%s'>get in touch</a>, or <a href='%s'>view your problem</a>.\n" -msgstr "" -"Du har allerede besvart dette spørreskjemaet. Hvis du har spørsmål, " -"vennligst <a href='%s'>ta kontakt</a>, eller <a href='%s'>se på ditt " -"problem</a>.\n" +msgid "You have already answered this questionnaire. If you have a question, please <a href='%s'>get in touch</a>, or <a href='%s'>view your problem</a>.\n" +msgstr "Du har allerede besvart dette spørreskjemaet. Hvis du har spørsmål, vennligst <a href='%s'>ta kontakt</a>, eller <a href='%s'>se på ditt problem</a>.\n" #: templates/web/bromley/report/new/fill_in_details_form.html:97 -#: templates/web/default/questionnaire/index.html:92 +#: templates/web/default/questionnaire/index.html:96 #: templates/web/default/report/new/fill_in_details_form.html:93 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:90 #: templates/web/fixmystreet/questionnaire/index.html:87 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:101 -msgid "" -"You have already attached a photo to this report, attaching another one will " -"replace it." -msgstr "" -"Du har allerede lagt ved et bilde til dette problemet. Å legge ved et annet " -"vil bytte ut dette." - -#: templates/web/bromley/report/display.html:106 -#: templates/web/default/report/display.html:106 -#: templates/web/fixmystreet/report/display.html:100 -msgid "" -"You have already attached a photo to this update, attaching another one will " -"replace it." -msgstr "" -"Du har allerede lagt ved et bilde til denne oppdateringen. Å legge ved et " -"annet vil bytte ut dette." +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:99 +#: templates/web/seesomething/report/new/fill_in_details_form.html:59 +#: templates/web/zurich/report/new/fill_in_details_form.html:75 +msgid "You have already attached a photo to this report, attaching another one will replace it." +msgstr "Du har allerede lagt ved et bilde til dette problemet. Å legge ved et annet vil bytte ut dette." + +#: templates/web/bromley/report/display.html:108 +#: templates/web/default/report/update-form.html:59 +#: templates/web/fixmystreet/report/update-form.html:56 +msgid "You have already attached a photo to this update, attaching another one will replace it." +msgstr "Du har allerede lagt ved et bilde til denne oppdateringen. Å legge ved et annet vil bytte ut dette." #: templates/web/default/auth/sign_out.html:3 +#: templates/web/seesomething/auth/sign_out.html:3 +#: templates/web/zurich/auth/sign_out.html:3 msgid "You have been signed out" msgstr "Du er allerede logget ut" #: templates/web/bromley/report/new/fill_in_details_form.html:25 #: templates/web/default/report/new/fill_in_details_form.html:7 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:27 -msgid "" -"You have located the problem at the point marked with a green pin on the " -"map. If this is not the correct location, simply click on the map again. " -msgstr "" -"Du har plassert problemet ved punktet i kartet som er markert med en grønn " -"nål. Hvis dette ikke er korrekt plassering kan du klikke i kartet på nytt." +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:7 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:28 +#: templates/web/zurich/report/new/fill_in_details_form.html:13 +msgid "You have located the problem at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. " +msgstr "Du har plassert problemet ved punktet i kartet som er markert med en grønn nål. Hvis dette ikke er korrekt plassering kan du klikke i kartet på nytt." #: templates/web/default/tokens/confirm_alert.html:7 msgid "You have successfully confirmed your alert." msgstr "Du har nå lykkes med å bekrefte ditt varsel." +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:6 +msgid "You have successfully confirmed your email address." +msgstr "Du har nå lykkes med å bekrefte din e-postadresse." + #: templates/web/default/tokens/confirm_problem.html:14 #: templates/web/default/tokens/confirm_problem.html:15 msgid "You have successfully confirmed your problem" msgstr "Du har nå lykkes med å bekrefte ditt problem" -# "portalen" ? #: templates/web/default/tokens/confirm_update.html:11 #: templates/web/default/tokens/confirm_update.html:12 -msgid "" -"You have successfully confirmed your update and you can now <a href=\"%s" -"\">view it on the site</a>." -msgstr "" -"Du har nå bekreftet din oppdatering <a href=\"%s\">og kan se den på dette " -"nettstedet</a>." +msgid "You have successfully confirmed your update and you can now <a href=\"%s\">view it on the site</a>." +msgstr "Du har nå bekreftet din oppdatering <a href=\"%s\">og kan se den på dette nettstedet</a>." #: templates/web/default/tokens/confirm_alert.html:11 msgid "You have successfully created your alert." @@ -3807,24 +4306,27 @@ msgstr "Du har lykkes med å opprette ditt varsel." msgid "You have successfully deleted your alert." msgstr "Sletting av ditt varsel var vellykket." -#: perllib/FixMyStreet/App/Controller/Report/New.pm:740 -#: perllib/FixMyStreet/App/Controller/Report/Update.pm:136 -msgid "" -"You have successfully signed in; please check and confirm your details are " -"accurate:" +#: perllib/FixMyStreet/App/Controller/Report/New.pm:754 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:140 +msgid "You have successfully signed in; please check and confirm your details are accurate:" +msgstr "Du har lykkes med å logge inn. Vennligst sjekk og bekreft at dine detaljer er korrekte:" + +#: templates/web/default/email_sent.html:13 +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 "" -"Du har lykkes med å logge inn. Vennligst sjekk og bekreft at dine detaljer " -"er korrekte:" -#: templates/web/default/email_sent.html:26 +#: templates/web/default/admin/bodies.html:9 msgid "" -"You must now click the link in the email we've just sent you — if you " -"do not, %s." +"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 "" -"Du må nå åpne lenken i e-posten vi akkurat sendte deg — dersom du ikke " -"gjør det, %s" -#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:71 msgid "You really want to resend?" msgstr "Ønsker du virkelig å sende på nytt?" @@ -3841,16 +4343,25 @@ msgstr "Dine rapporter" #: templates/web/fixmystreet/alert/_list.html:89 #: templates/web/fixmystreet/alert/updates.html:19 #: templates/web/fixmystreet/alert/updates.html:22 -#: templates/web/fixmystreet/contact/index.html:72 -#: templates/web/fixmystreet/report/display.html:34 -#: templates/web/fixmystreet/report/display.html:36 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:142 +#: templates/web/fixmystreet/contact/index.html:84 +#: templates/web/fixmystreet/report/display.html:65 +#: templates/web/fixmystreet/report/display.html:67 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:115 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:147 +#: templates/web/zurich/report/new/fill_in_details_form.html:88 msgid "Your email" msgstr "Din e-post" -#: templates/web/bromley/report/display.html:130 +#: templates/web/seesomething/report/new/fill_in_details_form.html:81 +msgid "Your email (optional)" +msgstr "Din e-postadresse (valgfritt)" + +#: templates/web/bromley/report/display.html:132 #: templates/web/fixmystreet/auth/general.html:26 -#: templates/web/fixmystreet/report/display.html:124 +#: 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 "Din e-postadresse" @@ -3859,51 +4370,55 @@ msgid "Your email address:" msgstr "Din e-postadresse:" #: templates/web/default/alert/_list.html:92 -#: templates/web/default/report/display.html:128 #: templates/web/default/report/new/fill_in_details_form.html:124 +#: templates/web/default/report/update-form.html:81 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:133 +#: templates/web/fixmybarangay/alert/_list.html:37 msgid "Your email:" msgstr "Din e-post" -#: templates/web/bromley/report/display.html:193 +#: templates/web/bromley/report/display.html:195 #: templates/web/bromley/report/new/fill_in_details_form.html:117 #: templates/web/bromley/report/new/fill_in_details_form.html:164 msgid "Your first name" msgstr "Ditt fornavn" #: templates/web/fixmystreet/report/updates-sidebar-notes.html:5 -msgid "" -"Your information will only be used in accordance with our <a href=\"/privacy" -"\">privacy policy</a>" -msgstr "" -"Vi vil kun bruke personlig informasjon om deg i henhold til våre <a href=\"/" -"faq#privacy\">personvernsregler.</a>" +msgid "Your information will only be used in accordance with our <a href=\"/privacy\">privacy policy</a>" +msgstr "Vi vil kun bruke personlig informasjon om deg i henhold til våre <a href=\"/faq#privacy\">personvernsregler.</a>" -#: templates/web/bromley/report/display.html:199 +#: templates/web/bromley/report/display.html:201 #: templates/web/bromley/report/new/fill_in_details_form.html:123 #: templates/web/bromley/report/new/fill_in_details_form.html:170 msgid "Your last name" msgstr "Ditt etternavn" -#: templates/web/fixmystreet/auth/general.html:53 -#: templates/web/fixmystreet/contact/index.html:65 -#: templates/web/fixmystreet/report/display.html:181 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:121 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:181 +#: 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 "Ditt navn" #: templates/web/default/auth/general.html:59 #: templates/web/default/contact/index.html:68 -#: templates/web/default/report/display.html:202 #: templates/web/default/report/new/fill_in_details_form.html:203 +#: templates/web/default/report/update-form.html:151 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:124 msgid "Your name:" msgstr "Ditt navn:" -#: templates/web/bromley/report/display.html:160 +#: templates/web/bromley/report/display.html:162 #: templates/web/bromley/report/new/fill_in_details_form.html:203 -#: templates/web/fixmystreet/auth/general.html:37 -#: templates/web/fixmystreet/report/display.html:138 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:161 +#: templates/web/fixmystreet/auth/general.html:41 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:166 +#: templates/web/fixmystreet/report/update-form.html:94 +#: templates/web/seesomething/auth/general.html:30 +#: templates/web/zurich/auth/general.html:34 msgid "Your password" msgstr "Ditt passord" @@ -3913,8 +4428,10 @@ msgstr "Ditt passord har blitt endret" #: 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:134 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:195 +#: 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 "Ditt telefonnummer" @@ -3922,16 +4439,23 @@ msgstr "Ditt telefonnummer" msgid "Your report" msgstr "Dine rapporter" +#: templates/web/default/report_created.html:6 +msgid "Your report has been created and will shortly be sent." +msgstr "Din rapport har blitt opprettet og vil bli sendt innen kort tid." + #: 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:47 -#: templates/web/reading/footer.html:7 +#: 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 "Dine oppdateringer" -#: templates/web/default/my/my.html:45 templates/web/fixmystreet/my/my.html:45 +#: templates/web/default/my/my.html:45 templates/web/fixmystreet/my/my.html:49 msgid "Your updates" msgstr "Dine oppdateringer" @@ -3939,70 +4463,140 @@ msgstr "Dine oppdateringer" msgid "Your email:" msgstr "Din e-post:" -#: templates/web/default/admin/timeline.html:6 +#: templates/web/default/admin/timeline.html:4 msgid "by %s" msgstr "av %s" -#: templates/web/default/reports/council.html:12 -#: templates/web/default/reports/council.html:13 -#: templates/web/emptyhomes/reports/council.html:6 -#: templates/web/emptyhomes/reports/council.html:7 +#: templates/web/default/reports/body.html:6 +#: templates/web/default/reports/body.html:7 msgid "council" msgstr "administrasjon" -#: templates/web/default/admin/report_edit.html:15 +#: perllib/FixMyStreet/DB/Result/Problem.pm:649 +msgid "council ref: %s" +msgstr "administrasjonsreferanse: %s" + +#: 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 "brukte ikke kart" #: templates/web/default/alert/index.html:33 -#: templates/web/fixmystreet/around/postcode_form.html:17 +#: templates/web/fixmystreet/around/postcode_form.html:20 +#: templates/web/seesomething/around/postcode_form.html:9 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" -#: perllib/Utils.pm:289 +#: 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 "sist oppdatert %s" + +#: perllib/Utils.pm:263 msgid "less than a minute" msgstr "mindre enn et minutt" -#: templates/web/default/report/updates.html:27 -msgid "marked as %s" -msgstr "markert som %s" +#: templates/web/default/report/updates.html:57 +msgid "marked as a duplicate report" +msgstr "" + +#: templates/web/default/report/updates.html:47 +msgid "marked as action scheduled" +msgstr "" + +#: templates/web/default/report/updates.html:59 +msgid "marked as an internal referral" +msgstr "" + +#: templates/web/default/report/updates.html:49 +msgid "marked as closed" +msgstr "" -#: templates/web/default/report/updates.html:25 +#: templates/web/default/report/updates.html:28 +#: templates/web/default/report/updates.html:51 msgid "marked as fixed" msgstr "markert som fikset" -#: perllib/FixMyStreet/App/Controller/Admin.pm:112 +#: templates/web/default/report/updates.html:45 +msgid "marked as in progress" +msgstr "" + +#: templates/web/default/report/updates.html:41 +msgid "marked as investigating" +msgstr "" + +#: templates/web/default/report/updates.html:55 +msgid "marked as not the council's responsibility" +msgstr "" + +#: templates/web/default/report/updates.html:43 +msgid "marked as planned" +msgstr "" + +#: templates/web/default/report/updates.html:53 +msgid "marked as unable to fix" +msgstr "" + +#: 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 "n/a" #: templates/web/default/alert/_list.html:87 +#: templates/web/fixmybarangay/alert/_list.html:32 #: templates/web/fixmystreet/alert/_list.html:85 msgid "or" msgstr "eller" -#: templates/web/default/admin/report_edit.html:15 -msgid "originally entered" -msgstr "søkte etter" +#: 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:16 +#: 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: “%s”" +msgstr "opprinnelig lagt inn: “%s”" + +#: templates/web/default/admin/report_edit.html:30 msgid "other areas:" msgstr "andre områder:" -#: templates/web/default/report/updates.html:26 +#: templates/web/default/report/updates.html:29 +#: templates/web/default/report/updates.html:39 msgid "reopened" msgstr "åpnet på nytt" #: templates/web/barnet/header.html:71 templates/web/bromley/header.html:100 #: templates/web/bromley/header.html:65 -#: templates/web/fixmybarangay/header.html.orig:43 -#: templates/web/fixmystreet/header.html:48 -#: templates/web/zurich/header.html:48 +#: templates/web/fixmybarangay/header.html:67 +#: templates/web/fixmystreet/header.html:51 +#: templates/web/oxfordshire/header.html:112 +#: templates/web/oxfordshire/header.html:48 +#: templates/web/stevenage/header.html:98 templates/web/zurich/footer.html:12 msgid "sign out" msgstr "logg ut" @@ -4010,94 +4604,95 @@ msgstr "logg ut" #: templates/web/bromley/report/new/fill_in_details_form.html:7 #: templates/web/default/report/new/fill_in_details_form.html:11 #: templates/web/default/report/new/fill_in_details_form.html:14 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:14 #: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 #: templates/web/fixmystreet/report/new/fill_in_details_form.html:9 msgid "the local council" msgstr "den lokale administrasjonen" -#: perllib/FixMyStreet/DB/Result/Problem.pm:541 -msgid "the map was not used so pin location may be inaccurate" -msgstr "kartet ble ikke brukt, så nåleposisjon kan være unøyaktig" - -#: perllib/FixMyStreet/DB/Result/Problem.pm:603 -msgid "their ref: %s" -msgstr "deres ref: %s" +#: templates/web/default/report/_main.html:6 +#: templates/web/zurich/report/_main.html:5 +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:330 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362 msgid "this type of local problem" msgstr "denne type lokalt problem" -#: perllib/Utils.pm:263 +#: perllib/Utils.pm:235 msgid "today" msgstr "idag" -#: templates/web/default/admin/report_edit.html:15 +#: 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 "brukte kart" -#: templates/web/default/admin/update_edit.html:26 +#: templates/web/default/admin/update_edit.html:35 msgid "user is from same council as problem - %d" msgstr "bruker er fra samme administrasjon som problemet - %d" -#: templates/web/default/admin/update_edit.html:29 +#: templates/web/default/admin/update_edit.html:38 msgid "user is problem owner" msgstr "bruker er eier av problemet" -#: templates/web/default/reports/council.html:0 -#: templates/web/default/reports/council.html:9 -#: templates/web/emptyhomes/reports/council.html:0 -#: templates/web/emptyhomes/reports/council.html:3 +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:3 msgid "ward" msgstr "bydel" -#: templates/web/default/email_sent.html:15 -#: templates/web/default/email_sent.html:3 -msgid "we'll hang on to your alert while you're checking your email." -msgstr "vi tar vare på ditt varsel mens du sjekker din e-post." - -#: templates/web/default/email_sent.html:3 -#: templates/web/default/email_sent.html:7 -msgid "we'll hang on to your problem report while you're checking your email." -msgstr "vi tar vare på rapporten din mens du sjekker e-post." +#: templates/web/default/front/stats.html:17 +#, perl-format +msgid "<big>%s</big> report recently" +msgid_plural "<big>%s</big> reports recently" +msgstr[0] "<big>%s</big> rapportert<br>nylig" +msgstr[1] "<big>%s</big> rapportert<br>nylig" -#: templates/web/default/email_sent.html:11 -#: templates/web/default/email_sent.html:3 -msgid "we'll hang on to your update while you're checking your email." -msgstr "vi tar vare på din oppdatering mens du sjekker din e-post." +#: perllib/Utils.pm:282 +#, perl-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d time" +msgstr[1] "%d timer" -#: templates/web/default/email_sent.html:14 -#: templates/web/default/email_sent.html:3 -msgid "your alert will not be activated" -msgstr "ditt varsel vil ikke bli aktivert" +#: templates/web/default/report/_support.html:6 +#, perl-format +msgid "%d supporter" +msgid_plural "%d supporters" +msgstr[0] "%d støttespiller" +msgstr[1] "%d støttespillere" -#: templates/web/default/email_sent.html:3 -#: templates/web/default/email_sent.html:6 -msgid "your problem will not be posted" -msgstr "vil ditt problem ikke bli publisert" +#: perllib/Utils.pm:284 +#, perl-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minutt" +msgstr[1] "%d minutter" -#: templates/web/default/email_sent.html:10 -#: templates/web/default/email_sent.html:3 -msgid "your update will not be posted" -msgstr "din oppdatering vil ikke bli publisert" +#: templates/web/default/front/stats.html:29 +#, perl-format +msgid "<big>%s</big> update on reports" +msgid_plural "<big>%s</big> updates on reports" +msgstr[0] "<big>%s</big> rapport-<br>oppdatering" +msgstr[1] "<big>%s</big> rapport-<br>oppdateringer" #: templates/web/emptyhomes/report/new/councils_text_none.html:3 #, perl-format 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] "" -"Vi har ennå ikke detaljer for administrasjonen som dekker dette stedet." -msgstr[1] "" -"Vi har ennå ikke detaljer for administrasjonene som dekker dette stedet." - -#: templates/web/emptyhomes/front/stats.html:17 +msgid_plural "We do not yet have details for the councils that cover this location." +msgstr[0] "Vi har ennå ikke detaljer for administrasjonen som dekker dette stedet." +msgstr[1] "Vi har ennå ikke detaljer for administrasjonene som dekker dette stedet." + +#: perllib/Utils.pm:278 #, perl-format -msgid "<big>%s</big> report recently" -msgid_plural "<big>%s</big> reports recently" -msgstr[0] "<big>%s</big> rapportert<br>nylig" -msgstr[1] "<big>%s</big> rapportert<br>nylig" +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "%d uke" +msgstr[1] "%d uker" -#: templates/web/emptyhomes/front/stats.html:12 +#: templates/web/default/front/stats.html:12 #, perl-format msgid "<big>%s</big> report in past week" msgid_plural "<big>%s</big> reports in past week" @@ -4113,116 +4708,30 @@ msgstr[1] "<big>%s</big> fikset siste måned" #: templates/web/default/report/new/councils_text_some.html:14 #, perl-format -msgid "" -"We do <strong>not</strong> yet have details for the other council that " -"covers this location." -msgid_plural "" -"We do <strong>not</strong> yet have details for the other councils that " -"cover this location." -msgstr[0] "" -"Vi har ennå <strong>ikke</strong> detaljene for den andre administrasjonen " -"som dekker dette stedet." -msgstr[1] "" -"Vi har ennå <strong>ikke</strong> detaljene for de andre administrasjonene " -"som dekker dette stedet." +msgid "We do <strong>not</strong> yet have details for the other council that covers this location." +msgid_plural "We do <strong>not</strong> yet have details for the other councils that cover this location." +msgstr[0] "Vi har ennå <strong>ikke</strong> detaljene for den andre administrasjonen som dekker dette stedet." +msgstr[1] "Vi har ennå <strong>ikke</strong> detaljene for de andre administrasjonene som dekker dette stedet." -#: templates/web/default/front/stats.html:29 +#: perllib/Utils.pm:280 #, perl-format -msgid "<big>%s</big> update on reports" -msgid_plural "<big>%s</big> updates on reports" -msgstr[0] "<big>%s</big> rapport-<br>oppdatering" -msgstr[1] "<big>%s</big> rapport-<br>oppdateringer" - -#~ msgid "FixMyStreet for Councils" -#~ msgstr "FiksGataMi for det offentlige" - -#~ msgid "Questions and Answers :: FixMyStreet for Councils" -#~ msgstr "Spørsmål og svar :: FiksGataMi for det offentlige" +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "%d dag" +msgstr[1] "%d dager" -#~ msgid "" -#~ "That spot does not appear to be covered by a council. If you have tried " -#~ "to report an issue past the shoreline, for example, please specify the " -#~ "closest point on land." -#~ msgstr "" -#~ "Punktet ser ikke ut til å være dekket av en administrasjon. Hvis du for " -#~ "eksempel har forsøkt å rapportere et problem utenfor kysten, marker " -#~ "nærmeste punkt på land." +#, fuzzy +#~ msgid "The email field is required" +#~ msgstr "Denne informasjonen er påkrevd" -#~ msgid "The requested URL was not found on this server." -#~ msgstr "Den forespurte URL-en ble ikke funnet på denne tjeneren" +#~ msgid "End Year:" +#~ msgstr "Sluttår:" -#~ msgid "" -#~ "To find out what local alerts we have for you, please enter your GB\n" -#~ " postcode or street name and area" -#~ msgstr "" -#~ "Du finner lokale problemer ved å søke på ditt postnummer, veinavn eller " -#~ "sted" +#~ msgid "End month:" +#~ msgstr "Sluttmåned:" -#~ msgid "We do not currently cover Northern Ireland, I'm afraid." -#~ msgstr "Vi dekker desverre ikke Nord-Irland." +#~ msgid "Start Year:" +#~ msgstr "Startår:" -#, fuzzy -#~ msgid "<strong>Yes</strong>, I have a password" -#~ msgstr "<strong>Ja</strong>, jeg har et passord:" - -#~ msgid "<strong>Yes</strong>, I have a password:" -#~ msgstr "<strong>Ja</strong>, jeg har et passord:" - -#~ msgid "" -#~ "<a href=\"http://www.mysociety.org/\"><img id=\"logo\" width=\"133\" " -#~ "height=\"26\" src=\"/i/mysociety-dark.png\" alt=\"View mySociety.org" -#~ "\"><span id=\"logoie\"></span></a>" -#~ msgstr "" -#~ "<div id=\"logo\" align=\"center\"><a href=\"http://www.nuug.no/" -#~ "\">Foreningen NUUG</a></div>" - -#~ msgid "" -#~ "Are you from a council? Would you like better integration with " -#~ "FixMyStreet?" -#~ msgstr "" -#~ "Er du fra det offentlige? Kunne du tenke deg bedre integrasjon med " -#~ "FiksGataMi?" - -#~ msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a>" -#~ msgstr "Bygget av <a href=\"http://www.mysociety.org/\">mySociety</a>" - -#~ msgid "Hide stale reports" -#~ msgstr "Skjul utdaterte rapporter" - -#~ msgid "Include stale reports" -#~ msgstr "Inkluder utdaterte problemer" - -#~ msgid "Old fixed" -#~ msgstr "Eldre problemer som er løst" - -#~ msgid "Old problems, state unknown" -#~ msgstr "Eldre problemer med ukjent status" - -#~ msgid "FixMyStreet updates" -#~ msgstr "Fiksgatami-oppdateringer" - -#~ msgid "" -#~ "Map contains Ordnance Survey data © Crown copyright and database " -#~ "right 2010." -#~ msgstr "" -#~ "Kartet inneholder data fra Ordnance Survey © Crown copyright og " -#~ "databaserettigheter 2010." - -#~ msgid "" -#~ "Map contains Ordnance Survey data © Crown copyright and database " -#~ "right 2010.<br>© 2011 <a href=\"http://www.bing.com/maps/" -#~ "\">Microsoft</a>. © AND, Navteq, Ordnance Survey." -#~ msgstr "" -#~ "Kartet inneholder data fra Ordnance Survey © Crown copyright og " -#~ "databaserettigheter 2010. <a href=\"http://www.bing.com/maps/" -#~ "\">Microsoft</a>. © AND, Navteq, Ordnance Survey." - -#~ msgid "Photos of recent reports" -#~ msgstr "Bilder av nylig meldte problemer" - -#~ msgid "" -#~ "We do not cover Northern Ireland, I'm afraid, as our licence doesn't " -#~ "include any maps for the region." -#~ msgstr "" -#~ "Vi dekker ikke nordlige Irland, er jeg redd, da vår lisens ikke " -#~ "inkluderer noen kart for den regionen." +#~ 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 new file mode 100644 index 000000000..2494f35e5 --- /dev/null +++ b/locale/nl_NL.UTF-8/LC_MESSAGES/FixMyStreet.po @@ -0,0 +1,4666 @@ +# 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: +# Edwin Bosveld <edwin@inwy.nl>, 2012 +msgid "" +msgstr "" +"Project-Id-Version: fixmystreet\n" +"Report-Msgid-Bugs-To: matthew@mysociety.org\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" +"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" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:602 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373 +msgid " and " +msgstr "en" + +#: templates/web/default/tokens/confirm_problem.html:14 +#: templates/web/default/tokens/confirm_problem.html:17 +msgid " and <strong>we will now send it to the council</strong>" +msgstr "en <strong>we zullen het nu naar de gemeente sturen</strong>" + +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_none.html:11 +#: templates/web/default/report/new/councils_text_none.html:14 +#: templates/web/default/report/new/councils_text_some.html:20 +#: templates/web/default/report/new/councils_text_some.html:23 +#: templates/web/default/report/new/councils_text_some.html:5 +#: templates/web/emptyhomes/report/new/councils_text_all.html:2 +msgid " or " +msgstr "of" + +#: templates/web/default/admin/bodies.html:46 +msgid "%d addresses" +msgstr "%d adressen" + +#: 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:27 +#: templates/web/zurich/admin/index.html:6 +msgid "%d council contacts – %d confirmed, %d unconfirmed" +msgstr "%d gemeente contactpersonen – %d geverifieerd, %d ongeverifieerd" + +#: templates/web/default/admin/edit-league.html:12 +msgid "%d edits by %s" +msgstr "%d bewerkingen door %s" + +#: templates/web/default/admin/index.html:24 +msgid "%d live updates" +msgstr "%d live updates" + +#: templates/web/default/admin/index.html:26 +msgid "%d questionnaires sent – %d answered (%s%%)" +msgstr "%d vragenlijsten verzonden – %d beantwoord (%s%%)" + +#: templates/web/default/pagination.html:10 +msgid "%d to %d of %d" +msgstr "" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:22 +msgid "%s - Summary reports" +msgstr "%s - Overzichtsverslagen" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:651 +msgid "%s ref: %s" +msgstr "%s ref: %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:276 perllib/FixMyStreet/Cobrand/UK.pm:288 +msgid "%s ward, %s" +msgstr "%s district, %s" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:538 +msgid "%s, reported at %s" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/UK.pm:303 perllib/FixMyStreet/Cobrand/UK.pm:315 +msgid "%s, within %s ward" +msgstr "%s, in %s district" + +#: templates/web/default/email_sent.html:29 +msgid "(Don't worry — we'll hang on to your alert while you're checking your email.)" +msgstr "" + +#: templates/web/default/email_sent.html:25 +msgid "(Don't worry — we'll hang on to your problem report while you're checking your email.)" +msgstr "" + +#: templates/web/default/email_sent.html:27 +msgid "(Don't worry — 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:29 +msgid "(Email in abuse table)" +msgstr "(Email in misbruiktabel)" + +#: templates/web/default/alert/_list.html:20 +#: templates/web/fixmystreet/alert/_list.html:24 +msgid "(a default distance which covers roughly 200,000 people)" +msgstr "(een stand afstand waarbinnen ongeveer 200.000 mensen leven)" + +#: templates/web/default/alert/_list.html:25 +#: templates/web/fixmystreet/alert/_list.html:28 +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 +#: templates/web/zurich/report/_item.html:21 +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 +#: templates/web/zurich/report/_item.html:19 +msgid "(fixed)" +msgstr "(opgelost)" + +#: 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 "(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)" +msgstr "(niet verstuurd naar de gemeente)" + +#: templates/web/default/report/new/fill_in_details_form.html:217 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:140 +#: templates/web/zurich/report/new/fill_in_details_form.html:100 +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)" +msgstr "(verstuurd naar beide)" + +#: templates/web/default/report/new/fill_in_details_form.html:211 +msgid "(we never show your email address or phone number)" +msgstr "(we zullen je telefoonnummer of e-mailadres niet tonen)" + +#: templates/web/default/report/update-form.html:158 +msgid "(we never show your email)" +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:379 +msgid "-- Pick a category --" +msgstr "-- Kies een categorie --" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:618 +#: perllib/FixMyStreet/DB/Result/Problem.pm:385 +msgid "-- Pick a property type --" +msgstr "-- Kies een woning type --" + +#: templates/web/emptyhomes/front/stats.html:5 +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’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>" + +#: templates/web/fiksgatami/questionnaire/completed-open.html:1 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try <a href=\"http://www.norge.no/styresmakter/\">writing\n" +"direct to your councillor(s)</a> or, if it’s a problem that could be\n" +"fixed by local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "<p style=\"font-size:150%\">We vinden dat spijtig om te horen. Je kan proberen om direct een raadslid aan te schrijven, of samen met de buurt het probleem te verhelpen.</p>" + +#: templates/web/fixmystreet/questionnaire/completed-open.html:6 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try <a href=\"http://www.writetothem.com/\">writing direct\n" +"to your councillor(s)</a> or, if it’s a problem that could be fixed by\n" +"local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "<p style=\"font-size:150%\">We vinden dat spijtig om te horen. Je kan proberen om direct een raadslid aan te schrijven, of samen met de buurt het probleem te verhelpen.</p>" + +#: templates/web/default/questionnaire/completed-open.html:6 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try writing to your local representative or, if it’s\n" +"a problem that could be fixed by local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "<p style=\"font-size:150%\">We vinden dat spijtig om te horen. Je kan proberen om direct een raadslid aan te schrijven, of samen met de buurt het probleem te verhelpen.</p>" + +#: templates/web/default/questionnaire/index.html:35 +msgid "" +"<p>Getting empty homes back into use can be difficult, but by now a good council\n" +"will have made a lot of progress and reported what they have done on the\n" +"website. Even so properties can remain empty for many months if the owner is\n" +"unwilling or the property is in very poor repair. If nothing has happened or\n" +"you are not satisfied with the progress the council is making, now is the right\n" +"time to say so. We think it’s a good idea to contact some other people who\n" +"may be able to help or put pressure on the council For advice on how to do\n" +"this and other useful information please go to <a\n" +"href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +msgstr "<p>Het is lastig om leegstaande panden weer in gebruik te krijgen. Over het algemeen zijn gemeentes hier lang mee bezig, en ze zullen de status hiervan melden op de website.</p>\n" + +#: templates/web/default/questionnaire/index.html:26 +msgid "" +"<p>Getting empty homes back into use can be difficult. You shouldn’t expect\n" +"the property to be back into use yet. But a good council will have started work\n" +"and should have reported what they have done on the website. If you are not\n" +"satisfied with progress or information from the council, now is the right time\n" +"to say. You may also want to try contacting some other people who may be able\n" +"to help. For advice on how to do this and other useful information please\n" +"go to <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +msgstr "<p>Het is lastig om leegstaande panden weer in gebruik te krijgen. Over het algemeen zijn gemeentes hier lang mee bezig, en ze zullen de status hiervan melden op de website.</p>\n" + +#: templates/web/default/questionnaire/completed.html:9 +msgid "" +"<p>Thank you very much for filling in our questionnaire; if you\n" +"get some more information about the status of your problem, please come back to the\n" +"site and leave an update.</p>" +msgstr "<p>Bedankt voor het invullen van de vragenlijst. Als je meer informatie over de status van je probleem krijgt, kom dan alsjeblieft terug naar de site om een update te plaatsen.</p>" + +#: templates/web/default/around/_report_banner.html:3 +#: templates/web/default/around/_report_banner.html:5 +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:22 +#: templates/web/zurich/admin/index.html:4 +msgid "<strong>%d</strong> live problems" +msgstr "<strong>%d</strong> actieve problemen" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:183 +msgid "<strong>No</strong> Let me confirm my report by email" +msgstr "<strong>Nee</strong> Laat me mijn melding per e-mail bevestigen" + +#: templates/web/fixmystreet/report/update-form.html:110 +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:51 +msgid "<strong>No</strong> let me sign in by email" +msgstr "<strong>Nee</strong> Laat me inloggen per e-mail" + +#: templates/web/default/auth/general.html:55 +msgid "<strong>No</strong>, I do not, let me sign in by email:" +msgstr "<strong>Nee</strong>, die heb ik niet, laat me inloggen per e-mail:" + +#: templates/web/default/report/new/fill_in_details_form.html:162 +msgid "<strong>No</strong>, let me confirm my report by email:" +msgstr "<strong>Nee</strong> Laat me mijn melding per e-mail bevestigen" + +#: templates/web/default/report/update-form.html:117 +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/default/auth/general.html:37 +#: templates/web/default/report/new/fill_in_details_form.html:140 +#: templates/web/default/report/update-form.html:95 +#: templates/web/fixmystreet/auth/general.html:36 +#: templates/web/fixmystreet/auth/general.html:38 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:159 +#: templates/web/fixmystreet/report/update-form.html:87 +msgid "<strong>Yes</strong> I have a password" +msgstr "<strong>Ja</strong, ik heb een wachtwoord" + +#: templates/web/default/static/about-en-gb.html:1 +#: templates/web/default/static/about-en-gb.html:3 +#: templates/web/emptyhomes/header.html:34 +#: templates/web/emptyhomes/static/about-cy.html:1 +#: templates/web/emptyhomes/static/about-cy.html:3 +#: templates/web/emptyhomes/static/about-en-gb.html:1 +#: templates/web/emptyhomes/static/about-en-gb.html:3 +msgid "About us" +msgstr "Over ons" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:81 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:39 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 +msgid "Action Scheduled" +msgstr "" + +#: 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:88 +#: templates/web/zurich/admin/body.html:30 +msgid "Add new category" +msgstr "Voeg een nieuwe categorie toe" + +#: templates/web/default/admin/users.html:45 +msgid "Add user" +msgstr "" + +#: templates/web/default/my/my.html:56 templates/web/fixmystreet/my/my.html:60 +msgid "Added %s" +msgstr "%s toegevoegd" + +#: templates/web/default/auth/change_password.html:29 +msgid "Again:" +msgstr "Nogmaals:" + +#: templates/web/default/admin/timeline.html:35 +msgid "Alert %d created for %s, type %s, parameters %s / %s" +msgstr "Melding %d gemaakt voor %s, type %s, parameters %s / %s" + +#: templates/web/default/admin/timeline.html:37 +msgid "Alert %d disabled (created %s)" +msgstr "Melding %d inactief gemaakt (gemaakt %s)" + +#: templates/web/bromley/report/display.html:209 +#: templates/web/default/report/update-form.html:163 +#: templates/web/fixmystreet/report/update-form.html:148 +msgid "Alert me to future updates" +msgstr "Meld het me als er updates zijn" + +#: templates/web/default/reports/index.html:3 +#: templates/web/fixmybarangay/reports/index.html:3 +#: templates/web/zurich/admin/stats.html:5 +#: templates/web/zurich/reports/index.html:15 +msgid "All Reports" +msgstr "Alle meldingen" + +#: 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 "Alle meldingen" + +#: templates/web/default/admin/stats.html:5 +#: templates/web/zurich/admin/stats.html:8 +msgid "All reports between %s and %s" +msgstr "" + +#: templates/web/default/report/new/councils_text_some.html:2 +msgid "All the information you provide here will be sent to" +msgstr "Alle informatie die je ingevuld hebt zal worden verstuurd naar" + +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:13 +msgid "All the information you provide here will be sent to <strong>%s</strong> or <strong>Roads Service</strong>." +msgstr "Alle informatie die je hier opgeeft zal worden verzonden naar <strong>%s</strong> of <strong>de wegbeheerder</strong>." + +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_all.html:6 +msgid "All the information you provide here will be sent to <strong>%s</strong> or a relevant local body such as <strong>TfL</strong>, via the London Report-It system." +msgstr "Alle informatie die je hier opgeeft zal worden verzonden naar <strong>%s</strong> of naar een een relevante partij zoals <strong>TfL</strong>, via het London Report-It systeem." + +#: templates/web/bromley/report/new/fill_in_details_form.html:4 +#: templates/web/bromley/report/new/fill_in_details_form.html:6 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:20 +#: templates/web/default/report/new/fill_in_details_form.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:13 +#: templates/web/emptyhomes/report/new/councils_text_all.html:2 +#: templates/web/emptyhomes/report/new/councils_text_all.html:4 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:13 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:8 +msgid "All the information you provide here will be sent to <strong>%s</strong>." +msgstr "Alle informatie die je hier opgeeft zal worden verzonden naar <strong>%s</strong>." + +#: templates/web/default/questionnaire/index.html:60 +#: templates/web/fixmystreet/questionnaire/index.html:54 +msgid "An update marked this problem as fixed." +msgstr "Een update heeft dit probleem als opgelost gemarkeerd." + +#: templates/web/default/admin/list_updates.html:32 +#: templates/web/default/admin/problem_row.html:20 +msgid "Anonymous" +msgstr "Anoniem" + +#: templates/web/default/admin/report_edit.html:62 +#: templates/web/default/admin/update_edit.html:23 +msgid "Anonymous:" +msgstr "Anoniem:" + +#: templates/web/default/footer.html:26 +msgid "Are you a <strong>developer</strong>? Would you like to contribute to FixMyStreet?" +msgstr "Ben je een <strong>ontwikkelaar</strong>? Wil je bijdragen aan FixMyStreet?" + +#: templates/web/fixmystreet/footer.html:16 +#: templates/web/stevenage/footer.html:17 +msgid "Are you a developer?" +msgstr "Ben je een ontwikkelaar?" + +#: templates/web/fixmystreet/footer.html:20 +#: templates/web/stevenage/footer.html:21 +msgid "Are you from a council?" +msgstr "Ben je van een gemeente?" + +#: 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:144 +#: templates/web/zurich/admin/stats.html:36 +msgid "Assign to different category:" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:153 +msgid "Assign to external body:" +msgstr "" + +#: 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:141 +#: templates/web/zurich/report/updates.html:11 +msgid "Assigned to %s" +msgstr "" + +#: templates/web/default/open311/index.html:86 +msgid "At most %d requests are returned in each query. The returned requests are ordered by requested_datetime, so to get all requests, do several searches with rolling start_date and end_date." +msgstr "Ten hoogste %d aanvragen worden per query teruggegeven. The teruggegeven aanvragen zijn gesorteerd op requested_datetime, dus om alle aanvragen binnen te krijgen moet je meerdere zoekopdrachten uitvoeren met verschuivende start_date en end_date." + +#: templates/web/default/open311/index.html:78 +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:334 +#: templates/web/zurich/report/_item.html:11 +msgid "Awaiting moderation" +msgstr "" + +#: templates/web/default/js/translation_strings.html:32 +#: templates/web/oxfordshire/js/translation_strings.html:26 +msgid "Back" +msgstr "" + +#: templates/web/default/admin/report_blocks.html:11 +msgid "Ban email address" +msgstr "Verban e-mailadres" + +#: templates/web/fixmybarangay/report/new/notes.html:7 +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: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: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:32 +msgid "Body:" +msgstr "" + +#: templates/web/fiksgatami/footer.html:16 +#: templates/web/fiksgatami/nn/footer.html:16 +msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained by <a href=\"http://www.nuug.no/\">NUUG</a>" +msgstr "Gebouwd door <a href=\"http://www.mysociety.org/\">mySociety</a> en onderhouden door <a href=\"http://www.nuug.no/\">NUUG</a>" + +#: templates/web/default/admin/stats.html:80 +msgid "By Date" +msgstr "Op datum" + +#: templates/web/fixmystreet/around/_report_banner.html:10 +#: templates/web/fixmystreet/around/_report_banner.html:8 +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: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 "Categorie" + +#: 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: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 "Categorie:" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366 +msgid "Category: %s" +msgstr "Categorie: %s" + +#: templates/web/default/auth/change_password.html:1 +#: templates/web/default/auth/change_password.html:3 +#: templates/web/default/auth/change_password.html:33 +msgid "Change Password" +msgstr "Verander Wachtwoord" + +#: 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" + +#: 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 +#: 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 "Gesloten" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:744 +msgid "Closed by council" +msgstr "Gesloten door gemeente" + +#: templates/web/default/my/my.html:32 templates/web/fixmystreet/my/my.html:36 +msgid "Closed reports" +msgstr "Gesloten meldingen" + +#: templates/web/default/admin/problem_row.html:38 +msgid "Closed:" +msgstr "Gesloten:" + +#: templates/web/default/around/tabbed_lists.html:10 +#: templates/web/default/around/tabbed_lists.html:12 +msgid "Closest nearby problems <small>(within %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:36 +#: templates/web/zurich/admin/report_edit.html:49 +msgid "Co-ordinates:" +msgstr "Coördinaten:" + +#: templates/web/default/admin/list_updates.html:10 +msgid "Cobrand" +msgstr "Cobrand" + +#: templates/web/default/admin/report_edit.html:75 +#: templates/web/default/admin/update_edit.html:50 +msgid "Cobrand data:" +msgstr "Cobrand data:" + +#: templates/web/default/admin/report_edit.html:74 +#: templates/web/default/admin/update_edit.html:49 +msgid "Cobrand:" +msgstr "Cobrand:" + +#: 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" + +#: templates/web/default/admin/body_edit.html:47 +msgid "Configure Endpoint" +msgstr "Configureer eindpunt" + +#: templates/web/default/admin/body.html:62 +msgid "Confirm" +msgstr "Bevestig" + +#: templates/web/default/auth/token.html:1 +msgid "Confirm account" +msgstr "Bevestig account" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:177 +#: templates/web/fixmystreet/report/update-form.html:105 +msgid "Confirm by email below, providing a new password at that point. When you confirm, your password will be updated." +msgstr "Bevestig door e-mail beneden en kies een wachtwoord. Als je bevestigd wordt je wachtwoord bijgewerkt." + +#: templates/web/default/questionnaire/creator_fixed.html:1 +#: templates/web/default/tokens/confirm_problem.html:1 +#: templates/web/default/tokens/confirm_problem.html:3 +#: templates/web/default/tokens/confirm_update.html:1 +#: templates/web/default/tokens/confirm_update.html:3 +#: templates/web/emptyhomes/tokens/confirm_problem.html:1 +#: templates/web/emptyhomes/tokens/confirm_problem.html:3 +#: templates/web/southampton/tokens/confirm_problem.html:1 +#: templates/web/southampton/tokens/confirm_problem.html:3 +#: templates/web/zurich/tokens/confirm_problem.html:1 +#: templates/web/zurich/tokens/confirm_problem.html:3 +msgid "Confirmation" +msgstr "Bevestiging" + +#: 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 "Bevestigd" + +#: templates/web/default/admin/stats.html:5 +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:" +msgstr "Bevestigd:" + +#: templates/web/fiksgatami/footer.html:10 +#: templates/web/fiksgatami/nn/footer.html:10 +msgid "Contact" +msgstr "Contactpersoon" + +#: templates/web/default/footer.html:24 +msgid "Contact FixMyStreet" +msgstr "Neem contact op met FixMyStreet" + +#: templates/web/bromley/contact/submit.html:1 +#: templates/web/default/contact/index.html:1 +#: templates/web/default/contact/index.html:2 +#: templates/web/default/contact/submit.html:1 +#: templates/web/fixmystreet/contact/index.html:1 +#: templates/web/fixmystreet/contact/index.html:2 +msgid "Contact Us" +msgstr "Contacteer ons" + +#: templates/web/bromley/contact/submit.html:3 +#: templates/web/default/contact/index.html:6 +#: templates/web/default/contact/submit.html:3 +#: templates/web/fixmystreet/contact/index.html:19 +msgid "Contact the team" +msgstr "Neem contact op met het team" + +#: 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:37 +#: templates/web/oxfordshire/js/translation_strings.html:31 +msgid "Could not look up location" +msgstr "" + +#: templates/web/default/admin/list_updates.html:9 +msgid "Council" +msgstr "Gemeente" + +#: templates/web/default/admin/body.html:1 +#: templates/web/default/admin/body_edit.html:1 +#: templates/web/zurich/admin/body.html:1 +msgid "Council contacts for %s" +msgstr "Gemeente contactpersongen voor %s" + +#: templates/web/default/admin/stats.html:84 +msgid "Council:" +msgstr "Gemeente:" + +#: templates/web/default/admin/stats.html:12 +#: templates/web/default/admin/stats.html:32 +#: templates/web/zurich/admin/stats.html:45 +#: templates/web/zurich/admin/stats.html:50 +msgid "Count" +msgstr "Aantal" + +#: templates/web/default/email_sent.html:1 +msgid "Create a report" +msgstr "Maak een melding" + +#: 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/problem_row.html:34 +#: 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:50 +#: templates/web/zurich/admin/report_edit.html:64 +#: templates/web/zurich/admin/update_edit.html:29 +msgid "Created:" +msgstr "Aangemaakt:" + +#: templates/web/default/admin/stats.html:31 +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" +msgstr "Dashboard" + +#: templates/web/zurich/admin/stats.html:35 +msgid "Dealt with by subdivision within 5 working days" +msgstr "" + +#: 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 "Verwijderd" + +#: templates/web/zurich/admin/index-dm.html:22 +#: templates/web/zurich/admin/index-sdm.html:20 +#: templates/web/zurich/admin/reports.html:12 +msgid "Description" +msgstr "" + +#: 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 "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: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:57 +msgid "Devolved" +msgstr "Overgedragen" + +#: templates/web/default/admin/edit-league.html:8 +msgid "Diligency prize league table" +msgstr "Toewijdingsranglijst" + +#: templates/web/fixmystreet/auth/general.html:30 +msgid "Do you have a FixMyBarangay password?" +msgstr "Heb je een FixMyBarangay wachtwoord?" + +#: templates/web/default/auth/general.html:32 +#: templates/web/fixmystreet/auth/general.html:32 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:155 +#: templates/web/fixmystreet/report/update-form.html:84 +msgid "Do you have a FixMyStreet password?" +msgstr "Heb je een FixMyStreet wachtwoord?" + +#: templates/web/default/questionnaire/index.html:70 +#: templates/web/fixmystreet/questionnaire/index.html:64 +msgid "Don’t know" +msgstr "Geen idee" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:82 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:47 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 +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:31 +#: templates/web/zurich/admin/problem_row.html:42 +msgid "Edit" +msgstr "Bewerk" + +#: templates/web/default/admin/body.html:189 +#: templates/web/zurich/admin/body.html:64 +msgid "Edit body details" +msgstr "" + +#: templates/web/default/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:4 +#: templates/web/zurich/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit.html:5 +msgid "Editing problem %d" +msgstr "Bewerk melding %d" + +#: templates/web/default/admin/update_edit.html:1 +#: templates/web/zurich/admin/update_edit.html:1 +msgid "Editing update %d" +msgstr "Bewerk update %d" + +#: templates/web/default/admin/user_edit.html:1 +msgid "Editing user %d" +msgstr "Bewerk gebruiker %d" + +#: templates/web/default/admin/body_edit.html:86 +msgid "Editor" +msgstr "Redacteur" + +#: 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 "Email" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1286 +msgid "Email added to abuse list" +msgstr "Email toegevoegd aan zwarte lijst" + +#: 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" + +#: templates/web/default/around/_updates.html:5 +msgid "Email me new local problems" +msgstr "Email me nieuwe lokale meldingen" + +#: templates/web/default/report/display.html:34 +msgid "Email me updates" +msgstr "Email me updates" + +#: 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 "Email:" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318 +msgid "Email: %s" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:620 +msgid "Empty flat or maisonette" +msgstr "Lege flat of maisonette" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:619 +msgid "Empty house or bungalow" +msgstr "Leeg huis of bungalow" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:622 +msgid "Empty office or other commercial" +msgstr "Leeg kantoor of ander commercieel" + +#: templates/web/emptyhomes/report/new/form_heading.html:1 +msgid "Empty property details form" +msgstr "Leegstaand pand details formulier" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:623 +msgid "Empty pub or bar" +msgstr "Lege kroeg of bar" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:624 +msgid "Empty public building - school, hospital, etc." +msgstr "Leeg publiek gebouw - school, ziekenhuis etc." + +#: 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/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:70 +#, fuzzy +msgid "End Date:" +msgstr "Einddag:" + +#: templates/web/default/admin/body-form.html:126 +msgid "Endpoint" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/Zurich.pm:71 +msgid "Enter a Zürich street name" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/UK.pm:18 +msgid "Enter a nearby UK postcode, or street name and area" +msgstr "Vul een dichtstbijzijnde UK postcode, of straatnaam en plaats in" + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:25 +msgid "Enter a nearby postcode, or street name and area" +msgstr "Geef dichtstbijzijnde postcode, of straatnaam en plaats" + +#: templates/web/default/around/postcode_form.html:1 +#: templates/web/default/around/postcode_form.html:2 +#: templates/web/fixmystreet/around/postcode_form.html:10 +#: templates/web/fixmystreet/around/postcode_form.html:11 +#: templates/web/seesomething/around/postcode_form.html:3 +#: templates/web/seesomething/around/postcode_form.html:4 +msgid "Enter a nearby street name and area" +msgstr "Geef dichtstbijzijnde straatnaam en plaats" + +#: templates/web/default/auth/general.html:64 +#: templates/web/default/report/new/fill_in_details_form.html:169 +#: templates/web/default/report/update-form.html:124 +msgid "Enter a new password:" +msgstr "Geef nieuw wachtwoord:" + +#: 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 "Geef wachtwoord " + +#: templates/web/default/index-steps.html:26 +msgid "Enter details of the problem" +msgstr "Geef details van het probleem" + +#: templates/web/default/auth/token.html:5 +#: templates/web/default/errors/generic.html:1 +#: templates/web/default/errors/generic.html:3 +#: templates/web/default/tokens/abuse.html:1 +#: templates/web/default/tokens/abuse.html:3 +#: templates/web/default/tokens/error.html:1 +#: templates/web/default/tokens/error.html:3 +msgid "Error" +msgstr "Foutmelding" + +#: templates/web/default/admin/body.html:11 +#: templates/web/default/admin/body_edit.html:18 +msgid "Example postcode %s" +msgstr "Voorbeeld van postcode %s" + +#: templates/web/default/open311/index.html:96 +msgid "Examples:" +msgstr "Voorbeelden:" + +#: templates/web/default/admin/report_edit.html:76 +msgid "Extra data:" +msgstr "Extra info:" + +#: templates/web/bromley/contact/submit.html:14 +#: templates/web/default/contact/submit.html:15 +msgid "Failed to send message. Please try again, or <a href=\"mailto:%s\">email us</a>." +msgstr "Fout opgetreden bij het versturen van het bericht. Probeer het later nog eens of <a href=\"mailto:%s\">mail ons</a>." + +#: templates/web/zurich/admin/index-dm.html:33 +#: templates/web/zurich/admin/index-sdm.html:30 +msgid "Filter report list" +msgstr "" + +#: templates/web/emptyhomes/front/stats.html:6 +msgid "Find latest local and national news" +msgstr "" + +#: templates/web/bromley/report/display.html:191 +#: templates/web/bromley/report/new/fill_in_details_form.html:113 +#: templates/web/bromley/report/new/fill_in_details_form.html:160 +msgid "First Name" +msgstr "Voornaam" + +#: templates/web/default/questionnaire/index.html:79 +#: templates/web/fixmystreet/questionnaire/index.html:73 +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" +msgstr "Fix<span id=\"my\">My</span>Street" + +#: templates/web/default/header.html:24 +msgid "FixMyStreet" +msgstr "FixMyStreet" + +#: templates/web/default/admin/header.html:10 +msgid "FixMyStreet admin:" +msgstr "FixMyStreet admin:" + +#: templates/web/default/alert/index.html:11 +msgid "" +"FixMyStreet has a variety of RSS feeds and email alerts for local problems, including\n" +"alerts for all problems within a particular ward or council, or all problems\n" +"within a certain distance of a particular location." +msgstr "FixMyStreet heeft diverse RSS feeds en e-mail meldingen voor lokale problemen zoals meldingen voor problemen in bepaalde wijken of gemeentes, of alle problemen binnen een bepaalde straal." + +#: templates/web/default/alert/_list.html:71 +#: templates/web/fixmystreet/alert/_list.html:73 +msgid "" +"FixMyStreet sends different categories of problem\n" +"to the appropriate council, so problems within the boundary of a particular council\n" +"might not match the problems sent to that council. For example, a graffiti report\n" +"will be sent to the district council, so will appear in both of the district\n" +"council’s alerts, but will only appear in the \"Within the boundary\" alert\n" +"for the county council." +msgstr "FixMyStreet heeft diverse categorieën per gemeente voor problemen daarom kan het voorkomen dat problemen binnen de gemeentegrenzen niet getoond worden in een bepaalde gemeente." + +#: 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 "Opgelost" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:43 +msgid "Fixed - Council" +msgstr "Opgelost - Gemeente" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:42 +msgid "Fixed - User" +msgstr "Opgelost - Gebruiker" + +#: templates/web/default/my/my.html:27 templates/web/fixmystreet/my/my.html:31 +msgid "Fixed reports" +msgstr "Opgeloste meldingen" + +#: templates/web/default/admin/problem_row.html:37 +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: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:51 +msgid "Flagged:" +msgstr "Gemarkeerd:" + +#: templates/web/default/reports/_ward-list.html:3 +#: templates/web/fixmystreet/reports/_ward-list.html:4 +msgid "Follow a ward link to view only reports within that ward." +msgstr "Klik op de link voor een wijk om alleen problemen in die wijk te bekijken." + +#: templates/web/default/admin/report_edit.html:30 +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?" +msgstr "Wachtwoord vergeten?" + +#: templates/web/default/faq/faq-en-gb.html:1 +#: templates/web/emptyhomes/faq/faq-cy.html:1 +#: templates/web/emptyhomes/faq/faq-en-gb.html:1 +#: templates/web/fiksgatami/faq/faq-nb.html:1 +#: templates/web/fiksgatami/nn/faq/faq-nn.html:1 +#: templates/web/fixmindelo/faq/faq-pt-cv.html:1 +#: templates/web/fixmybarangay/faq/faq-en-gb.html:1 +#: templates/web/fixmystreet/faq/faq-en-gb.html:1 +#: templates/web/fixmystreet/static/privacy.html:1 +#: templates/web/oxfordshire/faq/faq-en-gb.html:1 +msgid "Frequently Asked Questions" +msgstr "Veelgestelde Vragen" + +#: templates/web/default/open311/index.html:138 +msgid "GeoRSS on Google Maps" +msgstr "GeoRSS op Google Maps" + +#: templates/web/bromley/report/display.html:30 +#: templates/web/fixmystreet/around/_updates.html:3 +#: templates/web/fixmystreet/report/display.html:38 +msgid "Get updates" +msgstr "Updates ontvangen" + +#: templates/web/fixmystreet/reports/_rss.html:3 +#: templates/web/fixmystreet/reports/_rss.html:9 +msgid "Get updates of %s problems" +msgstr "Updates over %s problemen ontvangen" + +#: templates/web/fixmystreet/reports/_rss.html:11 +#: templates/web/fixmystreet/reports/_rss.html:3 +msgid "Get updates of problems in this %s" +msgstr "Updates in deze %s ontvangen" + +#: templates/web/default/alert/_list.html:83 +#: templates/web/fixmybarangay/alert/_list.html:28 +#: templates/web/fixmystreet/alert/_list.html:82 +msgid "Give me an RSS feed" +msgstr "Geef me een RSS feed" + +#: templates/web/default/alert/index.html:34 +#: templates/web/default/around/postcode_form.html:8 +#: templates/web/fixmystreet/around/postcode_form.html:21 +#: templates/web/seesomething/around/postcode_form.html:10 +#: templates/web/zurich/admin/stats.html:26 +msgid "Go" +msgstr "Gaan" + +#: templates/web/default/admin/report_edit.html:77 +msgid "Going to send questionnaire?" +msgstr "Vragenlijst versturen?" + +#: 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" + +#: templates/web/default/reports/index.html:8 +msgid "Greyed-out lines are councils that no longer exist." +msgstr "Grijze lijnen zijn gemeentes die niet meer bestaan." + +#: templates/web/default/questionnaire/index.html:61 +#: templates/web/fixmystreet/questionnaire/index.html:55 +msgid "Has this problem been fixed?" +msgstr "Is dit probleem opgelost?" + +#: templates/web/default/questionnaire/index.html:74 +#: templates/web/fixmystreet/questionnaire/index.html:68 +msgid "Have you ever reported a problem to a council before, or is this your first time?" +msgstr "Heb je al eens eerder een probleem aan de gemeente gemeld, of is dit jouw eerste keer?" + +#: 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 "Help" + +#: templates/web/default/alert/_list.html:6 +#: templates/web/fixmystreet/alert/_list.html:8 +msgid "Here are the types of local problem alerts for ‘%s’." +msgstr "Hier zijn de soorten meldingen van lokale problemen voor '%s'." + +#: templates/web/barnet/header.html:70 templates/web/bromley/header.html:64 +#: templates/web/bromley/header.html:99 +#: templates/web/fixmybarangay/header.html:66 +#: templates/web/fixmystreet/header.html:50 +#: templates/web/oxfordshire/header.html:111 +#: templates/web/oxfordshire/header.html:47 +#: templates/web/stevenage/header.html:97 templates/web/zurich/footer.html:11 +msgid "Hi %s" +msgstr "Hoi %s" + +#: 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 "Verborgen" + +#: templates/web/default/around/display_location.html:67 +msgid "Hide old" +msgstr "Verberg oud" + +#: templates/web/default/around/display_location.html:62 +msgid "Hide pins" +msgstr "Verberg spelden" + +#: templates/web/default/admin/body_edit.html:79 +msgid "History" +msgstr "Geschiedenis" + +#: templates/web/default/js/translation_strings.html:31 +#: templates/web/oxfordshire/js/translation_strings.html:25 +msgid "Home" +msgstr "" + +#: templates/web/default/index-steps.html:1 +msgid "How to report a problem" +msgstr "Hoe een melding maken" + +#: 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:733 +msgid "I am afraid you cannot confirm unconfirmed reports." +msgstr "Ik ben bang dat je geen ongeverifieerde meldingen kunt bevestigen." + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:89 +msgid "I'm afraid we couldn't locate your problem in the database.\n" +msgstr "Ik ben bang dat we je melding niet kunnen vinden in onze database.\n" + +#: perllib/FixMyStreet/App/Controller/Tokens.pm:44 +msgid "I'm afraid we couldn't validate that token, as the report was made too long ago." +msgstr "Ik ben bang dat we je token niet kunnen valideren omdat de melding te oud is." + +#: perllib/FixMyStreet/App/Controller/Tokens.pm:259 +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: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 "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 "" + +#: templates/web/default/email_sent.html:15 +msgid "If you do not, your problem will not be posted." +msgstr "" + +#: templates/web/default/email_sent.html:17 +msgid "If you do not, your update will not be posted." +msgstr "" + +#: templates/web/default/report/new/councils_text_none.html:8 +#: templates/web/default/report/new/councils_text_none.html:9 +msgid "If you submit a problem here the subject and details of the problem will be public, but the problem will <strong>not</strong> be reported to the council." +msgstr "Het onderwerp en details van het probleem worden publiek zichtbaar als je deze instuurt, maar het probleem zal <strong>niet</strong> worden verzonden aan de gemeente." + +#: templates/web/emptyhomes/report/new/councils_text_none.html:9 +msgid "If you submit a report here it will be left on the site, but not reported to the council – please still leave your report, so that we can show to the council the activity in their area." +msgstr "Als je een melding maakt zal het worden getoond op de site maar niet naar de gemeente worden gestuurd - stuur de melding toch in zodat we de activiteiten in de omgeving kunnen tonen aan de gemeente." + +#: templates/web/default/auth/token.html:22 +#: templates/web/default/email_sent.html:9 +msgid "If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way." +msgstr "Als je een gratis e-mailadres of spamfilter hebt kan het voorkomen dat deze de e-mail tegenhoud. " + +#: templates/web/default/questionnaire/index.html:86 +#: templates/web/fixmystreet/questionnaire/index.html:77 +msgid "" +"If you wish to leave a public update on the problem, please enter it here\n" +"(please note it will not be sent to the council). For example, what was\n" +"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" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:100 +msgid "Illegal feed selection" +msgstr "Illegale RSS feed selectie" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:82 +#: 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:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 +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: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 "In Behandeling" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:38 +msgid "Incident Category" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:163 +msgid "Include reporter personal details" +msgstr "" + +#: templates/web/default/admin/stats.html:76 +msgid "Include unconfirmed reports" +msgstr "Ongeverifiëerde meldingen meesturen" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:354 +msgid "Incorrect has_photo value \"%s\"" +msgstr "Ongeldige has_photo waarde \"%s\"" + +#: 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 +msgid "Internal referral" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:339 +msgid "Invalid agency_responsible value %s" +msgstr "Ongeldige agency_responsible waarde %s" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1096 +msgid "Invalid end date" +msgstr "Ongeldige einddatum" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:432 +msgid "Invalid format %s specified." +msgstr "Ongeldig formaat %s gespecifieerd" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1092 +msgid "Invalid start date" +msgstr "Ongeldige startdatum" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:81 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:37 +#: templates/web/default/dashboard/index.html:142 +#: templates/web/default/dashboard/index.html:143 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 +msgid "Investigating" +msgstr "Onderzoeken" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:12 +#: templates/web/emptyhomes/tokens/confirm_problem.html:14 +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’t mean the council isn’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 "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’t mean the council isn’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." + +#: 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 "Hou me ingelogd op deze computer" + +#: templates/web/bromley/report/display.html:197 +#: templates/web/bromley/report/new/fill_in_details_form.html:119 +#: templates/web/bromley/report/new/fill_in_details_form.html:166 +msgid "Last Name" +msgstr "Achternaam" + +#: templates/web/default/admin/body.html:58 +#: templates/web/zurich/admin/body.html:15 +msgid "Last editor" +msgstr "Laatste bewerker" + +#: templates/web/default/admin/report_edit.html:72 +msgid "Last update:" +msgstr "Laatste update:" + +#: templates/web/default/admin/problem_row.html:39 +msgid "Last 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" +msgstr "Toon alle meldingen" + +#: templates/web/bromley/report/new/fill_in_details_form.html:69 +#: templates/web/default/report/new/fill_in_details_form.html:68 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:51 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:75 +#: templates/web/seesomething/report/new/fill_in_details_form.html:25 +#: templates/web/zurich/report/new/fill_in_details_form.html:51 +msgid "Loading..." +msgstr "Laden..." + +#: templates/web/default/alert/choose.html:1 +#: templates/web/default/alert/choose.html:3 +#: templates/web/default/alert/index.html:1 +#: templates/web/default/alert/index.html:3 +#: templates/web/default/alert/list.html:1 +#: templates/web/default/alert/list.html:5 +#: templates/web/default/alert/updates.html:1 +#: templates/web/default/tokens/confirm_alert.html:1 +#: templates/web/default/tokens/confirm_alert.html:3 +#: templates/web/emptyhomes/alert/index.html:1 +#: templates/web/emptyhomes/alert/index.html:3 +#: templates/web/fixmybarangay/alert/index.html:1 +#: templates/web/fixmybarangay/alert/index.html:3 +#: templates/web/fixmystreet/alert/updates.html:1 +msgid "Local RSS feeds and email alerts" +msgstr "Lokale RSS feeds en e-mail meldingen" + +#: templates/web/default/alert/list.html:1 +#: templates/web/default/alert/list.html:12 +#: templates/web/default/alert/list.html:14 +#: templates/web/default/alert/list.html:3 +msgid "Local RSS feeds and email alerts for ‘%s’" +msgstr "Lokale RSS feeds en e-mail meldingen voor '%s'" + +#: 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 "Lokale melding" + +#: templates/web/default/index-steps.html:25 +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:43 +#: templates/web/oxfordshire/js/translation_strings.html:37 +msgid "MAP" +msgstr "" + +#: perllib/FixMyStreet/Map/OSM.pm:44 +msgid "Map © <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 © <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" + +#: templates/web/default/contact/index.html:90 +msgid "Message:" +msgstr "Bericht:" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:440 +msgid "Missing jurisdiction_id" +msgstr "Vermiste jurisdiction_id" + +#: templates/web/zurich/admin/stats.html:34 +msgid "Moderated by division within one working day" +msgstr "" + +#: templates/web/default/admin/stats.html:11 +msgid "Month" +msgstr "Maand" + +#: templates/web/default/report/display.html:30 +msgid "More problems nearby" +msgstr "Meer problemen dichtbij" + +#: 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 "Naam" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:74 +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: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:317 +msgid "Name: %s" +msgstr "" + +#: templates/web/fiksgatami/footer.html:3 +#: templates/web/fiksgatami/nn/footer.html:3 +#: templates/web/reading/footer.html:4 +msgid "Navigation" +msgstr "Navigatie:" + +#: perllib/FixMyStreet/Geocode/OSM.pm:166 +msgid "Nearest named road to the pin placed on the map (automatically generated using OpenStreetMap): %s%s" +msgstr "Dichtstbijzijnde straat met naam voor lokatie op de kaart (automatisch gegenereerd via OpenStreetMap): %s%s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:148 +msgid "Nearest postcode to the pin placed on the map (automatically generated): %s (%sm away)" +msgstr "Dichtstbijzijnde postcode voor lokatie op de kaart (automatisch gegenereerd): %s (%sm afstand)" + +#: perllib/FixMyStreet/Cobrand/Default.pm:418 +#: perllib/FixMyStreet/Cobrand/Default.pm:458 +msgid "Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s" +msgstr "Dichtstbijzijnde straat voor lokatie op de kaart (automatisch gegenereerd via Bing Maps): %s" + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:273 +msgid "" +"Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s\n" +"\n" +msgstr "" +"Dichtstbijzijnde weg op basis van de gemarkeerde plek op de kaart (automatisch gegenereerd door Bing Maps): %s\n" +"\n" + +#: templates/web/default/email_sent.html:3 +msgid "Nearly Done! Now check your email..." +msgstr "Bijna klaar! Kijk nu in je e-mail..." + +#: templates/web/default/reports/index.html:16 +#: templates/web/fixmybarangay/reports/index.html:16 +msgid "New <br>problems" +msgstr "Nieuw <br>problemen" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:264 +msgid "New body added" +msgstr "" + +#: 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" + +#: db/alert_types_eha.pl:12 +msgid "New local reports on reportemptyhomes.com" +msgstr "Nieuwe lokale meldingen op reportemptyhomes.com" + +#: templates/web/emptyhomes/reports/index.html:10 +#: templates/web/fiksgatami/nn/reports/index.html:10 +#: templates/web/fiksgatami/reports/index.html:10 +msgid "New problems" +msgstr "Nieuwe meldingen" + +#: db/alert_types.pl:38 +msgid "New problems for {{COUNCIL}} within {{WARD}} ward on FixMyStreet" +msgstr "Nieuwe meldingen voor {{COUNCIL}} binnen {{WARD}} wijk op FixMyStreet" + +#: db/alert_types.pl:26 db/alert_types.pl:30 +msgid "New problems near {{POSTCODE}} on FixMyStreet" +msgstr "Nieuwe meldingen dichtbij {{POSTCODE}} op FixMyStreet" + +#: db/alert_types.pl:10 +msgid "New problems on FixMyStreet" +msgstr "Nieuwe meldingen op FixMyStreet" + +#: db/alert_types.pl:34 +msgid "New problems to {{COUNCIL}} on FixMyStreet" +msgstr "Nieuwe melding voor {{COUNCIL}} op FixMyStreet" + +#: db/alert_types.pl:42 +msgid "New problems within {{NAME}}'s boundary on FixMyStreet" +msgstr "Nieuwe problemen binnen de grenzen van {{NAME}} op FixMyStreet" + +#: templates/web/zurich/admin/index-sdm.html:4 +msgid "New reports" +msgstr "" + +#: db/alert_types_eha.pl:23 +msgid "New reports for {{COUNCIL}} within {{WARD}} ward on reportemptyhomes.com" +msgstr "Nieuwe melding voor {{COUNCIL}} binnen {{WARD}} district op reportemptyhomes.com" + +#: db/alert_types_eha.pl:5 +msgid "New reports on reportemptyhomes.com" +msgstr "Nieuwe meldingen op reportemptyhomes.com" + +#: db/alert_types_eha.pl:16 +msgid "New reports on reportemptyhomes.com near {{POSTCODE}}" +msgstr "Nieuwe meldingen op reportemptyhomes.com dichtbij {{POSTCODE}}" + +#: db/alert_types_eha.pl:19 +msgid "New reports to {{COUNCIL}} on reportemptyhomes.com" +msgstr "Nieuwe melding voor {{COUNCIL}} op reportemptyhomes.com" + +#: db/alert_types_eha.pl:27 +msgid "New reports within {{NAME}}'s boundary on reportemptyhomes.com" +msgstr "Nieuwe melding binnen de grenzen van {{NAME}} op reportemptyhomes.com" + +#: templates/web/default/admin/questionnaire.html:24 +msgid "New state" +msgstr "Nieuwe status" + +#: templates/web/zurich/admin/report_edit-sdm.html:61 +msgid "New update:" +msgstr "" + +#: templates/web/fiksgatami/front/news.html:9 +#: templates/web/fiksgatami/nn/front/news.html:9 +#: templates/web/fixmystreet/front/news.html:8 +msgid "New!" +msgstr "Nieuw!" + +#: templates/web/default/pagination.html:13 +msgid "Next" +msgstr "" + +#: 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 "Nee" + +#: templates/web/default/admin/user-form.html:33 +msgid "No body" +msgstr "" + +#: templates/web/default/admin/stats.html:85 +msgid "No council" +msgstr "Geen gemeente" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:362 +msgid "No council selected" +msgstr "Geen gemeente geselecteerd" + +#: 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:25 +#, fuzzy +msgid "No flagged problems found." +msgstr "Geen gemarkeerde problemen gevonden" + +#: 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:68 +msgid "No further updates" +msgstr "" + +#: templates/web/default/around/around_map_list_items.html:17 +#: templates/web/fixmystreet/around/around_map_list_items.html:8 +msgid "No problems found." +msgstr "Geen problemen gevonden." + +#: templates/web/default/around/on_map_list_items.html:14 +#: templates/web/fixmystreet/around/on_map_list_items.html:6 +msgid "No problems have been reported yet." +msgstr "Er zijn nog geen problemen gemeld." + +#: 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:73 +msgid "Non Public" +msgstr "Niet publiekelijk" + +#: 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 "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 +#: 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 "" + +#: templates/web/zurich/admin/report_edit-sdm.html:21 +msgid "Not for my subdivision" +msgstr "" + +#: templates/web/default/admin/questionnaire.html:6 +msgid "Not reported before" +msgstr "Nog niet gemeld" + +#: templates/web/default/report/_main.html:10 +msgid "Not reported to council" +msgstr "Niet gemeld bij de gemeente" + +#: 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 "Opmerking" + +#: templates/web/default/admin/stats.html:51 +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:157 +#: templates/web/default/admin/body_edit.html:44 +#: templates/web/zurich/admin/body.html:47 +msgid "Note:" +msgstr "Opmerking:" + +#: templates/web/default/open311/index.html:75 +msgid "Note: <strong>%s</strong>" +msgstr "Opmerking: <strong>%s</strong>" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:154 +msgid "Now to submit your report…" +msgstr "Nu om je melding te verzend…" + +#: templates/web/default/report/new/fill_in_details_form.html:131 +msgid "Now to submit your report… do you have a FixMyStreet password?" +msgstr "Nu om je melding te verzend… heb je een FixMyStreet wachtwoord?" + +#: templates/web/fixmystreet/report/update-form.html:83 +msgid "Now to submit your update…" +msgstr "Nu om je update te verzend…" + +#: templates/web/default/report/update-form.html:86 +msgid "Now to submit your update… do you have a FixMyStreet password?" +msgstr "Nu om je update te verzend… heb je een FixMyStreet wachtwoord?" + +#: templates/web/default/js/translation_strings.html:42 +#: templates/web/oxfordshire/js/translation_strings.html:36 +msgid "OK" +msgstr "" + +#: templates/web/default/report/display.html:24 +#: templates/web/default/report/update.html:16 +msgid "Offensive? Unsuitable? Tell us" +msgstr "Beledigend? Ongeschikt? Meld het ons" + +#: templates/web/default/reports/index.html:18 +#: templates/web/fixmybarangay/reports/index.html:18 +msgid "Old / unknown <br>problems" +msgstr "Oude / onbekende <br>problemen" + +#: templates/web/fiksgatami/nn/reports/index.html:12 +#: templates/web/fiksgatami/reports/index.html:12 +msgid "Old problems,<br>state unknown" +msgstr "Oude problemen,<br>status onbekend" + +#: templates/web/default/admin/questionnaire.html:24 +msgid "Old state" +msgstr "Oude status" + +#: templates/web/default/reports/index.html:20 +#: templates/web/fixmybarangay/reports/index.html:20 +msgid "Older <br>fixed" +msgstr "Ouder<br>opgelost" + +#: templates/web/default/reports/index.html:17 +#: templates/web/fixmybarangay/reports/index.html:17 +msgid "Older <br>problems" +msgstr "Oudere<br>problemen" + +#: templates/web/fiksgatami/nn/reports/index.html:14 +#: templates/web/fiksgatami/reports/index.html:14 +msgid "Older fixed" +msgstr "Ouder opgelost" + +#: templates/web/emptyhomes/reports/index.html:11 +#: templates/web/fiksgatami/nn/reports/index.html:11 +#: templates/web/fiksgatami/reports/index.html:11 +msgid "Older problems" +msgstr "Oudere problemen" + +#: 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 "Open" + +#: templates/web/default/my/my.html:22 templates/web/fixmystreet/my/my.html:26 +msgid "Open reports" +msgstr "Open meldingen" + +#: templates/web/default/open311/index.html:72 +msgid "Open311 API for the mySociety FixMyStreet server" +msgstr "Open311 API voor de mySociety FixMyStreet server" + +#: templates/web/default/open311/index.html:82 +msgid "Open311 initiative web page" +msgstr "Open311 initiatief website" + +#: templates/web/default/open311/index.html:83 +msgid "Open311 specification" +msgstr "Open311 specificatie" + +#: templates/web/default/alert/_list.html:58 +#: templates/web/fixmystreet/alert/_list.html:60 +msgid "Or problems reported to:" +msgstr "Of problemen gemeld aan:" + +#: templates/web/default/alert/_list.html:33 +#: templates/web/fixmystreet/alert/_list.html:36 +msgid "Or you can subscribe to an alert based upon what ward or council you’re in:" +msgstr "Of je kan je abonneren op een melding gebaseerd op welke gemeente je woont:" + +#: 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 "Anders" + +#: templates/web/default/footer.html:27 +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:8 +msgid "Owner" +msgstr "Eigenaar" + +#: templates/web/default/errors/page_error_404_not_found.html:1 +#: templates/web/default/errors/page_error_404_not_found.html:3 +msgid "Page Not Found" +msgstr "Pagina Niet Gevonden" + +#: templates/web/default/admin/body-form.html:31 +#: templates/web/zurich/admin/body-form.html:14 +msgid "Parent" +msgstr "" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:51 +msgid "Partial" +msgstr "Gedeeltelijk" + +#: 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 "Wachtwoord (optioneel)" + +#: templates/web/default/auth/change_password.html:25 +msgid "Password:" +msgstr "Wachtwoord:" + +#: 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 +msgid "Phone number (optional)" +msgstr "Telefoonnummer (optioneel)" + +#: 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 "Telefoonnummer:" + +#: 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 "Foto" + +#: templates/web/default/questionnaire/index.html:99 +#: templates/web/default/report/new/fill_in_details_form.html:102 +#: templates/web/default/report/update-form.html:62 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:99 +#: templates/web/fixmystreet/questionnaire/index.html:90 +msgid "Photo:" +msgstr "Foto:" + +#: templates/web/default/alert/list.html:26 +msgid "Photos of recent nearby reports" +msgstr "Foto's van recente meldingen dichtbij" + +#: 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:89 +#: templates/web/zurich/admin/report_edit.html:92 +msgid "Planned" +msgstr "Gepland" + +#: templates/web/fixmystreet/questionnaire/index.html:44 +msgid "Please <a class=\"tab_link\" href=\"#report\">take a look</a> at the updates that have been left." +msgstr "<a class=\"tab_link\" href=\"#report\">Neem een kijkje</a> bij de updates die zijn achtergelaten." + +#: templates/web/default/report/new/notes.html:6 +#: templates/web/fixmystreet/report/new/notes.html:6 +#: templates/web/oxfordshire/report/new/notes.html:5 +msgid "Please be polite, concise and to the point." +msgstr "Wees beleefd, precies en beknopt" + +#: templates/web/default/auth/change_password.html:12 +#: templates/web/default/auth/change_password.html:17 +msgid "Please check the passwords and try again" +msgstr "Controleer de wachtwoorden en probeer opnieuw" + +#: templates/web/default/auth/token.html:14 +msgid "Please check your email" +msgstr "Controleer je e-mail" + +#: templates/web/default/auth/general.html:14 +#: templates/web/default/auth/general.html:8 +#: templates/web/fixmystreet/auth/general.html:15 +#: templates/web/fixmystreet/auth/general.html:9 +#: templates/web/seesomething/auth/general.html:15 +#: templates/web/seesomething/auth/general.html:9 +#: templates/web/zurich/auth/general.html:3 +#: templates/web/zurich/auth/general.html:9 +msgid "Please check your email address is correct" +msgstr "Controleer of je e-mailadres klopt" + +#: 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 "Kies een categorie" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:387 +msgid "Please choose a property type" +msgstr "Kies een pand type" + +#: templates/web/seesomething/js/translation_strings.html:6 +msgid "Please choose a transport category" +msgstr "" + +#: templates/web/seesomething/js/translation_strings.html:7 +msgid "Please choose an incident category" +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”" +msgstr "Beschrijf de lokatie gedetailleerd. Bijvoorbeeld: \"2 matrassen achtergelaten bij Spoorlaan 19\"" + +#: templates/web/default/contact/blurb.html:2 +msgid "" +"Please do <strong>not</strong> report problems through this form; messages go to\n" +"the team behind FixMyStreet, not a council. To report a problem,\n" +"please <a href=\"/\">go to the front page</a> and follow the instructions." +msgstr "Maak alsjeblieft <strong>geen</strong> meldingen van problemen via dit formulier; meldingen gaan naar het team van FixMyStreet, en komen niet terecht bij de gemeente. Ga <a href=\"/\">naar de hoofdpagina</a> en volg de instructies." + +#: templates/web/default/report/new/notes.html:7 +#: templates/web/fixmystreet/report/new/notes.html:7 +#: templates/web/oxfordshire/report/new/notes.html:6 +msgid "Please do not be abusive — abusing your council devalues the service for all users." +msgstr "" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:46 +msgid "Please do not give address or personal information in this section." +msgstr "" + +#: 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: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" +msgstr "Geef een geldig e-mailadres" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:346 +#: perllib/FixMyStreet/App/Controller/Contact.pm:107 +msgid "Please enter a valid email address" +msgstr "Geef een geldig e-mailadres" + +#: 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" + +#: 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 "Geef een geldig e-mailadres" + +#: templates/web/bromley/report/new/fill_in_details_form.html:149 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:151 +#: templates/web/seesomething/report/new/fill_in_details_form.html:85 +#: templates/web/zurich/report/new/fill_in_details_form.html:92 +msgid "Please enter your email address" +msgstr "Geef een geldig e-mailadres" + +#: 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: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: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: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:24 +#: templates/web/oxfordshire/js/translation_strings.html:18 +msgid "Please enter your title" +msgstr "Geef je titel" + +#: 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 "" + +#: templates/web/emptyhomes/report/new/fill_in_details_text.html:1 +msgid "" +"Please fill in details of the empty property below, saying what type of\n" +"property it is e.g. an empty home, block of flats, office etc. Tell us\n" +"something about its condition and any other information you feel is relevant.\n" +"There is no need for you to give the exact address. Please be polite, concise\n" +"and to the point; writing your message entirely in block capitals makes it hard\n" +"to read, as does a lack of punctuation." +msgstr "Geef details van het leegstaande pand beneden. Vermeld welk type pand het is bijvoorbeeld een leegstaande woning, flatgebouw, kantoor etc. Vertel ook iets over de staat en andere informatie die je relevant lijkt. Je hoeft niet het adres te vermelden. Wees beleefd, helder en beknopt. Je bericht in volledige kapitalen schrijven maakt je bericht moeilijk leesbaar, net zoals het ontbreken van interpunctie." + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/default/report/new/fill_in_details_text.html:11 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:10 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:8 +msgid "Please fill in details of the problem below." +msgstr "Vul de details van het probleem beneden in." + +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:3 +msgid "" +"Please fill in details of the problem below. Leave as much detail as you can, \n" +"and if possible describe the exact location of\n" +"the problem (e.g. if there is a streetlight number or road name)." +msgstr "Vul zoveel mogelijk details van het probleem beneden in. Vermeld, indien mogelijk, ook de exacte locatie van het probleem (bijvoorbeeld lantarenpaalnummer of straatnaam)." + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/default/report/new/fill_in_details_text.html:3 +msgid "" +"Please fill in details of the problem below. The council won't be able\n" +"to help unless you leave as much detail as you can, so please describe the exact location of\n" +"the problem (e.g. on a wall), what it is, how long it has been there, a description (and a\n" +"photo of the problem if you have one), etc." +msgstr "Vul zoveel mogelijk details van het probleem beneden in. De gemeente kan niet helpen als ze niet genoeg informatie hebben. Vermeld daarom indien mogelijk de exacte locatie (bijvoorbeeld: op muur), wat het is, hoelang het zich al voordoet en een beschrijving (of foto als je die hebt) etc." + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:70 +#: templates/web/seesomething/report/new/fill_in_details_form.html:20 +#: templates/web/zurich/report/new/fill_in_details_form.html:46 +msgid "Please fill in details of the problem." +msgstr "Vul de details van het probleem in." + +#: templates/web/bromley/report/new/fill_in_details_form.html:28 +#: templates/web/default/report/new/fill_in_details_form.html:27 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:26 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:35 +#: templates/web/zurich/report/new/fill_in_details_form.html:20 +msgid "Please fill in the form below with details of the problem, and describe the location as precisely as possible in the details box." +msgstr "Vul zoveel mogelijk details in het veld beneden in. Vermeld ook de locatie zo precies mogelijk." + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:243 +msgid "Please indicate whether you'd like to receive another questionnaire" +msgstr "Geef aan of je een vragenlijst wilt ontvangen" + +#: templates/web/fixmystreet/report/updates-sidebar-notes.html:3 +msgid "Please note that updates are not sent to the council." +msgstr "Let op, updates worden niet aan de gemeente verzonden." + +#: templates/web/default/report/update-form.html:7 +msgid "Please note that updates are not sent to the council. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgstr "Let op, updates worden niet aan de gemeente verzonden. Als je je naam achterlaat zal het publiekelijk getoond worden. Jouw gegevens worden alleen gebruikt volgens de vermeldingen van onze <a href=\"/faq#privacy\">privacy policy</a>" + +#: templates/web/barnet/report/updates-sidebar-notes.html:1 +msgid "Please note that updates are not sent to the relevant department. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgstr "Let op, updates worden niet aan de gemeente verzonden. Als je je naam achterlaat zal het publiekelijk getoond worden. Jouw gegevens worden alleen gebruikt volgens de vermeldingen van onze <a href=\"/faq#privacy\">privacy policy</a>" + +#: templates/web/bromley/report/new/fill_in_details_form.html:23 +#: templates/web/default/report/new/fill_in_details_form.html:5 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:5 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:26 +#: templates/web/zurich/report/new/fill_in_details_form.html:11 +msgid "Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit." +msgstr "Let op dat je melding <strong>nog niet is verzonden</strong>. Kies een categorie en vermeld verdere informatie hierbeneden en klik op insturen." + +#: templates/web/default/report/new/notes.html:1 +#: templates/web/fixmybarangay/report/new/notes.html:1 +#: templates/web/fixmystreet/report/new/notes.html:1 +#: templates/web/oxfordshire/report/new/notes.html:1 +msgid "Please note:" +msgstr "Let op:" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:246 +msgid "Please provide some explanation as to why you're reopening this report" +msgstr "Geef een reden op waarom je deze melding heropent" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:253 +msgid "Please provide some text as well as a photo" +msgstr "Vermeld wat tekst en een foto" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:116 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:239 +msgid "Please say whether you've ever reported a problem to your council before" +msgstr "Geef aan of je het probleem al eerder hebt doorgegeven aan de gemeente" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:80 +msgid "Please select the feed you want" +msgstr "Kies de feed die je wilt" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:118 +msgid "Please select the type of alert you want" +msgstr "Kies de melding die je wilt" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:235 +msgid "Please state whether or not the problem has been fixed" +msgstr "Geef aan of het probleem is verholpen" + +#: templates/web/default/questionnaire/index.html:50 +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:176 +msgid "Please upload a JPEG image only" +msgstr "Je kan alleen een JPEG foto insturen" + +#: perllib/FixMyStreet/App/Controller/Photo.pm:183 +msgid "Please upload a JPEG image only\n" +msgstr "Upload alleen JPEG foto's\n" + +#: perllib/FixMyStreet/App/Controller/Contact.pm:98 +msgid "Please write a message" +msgstr "Schrijf een bericht" + +#: templates/web/bromley/report/display.html:70 +#: templates/web/fixmystreet/report/update-form.html:23 +msgid "Please write your update here" +msgstr "Schrijf je update hier" + +#: templates/web/bromley/report/display.html:123 +#: templates/web/bromley/report/display.html:151 +#: templates/web/bromley/report/display.html:163 +#: templates/web/default/contact/index.html:93 +#: templates/web/default/report/update-form.html:109 +#: templates/web/default/report/update-form.html:131 +#: templates/web/default/report/update-form.html:72 +#: templates/web/fixmystreet/contact/index.html:105 +#: templates/web/fixmystreet/report/update-form.html:123 +#: templates/web/fixmystreet/report/update-form.html:71 +#: templates/web/fixmystreet/report/update-form.html:95 +msgid "Post" +msgstr "Bericht" + +#: templates/web/default/report/updates.html:15 +msgid "Posted anonymously at %s" +msgstr "Anoniem geplaatst bij %s" + +#: templates/web/default/report/updates.html:22 +msgid "Posted by %s (<strong>%s</strong>) at %s" +msgstr "Geplaatst door %s (<strong>%s</strong>) bij %s" + +#: templates/web/default/report/updates.html:24 +msgid "Posted by %s at %s" +msgstr "Geplaatst door %s bij %s" + +#: templates/web/default/pagination.html:7 +msgid "Previous" +msgstr "" + +#: 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 "Privé" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:108 +msgid "Private information (not shown on site)" +msgstr "" + +#: templates/web/default/maps/openlayers.html:85 +msgid "Problem" +msgstr "Probleem" + +#: templates/web/default/admin/timeline.html:22 +msgid "Problem %d created" +msgstr "Probleem %d gemaakt" + +#: templates/web/default/admin/timeline.html:24 +msgid "Problem %s confirmed" +msgstr "Probleem %s bevestigd" + +#: templates/web/default/admin/timeline.html:26 +msgid "Problem %s sent to council %s" +msgstr "Probleem %s verzonden naar gemeente %s" + +#: 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:950 +msgid "Problem marked as open." +msgstr "Probleem gemarkeerd als open" + +#: templates/web/default/admin/questionnaire.html:21 +msgid "Problem state change based on survey results" +msgstr "Probleem status gewijzigd op basis van onderzoeksresultaten" + +#: templates/web/default/admin/flagged.html:10 +msgid "Problems" +msgstr "Problemen" + +#: templates/web/default/around/_updates.html:1 +msgid "Problems in this area" +msgstr "Problemen in dit gebied" + +#: templates/web/bromley/report/display.html:31 +#: templates/web/fixmystreet/around/tabbed_lists.html:4 +#: templates/web/fixmystreet/report/display.html:46 +msgid "Problems nearby" +msgstr "Problemen dichtbij" + +#: templates/web/fixmystreet/around/tabbed_lists.html:3 +#: templates/web/fixmystreet/report/display.html:44 +msgid "Problems on the map" +msgstr "Problemen op de kaart" + +#: db/alert_types.pl:14 +msgid "Problems recently reported fixed on FixMyStreet" +msgstr "Recent gemelde problemen op FixMyStreet" + +#: templates/web/default/alert/_list.html:19 +#: templates/web/fixmystreet/alert/_list.html:21 +msgid "Problems within %.1fkm of this location" +msgstr "Problemen binnen een straal van %.1fkm van deze lokatie" + +#: perllib/FixMyStreet/Cobrand/Default.pm:626 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:109 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:155 +#: perllib/FixMyStreet/Cobrand/UK.pm:228 +msgid "Problems within %s" +msgstr "Problemen binnen %s" + +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:117 +#: perllib/FixMyStreet/Cobrand/UK.pm:242 +msgid "Problems within %s ward" +msgstr "Problemen binnen wijk %s" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:24 +msgid "Problems within %s, FixMyStreet" +msgstr "Problemen binnen %s, FixMyStreet" + +#: templates/web/default/alert/_list.html:40 +#: templates/web/fixmybarangay/alert/_list.html:13 +#: templates/web/fixmystreet/alert/_list.html:42 +msgid "Problems within the boundary of:" +msgstr "Problemen binnen de grenzen van:" + +#: db/alert_types_eha.pl:8 +msgid "Properties recently reported as put back to use on reportemptyhomes.com" +msgstr "Recent gemelde hergebruikte panden op reportemptyhomes.com" + +#: templates/web/default/admin/report_edit.html:32 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:115 +msgid "Property address:" +msgstr "" + +#: templates/web/default/report/new/category.html:8 +msgid "Property type:" +msgstr "Pand soort:" + +#: templates/web/bromley/report/new/fill_in_details_form.html:52 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:64 +msgid "Provide a title" +msgstr "Geef een titel op" + +#: templates/web/bromley/report/display.html:57 +#: templates/web/default/report/update-form.html:3 +#: templates/web/fixmystreet/report/update-form.html:4 +msgid "Provide an update" +msgstr "Geef een update" + +#: templates/web/fixmystreet/auth/general.html:53 +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 "" + +#: 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." +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/bromley/report/display.html:144 +#: templates/web/default/report/new/fill_in_details_form.html:173 +#: templates/web/default/report/update-form.html:128 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:202 +#: templates/web/fixmystreet/report/update-form.html:116 +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:60 +#: templates/web/default/admin/body.html:73 +msgid "Public" +msgstr "Publiek" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:44 +msgid "Public information (shown on site)" +msgstr "" + +#: 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:80 +#: templates/web/zurich/admin/stats.html:38 +msgid "Publish photo" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:222 +msgid "Publish the response" +msgstr "" + +#: templates/web/default/questionnaire/completed.html:1 +#: templates/web/default/questionnaire/completed.html:2 +#: templates/web/default/questionnaire/index.html:0 +#: templates/web/default/questionnaire/index.html:14 +#: templates/web/default/questionnaire/index.html:4 +#: templates/web/fixmystreet/questionnaire/index.html:0 +#: templates/web/fixmystreet/questionnaire/index.html:14 +#: templates/web/fixmystreet/questionnaire/index.html:32 +#: templates/web/fixmystreet/questionnaire/index.html:4 +msgid "Questionnaire" +msgstr "Vragenlijst" + +#: templates/web/default/admin/timeline.html:30 +msgid "Questionnaire %d answered for problem %d, %s to %s" +msgstr "Vragenlijst %d beantwoord voor probleem %d, %s tot %s" + +#: templates/web/default/admin/timeline.html:28 +msgid "Questionnaire %d sent for problem %d" +msgstr "Vragenlijst %d verzonden voor probleem %d" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:192 +msgid "Questionnaire filled in by problem reporter" +msgstr "Vragenlijst ingevuld door melder" + +#: templates/web/bromley/report/display.html:37 +#: templates/web/default/alert/_list.html:21 +#: templates/web/default/around/display_location.html:1 +#: templates/web/default/around/display_location.html:3 +#: templates/web/default/report/display.html:46 +#: templates/web/default/reports/_rss.html:1 +#: templates/web/fixmystreet/alert/_list.html:22 +#: templates/web/fixmystreet/alert/updates.html:9 +#: templates/web/fixmystreet/report/display.html:61 +msgid "RSS feed" +msgstr "RSS feed" + +#: perllib/FixMyStreet/Cobrand/UK.pm:271 perllib/FixMyStreet/Cobrand/UK.pm:283 +msgid "RSS feed for %s" +msgstr "RSS feed voor %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:277 perllib/FixMyStreet/Cobrand/UK.pm:289 +msgid "RSS feed for %s ward, %s" +msgstr "RSS feed voor wijk %s, %s" + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:171 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:179 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:189 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:197 +#: perllib/FixMyStreet/Cobrand/UK.pm:297 perllib/FixMyStreet/Cobrand/UK.pm:309 +msgid "RSS feed of %s" +msgstr "RSS feed van %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:302 perllib/FixMyStreet/Cobrand/UK.pm:314 +msgid "RSS feed of %s, within %s ward" +msgstr "RSS feed van %s, binnen wijk %s" + +#: templates/web/default/alert/_list.html:21 +#: templates/web/fixmystreet/alert/_list.html:22 +msgid "RSS feed of nearby problems" +msgstr "RSS feed van nabije problemen" + +#: templates/web/default/reports/_rss.html:1 +msgid "RSS feed of problems in this %s" +msgstr "RSS feed van problemen in dit %s" + +#: perllib/FixMyStreet/Cobrand/Default.pm:627 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:110 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:154 +#: perllib/FixMyStreet/Cobrand/UK.pm:235 +msgid "RSS feed of problems within %s" +msgstr "RSS feed van problemen binnen %s" + +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:116 +#: perllib/FixMyStreet/Cobrand/UK.pm:241 +msgid "RSS feed of problems within %s ward" +msgstr "RSS feed van problemen in wijk %s" + +#: templates/web/default/around/display_location.html:1 +#: templates/web/default/around/display_location.html:4 +msgid "RSS feed of recent local problems" +msgstr "RSS feed van recente lokale problemen" + +#: templates/web/bromley/report/display.html:37 +#: templates/web/default/report/display.html:46 +#: templates/web/fixmystreet/alert/updates.html:9 +#: templates/web/fixmystreet/report/display.html:61 +msgid "RSS feed of updates to this problem" +msgstr "RSS feed van updates voor dit probleem" + +#: templates/web/bromley/report/display.html:39 +#: templates/web/default/alert/updates.html:9 +#: templates/web/default/report/display.html:37 +#: templates/web/fixmystreet/alert/updates.html:14 +#: templates/web/fixmystreet/report/display.html:63 +msgid "Receive email when updates are left on this problem." +msgstr "Ontvang een e-mail als updates worden achtergelaten bij dit probleem." + +#: templates/web/default/around/display_location.html:0 +#: templates/web/default/around/display_location.html:32 +msgid "Recent local problems, FixMyStreet" +msgstr "Recente lokale problemen, FixMystreet" + +#: templates/web/default/reports/index.html:19 +#: templates/web/fixmybarangay/reports/index.html:19 +msgid "Recently <br>fixed" +msgstr "Recent <br>opgelost" + +#: templates/web/fiksgatami/nn/reports/index.html:13 +#: templates/web/fiksgatami/reports/index.html:13 +msgid "Recently fixed" +msgstr "Recent opgelost" + +#: templates/web/default/index.html:35 templates/web/emptyhomes/index.html:24 +#: templates/web/fixmystreet/index.html:45 +msgid "Recently reported problems" +msgstr "Recent gemelde problemen" + +#: templates/web/default/report/new/notes.html:9 +#: templates/web/fixmystreet/report/new/notes.html:10 +msgid "Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site remember that you can contact your council directly using their own website." +msgstr "Onthoud dat FixMyStreet zich richt op het melden van fysieke problemen die opgelost kunnen worden. Als jouw probleem niet gepast is voor het melden via onze site kun je altijd direct contact opnemen met de gemeente via hun eigen website." + +#: templates/web/fixmybarangay/report/new/notes.html:9 +msgid "Remember that, for the pilot project, FixMyBarangay is only for reporting potholes and streetlights in bgy. Luz or Basak San Nicolas." +msgstr "Onthoud dat, tijdens dit proefproject, FixMyBarangary alleen te gebruiken is voor het melden van gaten en straatverlichting in bgy. Luz of Basak San Nicolas." + +#: templates/web/default/admin/report_blocks.html:16 +msgid "Remove flag" +msgstr "Verwijder markering" + +#: templates/web/default/admin/report_edit.html:89 +#: templates/web/default/admin/update_edit.html:57 +#: templates/web/zurich/admin/update_edit.html:35 +msgid "Remove photo (can't be undone!)" +msgstr "Verwijder foto (kan niet ongedaan worden!)" + +#: templates/web/emptyhomes/header.html:12 +msgid "Report Empty Homes" +msgstr "Meld Leegstaand Pand" + +#: 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 "Meld een probleem" + +#: templates/web/bromley/report/display.html:28 +#: templates/web/fixmystreet/report/display.html:35 +msgid "Report abuse" +msgstr "Meld misbruik" + +#: templates/web/default/report_created.html:1 +#: templates/web/default/report_created.html:3 +#: templates/web/seesomething/report_created.html:0 +#: templates/web/seesomething/report_created.html:8 +msgid "Report created" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Rss.pm:295 +msgid "Report on %s" +msgstr "Meld op %s" + +#: templates/web/default/index.html:14 templates/web/emptyhomes/index.html:5 +#: templates/web/fixmystreet/around/intro.html:1 +#: templates/web/stevenage/around/intro.html:1 +#: templates/web/zurich/around/intro.html:1 +msgid "Report, view, or discuss local problems" +msgstr "Meld, bekijk of discussier over lokale problemen" + +#: templates/web/default/my/my.html:74 +msgid "Reported %s" +msgstr "Gemeld %s" + +#: templates/web/default/my/my.html:72 +msgid "Reported %s, to %s" +msgstr "Gemeld %s aan %s" + +#: 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 "Anoniem gemeld bij %s" + +#: templates/web/default/admin/questionnaire.html:5 +#: templates/web/default/questionnaire/index.html:77 +#: templates/web/fixmystreet/questionnaire/index.html:71 +msgid "Reported before" +msgstr "Eerder gemeld" + +#: 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" + +#: templates/web/zurich/report/_main.html:2 +msgid "Reported in the %s category" +msgstr "" + +#: 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: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: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 "Meld een probleem" + +#: 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: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 +msgid "Reports awaiting approval" +msgstr "" + +#: templates/web/default/around/tabbed_lists.html:3 +msgid "Reports on and around the map" +msgstr "Melding op en nabij de kaart" + +#: templates/web/zurich/admin/index-sdm.html:10 +msgid "Reports published" +msgstr "" + +#: templates/web/default/admin/report_edit.html:71 +msgid "Resend report" +msgstr "Herstuur melding" + +#: templates/web/default/js/translation_strings.html:28 +#: templates/web/oxfordshire/js/translation_strings.html:22 +msgid "Right place?" +msgstr "" + +#: perllib/FixMyStreet/Geocode/OSM.pm:173 +msgid "Road operator for this named road (derived from road reference number and type): %s" +msgstr "Wegbeheerder voor deze straat (afgeleid van wegnummer en type): %s" + +#: perllib/FixMyStreet/Geocode/OSM.pm:170 +msgid "Road operator for this named road (from OpenStreetMap): %s" +msgstr "Wegbeheerder voor deze straat (uit OpenStreetMap): %s" + +#: 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:1377 +#: templates/web/default/admin/report_edit.html:86 +#: templates/web/zurich/admin/report_edit.html:77 +msgid "Rotate Right" +msgstr "" + +#: templates/web/default/admin/body_edit.html:76 +msgid "Save changes" +msgstr "Wijzigingen opslaan" + +#: templates/web/default/admin/reports.html:1 +#: templates/web/zurich/admin/reports.html:1 +msgid "Search Reports" +msgstr "Zoek Meldingen" + +#: templates/web/default/admin/users.html:1 +msgid "Search Users" +msgstr "Zoek Gebruikers" + +#: templates/web/zurich/header.html:77 +msgid "Search reports" +msgstr "" + +#: templates/web/default/admin/reports.html:5 +#: templates/web/default/admin/users.html:8 +#: templates/web/zurich/admin/reports.html:5 +msgid "Search:" +msgstr "Zoek:" + +#: 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:71 +#: templates/web/zurich/admin/body-form.html:26 +msgid "Select an area" +msgstr "" + +#: templates/web/default/alert/_list.html:8 +#: templates/web/fixmystreet/alert/_list.html:10 +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:664 +msgid "Sent to %s %s later" +msgstr "Verzonden aan %s %s later" + +#: templates/web/default/admin/report_edit.html:71 +msgid "Sent:" +msgstr "Verzonden:" + +#: templates/web/default/admin/report_edit.html:73 +#: templates/web/zurich/admin/stats.html:45 +msgid "Service:" +msgstr "Service:" + +#: templates/web/fixmystreet/report/display.html:41 +msgid "Share" +msgstr "Deel" + +#: templates/web/bromley/report/display.html:205 +#: templates/web/bromley/report/new/fill_in_details_form.html:129 +#: templates/web/bromley/report/new/fill_in_details_form.html:175 +#: templates/web/default/report/new/fill_in_details_form.html:210 +#: templates/web/default/report/update-form.html:157 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:129 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:197 +#: templates/web/fixmystreet/report/update-form.html:144 +msgid "Show my name publicly" +msgstr "Toon mijn naam publiekelijk" + +#: templates/web/default/around/display_location.html:69 +msgid "Show old" +msgstr "Toon oud" + +#: templates/web/default/around/display_location.html:60 +msgid "Show pins" +msgstr "Toon spelden" + +#: templates/web/default/auth/general.html:3 +#: templates/web/default/auth/general.html:49 +#: templates/web/fixmybarangay/header.html:70 +#: templates/web/fixmystreet/auth/general.html:3 +#: templates/web/fixmystreet/auth/general.html:42 +#: templates/web/fixmystreet/auth/general.html:62 +#: templates/web/fixmystreet/header.html:54 +#: templates/web/oxfordshire/header.html:115 +#: templates/web/seesomething/auth/general.html:3 +#: templates/web/seesomething/auth/general.html:39 +#: templates/web/stevenage/header.html:101 +#: templates/web/zurich/auth/general.html:18 +#: templates/web/zurich/auth/general.html:35 +msgid "Sign in" +msgstr "Inloggen" + +#: templates/web/default/auth/general.html:74 +msgid "Sign in by email" +msgstr "Inloggen via e-mail" + +#: templates/web/default/auth/general.html:1 +#: templates/web/fixmystreet/auth/general.html:1 +#: templates/web/seesomething/auth/general.html:1 +#: templates/web/zurich/auth/general.html:1 +msgid "Sign in or create an account" +msgstr "Inloggen of maak een account" + +#: templates/web/bromley/auth/sign_out.html:1 +#: templates/web/default/auth/sign_out.html:1 +#: templates/web/default/header.html:30 +#: templates/web/emptyhomes/header.html:46 +#: templates/web/fiksgatami/header.html:22 +#: templates/web/fiksgatami/nn/header.html:22 +#: templates/web/lichfielddc/header.html:177 +#: templates/web/reading/header.html:33 +#: templates/web/seesomething/auth/sign_out.html:1 +#: templates/web/zurich/auth/sign_out.html:1 +msgid "Sign out" +msgstr "Uitloggen" + +#: templates/web/default/header.html:29 +#: templates/web/emptyhomes/header.html:45 +#: templates/web/fiksgatami/header.html:21 +#: templates/web/fiksgatami/nn/header.html:21 +#: templates/web/lichfielddc/header.html:177 +#: templates/web/reading/header.html:32 +msgid "Signed in as %s" +msgstr "Ingelogd als %s" + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +msgid "Some categories may require additional information." +msgstr "Sommige categorieë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" +msgstr "" + +#: perllib/FixMyStreet/App/View/Email.pm:32 +#: perllib/FixMyStreet/App/View/Web.pm:44 +msgid "Some text to localize" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/UK.pm:93 +msgid "Sorry, that appears to be a Crown dependency postcode, which we don't cover." +msgstr "" + +#: templates/web/default/tokens/abuse.html:5 +msgid "Sorry, there has been an error confirming your problem." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:215 +#: perllib/FixMyStreet/Geocode.pm:28 perllib/FixMyStreet/Geocode/Bing.pm:58 +#: perllib/FixMyStreet/Geocode/Google.pm:74 +#: perllib/FixMyStreet/Geocode/OSM.pm:66 +msgid "Sorry, we could not find that location." +msgstr "" + +#: perllib/FixMyStreet/Geocode/Bing.pm:53 +#: perllib/FixMyStreet/Geocode/Google.pm:69 +#: perllib/FixMyStreet/Geocode/Zurich.pm:87 +msgid "Sorry, we could not parse that location. Please try again." +msgstr "" + +#: templates/web/fiksgatami/footer.html:16 +#: templates/web/fiksgatami/nn/footer.html:16 +msgid "Source code" +msgstr "" + +#: templates/web/default/admin/stats.html:64 +#, fuzzy +msgid "Start Date:" +msgstr "Laatste update:" + +#: 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: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: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 "" + +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Status" +msgstr "" + +#: templates/web/default/report/updates.html:10 +msgid "Still open, via questionnaire, %s" +msgstr "" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370 +msgid "Subcategory: %s" +msgstr "" + +#: templates/web/zurich/admin/index-dm.html:27 +msgid "Subdivision/Body" +msgstr "" + +#: templates/web/bromley/report/new/fill_in_details_form.html:48 +#: templates/web/fixmystreet/contact/index.html:91 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:60 +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: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: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: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 "" + +#: templates/web/default/questionnaire/index.html:116 +#: templates/web/fixmystreet/questionnaire/index.html:105 +msgid "Submit questionnaire" +msgstr "" + +#: 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 "" + +#: templates/web/bromley/report/display.html:44 +#: templates/web/default/alert/updates.html:17 +#: templates/web/default/report/display.html:42 +#: templates/web/fixmystreet/alert/updates.html:23 +#: templates/web/fixmystreet/report/display.html:68 +msgid "Subscribe" +msgstr "" + +#: templates/web/default/alert/_list.html:97 +#: templates/web/fixmybarangay/alert/_list.html:42 +#: templates/web/fixmystreet/alert/_list.html:92 +msgid "Subscribe me to an email alert" +msgstr "" + +#: templates/web/fixmybarangay/alert/_list.html:6 +msgid "Subscribe to an alert based upon what baranagay you’re in:" +msgstr "" + +#: 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 "" + +#: templates/web/default/reports/index.html:1 +#: templates/web/emptyhomes/reports/index.html:1 +#: templates/web/fiksgatami/nn/reports/index.html:1 +#: templates/web/fiksgatami/reports/index.html:1 +#: templates/web/fixmybarangay/reports/index.html:1 +#: templates/web/zurich/reports/index.html:0 +#: templates/web/zurich/reports/index.html:4 +msgid "Summary reports" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1179 +msgid "Survey" +msgstr "" + +#: templates/web/default/admin/questionnaire.html:1 +msgid "Survey Results" +msgstr "" + +#: 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 "" + +#: templates/web/default/admin/body.html:18 +msgid "Text only version" +msgstr "" + +#: templates/web/default/admin/update_edit.html:20 +#: templates/web/zurich/admin/update_edit.html:12 +msgid "Text:" +msgstr "" + +#: templates/web/default/tokens/confirm_update.html:7 +#: templates/web/default/tokens/confirm_update.html:8 +msgid "Thank you — you can <a href=\"%s\">view your updated problem</a> on the site." +msgstr "" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:6 +#: templates/web/emptyhomes/tokens/confirm_problem.html:8 +msgid "Thank you for reporting an empty property on ReportEmptyHomes.com. We have emailed the lead officer for empty homes in the council responsible with details, and asked them to do whatever they can to get the empty property back into use as soon as possible." +msgstr "" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:30 +#: templates/web/emptyhomes/tokens/confirm_problem.html:31 +msgid "" +"Thank you for reporting this empty property on ReportEmptyHomes.com.\n" +"At present the report cannot be sent through to the council for this area. We\n" +"are working with councils to link them into the system so that as many areas\n" +"as possible will be covered." +msgstr "" + +#: templates/web/default/tokens/error.html:7 +msgid "Thank you for trying to confirm your update or problem. We seem to have an error ourselves though, so <a href=\"%s\">please let us know what went on</a> and we'll look into it." +msgstr "" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:24 +#: templates/web/emptyhomes/tokens/confirm_problem.html:26 +msgid "Thank you for using ReportEmptyHomes.com. Your action is already helping to resolve the UK’s empty homes crisis." +msgstr "" + +#: templates/web/fixmystreet/around/around_index.html:27 +msgid "Thanks for uploading your photo. We now need to locate your problem, so please enter a nearby street name or postcode in the box above :" +msgstr "" + +#: templates/web/default/contact/submit.html:8 +msgid "Thanks for your feedback. We'll get back to you as soon as we can!" +msgstr "" + +#: templates/web/default/questionnaire/creator_fixed.html:9 +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:190 +msgid "That image doesn't appear to have uploaded correctly (%s), please try again." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Council.pm:90 +msgid "That location does not appear to be covered by a council; perhaps it is offshore or outside the country. Please try again." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Location.pm:123 +msgid "That location does not appear to be in the UK; please try again." +msgstr "" + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:63 +#: perllib/FixMyStreet/Cobrand/UK.pm:86 +msgid "That postcode was not recognised, sorry." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:704 +msgid "That problem will now be resent." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report.pm:117 +msgid "That report cannot be viewed on %s." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report.pm:111 +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 — <em>please</em> be patient." +msgstr "" + +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:3 +msgid "The council won’t be able to help unless you leave as much detail as you can. Please describe the exact location of the problem (e.g. on a wall), what it is, how long it has been there, a description (and a photo of the problem if you have one), etc." +msgstr "" + +#: templates/web/fixmystreet/questionnaire/index.html:43 +msgid "The details of your problem are available from the other tab above." +msgstr "De details van je probleem zijn beschikbaar in het andere tabblad." + +#: templates/web/default/questionnaire/index.html:49 +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" +msgstr "De foutmelding was: %s" + +#: templates/web/default/open311/index.html:88 +msgid "The following Open311 v2 attributes are returned for each request: service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code and service_name." +msgstr "De volgende Open311 v2 attributen worden teruggegeven voor elke aanvraag: service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code en service_name." + +#: perllib/FixMyStreet/Geocode/OSM.pm:165 +msgid "The following information about the nearest road might be inaccurate or irrelevant, if the problem is close to several roads or close to a road without a name registered in OpenStreetMap." +msgstr "De volgende informatie over de dichtstbijzijnde weg kan onjuist of niet relevant zijn als het probleem zich dichtbij verschillende wegen, of dichtbij een weg zonder naam bevind." + +#: db/alert_types.pl:19 db/alert_types.pl:23 db/alert_types.pl:27 +#: db/alert_types.pl:31 +msgid "The latest local problems reported by users" +msgstr "Laatste lokale problemen gemeld door gebruikers" + +#: db/alert_types_eha.pl:13 +msgid "The latest local reports reported by users" +msgstr "Laatste lokale meldingen gemaakt door gebruikers" + +#: db/alert_types.pl:35 +msgid "The latest problems for {{COUNCIL}} reported by users" +msgstr "Laatste problemen voor {{COUNCIL}} gemeld door gebruiker" + +#: db/alert_types.pl:39 +msgid "The latest problems for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "Laatste problemen voor {{COUNCIL}} binnen de wijk {{WARD}} gemeld door gebruikers" + +#: db/alert_types.pl:11 +msgid "The latest problems reported by users" +msgstr "Laatste problemen gemeld door gebruikers" + +#: db/alert_types.pl:15 +msgid "The latest problems reported fixed by users" +msgstr "Laatste problemen die als opgelost zijn gemeld door gebruikers" + +#: db/alert_types.pl:43 +msgid "The latest problems within {{NAME}}'s boundary reported by users" +msgstr "Laatste problemen binnen de grenzen van {{NAME}} gemeld door gebruikers" + +#: db/alert_types_eha.pl:9 +msgid "The latest properties reported back to use by users" +msgstr "Laatste panden die teruggemeld zijn door gebruikers" + +#: db/alert_types_eha.pl:20 +msgid "The latest reports for {{COUNCIL}} reported by users" +msgstr "Laatste meldingen voor {{COUNCIL}} gemeld door gebruikers" + +#: db/alert_types_eha.pl:24 +msgid "The latest reports for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "Laatste meldingen voor {{COUNCIL}} binnen de wijk {{WARD}} gemeld door gebruikers" + +#: db/alert_types_eha.pl:28 +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" +msgstr "Wachtwoorden komen niet overeen" + +#: templates/web/default/errors/page_error_404_not_found.html:10 +#: templates/web/default/errors/page_error_404_not_found.html:12 +msgid "The requested URL '%s' was not found on this server" +msgstr "De opgevraagde URL '%s' is niet gevonden op de server" + +#: templates/web/default/alert/_list.html:14 +#: templates/web/fixmystreet/alert/_list.html:16 +msgid "The simplest alert is our geographic one:" +msgstr "De simpelste melding is onze geografische:" + +#: templates/web/barnet/report/new/councils_text_all.html:3 +#: templates/web/default/report/new/councils_extra_text.html:1 +#: templates/web/default/report/new/councils_text_some.html:10 +#: templates/web/default/report/new/councils_text_some.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:17 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:12 +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: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." + +#: perllib/FixMyStreet/App/Controller/Contact.pm:116 +#: perllib/FixMyStreet/App/Controller/Dashboard.pm:59 +msgid "There was a problem showing this page. Please try again later." +msgstr "Er was een probleem bij het tonen van deze pagina. Probeer het later nog eens." + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:747 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:134 +#: templates/web/default/auth/general.html:23 +#: templates/web/fixmystreet/auth/general.html:24 +#: templates/web/seesomething/auth/general.html:24 +#: templates/web/zurich/auth/general.html:28 +msgid "There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the ‘sign in by email’ section of the form." +msgstr "Er was een probleem met je e-mailadres/wachtwoord combinatie. Als je het wachtwoord niet kunt herinneren, of je hebt er geen een, vul dan het formulier ‘inloggen via email’ in." + +#: perllib/FixMyStreet/App/Controller/Alert.pm:355 +msgid "There was a problem with your email/password combination. Please try again." +msgstr "Er was een probleem met je e-mailadres/wachtwoord combinatie. Probeer het later nog eens." + +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:272 +msgid "There was a problem with your update. Please try again." +msgstr "Er was een probleem met je update. Probeer het later nog eens." + +#: perllib/FixMyStreet/App/Controller/Contact.pm:120 +msgid "There were problems with your report. Please see below." +msgstr "Er was een probleem met je melding. Zie beneden." + +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:299 +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." + +#: 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: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" +msgstr "Deze informatie is verplicht" + +#: templates/web/default/debug_header.html:3 +msgid "This is a developer site; things might break at any time, and the database will be periodically deleted." +msgstr "Dit is een ontwikkelingssite; er kunnen mogelijk problemen optreden, en de database wordt regelmatig opgeschoond." + +#: templates/web/fixmybarangay/reports/index.html:7 +msgid "This is a summary of all reports on this site; select a particular barangay to see the reports sent there." +msgstr "" + +#: templates/web/emptyhomes/reports/index.html:4 +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 "" + +#: templates/web/default/reports/index.html:7 +#: templates/web/fiksgatami/nn/reports/index.html:4 +#: templates/web/fiksgatami/reports/index.html:4 +msgid "This is a summary of all reports on this site; select a particular council to see the reports sent there." +msgstr "Dit is een samenvatting van alle meldingen op deze site; selecteer een gemeente om te zien welke rapporten hierheen zijn gestuurd." + +#: templates/web/default/auth/token.html:9 +msgid "This may be because the link is too old or already used, or the address was not copied correctly." +msgstr "" + +#: templates/web/default/report/banner.html:15 +msgid "This problem has been closed" +msgstr "Dit probleem is gesloten" + +#: templates/web/bromley/report/display.html:98 +#: templates/web/default/report/banner.html:12 +#: templates/web/default/report/update-form.html:48 +#: templates/web/emptyhomes/report/banner.html:3 +#: templates/web/fixmystreet/report/update-form.html:46 +msgid "This problem has been fixed" +msgstr "Dit probleem is opgelost" + +#: templates/web/bromley/report/display.html:92 +#: templates/web/default/report/update-form.html:43 +#: templates/web/fixmystreet/report/update-form.html:40 +msgid "This problem has not been fixed" +msgstr "Dit probleem is niet opgelost" + +#: templates/web/default/report/banner.html:19 +msgid "This problem is in progress" +msgstr "Aan dit probleem wordt gewerkt" + +#: templates/web/default/report/banner.html:9 +msgid "This problem is old and of unknown status." +msgstr "Dit probleem is oud, en de status is onbekend." + +#: 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 "" + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:86 +msgid "This report is currently marked as closed." +msgstr "Deze melding is momenteel gemarkeerd als gesloten." + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:84 +msgid "This report is currently marked as fixed." +msgstr "Deze melding is momenteel gemarkeerd als opgelost." + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:88 +msgid "This report is currently marked as open." +msgstr "Deze melding is momenteel gemarkeerd als openstaand." + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315 +msgid "This report was submitted anonymously" +msgstr "" + +#: 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:1178 +#: templates/web/default/admin/timeline.html:1 +msgid "Timeline" +msgstr "Tijdslijn" + +#: templates/web/default/admin/flagged.html:15 +#: templates/web/default/admin/reports.html:12 +msgid "Title" +msgstr "Titel" + +#: templates/web/default/around/_report_banner.html:2 +msgid "To <strong>report a problem</strong>, click on the map at the correct location." +msgstr "Klik op de kaart op de juiste lokatie om <strong>een probleem te melden</strong>." + +#: templates/web/default/alert/index.html:27 +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:290 +msgid "To view a map of the precise location of this issue" +msgstr "" + +#: 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 "" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:24 +msgid "Transport Category" +msgstr "" + +#: templates/web/default/js/translation_strings.html:29 +#: templates/web/oxfordshire/js/translation_strings.html:23 +msgid "Try again" +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 "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:48 +#: templates/web/zurich/admin/report_edit.html:61 +#: templates/web/zurich/admin/update_edit.html:18 +msgid "Unconfirmed" +msgstr "" + +#: templates/web/fixmystreet/report/banner.html:9 +msgid "Unknown" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Rss.pm:173 +msgid "Unknown alert type" +msgstr "" + +#: templates/web/default/js/translation_strings.html:39 +#: templates/web/oxfordshire/js/translation_strings.html:33 +msgid "Unknown error" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report.pm:106 +msgid "Unknown problem ID" +msgstr "" + +#: templates/web/bromley/report/display.html:66 +#: templates/web/fixmystreet/report/update-form.html:19 +msgid "Update" +msgstr "" + +#: templates/web/default/admin/timeline.html:33 +msgid "Update %s created for problem %d; by %s" +msgstr "" + +#: templates/web/default/contact/index.html:21 +#: templates/web/fixmystreet/contact/index.html:34 +msgid "Update below added anonymously at %s" +msgstr "" + +#: templates/web/default/contact/index.html:23 +#: templates/web/fixmystreet/contact/index.html:36 +msgid "Update below added by %s at %s" +msgstr "" + +#: 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:38 +msgid "Update breakdown by state" +msgstr "" + +#: db/alert_types.pl:7 +msgid "Update by {{name}}" +msgstr "" + +#: templates/web/default/admin/update_edit.html:42 +#: templates/web/zurich/admin/update_edit.html:25 +msgid "Update changed problem state to %s" +msgstr "" + +#: templates/web/default/admin/update_edit.html:44 +msgid "Update marked problem as fixed" +msgstr "" + +#: templates/web/default/admin/update_edit.html:46 +msgid "Update reopened problem" +msgstr "" + +#: templates/web/default/admin/body.html:83 +msgid "Update statuses" +msgstr "" + +#: templates/web/default/report/update-form.html:22 +msgid "Update:" +msgstr "" + +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Updated" +msgstr "" + +#: 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:24 +#: templates/web/zurich/report/updates.html:2 +msgid "Updates" +msgstr "" + +#: perllib/FixMyStreet/DB/Result/Comment.pm:131 +msgid "Updates are limited to 2000 characters in length. Please shorten your update" +msgstr "" + +#: db/alert_types.pl:5 db/alert_types.pl:6 +msgid "Updates on {{title}}" +msgstr "" + +#: templates/web/bromley/report/display.html:0 +#: templates/web/bromley/report/display.html:8 +#: templates/web/default/report/display.html:0 +#: templates/web/default/report/display.html:5 +#: templates/web/fixmystreet/report/display.html:0 +#: templates/web/fixmystreet/report/display.html:8 +msgid "Updates to this problem, FixMyStreet" +msgstr "" + +#: 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:1314 +msgid "User flagged" +msgstr "" + +#: 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:371 +#: perllib/FixMyStreet/App/Controller/Admin.pm:401 +msgid "Values updated" +msgstr "" + +#: templates/web/default/admin/report_edit.html:18 +#: templates/web/default/admin/update_edit.html:18 +#: templates/web/zurich/admin/report_edit-sdm.html:24 +#: templates/web/zurich/admin/report_edit.html:23 +#: templates/web/zurich/admin/update_edit.html:10 +msgid "View report on site" +msgstr "" + +#: templates/web/default/reports/body.html:14 +msgid "View reports by ward" +msgstr "" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:39 +msgid "View your report" +msgstr "" + +#: templates/web/default/around/display_location.html:0 +#: templates/web/default/around/display_location.html:34 +#: templates/web/seesomething/around/display_location.html:0 +#: templates/web/seesomething/around/display_location.html:16 +msgid "Viewing a location" +msgstr "" + +#: templates/web/bromley/report/display.html:0 +#: templates/web/default/report/display.html:0 +#: templates/web/fixmystreet/report/display.html:0 +msgid "Viewing a problem" +msgstr "" + +#: templates/web/default/reports/body.html:16 +msgid "Wards of this council" +msgstr "" + +#: templates/web/default/alert/choose.html:6 +#: templates/web/default/around/around_index.html:13 +#: templates/web/fixmystreet/around/around_index.html:16 +#: templates/web/seesomething/around/around_index.html:13 +msgid "We found more than one match for that location. We show up to ten matches, please try a different search if yours is not here." +msgstr "" + +#: templates/web/default/auth/token.html:8 +msgid "We have not been able to confirm your account - sorry." +msgstr "" + +#: templates/web/default/auth/token.html:16 +msgid "We have sent you an email containing a link to confirm your account." +msgstr "" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:18 +#: templates/web/emptyhomes/tokens/confirm_problem.html:20 +msgid "We may contact you periodically to ask if anything has changed with the property you reported." +msgstr "" + +#: templates/web/bromley/report/display.html:143 +#: templates/web/fixmystreet/report/update-form.html:115 +msgid "We never show your email" +msgstr "" + +#: templates/web/bromley/report/new/fill_in_details_form.html:133 +#: templates/web/bromley/report/new/fill_in_details_form.html:179 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:134 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:201 +#: templates/web/zurich/report/new/fill_in_details_form.html:96 +msgid "We never show your email address or phone number." +msgstr "" + +#: 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 "" + +#: templates/web/default/index-steps.html:31 +msgid "We send it to the council on your behalf" +msgstr "" + +#: templates/web/bromley/report/new/fill_in_details_form.html:217 +#: templates/web/default/report/new/notes.html:5 +#: templates/web/fixmybarangay/report/new/notes.html:5 +msgid "We will only use your personal information in accordance with our <a href=\"/faq#privacy\">privacy policy.</a>" +msgstr "" + +#: templates/web/fixmystreet/report/new/notes.html:4 +#: templates/web/oxfordshire/report/new/notes.html:4 +msgid "We will only use your personal information in accordance with our <a href=\"/privacy\">privacy policy.</a>" +msgstr "" + +#: templates/web/emptyhomes/contact/blurb.html:2 +msgid "We’d love to hear what you think about this website. Just fill in the form. Please don’t contact us about individual empty homes; use the box accessed from <a href=\"/\">the front page</a>." +msgstr "" + +#: templates/web/default/contact/blurb.html:8 +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:61 +#: templates/web/default/admin/body_edit.html:82 +#: templates/web/zurich/admin/body.html:17 +msgid "When edited" +msgstr "" + +#: templates/web/default/admin/problem_row.html:35 +msgid "When sent" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:621 +msgid "Whole block of empty flats" +msgstr "" + +#: templates/web/default/open311/index.html:94 +msgid "With request searches, it is also possible to search for agency_responsible to limit the requests to those sent to a single administration. The search term is the administration ID provided by <a href=\"%s\">MaPit</a>." +msgstr "" + +#: templates/web/fixmystreet/footer.html:21 +#: templates/web/stevenage/footer.html:22 +msgid "Would you like better integration with FixMyStreet? <a href=\"http://www.mysociety.org/for-councils/fixmystreet/\">Find out about FixMyStreet for councils</a>." +msgstr "" + +#: templates/web/fixmystreet/footer.html:17 +#: templates/web/stevenage/footer.html:18 +msgid "Would you like to contribute to FixMyStreet? Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>." +msgstr "" + +#: templates/web/default/questionnaire/index.html:106 +#: templates/web/fixmystreet/questionnaire/index.html:96 +msgid "Would you like to receive another questionnaire in 4 weeks, reminding you to check the status?" +msgstr "" + +#: templates/web/default/report/new/notes.html:8 +#: templates/web/fixmybarangay/report/new/notes.html:8 +#: templates/web/fixmystreet/report/new/notes.html:8 +#: templates/web/oxfordshire/report/new/notes.html:7 +msgid "Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation." +msgstr "Je bericht is moeilijk leesbaar als deze alleen uit hoofdletters bestaat of geen interpunctie heeft." + +#: templates/web/default/admin/stats.html:10 +msgid "Year" +msgstr "Jaar" + +#: 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 "Ja" + +#: templates/web/bromley/report/display.html:157 +#: templates/web/bromley/report/new/fill_in_details_form.html:198 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:161 +#: templates/web/fixmystreet/report/update-form.html:89 +msgid "Yes I have a password" +msgstr "Ja, ik heb een wachtwoord" + +#: templates/web/default/contact/index.html:37 +#: templates/web/fixmystreet/contact/index.html:50 +msgid "You are reporting the following problem report for being abusive, containing personal information, or similar:" +msgstr "Je meld het volgende probleem als beledigend, persoonlijke informatie bevattend of gelijkend aan:" + +#: templates/web/default/contact/index.html:15 +#: templates/web/fixmystreet/contact/index.html:28 +msgid "You are reporting the following update for being abusive, containing personal information, or similar:" +msgstr "Je meld het volgende update als beledigend, persoonlijke informatie bevattend of gelijkend aan:" + +#: templates/web/default/tokens/confirm_problem.html:19 +#: templates/web/default/tokens/confirm_problem.html:21 +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:8 +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 "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/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 "" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:38 +msgid "You have already answered this questionnaire. If you have a question, please <a href='%s'>get in touch</a>, or <a href='%s'>view your problem</a>.\n" +msgstr "Je hebt deze vragenlijst al ingevuld. Als je vragen hebt kan je <a href='%s'>contact opnemen</a> of <a href='%s'>je probleem bekijken</a>.\n" + +#: templates/web/bromley/report/new/fill_in_details_form.html:97 +#: templates/web/default/questionnaire/index.html:96 +#: templates/web/default/report/new/fill_in_details_form.html:93 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:90 +#: templates/web/fixmystreet/questionnaire/index.html:87 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:99 +#: templates/web/seesomething/report/new/fill_in_details_form.html:59 +#: templates/web/zurich/report/new/fill_in_details_form.html:75 +msgid "You have already attached a photo to this report, attaching another one will replace it." +msgstr "Je hebt al een foto toegevoegd aan deze melding, als je nog een foto toevoegt overschrijft deze die." + +#: templates/web/bromley/report/display.html:108 +#: templates/web/default/report/update-form.html:59 +#: templates/web/fixmystreet/report/update-form.html:56 +msgid "You have already attached a photo to this update, attaching another one will replace it." +msgstr "Je hebt al een foto toegevoegd aan deze update, als je nog een foto toevoegt overschrijft deze die." + +#: templates/web/default/auth/sign_out.html:3 +#: templates/web/seesomething/auth/sign_out.html:3 +#: templates/web/zurich/auth/sign_out.html:3 +msgid "You have been signed out" +msgstr "Je bent uitgelogd" + +#: templates/web/bromley/report/new/fill_in_details_form.html:25 +#: templates/web/default/report/new/fill_in_details_form.html:7 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:7 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:28 +#: templates/web/zurich/report/new/fill_in_details_form.html:13 +msgid "You have located the problem at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. " +msgstr "Je hebt een probleem aangewezen op de plek gemarkeerd met een groene speld op de kaart. Als dit niet klopt kan je nogmaals op de kaart klikken." + +#: templates/web/default/tokens/confirm_alert.html:7 +msgid "You have successfully confirmed your alert." +msgstr "Je hebt je melding succesvol bevestigd." + +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:6 +msgid "You have successfully confirmed your email address." +msgstr "" + +#: templates/web/default/tokens/confirm_problem.html:14 +#: templates/web/default/tokens/confirm_problem.html:15 +msgid "You have successfully confirmed your problem" +msgstr "Je hebt je probleem succesvol bevestigd" + +#: templates/web/default/tokens/confirm_update.html:11 +#: templates/web/default/tokens/confirm_update.html:12 +msgid "You have successfully confirmed your update and you can now <a href=\"%s\">view it on the site</a>." +msgstr "Je hebt je update succesvol bevestigd. Je kan het <a href=\"%s\">nu bekijken op de site</a>." + +#: templates/web/default/tokens/confirm_alert.html:11 +msgid "You have successfully created your alert." +msgstr "Je hebt je melding gemaakt." + +#: templates/web/default/tokens/confirm_alert.html:9 +msgid "You have successfully deleted your alert." +msgstr "Je hebt je melding verwijdert." + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:754 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:140 +msgid "You have successfully signed in; please check and confirm your details are accurate:" +msgstr "Je bent ingelogd; controleer of je gegevens nog kloppen:" + +#: templates/web/default/email_sent.html:13 +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?" + +#: templates/web/default/my/my.html:0 templates/web/default/my/my.html:14 +#: templates/web/default/my/my.html:3 templates/web/fixmystreet/my/my.html:0 +#: templates/web/fixmystreet/my/my.html:14 +#: templates/web/fixmystreet/my/my.html:3 +msgid "Your Reports" +msgstr "Jouw meldingen" + +#: templates/web/bromley/report/display.html:41 +#: templates/web/bromley/report/display.html:43 +#: templates/web/bromley/report/new/fill_in_details_form.html:145 +#: templates/web/fixmystreet/alert/_list.html:89 +#: templates/web/fixmystreet/alert/updates.html:19 +#: templates/web/fixmystreet/alert/updates.html:22 +#: templates/web/fixmystreet/contact/index.html:84 +#: templates/web/fixmystreet/report/display.html:65 +#: templates/web/fixmystreet/report/display.html:67 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:115 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:147 +#: templates/web/zurich/report/new/fill_in_details_form.html:88 +msgid "Your email" +msgstr "Jouw e-mail" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:81 +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:58 +msgid "Your email address" +msgstr "Jouw e-mailadres" + +#: templates/web/default/auth/general.html:27 +msgid "Your email address:" +msgstr "Jouw e-mailadres:" + +#: templates/web/default/alert/_list.html:92 +#: templates/web/default/report/new/fill_in_details_form.html:124 +#: templates/web/default/report/update-form.html:81 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:133 +#: templates/web/fixmybarangay/alert/_list.html:37 +msgid "Your email:" +msgstr "Jouw e-mail:" + +#: templates/web/bromley/report/display.html:195 +#: templates/web/bromley/report/new/fill_in_details_form.html:117 +#: templates/web/bromley/report/new/fill_in_details_form.html:164 +msgid "Your first name" +msgstr "Jouw voornaam" + +#: templates/web/fixmystreet/report/updates-sidebar-notes.html:5 +msgid "Your information will only be used in accordance with our <a href=\"/privacy\">privacy policy</a>" +msgstr "Je informatie wordt alleen gebruikt zoals vermeld in onze <a href=\"/privacy\">privacy policy</a>" + +#: templates/web/bromley/report/display.html:201 +#: templates/web/bromley/report/new/fill_in_details_form.html:123 +#: templates/web/bromley/report/new/fill_in_details_form.html:170 +msgid "Your last name" +msgstr "Jouw achternaam" + +#: 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 "Jouw naam" + +#: templates/web/default/auth/general.html:59 +#: templates/web/default/contact/index.html:68 +#: templates/web/default/report/new/fill_in_details_form.html:203 +#: templates/web/default/report/update-form.html:151 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:124 +msgid "Your name:" +msgstr "Jouw naam:" + +#: templates/web/bromley/report/display.html:162 +#: templates/web/bromley/report/new/fill_in_details_form.html:203 +#: templates/web/fixmystreet/auth/general.html:41 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:166 +#: templates/web/fixmystreet/report/update-form.html:94 +#: templates/web/seesomething/auth/general.html:30 +#: templates/web/zurich/auth/general.html:34 +msgid "Your password" +msgstr "Jouw wachtwoord" + +#: templates/web/default/auth/change_password.html:6 +msgid "Your password has been changed" +msgstr "Je wachtwoord is gewijzigd" + +#: 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 "Je telefoonnummer" + +#: templates/web/fixmystreet/questionnaire/index.html:15 +msgid "Your report" +msgstr "Jouw melding" + +#: templates/web/default/report_created.html:6 +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/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 "Jouw meldingen" + +#: templates/web/default/my/my.html:45 templates/web/fixmystreet/my/my.html:49 +msgid "Your updates" +msgstr "Jouw updates" + +#: templates/web/default/contact/index.html:76 +msgid "Your email:" +msgstr "Jouw e-mail" + +#: templates/web/default/admin/timeline.html:4 +msgid "by %s" +msgstr "door %s" + +#: templates/web/default/reports/body.html:6 +#: templates/web/default/reports/body.html:7 +msgid "council" +msgstr "gemeente" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:649 +msgid "council ref: %s" +msgstr "gemeente ref.: %s" + +#: 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 "kaart niet gebruikt" + +#: templates/web/default/alert/index.html:33 +#: templates/web/fixmystreet/around/postcode_form.html:20 +#: templates/web/seesomething/around/postcode_form.html:9 +msgid "e.g. ‘%s’ or ‘%s’" +msgstr "bv. '%s' of '%s'" + +#: 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" +msgstr "" + +#: perllib/Utils.pm:263 +msgid "less than a minute" +msgstr "minder dan een minuut" + +#: templates/web/default/report/updates.html:57 +msgid "marked as a duplicate report" +msgstr "" + +#: templates/web/default/report/updates.html:47 +msgid "marked as action scheduled" +msgstr "" + +#: templates/web/default/report/updates.html:59 +msgid "marked as an internal referral" +msgstr "" + +#: templates/web/default/report/updates.html:49 +msgid "marked as closed" +msgstr "" + +#: templates/web/default/report/updates.html:28 +#: templates/web/default/report/updates.html:51 +msgid "marked as fixed" +msgstr "gemarkeerd als opgelost" + +#: templates/web/default/report/updates.html:45 +msgid "marked as in progress" +msgstr "" + +#: templates/web/default/report/updates.html:41 +msgid "marked as investigating" +msgstr "" + +#: templates/web/default/report/updates.html:55 +msgid "marked as not the council's responsibility" +msgstr "" + +#: templates/web/default/report/updates.html:43 +msgid "marked as planned" +msgstr "" + +#: templates/web/default/report/updates.html:53 +msgid "marked as unable to fix" +msgstr "" + +#: 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 "n/b" + +#: templates/web/default/alert/_list.html:87 +#: templates/web/fixmybarangay/alert/_list.html:32 +#: templates/web/fixmystreet/alert/_list.html:85 +msgid "or" +msgstr "of" + +#: 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: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: “%s”" +msgstr "" + +#: templates/web/default/admin/report_edit.html:30 +msgid "other areas:" +msgstr "" + +#: templates/web/default/report/updates.html:29 +#: templates/web/default/report/updates.html:39 +msgid "reopened" +msgstr "" + +#: templates/web/barnet/header.html:71 templates/web/bromley/header.html:100 +#: templates/web/bromley/header.html:65 +#: templates/web/fixmybarangay/header.html:67 +#: templates/web/fixmystreet/header.html:51 +#: templates/web/oxfordshire/header.html:112 +#: templates/web/oxfordshire/header.html:48 +#: templates/web/stevenage/header.html:98 templates/web/zurich/footer.html:12 +msgid "sign out" +msgstr "" + +#: templates/web/bromley/report/new/fill_in_details_form.html:4 +#: templates/web/bromley/report/new/fill_in_details_form.html:7 +#: templates/web/default/report/new/fill_in_details_form.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:14 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:14 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:9 +msgid "the local council" +msgstr "" + +#: templates/web/default/report/_main.html:6 +#: templates/web/zurich/report/_main.html:5 +msgid "there is no pin shown as the user did not use the map" +msgstr "" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362 +msgid "this type of local problem" +msgstr "" + +#: perllib/Utils.pm:235 +msgid "today" +msgstr "" + +#: 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 "" + +#: templates/web/default/admin/update_edit.html:35 +msgid "user is from same council as problem - %d" +msgstr "" + +#: templates/web/default/admin/update_edit.html:38 +msgid "user is problem owner" +msgstr "" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:3 +msgid "ward" +msgstr "" + +#: templates/web/default/front/stats.html:17 +#, perl-format +msgid "<big>%s</big> report recently" +msgid_plural "<big>%s</big> reports recently" +msgstr[0] "" +msgstr[1] "" + +#: perllib/Utils.pm:282 +#, perl-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" +msgstr[1] "" + +#: templates/web/default/report/_support.html:6 +#, perl-format +msgid "%d supporter" +msgid_plural "%d supporters" +msgstr[0] "" +msgstr[1] "" + +#: perllib/Utils.pm:284 +#, perl-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "" +msgstr[1] "" + +#: templates/web/default/front/stats.html:29 +#, perl-format +msgid "<big>%s</big> update on reports" +msgid_plural "<big>%s</big> updates on reports" +msgstr[0] "" +msgstr[1] "" + +#: templates/web/emptyhomes/report/new/councils_text_none.html:3 +#, perl-format +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 +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "" +msgstr[1] "" + +#: templates/web/default/front/stats.html:12 +#, perl-format +msgid "<big>%s</big> report in past week" +msgid_plural "<big>%s</big> reports in past week" +msgstr[0] "" +msgstr[1] "" + +#: templates/web/default/front/stats.html:23 +#, perl-format +msgid "<big>%s</big> fixed in past month" +msgid_plural "<big>%s</big> fixed in past month" +msgstr[0] "" +msgstr[1] "" + +#: templates/web/default/report/new/councils_text_some.html:14 +#, perl-format +msgid "We do <strong>not</strong> yet have details for the other council that covers this location." +msgid_plural "We do <strong>not</strong> yet have details for the other councils that cover this location." +msgstr[0] "" +msgstr[1] "" + +#: perllib/Utils.pm:280 +#, perl-format +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 22a04be64..1a6443d78 100644 --- a/locale/nn_NO.UTF-8/LC_MESSAGES/FixMyStreet.po +++ b/locale/nn_NO.UTF-8/LC_MESSAGES/FixMyStreet.po @@ -1,41 +1,41 @@ -# translation of FixMyStreet.po to Norwegian Bokmål -# FixMyStreet original .po file, autogenerated by gettext-extract. -# Copyright (C) 2008 UK Citizens Online Democracy -# This file is distributed under the same license as the main FixMyStreet code. -# -# Matthew Somerville <matthew@mysociety.org>, 2008-04-15. -# Petter Reinholdtsen <pere@hungry.com>, 2011. -# Anders Einar Hilden <hildenae@gmail.com>, 2011. +# 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: +# Anders Einar Hilden <hildenae@gmail.com>, 2011 +# Guttorm Flatabø <post@guttormflatabo.com>, 2013 +# Petter Reinholdtsen <pere@hungry.com>, 2011 msgid "" msgstr "" -"Project-Id-Version: 1.0\n" +"Project-Id-Version: fixmystreet\n" "Report-Msgid-Bugs-To: matthew@mysociety.org\n" -"POT-Creation-Date: 2012-08-21 09:54+0100\n" -"PO-Revision-Date: 2011-12-08 10:56+0100\n" -"Last-Translator: Anders Einar Hilden <hildenae@gmail.com>\n" -"Language-Team: Norwegian Nynorsk <i18n-nn@lister.ping.uio.no>\n" -"Language: nn\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" "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:555 -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:337 +#: perllib/FixMyStreet/DB/Result/Problem.pm:602 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373 msgid " and " msgstr " og " #: templates/web/default/tokens/confirm_problem.html:14 -#: templates/web/default/tokens/confirm_problem.html:18 +#: templates/web/default/tokens/confirm_problem.html:17 msgid " and <strong>we will now send it to the council</strong>" msgstr " og <strong>vi sender det no til administrasjonen</strong>" -#: templates/web/default/report/new/councils_text_all.html:10 -#: templates/web/default/report/new/councils_text_all.html:17 -#: templates/web/default/report/new/councils_text_all.html:3 +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_none.html:11 #: templates/web/default/report/new/councils_text_none.html:14 -#: templates/web/default/report/new/councils_text_none.html:17 #: templates/web/default/report/new/councils_text_some.html:20 #: templates/web/default/report/new/councils_text_some.html:23 #: templates/web/default/report/new/councils_text_some.html:5 @@ -43,98 +43,70 @@ msgstr " og <strong>vi sender det no til administrasjonen</strong>" msgid " or " msgstr " eller " -#: templates/web/default/admin/council_list.html:17 +#: 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 – %d confirmed, %d unconfirmed" msgstr "%d administrasjonskontaktar – %d stadfesta, %d ikkje stadfesta" -#: perllib/Utils.pm:293 -msgid "%d day" -msgstr "%d dag" - -#: perllib/Utils.pm:293 -msgid "%d days" -msgstr "%d dagar" - -#: templates/web/default/admin/council_list.html:27 +#: templates/web/default/admin/edit-league.html:12 msgid "%d edits by %s" msgstr "%d redigeringar av %s" -#: perllib/Utils.pm:294 -msgid "%d hour" -msgstr "%d time" - -#: perllib/Utils.pm:294 -msgid "%d hours" -msgstr "%d timar" - -#: templates/web/default/admin/index.html:16 +#: templates/web/default/admin/index.html:24 msgid "%d live updates" msgstr "%d aktive oppdateringar" -#: perllib/Utils.pm:295 -msgid "%d minute" -msgstr "%d minutt" - -#: perllib/Utils.pm:295 -msgid "%d minutes" -msgstr "%d minutt" - -#: templates/web/default/admin/index.html:18 +#: templates/web/default/admin/index.html:26 msgid "%d questionnaires sent – %d answered (%s%%)" msgstr "%d spørjeskjema sendt – %d svart (%s%%)" -#: perllib/Utils.pm:292 -msgid "%d week" -msgstr "%d veke" - -#: perllib/Utils.pm:292 -msgid "%d weeks" -msgstr "%d veker" +#: templates/web/default/pagination.html:10 +msgid "%d to %d of %d" +msgstr "" -#: templates/web/default/reports/council.html:0 -#: templates/web/default/reports/council.html:26 -#: templates/web/emptyhomes/reports/council.html:11 -#: templates/web/emptyhomes/reports/council.html:13 +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:22 msgid "%s - Summary reports" msgstr "%s – oppsummeringsrapportar" -#: perllib/FixMyStreet/DB/Result/Problem.pm:605 +#: perllib/FixMyStreet/DB/Result/Problem.pm:651 msgid "%s ref: %s" -msgstr "" +msgstr "%s ref: %s" -#: perllib/FixMyStreet/Cobrand/UK.pm:288 perllib/FixMyStreet/Cobrand/UK.pm:300 +#: perllib/FixMyStreet/Cobrand/UK.pm:276 perllib/FixMyStreet/Cobrand/UK.pm:288 msgid "%s ward, %s" msgstr "%s bydel, %s" -#: perllib/FixMyStreet/DB/Result/Problem.pm:488 -msgid "%s, reported anonymously at %s" -msgstr "%s, rapportert anonymt %s" - -#: perllib/FixMyStreet/DB/Result/Problem.pm:490 -msgid "%s, reported by %s at %s" -msgstr "%s, rapportert av %s %s" +#: perllib/FixMyStreet/DB/Result/Problem.pm:538 +msgid "%s, reported at %s" +msgstr "" -#: perllib/FixMyStreet/Cobrand/UK.pm:315 perllib/FixMyStreet/Cobrand/UK.pm:327 +#: perllib/FixMyStreet/Cobrand/UK.pm:303 perllib/FixMyStreet/Cobrand/UK.pm:315 msgid "%s, within %s ward" msgstr "%s, innanfor bydelen %s" -#: templates/web/default/admin/stats.html:5 -msgid "%sreports between %s and %s" -msgstr "%srapportar mellom %s og %s" +#: templates/web/default/email_sent.html:29 +msgid "(Don't worry — we'll hang on to your alert while you're checking your email.)" +msgstr "" -#: templates/web/default/email_sent.html:28 -msgid "(Don't worry — %s)" -msgstr "(Ingen grunn til å uroa seg — %s)" +#: templates/web/default/email_sent.html:25 +msgid "(Don't worry — we'll hang on to your problem report while you're checking your email.)" +msgstr "" + +#: templates/web/default/email_sent.html:27 +msgid "(Don't worry — 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:29 msgid "(Email in abuse table)" msgstr "(Epost i misbruktabellen)" @@ -148,35 +120,42 @@ 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:23 -#, fuzzy +#: templates/web/fixmystreet/report/_item.html:22 +#: templates/web/zurich/report/_item.html:21 msgid "(closed)" -msgstr "Lukka" +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:21 +#: templates/web/fixmystreet/report/_item.html:20 +#: templates/web/zurich/report/_item.html:19 msgid "(fixed)" msgstr "(løyst)" #: templates/web/default/index.html:12 templates/web/default/index.html:8 -#: templates/web/fixmystreet/around/postcode_form.html:7 +#: templates/web/fixmystreet/around/intro.html:2 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:17 +#: templates/web/fixmystreet/report/_item.html:16 msgid "(not sent to council)" msgstr "(ikkje rapportert til administrasjonen)" #: templates/web/default/report/new/fill_in_details_form.html:217 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:140 +#: templates/web/zurich/report/new/fill_in_details_form.html:100 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:16 +#: templates/web/fixmystreet/report/_item.html:15 msgid "(sent to both)" msgstr "(sendt til begge)" @@ -184,168 +163,122 @@ msgstr "(sendt til begge)" msgid "(we never show your email address or phone number)" msgstr "(vi viser aldri e-postadressa di eller telefonnummeret ditt)" -#: templates/web/default/report/display.html:209 +#: templates/web/default/report/update-form.html:158 msgid "(we never show your email)" msgstr "(vi viser aldri e-postadressa di)" -#: perllib/FixMyStreet/App/Controller/Admin.pm:284 -msgid "*unknown*" -msgstr "*ukjent*" - -#: perllib/FixMyStreet/App/Controller/Report/New.pm:629 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:655 -#: perllib/FixMyStreet/DB/Result/Problem.pm:345 +#: 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 "-- Vel ein kategori --" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:609 -#: perllib/FixMyStreet/DB/Result/Problem.pm:351 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:618 +#: perllib/FixMyStreet/DB/Result/Problem.pm:385 msgid "-- Pick a property type --" msgstr "-- Vel ein eigedomstype --" -#: templates/web/default/tokens/confirm_problem.html:14 -#: templates/web/default/tokens/confirm_problem.html:22 -#, fuzzy -msgid ". You can <a href=\"%s%s\">view the problem on this site</a>." -msgstr ". Du kan <a href=\"%s\">lesa om problemet på portalen</a>." +#: templates/web/emptyhomes/front/stats.html:5 +msgid "<big>%s</big> reports" +msgstr "" -#: templates/web/default/questionnaire/completed.html:20 +#: templates/web/default/admin/body-form.html:42 +#: templates/web/default/admin/body-form.html:43 msgid "" -"<p style=\"font-size:150%\">Thank you very much for filling in our " -"questionnaire; glad to hear it’s been fixed.</p>" +"<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 "" -"<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>" + +#: 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’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>" #: templates/web/fiksgatami/questionnaire/completed-open.html:1 -#, fuzzy msgid "" "<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" -"suggestions: why not try <a href=\"http://www.norge.no/styresmakter/" -"\">writing\n" +"suggestions: why not try <a href=\"http://www.norge.no/styresmakter/\">writing\n" "direct to your councillor(s)</a> or, if it’s a problem that could be\n" "fixed by local people working together, why not\n" "<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" "</p>" msgstr "" -"<p style=\"font-size:150%%\">Det var trist å høyra dette. Vi har to forslag: " -"kva med å freista\n" -"<a href=\"%s\">å skriva direkte til representantane dine</a>, eller viss det " -"er eit problem som kan fiksast\n" -"av folk i nabolaget som jobbar saman, kva med å <a href=\"http://www." -"pledgebank.com/new\">publisera ei utfordring om å bidra</a>?</p>" -#: templates/web/fixmystreet/questionnaire/completed-open.html:1 -#, fuzzy +#: templates/web/fixmystreet/questionnaire/completed-open.html:6 msgid "" "<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" -"suggestions: why not try <a href=\"http://www.writetothem.com/\">writing " -"direct\n" -"to your councillor(s)</a> or, if it’s a problem that could be fixed " -"by\n" +"suggestions: why not try <a href=\"http://www.writetothem.com/\">writing direct\n" +"to your councillor(s)</a> or, if it’s a problem that could be fixed by\n" "local people working together, why not\n" "<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" "</p>" msgstr "" -"<p style=\"font-size:150%%\">Det var trist å høyra dette. Vi har to forslag: " -"kva med å freista\n" -"<a href=\"%s\">å skriva direkte til representantane dine</a>, eller viss det " -"er eit problem som kan fiksast\n" -"av folk i nabolaget som jobbar saman, kva med å <a href=\"http://www." -"pledgebank.com/new\">publisera ei utfordring om å bidra</a>?</p>" -#: templates/web/default/questionnaire/completed-open.html:1 -#, fuzzy +#: templates/web/default/questionnaire/completed-open.html:6 msgid "" "<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" -"suggestions: why not try writing to your local representative or, if " -"it’s\n" +"suggestions: why not try writing to your local representative or, if it’s\n" "a problem that could be fixed by local people working together, why not\n" "<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" "</p>" msgstr "" -"<p style=\"font-size:150%%\">Det var trist å høyra dette. Vi har to forslag: " -"kva med å freista\n" -"<a href=\"%s\">å skriva direkte til representantane dine</a>, eller viss det " -"er eit problem som kan fiksast\n" -"av folk i nabolaget som jobbar saman, kva med å <a href=\"http://www." -"pledgebank.com/new\">publisera ei utfordring om å bidra</a>?</p>" #: templates/web/default/questionnaire/index.html:35 msgid "" -"<p>Getting empty homes back into use can be difficult, but by now a good " -"council\n" +"<p>Getting empty homes back into use can be difficult, but by now a good council\n" "will have made a lot of progress and reported what they have done on the\n" -"website. Even so properties can remain empty for many months if the owner " -"is\n" -"unwilling or the property is in very poor repair. If nothing has happened " -"or\n" -"you are not satisfied with the progress the council is making, now is the " -"right\n" -"time to say so. We think it’s a good idea to contact some other people " -"who\n" +"website. Even so properties can remain empty for many months if the owner is\n" +"unwilling or the property is in very poor repair. If nothing has happened or\n" +"you are not satisfied with the progress the council is making, now is the right\n" +"time to say so. We think it’s a good idea to contact some other people who\n" "may be able to help or put pressure on the council For advice on how to do\n" "this and other useful information please go to <a\n" -"href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www." -"emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +"href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" msgstr "" #: templates/web/default/questionnaire/index.html:26 msgid "" -"<p>Getting empty homes back into use can be difficult. You shouldn’t " -"expect\n" -"the property to be back into use yet. But a good council will have started " -"work\n" +"<p>Getting empty homes back into use can be difficult. You shouldn’t expect\n" +"the property to be back into use yet. But a good council will have started work\n" "and should have reported what they have done on the website. If you are not\n" -"satisfied with progress or information from the council, now is the right " -"time\n" -"to say. You may also want to try contacting some other people who may be " -"able\n" +"satisfied with progress or information from the council, now is the right time\n" +"to say. You may also want to try contacting some other people who may be able\n" "to help. For advice on how to do this and other useful information please\n" -"go to <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://" -"www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +"go to <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" msgstr "" #: templates/web/default/questionnaire/completed.html:9 msgid "" "<p>Thank you very much for filling in our questionnaire; if you\n" -"get some more information about the status of your problem, please come back " -"to the\n" +"get some more information about the status of your problem, please come back to the\n" "site and leave an update.</p>" msgstr "" "<p>Tusen takk for at du fylte ut spørjeskjemaet vårt. Viss du får meir\n" "informasjon om status for problemet ditt, ver så snill og kom tilbake\n" "til nettstaden og legg igjen ei oppdatering.</p>" -#: templates/web/default/around/display_location.html:70 -#: templates/web/default/around/display_location.html:72 -#: templates/web/emptyhomes/around/display_location.html:36 -#: templates/web/emptyhomes/around/display_location.html:38 -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/around/_report_banner.html:3 +#: templates/web/default/around/_report_banner.html:5 +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" -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:172 -#, fuzzy +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:183 msgid "<strong>No</strong> Let me confirm my report by email" -msgstr "<strong>Nei</strong>, la meg stadfesta rapporten min med e-post:" +msgstr "" -#: templates/web/fixmystreet/report/display.html:148 -#, fuzzy +#: templates/web/fixmystreet/report/update-form.html:110 msgid "<strong>No</strong> Let me confirm my update by email" -msgstr "<strong>Nei</strong>, la meg stadfesta oppdateringa mi med e-post:" +msgstr "" -#: templates/web/fixmystreet/auth/general.html:46 -#, fuzzy +#: 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 "<strong>Nei</strong>, det gjer eg ikkje. La meg logga inn med e-post:" +msgstr "" #: templates/web/default/auth/general.html:55 msgid "<strong>No</strong>, I do not, let me sign in by email:" @@ -355,34 +288,70 @@ msgstr "<strong>Nei</strong>, det gjer eg ikkje. La meg logga inn med e-post:" msgid "<strong>No</strong>, let me confirm my report by email:" msgstr "<strong>Nei</strong>, la meg stadfesta rapporten min med e-post:" -#: templates/web/default/report/display.html:164 +#: templates/web/default/report/update-form.html:117 msgid "<strong>No</strong>, let me confirm my update by email:" msgstr "<strong>Nei</strong>, la meg stadfesta oppdateringa mi med e-post:" #: templates/web/default/auth/general.html:37 -#: templates/web/default/report/display.html:142 #: templates/web/default/report/new/fill_in_details_form.html:140 -#: templates/web/fixmystreet/auth/general.html:32 -#: templates/web/fixmystreet/auth/general.html:34 -#: templates/web/fixmystreet/report/display.html:131 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:154 -#, fuzzy +#: templates/web/default/report/update-form.html:95 +#: templates/web/fixmystreet/auth/general.html:36 +#: templates/web/fixmystreet/auth/general.html:38 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:159 +#: templates/web/fixmystreet/report/update-form.html:87 msgid "<strong>Yes</strong> I have a password" -msgstr "<strong>Ja</strong>, eg har eit passord:" - -#: templates/web/default/static/about.html:1 -#: templates/web/default/static/about.html:3 -#: templates/web/emptyhomes/header.html:29 -#: templates/web/emptyhomes/static/about.html:1 -#: templates/web/emptyhomes/static/about.html:3 +msgstr "<strong>Ja</strong>, eg har eit passord" + +#: templates/web/default/static/about-en-gb.html:1 +#: templates/web/default/static/about-en-gb.html:3 +#: templates/web/emptyhomes/header.html:34 +#: templates/web/emptyhomes/static/about-cy.html:1 +#: templates/web/emptyhomes/static/about-cy.html:3 +#: templates/web/emptyhomes/static/about-en-gb.html:1 +#: templates/web/emptyhomes/static/about-en-gb.html:3 msgid "About us" msgstr "Om oss" -#: templates/web/default/admin/council_contacts.html:66 +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:81 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:39 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 +msgid "Action Scheduled" +msgstr "" + +#: 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:88 +#: templates/web/zurich/admin/body.html:30 msgid "Add new category" msgstr "Legg til ny kategori" -#: templates/web/default/my/my.html:56 templates/web/fixmystreet/my/my.html:56 +#: templates/web/default/admin/users.html:45 +msgid "Add user" +msgstr "" + +#: templates/web/default/my/my.html:56 templates/web/fixmystreet/my/my.html:60 msgid "Added %s" msgstr "La til %s" @@ -390,185 +359,222 @@ msgstr "La til %s" msgid "Again:" msgstr "Gjenta:" -#: templates/web/default/admin/timeline.html:37 +#: templates/web/default/admin/timeline.html:35 msgid "Alert %d created for %s, type %s, parameters %s / %s" msgstr "Varsel %d oppretta for %s, type %s, parameter %s / %s" -#: templates/web/default/admin/timeline.html:39 +#: templates/web/default/admin/timeline.html:37 msgid "Alert %d disabled (created %s)" msgstr "Varsel %d kobla ut (oppretta %s)" -#: templates/web/bromley/report/display.html:207 -#: templates/web/default/report/display.html:214 -#: templates/web/fixmystreet/report/display.html:189 +#: templates/web/bromley/report/display.html:209 +#: templates/web/default/report/update-form.html:163 +#: templates/web/fixmystreet/report/update-form.html:148 msgid "Alert me to future updates" msgstr "Send meg varsel ved framtidige oppdateringar" -#: templates/web/default/admin/stats.html:5 -msgid "All" -msgstr "Alle" - #: templates/web/default/reports/index.html:3 -#, fuzzy +#: templates/web/fixmybarangay/reports/index.html:3 +#: templates/web/zurich/admin/stats.html:5 +#: templates/web/zurich/reports/index.html:15 msgid "All Reports" -msgstr "Alle rapportar" - -#: templates/web/default/admin/council_list.html:44 -msgid "All confirmed" -msgstr "Alle stadfesta" +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/fixmystreet/footer.html:49 -#: templates/web/reading/footer.html:8 +#: 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 "Alle rapportar" +#: templates/web/default/admin/stats.html:5 +#: templates/web/zurich/admin/stats.html:8 +msgid "All reports between %s and %s" +msgstr "" + #: templates/web/default/report/new/councils_text_some.html:2 msgid "All the information you provide here will be sent to" msgstr "All informasjonen du har lagt inn her vil sendast til" -#: templates/web/default/report/new/councils_text_all.html:10 -#: templates/web/default/report/new/councils_text_all.html:12 -#, fuzzy -msgid "" -"All the information you provide here will be sent to <strong>%s</strong> or " -"<strong>Roads Service</strong>." +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:13 +msgid "All the information you provide here will be sent to <strong>%s</strong> or <strong>Roads Service</strong>." msgstr "" -"All informasjonen du har lagt inn her vil sendast til <strong>%s</strong>." -# TfL? skal ikkje det omsetjast? --KBU -#: templates/web/default/report/new/councils_text_all.html:3 -#: templates/web/default/report/new/councils_text_all.html:5 -msgid "" -"All the information you provide here will be sent to <strong>%s</strong> or " -"a relevant local body such as <strong>TfL</strong>, via the London Report-It " -"system." -msgstr "" -"All informasjonen du gjev oss her vil sendast til <strong>%s</strong> eller " -"ein relevant lokal etat som <strong>TfL</strong>, via systemet London Report-" -"It." +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_all.html:6 +msgid "All the information you provide here will be sent to <strong>%s</strong> or a relevant local body such as <strong>TfL</strong>, via the London Report-It system." +msgstr "All informasjonen du gjev oss her vil sendast til <strong>%s</strong> eller ein relevant lokal etat som <strong>TfL</strong>, via systemet London Report-It." #: templates/web/bromley/report/new/fill_in_details_form.html:4 #: templates/web/bromley/report/new/fill_in_details_form.html:6 -#: templates/web/default/report/new/councils_text_all.html:17 -#: templates/web/default/report/new/councils_text_all.html:19 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:20 #: templates/web/default/report/new/fill_in_details_form.html:11 #: templates/web/default/report/new/fill_in_details_form.html:13 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:8 -msgid "" -"All the information you provide here will be sent to <strong>%s</strong>." -msgstr "" -"All informasjonen du har lagt inn her vil sendast til <strong>%s</strong>." - #: templates/web/emptyhomes/report/new/councils_text_all.html:2 #: templates/web/emptyhomes/report/new/councils_text_all.html:4 -msgid "" -"All the information you provide here will be sent to <strong>%s</strong>. On " -"the site, we will show the subject and details of the problem, plus your " -"name if you give us permission." -msgstr "" -"All informasjonen du legg inn her vil sendast til <strong>%s</strong>.\n" -"På dette nettestedet vil vi visa emne og detaljar om problemet,\n" -"inkludert namnet ditt dersom du gjev oss lov." +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:13 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:8 +msgid "All the information you provide here will be sent to <strong>%s</strong>." +msgstr "All informasjonen du har lagt inn her vil sendast til <strong>%s</strong>." #: templates/web/default/questionnaire/index.html:60 #: templates/web/fixmystreet/questionnaire/index.html:54 msgid "An update marked this problem as fixed." msgstr "Ei oppdatering markerte dette problemet som løyst." -#: templates/web/default/admin/list_flagged.html:15 -#: templates/web/default/admin/list_updates.html:10 -#: templates/web/default/admin/search_reports.html:18 +#: templates/web/default/admin/list_updates.html:32 +#: templates/web/default/admin/problem_row.html:20 msgid "Anonymous" msgstr "Anonym" -#: templates/web/default/admin/report_edit.html:26 -#: templates/web/default/admin/update_edit.html:14 +#: templates/web/default/admin/report_edit.html:62 +#: templates/web/default/admin/update_edit.html:23 msgid "Anonymous:" msgstr "Anonym:" #: templates/web/default/footer.html:26 -#, fuzzy -msgid "" -"Are you a <strong>developer</strong>? Would you like to contribute to " -"FixMyStreet?" -msgstr "Er du ein utviklar? Kunne du tenkja deg å bidra til FiksGataMi?" +msgid "Are you a <strong>developer</strong>? Would you like to contribute to FixMyStreet?" +msgstr "" -#: templates/web/fixmystreet/footer.html:17 +#: templates/web/fixmystreet/footer.html:16 +#: templates/web/stevenage/footer.html:17 msgid "Are you a developer?" msgstr "" -#: templates/web/fixmystreet/footer.html:21 -#, fuzzy +#: templates/web/fixmystreet/footer.html:20 +#: templates/web/stevenage/footer.html:21 msgid "Are you from a council?" -msgstr "den lokale administrasjonen" +msgstr "" -#: templates/web/default/open311/index.html:17 -msgid "" -"At most %d requests are returned in each query. The returned requests are " -"ordered by requested_datetime, so to get all requests, do several searches " -"with rolling start_date and end_date." +#: templates/web/default/admin/body-form.html:69 +#: templates/web/zurich/admin/body-form.html:24 +msgid "Area covered" msgstr "" -"På det meste vert %d førespurnader returnert i kvar spørring. Dei returnerte " -"førespurnadene vert sorterte på requested_datetime, så ein må gjera fleire " -"søk med rullerande start_date og end_date for å få tak i alle førespurnadene." -#: templates/web/default/open311/index.html:9 +#: 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:153 +msgid "Assign to external body:" +msgstr "" + +#: 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:141 +#: templates/web/zurich/report/updates.html:11 +msgid "Assigned to %s" +msgstr "" + +#: templates/web/default/open311/index.html:86 +msgid "At most %d requests are returned in each query. The returned requests are ordered by requested_datetime, so to get all requests, do several searches with rolling start_date and end_date." +msgstr "På det meste vert %d førespurnader returnert i kvar spørring. Dei returnerte førespurnadene vert sorterte på requested_datetime, så ein må gjera fleire søk med rullerande start_date og end_date for å få tak i alle førespurnadene." + +#: templates/web/default/open311/index.html:78 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:334 +#: templates/web/zurich/report/_item.html:11 +msgid "Awaiting moderation" +msgstr "" + +#: templates/web/default/js/translation_strings.html:32 +#: templates/web/oxfordshire/js/translation_strings.html:26 +msgid "Back" +msgstr "" + #: templates/web/default/admin/report_blocks.html:11 msgid "Ban email address" msgstr "Bannlys e-postadresse" +#: templates/web/fixmybarangay/report/new/notes.html:7 +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: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: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:32 +msgid "Body:" +msgstr "" + #: templates/web/fiksgatami/footer.html:16 #: templates/web/fiksgatami/nn/footer.html:16 -msgid "" -"Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained " -"by <a href=\"http://www.nuug.no/\">NUUG</a>" -msgstr "" -"Bygd av <a href=\"http://www.mysociety.org/\">mySociety</a> og vedlikeheldt " -"av <a href=\"http://www.nuug.no/\">NUUG</a>" +msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained by <a href=\"http://www.nuug.no/\">NUUG</a>" +msgstr "Bygd av <a href=\"http://www.mysociety.org/\">mySociety</a> og vedlikeheldt av <a href=\"http://www.nuug.no/\">NUUG</a>" #: templates/web/default/admin/stats.html:80 msgid "By Date" msgstr "På dato" -#: templates/web/fixmystreet/around/display_location.html:80 -#: templates/web/fixmystreet/around/display_location.html:82 -#, fuzzy +#: templates/web/fixmystreet/around/_report_banner.html:10 +#: templates/web/fixmystreet/around/_report_banner.html:8 msgid "Can't see the map? <a href='%s' rel='nofollow'>Skip this step</a>" msgstr "" -"<small>Viss du ikkje kan sjå kartet, <a href='%s' rel='nofollow'>hopp over " -"dette steget</a>.</small>" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:632 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:657 #: templates/web/bromley/report/new/fill_in_details_form.html:68 -#: templates/web/default/admin/council_contacts.html:35 -#: templates/web/default/admin/index.html:36 -#: templates/web/default/admin/list_flagged.html:14 -#: templates/web/default/admin/search_reports.html:17 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:72 +#: 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 "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/council_contacts.html:72 -#: templates/web/default/admin/council_edit.html:23 -#: templates/web/default/admin/report_edit.html:25 +#: 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 "Kategori:" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:334 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366 msgid "Category: %s" msgstr "Kategori: %s" @@ -578,81 +584,118 @@ msgstr "Kategori: %s" msgid "Change Password" msgstr "Byt passord" -#: templates/web/fixmystreet/around/display_location.html:72 -#: templates/web/fixmystreet/around/display_location.html:73 -#, fuzzy +#: 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 "" + +#: templates/web/oxfordshire/js/translation_strings.html:39 +#, fuzzy +msgid "Click on the map to report a problem" msgstr "Korleis rapportera eit problem" -#: templates/web/bromley/report/display.html:80 -#: templates/web/bromley/report/display.html:82 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:20 -#: templates/web/default/dashboard/index.html:136 -#: templates/web/default/dashboard/index.html:138 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:81 +#: 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/fixmystreet/report/display.html:74 -#: templates/web/fixmystreet/report/display.html:76 +#: 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 "Lukka" -# skal det vera forskjellig tyding frå engelsken her? --KBU -#: perllib/FixMyStreet/DB/Result/Problem.pm:690 +#: perllib/FixMyStreet/DB/Result/Problem.pm:744 msgid "Closed by council" msgstr "(ikkje rapportert til administrasjonen)" -#: templates/web/default/my/my.html:32 templates/web/fixmystreet/my/my.html:32 +#: templates/web/default/my/my.html:32 templates/web/fixmystreet/my/my.html:36 msgid "Closed reports" msgstr "Lukka rapportar" -#: templates/web/default/admin/problem_row.html:25 +#: templates/web/default/admin/problem_row.html:38 msgid "Closed:" msgstr "Lukka:" -#: templates/web/default/around/display_location.html:103 -#: templates/web/default/around/display_location.html:105 +#: templates/web/default/around/tabbed_lists.html:10 +#: templates/web/default/around/tabbed_lists.html:12 msgid "Closest nearby problems <small>(within %skm)</small>" msgstr "Dei næraste problema <small>(innanfor %skm)</small>" -#: templates/web/default/admin/report_edit.html:15 +#: 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 "Koordinatar:" -#: templates/web/default/admin/list_flagged.html:16 -#: templates/web/default/admin/list_updates.html:13 -#: templates/web/default/admin/search_reports.html:19 +#: templates/web/default/admin/list_updates.html:10 msgid "Cobrand" msgstr "Merkevaresamarbeid" -#: templates/web/default/admin/report_edit.html:39 -#: templates/web/default/admin/update_edit.html:41 +#: templates/web/default/admin/report_edit.html:75 +#: templates/web/default/admin/update_edit.html:50 msgid "Cobrand data:" msgstr "Data om merkevaresamarbeid:" -#: templates/web/default/admin/report_edit.html:38 -#: templates/web/default/admin/update_edit.html:40 +#: templates/web/default/admin/report_edit.html:74 +#: templates/web/default/admin/update_edit.html:49 msgid "Cobrand:" msgstr "Merkevaresamarbeid:" -#: perllib/FixMyStreet/App/Controller/Admin.pm:358 -msgid "Configuration updated" -msgstr "Oppsett oppdatert" +#: templates/web/default/admin/config_page.html:1 +#, fuzzy +msgid "Configuration" +msgstr "Stadfesting" -#: perllib/FixMyStreet/App/Controller/Admin.pm:372 +#: perllib/FixMyStreet/App/Controller/Admin.pm:421 msgid "Configuration updated - contacts will be generated automatically later" msgstr "Oppsett oppdatert - kontaktar vil genererast automatisk seinare" -#: templates/web/default/admin/council_contacts.html:153 -msgid "Configure Open311" -msgstr "Sett opp Open311" - -#: templates/web/default/admin/council_contacts.html:105 -msgid "Configure Open311 integration" -msgstr "Sett opp Open311-integrasjon" +#: templates/web/default/admin/body_edit.html:47 +msgid "Configure Endpoint" +msgstr "" -#: templates/web/default/admin/council_contacts.html:42 +#: templates/web/default/admin/body.html:62 msgid "Confirm" msgstr "Stadfest" @@ -660,6 +703,11 @@ msgstr "Stadfest" msgid "Confirm account" msgstr "Stadfest konto" +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:177 +#: templates/web/fixmystreet/report/update-form.html:105 +msgid "Confirm by email below, providing a new password at that point. When you confirm, your password will be updated." +msgstr "" + #: templates/web/default/questionnaire/creator_fixed.html:1 #: templates/web/default/tokens/confirm_problem.html:1 #: templates/web/default/tokens/confirm_problem.html:3 @@ -667,19 +715,28 @@ msgstr "Stadfest konto" #: templates/web/default/tokens/confirm_update.html:3 #: templates/web/emptyhomes/tokens/confirm_problem.html:1 #: templates/web/emptyhomes/tokens/confirm_problem.html:3 +#: templates/web/southampton/tokens/confirm_problem.html:1 +#: templates/web/southampton/tokens/confirm_problem.html:3 +#: templates/web/zurich/tokens/confirm_problem.html:1 +#: templates/web/zurich/tokens/confirm_problem.html:3 msgid "Confirmation" msgstr "Stadfesting" -#: templates/web/default/admin/council_contacts.html:37 -#: templates/web/default/admin/council_contacts.html:82 -#: templates/web/default/admin/council_edit.html:28 -#: templates/web/default/admin/council_edit.html:43 -#: templates/web/default/admin/stats.html:5 +#: 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 "Stadfesta" -#: templates/web/default/admin/problem_row.html:23 -#: templates/web/default/admin/report_edit.html:34 +#: templates/web/default/admin/stats.html:5 +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:" msgstr "Stadfesta:" @@ -704,43 +761,38 @@ msgstr "Kontakt oss" #: templates/web/bromley/contact/submit.html:3 #: templates/web/default/contact/index.html:6 #: templates/web/default/contact/submit.html:3 -#: templates/web/fixmystreet/contact/index.html:7 +#: templates/web/fixmystreet/contact/index.html:19 msgid "Contact the team" msgstr "Kontakt prosjektgruppa" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1150 -#: perllib/FixMyStreet/App/Controller/Admin.pm:1178 +#: 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/admin/list_flagged.html:13 -#: templates/web/default/admin/list_updates.html:12 -#: templates/web/default/admin/search_reports.html:16 -#: templates/web/default/admin/search_users.html:14 +#: 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:9 msgid "Council" msgstr "Administrasjon" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1022 -#: templates/web/default/admin/council_list.html:1 -msgid "Council contacts" -msgstr "Administrasjonskontaktar" - -#: templates/web/default/admin/council_contacts.html:1 -#: templates/web/default/admin/council_edit.html:1 +#: templates/web/default/admin/body.html:1 +#: templates/web/default/admin/body_edit.html:1 +#: templates/web/zurich/admin/body.html:1 msgid "Council contacts for %s" msgstr "Administrasjonskontaktar for %s" #: templates/web/default/admin/stats.html:84 -#: templates/web/default/admin/user_edit.html:12 msgid "Council:" msgstr "Administrasjon:" -#: templates/web/default/admin/council_list.html:36 -msgid "Councils" -msgstr "Administrasjonar" - #: templates/web/default/admin/stats.html:12 #: templates/web/default/admin/stats.html:32 +#: templates/web/zurich/admin/stats.html:45 +#: templates/web/zurich/admin/stats.html:50 msgid "Count" msgstr "Mengd" @@ -748,18 +800,23 @@ msgstr "Mengd" msgid "Create a report" msgstr "Lag ein rapport" -#: templates/web/default/admin/council_contacts.html:96 +#: 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_flagged.html:17 -#: templates/web/default/admin/list_updates.html:9 -#: templates/web/default/admin/search_reports.html:20 +#: 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 "Oppretta" -#: templates/web/default/admin/report_edit.html:33 -#: templates/web/default/admin/update_edit.html:42 +#: 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 "Oppretta:" @@ -767,41 +824,69 @@ msgstr "Oppretta:" msgid "Current state" msgstr "Gjeldande tilstand" -#: templates/web/default/admin/council_list.html:40 -msgid "Currently has 1+ deleted" -msgstr "For tida har 1+ sletta" +#: 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" msgstr "" -#: templates/web/default/admin/council_contacts.html:38 -#: templates/web/default/admin/council_contacts.html:85 -#: templates/web/default/admin/council_edit.html:29 -#: templates/web/default/admin/council_edit.html:44 +#: templates/web/zurich/admin/stats.html:35 +msgid "Dealt with by subdivision within 5 working days" +msgstr "" + +#: 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 "Sletta" +#: templates/web/zurich/admin/index-dm.html:22 +#: templates/web/zurich/admin/index-sdm.html:20 +#: templates/web/zurich/admin/reports.html:12 +msgid "Description" +msgstr "" + #: templates/web/bromley/report/new/fill_in_details_form.html:54 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:64 -#, fuzzy +#: 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 "Detaljar:" +msgstr "" -#: templates/web/default/admin/report_edit.html:14 +#: 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 "Detaljar:" -#: templates/web/default/admin/council_list.html:23 +#: templates/web/default/admin/body.html:57 +msgid "Devolved" +msgstr "" + +#: templates/web/default/admin/edit-league.html:8 msgid "Diligency prize league table" msgstr "Arbeidshestar" +#: templates/web/fixmystreet/auth/general.html:30 +msgid "Do you have a FixMyBarangay password?" +msgstr "" + #: templates/web/default/auth/general.html:32 -#: templates/web/fixmystreet/auth/general.html:29 -#: templates/web/fixmystreet/report/display.html:128 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:150 +#: templates/web/fixmystreet/auth/general.html:32 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:155 +#: templates/web/fixmystreet/report/update-form.html:84 msgid "Do you have a FixMyStreet password?" msgstr "Har du eit FiksGataMi-passord?" @@ -810,17 +895,47 @@ msgstr "Har du eit FiksGataMi-passord?" msgid "Don’t know" msgstr "Veit ikkje" -#: templates/web/default/admin/list_updates.html:35 -#: templates/web/default/admin/problem_row.html:29 -#: templates/web/default/admin/search_users.html:24 +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:82 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:47 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 +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:31 +#: templates/web/zurich/admin/problem_row.html:42 msgid "Edit" msgstr "Rediger" +#: templates/web/default/admin/body.html:189 +#: templates/web/zurich/admin/body.html:64 +msgid "Edit body details" +msgstr "" + #: templates/web/default/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:4 +#: templates/web/zurich/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit.html:5 msgid "Editing problem %d" msgstr "Rediger problem %d" #: templates/web/default/admin/update_edit.html:1 +#: templates/web/zurich/admin/update_edit.html:1 msgid "Editing update %d" msgstr "Redigerer oppdatering %d" @@ -828,59 +943,72 @@ msgstr "Redigerer oppdatering %d" msgid "Editing user %d" msgstr "Redigerer brukar %d" -#: templates/web/default/admin/council_edit.html:45 +#: templates/web/default/admin/body_edit.html:86 msgid "Editor" msgstr "Oppdatert av" -#: templates/web/bromley/report/display.html:126 -#: templates/web/default/admin/council_contacts.html:36 -#: templates/web/default/admin/council_edit.html:42 -#: templates/web/default/admin/list_flagged.html:12 -#: templates/web/default/admin/list_flagged.html:35 -#: templates/web/default/admin/list_updates.html:8 -#: templates/web/default/admin/search_abuse.html:11 -#: templates/web/default/admin/search_reports.html:15 -#: templates/web/default/admin/search_users.html:13 +#: 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/display.html:120 +#: 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 "E-post" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1126 +#: 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:1123 +#: 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" -#: templates/web/default/around/display_location.html:85 +#: templates/web/default/around/_updates.html:5 msgid "Email me new local problems" msgstr "Send meg e-post om lokale problem" -#: templates/web/default/report/display.html:30 +#: templates/web/default/report/display.html:34 msgid "Email me updates" msgstr "Send meg oppdateringar" -#: templates/web/default/admin/council_contacts.html:77 -#: templates/web/default/admin/council_edit.html:26 -#: templates/web/default/admin/report_edit.html:31 -#: templates/web/default/admin/update_edit.html:24 -#: templates/web/default/admin/user_edit.html:11 +#: 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:34 +#: 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 "E-post:" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:611 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318 +msgid "Email: %s" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:620 msgid "Empty flat or maisonette" msgstr "Tom leilegheit" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:610 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:619 msgid "Empty house or bungalow" msgstr "Tomt hus eller bungalow" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:613 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:622 msgid "Empty office or other commercial" msgstr "Tomt kontor eller forretningsbygg" @@ -888,36 +1016,47 @@ msgstr "Tomt kontor eller forretningsbygg" msgid "Empty property details form" msgstr "Tom eigedom detaljskjema" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:614 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:623 msgid "Empty pub or bar" msgstr "Tom pub eller bar" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:615 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:624 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:" +#: 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:70 +#, fuzzy +msgid "End Date:" msgstr "Sluttdag:" -#: templates/web/default/admin/stats.html:71 -msgid "End month:" -msgstr "Sluttmånad:" +#: templates/web/default/admin/body-form.html:126 +msgid "Endpoint" +msgstr "" -# GB – Great Britain? --KBU -#: templates/web/emptyhomes/index.html:40 -#: templates/web/emptyhomes/index.html:41 -msgid "Enter a nearby GB postcode, or street name and area" -msgstr "Skriv inn GB-postnummer i nærleiken, eller vegnamn og stad" +#: perllib/FixMyStreet/Cobrand/Zurich.pm:71 +msgid "Enter a Zürich street name" +msgstr "" #: perllib/FixMyStreet/Cobrand/UK.pm:18 -#, fuzzy msgid "Enter a nearby UK postcode, or street name and area" -msgstr "Skriv inn postnummer i nærleiken, eller vegnamn og stad" +msgstr "" #: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:25 msgid "Enter a nearby postcode, or street name and area" @@ -927,27 +1066,27 @@ msgstr "Skriv inn postnummer i nærleiken, eller vegnamn og stad" #: templates/web/default/around/postcode_form.html:2 #: templates/web/fixmystreet/around/postcode_form.html:10 #: templates/web/fixmystreet/around/postcode_form.html:11 -#, fuzzy +#: templates/web/seesomething/around/postcode_form.html:3 +#: templates/web/seesomething/around/postcode_form.html:4 msgid "Enter a nearby street name and area" -msgstr "Skriv inn postnummer i nærleiken, eller vegnamn og stad" +msgstr "" #: templates/web/default/auth/general.html:64 -#: templates/web/default/report/display.html:171 #: templates/web/default/report/new/fill_in_details_form.html:169 +#: templates/web/default/report/update-form.html:124 msgid "Enter a new password:" msgstr "Skriv inn eit nytt passord:" -#: templates/web/bromley/report/display.html:148 +#: templates/web/bromley/report/display.html:150 #: templates/web/bromley/report/new/fill_in_details_form.html:189 -#: templates/web/fixmystreet/auth/general.html:57 -#: templates/web/fixmystreet/report/display.html:160 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:200 -#, fuzzy +#: 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 "Skriv inn eit nytt passord:" +msgstr "Enter a password" -#: templates/web/default/index.html:33 templates/web/emptyhomes/index.html:58 -#: templates/web/fixmystreet/index.html:41 +#: templates/web/default/index-steps.html:26 msgid "Enter details of the problem" msgstr "Legg inn detaljar om problemet" @@ -961,208 +1100,222 @@ msgstr "Legg inn detaljar om problemet" msgid "Error" msgstr "Feil" -#: templates/web/default/admin/council_contacts.html:11 -#: templates/web/default/admin/council_edit.html:18 +#: templates/web/default/admin/body.html:11 +#: templates/web/default/admin/body_edit.html:18 msgid "Example postcode %s" msgstr "Postnummerdøme %s" -#: templates/web/default/open311/index.html:27 +#: templates/web/default/open311/index.html:96 msgid "Examples:" msgstr "Døme:" -#: templates/web/default/admin/report_edit.html:40 -#, fuzzy +#: templates/web/default/admin/report_edit.html:76 msgid "Extra data:" -msgstr "Data om merkevaresamarbeid:" +msgstr "" #: templates/web/bromley/contact/submit.html:14 #: templates/web/default/contact/submit.html:15 -msgid "" -"Failed to send message. Please try again, or <a href=\"mailto:%s\">email " -"us</a>." +msgid "Failed to send message. Please try again, or <a href=\"mailto:%s\">email us</a>." +msgstr "Klarte ikkje å senda meldinga. Ver venleg og prøv igjen seinare eller <a href=\"mailto:%s\">send oss ein e-post</a>." + +#: templates/web/zurich/admin/index-dm.html:33 +#: templates/web/zurich/admin/index-sdm.html:30 +msgid "Filter report list" +msgstr "" + +#: templates/web/emptyhomes/front/stats.html:6 +msgid "Find latest local and national news" msgstr "" -"Klarte ikkje å senda meldinga. Ver venleg og prøv igjen seinare eller <a " -"href=\"mailto:%s\">send oss ein e-post</a>." -#: templates/web/bromley/report/display.html:189 +#: templates/web/bromley/report/display.html:191 #: templates/web/bromley/report/new/fill_in_details_form.html:113 #: templates/web/bromley/report/new/fill_in_details_form.html:160 -#, fuzzy msgid "First Name" -msgstr "Første gong" +msgstr "" #: templates/web/default/questionnaire/index.html:79 #: templates/web/fixmystreet/questionnaire/index.html:73 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" msgstr "Fiks<span id=\"my\">Gata</span>Mi" #: templates/web/default/header.html:24 -#, fuzzy msgid "FixMyStreet" -msgstr "FiksGataMi-administrator:" +msgstr "" -#: templates/web/default/admin/header.html:13 +#: templates/web/default/admin/header.html:10 msgid "FixMyStreet admin:" msgstr "FiksGataMi-administrator:" -#: templates/web/default/admin/header.html:3 -msgid "FixMyStreet administration" -msgstr "Fiksgatami-administrasjon" - #: templates/web/default/alert/index.html:11 msgid "" -"FixMyStreet has a variety of RSS feeds and email alerts for local problems, " -"including\n" -"alerts for all problems within a particular ward or council, or all " -"problems\n" +"FixMyStreet has a variety of RSS feeds and email alerts for local problems, including\n" +"alerts for all problems within a particular ward or council, or all problems\n" "within a certain distance of a particular location." msgstr "" -"Fiksgatami har ulike RSS-straumar og e-postlister om lokale problem, dette " -"inkluderer problem meldt innanfor ein viss bydel eller administrasjon, eller " -"eit område med problem\n" +"Fiksgatami har ulike RSS-straumar og e-postlister om lokale problem, dette inkluderer problem meldt innanfor ein viss bydel eller administrasjon, eller eit område med problem\n" "innan ein gitt distanse frå ein viss posisjon." -# var bokmålen tilstrekkeleg her? --KBU #: templates/web/default/alert/_list.html:71 #: templates/web/fixmystreet/alert/_list.html:73 msgid "" "FixMyStreet sends different categories of problem\n" -"to the appropriate council, so problems within the boundary of a particular " -"council\n" -"might not match the problems sent to that council. For example, a graffiti " -"report\n" -"will be sent to the district council, so will appear in both of the " -"district\n" -"council’s alerts, but will only appear in the \"Within the boundary\" " -"alert\n" +"to the appropriate council, so problems within the boundary of a particular council\n" +"might not match the problems sent to that council. For example, a graffiti report\n" +"will be sent to the district council, so will appear in both of the district\n" +"council’s alerts, but will only appear in the \"Within the boundary\" alert\n" "for the county council." -msgstr "" -"FiksGataMi sender ulike kategoriar problem til ulike administrasjonar, " -"problem som gjeld fleire administrasjonar vert send til alle dei det gjeld." +msgstr "FiksGataMi sender ulike kategoriar problem til ulike administrasjonar, problem som gjeld fleire administrasjonar vert send til alle dei det gjeld." #: templates/web/bromley/report/display.html:80 -#: templates/web/bromley/report/display.html:82 -#: templates/web/default/admin/index.html:36 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:20 -#: templates/web/default/dashboard/index.html:136 -#: templates/web/default/dashboard/index.html:138 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:81 +#: 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/display.html:74 -#: templates/web/fixmystreet/report/display.html:76 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:32 msgid "Fixed" msgstr "Løyst" -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:43 msgid "Fixed - Council" msgstr "Løyst – Administrasjon" -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:42 msgid "Fixed - User" msgstr "Løyst – Brukar" -#: templates/web/default/my/my.html:27 templates/web/fixmystreet/my/my.html:27 +#: templates/web/default/my/my.html:27 templates/web/fixmystreet/my/my.html:31 msgid "Fixed reports" msgstr "Løyste rapportar" -#: templates/web/default/admin/problem_row.html:24 +#: templates/web/default/admin/problem_row.html:37 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" -#: templates/web/default/admin/search_users.html:15 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1181 +#: templates/web/default/admin/users.html:19 msgid "Flagged" msgstr "Flagga:" -#: templates/web/default/admin/report_edit.html:42 -#: templates/web/default/admin/user_edit.html:18 +#: 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 "Flagga:" #: templates/web/default/reports/_ward-list.html:3 -#: templates/web/emptyhomes/reports/council.html:19 #: templates/web/fixmystreet/reports/_ward-list.html:4 msgid "Follow a ward link to view only reports within that ward." msgstr "Følg ei bydellenkje for å berre sjå rapportar innanfor den bydelen." -#: templates/web/default/admin/report_edit.html:16 +#: templates/web/default/admin/report_edit.html:30 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?" +msgstr "" + #: templates/web/default/faq/faq-en-gb.html:1 #: templates/web/emptyhomes/faq/faq-cy.html:1 #: templates/web/emptyhomes/faq/faq-en-gb.html:1 #: templates/web/fiksgatami/faq/faq-nb.html:1 #: templates/web/fiksgatami/nn/faq/faq-nn.html:1 +#: templates/web/fixmindelo/faq/faq-pt-cv.html:1 +#: templates/web/fixmybarangay/faq/faq-en-gb.html:1 #: templates/web/fixmystreet/faq/faq-en-gb.html:1 #: templates/web/fixmystreet/static/privacy.html:1 -#: templates/web/zurich/faq/faq-de.html:1 +#: templates/web/oxfordshire/faq/faq-en-gb.html:1 msgid "Frequently Asked Questions" msgstr "Ofte spurde spurnader" -#: templates/web/emptyhomes/static/about.html:34 -msgid "Further information about our work on empty homes." -msgstr "Meir informasjon om arbeidet vårt med tomme heimar." - -#: templates/web/default/open311/index.html:69 +#: templates/web/default/open311/index.html:138 msgid "GeoRSS on Google Maps" msgstr "GeoRSS på Google Maps" #: templates/web/bromley/report/display.html:30 -#: templates/web/fixmystreet/report/display.html:23 -#, fuzzy +#: templates/web/fixmystreet/around/_updates.html:3 +#: templates/web/fixmystreet/report/display.html:38 msgid "Get updates" -msgstr "Siste oppdatering:" +msgstr "" #: templates/web/fixmystreet/reports/_rss.html:3 #: templates/web/fixmystreet/reports/_rss.html:9 -#, fuzzy msgid "Get updates of %s problems" -msgstr "RSS-straum for problem i denne %s-en" +msgstr "" #: templates/web/fixmystreet/reports/_rss.html:11 #: templates/web/fixmystreet/reports/_rss.html:3 -#, fuzzy msgid "Get updates of problems in this %s" -msgstr "RSS-straum for problem i denne %s-en" +msgstr "" #: templates/web/default/alert/_list.html:83 +#: templates/web/fixmybarangay/alert/_list.html:28 #: templates/web/fixmystreet/alert/_list.html:82 msgid "Give me an RSS feed" msgstr "Gje meg ein RSS-straum" #: templates/web/default/alert/index.html:34 #: templates/web/default/around/postcode_form.html:8 -#: templates/web/emptyhomes/index.html:47 -#: templates/web/fixmystreet/around/postcode_form.html:18 +#: templates/web/fixmystreet/around/postcode_form.html:21 +#: templates/web/seesomething/around/postcode_form.html:10 +#: templates/web/zurich/admin/stats.html:26 msgid "Go" msgstr "Hald fram" -#: templates/web/default/admin/report_edit.html:41 +#: templates/web/default/admin/report_edit.html:77 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" #: templates/web/default/reports/index.html:8 -#: templates/web/emptyhomes/reports/index.html:5 msgid "Greyed-out lines are councils that no longer exist." -msgstr "" -"Linjer med grå bakgrunn er administrasjonar som ikkje lenger eksisterer." +msgstr "Linjer med grå bakgrunn er administrasjonar som ikkje lenger eksisterer." #: templates/web/default/questionnaire/index.html:61 #: templates/web/fixmystreet/questionnaire/index.html:55 @@ -1171,20 +1324,25 @@ msgstr "Har dette problemet vorte løyst?" #: templates/web/default/questionnaire/index.html:74 #: templates/web/fixmystreet/questionnaire/index.html:68 -msgid "" -"Have you ever reported a problem to a council before, or is this your first " -"time?" -msgstr "" -"Har du rapportert eit problem til ein administrasjon før, eller er dette " -"første gongen?" +msgid "Have you ever reported a problem to a council before, or is this your first time?" +msgstr "Har du rapportert eit problem til ein administrasjon før, eller er dette første gongen?" #: 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:28 +#: templates/web/emptyhomes/header.html:33 #: templates/web/fiksgatami/footer.html:9 #: templates/web/fiksgatami/nn/footer.html:9 -#: templates/web/fixmystreet/footer.html:53 +#: 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 "Hjelp" @@ -1195,38 +1353,54 @@ msgstr "Her er dei ulike typane lokale problemvarsel for «%s»." #: templates/web/barnet/header.html:70 templates/web/bromley/header.html:64 #: templates/web/bromley/header.html:99 -#: templates/web/fixmybarangay/header.html.orig:42 -#: templates/web/fixmystreet/header.html:47 -#: templates/web/zurich/header.html:47 +#: templates/web/fixmybarangay/header.html:66 +#: templates/web/fixmystreet/header.html:50 +#: templates/web/oxfordshire/header.html:111 +#: templates/web/oxfordshire/header.html:47 +#: templates/web/stevenage/header.html:97 templates/web/zurich/footer.html:11 msgid "Hi %s" msgstr "" -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 -#: templates/web/default/admin/update_edit.html:19 +#: 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 "Skjult" -#: templates/web/default/around/display_location.html:58 -#: templates/web/fixmystreet/around/display_location.html:58 +#: templates/web/default/around/display_location.html:67 msgid "Hide old" msgstr "" -#: templates/web/default/around/display_location.html:53 -#: templates/web/fixmystreet/around/display_location.html:54 +#: templates/web/default/around/display_location.html:62 msgid "Hide pins" msgstr "Skjul nåler" -#: templates/web/default/admin/council_edit.html:38 +#: templates/web/default/admin/body_edit.html:79 msgid "History" msgstr "Historie" -#: templates/web/default/index.html:28 templates/web/emptyhomes/index.html:53 -#: templates/web/fixmystreet/index.html:36 +#: templates/web/default/js/translation_strings.html:31 +#: templates/web/oxfordshire/js/translation_strings.html:25 +msgid "Home" +msgstr "" + +#: templates/web/default/index-steps.html:1 msgid "How to report a problem" msgstr "Korleis rapportera eit problem" -#: perllib/FixMyStreet/App/Controller/Admin.pm:637 +#: 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:733 msgid "I am afraid you cannot confirm unconfirmed reports." msgstr "Eg er redd du ikkje kan stadfesta ustadfesta rapportar." @@ -1235,70 +1409,101 @@ msgid "I'm afraid we couldn't locate your problem in the database.\n" msgstr "Eg er redd vi ikkje klarte å finna problemet ditt i databasen.\n" #: perllib/FixMyStreet/App/Controller/Tokens.pm:44 -msgid "" -"I'm afraid we couldn't validate that token, as the report was made too long " -"ago." -msgstr "" -"Eg er redd vi ikkje kunne verifisera den referansen, då det er for lenge " -"sidan rapporten vart laga." +msgid "I'm afraid we couldn't validate that token, as the report was made too long ago." +msgstr "Eg er redd vi ikkje kunne verifisera den referansen, då det er for lenge sidan rapporten vart laga." -#: perllib/FixMyStreet/App/Controller/Tokens.pm:235 -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" +#: perllib/FixMyStreet/App/Controller/Tokens.pm:259 +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/list_flagged.html:9 -#: templates/web/default/admin/list_updates.html:5 -#: templates/web/default/admin/search_reports.html:12 +#: 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 "ID" -#: templates/web/default/report/new/councils_text_none.html:11 -#: templates/web/default/report/new/councils_text_none.html:12 +#: templates/web/default/admin/body-form.html:24 +#: templates/web/default/admin/body-form.html:25 msgid "" -"If you submit a problem here the subject and details of the problem will be " -"public, but the problem will <strong>not</strong> be reported to the council." +"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 "" -"Viss du sender inn eit problem hit, så vil emnet og detaljar for problemet " -"vera offentlege, men problemet vil <strong>ikkje</strong> rapporterast til " -"administrasjonen." -#: templates/web/emptyhomes/report/new/councils_text_none.html:9 +#: templates/web/default/admin/body.html:104 msgid "" -"If you submit a report here it will be left on the site, but not reported to " -"the council – please still leave your report, so that we can show to " -"the council the activity in their area." +"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 "" -"Viss du sender inn ein rapport her så vil han verta tilgjengeleg her, men " -"ikkje rapporterast til administrasjonen. — det er fint om du likevel " -"sender inn rapporten din, slik at vi kan visa administrasjonen aktiviteten i " -"området ditt." -#: templates/web/default/auth/token.html:23 -#: templates/web/default/email_sent.html:24 -msgid "" -"If you use web-based email or have 'junk mail' filters, you may wish to " -"check your bulk/spam mail folders: sometimes, our messages are marked that " -"way." +#: templates/web/default/email_sent.html:19 +msgid "If you do not, your alert will not be activated." msgstr "" -"Viss du brukar vevbasert e-post eller har filter for søppel-e-post på e-" -"postkontoen din, kan du i visse tilfelle måtta sjå etter meldingane våre der." -#: templates/web/default/questionnaire/index.html:83 +#: templates/web/default/email_sent.html:15 +msgid "If you do not, your problem will not be posted." +msgstr "" + +#: templates/web/default/email_sent.html:17 +msgid "If you do not, your update will not be posted." +msgstr "" + +#: templates/web/default/report/new/councils_text_none.html:8 +#: templates/web/default/report/new/councils_text_none.html:9 +msgid "If you submit a problem here the subject and details of the problem will be public, but the problem will <strong>not</strong> be reported to the council." +msgstr "Viss du sender inn eit problem hit, så vil emnet og detaljar for problemet vera offentlege, men problemet vil <strong>ikkje</strong> rapporterast til administrasjonen." + +#: templates/web/emptyhomes/report/new/councils_text_none.html:9 +msgid "If you submit a report here it will be left on the site, but not reported to the council – please still leave your report, so that we can show to the council the activity in their area." +msgstr "Viss du sender inn ein rapport her så vil han verta tilgjengeleg her, men ikkje rapporterast til administrasjonen. — det er fint om du likevel sender inn rapporten din, slik at vi kan visa administrasjonen aktiviteten i området ditt." + +#: templates/web/default/auth/token.html:22 +#: templates/web/default/email_sent.html:9 +msgid "If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way." +msgstr "Viss du brukar vevbasert e-post eller har filter for søppel-e-post på e-postkontoen din, kan du i visse tilfelle måtta sjå etter meldingane våre der." + +#: templates/web/default/questionnaire/index.html:86 #: templates/web/fixmystreet/questionnaire/index.html:77 msgid "" "If you wish to leave a public update on the problem, please enter it here\n" "(please note it will not be sent to the council). For example, what was\n" "your experience of getting the problem fixed?" msgstr "" -"Viss du ynskjer å leggja til ein offentleg kommentar på problemet, legg han " -"til her\n" +"Viss du ynskjer å leggja til ein offentleg kommentar på problemet, legg han til her\n" "(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" @@ -1309,47 +1514,65 @@ msgstr "Ugyldig val av straum" #: templates/web/bromley/report/display.html:80 #: templates/web/bromley/report/display.html:82 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:20 -#: templates/web/default/dashboard/index.html:136 -#: templates/web/default/dashboard/index.html:138 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:81 -#: templates/web/fixmystreet/report/display.html:74 -#: templates/web/fixmystreet/report/display.html:76 +#: 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:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 msgid "In Progress" msgstr "Under arbeid" -#: templates/web/default/open311/index.html:21 -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)." +#: 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:121 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:38 #: templates/web/fixmystreet/report/banner.html:19 -#, fuzzy +#: 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 "Under arbeid" +msgstr "" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:38 +msgid "Incident Category" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:163 +msgid "Include reporter personal details" +msgstr "" #: templates/web/default/admin/stats.html:76 msgid "Include unconfirmed reports" msgstr "Inkluder ikkje-stadfesta problem" -#: perllib/FixMyStreet/App/Controller/Open311.pm:356 +#: perllib/FixMyStreet/App/Controller/Open311.pm:354 msgid "Incorrect has_photo value \"%s\"" msgstr "Feil has_photo-verdi «%s»" -#: perllib/FixMyStreet/App/Controller/Open311.pm:341 +#: 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 +msgid "Internal referral" +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:942 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1096 msgid "Invalid end date" msgstr "Ugyldig slutt-dato" @@ -1357,78 +1580,75 @@ msgstr "Ugyldig slutt-dato" msgid "Invalid format %s specified." msgstr "Ugyldig format %s oppgjeve." -#: perllib/FixMyStreet/App/Controller/Admin.pm:932 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1092 msgid "Invalid start date" msgstr "Ugyldig startdato" #: templates/web/bromley/report/display.html:80 #: templates/web/bromley/report/display.html:81 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:19 -#: templates/web/default/dashboard/index.html:136 -#: templates/web/default/dashboard/index.html:137 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:80 -#: templates/web/fixmystreet/report/display.html:74 -#: templates/web/fixmystreet/report/display.html:75 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:37 +#: templates/web/default/dashboard/index.html:142 +#: templates/web/default/dashboard/index.html:143 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 msgid "Investigating" msgstr "Undersøkjer" #: templates/web/emptyhomes/tokens/confirm_problem.html:12 #: templates/web/emptyhomes/tokens/confirm_problem.html:14 -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’t mean the council " -"isn’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." +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’t mean the council isn’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:166 +#: 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/display.html:151 #: templates/web/default/report/new/fill_in_details_form.html:149 -#: templates/web/fixmystreet/auth/general.html:42 -#: templates/web/fixmystreet/report/display.html:144 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:167 +#: 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 "Hugs mi innlogging på denne datamaskina" -#: templates/web/bromley/report/display.html:195 +#: templates/web/bromley/report/display.html:197 #: templates/web/bromley/report/new/fill_in_details_form.html:119 #: templates/web/bromley/report/new/fill_in_details_form.html:166 -#, fuzzy msgid "Last Name" -msgstr "Siste oppdatering:" +msgstr "" -#: templates/web/default/admin/council_contacts.html:39 +#: templates/web/default/admin/body.html:58 +#: templates/web/zurich/admin/body.html:15 msgid "Last editor" msgstr "Sist redigert av" -#: templates/web/default/admin/report_edit.html:36 +#: templates/web/default/admin/report_edit.html:72 msgid "Last update:" msgstr "Siste oppdatering:" -#: templates/web/default/admin/problem_row.html:26 +#: templates/web/default/admin/problem_row.html:39 msgid "Last update:" msgstr "Siste oppdatering:" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1028 -msgid "List Flagged" -msgstr "Vis flagga" +#: 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/council_contacts.html:14 -#: templates/web/default/admin/council_contacts.html:16 +#: templates/web/default/admin/body.html:14 +#: templates/web/default/admin/body.html:16 msgid "List all reported problems" msgstr "Vis alle rapporterte problem" #: templates/web/bromley/report/new/fill_in_details_form.html:69 #: templates/web/default/report/new/fill_in_details_form.html:68 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:73 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:51 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:75 +#: templates/web/seesomething/report/new/fill_in_details_form.html:25 +#: templates/web/zurich/report/new/fill_in_details_form.html:51 msgid "Loading..." msgstr "Lastar …" @@ -1443,6 +1663,8 @@ msgstr "Lastar …" #: templates/web/default/tokens/confirm_alert.html:3 #: templates/web/emptyhomes/alert/index.html:1 #: templates/web/emptyhomes/alert/index.html:3 +#: templates/web/fixmybarangay/alert/index.html:1 +#: templates/web/fixmybarangay/alert/index.html:3 #: templates/web/fixmystreet/alert/updates.html:1 msgid "Local RSS feeds and email alerts" msgstr "Lokal RSS-straum og e-postvarsel" @@ -1458,30 +1680,35 @@ 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/fixmystreet/footer.html:51 -#: templates/web/reading/footer.html:9 +#: 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 "Lokale varsel" -#: templates/web/default/index.html:32 templates/web/emptyhomes/index.html:57 -#: templates/web/fixmystreet/index.html:40 +#: templates/web/default/index-steps.html:25 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:43 +#: templates/web/oxfordshire/js/translation_strings.html:37 +msgid "MAP" +msgstr "" + #: perllib/FixMyStreet/Map/OSM.pm:44 -msgid "" -"Map © <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>" +msgid "Map © <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 "" -"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/fixmystreet/contact/index.html:86 -#, fuzzy +#: templates/web/fixmystreet/contact/index.html:98 msgid "Message" -msgstr "Melding:" +msgstr "" #: templates/web/default/contact/index.html:90 msgid "Message:" @@ -1491,90 +1718,104 @@ msgstr "Melding:" msgid "Missing jurisdiction_id" msgstr "Manglar jurisdiction_id" +#: templates/web/zurich/admin/stats.html:34 +msgid "Moderated by division within one working day" +msgstr "" + #: templates/web/default/admin/stats.html:11 msgid "Month" msgstr "Månad" -#: templates/web/default/report/display.html:26 +#: templates/web/default/report/display.html:30 msgid "More problems nearby" msgstr "Fleire problem i nærleiken" -#: templates/web/default/admin/list_flagged.html:11 -#: templates/web/default/admin/list_flagged.html:34 +#: 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/search_reports.html:14 -#: templates/web/default/admin/search_users.html:12 +#: 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:10 +#: templates/web/emptyhomes/reports/index.html:9 #: templates/web/fiksgatami/nn/reports/index.html:9 #: templates/web/fiksgatami/reports/index.html:9 -#: templates/web/fixmystreet/auth/general.html:52 -#: templates/web/fixmystreet/report/display.html:177 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:117 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:176 +#: 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 "Namn" -#: templates/web/default/admin/report_edit.html:30 -#: templates/web/default/admin/update_edit.html:23 -#: templates/web/default/admin/user_edit.html:10 +#: templates/web/seesomething/report/new/fill_in_details_form.html:74 +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: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:317 +msgid "Name: %s" +msgstr "" + #: templates/web/fiksgatami/footer.html:3 #: templates/web/fiksgatami/nn/footer.html:3 #: templates/web/reading/footer.html:4 msgid "Navigation" msgstr "Navigasjon" -#: perllib/FixMyStreet/Geocode/OSM.pm:159 -msgid "" -"Nearest named road to the pin placed on the map (automatically generated " -"using OpenStreetMap): %s%s" -msgstr "" -"Næraste namngjevne veg til nålen plassert på kartet (automatisk generert ved " -"hjelp av OpenStreetMap): %s%s" +#: perllib/FixMyStreet/Geocode/OSM.pm:166 +msgid "Nearest named road to the pin placed on the map (automatically generated using OpenStreetMap): %s%s" +msgstr "Næraste namngjevne veg til nålen plassert på kartet (automatisk generert ved hjelp av OpenStreetMap): %s%s" -#: perllib/FixMyStreet/Cobrand/UK.pm:161 -msgid "" -"Nearest postcode to the pin placed on the map (automatically generated): %s " -"(%sm away)" -msgstr "" -"Næraste postnummer til nålen plassert på kartet (automatisk generert): %s " -"(%sm unna)" +#: perllib/FixMyStreet/Cobrand/UK.pm:148 +msgid "Nearest postcode to the pin placed on the map (automatically generated): %s (%sm away)" +msgstr "Næraste postnummer til nålen plassert på kartet (automatisk generert): %s (%sm unna)" -#: perllib/FixMyStreet/Cobrand/Default.pm:404 -#: perllib/FixMyStreet/Cobrand/Default.pm:444 -msgid "" -"Nearest road to the pin placed on the map (automatically generated by Bing " -"Maps): %s" -msgstr "" -"Næraste veg til nålen plassert på karta (automatisk generert ved hjelp av " -"Bing Maps): %s" +#: perllib/FixMyStreet/Cobrand/Default.pm:418 +#: perllib/FixMyStreet/Cobrand/Default.pm:458 +msgid "Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s" +msgstr "Næraste veg til nålen plassert på karta (automatisk generert ved hjelp av Bing Maps): %s" -#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:245 -#, fuzzy +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:273 msgid "" -"Nearest road to the pin placed on the map (automatically generated by Bing " -"Maps): %s\n" +"Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s\n" "\n" msgstr "" -"Næraste veg til nålen plassert på karta (automatisk generert ved hjelp av " -"Bing Maps): %s" -#: templates/web/default/email_sent.html:20 +#: templates/web/default/email_sent.html:3 msgid "Nearly Done! Now check your email..." msgstr "Nesten ferdig! No må du sjekka e-posten din …" #: templates/web/default/reports/index.html:16 -#, fuzzy +#: templates/web/fixmybarangay/reports/index.html:16 msgid "New <br>problems" -msgstr "Nye problem" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:264 +msgid "New body added" +msgstr "" -#: perllib/FixMyStreet/App/Controller/Admin.pm:314 +#: 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" @@ -1583,7 +1824,7 @@ msgstr "Nye lokale problem på FiksGataMi" msgid "New local reports on reportemptyhomes.com" msgstr "Nye lokale rapportar på reportemptyhomes.com" -#: templates/web/emptyhomes/reports/index.html:11 +#: templates/web/emptyhomes/reports/index.html:10 #: templates/web/fiksgatami/nn/reports/index.html:10 #: templates/web/fiksgatami/reports/index.html:10 msgid "New problems" @@ -1609,11 +1850,13 @@ msgstr "Nye problem i {{COUNCIL}} på FiksGataMi" msgid "New problems within {{NAME}}'s boundary on FixMyStreet" msgstr "Nye rapportar innanfor grensa til {{NAME}} på FiksGataMi" -#: db/alert_types_eha.pl:23 -msgid "" -"New reports for {{COUNCIL}} within {{WARD}} ward on reportemptyhomes.com" +#: templates/web/zurich/admin/index-sdm.html:4 +msgid "New reports" msgstr "" -"Nye rapportar for {{COUNCIL}} innanfor {{WARD}} bydel på reportemptyhomes.com" + +#: db/alert_types_eha.pl:23 +msgid "New reports for {{COUNCIL}} within {{WARD}} ward on reportemptyhomes.com" +msgstr "Nye rapportar for {{COUNCIL}} innanfor {{WARD}} bydel på reportemptyhomes.com" #: db/alert_types_eha.pl:5 msgid "New reports on reportemptyhomes.com" @@ -1635,54 +1878,68 @@ msgstr "Nye rapportar innanfor grensa til {{NAME}} på reportemptyhomes.com" msgid "New state" msgstr "Ny tilstand" +#: templates/web/zurich/admin/report_edit-sdm.html:61 +msgid "New update:" +msgstr "" + #: templates/web/fiksgatami/front/news.html:9 #: templates/web/fiksgatami/nn/front/news.html:9 #: templates/web/fixmystreet/front/news.html:8 msgid "New!" msgstr "Ny!" -#: templates/web/default/admin/council_contacts.html:48 -#: templates/web/default/admin/council_contacts.html:49 -#: templates/web/default/admin/council_edit.html:4 -#: templates/web/default/admin/list_updates.html:30 -#: templates/web/default/admin/list_updates.html:31 +#: templates/web/default/pagination.html:13 +msgid "Next" +msgstr "" + +#: 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/problem_row.html:19 -#: templates/web/default/admin/report_edit.html:28 -#: templates/web/default/admin/report_edit.html:41 -#: templates/web/default/admin/update_edit.html:16 +#: 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:107 +#: 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 "Nei" +#: templates/web/default/admin/user-form.html:33 +msgid "No body" +msgstr "" + #: templates/web/default/admin/stats.html:85 -#: templates/web/default/admin/user_edit.html:13 msgid "No council" msgstr "Ingen administrasjon" -#: perllib/FixMyStreet/DB/Result/Problem.pm:328 +#: perllib/FixMyStreet/DB/Result/Problem.pm:362 msgid "No council selected" msgstr "Ingen administrasjon er vald" -#: templates/web/default/admin/council_list.html:32 +#: templates/web/default/admin/edit-league.html:17 msgid "No edits have yet been made." msgstr "Ingen endringar er gjort." -#: templates/web/default/admin/list_flagged.html:26 -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/list_flagged.html:47 -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/default/admin/council_list.html:38 -msgid "No info at all" -msgstr "Heilt utan informasjon" +#: templates/web/zurich/admin/report_edit-sdm.html:68 +msgid "No further updates" +msgstr "" #: templates/web/default/around/around_map_list_items.html:17 #: templates/web/fixmystreet/around/around_map_list_items.html:8 @@ -1694,72 +1951,115 @@ msgstr "Fann ingen problem." msgid "No problems have been reported yet." msgstr "Ingen problem er rapporterte" -#: templates/web/default/admin/council_list.html:5 -#: templates/web/default/admin/report_edit.html:16 +#: 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:73 +msgid "Non Public" +msgstr "" + +#: 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 "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 +#: 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 "" + +#: templates/web/zurich/admin/report_edit-sdm.html:21 +msgid "Not for my subdivision" +msgstr "" + #: templates/web/default/admin/questionnaire.html:6 msgid "Not reported before" msgstr "Ikkje rapportert tidlegare" -#: templates/web/default/report/_main.html:11 -#: templates/web/emptyhomes/report/display.html:24 -#: templates/web/fixmystreet/report/_main.html:13 +#: templates/web/default/report/_main.html:10 msgid "Not reported to council" msgstr "Ikkje rapportert til administrasjonen" -#: templates/web/default/admin/council_contacts.html:40 -#: templates/web/default/admin/council_edit.html:46 +#: 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 "Merk" #: templates/web/default/admin/stats.html:51 -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." +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/council_contacts.html:89 -#: templates/web/default/admin/council_edit.html:31 +#: 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 "Merk:" -#: templates/web/default/open311/index.html:6 +#: templates/web/default/open311/index.html:75 msgid "Note: <strong>%s</strong>" msgstr "Merk: <strong>%s</strong>" -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:149 -#, fuzzy +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:154 msgid "Now to submit your report…" -msgstr "På tide å senda rapporten din, har du eit FiksGataMi-passord?" +msgstr "" #: templates/web/default/report/new/fill_in_details_form.html:131 msgid "Now to submit your report… do you have a FixMyStreet password?" msgstr "På tide å senda rapporten din, har du eit FiksGataMi-passord?" -#: templates/web/fixmystreet/report/display.html:127 -#, fuzzy +#: templates/web/fixmystreet/report/update-form.html:83 msgid "Now to submit your update…" -msgstr "På tide å registrera oppdateringa di, har du eit FiksGataMi-passord?" +msgstr "" -#: templates/web/default/report/display.html:133 +#: templates/web/default/report/update-form.html:86 msgid "Now to submit your update… do you have a FixMyStreet password?" msgstr "På tide å registrera oppdateringa di, har du eit FiksGataMi-passord?" -#: templates/web/default/report/display.html:21 +#: templates/web/default/js/translation_strings.html:42 +#: templates/web/oxfordshire/js/translation_strings.html:36 +msgid "OK" +msgstr "" + +#: templates/web/default/report/display.html:24 #: templates/web/default/report/update.html:16 msgid "Offensive? Unsuitable? Tell us" msgstr "Støytande? Upassende? Sei frå" #: templates/web/default/reports/index.html:18 -#, fuzzy +#: templates/web/fixmybarangay/reports/index.html:18 msgid "Old / unknown <br>problems" -msgstr "Ukjend problem-ID" +msgstr "" #: templates/web/fiksgatami/nn/reports/index.html:12 #: templates/web/fiksgatami/reports/index.html:12 @@ -1771,49 +2071,57 @@ msgid "Old state" msgstr "Gammal tilstand" #: templates/web/default/reports/index.html:20 -#, fuzzy +#: templates/web/fixmybarangay/reports/index.html:20 msgid "Older <br>fixed" -msgstr "Eldre løyste" +msgstr "" #: templates/web/default/reports/index.html:17 -#, fuzzy +#: templates/web/fixmybarangay/reports/index.html:17 msgid "Older <br>problems" -msgstr "Eldre problem" +msgstr "" -#: templates/web/emptyhomes/reports/index.html:14 #: templates/web/fiksgatami/nn/reports/index.html:14 #: templates/web/fiksgatami/reports/index.html:14 msgid "Older fixed" msgstr "Eldre løyste" -#: templates/web/emptyhomes/reports/index.html:12 +#: templates/web/emptyhomes/reports/index.html:11 #: templates/web/fiksgatami/nn/reports/index.html:11 #: templates/web/fiksgatami/reports/index.html:11 msgid "Older problems" msgstr "Eldre problem" +#: perllib/FixMyStreet/Cobrand/Zurich.pm:115 #: templates/web/bromley/report/display.html:80 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/update_edit.html:19 -#: templates/web/default/dashboard/index.html:136 -#: templates/web/default/report/display.html:79 -#: templates/web/fixmystreet/report/display.html:74 +#: 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 "Opne" -#: templates/web/default/my/my.html:22 templates/web/fixmystreet/my/my.html:22 +#: templates/web/default/my/my.html:22 templates/web/fixmystreet/my/my.html:26 msgid "Open reports" msgstr "Opne rapportar" -#: templates/web/default/open311/index.html:3 +#: templates/web/default/open311/index.html:72 msgid "Open311 API for the mySociety FixMyStreet server" msgstr "Open311-API for mySocietys FiksGataMi-tenar" -#: templates/web/default/open311/index.html:13 +#: templates/web/default/open311/index.html:82 msgid "Open311 initiative web page" msgstr "Nettsida til Open311-initiativet" -#: templates/web/default/open311/index.html:14 +#: templates/web/default/open311/index.html:83 msgid "Open311 specification" msgstr "Open311-spesifikasjon" @@ -1824,34 +2132,26 @@ msgstr "Eller problem meldt til:" #: templates/web/default/alert/_list.html:33 #: templates/web/fixmystreet/alert/_list.html:36 -msgid "" -"Or you can subscribe to an alert based upon what ward or council you’" -"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:655 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:656 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:999 -#: perllib/FixMyStreet/DB/Result/Problem.pm:497 -#: perllib/FixMyStreet/DB/Result/Problem.pm:507 -#: perllib/FixMyStreet/DB/Result/Problem.pm:517 -#: perllib/FixMyStreet/DB/Result/Problem.pm:529 -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:329 -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:338 +msgid "Or you can subscribe to an alert based upon what ward or council you’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: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 "Anna" #: templates/web/default/footer.html:27 -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>." +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:11 +#: templates/web/default/admin/list_updates.html:8 msgid "Owner" msgstr "Eigar" @@ -1860,49 +2160,73 @@ msgstr "Eigar" msgid "Page Not Found" msgstr "Fann ikkje sida" -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 +#: templates/web/default/admin/body-form.html:31 +#: templates/web/zurich/admin/body-form.html:14 +msgid "Parent" +msgstr "" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:51 msgid "Partial" msgstr "Delvis" -#: templates/web/bromley/report/display.html:145 +#: templates/web/bromley/report/display.html:147 #: templates/web/bromley/report/new/fill_in_details_form.html:186 -#: templates/web/fixmystreet/auth/general.html:55 -#: templates/web/fixmystreet/report/display.html:157 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:197 -#, fuzzy +#: 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 "(valfritt)" +msgstr "" #: templates/web/default/auth/change_password.html:25 msgid "Password:" msgstr "Passord:" +#: 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:133 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:194 -#, fuzzy +#: 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 "(valfritt)" +msgstr "" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:260 -#: templates/web/default/admin/report_edit.html:32 +#: 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 "Telefon:" -#: templates/web/bromley/report/display.html:109 +#: templates/web/bromley/report/display.html:111 #: templates/web/bromley/report/new/fill_in_details_form.html:104 -#: templates/web/fixmystreet/report/display.html:103 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:108 -#, fuzzy +#: 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 "Bilete:" +msgstr "" -#: templates/web/default/questionnaire/index.html:95 -#: templates/web/default/report/display.html:109 +#: templates/web/default/questionnaire/index.html:99 #: templates/web/default/report/new/fill_in_details_form.html:102 +#: templates/web/default/report/update-form.html:62 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:99 #: templates/web/fixmystreet/questionnaire/index.html:90 msgid "Photo:" msgstr "Bilete:" @@ -1911,28 +2235,30 @@ msgstr "Bilete:" msgid "Photos of recent nearby reports" msgstr "Bilete av nye problem i nærleiken" -#: templates/web/bromley/report/display.html:80 -#: templates/web/bromley/report/display.html:81 -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:19 -#: templates/web/default/dashboard/index.html:136 -#: templates/web/default/dashboard/index.html:137 -#: templates/web/default/report/display.html:79 -#: templates/web/default/report/display.html:80 -#: templates/web/fixmystreet/report/display.html:74 -#: templates/web/fixmystreet/report/display.html:75 +#: 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:89 +#: templates/web/zurich/admin/report_edit.html:92 msgid "Planned" msgstr "Planlagt" #: templates/web/fixmystreet/questionnaire/index.html:44 -#, fuzzy -msgid "" -"Please <a class=\"tab_link\" href=\"#report\">take a look</a> at the updates " -"that have been left." -msgstr "Ver venleg og sjå over oppdateringane som er lagt inn." +msgid "Please <a class=\"tab_link\" href=\"#report\">take a look</a> at the updates that have been left." +msgstr "" #: templates/web/default/report/new/notes.html:6 -#: templates/web/fixmystreet/report/new/notes.html:5 +#: templates/web/fixmystreet/report/new/notes.html:6 +#: templates/web/oxfordshire/report/new/notes.html:5 msgid "Please be polite, concise and to the point." msgstr "Ver høfleg, poengtert og kortfatta." @@ -1941,7 +2267,7 @@ msgstr "Ver høfleg, poengtert og kortfatta." msgid "Please check the passwords and try again" msgstr "Ver venleg og sjekk passorda og prøv igjen" -#: templates/web/default/auth/token.html:17 +#: templates/web/default/auth/token.html:14 msgid "Please check your email" msgstr "Ver venleg og sjekk e-posten du oppgav" @@ -1949,68 +2275,84 @@ msgstr "Ver venleg og sjekk e-posten du oppgav" #: templates/web/default/auth/general.html:8 #: templates/web/fixmystreet/auth/general.html:15 #: templates/web/fixmystreet/auth/general.html:9 +#: templates/web/seesomething/auth/general.html:15 +#: templates/web/seesomething/auth/general.html:9 +#: templates/web/zurich/auth/general.html:3 +#: templates/web/zurich/auth/general.html:9 msgid "Please check your email address is correct" msgstr "Ver venleg og sjekk at du har skrive ei gyldig e-postadresse" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:819 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:826 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:845 -#: perllib/FixMyStreet/App/Controller/Report/New.pm:884 -#: perllib/FixMyStreet/DB/Result/Problem.pm:347 -#: templates/web/default/js/validation_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 "Vel ein kategori" -#: perllib/FixMyStreet/DB/Result/Problem.pm:353 +#: perllib/FixMyStreet/DB/Result/Problem.pm:387 msgid "Please choose a property type" msgstr "Vel ein type eigenskap" +#: templates/web/seesomething/js/translation_strings.html:6 +msgid "Please choose a transport category" +msgstr "" + +#: templates/web/seesomething/js/translation_strings.html:7 +msgid "Please choose an incident category" +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”" +msgid "Please describe the exact location of the report. Example: “2 dumped mattresses outside Number 19 Stockwell Close”" msgstr "" #: templates/web/default/contact/blurb.html:2 msgid "" -"Please do <strong>not</strong> report problems through this form; messages " -"go to\n" +"Please do <strong>not</strong> report problems through this form; messages go to\n" "the team behind FixMyStreet, not a council. To report a problem,\n" "please <a href=\"/\">go to the front page</a> and follow the instructions." -msgstr "" -"Ver venleg og <strong>ikkje</strong> rapporter feil gjennom denne sida; " -"meldingane går til gruppa som står bak FiksGataMi, og ikkje til ein " -"administrasjon. For å rapportera eit problem, ver venleg og <a href=\"/\">gå " -"til forsida</a> og følg instruksjonane." +msgstr "Ver venleg og <strong>ikkje</strong> rapporter feil gjennom denne sida; meldingane går til gruppa som står bak FiksGataMi, og ikkje til ein administrasjon. For å rapportera eit problem, ver venleg og <a href=\"/\">gå til forsida</a> og følg instruksjonane." #: templates/web/default/report/new/notes.html:7 -#: templates/web/fixmystreet/report/new/notes.html:6 -msgid "" -"Please do not be abusive — abusing your council devalues the service " -"for all users." +#: templates/web/fixmystreet/report/new/notes.html:7 +#: templates/web/oxfordshire/report/new/notes.html:6 +msgid "Please do not be abusive — abusing your council devalues the service for all users." msgstr "" -"Ikkje ver ufin — å kjefta på administrasjonen din skader verdet av " -"tenesta for alle brukarane." -#: perllib/FixMyStreet/DB/Result/Comment.pm:146 -#: templates/web/default/js/validation_strings.html:2 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:46 +msgid "Please do not give address or personal information in this section." +msgstr "" + +#: 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:322 -#: templates/web/default/js/validation_strings.html:3 +#: 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/DB/Result/User.pm:104 -#: templates/web/default/js/validation_strings.html:12 -#: templates/web/default/js/validation_strings.html:16 +#: 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 "Ver venleg og legg til ein gyldig e-post" @@ -2019,90 +2361,112 @@ 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:325 -#: templates/web/default/js/validation_strings.html:4 +#: 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" #: perllib/FixMyStreet/App/Controller/Contact.pm:96 -#: perllib/FixMyStreet/DB/Result/User.pm:101 +#: 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/validation_strings.html:11 -#: templates/web/default/js/validation_strings.html:15 +#: 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 "Ver venleg og legg inn e-posten din" #: templates/web/bromley/report/new/fill_in_details_form.html:149 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:146 -#, fuzzy +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:151 +#: templates/web/seesomething/report/new/fill_in_details_form.html:85 +#: templates/web/zurich/report/new/fill_in_details_form.html:92 msgid "Please enter your email address" -msgstr "Ver venleg og legg inn e-posten din" +msgstr "" -#: templates/web/default/js/validation_strings.html:19 -#, fuzzy +#: templates/web/default/js/translation_strings.html:25 +#: templates/web/oxfordshire/js/translation_strings.html:19 msgid "Please enter your first name" -msgstr "Ver venleg og legg inn namnet ditt" +msgstr "" -#: perllib/FixMyStreet/DB/Result/Problem.pm:340 -#: templates/web/default/js/validation_strings.html:7 -#, fuzzy -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" +#: 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 inn det fulle namnet ditt. Administrasjonar som mottek problemet ditt " -"treng dette. Fjern haka under viss du ikkje ynskjer at namnet ditt skal " -"visast." #: perllib/FixMyStreet/App/Controller/Contact.pm:95 -#: perllib/FixMyStreet/DB/Result/Comment.pm:143 -#: perllib/FixMyStreet/DB/Result/Problem.pm:333 -#: perllib/FixMyStreet/DB/Result/User.pm:97 -#: templates/web/default/js/validation_strings.html:6 +#: 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/validation_strings.html:20 +#: templates/web/default/js/translation_strings.html:22 #, fuzzy -msgid "Please enter your second name" +msgid "Please enter your phone number" msgstr "Ver venleg og legg inn namnet ditt" -#: templates/web/default/js/validation_strings.html:18 -#, fuzzy +#: 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:24 +#: templates/web/oxfordshire/js/translation_strings.html:18 msgid "Please enter your title" -msgstr "Ver venleg og legg inn e-posten din" +msgstr "" + +#: 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 "" #: templates/web/emptyhomes/report/new/fill_in_details_text.html:1 msgid "" "Please fill in details of the empty property below, saying what type of\n" "property it is e.g. an empty home, block of flats, office etc. Tell us\n" -"something about its condition and any other information you feel is " -"relevant.\n" -"There is no need for you to give the exact address. Please be polite, " -"concise\n" -"and to the point; writing your message entirely in block capitals makes it " -"hard\n" +"something about its condition and any other information you feel is relevant.\n" +"There is no need for you to give the exact address. Please be polite, concise\n" +"and to the point; writing your message entirely in block capitals makes it hard\n" "to read, as does a lack of punctuation." msgstr "" #: templates/web/default/report/new/fill_in_details_text.html:1 #: templates/web/default/report/new/fill_in_details_text.html:11 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:10 #: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 -#: templates/web/fixmystreet/report/new/fill_in_details_text.html:11 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:8 msgid "Please fill in details of the problem below." msgstr "Ver venleg og fyll ut detaljar om problemet under." +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:3 +msgid "" +"Please fill in details of the problem below. Leave as much detail as you can, \n" +"and if possible describe the exact location of\n" +"the problem (e.g. if there is a streetlight number or road name)." +msgstr "" + #: templates/web/default/report/new/fill_in_details_text.html:1 #: templates/web/default/report/new/fill_in_details_text.html:3 msgid "" "Please fill in details of the problem below. The council won't be able\n" -"to help unless you leave as much detail as you can, so please describe the " -"exact location of\n" -"the problem (e.g. on a wall), what it is, how long it has been there, a " -"description (and a\n" +"to help unless you leave as much detail as you can, so please describe the exact location of\n" +"the problem (e.g. on a wall), what it is, how long it has been there, a description (and a\n" "photo of the problem if you have one), etc." msgstr "" "Ver venlg og fyll inn detaljane om problemet under. Administrasjonen\n" @@ -2111,22 +2475,23 @@ msgstr "" "(t.d. på ein vegg), kva det er, kor lenge det har vore der, ei\n" "skildring (og eit bilete av problemet viss du har eit), osb." -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:68 -#, fuzzy +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:70 +#: templates/web/seesomething/report/new/fill_in_details_form.html:20 +#: templates/web/zurich/report/new/fill_in_details_form.html:46 msgid "Please fill in details of the problem." -msgstr "Ver venleg og fyll ut detaljar om problemet under." +msgstr "" #: templates/web/bromley/report/new/fill_in_details_form.html:28 #: templates/web/default/report/new/fill_in_details_form.html:27 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:34 -msgid "" -"Please fill in the form below with details of the problem, and describe the " -"location as precisely as possible in the details box." +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:26 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:35 +#: templates/web/zurich/report/new/fill_in_details_form.html:20 +msgid "Please fill in the form below with details of the problem, and describe the location as precisely as possible in the details box." msgstr "" "Ver venleg og fyll inn skjemaet under med detaljane om problemet,\n" "og skildra plasseringa så nøyaktig som mogleg i boksen for detaljar." -#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:241 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:243 msgid "Please indicate whether you'd like to receive another questionnaire" msgstr "Ver venleg og indiker om du ynskjer å motta eit nytt spørjeskjema" @@ -2134,61 +2499,44 @@ msgstr "Ver venleg og indiker om du ynskjer å motta eit nytt spørjeskjema" msgid "Please note that updates are not sent to the council." msgstr "" -#: templates/web/default/report/display.html:56 -msgid "" -"Please note that updates are not sent to the council. If you leave your name " -"it will be public. Your information will only be used in accordance with our " -"<a href=\"/faq#privacy\">privacy policy</a>" +#: templates/web/default/report/update-form.html:7 +msgid "Please note that updates are not sent to the council. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" msgstr "" "Merk at oppdateringar ikkje vert sende til administrasjonen. Viss du\n" "legg igjen namnet ditt så vil det vera offentleg tilgjengeleg.\n" -"Informasjonen din vil berre brukast i samsvar med <a href=\"/faq#privacy" -"\">personvernpolicyen vår</a>" +"Informasjonen din vil berre brukast i samsvar med <a href=\"/faq#privacy\">personvernpolicyen vår</a>" #: templates/web/barnet/report/updates-sidebar-notes.html:1 -#, fuzzy -msgid "" -"Please note that updates are not sent to the relevant department. If you " -"leave your name it will be public. Your information will only be used in " -"accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgid "Please note that updates are not sent to the relevant department. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" msgstr "" -"Merk at oppdateringar ikkje vert sende til administrasjonen. Viss du\n" -"legg igjen namnet ditt så vil det vera offentleg tilgjengeleg.\n" -"Informasjonen din vil berre brukast i samsvar med <a href=\"/faq#privacy" -"\">personvernpolicyen vår</a>" #: templates/web/bromley/report/new/fill_in_details_form.html:23 #: templates/web/default/report/new/fill_in_details_form.html:5 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:25 -msgid "" -"Please note your report has <strong>not yet been sent</strong>. Choose a " -"category and add further information below, then submit." -msgstr "" -"Merk at rapporten din <strong>enno ikkje er send</strong. Vel ein kategori " -"og legg til meir informasjon under før du sender inn." +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:5 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:26 +#: templates/web/zurich/report/new/fill_in_details_form.html:11 +msgid "Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit." +msgstr "Merk at rapporten din <strong>enno ikkje er send</strong. Vel ein kategori og legg til meir informasjon under før du sender inn." #: templates/web/default/report/new/notes.html:1 +#: templates/web/fixmybarangay/report/new/notes.html:1 #: templates/web/fixmystreet/report/new/notes.html:1 +#: templates/web/oxfordshire/report/new/notes.html:1 msgid "Please note:" msgstr "Merk:" -#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:244 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:246 msgid "Please provide some explanation as to why you're reopening this report" -msgstr "" -"Ver venleg og bidra med ei forklaring på kvifor du gjenopnar denne " -"problemrapporten" +msgstr "Ver venleg og bidra med ei forklaring på kvifor du gjenopnar denne problemrapporten" -#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:251 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:253 msgid "Please provide some text as well as a photo" msgstr "Ver venleg og bidra med litt tekst i tillegg til eit bilete" #: perllib/FixMyStreet/App/Controller/Questionnaire.pm:116 -#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:237 -msgid "" -"Please say whether you've ever reported a problem to your council before" -msgstr "" -"Ver venleg og opplys om du har rapportert eit problem til administrasjonen " -"din tidlegare" +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:239 +msgid "Please say whether you've ever reported a problem to your council before" +msgstr "Ver venleg og opplys om du har rapportert eit problem til administrasjonen din tidlegare" #: perllib/FixMyStreet/App/Controller/Alert.pm:80 msgid "Please select the feed you want" @@ -2198,7 +2546,7 @@ msgstr "Vel den kjelda du ynskjer" msgid "Please select the type of alert you want" msgstr "Ver venleg og vel kva for ein type varsel du ynskjer" -#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:233 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:235 msgid "Please state whether or not the problem has been fixed" msgstr "Ver venleg og oppgje om dette problemet har vorte fiksa eller ikkje" @@ -2211,67 +2559,80 @@ msgid "Please upload a JPEG image only" msgstr "Ver venleg og berre last opp JPEG-bilete" #: perllib/FixMyStreet/App/Controller/Photo.pm:183 -#, fuzzy msgid "Please upload a JPEG image only\n" -msgstr "Ver venleg og berre last opp JPEG-bilete" +msgstr "" #: perllib/FixMyStreet/App/Controller/Contact.pm:98 msgid "Please write a message" msgstr "Skriv inn ei melding" #: templates/web/bromley/report/display.html:70 -#: templates/web/fixmystreet/report/display.html:69 -#, fuzzy +#: templates/web/fixmystreet/report/update-form.html:23 msgid "Please write your update here" -msgstr "Skriv inn ei melding" +msgstr "" -#: templates/web/bromley/report/display.html:121 -#: templates/web/bromley/report/display.html:149 -#: templates/web/bromley/report/display.html:161 +#: templates/web/bromley/report/display.html:123 +#: templates/web/bromley/report/display.html:151 +#: templates/web/bromley/report/display.html:163 #: templates/web/default/contact/index.html:93 -#: templates/web/default/report/display.html:119 -#: templates/web/default/report/display.html:156 -#: templates/web/default/report/display.html:178 -#: templates/web/fixmystreet/contact/index.html:93 -#: templates/web/fixmystreet/report/display.html:115 -#: templates/web/fixmystreet/report/display.html:139 -#: templates/web/fixmystreet/report/display.html:161 +#: templates/web/default/report/update-form.html:109 +#: templates/web/default/report/update-form.html:131 +#: templates/web/default/report/update-form.html:72 +#: templates/web/fixmystreet/contact/index.html:105 +#: templates/web/fixmystreet/report/update-form.html:123 +#: templates/web/fixmystreet/report/update-form.html:71 +#: templates/web/fixmystreet/report/update-form.html:95 msgid "Post" msgstr "Send inn" -#: templates/web/default/report/updates.html:14 +#: templates/web/default/report/updates.html:15 msgid "Posted anonymously at %s" msgstr "Publisert anonymt %s" -#: templates/web/default/report/updates.html:21 +#: templates/web/default/report/updates.html:22 msgid "Posted by %s (<strong>%s</strong>) at %s" msgstr "Lagt inn av %s (<strong>%s</strong>) %s" -#: templates/web/default/report/updates.html:23 +#: templates/web/default/report/updates.html:24 msgid "Posted by %s at %s" msgstr "Sendt inn av %s %s" +#: templates/web/default/pagination.html:7 +msgid "Previous" +msgstr "" + +#: 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 "" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:108 +msgid "Private information (not shown on site)" +msgstr "" + #: templates/web/default/maps/openlayers.html:85 msgid "Problem" msgstr "Problem" -#: templates/web/default/admin/timeline.html:24 +#: templates/web/default/admin/timeline.html:22 msgid "Problem %d created" msgstr "Problem %d oppretta" -#: templates/web/default/admin/timeline.html:26 +#: templates/web/default/admin/timeline.html:24 msgid "Problem %s confirmed" msgstr "Problem %s stadfesta" -#: templates/web/default/admin/timeline.html:28 +#: templates/web/default/admin/timeline.html:26 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:819 +#: perllib/FixMyStreet/App/Controller/Admin.pm:950 msgid "Problem marked as open." msgstr "Problem markert som ope." @@ -2279,25 +2640,24 @@ 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/list_flagged.html:5 +#: templates/web/default/admin/flagged.html:10 msgid "Problems" msgstr "Problem" -#: templates/web/default/around/display_location.html:81 +#: templates/web/default/around/_updates.html:1 msgid "Problems in this area" msgstr "Problem i dette området" #: templates/web/bromley/report/display.html:31 -#: templates/web/fixmystreet/around/display_location.html:98 -#: templates/web/fixmystreet/report/display.html:24 -#, fuzzy +#: templates/web/fixmystreet/around/tabbed_lists.html:4 +#: templates/web/fixmystreet/report/display.html:46 msgid "Problems nearby" -msgstr "Fleire problem i nærleiken" +msgstr "" -#: templates/web/fixmystreet/around/display_location.html:97 -#, fuzzy +#: templates/web/fixmystreet/around/tabbed_lists.html:3 +#: templates/web/fixmystreet/report/display.html:44 msgid "Problems on the map" -msgstr "Problem i dette området" +msgstr "" #: db/alert_types.pl:14 msgid "Problems recently reported fixed on FixMyStreet" @@ -2308,24 +2668,25 @@ msgstr "Problem nyleg rapportert fiksa på FiksGataMi" msgid "Problems within %.1fkm of this location" msgstr "Problem innanfor %.1fkm av denne posisjonen" -#: perllib/FixMyStreet/Cobrand/Default.pm:609 -#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:95 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:162 -#: perllib/FixMyStreet/Cobrand/UK.pm:240 +#: perllib/FixMyStreet/Cobrand/Default.pm:626 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:109 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:155 +#: perllib/FixMyStreet/Cobrand/UK.pm:228 msgid "Problems within %s" msgstr "Problem innanfor %s" -#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:103 -#: perllib/FixMyStreet/Cobrand/UK.pm:254 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:117 +#: perllib/FixMyStreet/Cobrand/UK.pm:242 msgid "Problems within %s ward" msgstr "Problem innanfor %s bydel" -#: templates/web/default/reports/council.html:0 -#: templates/web/default/reports/council.html:29 +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:24 msgid "Problems within %s, FixMyStreet" msgstr "Problem innanfor %s, FiksGataMi" #: templates/web/default/alert/_list.html:40 +#: templates/web/fixmybarangay/alert/_list.html:13 #: templates/web/fixmystreet/alert/_list.html:42 msgid "Problems within the boundary of:" msgstr "Problem innanfor grensene av:" @@ -2334,44 +2695,64 @@ msgstr "Problem innanfor grensene av:" msgid "Properties recently reported as put back to use on reportemptyhomes.com" msgstr "Eigedomar nyleg rapportert som tilbake i bruk på reportemptyhomes.com" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:617 +#: templates/web/default/admin/report_edit.html:32 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:115 +msgid "Property address:" +msgstr "" + +#: templates/web/default/report/new/category.html:8 msgid "Property type:" msgstr "Type eigenskap:" #: templates/web/bromley/report/new/fill_in_details_form.html:52 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:62 -#, fuzzy +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:64 msgid "Provide a title" -msgstr "Bidra med ei oppdatering" +msgstr "" #: templates/web/bromley/report/display.html:57 -#: templates/web/default/report/display.html:51 -#: templates/web/fixmystreet/report/display.html:50 +#: templates/web/default/report/update-form.html:3 +#: templates/web/fixmystreet/report/update-form.html:4 msgid "Provide an update" msgstr "Bidra med ei oppdatering" +#: templates/web/fixmystreet/auth/general.html:53 +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 "" + #: templates/web/bromley/report/new/fill_in_details_form.html:180 -#, fuzzy -msgid "" -"Providing a password is optional, but doing so will allow you to more easily " -"report future problems, leave updates and manage your reports." +msgid "Providing a password is optional, but doing so will allow you to more easily report future 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/bromley/report/display.html:142 -#: templates/web/default/report/display.html:175 +#: templates/web/bromley/report/display.html:144 #: templates/web/default/report/new/fill_in_details_form.html:173 -#: templates/web/fixmystreet/report/display.html:154 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:191 -msgid "" -"Providing a password is optional, but doing so will allow you to more easily " -"report problems, leave updates and manage your reports." +#: templates/web/default/report/update-form.html:128 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:202 +#: templates/web/fixmystreet/report/update-form.html:116 +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:60 +#: templates/web/default/admin/body.html:73 +msgid "Public" +msgstr "" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:44 +msgid "Public information (shown on site)" +msgstr "" + +#: 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:80 +#: templates/web/zurich/admin/stats.html:38 +msgid "Publish photo" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:222 +msgid "Publish the response" 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/questionnaire/completed.html:1 #: templates/web/default/questionnaire/completed.html:2 @@ -2385,15 +2766,15 @@ msgstr "" msgid "Questionnaire" msgstr "Spørjeskjema" -#: templates/web/default/admin/timeline.html:32 +#: templates/web/default/admin/timeline.html:30 msgid "Questionnaire %d answered for problem %d, %s to %s" msgstr "Spørjeskjema %d fylt inn for problem %d, %s til %s" -#: templates/web/default/admin/timeline.html:30 +#: templates/web/default/admin/timeline.html:28 msgid "Questionnaire %d sent for problem %d" msgstr "Spørjeskjema %d sendt for problem %d" -#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:190 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:192 msgid "Questionnaire filled in by problem reporter" msgstr "Spørjeskjema fylt inn av feilrapportøren" @@ -2401,33 +2782,31 @@ msgstr "Spørjeskjema fylt inn av feilrapportøren" #: templates/web/default/alert/_list.html:21 #: templates/web/default/around/display_location.html:1 #: templates/web/default/around/display_location.html:3 -#: templates/web/default/report/display.html:42 +#: templates/web/default/report/display.html:46 #: templates/web/default/reports/_rss.html:1 #: templates/web/fixmystreet/alert/_list.html:22 #: templates/web/fixmystreet/alert/updates.html:9 -#: templates/web/fixmystreet/around/display_location.html:1 -#: templates/web/fixmystreet/around/display_location.html:3 -#: templates/web/fixmystreet/report/display.html:30 +#: templates/web/fixmystreet/report/display.html:61 msgid "RSS feed" msgstr "RSS-straum" -#: perllib/FixMyStreet/Cobrand/UK.pm:283 perllib/FixMyStreet/Cobrand/UK.pm:295 +#: perllib/FixMyStreet/Cobrand/UK.pm:271 perllib/FixMyStreet/Cobrand/UK.pm:283 msgid "RSS feed for %s" msgstr "RSS-straum for %s" -#: perllib/FixMyStreet/Cobrand/UK.pm:289 perllib/FixMyStreet/Cobrand/UK.pm:301 +#: perllib/FixMyStreet/Cobrand/UK.pm:277 perllib/FixMyStreet/Cobrand/UK.pm:289 msgid "RSS feed for %s ward, %s" msgstr "RSS-straum for %s bydel, %s" -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:178 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:186 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:196 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:204 -#: perllib/FixMyStreet/Cobrand/UK.pm:309 perllib/FixMyStreet/Cobrand/UK.pm:321 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:171 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:179 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:189 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:197 +#: perllib/FixMyStreet/Cobrand/UK.pm:297 perllib/FixMyStreet/Cobrand/UK.pm:309 msgid "RSS feed of %s" msgstr "RSS-straum frå %s" -#: perllib/FixMyStreet/Cobrand/UK.pm:314 perllib/FixMyStreet/Cobrand/UK.pm:326 +#: perllib/FixMyStreet/Cobrand/UK.pm:302 perllib/FixMyStreet/Cobrand/UK.pm:314 msgid "RSS feed of %s, within %s ward" msgstr "RSS-straum av %s, innanfor %s bydel" @@ -2440,114 +2819,115 @@ msgstr "RSS-straum med problem i nærleiken" msgid "RSS feed of problems in this %s" msgstr "RSS-straum for problem i denne %s-en" -#: perllib/FixMyStreet/Cobrand/Default.pm:610 -#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:96 -#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:161 -#: perllib/FixMyStreet/Cobrand/UK.pm:247 +#: perllib/FixMyStreet/Cobrand/Default.pm:627 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:110 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:154 +#: perllib/FixMyStreet/Cobrand/UK.pm:235 msgid "RSS feed of problems within %s" msgstr "RSS-straum for problem innanfor %s" -#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:102 -#: perllib/FixMyStreet/Cobrand/UK.pm:253 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:116 +#: perllib/FixMyStreet/Cobrand/UK.pm:241 msgid "RSS feed of problems within %s ward" msgstr "RSS-straum for problem innanfor %s bydel" #: templates/web/default/around/display_location.html:1 #: templates/web/default/around/display_location.html:4 -#: templates/web/fixmystreet/around/display_location.html:1 -#: templates/web/fixmystreet/around/display_location.html:4 msgid "RSS feed of recent local problems" msgstr "RSS-straum med nye lokale problem" #: templates/web/bromley/report/display.html:37 -#: templates/web/default/report/display.html:42 +#: templates/web/default/report/display.html:46 #: templates/web/fixmystreet/alert/updates.html:9 -#: templates/web/fixmystreet/report/display.html:30 +#: templates/web/fixmystreet/report/display.html:61 msgid "RSS feed of updates to this problem" msgstr "RSS-straum med oppdateringar for dette problemet" #: templates/web/bromley/report/display.html:39 #: templates/web/default/alert/updates.html:9 -#: templates/web/default/report/display.html:33 +#: templates/web/default/report/display.html:37 #: templates/web/fixmystreet/alert/updates.html:14 -#: templates/web/fixmystreet/report/display.html:32 +#: templates/web/fixmystreet/report/display.html:63 msgid "Receive email when updates are left on this problem." msgstr "Motta e-post når det er oppdateringar på dette problemet" #: templates/web/default/around/display_location.html:0 -#: templates/web/default/around/display_location.html:34 -#: templates/web/fixmystreet/around/display_location.html:0 -#: templates/web/fixmystreet/around/display_location.html:34 +#: templates/web/default/around/display_location.html:32 msgid "Recent local problems, FixMyStreet" msgstr "Nye lokale problem, FiksGataMi." #: templates/web/default/reports/index.html:19 -#, fuzzy +#: templates/web/fixmybarangay/reports/index.html:19 msgid "Recently <br>fixed" -msgstr "Nyleg løyste problem" +msgstr "" -#: templates/web/emptyhomes/reports/index.html:13 #: templates/web/fiksgatami/nn/reports/index.html:13 #: templates/web/fiksgatami/reports/index.html:13 msgid "Recently fixed" msgstr "Nyleg løyste problem" -#: templates/web/default/index.html:50 templates/web/fixmystreet/index.html:62 +#: templates/web/default/index.html:35 templates/web/emptyhomes/index.html:24 +#: templates/web/fixmystreet/index.html:45 msgid "Recently reported problems" msgstr "Nyleg melde problem" #: templates/web/default/report/new/notes.html:9 -#: templates/web/fixmystreet/report/new/notes.html:8 -msgid "" -"Remember that FixMyStreet is primarily for reporting physical problems that " -"can be fixed. If your problem is not appropriate for submission via this " -"site remember that you can contact your council directly using their own " -"website." +#: templates/web/fixmystreet/report/new/notes.html:10 +msgid "Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site remember that you can contact your council directly using their own website." +msgstr "Hugs at FiksGataMi primert er laga for å rapportera fysiske problem som kan fiksast. Viss problemet ditt ikkje er eigna for å senda inn via denne tenesta, hugs at du kan kontakta administrasjonen direkte via deira eiga nettside." + +#: templates/web/fixmybarangay/report/new/notes.html:9 +msgid "Remember that, for the pilot project, FixMyBarangay is only for reporting potholes and streetlights in bgy. Luz or Basak San Nicolas." msgstr "" -"Hugs at FiksGataMi primert er laga for å rapportera fysiske problem som kan " -"fiksast. Viss problemet ditt ikkje er eigna for å senda inn via denne " -"tenesta, hugs at du kan kontakta administrasjonen direkte via deira eiga " -"nettside." #: templates/web/default/admin/report_blocks.html:16 msgid "Remove flag" msgstr "Fjern flagg" -#: templates/web/default/admin/report_edit.html:53 -#: templates/web/default/admin/update_edit.html:48 +#: templates/web/default/admin/report_edit.html:89 +#: templates/web/default/admin/update_edit.html:57 +#: templates/web/zurich/admin/update_edit.html:35 msgid "Remove photo (can't be undone!)" msgstr "Fjern bilete (kan ikkje gjerast om!)" -#: templates/web/emptyhomes/header.html:10 +#: templates/web/emptyhomes/header.html:12 msgid "Report Empty Homes" msgstr "Rapporter tomme heimar" #: templates/web/barnet/footer.html:16 templates/web/bromley/footer.html:17 -#: templates/web/default/footer.html:7 templates/web/emptyhomes/header.html:27 +#: 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:45 +#: 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 "Rapporter eit problem" #: templates/web/bromley/report/display.html:28 -#: templates/web/fixmystreet/report/display.html:22 -#, fuzzy +#: templates/web/fixmystreet/report/display.html:35 msgid "Report abuse" -msgstr "Rapporter eit problem" +msgstr "" -#: templates/web/emptyhomes/index.html:37 -#, fuzzy -msgid "Report empty properties" -msgstr "Rapporter tomme heimar" +#: templates/web/default/report_created.html:1 +#: templates/web/default/report_created.html:3 +#: templates/web/seesomething/report_created.html:0 +#: templates/web/seesomething/report_created.html:8 +msgid "Report created" +msgstr "" -#: perllib/FixMyStreet/App/Controller/Rss.pm:277 +#: perllib/FixMyStreet/App/Controller/Rss.pm:295 msgid "Report on %s" msgstr "Rapport på %s" -#: templates/web/default/index.html:15 -#: templates/web/fixmystreet/around/postcode_form.html:6 +#: templates/web/default/index.html:14 templates/web/emptyhomes/index.html:5 +#: templates/web/fixmystreet/around/intro.html:1 +#: templates/web/stevenage/around/intro.html:1 +#: templates/web/zurich/around/intro.html:1 msgid "Report, view, or discuss local problems" msgstr "Rapporter, finn eller diskuter lokale problem" @@ -2559,9 +2939,9 @@ msgstr "Rapportert %s" msgid "Reported %s, to %s" msgstr "Rapportert %s, til %s" -#: perllib/FixMyStreet/DB/Result/Problem.pm:512 +#: perllib/FixMyStreet/DB/Result/Problem.pm:559 #: templates/web/default/contact/index.html:45 -#: templates/web/fixmystreet/contact/index.html:46 +#: templates/web/fixmystreet/contact/index.html:58 msgid "Reported anonymously at %s" msgstr "Rapportert anonymt %s" @@ -2571,167 +2951,207 @@ msgstr "Rapportert anonymt %s" msgid "Reported before" msgstr "Rapportert tidlegare" -#: perllib/FixMyStreet/DB/Result/Problem.pm:504 -msgid "Reported by %s anonymously at %s" -msgstr "Publisert av %s anonymt %s" - -#: perllib/FixMyStreet/DB/Result/Problem.pm:535 +#: perllib/FixMyStreet/DB/Result/Problem.pm:582 #: templates/web/default/contact/index.html:47 -#: templates/web/fixmystreet/contact/index.html:48 +#: templates/web/fixmystreet/contact/index.html:60 msgid "Reported by %s at %s" msgstr "Publisert av %s %s" -#: perllib/FixMyStreet/DB/Result/Problem.pm:526 -msgid "Reported by %s by %s at %s" -msgstr "Rapportert av %s av %s %s" - -#: perllib/FixMyStreet/DB/Result/Problem.pm:500 -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:520 -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:508 +#: 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:530 +#: 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: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 "Legger til eit problem" -#: templates/web/default/around/display_location.html:95 +#: 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: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 +msgid "Reports awaiting approval" +msgstr "" + +#: templates/web/default/around/tabbed_lists.html:3 msgid "Reports on and around the map" msgstr "Problem i og rundt kartet" -#: templates/web/default/admin/report_edit.html:35 +#: templates/web/zurich/admin/index-sdm.html:10 +msgid "Reports published" +msgstr "" + +#: templates/web/default/admin/report_edit.html:71 msgid "Resend report" msgstr "Send rapport på nytt" -#: perllib/FixMyStreet/Geocode/OSM.pm:166 -msgid "" -"Road operator for this named road (derived from road reference number and " -"type): %s" +#: templates/web/default/js/translation_strings.html:28 +#: templates/web/oxfordshire/js/translation_strings.html:22 +msgid "Right place?" msgstr "" -"Vegoperatør for denne namngjevne vegen (utleia frå vegreferansenummer og " -"type): %s" -#: perllib/FixMyStreet/Geocode/OSM.pm:163 +#: perllib/FixMyStreet/Geocode/OSM.pm:173 +msgid "Road operator for this named road (derived from road reference number and type): %s" +msgstr "Vegoperatør for denne namngjevne vegen (utleia frå vegreferansenummer og type): %s" + +#: perllib/FixMyStreet/Geocode/OSM.pm:170 msgid "Road operator for this named road (from OpenStreetMap): %s" msgstr "Vegoperatør for denne namngjevne vegen (frå OpenStreetMap): %s" -#: templates/web/default/admin/council_edit.html:35 -msgid "Save changes" -msgstr "Lagra endringar" +#: 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:1027 -msgid "Search Abuse" -msgstr "Søk etter misbruk" +#: 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 "" -#: templates/web/default/admin/search_abuse.html:1 -msgid "Search Abuse Table" -msgstr "Søk i misbruktabell" +#: templates/web/default/admin/body_edit.html:76 +msgid "Save changes" +msgstr "Lagra endringar" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1023 -#: templates/web/default/admin/list_flagged.html:1 -#: templates/web/default/admin/search_reports.html:1 +#: templates/web/default/admin/reports.html:1 +#: templates/web/zurich/admin/reports.html:1 msgid "Search Reports" msgstr "Søk i rapportar" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1026 -#: templates/web/default/admin/search_users.html:1 +#: templates/web/default/admin/users.html:1 msgid "Search Users" msgstr "Søk i brukarar" -#: templates/web/default/admin/search_abuse.html:4 -#: templates/web/default/admin/search_reports.html:5 -#: templates/web/default/admin/search_users.html:5 +#: templates/web/zurich/header.html:77 +msgid "Search reports" +msgstr "" + +#: templates/web/default/admin/reports.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/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:71 +#: templates/web/zurich/admin/body-form.html:26 +msgid "Select an area" +msgstr "" + #: templates/web/default/alert/_list.html:8 #: templates/web/fixmystreet/alert/_list.html:10 -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." +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:618 +#: perllib/FixMyStreet/DB/Result/Problem.pm:664 msgid "Sent to %s %s later" msgstr "Sendt til %s %s seinare" -#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:71 msgid "Sent:" msgstr "Sendt:" -#: templates/web/default/admin/report_edit.html:37 +#: templates/web/default/admin/report_edit.html:73 +#: templates/web/zurich/admin/stats.html:45 msgid "Service:" msgstr "Teneste:" -#: templates/web/emptyhomes/static/about.html:21 -msgid "Shelter Cymru" -msgstr "Shelter Cymru" +#: templates/web/fixmystreet/report/display.html:41 +msgid "Share" +msgstr "" -#: templates/web/emptyhomes/static/about.html:23 -msgid "" -"Shelter Cymru is Wales’ people and homes charity and wants\n" -" everyone in Wales to have a decent home. We believe a home is a " -"fundamental\n" -" right and essential to the health and well-being of people and " -"communities.\n" -" We work for people in housing need. We have offices all over Wales and\n" -" prevent people from losing their homes by offering free, confidential " -"and\n" -" independent advice. When necessary we constructively challenge on behalf " -"of\n" -" people to ensure they are properly assisted and to improve practice and\n" -" learning. We believe that bringing empty homes back into use can make a\n" -" significant contribution to the supply of affordable homes in Wales." -msgstr "" - -#: templates/web/bromley/report/display.html:203 +#: templates/web/bromley/report/display.html:205 #: templates/web/bromley/report/new/fill_in_details_form.html:129 #: templates/web/bromley/report/new/fill_in_details_form.html:175 -#: templates/web/default/report/display.html:208 #: templates/web/default/report/new/fill_in_details_form.html:210 -#: templates/web/fixmystreet/report/display.html:185 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:126 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:186 +#: templates/web/default/report/update-form.html:157 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:129 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:197 +#: templates/web/fixmystreet/report/update-form.html:144 msgid "Show my name publicly" msgstr "Vis namnet mitt offentleg" -#: templates/web/default/around/display_location.html:60 -#: templates/web/fixmystreet/around/display_location.html:60 +#: templates/web/default/around/display_location.html:69 msgid "Show old" msgstr "" -#: templates/web/default/around/display_location.html:51 -#: templates/web/fixmystreet/around/display_location.html:52 +#: templates/web/default/around/display_location.html:60 msgid "Show pins" msgstr "Vis nåler" #: templates/web/default/auth/general.html:3 #: templates/web/default/auth/general.html:49 -#: templates/web/fixmybarangay/header.html.orig:46 +#: templates/web/fixmybarangay/header.html:70 #: templates/web/fixmystreet/auth/general.html:3 -#: templates/web/fixmystreet/auth/general.html:38 -#: templates/web/fixmystreet/auth/general.html:58 -#: templates/web/fixmystreet/header.html:51 -#: templates/web/zurich/header.html:51 +#: templates/web/fixmystreet/auth/general.html:42 +#: templates/web/fixmystreet/auth/general.html:62 +#: templates/web/fixmystreet/header.html:54 +#: templates/web/oxfordshire/header.html:115 +#: templates/web/seesomething/auth/general.html:3 +#: templates/web/seesomething/auth/general.html:39 +#: templates/web/stevenage/header.html:101 +#: templates/web/zurich/auth/general.html:18 +#: templates/web/zurich/auth/general.html:35 msgid "Sign in" msgstr "Logg inn" @@ -2741,22 +3161,26 @@ msgstr "Logg inn via epost" #: templates/web/default/auth/general.html:1 #: templates/web/fixmystreet/auth/general.html:1 +#: templates/web/seesomething/auth/general.html:1 +#: templates/web/zurich/auth/general.html:1 msgid "Sign in or create an account" msgstr "Logg inn eller opprett ein konto" #: templates/web/bromley/auth/sign_out.html:1 #: templates/web/default/auth/sign_out.html:1 #: templates/web/default/header.html:30 -#: templates/web/emptyhomes/header.html:41 +#: templates/web/emptyhomes/header.html:46 #: templates/web/fiksgatami/header.html:22 #: templates/web/fiksgatami/nn/header.html:22 #: templates/web/lichfielddc/header.html:177 #: templates/web/reading/header.html:33 +#: templates/web/seesomething/auth/sign_out.html:1 +#: templates/web/zurich/auth/sign_out.html:1 msgid "Sign out" msgstr "Logg ut" #: templates/web/default/header.html:29 -#: templates/web/emptyhomes/header.html:40 +#: templates/web/emptyhomes/header.html:45 #: templates/web/fiksgatami/header.html:21 #: templates/web/fiksgatami/nn/header.html:21 #: templates/web/lichfielddc/header.html:177 @@ -2765,11 +3189,20 @@ msgid "Signed in as %s" msgstr "Logga inn som %s" #: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 #: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 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" msgstr "Nokre bilete av nyleg melde problem" @@ -2778,35 +3211,26 @@ msgstr "Nokre bilete av nyleg melde problem" msgid "Some text to localize" msgstr "Noko tekst å omsetja" -#: templates/web/default/admin/council_list.html:42 -msgid "Some unconfirmeds" -msgstr "Nokre ustadfesta" - -#: perllib/FixMyStreet/Cobrand/UK.pm:97 -msgid "" -"Sorry, that appears to be a Crown dependency postcode, which we don't cover." -msgstr "" -"Orsak, det ser ut til å vera eit «Crown dependency»-postnummer, som vi ikkje " -"dekkjer." +#: perllib/FixMyStreet/Cobrand/UK.pm:93 +msgid "Sorry, that appears to be a Crown dependency postcode, which we don't cover." +msgstr "Orsak, det ser ut til å vera eit «Crown dependency»-postnummer, som vi ikkje dekkjer." #: templates/web/default/tokens/abuse.html:5 msgid "Sorry, there has been an error confirming your problem." -msgstr "" -"Orsak, men det oppstod eit problem når vi freista å stadfesta " -"problemrapporten din" +msgstr "Orsak, men det oppstod eit problem når vi freista å stadfesta problemrapporten din" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:214 -#: perllib/FixMyStreet/Geocode.pm:27 perllib/FixMyStreet/Geocode/Bing.pm:51 -#: perllib/FixMyStreet/Geocode/Google.pm:69 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:215 +#: perllib/FixMyStreet/Geocode.pm:28 perllib/FixMyStreet/Geocode/Bing.pm:58 +#: perllib/FixMyStreet/Geocode/Google.pm:74 +#: perllib/FixMyStreet/Geocode/OSM.pm:66 msgid "Sorry, we could not find that location." msgstr "Orsak, vi kunne ikkje finna den staden." -#: perllib/FixMyStreet/Geocode/Bing.pm:46 -#: perllib/FixMyStreet/Geocode/Google.pm:64 -#: perllib/FixMyStreet/Geocode/OSM.pm:59 +#: perllib/FixMyStreet/Geocode/Bing.pm:53 +#: perllib/FixMyStreet/Geocode/Google.pm:69 +#: perllib/FixMyStreet/Geocode/Zurich.pm:87 msgid "Sorry, we could not parse that location. Please try again." -msgstr "" -"Orsak, vi kunne ikkje tolka den posisjonen. Ver venleg og prøv på nytt." +msgstr "Orsak, vi kunne ikkje tolka den posisjonen. Ver venleg og prøv på nytt." #: templates/web/fiksgatami/footer.html:16 #: templates/web/fiksgatami/nn/footer.html:16 @@ -2814,51 +3238,63 @@ 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/list_flagged.html:18 -#: templates/web/default/admin/list_updates.html:6 -#: templates/web/default/admin/search_reports.html:21 -#: templates/web/fixmystreet/report/display.html:72 +#: 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 "Tilstand" -#: templates/web/default/admin/report_edit.html:17 -#: templates/web/default/admin/update_edit.html:18 -#: templates/web/default/report/display.html:77 +#: 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 "Tilstand:" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1029 +#: 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 "Statistikk" -#: templates/web/default/report/updates.html:9 -#, fuzzy +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Status" +msgstr "" + +#: templates/web/default/report/updates.html:10 msgid "Still open, via questionnaire, %s" -msgstr "Skal spørjeskjemaet sendast?" +msgstr "" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370 +msgid "Subcategory: %s" +msgstr "" + +#: templates/web/zurich/admin/index-dm.html:27 +msgid "Subdivision/Body" +msgstr "" #: templates/web/bromley/report/new/fill_in_details_form.html:48 -#: templates/web/fixmystreet/contact/index.html:79 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:58 -#, fuzzy +#: templates/web/fixmystreet/contact/index.html:91 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:60 msgid "Subject" -msgstr "Emne:" +msgstr "" -#: templates/web/default/admin/report_edit.html:13 +#: 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 "Emne:" @@ -2869,38 +3305,67 @@ msgstr "Emne:" #: 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/fixmystreet/report/new/fill_in_details_form.html:137 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:162 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:201 +#: 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 "Send inn" -#: templates/web/default/admin/report_edit.html:56 -#: templates/web/default/admin/update_edit.html:51 -#: templates/web/default/admin/user_edit.html:20 +#: 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 "Send inn endringar" -#: templates/web/default/questionnaire/index.html:112 +#: templates/web/default/questionnaire/index.html:116 #: templates/web/fixmystreet/questionnaire/index.html:105 msgid "Submit questionnaire" msgstr "Send inn spørjeskjema" +#: 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 "" + #: templates/web/bromley/report/display.html:44 #: templates/web/default/alert/updates.html:17 -#: templates/web/default/report/display.html:38 +#: templates/web/default/report/display.html:42 #: templates/web/fixmystreet/alert/updates.html:23 -#: templates/web/fixmystreet/report/display.html:37 +#: templates/web/fixmystreet/report/display.html:68 msgid "Subscribe" msgstr "Abonner" #: templates/web/default/alert/_list.html:97 +#: templates/web/fixmybarangay/alert/_list.html:42 #: templates/web/fixmystreet/alert/_list.html:92 msgid "Subscribe me to an email alert" msgstr "Eg ynskjer å abonnera på e-postvarsel" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1021 +#: templates/web/fixmybarangay/alert/_list.html:6 +msgid "Subscribe to an alert based upon what baranagay you’re in:" +msgstr "" + +#: 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 "Oppsummering" @@ -2908,60 +3373,56 @@ msgstr "Oppsummering" #: templates/web/emptyhomes/reports/index.html:1 #: templates/web/fiksgatami/nn/reports/index.html:1 #: templates/web/fiksgatami/reports/index.html:1 +#: templates/web/fixmybarangay/reports/index.html:1 +#: templates/web/zurich/reports/index.html:0 +#: templates/web/zurich/reports/index.html:4 msgid "Summary reports" msgstr "Oppsummeringsrapportar" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1025 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1179 +msgid "Survey" +msgstr "" + #: templates/web/default/admin/questionnaire.html:1 msgid "Survey Results" msgstr "Resultat frå spørjeundersøkinga" -#: templates/web/default/admin/list_updates.html:14 +#: 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" -#: templates/web/default/admin/council_contacts.html:18 +#: templates/web/default/admin/body.html:18 msgid "Text only version" msgstr "Tekst-utgåve" -#: templates/web/default/admin/update_edit.html:13 +#: templates/web/default/admin/update_edit.html:20 +#: templates/web/zurich/admin/update_edit.html:12 msgid "Text:" msgstr "Tekst:" #: templates/web/default/tokens/confirm_update.html:7 #: templates/web/default/tokens/confirm_update.html:8 -msgid "" -"Thank you — you can <a href=\"%s\">view your updated problem</a> on " -"the site." -msgstr "" -"Tusen takk — du kan <a href=\"%s\">sjå på det oppdaterte problemet " -"ditt</a> her hos oss." +msgid "Thank you — you can <a href=\"%s\">view your updated problem</a> on the site." +msgstr "Tusen takk — du kan <a href=\"%s\">sjå på det oppdaterte problemet ditt</a> her hos oss." #: templates/web/emptyhomes/tokens/confirm_problem.html:6 #: templates/web/emptyhomes/tokens/confirm_problem.html:8 -msgid "" -"Thank you for reporting an empty property on ReportEmptyHomes.com. We have " -"emailed the lead officer for empty homes in the council responsible with " -"details, and asked them to do whatever they can to get the empty property " -"back into use as soon as possible." +msgid "Thank you for reporting an empty property on ReportEmptyHomes.com. We have emailed the lead officer for empty homes in the council responsible with details, and asked them to do whatever they can to get the empty property back into use as soon as possible." msgstr "" #: templates/web/emptyhomes/tokens/confirm_problem.html:30 #: templates/web/emptyhomes/tokens/confirm_problem.html:31 msgid "" "Thank you for reporting this empty property on ReportEmptyHomes.com.\n" -"At present the report cannot be sent through to the council for this area. " -"We\n" -"are working with councils to link them into the system so that as many " -"areas\n" +"At present the report cannot be sent through to the council for this area. We\n" +"are working with councils to link them into the system so that as many areas\n" "as possible will be covered." msgstr "" #: templates/web/default/tokens/error.html:7 -msgid "" -"Thank you for trying to confirm your update or problem. We seem to have an " -"error ourselves though, so <a href=\"%s\">please let us know what went on</" -"a> and we'll look into it." +msgid "Thank you for trying to confirm your update or problem. We seem to have an error ourselves though, so <a href=\"%s\">please let us know what went on</a> and we'll look into it." msgstr "" "Takk for at du freistar å stadfesta oppdateringa di eller problemet\n" "ditt. Det ser ut til at vi har ein feil hos oss, så <a href=\"%s\">ver\n" @@ -2969,173 +3430,125 @@ msgstr "" #: templates/web/emptyhomes/tokens/confirm_problem.html:24 #: templates/web/emptyhomes/tokens/confirm_problem.html:26 -msgid "" -"Thank you for using ReportEmptyHomes.com. Your action is already helping to " -"resolve the UK’s empty homes crisis." +msgid "Thank you for using ReportEmptyHomes.com. Your action is already helping to resolve the UK’s empty homes crisis." msgstr "" "Takk for at du brukar ReportEmptyHomes.com. Handlinga di bidreg\n" "allereie til å løyse Storbritannias krise med tomme heimar." #: templates/web/fixmystreet/around/around_index.html:27 -#, fuzzy -msgid "" -"Thanks for uploading your photo. We now need to locate your problem, so " -"please enter a nearby street name or postcode in the box above :" +msgid "Thanks for uploading your photo. We now need to locate your problem, so please enter a nearby street name or postcode in the box above :" msgstr "" -"Takk for at du lasta opp biletet ditt. No treng vi å plassera\n" -"problemet ditt, så ver venleg og skriv inn namn på ein veg i\n" -"nærleiken, eller eit postnummer, i boksen under :" - -#: templates/web/default/around/around_index.html:28 -msgid "" -"Thanks for uploading your photo. We now need to locate your problem, so " -"please enter a nearby street name or postcode in the box below :" -msgstr "" -"Takk for at du lasta opp biletet ditt. No treng vi å plassera\n" -"problemet ditt, så ver venleg og skriv inn namn på ein veg i\n" -"nærleiken, eller eit postnummer, i boksen under :" #: templates/web/default/contact/submit.html:8 msgid "Thanks for your feedback. We'll get back to you as soon as we can!" -msgstr "" -"Takk for innspillet ditt. Vi gjev deg ei tilbakemelding så snart vi kan." +msgstr "Takk for innspillet ditt. Vi gjev deg ei tilbakemelding så snart vi kan." #: templates/web/default/questionnaire/creator_fixed.html:9 -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?" +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: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." +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." -#: perllib/FixMyStreet/App/Controller/Council.pm:91 -#, fuzzy -msgid "" -"That location does not appear to be covered by a council; perhaps it is " -"offshore or outside the country. Please try again." +#: perllib/FixMyStreet/App/Controller/Council.pm:90 +msgid "That location does not appear to be covered by a council; perhaps it is offshore or outside the country. Please try again." msgstr "" -"Den staden vert ikkje dekt av nokon administrasjon, kanskje det er til\n" -"havs – ver venleg og prøv ein meir spesifikk stad." -#: perllib/FixMyStreet/App/Controller/Location.pm:107 -#, fuzzy +#: perllib/FixMyStreet/App/Controller/Location.pm:123 msgid "That location does not appear to be in the UK; please try again." msgstr "" -"Den staden synest ikkje å vera i Storbritannia. Ver venleg og prøv igjen." #: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:63 -#: perllib/FixMyStreet/Cobrand/UK.pm:90 +#: perllib/FixMyStreet/Cobrand/UK.pm:86 msgid "That postcode was not recognised, sorry." msgstr "Det postnummeret vart ikkje gjenkjent, orsak." -#: perllib/FixMyStreet/App/Controller/Admin.pm:605 +#: perllib/FixMyStreet/App/Controller/Admin.pm:704 msgid "That problem will now be resent." msgstr "Det problemet vil no sendast på nytt." -#: perllib/FixMyStreet/App/Controller/Report.pm:75 +#: perllib/FixMyStreet/App/Controller/Report.pm:117 +msgid "That report cannot be viewed on %s." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report.pm:111 msgid "That report has been removed from FixMyStreet." msgstr "Den rapporten har vorte fjerna frå FiksGataMi." -#: templates/web/emptyhomes/static/about.html:7 -msgid "The Empty Homes Agency" +#: 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/emptyhomes/static/about.html:9 +#: templates/web/default/admin/body-form.html:132 +#: templates/web/default/admin/body-form.html:133 msgid "" -"The Empty Homes agency is an independent campaigning charity. We\n" -" are not part of government, and have no formal links with local " -"councils\n" -" although we work in cooperation with both. We exist to highlight the " -"waste\n" -" of empty property and work with others to devise and promote " -"sustainable\n" -" solutions to bring empty property back into use. We are based in London " -"but\n" -" work across England. We also work in partnership with other charities " -"across\n" -" the UK." -msgstr "" - -#: templates/web/default/open311/index.html:23 +"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 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." +"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 "" -"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/auth/token.html:21 -#: templates/web/default/email_sent.html:22 +#: 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 confirmation email <strong>may</strong> take a few minutes to arrive " -"— <em>please</em> be patient." +"The body's <strong>name</strong> identifies the body (for example, <em>Borsetshire District Council</em>)\n" +" and may be displayed publically." msgstr "" -"Stadfestingse-posten <strong>kan</strong> bruka nokre minutt før han kjem " -"fram — så ver tålmodig." + +#: 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 — <em>please</em> be patient." +msgstr "Stadfestingse-posten <strong>kan</strong> bruka nokre minutt før han kjem fram — så ver tålmodig." #: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 #: templates/web/fixmystreet/report/new/fill_in_details_text.html:3 -#, fuzzy -msgid "" -"The council won’t be able to help unless you leave as much\n" -"detail as you can. Please describe the exact location of the problem (e.g. " -"on a\n" -"wall), what it is, how long it has been there, a description (and a photo " -"of\n" -"the problem if you have one), etc." +msgid "The council won’t be able to help unless you leave as much detail as you can. Please describe the exact location of the problem (e.g. on a wall), what it is, how long it has been there, a description (and a photo of the problem if you have one), etc." msgstr "" -"Ver venlg og fyll inn detaljane om problemet under. Administrasjonen\n" -"vil ikkje vera i stand til å hjelpa med mindre du legg inn så mange\n" -"detaljar som du kan. Forklar den eksakte plasseringa for problemet\n" -"(t.d. på ein vegg), kva det er, kor lenge det har vore der, ei\n" -"skildring (og eit bilete av problemet viss du har eit), osb." #: templates/web/fixmystreet/questionnaire/index.html:43 -#, fuzzy msgid "The details of your problem are available from the other tab above." msgstr "" -"Detaljane om problemet ditt er tilgjengelege på høgre kant av denne sida." #: templates/web/default/questionnaire/index.html:49 -msgid "" -"The details of your problem are available on the right hand side of this " -"page." +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 "" -"Detaljane om problemet ditt er tilgjengelege på høgre kant av denne sida." #: perllib/FixMyStreet/App/Controller/Dashboard.pm:60 -#: perllib/FixMyStreet/App/Controller/Reports.pm:44 -#: perllib/FixMyStreet/App/Controller/Reports.pm:75 +#: perllib/FixMyStreet/App/Controller/Reports.pm:72 msgid "The error was: %s" msgstr "Feilen var: %s" -#: templates/web/default/open311/index.html:19 -msgid "" -"The following Open311 v2 attributes are returned for each request: " -"service_request_id, description, lat, long, media_url, status, " -"requested_datetime, updated_datetime, service_code and service_name." -msgstr "" -"Dei følgjande Open311 v2-attributtene vert returnerte for kvar førespurnad: " -"service_request_id, description, lat, long, media_url, status, " -"requested_datetime, updated_datetime, service_code og service_name." +#: templates/web/default/open311/index.html:88 +msgid "The following Open311 v2 attributes are returned for each request: service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code and service_name." +msgstr "Dei følgjande Open311 v2-attributtene vert returnerte for kvar førespurnad: service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code og service_name." -#: perllib/FixMyStreet/Geocode/OSM.pm:158 -msgid "" -"The following information about the nearest road might be inaccurate or " -"irrelevant, if the problem is close to several roads or close to a road " -"without a name registered in OpenStreetMap." -msgstr "" -"Følgjande informasjon om næraste veg kan vera unøyaktig eller irrelevant, " -"viss problemet er nær fleire vegar eller nær ein veg utan namn registrert i " -"OpenStreetmap." +#: perllib/FixMyStreet/Geocode/OSM.pm:165 +msgid "The following information about the nearest road might be inaccurate or irrelevant, if the problem is close to several roads or close to a road without a name registered in OpenStreetMap." +msgstr "Følgjande informasjon om næraste veg kan vera unøyaktig eller irrelevant, viss problemet er nær fleire vegar eller nær ein veg utan namn registrert i OpenStreetmap." #: db/alert_types.pl:19 db/alert_types.pl:23 db/alert_types.pl:27 #: db/alert_types.pl:31 @@ -3151,11 +3564,8 @@ msgid "The latest problems for {{COUNCIL}} reported by users" msgstr "Dei siste problema for {{COUNCIL}} rapportert av brukarar" #: db/alert_types.pl:39 -msgid "" -"The latest problems for {{COUNCIL}} within {{WARD}} ward reported by users" -msgstr "" -"Dei siste problema for {{COUNCIL}} innanfor {{WARD}} bydel rapportert av " -"brukarar" +msgid "The latest problems for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "Dei siste problema for {{COUNCIL}} innanfor {{WARD}} bydel rapportert av brukarar" #: db/alert_types.pl:11 msgid "The latest problems reported by users" @@ -3178,16 +3588,16 @@ msgid "The latest reports for {{COUNCIL}} reported by users" msgstr "Dei siste rapportane for {{COUNCIL}} rapportert av brukarar" #: db/alert_types_eha.pl:24 -msgid "" -"The latest reports for {{COUNCIL}} within {{WARD}} ward reported by users" -msgstr "" -"Dei siste rapportane for {{COUNCIL}} innanfor {{WARD}} bydel rapportert av " -"brukarar" +msgid "The latest reports for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "Dei siste rapportane for {{COUNCIL}} innanfor {{WARD}} bydel rapportert av brukarar" #: db/alert_types_eha.pl:28 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 "" -"Dei siste rapportane innanfor grensa til {{NAME}} rapportert av brukarar" #: templates/web/default/auth/change_password.html:12 #: templates/web/default/auth/change_password.html:16 @@ -3210,148 +3620,140 @@ msgstr "Den enklaste meldinga er den geografiske:" #: templates/web/default/report/new/councils_text_some.html:11 #: templates/web/default/report/new/fill_in_details_form.html:17 #: templates/web/fixmystreet/report/new/fill_in_details_form.html:12 -msgid "" -"The subject and details of the problem will be public, plus your name if you " -"give us permission." +msgid "The subject and details of the problem will be public, plus your name if you give us permission." 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:269 -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" +#: 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" -#: perllib/FixMyStreet/App/Controller/Reports.pm:72 +#: templates/web/default/admin/user-form.html:12 +#: templates/web/default/admin/user-form.html:13 msgid "" -"There was a problem showing the All Reports page. Please try again later." +"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 "" -"Det oppstod problem med å visa «Alle rapportar»-sida. Ver venleg og prøv " -"igjen seinare." +#: 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." + +#: perllib/FixMyStreet/App/Controller/Contact.pm:116 #: perllib/FixMyStreet/App/Controller/Dashboard.pm:59 -#, fuzzy msgid "There was a problem showing this page. Please try again later." msgstr "" -"Det oppstod problem med å visa «Alle rapportar»-sida. Ver venleg og prøv " -"igjen seinare." -#: perllib/FixMyStreet/App/Controller/Report/New.pm:733 -#: perllib/FixMyStreet/App/Controller/Report/Update.pm:130 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:747 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:134 #: templates/web/default/auth/general.html:23 #: templates/web/fixmystreet/auth/general.html:24 -#, fuzzy -msgid "" -"There was a problem with your email/password combination. If you cannot " -"remember your password, or do not have one, please fill in the ‘sign " -"in by email’ section of the form." +#: templates/web/seesomething/auth/general.html:24 +#: templates/web/zurich/auth/general.html:28 +msgid "There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the ‘sign in by email’ section of the form." msgstr "" -"Det var problem med e-post/passord-kombinasjonen din. Passord og " -"brukarkontoar er ei heilt <strong>ny</strong> teneste, så du har " -"sannsynlegvis ikkje ein konto enno. – ver venleg og fyll inn høgresida " -"av dette skjemaet for å skaffa deg ein." #: perllib/FixMyStreet/App/Controller/Alert.pm:355 -msgid "" -"There was a problem with your email/password combination. Please try again." -msgstr "" -"Det var problem med e-post/passord-kombinasjonen din. Ver venleg og prøv " -"igjen." +msgid "There was a problem with your email/password combination. Please try again." +msgstr "Det var problem med e-post/passord-kombinasjonen din. Ver venleg og prøv igjen." -#: perllib/FixMyStreet/App/Controller/Report/Update.pm:252 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:272 msgid "There was a problem with your update. Please try again." msgstr "Det var problem med oppdateringa di. Ver venleg og prøv igjen." -#: perllib/FixMyStreet/App/Controller/Contact.pm:117 +#: perllib/FixMyStreet/App/Controller/Contact.pm:120 msgid "There were problems with your report. Please see below." msgstr "Det var problem med rapporten din. Ver venleg og sjå under." -#: perllib/FixMyStreet/App/Controller/Report/Update.pm:279 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:299 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/open311/index.html:10 +#: templates/web/default/admin/body-form.html:108 +#: templates/web/default/admin/body-form.html:109 msgid "" -"This API implementation is work in progress and not yet stabilized. It will " -"change without warnings in the future." +"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 "" -"Denne API-implementasjonen er under arbeid og ikkje enno stabil. Han vil " -"endra seg utan åtvaring i framtida." -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:339 +#: 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." + +#: templates/web/default/admin/body.html:33 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:342 +"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 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." +"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 "" -"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:865 -#: perllib/FixMyStreet/Cobrand/UK.pm:62 +#: 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: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" msgstr "Denne informasjonen er påkravd" #: templates/web/default/debug_header.html:3 -msgid "" -"This is a developer site; things might break at any time, and the database " -"will be periodically deleted." -msgstr "" -"Dette er ein utviklarnettstad. Ting kan knekka når som helst og databasen " -"vil verta periodisk sletta." +msgid "This is a developer site; things might break at any time, and the database will be periodically deleted." +msgstr "Dette er ein utviklarnettstad. Ting kan knekka når som helst og databasen vil verta periodisk sletta." -#: templates/web/emptyhomes/reports/council.html:58 -msgid "This is a summary of all reports for one %s." -msgstr "Dette er ei oppsummering av alle rapportar for ein %s." +#: templates/web/fixmybarangay/reports/index.html:7 +msgid "This is a summary of all reports on this site; select a particular barangay to see the reports sent there." +msgstr "" -#: templates/web/emptyhomes/reports/council.html:60 -msgid "This is a summary of all reports for this %s." -msgstr "Dette er ei oppsummering for alle rapportar for denne %s-en." +#: templates/web/emptyhomes/reports/index.html:4 +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 "" #: templates/web/default/reports/index.html:7 -#: templates/web/emptyhomes/reports/index.html:4 #: templates/web/fiksgatami/nn/reports/index.html:4 #: templates/web/fiksgatami/reports/index.html:4 -msgid "" -"This is a summary of all reports on this site; select a particular council " -"to see the reports sent there." +msgid "This is a summary of all reports on this site; select a particular council to see the reports sent there." +msgstr "Dette er ei opplisting av alle problema i denne tenesta; vel ein viss administrasjon for å sjå problem som er sende dit." + +#: templates/web/default/auth/token.html:9 +msgid "This may be because the link is too old or already used, or the address was not copied correctly." msgstr "" -"Dette er ei opplisting av alle problema i denne tenesta; vel ein viss " -"administrasjon for å sjå problem som er sende dit." #: templates/web/default/report/banner.html:15 msgid "This problem has been closed" msgstr "Dette problemet er lukka" -#: templates/web/bromley/report/display.html:96 +#: templates/web/bromley/report/display.html:98 #: templates/web/default/report/banner.html:12 -#: templates/web/default/report/display.html:95 -#: templates/web/emptyhomes/report/display.html:12 -#: templates/web/fixmystreet/report/display.html:90 +#: templates/web/default/report/update-form.html:48 +#: templates/web/emptyhomes/report/banner.html:3 +#: templates/web/fixmystreet/report/update-form.html:46 msgid "This problem has been fixed" msgstr "Dette problemet er løyst" -#: templates/web/bromley/report/display.html:90 -#: templates/web/default/report/display.html:90 -#: templates/web/fixmystreet/report/display.html:84 +#: templates/web/bromley/report/display.html:92 +#: templates/web/default/report/update-form.html:43 +#: templates/web/fixmystreet/report/update-form.html:40 msgid "This problem has not been fixed" msgstr "Dette problemet har ikkje vorte løyst" @@ -3363,115 +3765,133 @@ 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/DB/ResultSet/AlertType.pm:83 +#: 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 "" + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:86 msgid "This report is currently marked as closed." msgstr "Denne rapporten er for tida markert som lukka." -#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:81 +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:84 msgid "This report is currently marked as fixed." msgstr "Denne rapporten er for tida markert som fiksa." -#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:85 +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:88 msgid "This report is currently marked as open." msgstr "Denne rapporten er for tida markert som open." -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:262 -msgid "" -"This web page also contains a photo of the problem, provided by the user." +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315 +msgid "This report was submitted anonymously" msgstr "" -"Denne nettsida inneheld òg eit bilete av problemet, sendt inn av brukaren." -#: perllib/FixMyStreet/App/Controller/Admin.pm:1024 +#: 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:1178 #: templates/web/default/admin/timeline.html:1 msgid "Timeline" msgstr "Tidslinje" -#: templates/web/default/admin/list_flagged.html:10 -#: templates/web/default/admin/search_reports.html:13 +#: templates/web/default/admin/flagged.html:15 +#: templates/web/default/admin/reports.html:12 msgid "Title" msgstr "Tittel" -#: templates/web/default/around/display_location.html:69 -#, fuzzy -msgid "" -"To <strong>report a problem</strong>, click on the map at the correct " -"location." -msgstr "" -"For å <strong>rapportera eit problem</strong>, klikk på kartet på riktig " -"stad." - -#: templates/web/emptyhomes/around/display_location.html:35 -msgid "" -"To <strong>report a problem</strong>, simply click on the map at the correct " -"location." +#: templates/web/default/around/_report_banner.html:2 +msgid "To <strong>report a problem</strong>, click on the map at the correct location." msgstr "" -"For å <strong>rapportera eit problem</strong>, klikk på kartet på riktig " -"stad." #: templates/web/default/alert/index.html:27 -#, fuzzy -msgid "" -"To find out what local alerts we have for you, please enter your postcode or " -"street name and area" +msgid "To find out what local alerts we have for you, please enter your postcode or street name and area" msgstr "" -"Du finn lokale problem ved å søkja på postnummeret ditt, vegnamn eller stad:" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:268 +#: 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 +#: templates/web/zurich/admin/stats.html:30 msgid "Total" msgstr "Totalt" -#: perllib/FixMyStreet/App/Controller/Reports.pm:43 -msgid "Unable to look up areas in MaPit. Please try again later." +#: templates/web/seesomething/report/new/fill_in_details_form.html:24 +msgid "Transport Category" msgstr "" -"Klarte ikkje slå opp område i MaPit. Ver venleg og prøv igjen seinare." -#: templates/web/default/admin/report_edit.html:18 -#: templates/web/default/admin/report_edit.html:21 -#: templates/web/default/admin/update_edit.html:19 +#: templates/web/default/js/translation_strings.html:29 +#: templates/web/oxfordshire/js/translation_strings.html:23 +msgid "Try again" +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 "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:48 +#: templates/web/zurich/admin/report_edit.html:61 +#: templates/web/zurich/admin/update_edit.html:18 msgid "Unconfirmed" msgstr "Ikkje stadfesta" #: templates/web/fixmystreet/report/banner.html:9 -#, fuzzy msgid "Unknown" -msgstr "*ukjent*" +msgstr "" -#: perllib/FixMyStreet/App/Controller/Rss.pm:164 +#: perllib/FixMyStreet/App/Controller/Rss.pm:173 msgid "Unknown alert type" msgstr "Ukjend varsel-type" -#: perllib/FixMyStreet/App/Controller/Report.pm:70 +#: templates/web/default/js/translation_strings.html:39 +#: templates/web/oxfordshire/js/translation_strings.html:33 +msgid "Unknown error" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report.pm:106 msgid "Unknown problem ID" msgstr "Ukjend problem-ID" #: templates/web/bromley/report/display.html:66 -#: templates/web/fixmystreet/report/display.html:65 -#, fuzzy +#: templates/web/fixmystreet/report/update-form.html:19 msgid "Update" -msgstr "Oppdatering:" +msgstr "" -#: templates/web/default/admin/timeline.html:35 +#: templates/web/default/admin/timeline.html:33 msgid "Update %s created for problem %d; by %s" msgstr "Oppdatering %s oppretta for problem %d, av %s" #: templates/web/default/contact/index.html:21 -#: templates/web/fixmystreet/contact/index.html:22 +#: templates/web/fixmystreet/contact/index.html:34 msgid "Update below added anonymously at %s" msgstr "Oppdateringa under vart lagt inn anonymt %s" #: templates/web/default/contact/index.html:23 -#: templates/web/fixmystreet/contact/index.html:24 +#: templates/web/fixmystreet/contact/index.html:36 msgid "Update below added by %s at %s" msgstr "Oppdateringa under vart lagt til av %s %s" -#: templates/web/default/admin/index.html:30 +#: 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:38 msgid "Update breakdown by state" msgstr "Tilstandsfordeling for oppdateringar" @@ -3479,38 +3899,54 @@ msgstr "Tilstandsfordeling for oppdateringar" msgid "Update by {{name}}" msgstr "Oppdatert av {{name}}" -#: templates/web/default/admin/update_edit.html:33 +#: templates/web/default/admin/update_edit.html:42 +#: templates/web/zurich/admin/update_edit.html:25 msgid "Update changed problem state to %s" msgstr "Ei oppdatering endra problemstatusen til %s" -#: templates/web/default/admin/update_edit.html:35 +#: templates/web/default/admin/update_edit.html:44 msgid "Update marked problem as fixed" msgstr "Ei oppdatering markerte dette problemet som fiksa." -#: templates/web/default/admin/update_edit.html:37 +#: templates/web/default/admin/update_edit.html:46 msgid "Update reopened problem" msgstr "Ei oppdatering gjenopna problemet" -#: templates/web/default/admin/council_contacts.html:62 +#: templates/web/default/admin/body.html:83 msgid "Update statuses" msgstr "Oppdater tilstanden" -#: templates/web/default/report/display.html:71 +#: templates/web/default/report/update-form.html:22 msgid "Update:" msgstr "Oppdatering:" -#: perllib/FixMyStreet/App/Controller/Admin.pm:694 -#: perllib/FixMyStreet/App/Controller/Admin.pm:809 -#: perllib/FixMyStreet/App/Controller/Admin.pm:889 +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Updated" +msgstr "" + +#: 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:1 +#: 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 "Oppdateringar" +#: perllib/FixMyStreet/DB/Result/Comment.pm:131 +msgid "Updates are limited to 2000 characters in length. Please shorten your update" +msgstr "" + #: db/alert_types.pl:5 db/alert_types.pl:6 msgid "Updates on {{title}}" msgstr "Oppdateringar av {{title}}" @@ -3518,336 +3954,300 @@ msgstr "Oppdateringar av {{title}}" #: templates/web/bromley/report/display.html:0 #: templates/web/bromley/report/display.html:8 #: templates/web/default/report/display.html:0 -#: templates/web/default/report/display.html:7 +#: templates/web/default/report/display.html:5 #: templates/web/fixmystreet/report/display.html:0 #: templates/web/fixmystreet/report/display.html:8 msgid "Updates to this problem, FixMyStreet" msgstr "Oppdateringar til dette problemet, FiksGataMi" -#: perllib/FixMyStreet/App/Controller/Admin.pm:1182 +#: 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:1154 +#: perllib/FixMyStreet/App/Controller/Admin.pm:1314 msgid "User flagged" msgstr "Brukar flagga" -#: templates/web/default/admin/list_flagged.html:30 +#: 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:309 -#: perllib/FixMyStreet/App/Controller/Admin.pm:339 +#: perllib/FixMyStreet/App/Controller/Admin.pm:371 +#: perllib/FixMyStreet/App/Controller/Admin.pm:401 msgid "Values updated" msgstr "Verdi oppdatert" -#: templates/web/default/admin/report_edit.html:12 -#: templates/web/default/admin/update_edit.html:12 +#: templates/web/default/admin/report_edit.html:18 +#: templates/web/default/admin/update_edit.html:18 +#: templates/web/zurich/admin/report_edit-sdm.html:24 +#: templates/web/zurich/admin/report_edit.html:23 +#: templates/web/zurich/admin/update_edit.html:10 msgid "View report on site" msgstr "Sjå rapport på nettstaden" -#: templates/web/default/reports/council.html:18 -#, fuzzy +#: templates/web/default/reports/body.html:14 msgid "View reports by ward" -msgstr "Sjå rapport på nettstaden" +msgstr "" #: templates/web/emptyhomes/tokens/confirm_problem.html:39 msgid "View your report" msgstr "Vis rapporten din" #: templates/web/default/around/display_location.html:0 -#: templates/web/default/around/display_location.html:33 -#: templates/web/emptyhomes/around/display_location.html:0 -#: templates/web/emptyhomes/around/display_location.html:16 -#: templates/web/fixmystreet/around/display_location.html:0 -#: templates/web/fixmystreet/around/display_location.html:33 +#: templates/web/default/around/display_location.html:34 +#: templates/web/seesomething/around/display_location.html:0 +#: templates/web/seesomething/around/display_location.html:16 msgid "Viewing a location" msgstr "Ser på ein stad" #: templates/web/bromley/report/display.html:0 #: templates/web/default/report/display.html:0 -#: templates/web/emptyhomes/report/display.html:2 #: templates/web/fixmystreet/report/display.html:0 msgid "Viewing a problem" msgstr "Ser på eit problem" -#: templates/web/default/reports/council.html:20 -#: templates/web/emptyhomes/reports/council.html:18 +#: templates/web/default/reports/body.html:16 msgid "Wards of this council" msgstr "Bydelar innanfor denne administrasjonen" #: templates/web/default/alert/choose.html:6 -#: templates/web/default/around/around_index.html:17 +#: templates/web/default/around/around_index.html:13 #: templates/web/fixmystreet/around/around_index.html:16 -msgid "" -"We found more than one match for that location. We show up to ten matches, " -"please try a different search if yours is not here." +#: templates/web/seesomething/around/around_index.html:13 +msgid "We found more than one match for that location. We show up to ten matches, please try a different search if yours is not here." +msgstr "Vi fann meir ein eitt treff for den staden. Vi viser opp til ti treff, så prøv eit anna søk viss staden din ikkje er her." + +#: templates/web/default/auth/token.html:8 +msgid "We have not been able to confirm your account - sorry." msgstr "" -"Vi fann meir ein eitt treff for den staden. Vi viser opp til ti treff, så " -"prøv eit anna søk viss staden din ikkje er her." -#: templates/web/default/auth/token.html:19 +#: templates/web/default/auth/token.html:16 msgid "We have sent you an email containing a link to confirm your account." -msgstr "" -"Vi har sendt deg ein epost som inneheld ei lenkje for å stadfesta kontoen " -"din." +msgstr "Vi har sendt deg ein epost som inneheld ei lenkje for å stadfesta kontoen din." #: templates/web/emptyhomes/tokens/confirm_problem.html:18 #: templates/web/emptyhomes/tokens/confirm_problem.html:20 -msgid "" -"We may contact you periodically to ask if anything has changed with the " -"property you reported." -msgstr "" -"Det kan hende vi periodisk tek kontakt med deg for å spørja om noko har " -"endra seg med eiedommen du rapporterte." +msgid "We may contact you periodically to ask if anything has changed with the property you reported." +msgstr "Det kan hende vi periodisk tek kontakt med deg for å spørja om noko har endra seg med eiedommen du rapporterte." -#: templates/web/bromley/report/display.html:141 -#: templates/web/fixmystreet/report/display.html:153 -#, fuzzy +#: templates/web/bromley/report/display.html:143 +#: templates/web/fixmystreet/report/update-form.html:115 msgid "We never show your email" -msgstr "(vi viser aldri e-postadressa di)" +msgstr "" #: templates/web/bromley/report/new/fill_in_details_form.html:133 #: templates/web/bromley/report/new/fill_in_details_form.html:179 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:130 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:190 -#, fuzzy +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:134 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:201 +#: templates/web/zurich/report/new/fill_in_details_form.html:96 msgid "We never show your email address or phone number." -msgstr "(vi viser aldri e-postadressa di eller telefonnummeret ditt)" - -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:349 -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." -#: templates/web/default/index.html:34 templates/web/emptyhomes/index.html:59 -#: templates/web/fixmystreet/index.html:45 +#: 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." + +#: templates/web/default/index-steps.html:31 msgid "We send it to the council on your behalf" msgstr "Vi sender til administrasjon på dine vegner" #: templates/web/bromley/report/new/fill_in_details_form.html:217 #: templates/web/default/report/new/notes.html:5 -msgid "" -"We will only use your personal information in accordance with our <a href=\"/" -"faq#privacy\">privacy policy.</a>" -msgstr "" -"Vi vil berre bruka personleg informasjon om deg i samsvar med <a href=\"/" -"faq#privacy\">personvernpolicyen</a> vår." +#: templates/web/fixmybarangay/report/new/notes.html:5 +msgid "We will only use your personal information in accordance with our <a href=\"/faq#privacy\">privacy policy.</a>" +msgstr "Vi vil berre bruka personleg informasjon om deg i samsvar med <a href=\"/faq#privacy\">personvernpolicyen</a> vår." #: templates/web/fixmystreet/report/new/notes.html:4 -#, fuzzy -msgid "" -"We will only use your personal information in accordance with our <a href=\"/" -"privacy\">privacy policy.</a>" +#: templates/web/oxfordshire/report/new/notes.html:4 +msgid "We will only use your personal information in accordance with our <a href=\"/privacy\">privacy policy.</a>" msgstr "" -"Vi vil berre bruka personleg informasjon om deg i samsvar med <a href=\"/" -"faq#privacy\">personvernpolicyen</a> vår." #: templates/web/emptyhomes/contact/blurb.html:2 -msgid "" -"We’d love to hear what you think about this website. Just fill in the " -"form. Please don’t contact us about individual empty homes; use the " -"box accessed from <a href=\"/\">the front page</a>." -msgstr "" -"Vi vil gjerne høyra kva du tenkjer om denne nettstaden. Det er berre å " -"fylla inn skjemaet. Ver venleg og ikkje kontakt oss om individuelle tomme " -"heimar. For det bør du i staden bruka boksen som er på <a href=\"/" -"\">forsida</a>." +msgid "We’d love to hear what you think about this website. Just fill in the form. Please don’t contact us about individual empty homes; use the box accessed from <a href=\"/\">the front page</a>." +msgstr "Vi vil gjerne høyra kva du tenkjer om denne nettstaden. Det er berre å fylla inn skjemaet. Ver venleg og ikkje kontakt oss om individuelle tomme heimar. For det bør du i staden bruka boksen som er på <a href=\"/\">forsida</a>." #: templates/web/default/contact/blurb.html:8 -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>:" +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/council_contacts.html:41 -#: templates/web/default/admin/council_edit.html:41 +#: 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 "Når redigert" -#: templates/web/default/admin/list_flagged.html:19 -#: templates/web/default/admin/search_reports.html:22 +#: templates/web/default/admin/problem_row.html:35 msgid "When sent" msgstr "Når sendt" -#: perllib/FixMyStreet/App/Controller/Report/New.pm:612 +#: perllib/FixMyStreet/App/Controller/Report/New.pm:621 msgid "Whole block of empty flats" msgstr "Heil blokk med tomme leilegheiter" -#: templates/web/default/open311/index.html:25 -msgid "" -"With request searches, it is also possible to search for agency_responsible " -"to limit the requests to those sent to a single administration. The search " -"term is the administration ID provided by <a href=\"%s\">MaPit</a>." -msgstr "" -"Når du søkjer etter førespurnader, så er det òg mogleg å søkja etter " -"agency_responsible for å avgrensa det til førespurnader som er sendt til ein " -"einskild adminstrasjon. Søkjetermen er administrasjonssida som du får frå <a " -"href=\"%s\">MaPit</a>." +#: templates/web/default/open311/index.html:94 +msgid "With request searches, it is also possible to search for agency_responsible to limit the requests to those sent to a single administration. The search term is the administration ID provided by <a href=\"%s\">MaPit</a>." +msgstr "Når du søkjer etter førespurnader, så er det òg mogleg å søkja etter agency_responsible for å avgrensa det til førespurnader som er sendt til ein einskild adminstrasjon. Søkjetermen er administrasjonssida som du får frå <a href=\"%s\">MaPit</a>." -#: templates/web/fixmystreet/footer.html:22 -msgid "" -"Would you like better integration with FixMyStreet? <a href=\"http://www." -"mysociety.org/for-councils/fixmystreet/\">Find out about FixMyStreet for " -"councils</a>." +#: templates/web/fixmystreet/footer.html:21 +#: templates/web/stevenage/footer.html:22 +msgid "Would you like better integration with FixMyStreet? <a href=\"http://www.mysociety.org/for-councils/fixmystreet/\">Find out about FixMyStreet for councils</a>." msgstr "" -#: templates/web/fixmystreet/footer.html:18 -#, fuzzy -msgid "" -"Would you like to contribute to FixMyStreet? Our code is open source and <a " -"href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>." +#: templates/web/fixmystreet/footer.html:17 +#: templates/web/stevenage/footer.html:18 +msgid "Would you like to contribute to FixMyStreet? 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/questionnaire/index.html:102 +#: templates/web/default/questionnaire/index.html:106 #: templates/web/fixmystreet/questionnaire/index.html:96 -msgid "" -"Would you like to receive another questionnaire in 4 weeks, reminding you to " -"check the status?" -msgstr "" -"Kunne du tenkja deg å motta ein ny førespurnad om 4 veker, som minner deg om " -"å sjekka status?" +msgid "Would you like to receive another questionnaire in 4 weeks, reminding you to check the status?" +msgstr "Kunne du tenkja deg å motta ein ny førespurnad om 4 veker, som minner deg om å sjekka status?" #: templates/web/default/report/new/notes.html:8 -#: templates/web/fixmystreet/report/new/notes.html:7 -msgid "" -"Writing your message entirely in block capitals makes it hard to read, as " -"does a lack of punctuation." -msgstr "" -"Når du skriv meldinga di med berre store bokstavar vert ho vanskeleg å lesa. " -"Det same gjeld manglande tegnsetting." +#: templates/web/fixmybarangay/report/new/notes.html:8 +#: templates/web/fixmystreet/report/new/notes.html:8 +#: templates/web/oxfordshire/report/new/notes.html:7 +msgid "Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation." +msgstr "Når du skriv meldinga di med berre store bokstavar vert ho vanskeleg å lesa. Det same gjeld manglande tegnsetting." #: templates/web/default/admin/stats.html:10 msgid "Year" msgstr "År" -#: templates/web/default/admin/council_contacts.html:48 -#: templates/web/default/admin/council_contacts.html:49 -#: templates/web/default/admin/council_edit.html:5 -#: templates/web/default/admin/list_updates.html:30 -#: templates/web/default/admin/list_updates.html:31 +#: 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/problem_row.html:19 -#: templates/web/default/admin/report_edit.html:27 -#: templates/web/default/admin/report_edit.html:41 -#: templates/web/default/admin/search_users.html:23 -#: templates/web/default/admin/update_edit.html:15 +#: 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:105 +#: 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 "Ja" -#: templates/web/bromley/report/display.html:155 +#: templates/web/bromley/report/display.html:157 #: templates/web/bromley/report/new/fill_in_details_form.html:198 -#: templates/web/fixmystreet/report/display.html:133 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:156 -#, fuzzy +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:161 +#: templates/web/fixmystreet/report/update-form.html:89 msgid "Yes I have a password" -msgstr "<strong>Ja</strong>, eg har eit passord:" +msgstr "" #: templates/web/default/contact/index.html:37 -#: templates/web/fixmystreet/contact/index.html:38 -msgid "" -"You are reporting the following problem report for being abusive, containing " -"personal information, or similar:" -msgstr "" -"Du rapporterer at følgjande problem er støytande, inneheld personleg " -"informasjon eller liknande:" +#: templates/web/fixmystreet/contact/index.html:50 +msgid "You are reporting the following problem report for being abusive, containing personal information, or similar:" +msgstr "Du rapporterer at følgjande problem er støytande, inneheld personleg informasjon eller liknande:" #: templates/web/default/contact/index.html:15 -#: templates/web/fixmystreet/contact/index.html:16 -msgid "" -"You are reporting the following update for being abusive, containing " -"personal information, or similar:" +#: templates/web/fixmystreet/contact/index.html:28 +msgid "You are reporting the following update for being abusive, containing personal information, or similar:" +msgstr "Du rapporterer at følgjande oppdatering er støytande, inneheld personleg informasjon, eller liknande:" + +#: templates/web/default/tokens/confirm_problem.html:19 +#: templates/web/default/tokens/confirm_problem.html:21 +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:8 +msgid "You can <a href=\"%s%s\">view the problem on this site</a>." msgstr "" -"Du rapporterer at følgjande oppdatering er støytande, inneheld personleg " -"informasjon, eller liknande:" -#: templates/web/emptyhomes/reports/council.html:64 -msgid "" -"You can <a href=\"%s\">view all reports for the council</a> or <a href=\"/" -"reports\">show all councils</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 "" -"Du kan <a href=\"%s\">sjå alle rapportar for administrasjonen</a> eller <a " -"href=\"/reports\">sjå alle administrasjonane</a>." -#: templates/web/emptyhomes/reports/council.html:66 -msgid "You can <a href=\"/reports\">show all councils</a>." -msgstr "Du kan <a href=\"/reports/\">sjå alle administrasjonar</a>." +#: 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:14 -#: templates/web/default/report/new/councils_text_none.html:16 +#: 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>." +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/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 "" -"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>." -#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:38 -msgid "" -"You have already answered this questionnaire. If you have a question, please " -"<a href='%s'>get in touch</a>, or <a href='%s'>view your problem</a>.\n" +#: 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 har allereie svart på dette spørjeskjemaet. Viss du har spurnader, ver " -"venleg og <a href='%s'>ta kontakt</a>, eller <a href='%s'>sjå på problemet " -"ditt</a>.\n" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:38 +msgid "You have already answered this questionnaire. If you have a question, please <a href='%s'>get in touch</a>, or <a href='%s'>view your problem</a>.\n" +msgstr "Du har allereie svart på dette spørjeskjemaet. Viss du har spurnader, ver venleg og <a href='%s'>ta kontakt</a>, eller <a href='%s'>sjå på problemet ditt</a>.\n" #: templates/web/bromley/report/new/fill_in_details_form.html:97 -#: templates/web/default/questionnaire/index.html:92 +#: templates/web/default/questionnaire/index.html:96 #: templates/web/default/report/new/fill_in_details_form.html:93 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:90 #: templates/web/fixmystreet/questionnaire/index.html:87 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:101 -msgid "" -"You have already attached a photo to this report, attaching another one will " -"replace it." -msgstr "" -"Du har allereie lagt ved eit bilete til dette problemet. Å leggja ved eit " -"anna vil byta ut dette." - -#: templates/web/bromley/report/display.html:106 -#: templates/web/default/report/display.html:106 -#: templates/web/fixmystreet/report/display.html:100 -msgid "" -"You have already attached a photo to this update, attaching another one will " -"replace it." -msgstr "" -"Du har allereie lagt ved eit bilete til denne oppdateringa. Å leggja ved eit " -"anna vil byta ut dette." +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:99 +#: templates/web/seesomething/report/new/fill_in_details_form.html:59 +#: templates/web/zurich/report/new/fill_in_details_form.html:75 +msgid "You have already attached a photo to this report, attaching another one will replace it." +msgstr "Du har allereie lagt ved eit bilete til dette problemet. Å leggja ved eit anna vil byta ut dette." + +#: templates/web/bromley/report/display.html:108 +#: templates/web/default/report/update-form.html:59 +#: templates/web/fixmystreet/report/update-form.html:56 +msgid "You have already attached a photo to this update, attaching another one will replace it." +msgstr "Du har allereie lagt ved eit bilete til denne oppdateringa. Å leggja ved eit anna vil byta ut dette." #: templates/web/default/auth/sign_out.html:3 +#: templates/web/seesomething/auth/sign_out.html:3 +#: templates/web/zurich/auth/sign_out.html:3 msgid "You have been signed out" msgstr "Du er allereie logga ut" #: templates/web/bromley/report/new/fill_in_details_form.html:25 #: templates/web/default/report/new/fill_in_details_form.html:7 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:27 -#, fuzzy -msgid "" -"You have located the problem at the point marked with a green pin on the " -"map. If this is not the correct location, simply click on the map again. " +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:7 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:28 +#: templates/web/zurich/report/new/fill_in_details_form.html:13 +msgid "You have located the problem at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. " msgstr "" -"Du har plassert problemet ved punktet i kartet som er markert med ein lilla " -"nål. Viss dette ikkje er korrekt plassering, kan du klikka i kartet på nytt." #: templates/web/default/tokens/confirm_alert.html:7 msgid "You have successfully confirmed your alert." msgstr "Du har no stadfesta varselet ditt." +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:6 +msgid "You have successfully confirmed your email address." +msgstr "" + #: templates/web/default/tokens/confirm_problem.html:14 #: templates/web/default/tokens/confirm_problem.html:15 msgid "You have successfully confirmed your problem" @@ -3855,12 +4255,8 @@ msgstr "Du har no stadfesta problemet ditt" #: templates/web/default/tokens/confirm_update.html:11 #: templates/web/default/tokens/confirm_update.html:12 -msgid "" -"You have successfully confirmed your update and you can now <a href=\"%s" -"\">view it on the site</a>." -msgstr "" -"Du har no stadfesta oppdateringa di <a href=\"%s\">og kan sjå ho på denne " -"nettstaden</a>." +msgid "You have successfully confirmed your update and you can now <a href=\"%s\">view it on the site</a>." +msgstr "Du har no stadfesta oppdateringa di <a href=\"%s\">og kan sjå ho på denne nettstaden</a>." #: templates/web/default/tokens/confirm_alert.html:11 msgid "You have successfully created your alert." @@ -3870,24 +4266,27 @@ msgstr "Du har oppretta varselet ditt." msgid "You have successfully deleted your alert." msgstr "Sletting av varselet ditt var vellukka." -#: perllib/FixMyStreet/App/Controller/Report/New.pm:740 -#: perllib/FixMyStreet/App/Controller/Report/Update.pm:136 -msgid "" -"You have successfully signed in; please check and confirm your details are " -"accurate:" +#: perllib/FixMyStreet/App/Controller/Report/New.pm:754 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:140 +msgid "You have successfully signed in; please check and confirm your details are accurate:" +msgstr "Du har no logga inn. Ver venleg og sjekk og stadfest at detaljane dine er korrekte:" + +#: templates/web/default/email_sent.html:13 +msgid "You must now click the link in the email we've just sent you." msgstr "" -"Du har no logga inn. Ver venleg og sjekk og stadfest at detaljane dine er " -"korrekte:" -#: templates/web/default/email_sent.html:26 +#: 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 must now click the link in the email we've just sent you — if you " -"do not, %s." +"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 "" -"Du må no opna lenkja i e-posten vi akkurat sende deg — dersom du ikkje " -"gjer det, %s" -#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:71 msgid "You really want to resend?" msgstr "Ynskjer du verkeleg å senda på nytt?" @@ -3904,78 +4303,84 @@ msgstr "Rapportane dine" #: templates/web/fixmystreet/alert/_list.html:89 #: templates/web/fixmystreet/alert/updates.html:19 #: templates/web/fixmystreet/alert/updates.html:22 -#: templates/web/fixmystreet/contact/index.html:72 -#: templates/web/fixmystreet/report/display.html:34 -#: templates/web/fixmystreet/report/display.html:36 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:142 -#, fuzzy +#: templates/web/fixmystreet/contact/index.html:84 +#: templates/web/fixmystreet/report/display.html:65 +#: templates/web/fixmystreet/report/display.html:67 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:115 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:147 +#: templates/web/zurich/report/new/fill_in_details_form.html:88 msgid "Your email" -msgstr "E-posten din" +msgstr "" -#: templates/web/bromley/report/display.html:130 +#: templates/web/seesomething/report/new/fill_in_details_form.html:81 +msgid "Your email (optional)" +msgstr "" + +#: templates/web/bromley/report/display.html:132 #: templates/web/fixmystreet/auth/general.html:26 -#: templates/web/fixmystreet/report/display.html:124 -#, fuzzy +#: 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 "e-postadressa di:" +msgstr "" #: templates/web/default/auth/general.html:27 msgid "Your email address:" msgstr "e-postadressa di:" #: templates/web/default/alert/_list.html:92 -#: templates/web/default/report/display.html:128 #: templates/web/default/report/new/fill_in_details_form.html:124 +#: templates/web/default/report/update-form.html:81 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:133 +#: templates/web/fixmybarangay/alert/_list.html:37 msgid "Your email:" msgstr "E-posten din" -#: templates/web/bromley/report/display.html:193 +#: templates/web/bromley/report/display.html:195 #: templates/web/bromley/report/new/fill_in_details_form.html:117 #: templates/web/bromley/report/new/fill_in_details_form.html:164 -#, fuzzy msgid "Your first name" -msgstr "Namnet ditt:" +msgstr "" #: templates/web/fixmystreet/report/updates-sidebar-notes.html:5 -#, fuzzy -msgid "" -"Your information will only be used in accordance with our <a href=\"/privacy" -"\">privacy policy</a>" +msgid "Your information will only be used in accordance with our <a href=\"/privacy\">privacy policy</a>" msgstr "" -"Vi vil berre bruka personleg informasjon om deg i samsvar med <a href=\"/" -"faq#privacy\">personvernpolicyen</a> vår." -#: templates/web/bromley/report/display.html:199 +#: templates/web/bromley/report/display.html:201 #: templates/web/bromley/report/new/fill_in_details_form.html:123 #: templates/web/bromley/report/new/fill_in_details_form.html:170 -#, fuzzy msgid "Your last name" -msgstr "Namnet ditt:" +msgstr "" -#: templates/web/fixmystreet/auth/general.html:53 -#: templates/web/fixmystreet/contact/index.html:65 -#: templates/web/fixmystreet/report/display.html:181 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:121 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:181 -#, fuzzy +#: 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 "Namnet ditt:" +msgstr "" #: templates/web/default/auth/general.html:59 #: templates/web/default/contact/index.html:68 -#: templates/web/default/report/display.html:202 #: templates/web/default/report/new/fill_in_details_form.html:203 +#: templates/web/default/report/update-form.html:151 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:124 msgid "Your name:" msgstr "Namnet ditt:" -#: templates/web/bromley/report/display.html:160 +#: templates/web/bromley/report/display.html:162 #: templates/web/bromley/report/new/fill_in_details_form.html:203 -#: templates/web/fixmystreet/auth/general.html:37 -#: templates/web/fixmystreet/report/display.html:138 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:161 -#, fuzzy +#: templates/web/fixmystreet/auth/general.html:41 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:166 +#: templates/web/fixmystreet/report/update-form.html:94 +#: templates/web/seesomething/auth/general.html:30 +#: templates/web/zurich/auth/general.html:34 msgid "Your password" -msgstr "Rapportane dine" +msgstr "" #: templates/web/default/auth/change_password.html:6 msgid "Your password has been changed" @@ -3983,26 +4388,34 @@ msgstr "Passordet ditt har vorte endra" #: 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:134 -#: templates/web/fixmystreet/report/new/fill_in_details_form.html:195 +#: 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 "" #: templates/web/fixmystreet/questionnaire/index.html:15 -#, fuzzy msgid "Your report" -msgstr "Oppdateringane dine" +msgstr "" + +#: templates/web/default/report_created.html:6 +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:47 -#: templates/web/reading/footer.html:7 +#: 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 "Oppdateringane dine" -#: templates/web/default/my/my.html:45 templates/web/fixmystreet/my/my.html:45 +#: templates/web/default/my/my.html:45 templates/web/fixmystreet/my/my.html:49 msgid "Your updates" msgstr "Oppdateringane dine" @@ -4010,166 +4423,236 @@ msgstr "Oppdateringane dine" msgid "Your email:" msgstr "E-posten din:" -#: templates/web/default/admin/timeline.html:6 +#: templates/web/default/admin/timeline.html:4 msgid "by %s" msgstr "av %s" -#: templates/web/default/reports/council.html:12 -#: templates/web/default/reports/council.html:13 -#: templates/web/emptyhomes/reports/council.html:6 -#: templates/web/emptyhomes/reports/council.html:7 +#: templates/web/default/reports/body.html:6 +#: templates/web/default/reports/body.html:7 msgid "council" msgstr "administrasjon" -#: templates/web/default/admin/report_edit.html:15 +#: perllib/FixMyStreet/DB/Result/Problem.pm:649 +msgid "council ref: %s" +msgstr "" + +#: 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 "brukte ikkje kart" #: templates/web/default/alert/index.html:33 -#: templates/web/fixmystreet/around/postcode_form.html:17 +#: templates/web/fixmystreet/around/postcode_form.html:20 +#: templates/web/seesomething/around/postcode_form.html:9 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" -#: perllib/Utils.pm:289 +#: 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 "" + +#: perllib/Utils.pm:263 msgid "less than a minute" msgstr "mindre enn eitt minutt" -#: templates/web/default/report/updates.html:27 -msgid "marked as %s" -msgstr "markert som %s" +#: templates/web/default/report/updates.html:57 +msgid "marked as a duplicate report" +msgstr "" + +#: templates/web/default/report/updates.html:47 +msgid "marked as action scheduled" +msgstr "" -#: templates/web/default/report/updates.html:25 +#: templates/web/default/report/updates.html:59 +msgid "marked as an internal referral" +msgstr "" + +#: templates/web/default/report/updates.html:49 +msgid "marked as closed" +msgstr "" + +#: templates/web/default/report/updates.html:28 +#: templates/web/default/report/updates.html:51 msgid "marked as fixed" msgstr "markert som løyst" -#: perllib/FixMyStreet/App/Controller/Admin.pm:112 +#: templates/web/default/report/updates.html:45 +msgid "marked as in progress" +msgstr "" + +#: templates/web/default/report/updates.html:41 +msgid "marked as investigating" +msgstr "" + +#: templates/web/default/report/updates.html:55 +msgid "marked as not the council's responsibility" +msgstr "" + +#: templates/web/default/report/updates.html:43 +msgid "marked as planned" +msgstr "" + +#: templates/web/default/report/updates.html:53 +msgid "marked as unable to fix" +msgstr "" + +#: 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 "i/t" #: templates/web/default/alert/_list.html:87 +#: templates/web/fixmybarangay/alert/_list.html:32 #: templates/web/fixmystreet/alert/_list.html:85 msgid "or" msgstr "eller" -#: templates/web/default/admin/report_edit.html:15 -msgid "originally entered" -msgstr "søkte etter" +#: 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: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: “%s”" +msgstr "" -#: templates/web/default/admin/report_edit.html:16 +#: templates/web/default/admin/report_edit.html:30 msgid "other areas:" msgstr "andre område:" -#: templates/web/default/report/updates.html:26 +#: templates/web/default/report/updates.html:29 +#: templates/web/default/report/updates.html:39 msgid "reopened" msgstr "opna på nytt" #: templates/web/barnet/header.html:71 templates/web/bromley/header.html:100 #: templates/web/bromley/header.html:65 -#: templates/web/fixmybarangay/header.html.orig:43 -#: templates/web/fixmystreet/header.html:48 -#: templates/web/zurich/header.html:48 -#, fuzzy +#: templates/web/fixmybarangay/header.html:67 +#: templates/web/fixmystreet/header.html:51 +#: templates/web/oxfordshire/header.html:112 +#: templates/web/oxfordshire/header.html:48 +#: templates/web/stevenage/header.html:98 templates/web/zurich/footer.html:12 msgid "sign out" -msgstr "Logg ut" +msgstr "" #: templates/web/bromley/report/new/fill_in_details_form.html:4 #: templates/web/bromley/report/new/fill_in_details_form.html:7 #: templates/web/default/report/new/fill_in_details_form.html:11 #: templates/web/default/report/new/fill_in_details_form.html:14 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:14 #: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 #: templates/web/fixmystreet/report/new/fill_in_details_form.html:9 msgid "the local council" msgstr "den lokale administrasjonen" -#: perllib/FixMyStreet/DB/Result/Problem.pm:541 -msgid "the map was not used so pin location may be inaccurate" -msgstr "karta vart ikkje brukt, så nåleposisjon kan vera unøyaktig" - -#: perllib/FixMyStreet/DB/Result/Problem.pm:603 -msgid "their ref: %s" +#: templates/web/default/report/_main.html:6 +#: templates/web/zurich/report/_main.html:5 +msgid "there is no pin shown as the user did not use the map" msgstr "" -#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:330 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362 msgid "this type of local problem" msgstr "denne typen lokalt problem" -#: perllib/Utils.pm:263 +#: perllib/Utils.pm:235 msgid "today" msgstr "i dag" -#: templates/web/default/admin/report_edit.html:15 +#: 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 "brukte kart" -#: templates/web/default/admin/update_edit.html:26 +#: templates/web/default/admin/update_edit.html:35 msgid "user is from same council as problem - %d" msgstr "brukaren er frå same administrasjon som problemet – %d" -#: templates/web/default/admin/update_edit.html:29 +#: templates/web/default/admin/update_edit.html:38 msgid "user is problem owner" msgstr "brukaren er eigaren av problemet" -#: templates/web/default/reports/council.html:0 -#: templates/web/default/reports/council.html:9 -#: templates/web/emptyhomes/reports/council.html:0 -#: templates/web/emptyhomes/reports/council.html:3 +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:3 msgid "ward" msgstr "bydel" -#: templates/web/default/email_sent.html:15 -#: templates/web/default/email_sent.html:3 -msgid "we'll hang on to your alert while you're checking your email." -msgstr "vi tek vare på varselet ditt medan du sjekkar e-posten din." - -#: templates/web/default/email_sent.html:3 -#: templates/web/default/email_sent.html:7 -msgid "we'll hang on to your problem report while you're checking your email." -msgstr "vi tek vare på rapporten din medan du sjekkar e-posten din." +#: templates/web/default/front/stats.html:17 +#, perl-format +msgid "<big>%s</big> report recently" +msgid_plural "<big>%s</big> reports recently" +msgstr[0] "<big>%s</big> rapport nyleg" +msgstr[1] "<big>%s</big> rapportar nyleg" -#: templates/web/default/email_sent.html:11 -#: templates/web/default/email_sent.html:3 -msgid "we'll hang on to your update while you're checking your email." -msgstr "vi tek vare på oppdateringa di medan du sjekkar e-posten din." +#: perllib/Utils.pm:282 +#, perl-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" +msgstr[1] "" -#: templates/web/default/email_sent.html:14 -#: templates/web/default/email_sent.html:3 -msgid "your alert will not be activated" -msgstr "varselet ditt vil ikkje aktiverast" +#: templates/web/default/report/_support.html:6 +#, perl-format +msgid "%d supporter" +msgid_plural "%d supporters" +msgstr[0] "" +msgstr[1] "" -#: templates/web/default/email_sent.html:3 -#: templates/web/default/email_sent.html:6 -msgid "your problem will not be posted" -msgstr "vil problemet ditt ikkje publiserast" +#: perllib/Utils.pm:284 +#, perl-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "" +msgstr[1] "" -#: templates/web/default/email_sent.html:10 -#: templates/web/default/email_sent.html:3 -msgid "your update will not be posted" -msgstr "oppdateringa di vil ikkje publiserast" +#: templates/web/default/front/stats.html:29 +#, perl-format +msgid "<big>%s</big> update on reports" +msgid_plural "<big>%s</big> updates on reports" +msgstr[0] "<big>%s</big> rapportoppdatering" +msgstr[1] "<big>%s</big> rapportoppdateringar" #: templates/web/emptyhomes/report/new/councils_text_none.html:3 #, perl-format 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] "" -"Vi har enno ikkje detaljar for administrasjonen som dekkjer denne staden." -msgstr[1] "" -"Vi har enno ikkje detaljar for administrasjonane som dekkjer denne staden." +msgid_plural "We do not yet have details for the councils that cover this location." +msgstr[0] "Vi har enno ikkje detaljar for administrasjonen som dekkjer denne staden." +msgstr[1] "Vi har enno ikkje detaljar for administrasjonane som dekkjer denne staden." -#: templates/web/emptyhomes/front/stats.html:17 +#: perllib/Utils.pm:278 #, perl-format -msgid "<big>%s</big> report recently" -msgid_plural "<big>%s</big> reports recently" -msgstr[0] "<big>%s</big> rapport nyleg" -msgstr[1] "<big>%s</big> rapportar nyleg" +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "" +msgstr[1] "" -#: templates/web/emptyhomes/front/stats.html:12 +#: templates/web/default/front/stats.html:12 #, perl-format msgid "<big>%s</big> report in past week" msgid_plural "<big>%s</big> reports in past week" @@ -4185,90 +4668,30 @@ msgstr[1] "<big>%s</big> løyst siste månad" #: templates/web/default/report/new/councils_text_some.html:14 #, perl-format -msgid "" -"We do <strong>not</strong> yet have details for the other council that " -"covers this location." -msgid_plural "" -"We do <strong>not</strong> yet have details for the other councils that " -"cover this location." -msgstr[0] "" -"Vi har enno <strong>ikkje</strong> detaljane for den andre administrasjonen " -"som dekkjer denne staden." -msgstr[1] "" -"Vi har enno <strong>ikkje</strong> detaljane for dei andre administrasjonane " -"som dekkjer denne staden." +msgid "We do <strong>not</strong> yet have details for the other council that covers this location." +msgid_plural "We do <strong>not</strong> yet have details for the other councils that cover this location." +msgstr[0] "Vi har enno <strong>ikkje</strong> detaljane for den andre administrasjonen som dekkjer denne staden." +msgstr[1] "Vi har enno <strong>ikkje</strong> detaljane for dei andre administrasjonane som dekkjer denne staden." -#: templates/web/default/front/stats.html:29 +#: perllib/Utils.pm:280 #, perl-format -msgid "<big>%s</big> update on reports" -msgid_plural "<big>%s</big> updates on reports" -msgstr[0] "<big>%s</big> rapportoppdatering" -msgstr[1] "<big>%s</big> rapportoppdateringar" - -#, fuzzy -#~ msgid "FixMyStreet for Councils" -#~ msgstr "Finn ut om FiksGataMi for det offentlege" - -#, fuzzy -#~ msgid "Questions and Answers :: FixMyStreet for Councils" -#~ msgstr "Finn ut om FiksGataMi for det offentlege" - -#~ msgid "" -#~ "That spot does not appear to be covered by a council. If you have tried " -#~ "to report an issue past the shoreline, for example, please specify the " -#~ "closest point on land." -#~ msgstr "" -#~ "Punktet ser ikkje ut til å vera dekt av ein administrasjon. Viss du til " -#~ "dømes har freista å rapportera eit problem utanfor kysten, marker næraste " -#~ "punkt på land." - -#~ msgid "The requested URL was not found on this server." -#~ msgstr "Fann ikkje URL-ein du spurde etter på denne tenaren" - -#, fuzzy -#~ msgid "" -#~ "To find out what local alerts we have for you, please enter your GB\n" -#~ " postcode or street name and area" -#~ msgstr "" -#~ "Du finn lokale problem ved å søkja på postnummeret ditt, vegnamn eller " -#~ "stad:" - -#~ msgid "We do not currently cover Northern Ireland, I'm afraid." -#~ msgstr "Vi dekkjer diverre ikkje Nord-Irland." +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "" +msgstr[1] "" #, fuzzy -#~ msgid "<strong>Yes</strong>, I have a password" -#~ msgstr "<strong>Ja</strong>, eg har eit passord:" - -#~ msgid "<strong>Yes</strong>, I have a password:" -#~ msgstr "<strong>Ja</strong>, eg har eit passord:" - -#~ msgid "" -#~ "<a href=\"http://www.mysociety.org/\"><img id=\"logo\" width=\"133\" " -#~ "height=\"26\" src=\"/i/mysociety-dark.png\" alt=\"View mySociety.org" -#~ "\"><span id=\"logoie\"></span></a>" -#~ msgstr "" -#~ "<div id=\"logo\" align=\"center\"><a href=\"http://www.nuug.no/" -#~ "\">Foreininga NUUG</a></div>" - -#~ msgid "" -#~ "Are you from a council? Would you like better integration with " -#~ "FixMyStreet?" -#~ msgstr "" -#~ "Er du frå det offentlege? Kunne du tenkja deg betre integrasjon med " -#~ "FiksGataMi?" - -#~ msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a>" -#~ msgstr "Bygd av <a href=\"http://www.mysociety.org/\">mySociety</a>" +#~ msgid "The email field is required" +#~ msgstr "Denne informasjonen er påkravd" -#~ msgid "Hide stale reports" -#~ msgstr "Skjul utdaterte rapportar" +#~ msgid "End Year:" +#~ msgstr "Sluttår:" -#~ msgid "Include stale reports" -#~ msgstr "Inkluder utdaterte problem" +#~ msgid "End month:" +#~ msgstr "Sluttmånad:" -#~ msgid "Old fixed" -#~ msgstr "Eldre problem som er løyste" +#~ msgid "Start Year:" +#~ msgstr "Startår:" -#~ msgid "Old problems, state unknown" -#~ msgstr "Eldre problem med ukjend status" +#~ 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 new file mode 100644 index 000000000..6b1f6ad2d --- /dev/null +++ b/locale/pt_CV.UTF-8/LC_MESSAGES/FixMyStreet.po @@ -0,0 +1,4771 @@ +# 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: +# 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-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" +"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" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:602 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373 +msgid " and " +msgstr "e" + +#: templates/web/default/tokens/confirm_problem.html:14 +#: templates/web/default/tokens/confirm_problem.html:17 +msgid " and <strong>we will now send it to the council</strong>" +msgstr " e <strong>agora vamos enviá-lo ao Conselho</strong>" + +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_none.html:11 +#: templates/web/default/report/new/councils_text_none.html:14 +#: templates/web/default/report/new/councils_text_some.html:20 +#: templates/web/default/report/new/councils_text_some.html:23 +#: templates/web/default/report/new/councils_text_some.html:5 +#: templates/web/emptyhomes/report/new/councils_text_all.html:2 +msgid " or " +msgstr "ou" + +#: templates/web/default/admin/bodies.html:46 +msgid "%d addresses" +msgstr "%d endereços" + +#: 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:27 +#: templates/web/zurich/admin/index.html:6 +msgid "%d council contacts – %d confirmed, %d unconfirmed" +msgstr "%d contatos do Conselho; %d confirmada,%d não confirmados" + +#: templates/web/default/admin/edit-league.html:12 +msgid "%d edits by %s" +msgstr "%d edições por %s" + +#: templates/web/default/admin/index.html:24 +msgid "%d live updates" +msgstr "%d atualizações directas" + +#: templates/web/default/admin/index.html:26 +msgid "%d questionnaires sent – %d answered (%s%%)" +msgstr "%d questionários enviados - %d respondeu (%s%%)" + +#: templates/web/default/pagination.html:10 +msgid "%d to %d of %d" +msgstr "%d de %d de %d" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:22 +msgid "%s - Summary reports" +msgstr "%s - relatrios resumidos" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:651 +msgid "%s ref: %s" +msgstr "%s ref: %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:276 perllib/FixMyStreet/Cobrand/UK.pm:288 +msgid "%s ward, %s" +msgstr "%s ala, %s" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:538 +msgid "%s, reported at %s" +msgstr "%s, reportou em %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:303 perllib/FixMyStreet/Cobrand/UK.pm:315 +msgid "%s, within %s ward" +msgstr "%s, %s dentro da ala" + +#: templates/web/default/email_sent.html:29 +msgid "(Don't worry — we'll hang on to your alert while you're checking your email.)" +msgstr "" +"(Não se preocupe - nós vamos ficar com o alerta, enquanto você está verificando o seu\"\n" +"\"E-mail.)" + +#: templates/web/default/email_sent.html:25 +msgid "(Don't worry — we'll hang on to your problem report while you're checking your email.)" +msgstr "(Não se preocupe - nós vamos fixa o seu relatório de problema, enquanto você está verificando seu email)" + +#: templates/web/default/email_sent.html:27 +msgid "(Don't worry — we'll hang on to your update while you're checking your email.)" +msgstr "" +"(Não se preocupe - nós vamos ficar com a sua atualização enquanto você está verificando o seu\"\n" +"\"E-mail.) " + +#: templates/web/default/admin/report_blocks.html:11 +#: templates/web/default/admin/users.html:29 +msgid "(Email in abuse table)" +msgstr "(E-mail na tabela de abuso)" + +#: templates/web/default/alert/_list.html:20 +#: templates/web/fixmystreet/alert/_list.html:24 +msgid "(a default distance which covers roughly 200,000 people)" +msgstr "(A distância padrão, que abrange cerca de 50 mil pessoas)" + +#: templates/web/default/alert/_list.html:25 +#: templates/web/fixmystreet/alert/_list.html:28 +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 +#: templates/web/zurich/report/_item.html:21 +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 +#: templates/web/zurich/report/_item.html:19 +msgid "(fixed)" +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 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)" +msgstr "(Não reportar ao conselho)" + +#: templates/web/default/report/new/fill_in_details_form.html:217 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:140 +#: templates/web/zurich/report/new/fill_in_details_form.html:100 +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)" +msgstr "(remeter para ambos)" + +#: templates/web/default/report/new/fill_in_details_form.html:211 +msgid "(we never show your email address or phone number)" +msgstr "(é confidencial seu email e seu numero de telefone)" + +#: templates/web/default/report/update-form.html:158 +msgid "(we never show your email)" +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:379 +msgid "-- Pick a category --" +msgstr "-- Escolha uma categoria --" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:618 +#: perllib/FixMyStreet/DB/Result/Problem.pm:385 +msgid "-- Pick a property type --" +msgstr "-- Escolha um tipo de categoria --" + +#: templates/web/emptyhomes/front/stats.html:5 +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’s been fixed.</p>" +msgstr "" +"<p style=\\\"font-size:150%\\\"> Muito obrigado pelo preenchimento de nosso \"\n" +"\"Questionário;. Gratos por saber que foi corrigido </p>\"" + +#: templates/web/fiksgatami/questionnaire/completed-open.html:1 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try <a href=\"http://www.norge.no/styresmakter/\">writing\n" +"direct to your councillor(s)</a> or, if it’s a problem that could be\n" +"fixed by local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "" +"<p Style=\\\"font-size:150%\\\"> Lamentamos ouvir isso. Temos dois \\ n\"\n" +"\"Sugestão: por que não tentar <a href=\\\"http://www.norge.no/styresmakter/\\\"> escrita \\ n\"\n" +"\"Direto para o seu conselheiro (s) </a> ou, se É um problema que pode ser \\ n\"\n" +"\"Fixado por pessoas locais que trabalham juntos, por que não \\ n\"\n" +"\"<a Href=\\\"http://www.pledgebank.com/new\\\"> fazer e divulgar um compromisso </a> \\ N\"\n" +"\"</P>\"" + +#: templates/web/fixmystreet/questionnaire/completed-open.html:6 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try <a href=\"http://www.writetothem.com/\">writing direct\n" +"to your councillor(s)</a> or, if it’s a problem that could be fixed by\n" +"local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "" +"<p style=\"font-size:150%\"> Lamentamos ouvir isso. Temos duas ⏎\n" +"sugestões: por que não tentar <a href=\"http://www.writetothem.com/\"> escrita direta ⏎\n" +"para o seu conselheiro (s) </a>, ou, se o problema pode ser solucionado e corrigido pela ⏎\n" +"população local, a trabalhar em conjunto, porque não ⏎\n" +"<a href=\"http://www.pledgebank.com/new\"> fazer e divulgar um compromisso </a> ⏎\n" +"</P>" + +#: templates/web/default/questionnaire/completed-open.html:6 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try writing to your local representative or, if it’s\n" +"a problem that could be fixed by local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "" +"<p style=\"font-size:150%\"> Lamentamos ouvir isso. Temos duas ⏎\n" +"sugestão: por que não tentar escrever para seu representante local ou, se for ⏎\n" +"um problema que pode ser corrigido por pessoas locais que trabalham juntos, por que não ⏎\n" +"<a href=\"http://www.pledgebank.com/new\"> fazer e divulgar um compromisso </a> ⏎\n" +"</P>" + +#: templates/web/default/questionnaire/index.html:35 +msgid "" +"<p>Getting empty homes back into use can be difficult, but by now a good council\n" +"will have made a lot of progress and reported what they have done on the\n" +"website. Even so properties can remain empty for many months if the owner is\n" +"unwilling or the property is in very poor repair. If nothing has happened or\n" +"you are not satisfied with the progress the council is making, now is the right\n" +"time to say so. We think it’s a good idea to contact some other people who\n" +"may be able to help or put pressure on the council For advice on how to do\n" +"this and other useful information please go to <a\n" +"href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +msgstr "" +"<p> Obtendo casas vazias novamente em uso pode ser difícil, mas agora por um bom conselho ⏎\n" +"terá feito um grande progresso e relatou o que eles fizeram no ⏎\n" +"website. Mesmo assim propriedades podem permanecer vazia por muitos meses, se o proprietário é ⏎\n" +"querem ou o imóvel está em muito mau estado de conservação. Se nada tivesse acontecido ou ⏎\n" +"você não está satisfeito com o progresso que o conselho está fazendo, agora é seu o direito ⏎\n" +"de relatar isso. Achamos que é uma boa ideia em contato com outras pessoas que ⏎\n" +"podem ser capazes de ajudar ou colocar pressão sobre o Conselho para conselhos sobre como fazer ⏎\n" +"esta e outras informações úteis acesse <a ⏎\n" + +#: templates/web/default/questionnaire/index.html:26 +msgid "" +"<p>Getting empty homes back into use can be difficult. You shouldn’t expect\n" +"the property to be back into use yet. But a good council will have started work\n" +"and should have reported what they have done on the website. If you are not\n" +"satisfied with progress or information from the council, now is the right time\n" +"to say. You may also want to try contacting some other people who may be able\n" +"to help. For advice on how to do this and other useful information please\n" +"go to <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +msgstr "" +"<p> Obtendo casas vazias novamente em uso pode ser difícil. Você não deve esperar\n" +"\n" +"a propriedade de estar de volta em uso ainda. Mas um bom conselho terá começado o trabalho\n" +"\n" +"e deveria ter relatado o que eles fizeram no site. Se você não estiver\n" +"\n" +"satisfeito com o progresso ou informações do conselho, agora é o momento certo\n" +"\n" +"a dizer. Você também pode tentar entrar em contato com outras pessoas que podem ser capazes\n" +"\n" +"para ajudar. Para obter conselhos sobre como fazer isso e outras informações úteis, por favor\n" +"\n" +"ir para <a\n" +"href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +"\n" + +#: templates/web/default/questionnaire/completed.html:9 +msgid "" +"<p>Thank you very much for filling in our questionnaire; if you\n" +"get some more information about the status of your problem, please come back to the\n" +"site and leave an update.</p>" +msgstr "" +"<p> Muito obrigado para preencher o nosso questionário, se você ⏎\n" +"obter mais algumas informações sobre o status do seu problema, por favor, volte para o ⏎\n" +"local e deixar uma atualização. </p>" + +#: templates/web/default/around/_report_banner.html:3 +#: templates/web/default/around/_report_banner.html:5 +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:22 +#: templates/web/zurich/admin/index.html:4 +msgid "<strong>%d</strong> live problems" +msgstr "<strong>%d</strong> problemas ao vivo" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:183 +msgid "<strong>No</strong> Let me confirm my report by email" +msgstr "<strong> Não </strong> Deixe-me confirmar o meu relatório por e-mail" + +#: templates/web/fixmystreet/report/update-form.html:110 +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:51 +msgid "<strong>No</strong> let me sign in by email" +msgstr "<strong> Não </strong>, deixe-me entrar por e-mail" + +#: templates/web/default/auth/general.html:55 +msgid "<strong>No</strong>, I do not, let me sign in by email:" +msgstr "<strong> Não </strong>, eu não, deixe-me entrar por e-mail:" + +#: templates/web/default/report/new/fill_in_details_form.html:162 +msgid "<strong>No</strong>, let me confirm my report by email:" +msgstr "<strong>No</strong>, let me confirm my report by email:" + +#: templates/web/default/report/update-form.html:117 +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/default/auth/general.html:37 +#: templates/web/default/report/new/fill_in_details_form.html:140 +#: templates/web/default/report/update-form.html:95 +#: templates/web/fixmystreet/auth/general.html:36 +#: templates/web/fixmystreet/auth/general.html:38 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:159 +#: templates/web/fixmystreet/report/update-form.html:87 +msgid "<strong>Yes</strong> I have a password" +msgstr "<strong> Sim </strong> Eu tenho password" + +#: templates/web/default/static/about-en-gb.html:1 +#: templates/web/default/static/about-en-gb.html:3 +#: templates/web/emptyhomes/header.html:34 +#: templates/web/emptyhomes/static/about-cy.html:1 +#: templates/web/emptyhomes/static/about-cy.html:3 +#: templates/web/emptyhomes/static/about-en-gb.html:1 +#: templates/web/emptyhomes/static/about-en-gb.html:3 +msgid "About us" +msgstr "Acerca de nós" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:81 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:39 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 +msgid "Action Scheduled" +msgstr "Ação Programada" + +#: 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:88 +#: templates/web/zurich/admin/body.html:30 +msgid "Add new category" +msgstr "Adicionar nova categoria" + +#: templates/web/default/admin/users.html:45 +msgid "Add user" +msgstr "Adicionar user" + +#: templates/web/default/my/my.html:56 templates/web/fixmystreet/my/my.html:60 +msgid "Added %s" +msgstr "Adicionado %s" + +#: templates/web/default/auth/change_password.html:29 +msgid "Again:" +msgstr "Novamente" + +#: templates/web/default/admin/timeline.html:35 +msgid "Alert %d created for %s, type %s, parameters %s / %s" +msgstr "Alerta %d criado por %s, tipo %s, os parâmetros %s / %s" + +#: templates/web/default/admin/timeline.html:37 +msgid "Alert %d disabled (created %s)" +msgstr "Alerta %d desativada (criado %s)" + +#: templates/web/bromley/report/display.html:209 +#: templates/web/default/report/update-form.html:163 +#: templates/web/fixmystreet/report/update-form.html:148 +msgid "Alert me to future updates" +msgstr "Avise-me de atualizações futuras" + +#: templates/web/default/reports/index.html:3 +#: templates/web/fixmybarangay/reports/index.html:3 +#: templates/web/zurich/admin/stats.html:5 +#: templates/web/zurich/reports/index.html:15 +msgid "All Reports" +msgstr "Todos os Relatórios" + +#: 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 "Todos os relatórios" + +#: templates/web/default/admin/stats.html:5 +#: templates/web/zurich/admin/stats.html:8 +msgid "All reports between %s and %s" +msgstr "Todos os relatórios entre %s e %s" + +#: templates/web/default/report/new/councils_text_some.html:2 +msgid "All the information you provide here will be sent to" +msgstr "Todas as informações que você fornecer aqui serão enviados para fixmindelo@gmail.com" + +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:13 +msgid "All the information you provide here will be sent to <strong>%s</strong> or <strong>Roads Service</strong>." +msgstr "Todas as informações que você fornecer aqui serão enviados para <strong>%s</strong> ou <strong> Entradas de Serviço </strong>." + +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_all.html:6 +msgid "All the information you provide here will be sent to <strong>%s</strong> or a relevant local body such as <strong>TfL</strong>, via the London Report-It system." +msgstr "Todas as informações que você fornecer aqui serão enviados para <strong>%s</strong> ou um corpo local relevantes, tais como <strong> TfL </strong>, através do Relatório-It sistema Mindelo." + +#: templates/web/bromley/report/new/fill_in_details_form.html:4 +#: templates/web/bromley/report/new/fill_in_details_form.html:6 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:20 +#: templates/web/default/report/new/fill_in_details_form.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:13 +#: templates/web/emptyhomes/report/new/councils_text_all.html:2 +#: templates/web/emptyhomes/report/new/councils_text_all.html:4 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:13 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:8 +msgid "All the information you provide here will be sent to <strong>%s</strong>." +msgstr "Todas as informações que você fornecer aqui serão enviados para <strong>%s</strong>" + +#: templates/web/default/questionnaire/index.html:60 +#: templates/web/fixmystreet/questionnaire/index.html:54 +msgid "An update marked this problem as fixed." +msgstr "Uma atualização marcada, problema esta resolvido" + +#: templates/web/default/admin/list_updates.html:32 +#: templates/web/default/admin/problem_row.html:20 +msgid "Anonymous" +msgstr "Anonimo" + +#: templates/web/default/admin/report_edit.html:62 +#: templates/web/default/admin/update_edit.html:23 +msgid "Anonymous:" +msgstr "Anonimo:" + +#: templates/web/default/footer.html:26 +msgid "Are you a <strong>developer</strong>? Would you like to contribute to FixMyStreet?" +msgstr "Você é um desenvolvedor <strong> </strong> Gostaria de contribuir para FixMyStreet?" + +#: templates/web/fixmystreet/footer.html:16 +#: templates/web/stevenage/footer.html:17 +msgid "Are you a developer?" +msgstr "Você é um desenvolvedor?" + +#: templates/web/fixmystreet/footer.html:20 +#: templates/web/stevenage/footer.html:21 +msgid "Are you from a council?" +msgstr "Você pertence á ao Conselho?" + +#: 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: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:153 +msgid "Assign to external body:" +msgstr "Atribuir ao órgão externo:" + +#: 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:141 +#: templates/web/zurich/report/updates.html:11 +msgid "Assigned to %s" +msgstr "Designado para %s" + +#: templates/web/default/open311/index.html:86 +msgid "At most %d requests are returned in each query. The returned requests are ordered by requested_datetime, so to get all requests, do several searches with rolling start_date and end_date." +msgstr "No máximo %d pedidos são retornados em cada consulta. Os pedidos retornados são ordenados por requested_datetime, de modo a obter todos os pedidos, fazer várias pesquisas com start_date rolando e end_date." + +#: templates/web/default/open311/index.html:78 +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:334 +#: templates/web/zurich/report/_item.html:11 +msgid "Awaiting moderation" +msgstr "Aguardando moderação" + +#: templates/web/default/js/translation_strings.html:32 +#: templates/web/oxfordshire/js/translation_strings.html:26 +msgid "Back" +msgstr "Voltar" + +#: templates/web/default/admin/report_blocks.html:11 +msgid "Ban email address" +msgstr "Ban endereço de e-mail" + +#: templates/web/fixmybarangay/report/new/notes.html:7 +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: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:17 +#: templates/web/default/admin/reports.html:14 +#: templates/web/default/admin/users.html:17 +msgid "Body" +msgstr "Corpo" + +#: templates/web/default/admin/user-form.html:32 +msgid "Body:" +msgstr "Corpo:" + +#: templates/web/fiksgatami/footer.html:16 +#: templates/web/fiksgatami/nn/footer.html:16 +msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained by <a href=\"http://www.nuug.no/\">NUUG</a>" +msgstr "Construído por <a href=\"http://www.mysociety.org/\"> mySociety </a> e mantido por <a href=\"http://www.nuug.no/\"> NUUG </a>" + +#: templates/web/default/admin/stats.html:80 +msgid "By Date" +msgstr "Por data" + +#: templates/web/fixmystreet/around/_report_banner.html:10 +#: templates/web/fixmystreet/around/_report_banner.html:8 +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: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 "Categoria" + +#: 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: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 "Categoria:" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366 +msgid "Category: %s" +msgstr "Categoria: %s" + +#: templates/web/default/auth/change_password.html:1 +#: templates/web/default/auth/change_password.html:3 +#: templates/web/default/auth/change_password.html:33 +msgid "Change Password" +msgstr "Mudar password" + +#: 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 " + +#: 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 +#: 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 "Fechado" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:744 +msgid "Closed by council" +msgstr "Fechado pelo Conselho" + +#: templates/web/default/my/my.html:32 templates/web/fixmystreet/my/my.html:36 +msgid "Closed reports" +msgstr "Reports Fechados" + +#: templates/web/default/admin/problem_row.html:38 +msgid "Closed:" +msgstr "Fechado" + +#: templates/web/default/around/tabbed_lists.html:10 +#: templates/web/default/around/tabbed_lists.html:12 +msgid "Closest nearby problems <small>(within %skm)</small>" +msgstr "Problemas mais proximos <small> (within %skm) </small>" + +#: 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 "Co-ordenadas:" + +#: templates/web/default/admin/list_updates.html:10 +msgid "Cobrand" +msgstr "Cobrand" + +#: templates/web/default/admin/report_edit.html:75 +#: templates/web/default/admin/update_edit.html:50 +msgid "Cobrand data:" +msgstr "Cobrand data:" + +#: templates/web/default/admin/report_edit.html:74 +#: templates/web/default/admin/update_edit.html:49 +msgid "Cobrand:" +msgstr "Cobrand:" + +#: 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" + +#: templates/web/default/admin/body_edit.html:47 +msgid "Configure Endpoint" +msgstr "Configurar Endpoint" + +#: templates/web/default/admin/body.html:62 +msgid "Confirm" +msgstr "Confirmar" + +#: templates/web/default/auth/token.html:1 +msgid "Confirm account" +msgstr "Confirmar conta" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:177 +#: templates/web/fixmystreet/report/update-form.html:105 +msgid "Confirm by email below, providing a new password at that point. When you confirm, your password will be updated." +msgstr "Confirme por e-mail abaixo, proporcionando uma nova senha nesse ponto. Quando você confirmar, sua senha será atualizada." + +#: templates/web/default/questionnaire/creator_fixed.html:1 +#: templates/web/default/tokens/confirm_problem.html:1 +#: templates/web/default/tokens/confirm_problem.html:3 +#: templates/web/default/tokens/confirm_update.html:1 +#: templates/web/default/tokens/confirm_update.html:3 +#: templates/web/emptyhomes/tokens/confirm_problem.html:1 +#: templates/web/emptyhomes/tokens/confirm_problem.html:3 +#: templates/web/southampton/tokens/confirm_problem.html:1 +#: templates/web/southampton/tokens/confirm_problem.html:3 +#: templates/web/zurich/tokens/confirm_problem.html:1 +#: templates/web/zurich/tokens/confirm_problem.html:3 +msgid "Confirmation" +msgstr "Confirmação" + +#: 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 "Confirmado" + +#: templates/web/default/admin/stats.html:5 +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:" +msgstr "Confirmado:" + +#: templates/web/fiksgatami/footer.html:10 +#: templates/web/fiksgatami/nn/footer.html:10 +msgid "Contact" +msgstr "Contacto" + +#: templates/web/default/footer.html:24 +msgid "Contact FixMyStreet" +msgstr "Contact FixMyStreetMindelo" + +#: templates/web/bromley/contact/submit.html:1 +#: templates/web/default/contact/index.html:1 +#: templates/web/default/contact/index.html:2 +#: templates/web/default/contact/submit.html:1 +#: templates/web/fixmystreet/contact/index.html:1 +#: templates/web/fixmystreet/contact/index.html:2 +msgid "Contact Us" +msgstr "Fale connosco" + +#: templates/web/bromley/contact/submit.html:3 +#: templates/web/default/contact/index.html:6 +#: templates/web/default/contact/submit.html:3 +#: templates/web/fixmystreet/contact/index.html:19 +msgid "Contact the team" +msgstr "Fale com a equipe" + +#: 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: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:9 +msgid "Council" +msgstr "Conselho" + +#: templates/web/default/admin/body.html:1 +#: templates/web/default/admin/body_edit.html:1 +#: templates/web/zurich/admin/body.html:1 +msgid "Council contacts for %s" +msgstr "Contatos do Conselho para %s" + +#: templates/web/default/admin/stats.html:84 +msgid "Council:" +msgstr "Conselho:" + +#: templates/web/default/admin/stats.html:12 +#: templates/web/default/admin/stats.html:32 +#: templates/web/zurich/admin/stats.html:45 +#: templates/web/zurich/admin/stats.html:50 +msgid "Count" +msgstr "Conta" + +#: templates/web/default/email_sent.html:1 +msgid "Create a report" +msgstr "Criar um report" + +#: 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/problem_row.html:34 +#: 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:50 +#: templates/web/zurich/admin/report_edit.html:64 +#: templates/web/zurich/admin/update_edit.html:29 +msgid "Created:" +msgstr "Criado:" + +#: templates/web/default/admin/stats.html:31 +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" +msgstr "Painel de instrumentos" + +#: templates/web/zurich/admin/stats.html:35 +msgid "Dealt with by subdivision within 5 working days" +msgstr "Tratadas pelas subdivisões dentro de 5 dias úteis" + +#: 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 "Excluidos" + +#: templates/web/zurich/admin/index-dm.html:22 +#: templates/web/zurich/admin/index-sdm.html:20 +#: templates/web/zurich/admin/reports.html:12 +msgid "Description" +msgstr "Descripçaoi" + +#: 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 "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: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:57 +msgid "Devolved" +msgstr "Delegada" + +#: templates/web/default/admin/edit-league.html:8 +msgid "Diligency prize league table" +msgstr "Diligency prêmio tabela classificativa" + +#: templates/web/fixmystreet/auth/general.html:30 +msgid "Do you have a FixMyBarangay password?" +msgstr "Você tem uma senha FixMyStreetMindelo?" + +#: templates/web/default/auth/general.html:32 +#: templates/web/fixmystreet/auth/general.html:32 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:155 +#: templates/web/fixmystreet/report/update-form.html:84 +msgid "Do you have a FixMyStreet password?" +msgstr "Você tem uma senha FixMyStreetMindelo?" + +#: templates/web/default/questionnaire/index.html:70 +#: templates/web/fixmystreet/questionnaire/index.html:64 +msgid "Don’t know" +msgstr "Não sei" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:82 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:47 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 +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:31 +#: templates/web/zurich/admin/problem_row.html:42 +msgid "Edit" +msgstr "Editar" + +#: templates/web/default/admin/body.html:189 +#: templates/web/zurich/admin/body.html:64 +msgid "Edit body details" +msgstr "Editar os detalhes do corpo" + +#: templates/web/default/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:4 +#: templates/web/zurich/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit.html:5 +msgid "Editing problem %d" +msgstr "Editando problema %d" + +#: templates/web/default/admin/update_edit.html:1 +#: templates/web/zurich/admin/update_edit.html:1 +msgid "Editing update %d" +msgstr "Editando uma actualizaçao %d" + +#: templates/web/default/admin/user_edit.html:1 +msgid "Editing user %d" +msgstr "Edição de usuário %d" + +#: templates/web/default/admin/body_edit.html:86 +msgid "Editor" +msgstr "Editar" + +#: 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 "Email" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1286 +msgid "Email added to abuse list" +msgstr "Email adicionado a lista de abusos" + +#: 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" + +#: templates/web/default/around/_updates.html:5 +msgid "Email me new local problems" +msgstr "Enviar novos problemas locais" + +#: templates/web/default/report/display.html:34 +msgid "Email me updates" +msgstr "Envie-me atualizações" + +#: 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 "Email:" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318 +msgid "Email: %s" +msgstr "Email: %s" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:620 +msgid "Empty flat or maisonette" +msgstr "Apartamento vazio ou duplex" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:619 +msgid "Empty house or bungalow" +msgstr "Casa vazia ou bungalow" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:622 +msgid "Empty office or other commercial" +msgstr "Escritório vazio ou outro comercial" + +#: templates/web/emptyhomes/report/new/form_heading.html:1 +msgid "Empty property details form" +msgstr "Propriedade sem detalhes " + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:623 +msgid "Empty pub or bar" +msgstr "Pub ou bar vazio" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:624 +msgid "Empty public building - school, hospital, etc." +msgstr "Edifício público vazio - escola, hospital, etc" + +#: 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/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:70 +#, fuzzy +msgid "End Date:" +msgstr "Fim do dia:" + +#: templates/web/default/admin/body-form.html:126 +msgid "Endpoint" +msgstr "Endpoint" + +#: perllib/FixMyStreet/Cobrand/Zurich.pm:71 +msgid "Enter a Zürich street name" +msgstr "Digite um nome de uma rua de Mindelo" + +#: perllib/FixMyStreet/Cobrand/UK.pm:18 +msgid "Enter a nearby UK postcode, or street name and area" +msgstr "Inserir um código postal de Mindelo nas proximidades da area, zona, rua ou local" + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:25 +msgid "Enter a nearby postcode, or street name and area" +msgstr "Inserir um código postal perto, ou nome da rua, zona ou local" + +#: templates/web/default/around/postcode_form.html:1 +#: templates/web/default/around/postcode_form.html:2 +#: templates/web/fixmystreet/around/postcode_form.html:10 +#: templates/web/fixmystreet/around/postcode_form.html:11 +#: templates/web/seesomething/around/postcode_form.html:3 +#: templates/web/seesomething/around/postcode_form.html:4 +msgid "Enter a nearby street name and area" +msgstr "Digite um nome de rua nas proximidades e área" + +#: templates/web/default/auth/general.html:64 +#: templates/web/default/report/new/fill_in_details_form.html:169 +#: templates/web/default/report/update-form.html:124 +msgid "Enter a new password:" +msgstr "Digite uma nova senha:" + +#: 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 "Digite uma nova password" + +#: templates/web/default/index-steps.html:26 +msgid "Enter details of the problem" +msgstr "Digite os detalhes do problema" + +#: templates/web/default/auth/token.html:5 +#: templates/web/default/errors/generic.html:1 +#: templates/web/default/errors/generic.html:3 +#: templates/web/default/tokens/abuse.html:1 +#: templates/web/default/tokens/abuse.html:3 +#: templates/web/default/tokens/error.html:1 +#: templates/web/default/tokens/error.html:3 +msgid "Error" +msgstr "Erro" + +#: templates/web/default/admin/body.html:11 +#: templates/web/default/admin/body_edit.html:18 +msgid "Example postcode %s" +msgstr "Exemplo PostCode %s" + +#: templates/web/default/open311/index.html:96 +msgid "Examples:" +msgstr "Exemplos:" + +#: templates/web/default/admin/report_edit.html:76 +msgid "Extra data:" +msgstr "Dados adicionais:" + +#: templates/web/bromley/contact/submit.html:14 +#: templates/web/default/contact/submit.html:15 +msgid "Failed to send message. Please try again, or <a href=\"mailto:%s\">email us</a>." +msgstr "Falha ao enviar a mensagem. Por favor, tente novamente, ou <a href=\"mailto:%s\"> email nós </a>." + +#: templates/web/zurich/admin/index-dm.html:33 +#: templates/web/zurich/admin/index-sdm.html:30 +msgid "Filter report list" +msgstr "Filtrar relatorio" + +#: templates/web/emptyhomes/front/stats.html:6 +msgid "Find latest local and national news" +msgstr "Encontre as últimas notícias locais e nacionais" + +#: templates/web/bromley/report/display.html:191 +#: templates/web/bromley/report/new/fill_in_details_form.html:113 +#: templates/web/bromley/report/new/fill_in_details_form.html:160 +msgid "First Name" +msgstr "Primeiro Nome" + +#: templates/web/default/questionnaire/index.html:79 +#: templates/web/fixmystreet/questionnaire/index.html:73 +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" +msgstr "Fix <span id=\"my\"> Minha </span> Rua" + +#: templates/web/default/header.html:24 +msgid "FixMyStreet" +msgstr "FixMyStreetMindelo" + +#: templates/web/default/admin/header.html:10 +msgid "FixMyStreet admin:" +msgstr "FixMyStreet admin:" + +#: templates/web/default/alert/index.html:11 +msgid "" +"FixMyStreet has a variety of RSS feeds and email alerts for local problems, including\n" +"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" +"dentro de uma certa distância de um local em particular." + +#: templates/web/default/alert/_list.html:71 +#: templates/web/fixmystreet/alert/_list.html:73 +msgid "" +"FixMyStreet sends different categories of problem\n" +"to the appropriate council, so problems within the boundary of a particular council\n" +"might not match the problems sent to that council. For example, a graffiti report\n" +"will be sent to the district council, so will appear in both of the district\n" +"council’s alerts, but will only appear in the \"Within the boundary\" alert\n" +"for the county council." +msgstr "" +"FixMyStreetMindelo envia diferentes categorias de problema ⏎\n" +"para o conselho apropriado, assim que os problemas dentro do limite de um conselho especial ⏎\n" +"pode não coincidir com os problemas enviados para que o conselho. Por exemplo, um relatório de graffiti ⏎\n" +"será enviado ao conselho distrital, então vai aparecer em ambos do distrito ⏎\n" +"alertas do Conselho, mas só vai aparecer o \"No limite\" alerta ⏎\n" +"para o conselho do condado." + +#: 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 "Corrigido" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:43 +msgid "Fixed - Council" +msgstr "Corrigido - Conselho" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:42 +msgid "Fixed - User" +msgstr "Corrigido - Usuario" + +#: templates/web/default/my/my.html:27 templates/web/fixmystreet/my/my.html:31 +msgid "Fixed reports" +msgstr "Reports Corrigidos" + +#: templates/web/default/admin/problem_row.html:37 +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: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:51 +msgid "Flagged:" +msgstr "Marcado:" + +#: templates/web/default/reports/_ward-list.html:3 +#: templates/web/fixmystreet/reports/_ward-list.html:4 +msgid "Follow a ward link to view only reports within that ward." +msgstr "Siga um link ala para ver apenas os relatórios dentro do ala." + +#: templates/web/default/admin/report_edit.html:30 +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?" +msgstr "Esqueceu sua senha?" + +#: templates/web/default/faq/faq-en-gb.html:1 +#: templates/web/emptyhomes/faq/faq-cy.html:1 +#: templates/web/emptyhomes/faq/faq-en-gb.html:1 +#: templates/web/fiksgatami/faq/faq-nb.html:1 +#: templates/web/fiksgatami/nn/faq/faq-nn.html:1 +#: templates/web/fixmindelo/faq/faq-pt-cv.html:1 +#: templates/web/fixmybarangay/faq/faq-en-gb.html:1 +#: templates/web/fixmystreet/faq/faq-en-gb.html:1 +#: templates/web/fixmystreet/static/privacy.html:1 +#: templates/web/oxfordshire/faq/faq-en-gb.html:1 +msgid "Frequently Asked Questions" +msgstr "Perguntas mais frequentes" + +#: templates/web/default/open311/index.html:138 +msgid "GeoRSS on Google Maps" +msgstr "GeoRSS no Google Maps" + +#: templates/web/bromley/report/display.html:30 +#: templates/web/fixmystreet/around/_updates.html:3 +#: templates/web/fixmystreet/report/display.html:38 +msgid "Get updates" +msgstr "Receba as atualizações" + +#: templates/web/fixmystreet/reports/_rss.html:3 +#: templates/web/fixmystreet/reports/_rss.html:9 +msgid "Get updates of %s problems" +msgstr "Receba as atualizações de problemas fix de %s" + +#: templates/web/fixmystreet/reports/_rss.html:11 +#: templates/web/fixmystreet/reports/_rss.html:3 +msgid "Get updates of problems in this %s" +msgstr "Receba as atualizações de problemas neste %s" + +#: templates/web/default/alert/_list.html:83 +#: templates/web/fixmybarangay/alert/_list.html:28 +#: templates/web/fixmystreet/alert/_list.html:82 +msgid "Give me an RSS feed" +msgstr "Dê-me um feed RSS" + +#: templates/web/default/alert/index.html:34 +#: templates/web/default/around/postcode_form.html:8 +#: templates/web/fixmystreet/around/postcode_form.html:21 +#: templates/web/seesomething/around/postcode_form.html:10 +#: templates/web/zurich/admin/stats.html:26 +msgid "Go" +msgstr " Ir" + +#: templates/web/default/admin/report_edit.html:77 +msgid "Going to send questionnaire?" +msgstr "Vai enviar questionário?" + +#: 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" + +#: templates/web/default/reports/index.html:8 +msgid "Greyed-out lines are councils that no longer exist." +msgstr "Cor Cinzenta sao linhas dos conselhos que não existem mais" + +#: templates/web/default/questionnaire/index.html:61 +#: templates/web/fixmystreet/questionnaire/index.html:55 +msgid "Has this problem been fixed?" +msgstr "Este problema já foi fixado, relatado?" + +#: templates/web/default/questionnaire/index.html:74 +#: templates/web/fixmystreet/questionnaire/index.html:68 +msgid "Have you ever reported a problem to a council before, or is this your first time?" +msgstr "Alguma vez voce ja relatou algum problema ao Conselho, ou é a sua primeira vez?" + +#: 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 "Ajuda" + +#: templates/web/default/alert/_list.html:6 +#: templates/web/fixmystreet/alert/_list.html:8 +msgid "Here are the types of local problem alerts for ‘%s’." +msgstr "Aqui estão os tipos de alertas de problemas locais para relatar fixed; %s';." + +#: templates/web/barnet/header.html:70 templates/web/bromley/header.html:64 +#: templates/web/bromley/header.html:99 +#: templates/web/fixmybarangay/header.html:66 +#: templates/web/fixmystreet/header.html:50 +#: templates/web/oxfordshire/header.html:111 +#: templates/web/oxfordshire/header.html:47 +#: templates/web/stevenage/header.html:97 templates/web/zurich/footer.html:11 +msgid "Hi %s" +msgstr "Oi %s" + +#: 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 "Esconder" + +#: templates/web/default/around/display_location.html:67 +msgid "Hide old" +msgstr "Ocultar" + +#: templates/web/default/around/display_location.html:62 +msgid "Hide pins" +msgstr "Ocultar pins" + +#: templates/web/default/admin/body_edit.html:79 +msgid "History" +msgstr "History pins" + +#: templates/web/default/js/translation_strings.html:31 +#: templates/web/oxfordshire/js/translation_strings.html:25 +msgid "Home" +msgstr "Home" + +#: templates/web/default/index-steps.html:1 +msgid "How to report a problem" +msgstr "Como reportar um problema" + +#: 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:733 +msgid "I am afraid you cannot confirm unconfirmed reports." +msgstr "Tenho receio de nao puder confirmar os seus relatorios" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:89 +msgid "I'm afraid we couldn't locate your problem in the database.\n" +msgstr "Receio que não foi possível localizar o seu problema no banco de dados.\n" + +#: perllib/FixMyStreet/App/Controller/Tokens.pm:44 +msgid "I'm afraid we couldn't validate that token, as the report was made too long ago." +msgstr "Receio que não pôde validar esse token, como o relatório foi feito há muito tempo." + +#: perllib/FixMyStreet/App/Controller/Tokens.pm:259 +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: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 "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" + +#: templates/web/default/email_sent.html:15 +msgid "If you do not, your problem will not be posted." +msgstr "Se você não fizer isso, o problema não será publicado" + +#: templates/web/default/email_sent.html:17 +msgid "If you do not, your update will not be posted." +msgstr "se você não fizer isso, a sua atualização não será publicada" + +#: templates/web/default/report/new/councils_text_none.html:8 +#: templates/web/default/report/new/councils_text_none.html:9 +msgid "If you submit a problem here the subject and details of the problem will be public, but the problem will <strong>not</strong> be reported to the council." +msgstr "" +"Se você enviar um problema sobre qualquer assunto e detalhes, será\"\n" +"\"Público, mas o problema nao <strong> vai </strong> ser comunicados ao\"\n" +"\"Conselho\"." + +#: templates/web/emptyhomes/report/new/councils_text_none.html:9 +msgid "If you submit a report here it will be left on the site, but not reported to the council – please still leave your report, so that we can show to the council the activity in their area." +msgstr "" +"Se você enviar um relatório no fixmystreet mindelo será deixado no local, mas se não informou ao\"\n" +"\"O Conselho - por favor, postar seu relatório, para que possamos mostrar aos\"\n" +"\"O Conselho da atividade em sua área.\"" + +#: templates/web/default/auth/token.html:22 +#: templates/web/default/email_sent.html:9 +msgid "If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way." +msgstr "" +"Se você usar o e-mail baseado na web ou filtros têm\" junk mail \", você pode querer\"\n" +"\"Verifique suas pastas de correio em massa / spam: às vezes, nossas mensagens são marcadas que\"\n" +"\"Caminho\"" + +#: templates/web/default/questionnaire/index.html:86 +#: templates/web/fixmystreet/questionnaire/index.html:77 +msgid "" +"If you wish to leave a public update on the problem, please enter it here\n" +"(please note it will not be sent to the council). For example, what was\n" +"your experience of getting the problem fixed?" +msgstr "" +"Se você quiser deixar uma atualização pública sobre o problema, por favor insira-o aqui \\ n\"\n" +"(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" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:100 +msgid "Illegal feed selection" +msgstr "Seleção de feed ilegal" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:82 +#: 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:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 +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: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 "Em andamento" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:38 +msgid "Incident Category" +msgstr "Categoria incidente" + +#: templates/web/zurich/admin/report_edit.html:163 +msgid "Include reporter personal details" +msgstr "Incluir reports detalhes perssoais" + +#: templates/web/default/admin/stats.html:76 +msgid "Include unconfirmed reports" +msgstr "Incluir dados nao confirmados" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:354 +msgid "Incorrect has_photo value \"%s\"" +msgstr "Foto_has valor incorreto \"%s\"" + +#: templates/web/zurich/admin/list_updates.html:3 +#, fuzzy +msgid "Internal notes" +msgstr "Notas internas" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:48 +msgid "Internal referral" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:339 +msgid "Invalid agency_responsible value %s" +msgstr "Agencia_responsavel valor %s inválido" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1096 +msgid "Invalid end date" +msgstr "Invalido data final" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:432 +msgid "Invalid format %s specified." +msgstr "Formato inválido%s especificado." + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1092 +msgid "Invalid start date" +msgstr "Data de inicio invalida" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:81 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:37 +#: templates/web/default/dashboard/index.html:142 +#: templates/web/default/dashboard/index.html:143 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 +msgid "Investigating" +msgstr "Investigando" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:12 +#: templates/web/emptyhomes/tokens/confirm_problem.html:14 +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’t mean the council isn’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 "É interessante notar, porém, que o processo pode ser lento às vezes, especialmente se o imóvel está em muito mau estado de conservação ou o proprietário não está disposto a agir. Na maioria dos casos pode demorar seis meses ou mais antes que você pode esperar para ver nada mudam e às vezes pode haver barreiras consideráveis para a propriedade que está sendo trazido de volta ao uso. Isso não significa que o município não está fazendo nada. Nós encorajamos conselhos para atualizar o site para que você possa ver o que está acontecendo. Pode ser um processo longo, mas você relatar suas preocupações sobre este imóvel para o município é um primeiro passo importante." + +#: 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 "Manter-me logado neste computador" + +#: templates/web/bromley/report/display.html:197 +#: templates/web/bromley/report/new/fill_in_details_form.html:119 +#: templates/web/bromley/report/new/fill_in_details_form.html:166 +msgid "Last Name" +msgstr "Ultimo Nome" + +#: templates/web/default/admin/body.html:58 +#: templates/web/zurich/admin/body.html:15 +msgid "Last editor" +msgstr "Última editor" + +#: templates/web/default/admin/report_edit.html:72 +msgid "Last update:" +msgstr "Última atualização:" + +#: templates/web/default/admin/problem_row.html:39 +msgid "Last 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" +msgstr "Listar todos os problemas relatados" + +#: templates/web/bromley/report/new/fill_in_details_form.html:69 +#: templates/web/default/report/new/fill_in_details_form.html:68 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:51 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:75 +#: templates/web/seesomething/report/new/fill_in_details_form.html:25 +#: templates/web/zurich/report/new/fill_in_details_form.html:51 +msgid "Loading..." +msgstr "Carregando ..." + +#: templates/web/default/alert/choose.html:1 +#: templates/web/default/alert/choose.html:3 +#: templates/web/default/alert/index.html:1 +#: templates/web/default/alert/index.html:3 +#: templates/web/default/alert/list.html:1 +#: templates/web/default/alert/list.html:5 +#: templates/web/default/alert/updates.html:1 +#: templates/web/default/tokens/confirm_alert.html:1 +#: templates/web/default/tokens/confirm_alert.html:3 +#: templates/web/emptyhomes/alert/index.html:1 +#: templates/web/emptyhomes/alert/index.html:3 +#: templates/web/fixmybarangay/alert/index.html:1 +#: templates/web/fixmybarangay/alert/index.html:3 +#: templates/web/fixmystreet/alert/updates.html:1 +msgid "Local RSS feeds and email alerts" +msgstr "RSS feeds e alertas de e-mail locais" + +#: templates/web/default/alert/list.html:1 +#: templates/web/default/alert/list.html:12 +#: templates/web/default/alert/list.html:14 +#: templates/web/default/alert/list.html:3 +msgid "Local RSS feeds and email alerts for ‘%s’" +msgstr "RSS feeds e alertas de e-mail locais para '%s'" + +#: 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 "Alertas locais" + +#: templates/web/default/index-steps.html:25 +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:43 +#: templates/web/oxfordshire/js/translation_strings.html:37 +msgid "MAP" +msgstr "Mapa" + +#: perllib/FixMyStreet/Map/OSM.pm:44 +msgid "Map © <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" + +#: templates/web/default/contact/index.html:90 +msgid "Message:" +msgstr "Menssagem" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:440 +msgid "Missing jurisdiction_id" +msgstr "Falta informaçao jurisdiction_id" + +#: templates/web/zurich/admin/stats.html:34 +msgid "Moderated by division within one working day" +msgstr "Moderado por divisão dentro de um dia de trabalho" + +#: templates/web/default/admin/stats.html:11 +msgid "Month" +msgstr "Mês" + +#: templates/web/default/report/display.html:30 +msgid "More problems nearby" +msgstr "Mais problemas próximos" + +#: 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 "Nome" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:74 +msgid "Name (optional)" +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: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:317 +msgid "Name: %s" +msgstr "Nome: %s" + +#: templates/web/fiksgatami/footer.html:3 +#: templates/web/fiksgatami/nn/footer.html:3 +#: templates/web/reading/footer.html:4 +msgid "Navigation" +msgstr "Navegaçao" + +#: perllib/FixMyStreet/Geocode/OSM.pm:166 +msgid "Nearest named road to the pin placed on the map (automatically generated using OpenStreetMap): %s%s" +msgstr "Nomeado rodoviário mais próximo ao pino colocado no mapa (gerado automaticamente usando OpenStreetMap): %s%s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:148 +msgid "Nearest postcode to the pin placed on the map (automatically generated): %s (%sm away)" +msgstr "Código postal mais próximo do pino colocado no mapa (gerado automaticamente): %s (%sm distância)" + +#: perllib/FixMyStreet/Cobrand/Default.pm:418 +#: perllib/FixMyStreet/Cobrand/Default.pm:458 +msgid "Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s" +msgstr "Estrada mais próxima para o pino colocado no mapa (gerado automaticamente por Bing Maps): %s" + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:273 +msgid "" +"Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s\n" +"\n" +msgstr "" +"Estrada mais próxima para o pino colocado no mapa (gerado automaticamente por Bing Maps): %s\n" +"\n" +"\n" + +#: templates/web/default/email_sent.html:3 +msgid "Nearly Done! Now check your email..." +msgstr "Quase pronto! Agora, verifique seu e-mail ..." + +#: templates/web/default/reports/index.html:16 +#: templates/web/fixmybarangay/reports/index.html:16 +msgid "New <br>problems" +msgstr "Novos <br>problemas" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:264 +msgid "New body added" +msgstr "Novo corpo adicionado" + +#: 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" + +#: db/alert_types_eha.pl:12 +msgid "New local reports on reportemptyhomes.com" +msgstr "Novos relatórios locais reportemptyhomes.com" + +#: templates/web/emptyhomes/reports/index.html:10 +#: templates/web/fiksgatami/nn/reports/index.html:10 +#: templates/web/fiksgatami/reports/index.html:10 +msgid "New problems" +msgstr "Novos problemas" + +#: db/alert_types.pl:38 +msgid "New problems for {{COUNCIL}} within {{WARD}} ward on FixMyStreet" +msgstr "Novos problemas para {{CONSELHO}} {{dentro WARD}} enfermaria em FixMyStreetMindelo" + +#: db/alert_types.pl:26 db/alert_types.pl:30 +msgid "New problems near {{POSTCODE}} on FixMyStreet" +msgstr "Novos problemas perto de CÓDIGO POSTAL {{}} em FixMyStreetMindelo" + +#: db/alert_types.pl:10 +msgid "New problems on FixMyStreet" +msgstr "Novos problemas no FixMyStreetMindelo" + +#: db/alert_types.pl:34 +msgid "New problems to {{COUNCIL}} on FixMyStreet" +msgstr "Novos problemas para {{}} CONSELHO em FixMyStreetMindelo" + +#: db/alert_types.pl:42 +msgid "New problems within {{NAME}}'s boundary on FixMyStreet" +msgstr "Novos problemas dentro de {{NAME}} 's fronteira em FixMyStreetMindelo" + +#: templates/web/zurich/admin/index-sdm.html:4 +msgid "New reports" +msgstr "Novos reports" + +#: db/alert_types_eha.pl:23 +msgid "New reports for {{COUNCIL}} within {{WARD}} ward on reportemptyhomes.com" +msgstr "Novos relatórios para {{CONSELHO}} {{dentro WARD}} em reportemptyhomes.com" + +#: db/alert_types_eha.pl:5 +msgid "New reports on reportemptyhomes.com" +msgstr "Novos relatórios sobre reportemptyhomes.com" + +#: db/alert_types_eha.pl:16 +msgid "New reports on reportemptyhomes.com near {{POSTCODE}}" +msgstr "Novos relatórios sobre reportemptyhomes.com perto CÓDIGO POSTAL {{}}" + +#: db/alert_types_eha.pl:19 +msgid "New reports to {{COUNCIL}} on reportemptyhomes.com" +msgstr "Novos Relatorios sobre reportemptyhomes.com Perto CÓDIGO POSTAL {{}}" + +#: db/alert_types_eha.pl:27 +msgid "New reports within {{NAME}}'s boundary on reportemptyhomes.com" +msgstr "Novos relatórios dentro de {{NAME}} 's fronteira em reportemptyhomes.com" + +#: templates/web/default/admin/questionnaire.html:24 +msgid "New state" +msgstr "Novo estado" + +#: templates/web/zurich/admin/report_edit-sdm.html:61 +msgid "New update:" +msgstr "Nova actualizaçao" + +#: templates/web/fiksgatami/front/news.html:9 +#: templates/web/fiksgatami/nn/front/news.html:9 +#: templates/web/fixmystreet/front/news.html:8 +msgid "New!" +msgstr "Novo?" + +#: templates/web/default/pagination.html:13 +msgid "Next" +msgstr "Proximo" + +#: 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 "Nao" + +#: templates/web/default/admin/user-form.html:33 +msgid "No body" +msgstr "Nenhum corpo" + +#: templates/web/default/admin/stats.html:85 +msgid "No council" +msgstr "Sem conselho" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:362 +msgid "No council selected" +msgstr "Nenhum Conselho selecionado" + +#: 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:25 +#, fuzzy +msgid "No flagged problems found." +msgstr "Nenhum problema sinalizado" + +#: 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:68 +msgid "No further updates" +msgstr "Sem mais atualizações" + +#: templates/web/default/around/around_map_list_items.html:17 +#: templates/web/fixmystreet/around/around_map_list_items.html:8 +msgid "No problems found." +msgstr "Nenhum problema encontrado" + +#: templates/web/default/around/on_map_list_items.html:14 +#: templates/web/fixmystreet/around/on_map_list_items.html:6 +msgid "No problems have been reported yet." +msgstr "Nenhuns problemas foram ianda reportados" + +#: 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:73 +msgid "Non Public" +msgstr "Nao publico" + +#: 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 "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 +#: 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 "Nao responsavel" + +#: templates/web/zurich/admin/report_edit-sdm.html:21 +msgid "Not for my subdivision" +msgstr "Nao pertence ao meu sector" + +#: templates/web/default/admin/questionnaire.html:6 +msgid "Not reported before" +msgstr "Nao reportado antes" + +#: templates/web/default/report/_main.html:10 +msgid "Not reported to council" +msgstr "Nao reportado ao conselho" + +#: 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 "Nota" + +#: templates/web/default/admin/stats.html:51 +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:157 +#: templates/web/default/admin/body_edit.html:44 +#: templates/web/zurich/admin/body.html:47 +msgid "Note:" +msgstr "Nota" + +#: templates/web/default/open311/index.html:75 +msgid "Note: <strong>%s</strong>" +msgstr "Nota: <strong>%s</strong>" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:154 +msgid "Now to submit your report…" +msgstr "Agora, para apresentar o seu relatório ..." + +#: templates/web/default/report/new/fill_in_details_form.html:131 +msgid "Now to submit your report… do you have a FixMyStreet password?" +msgstr "Agora, para apresentar o seu relatório ... você tem de ter uma senha FixMyStreetMindelo?" + +#: templates/web/fixmystreet/report/update-form.html:83 +msgid "Now to submit your update…" +msgstr "Agora, para apresentar a sua atualização ..." + +#: templates/web/default/report/update-form.html:86 +msgid "Now to submit your update… 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:42 +#: templates/web/oxfordshire/js/translation_strings.html:36 +msgid "OK" +msgstr "OK" + +#: templates/web/default/report/display.html:24 +#: templates/web/default/report/update.html:16 +msgid "Offensive? Unsuitable? Tell us" +msgstr "Ofensivo? Inadequado? Informem-nos" + +#: templates/web/default/reports/index.html:18 +#: templates/web/fixmybarangay/reports/index.html:18 +msgid "Old / unknown <br>problems" +msgstr " Velho / desconhecido <br>problems" + +#: templates/web/fiksgatami/nn/reports/index.html:12 +#: templates/web/fiksgatami/reports/index.html:12 +msgid "Old problems,<br>state unknown" +msgstr "VElhos problemas,<br>estado desconhecido" + +#: templates/web/default/admin/questionnaire.html:24 +msgid "Old state" +msgstr "Estado antigo" + +#: templates/web/default/reports/index.html:20 +#: templates/web/fixmybarangay/reports/index.html:20 +msgid "Older <br>fixed" +msgstr "Mais antigo <br>fixado" + +#: templates/web/default/reports/index.html:17 +#: templates/web/fixmybarangay/reports/index.html:17 +msgid "Older <br>problems" +msgstr "Mais antigo <br>problemas" + +#: templates/web/fiksgatami/nn/reports/index.html:14 +#: templates/web/fiksgatami/reports/index.html:14 +msgid "Older fixed" +msgstr "Mais antigo fixed" + +#: templates/web/emptyhomes/reports/index.html:11 +#: templates/web/fiksgatami/nn/reports/index.html:11 +#: templates/web/fiksgatami/reports/index.html:11 +msgid "Older problems" +msgstr "Problemas mais antigos" + +#: 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 "Aberto" + +#: templates/web/default/my/my.html:22 templates/web/fixmystreet/my/my.html:26 +msgid "Open reports" +msgstr "Relatorios abertos" + +#: templates/web/default/open311/index.html:72 +msgid "Open311 API for the mySociety FixMyStreet server" +msgstr "Open311 API para o servidor FixMyStreet mySociety" + +#: templates/web/default/open311/index.html:82 +msgid "Open311 initiative web page" +msgstr "Open311 página web iniciativa" + +#: templates/web/default/open311/index.html:83 +msgid "Open311 specification" +msgstr "Especificação Open311" + +#: templates/web/default/alert/_list.html:58 +#: templates/web/fixmystreet/alert/_list.html:60 +msgid "Or problems reported to:" +msgstr "Ou os problemas relatados para:" + +#: templates/web/default/alert/_list.html:33 +#: templates/web/fixmystreet/alert/_list.html:36 +msgid "Or you can subscribe to an alert based upon what ward or council you’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: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 "Outro" + +#: templates/web/default/footer.html:27 +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:8 +msgid "Owner" +msgstr "Proprietário" + +#: templates/web/default/errors/page_error_404_not_found.html:1 +#: templates/web/default/errors/page_error_404_not_found.html:3 +msgid "Page Not Found" +msgstr "Pagina nao encontrada" + +#: templates/web/default/admin/body-form.html:31 +#: templates/web/zurich/admin/body-form.html:14 +msgid "Parent" +msgstr "Parente" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:51 +msgid "Partial" +msgstr "Parcial" + +#: 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 "Password (opcional)" + +#: templates/web/default/auth/change_password.html:25 +msgid "Password:" +msgstr "Password:" + +#: 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 +msgid "Phone number (optional)" +msgstr "Telefone (opcional)" + +#: 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 "Telefone:" + +#: 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 "Foto" + +#: templates/web/default/questionnaire/index.html:99 +#: templates/web/default/report/new/fill_in_details_form.html:102 +#: templates/web/default/report/update-form.html:62 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:99 +#: templates/web/fixmystreet/questionnaire/index.html:90 +msgid "Photo:" +msgstr "Foto" + +#: templates/web/default/alert/list.html:26 +msgid "Photos of recent nearby reports" +msgstr "Fotos de relatórios recentes mais proximos" + +#: 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" + +#: 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 "Planejado" + +#: templates/web/fixmystreet/questionnaire/index.html:44 +msgid "Please <a class=\"tab_link\" href=\"#report\">take a look</a> at the updates that have been left." +msgstr "<a Class=\"tab_link\" href=\"#report\"> dar uma olhada </a> nas atualizações que foram deixadas." + +#: templates/web/default/report/new/notes.html:6 +#: templates/web/fixmystreet/report/new/notes.html:6 +#: templates/web/oxfordshire/report/new/notes.html:5 +msgid "Please be polite, concise and to the point." +msgstr "Por favor, seja educado, objectivo, conciso e direto ao ponto." + +#: templates/web/default/auth/change_password.html:12 +#: templates/web/default/auth/change_password.html:17 +msgid "Please check the passwords and try again" +msgstr "Por favor verifique as senhas e tente novamente" + +#: templates/web/default/auth/token.html:14 +msgid "Please check your email" +msgstr "Favor verificar seu email" + +#: templates/web/default/auth/general.html:14 +#: templates/web/default/auth/general.html:8 +#: templates/web/fixmystreet/auth/general.html:15 +#: templates/web/fixmystreet/auth/general.html:9 +#: templates/web/seesomething/auth/general.html:15 +#: templates/web/seesomething/auth/general.html:9 +#: templates/web/zurich/auth/general.html:3 +#: templates/web/zurich/auth/general.html:9 +msgid "Please check your email address is correct" +msgstr "Favor verificar se seu email esta correcto" + +#: 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 "Escolher uma categoria" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:387 +msgid "Please choose a property type" +msgstr "Por favor, escolha um tipo de imóvel" + +#: templates/web/seesomething/js/translation_strings.html:6 +msgid "Please choose a transport category" +msgstr "Por favor escolha uma categoria de transporte" + +#: templates/web/seesomething/js/translation_strings.html:7 +msgid "Please choose an incident category" +msgstr "Por favor escolha uma categoria incidente" + +#: 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”" +msgstr "Por favor, descreva a localização exata do relatório. Exemplo: \"2 postes iluminaçao partidos na rua lisboa\"" + +#: templates/web/default/contact/blurb.html:2 +msgid "" +"Please do <strong>not</strong> report problems through this form; messages go to\n" +"the team behind FixMyStreet, not a council. To report a problem,\n" +"please <a href=\"/\">go to the front page</a> and follow the instructions." +msgstr "" +"Por favor, faça <strong> não </strong> relatar problemas através deste formulário; mensagens de ir para ⏎\n" +"a equipe por trás FixMyStreet, não um conselho. Para relatar um problema, ⏎\n" +"<a href=\"/\"> ir para a página inicial </a> e siga as instruções." + +#: templates/web/default/report/new/notes.html:7 +#: templates/web/fixmystreet/report/new/notes.html:7 +#: templates/web/oxfordshire/report/new/notes.html:6 +msgid "Please do not be abusive — abusing your council devalues the service for all users." +msgstr "" +"Por favor, o Faça <strong> Localidade: Não </strong> relatar Problemas atraves dEste Formulário; Point Of Sale de ir par ⏎\n" +"a Equipe POR Trás FixMyStreet, Nao hum Conselho. Pará relatar hum Problema, ⏎\n" +"<a href=\"/\"> ir par a Página Inicial </a> e como SIGA INSTRUÇÕES." + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:46 +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: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: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" +msgstr "Por favor insira um email valido" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:346 +#: perllib/FixMyStreet/App/Controller/Contact.pm:107 +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: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" + +#: 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 "Digite seu e-mail" + +#: templates/web/bromley/report/new/fill_in_details_form.html:149 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:151 +#: templates/web/seesomething/report/new/fill_in_details_form.html:85 +#: templates/web/zurich/report/new/fill_in_details_form.html:92 +msgid "Please enter your email address" +msgstr "Por favor, insira o seu endereço de email" + +#: 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: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: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: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: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 <a href=\\\"/\\\">página inicial</a>" + +#: templates/web/emptyhomes/report/new/fill_in_details_text.html:1 +msgid "" +"Please fill in details of the empty property below, saying what type of\n" +"property it is e.g. an empty home, block of flats, office etc. Tell us\n" +"something about its condition and any other information you feel is relevant.\n" +"There is no need for you to give the exact address. Please be polite, concise\n" +"and to the point; writing your message entirely in block capitals makes it hard\n" +"to read, as does a lack of punctuation." +msgstr "" +"Por favor, preencha a ficha do imóvel vazio abaixo, dizendo que tipo de ⏎\n" +"propriedade é, por exemplo, uma casa vazia, bloco de apartamentos, escritório etc Diga-nos ⏎\n" +"algo sobre sua condição e qualquer outra informação que você sente é relevante. ⏎\n" +"Não há nenhuma necessidade para você dar o endereço exato. Por favor, seja educado, conciso ⏎\n" +"e direto ao ponto, escrever a mensagem inteiramente em letras maiúsculas torna difícil ⏎" + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/default/report/new/fill_in_details_text.html:11 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:10 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:8 +msgid "Please fill in details of the problem below." +msgstr "Por favor, preencha os detalhes do problema abaixo." + +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:3 +msgid "" +"Please fill in details of the problem below. Leave as much detail as you can, \n" +"and if possible describe the exact location of\n" +"the problem (e.g. if there is a streetlight number or road name)." +msgstr "" +"Por favor, preencha os detalhes do problema abaixo. Deixar o máximo de detalhes possível, ⏎\n" +"e se possível descrever a localização exata de ⏎\n" +"o problema (por exemplo, se existe um número de rua ou o nome da rua, zona. lugar, praça, beco, ruela, etc)." + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/default/report/new/fill_in_details_text.html:3 +msgid "" +"Please fill in details of the problem below. The council won't be able\n" +"to help unless you leave as much detail as you can, so please describe the exact location of\n" +"the problem (e.g. on a wall), what it is, how long it has been there, a description (and a\n" +"photo of the problem if you have one), etc." +msgstr "" +"Por favor, preencha os detalhes do problema abaixo. O conselho não será capaz ⏎\n" +"para ajudar a menos que você deixe o máximo de detalhes como você pode, então, por favor descrever a localização exata de ⏎\n" +"o problema (por exemplo, uma parede, um poste, lixo, entulho), o que é, quanto tempo ele tem estado lá, uma descrição (e um ⏎\n" +"foto do problema se você tiver um), etc" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:70 +#: templates/web/seesomething/report/new/fill_in_details_form.html:20 +#: templates/web/zurich/report/new/fill_in_details_form.html:46 +msgid "Please fill in details of the problem." +msgstr "Por favor, preencha os detalhes do problema." + +#: templates/web/bromley/report/new/fill_in_details_form.html:28 +#: templates/web/default/report/new/fill_in_details_form.html:27 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:26 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:35 +#: templates/web/zurich/report/new/fill_in_details_form.html:20 +msgid "Please fill in the form below with details of the problem, and describe the location as precisely as possible in the details box." +msgstr "Por favor, preencha o formulário abaixo com detalhes do problema e descrever a localização mais precisa possível na caixa de detalhes." + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:243 +msgid "Please indicate whether you'd like to receive another questionnaire" +msgstr "Por favor, indique se você gostaria de receber um outro questionário" + +#: templates/web/fixmystreet/report/updates-sidebar-notes.html:3 +msgid "Please note that updates are not sent to the council." +msgstr "Por favor, note que as atualizações não são enviadas para o conselho." + +#: templates/web/default/report/update-form.html:7 +msgid "Please note that updates are not sent to the council. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgstr "Por favor, note que as atualizações Localidade: Não São enviadas par o Conselho. Se Você. deixar Seu Nome Será, Público. SUAS Informations Só Serao utilizadas according to Nossa <a href=\"/faq#privacy\"> Politica de Privacidade </a>" + +#: templates/web/barnet/report/updates-sidebar-notes.html:1 +msgid "Please note that updates are not sent to the relevant department. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgstr "Por favor, note que as atualizações não são enviadas para o departamento competente. Se você deixar seu nome será público. Suas informações só serão utilizadas de acordo com nossa <a href=\"/faq#privacy\"> política de privacidade </a>" + +#: templates/web/bromley/report/new/fill_in_details_form.html:23 +#: templates/web/default/report/new/fill_in_details_form.html:5 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:5 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:26 +#: templates/web/zurich/report/new/fill_in_details_form.html:11 +msgid "Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit." +msgstr "Por favor, note o relatório ainda não foi enviado <strong> </strong>. Escolha uma categoria e acrescentar mais informações abaixo, em seguida, enviar." + +#: templates/web/default/report/new/notes.html:1 +#: templates/web/fixmybarangay/report/new/notes.html:1 +#: templates/web/fixmystreet/report/new/notes.html:1 +#: templates/web/oxfordshire/report/new/notes.html:1 +msgid "Please note:" +msgstr "Favor notar:" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:246 +msgid "Please provide some explanation as to why you're reopening this report" +msgstr "Favor fornecer uma explicação de por que você está reabrindo este relatório" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:253 +msgid "Please provide some text as well as a photo" +msgstr "Por favor, forneça algum texto, bem como uma foto" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:116 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:239 +msgid "Please say whether you've ever reported a problem to your council before" +msgstr "Por favor, diga se você já relatou um problema para o seu conselho antes" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:80 +msgid "Please select the feed you want" +msgstr "Por favor, selecione o feed que deseja" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:118 +msgid "Please select the type of alert you want" +msgstr "Selecione o tipo de alerta que deseja" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:235 +msgid "Please state whether or not the problem has been fixed" +msgstr "Por favor, indique se o problema foi corrigido" + +#: templates/web/default/questionnaire/index.html:50 +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:176 +msgid "Please upload a JPEG image only" +msgstr "Faça upload somente de uma imagem em JPEG " + +#: perllib/FixMyStreet/App/Controller/Photo.pm:183 +msgid "Please upload a JPEG image only\n" +msgstr "Faça upload de uma imagem JPEG \n" + +#: perllib/FixMyStreet/App/Controller/Contact.pm:98 +msgid "Please write a message" +msgstr "Por favor, escreva uma mensagem" + +#: templates/web/bromley/report/display.html:70 +#: templates/web/fixmystreet/report/update-form.html:23 +msgid "Please write your update here" +msgstr "Por favor, escreva a sua atualização aqui" + +#: templates/web/bromley/report/display.html:123 +#: templates/web/bromley/report/display.html:151 +#: templates/web/bromley/report/display.html:163 +#: templates/web/default/contact/index.html:93 +#: templates/web/default/report/update-form.html:109 +#: templates/web/default/report/update-form.html:131 +#: templates/web/default/report/update-form.html:72 +#: templates/web/fixmystreet/contact/index.html:105 +#: templates/web/fixmystreet/report/update-form.html:123 +#: templates/web/fixmystreet/report/update-form.html:71 +#: templates/web/fixmystreet/report/update-form.html:95 +msgid "Post" +msgstr "Postar" + +#: templates/web/default/report/updates.html:15 +msgid "Posted anonymously at %s" +msgstr "Postado anonimamente em %s" + +#: templates/web/default/report/updates.html:22 +msgid "Posted by %s (<strong>%s</strong>) at %s" +msgstr "Postado por %s (<strong>%s</strong>) em %s" + +#: templates/web/default/report/updates.html:24 +msgid "Posted by %s at %s" +msgstr "Postado por %s aem %s" + +#: templates/web/default/pagination.html:7 +msgid "Previous" +msgstr "Anterior" + +#: 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 "Privado" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:108 +msgid "Private information (not shown on site)" +msgstr "Informações privadas (não mostrado no site)" + +#: templates/web/default/maps/openlayers.html:85 +msgid "Problem" +msgstr "Problema" + +#: templates/web/default/admin/timeline.html:22 +msgid "Problem %d created" +msgstr "Problema %d criado" + +#: templates/web/default/admin/timeline.html:24 +msgid "Problem %s confirmed" +msgstr "Problema %s confirmado" + +#: templates/web/default/admin/timeline.html:26 +msgid "Problem %s sent to council %s" +msgstr "Problema %s enviado ao conselho %s" + +#: 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:950 +msgid "Problem marked as open." +msgstr "Problema marcado como aberto." + +#: templates/web/default/admin/questionnaire.html:21 +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:10 +msgid "Problems" +msgstr "Problemas" + +#: templates/web/default/around/_updates.html:1 +msgid "Problems in this area" +msgstr "Problemas nesta área" + +#: templates/web/bromley/report/display.html:31 +#: templates/web/fixmystreet/around/tabbed_lists.html:4 +#: templates/web/fixmystreet/report/display.html:46 +msgid "Problems nearby" +msgstr "Problemas nas proximidades" + +#: templates/web/fixmystreet/around/tabbed_lists.html:3 +#: templates/web/fixmystreet/report/display.html:44 +msgid "Problems on the map" +msgstr "Problemas no mapa" + +#: db/alert_types.pl:14 +msgid "Problems recently reported fixed on FixMyStreet" +msgstr "Problemas relatados recentemente fixados em FixMyStreetMindelo" + +#: templates/web/default/alert/_list.html:19 +#: templates/web/fixmystreet/alert/_list.html:21 +msgid "Problems within %.1fkm of this location" +msgstr "Problemas dentro de %.1fkm deste local" + +#: perllib/FixMyStreet/Cobrand/Default.pm:626 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:109 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:155 +#: perllib/FixMyStreet/Cobrand/UK.pm:228 +msgid "Problems within %s" +msgstr "Problemas dentro de %s" + +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:117 +#: perllib/FixMyStreet/Cobrand/UK.pm:242 +msgid "Problems within %s ward" +msgstr "Problemas dentro de %s ala" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:24 +msgid "Problems within %s, FixMyStreet" +msgstr "Problemas dentro de %s, FixMyStreetMindelo" + +#: templates/web/default/alert/_list.html:40 +#: templates/web/fixmybarangay/alert/_list.html:13 +#: templates/web/fixmystreet/alert/_list.html:42 +msgid "Problems within the boundary of:" +msgstr "Problemas dentro do limite de:" + +#: db/alert_types_eha.pl:8 +msgid "Properties recently reported as put back to use on reportemptyhomes.com" +msgstr "Propriedades informou recentemente como colocar de volta para uso em reportemptyhomes.com" + +#: templates/web/default/admin/report_edit.html:32 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:115 +msgid "Property address:" +msgstr "Endereço do imóvel:" + +#: templates/web/default/report/new/category.html:8 +msgid "Property type:" +msgstr "Tipo de propriedade:" + +#: templates/web/bromley/report/new/fill_in_details_form.html:52 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:64 +msgid "Provide a title" +msgstr "Dê um título" + +#: templates/web/bromley/report/display.html:57 +#: templates/web/default/report/update-form.html:3 +#: templates/web/fixmystreet/report/update-form.html:4 +msgid "Provide an update" +msgstr "Fornecer uma atualização" + +#: templates/web/fixmystreet/auth/general.html:53 +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 "" + +#: 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." +msgstr "Fornecer uma senha é opcional, mas isso vai permitir que você mais facilmente relatar problemas futuros, deixe as atualizações e gerenciar seus relatórios." + +#: templates/web/bromley/report/display.html:144 +#: templates/web/default/report/new/fill_in_details_form.html:173 +#: templates/web/default/report/update-form.html:128 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:202 +#: templates/web/fixmystreet/report/update-form.html:116 +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:60 +#: templates/web/default/admin/body.html:73 +msgid "Public" +msgstr "Publico" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:44 +msgid "Public information (shown on site)" +msgstr "A informação pública (mostrado no site)" + +#: 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:80 +#: templates/web/zurich/admin/stats.html:38 +msgid "Publish photo" +msgstr "Publicar foto" + +#: templates/web/zurich/admin/report_edit.html:222 +msgid "Publish the response" +msgstr "Publicar a resposta" + +#: templates/web/default/questionnaire/completed.html:1 +#: templates/web/default/questionnaire/completed.html:2 +#: templates/web/default/questionnaire/index.html:0 +#: templates/web/default/questionnaire/index.html:14 +#: templates/web/default/questionnaire/index.html:4 +#: templates/web/fixmystreet/questionnaire/index.html:0 +#: templates/web/fixmystreet/questionnaire/index.html:14 +#: templates/web/fixmystreet/questionnaire/index.html:32 +#: templates/web/fixmystreet/questionnaire/index.html:4 +msgid "Questionnaire" +msgstr "Questionario" + +#: templates/web/default/admin/timeline.html:30 +msgid "Questionnaire %d answered for problem %d, %s to %s" +msgstr "Questionário %d respondeu para o problema de %d, %s para %s" + +#: templates/web/default/admin/timeline.html:28 +msgid "Questionnaire %d sent for problem %d" +msgstr "Questionário %d enviou para o problema de %d" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:192 +msgid "Questionnaire filled in by problem reporter" +msgstr "Questionário preenchido por problema repórter" + +#: templates/web/bromley/report/display.html:37 +#: templates/web/default/alert/_list.html:21 +#: templates/web/default/around/display_location.html:1 +#: templates/web/default/around/display_location.html:3 +#: templates/web/default/report/display.html:46 +#: templates/web/default/reports/_rss.html:1 +#: templates/web/fixmystreet/alert/_list.html:22 +#: templates/web/fixmystreet/alert/updates.html:9 +#: templates/web/fixmystreet/report/display.html:61 +msgid "RSS feed" +msgstr "RSS feed" + +#: perllib/FixMyStreet/Cobrand/UK.pm:271 perllib/FixMyStreet/Cobrand/UK.pm:283 +msgid "RSS feed for %s" +msgstr "RSS feed para %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:277 perllib/FixMyStreet/Cobrand/UK.pm:289 +msgid "RSS feed for %s ward, %s" +msgstr "RSS feed for %s ala,%s" + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:171 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:179 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:189 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:197 +#: perllib/FixMyStreet/Cobrand/UK.pm:297 perllib/FixMyStreet/Cobrand/UK.pm:309 +msgid "RSS feed of %s" +msgstr "RSS feed de %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:302 perllib/FixMyStreet/Cobrand/UK.pm:314 +msgid "RSS feed of %s, within %s ward" +msgstr "RSS feed de %s, %s problemas pendentes" + +#: templates/web/default/alert/_list.html:21 +#: templates/web/fixmystreet/alert/_list.html:22 +msgid "RSS feed of nearby problems" +msgstr "RSS feed dos problemas próximos" + +#: templates/web/default/reports/_rss.html:1 +msgid "RSS feed of problems in this %s" +msgstr "RSS feed dos problemas nesta %s" + +#: perllib/FixMyStreet/Cobrand/Default.pm:627 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:110 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:154 +#: perllib/FixMyStreet/Cobrand/UK.pm:235 +msgid "RSS feed of problems within %s" +msgstr "RSS feed dos Problemas Nesta %s" + +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:116 +#: perllib/FixMyStreet/Cobrand/UK.pm:241 +msgid "RSS feed of problems within %s ward" +msgstr "RSS feed dos problemas dentro de %s ala" + +#: templates/web/default/around/display_location.html:1 +#: templates/web/default/around/display_location.html:4 +msgid "RSS feed of recent local problems" +msgstr "RSS feed dos problemas locais recentes" + +#: templates/web/bromley/report/display.html:37 +#: templates/web/default/report/display.html:46 +#: templates/web/fixmystreet/alert/updates.html:9 +#: templates/web/fixmystreet/report/display.html:61 +msgid "RSS feed of updates to this problem" +msgstr "RSS feed de atualizações para este problema" + +#: templates/web/bromley/report/display.html:39 +#: templates/web/default/alert/updates.html:9 +#: templates/web/default/report/display.html:37 +#: templates/web/fixmystreet/alert/updates.html:14 +#: templates/web/fixmystreet/report/display.html:63 +msgid "Receive email when updates are left on this problem." +msgstr "RSS feed dos problemas locais recentes" + +#: templates/web/default/around/display_location.html:0 +#: templates/web/default/around/display_location.html:32 +msgid "Recent local problems, FixMyStreet" +msgstr "Recentes problemas locais, FixMyStreetMindelo" + +#: templates/web/default/reports/index.html:19 +#: templates/web/fixmybarangay/reports/index.html:19 +msgid "Recently <br>fixed" +msgstr "Recentement <br>fixed" + +#: templates/web/fiksgatami/nn/reports/index.html:13 +#: templates/web/fiksgatami/reports/index.html:13 +msgid "Recently fixed" +msgstr "Problemas recentemente fixados" + +#: templates/web/default/index.html:35 templates/web/emptyhomes/index.html:24 +#: templates/web/fixmystreet/index.html:45 +msgid "Recently reported problems" +msgstr "Problemas recentemente reportados" + +#: templates/web/default/report/new/notes.html:9 +#: templates/web/fixmystreet/report/new/notes.html:10 +msgid "Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site remember that you can contact your council directly using their own website." +msgstr "Lembre-se que FixMyStreetMIndelo é principalmente para relatar problemas físicos que podem ser corrigidos. Se o seu problema não é apropriado para a apresentação através deste site, lembre-se que você pode contactar o seu município diretamente usando seu próprio site." + +#: templates/web/fixmybarangay/report/new/notes.html:9 +msgid "Remember that, for the pilot project, FixMyBarangay is only for reporting potholes and streetlights in bgy. Luz or Basak San Nicolas." +msgstr "Lembre-se que, para o projeto piloto, FixMyStreet é apenas para relatar buracos e postes em bgy. " + +#: templates/web/default/admin/report_blocks.html:16 +msgid "Remove flag" +msgstr "Remover bandeira" + +#: templates/web/default/admin/report_edit.html:89 +#: templates/web/default/admin/update_edit.html:57 +#: templates/web/zurich/admin/update_edit.html:35 +msgid "Remove photo (can't be undone!)" +msgstr "Remover foto (não pode ser desfeita!)" + +#: templates/web/emptyhomes/header.html:12 +msgid "Report Empty Homes" +msgstr "Relatório Casas vazias, pardeeiros." + +#: 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 "Comunicar um problema" + +#: templates/web/bromley/report/display.html:28 +#: templates/web/fixmystreet/report/display.html:35 +msgid "Report abuse" +msgstr "Denunciar um abuso" + +#: templates/web/default/report_created.html:1 +#: templates/web/default/report_created.html:3 +#: templates/web/seesomething/report_created.html:0 +#: templates/web/seesomething/report_created.html:8 +msgid "Report created" +msgstr "Relatorio criado" + +#: perllib/FixMyStreet/App/Controller/Rss.pm:295 +msgid "Report on %s" +msgstr "Relatório sobre %s" + +#: templates/web/default/index.html:14 templates/web/emptyhomes/index.html:5 +#: templates/web/fixmystreet/around/intro.html:1 +#: templates/web/stevenage/around/intro.html:1 +#: templates/web/zurich/around/intro.html:1 +msgid "Report, view, or discuss local problems" +msgstr "Relatório, vista, ou discutir os problemas locais" + +#: templates/web/default/my/my.html:74 +msgid "Reported %s" +msgstr "Relatado %s" + +#: templates/web/default/my/my.html:72 +msgid "Reported %s, to %s" +msgstr "Reportados %s, para %s" + +#: 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 "Relatado anonimamente em %s" + +#: templates/web/default/admin/questionnaire.html:5 +#: templates/web/default/questionnaire/index.html:77 +#: templates/web/fixmystreet/questionnaire/index.html:71 +msgid "Reported before" +msgstr "Relatado antes" + +#: 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" + +#: templates/web/zurich/report/_main.html:2 +msgid "Reported in the %s category" +msgstr "Relatado na categoria %s" + +#: 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: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: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 "Relatando um problema" + +#: 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: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 +msgid "Reports awaiting approval" +msgstr "Relatórios aguardando aprovação" + +#: templates/web/default/around/tabbed_lists.html:3 +msgid "Reports on and around the map" +msgstr "Relatórios sobre e ao redor do mapa" + +#: templates/web/zurich/admin/index-sdm.html:10 +msgid "Reports published" +msgstr "Os relatórios publicados" + +#: templates/web/default/admin/report_edit.html:71 +msgid "Resend report" +msgstr "Reenviar relatório" + +#: templates/web/default/js/translation_strings.html:28 +#: templates/web/oxfordshire/js/translation_strings.html:22 +msgid "Right place?" +msgstr "Lugar certo?" + +#: perllib/FixMyStreet/Geocode/OSM.pm:173 +msgid "Road operator for this named road (derived from road reference number and type): %s" +msgstr "Operador de estrada por esta estrada chamada (derivado do número de referência estrada e tipo): %s" + +#: perllib/FixMyStreet/Geocode/OSM.pm:170 +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: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 "Girar para a esquerda" + +#: 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 "Girar para a direita" + +#: templates/web/default/admin/body_edit.html:76 +msgid "Save changes" +msgstr "Salvar alterações" + +#: templates/web/default/admin/reports.html:1 +#: templates/web/zurich/admin/reports.html:1 +msgid "Search Reports" +msgstr "Busca Reports" + +#: templates/web/default/admin/users.html:1 +msgid "Search Users" +msgstr "Procurar Usuários" + +#: templates/web/zurich/header.html:77 +msgid "Search reports" +msgstr "elatórios de pesquisa" + +#: templates/web/default/admin/reports.html:5 +#: templates/web/default/admin/users.html:8 +#: templates/web/zurich/admin/reports.html:5 +msgid "Search:" +msgstr "Pesquisar:" + +#: 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:71 +#: templates/web/zurich/admin/body-form.html:26 +msgid "Select an area" +msgstr "Selecione uma área" + +#: templates/web/default/alert/_list.html:8 +#: templates/web/fixmystreet/alert/_list.html:10 +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:664 +msgid "Sent to %s %s later" +msgstr "Enviado para %s %s mais tarde" + +#: templates/web/default/admin/report_edit.html:71 +msgid "Sent:" +msgstr "Enviar:" + +#: templates/web/default/admin/report_edit.html:73 +#: templates/web/zurich/admin/stats.html:45 +msgid "Service:" +msgstr "Srerviço:" + +#: templates/web/fixmystreet/report/display.html:41 +msgid "Share" +msgstr "Acçao" + +#: templates/web/bromley/report/display.html:205 +#: templates/web/bromley/report/new/fill_in_details_form.html:129 +#: templates/web/bromley/report/new/fill_in_details_form.html:175 +#: templates/web/default/report/new/fill_in_details_form.html:210 +#: templates/web/default/report/update-form.html:157 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:129 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:197 +#: templates/web/fixmystreet/report/update-form.html:144 +msgid "Show my name publicly" +msgstr "Mostrar meu nome publicamente" + +#: templates/web/default/around/display_location.html:69 +msgid "Show old" +msgstr "Mostrar antigo" + +#: templates/web/default/around/display_location.html:60 +msgid "Show pins" +msgstr "Mostrar pins" + +#: templates/web/default/auth/general.html:3 +#: templates/web/default/auth/general.html:49 +#: templates/web/fixmybarangay/header.html:70 +#: templates/web/fixmystreet/auth/general.html:3 +#: templates/web/fixmystreet/auth/general.html:42 +#: templates/web/fixmystreet/auth/general.html:62 +#: templates/web/fixmystreet/header.html:54 +#: templates/web/oxfordshire/header.html:115 +#: templates/web/seesomething/auth/general.html:3 +#: templates/web/seesomething/auth/general.html:39 +#: templates/web/stevenage/header.html:101 +#: templates/web/zurich/auth/general.html:18 +#: templates/web/zurich/auth/general.html:35 +msgid "Sign in" +msgstr "Entrar" + +#: templates/web/default/auth/general.html:74 +msgid "Sign in by email" +msgstr "Entrar por email" + +#: templates/web/default/auth/general.html:1 +#: templates/web/fixmystreet/auth/general.html:1 +#: templates/web/seesomething/auth/general.html:1 +#: templates/web/zurich/auth/general.html:1 +msgid "Sign in or create an account" +msgstr "Entar e crear uma conta" + +#: templates/web/bromley/auth/sign_out.html:1 +#: templates/web/default/auth/sign_out.html:1 +#: templates/web/default/header.html:30 +#: templates/web/emptyhomes/header.html:46 +#: templates/web/fiksgatami/header.html:22 +#: templates/web/fiksgatami/nn/header.html:22 +#: templates/web/lichfielddc/header.html:177 +#: templates/web/reading/header.html:33 +#: templates/web/seesomething/auth/sign_out.html:1 +#: templates/web/zurich/auth/sign_out.html:1 +msgid "Sign out" +msgstr "Sair " + +#: templates/web/default/header.html:29 +#: templates/web/emptyhomes/header.html:45 +#: templates/web/fiksgatami/header.html:21 +#: templates/web/fiksgatami/nn/header.html:21 +#: templates/web/lichfielddc/header.html:177 +#: templates/web/reading/header.html:32 +msgid "Signed in as %s" +msgstr "Entrou como %s" + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +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" +msgstr "Fotos de reports recentes" + +#: perllib/FixMyStreet/App/View/Email.pm:32 +#: perllib/FixMyStreet/App/View/Web.pm:44 +msgid "Some text to localize" +msgstr "Algum informaçao para localizar" + +#: perllib/FixMyStreet/Cobrand/UK.pm:93 +msgid "Sorry, that appears to be a Crown dependency postcode, which we don't cover." +msgstr "Desculpe, codigo postal nao coincide. Area nao comprrendida." + +#: templates/web/default/tokens/abuse.html:5 +msgid "Sorry, there has been an error confirming your problem." +msgstr "Desculpe, houve um erro ao confirmar o seu problema." + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:215 +#: perllib/FixMyStreet/Geocode.pm:28 perllib/FixMyStreet/Geocode/Bing.pm:58 +#: perllib/FixMyStreet/Geocode/Google.pm:74 +#: perllib/FixMyStreet/Geocode/OSM.pm:66 +msgid "Sorry, we could not find that location." +msgstr "Desculpe, não conseguimos encontrar esse local." + +#: perllib/FixMyStreet/Geocode/Bing.pm:53 +#: perllib/FixMyStreet/Geocode/Google.pm:69 +#: perllib/FixMyStreet/Geocode/Zurich.pm:87 +msgid "Sorry, we could not parse that location. Please try again." +msgstr "Desculpe, mas não foi possível analisar esse local. Por favor, tente novamente." + +#: templates/web/fiksgatami/footer.html:16 +#: templates/web/fiksgatami/nn/footer.html:16 +msgid "Source code" +msgstr "O código-fonte" + +#: templates/web/default/admin/stats.html:64 +#, fuzzy +msgid "Start Date:" +msgstr "Dia:" + +#: 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 "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: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: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 "Stats" + +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Status" +msgstr "Status" + +#: templates/web/default/report/updates.html:10 +msgid "Still open, via questionnaire, %s" +msgstr "Ainda em aberto, via questionário, %s" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370 +msgid "Subcategory: %s" +msgstr "Subcategoria: %s" + +#: templates/web/zurich/admin/index-dm.html:27 +msgid "Subdivision/Body" +msgstr "Zona / Bairro" + +#: templates/web/bromley/report/new/fill_in_details_form.html:48 +#: templates/web/fixmystreet/contact/index.html:91 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:60 +msgid "Subject" +msgstr "Assunto:" + +#: 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 "Assunto:" + +#: 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 "Submeter" + +#: 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 "Submeter alteraçoes" + +#: templates/web/default/questionnaire/index.html:116 +#: templates/web/fixmystreet/questionnaire/index.html:105 +msgid "Submit questionnaire" +msgstr "Submeter questionario" + +#: 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 "Submitido" + +#: templates/web/bromley/report/display.html:44 +#: templates/web/default/alert/updates.html:17 +#: templates/web/default/report/display.html:42 +#: templates/web/fixmystreet/alert/updates.html:23 +#: templates/web/fixmystreet/report/display.html:68 +msgid "Subscribe" +msgstr "Subscrever" + +#: templates/web/default/alert/_list.html:97 +#: templates/web/fixmybarangay/alert/_list.html:42 +#: templates/web/fixmystreet/alert/_list.html:92 +msgid "Subscribe me to an email alert" +msgstr "Subcrever um alerta de e-mail" + +#: templates/web/fixmybarangay/alert/_list.html:6 +msgid "Subscribe to an alert based upon what baranagay you’re in:" +msgstr "Subcrever um alerta baseado no que baranagay você está em:" + +#: 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 "Resumo" + +#: templates/web/default/reports/index.html:1 +#: templates/web/emptyhomes/reports/index.html:1 +#: templates/web/fiksgatami/nn/reports/index.html:1 +#: templates/web/fiksgatami/reports/index.html:1 +#: templates/web/fixmybarangay/reports/index.html:1 +#: templates/web/zurich/reports/index.html:0 +#: templates/web/zurich/reports/index.html:4 +msgid "Summary reports" +msgstr "Resumo reports" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1179 +msgid "Survey" +msgstr "Teste" + +#: templates/web/default/admin/questionnaire.html:1 +msgid "Survey Results" +msgstr "Resultados teste" + +#: 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" + +#: templates/web/default/admin/body.html:18 +msgid "Text only version" +msgstr "Somente versao texto" + +#: templates/web/default/admin/update_edit.html:20 +#: templates/web/zurich/admin/update_edit.html:12 +msgid "Text:" +msgstr "Texto:" + +#: templates/web/default/tokens/confirm_update.html:7 +#: templates/web/default/tokens/confirm_update.html:8 +msgid "Thank you — you can <a href=\"%s\">view your updated problem</a> on the site." +msgstr "Obrigado - você pode <a href=\"%s\"> ver o seu problema atualizados </a> no site." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:6 +#: templates/web/emptyhomes/tokens/confirm_problem.html:8 +msgid "Thank you for reporting an empty property on ReportEmptyHomes.com. We have emailed the lead officer for empty homes in the council responsible with details, and asked them to do whatever they can to get the empty property back into use as soon as possible." +msgstr "Obrigado por relatar um imóvel vazio em ReportEmptyHomes.com. Temos enviado o oficial de ligação para as casas vazias no conselho responsável, com detalhes, e pediu-lhes para fazer o que puder para obter a propriedade vazia novamente em uso o mais rápido possível." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:30 +#: templates/web/emptyhomes/tokens/confirm_problem.html:31 +msgid "" +"Thank you for reporting this empty property on ReportEmptyHomes.com.\n" +"At present the report cannot be sent through to the council for this area. We\n" +"are working with councils to link them into the system so that as many areas\n" +"as possible will be covered." +msgstr "" +"Obrigado por relatar essa propriedade vazia na ReportEmptyHomes.com. ⏎\n" +"Actualmente, o relatório não pode ser enviado através do Conselho para esta área. Nós ⏎\n" +"estão trabalhando com os conselhos de vincular-los no sistema de modo que o maior número de áreas ⏎\n" +"quanto possível será coberto." + +#: templates/web/default/tokens/error.html:7 +msgid "Thank you for trying to confirm your update or problem. We seem to have an error ourselves though, so <a href=\"%s\">please let us know what went on</a> and we'll look into it." +msgstr "Obrigado por tentar confirmar a sua atualização ou problema. Parece que temos um erro a nós mesmos, porém, assim <a href=\"%s\"> por favor deixe-nos saber o que aconteceu </a> e vamos olhar para ele." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:24 +#: templates/web/emptyhomes/tokens/confirm_problem.html:26 +msgid "Thank you for using ReportEmptyHomes.com. Your action is already helping to resolve the UK’s empty homes crisis." +msgstr "Obrigado por usar ReportEmptyHomes.com. Sua ação já está ajudando a resolver vazio crise casas em Mindelo." + +#: templates/web/fixmystreet/around/around_index.html:27 +msgid "Thanks for uploading your photo. We now need to locate your problem, so please enter a nearby street name or postcode in the box above :" +msgstr "Obrigado por upload de sua foto. Precisamos agora de localizar o seu problema, então digite um nome de rua nas proximidades ou código postal na caixa acima:" + +#: templates/web/default/contact/submit.html:8 +msgid "Thanks for your feedback. We'll get back to you as soon as we can!" +msgstr "Obrigado pelo seu feedback. Nós vamos responder o mais rapidamente possível!" + +#: templates/web/default/questionnaire/creator_fixed.html:9 +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: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." + +#: perllib/FixMyStreet/App/Controller/Council.pm:90 +msgid "That location does not appear to be covered by a council; perhaps it is offshore or outside the country. Please try again." +msgstr "Esse local não parece ser coberto por um conselho, talvez seja no mar ou fora do país. Por favor, tente novamente." + +#: perllib/FixMyStreet/App/Controller/Location.pm:123 +msgid "That location does not appear to be in the UK; please try again." +msgstr "Esse local não parece estar em Mindelo, por favor tente novamente." + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:63 +#: perllib/FixMyStreet/Cobrand/UK.pm:86 +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:704 +msgid "That problem will now be resent." +msgstr "Esse problema agora será reenviado e reportado ao conselho." + +#: perllib/FixMyStreet/App/Controller/Report.pm:117 +msgid "That report cannot be viewed on %s." +msgstr "Esse relatório não pode ser visualizado em %s." + +#: perllib/FixMyStreet/App/Controller/Report.pm:111 +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 — <em>please</em> be patient." +msgstr "O e-mail de confirmação <strong> Maio </strong> levar alguns minutos para chegar - <em> por favor </em>, seja paciente." + +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:3 +msgid "The council won’t be able to help unless you leave as much detail as you can. Please describe the exact location of the problem (e.g. on a wall), what it is, how long it has been there, a description (and a photo of the problem if you have one), etc." +msgstr "O conselho não vai ser capaz de ajudar a menos que você deixe o máximo de detalhes possível. Por favor, descreva a localização exata do problema (por exemplo, em uma parede, passeio, pavimento, iluminaçao), o que é, quanto tempo ele tem estado lá, uma descrição (e uma foto do problema se você tiver um), e outras informaçoes uteis." + +#: templates/web/fixmystreet/questionnaire/index.html:43 +msgid "The details of your problem are available from the other tab above." +msgstr "Os detalhes do seu problema estão disponíveis na outra aba acima." + +#: templates/web/default/questionnaire/index.html:49 +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" +msgstr "O erro foi: %s" + +#: templates/web/default/open311/index.html:88 +msgid "The following Open311 v2 attributes are returned for each request: service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code and service_name." +msgstr "Os seguintes atributos Open311 v2 são devolvidos para cada solicitação: service_request_id, descrição, lat, long, MEDIA_URL, status, requested_datetime, updated_datetime, service_code e service_name." + +#: perllib/FixMyStreet/Geocode/OSM.pm:165 +msgid "The following information about the nearest road might be inaccurate or irrelevant, if the problem is close to several roads or close to a road without a name registered in OpenStreetMap." +msgstr "As seguintes informações sobre a estrada mais próxima pode ser imprecisas ou irrelevantes, se o problema está perto de várias estradas ou perto de uma estrada sem nome registrado no OpenStreetMap." + +#: db/alert_types.pl:19 db/alert_types.pl:23 db/alert_types.pl:27 +#: db/alert_types.pl:31 +msgid "The latest local problems reported by users" +msgstr "Os últimos problemas locais relatados por usuários" + +#: db/alert_types_eha.pl:13 +msgid "The latest local reports reported by users" +msgstr "Os últimos relatórios locais relatados por usuários" + +#: db/alert_types.pl:35 +msgid "The latest problems for {{COUNCIL}} reported by users" +msgstr "Os últimos problemas para {{}} CONSELHO relatados por usuários" + +#: db/alert_types.pl:39 +msgid "The latest problems for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "Os últimos problemas para {{CONSELHO}} {{dentro WARD}} ala relatados por usuários" + +#: db/alert_types.pl:11 +msgid "The latest problems reported by users" +msgstr "Os últimos problemas relatados por usuários" + +#: db/alert_types.pl:15 +msgid "The latest problems reported fixed by users" +msgstr "Os últimos problemas relatados fixado por usuários" + +#: db/alert_types.pl:43 +msgid "The latest problems within {{NAME}}'s boundary reported by users" +msgstr "Os últimos problemas dentro de {{NAME}} 's fronteira relatados por usuários" + +#: db/alert_types_eha.pl:9 +msgid "The latest properties reported back to use by users" +msgstr "As propriedades mais relatadas de usar por usuários" + +#: db/alert_types_eha.pl:20 +msgid "The latest reports for {{COUNCIL}} reported by users" +msgstr "Os últimos relatórios para {{}} CONSELHO relatados por usuários" + +#: db/alert_types_eha.pl:24 +msgid "The latest reports for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "Os últimos relatórios para {{CONSELHO}} {{dentro WARD}} ala relatados por usuários" + +#: db/alert_types_eha.pl:28 +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" +msgstr "As senhas não são iguais" + +#: templates/web/default/errors/page_error_404_not_found.html:10 +#: templates/web/default/errors/page_error_404_not_found.html:12 +msgid "The requested URL '%s' was not found on this server" +msgstr " A URL solicitada '%s' não foi encontrada neste servidor" + +#: templates/web/default/alert/_list.html:14 +#: templates/web/fixmystreet/alert/_list.html:16 +msgid "The simplest alert is our geographic one:" +msgstr "O alerta mais simples é o nosso único ponto localizaçao geográfica:" + +#: templates/web/barnet/report/new/councils_text_all.html:3 +#: templates/web/default/report/new/councils_extra_text.html:1 +#: templates/web/default/report/new/councils_text_some.html:10 +#: templates/web/default/report/new/councils_text_some.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:17 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:12 +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: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." + +#: perllib/FixMyStreet/App/Controller/Contact.pm:116 +#: perllib/FixMyStreet/App/Controller/Dashboard.pm:59 +msgid "There was a problem showing this page. Please try again later." +msgstr "Houve um problema mostrada nesta página. Por favor, tente novamente mais tarde." + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:747 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:134 +#: templates/web/default/auth/general.html:23 +#: templates/web/fixmystreet/auth/general.html:24 +#: templates/web/seesomething/auth/general.html:24 +#: templates/web/zurich/auth/general.html:28 +msgid "There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the ‘sign in by email’ section of the form." +msgstr "Houve um problema com o email / combinação de senha. Se você não lembra da sua senha, ou não tiver um, por favor preencha o \"sinal de colocar e-mail 'seção do formulário." + +#: perllib/FixMyStreet/App/Controller/Alert.pm:355 +msgid "There was a problem with your email/password combination. Please try again." +msgstr "Houve um problema com o email / combinação de senha. Por favor, tente novamente." + +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:272 +msgid "There was a problem with your update. Please try again." +msgstr "Houve um problema com a sua atualização. Por favor, tente novamente." + +#: perllib/FixMyStreet/App/Controller/Contact.pm:120 +msgid "There were problems with your report. Please see below." +msgstr "Houve problemas com o seu relatório. Por favor, veja abaixo." + +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:299 +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." + +#: 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: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" +msgstr "Esta informação é necessária" + +#: templates/web/default/debug_header.html:3 +msgid "This is a developer site; things might break at any time, and the database will be periodically deleted." +msgstr "Este é um site do desenvolvedor, as coisas podem quebrar a qualquer momento, e o banco de dados serão apagados periodicamente." + +#: templates/web/fixmybarangay/reports/index.html:7 +msgid "This is a summary of all reports on this site; select a particular barangay to see the reports sent there." +msgstr "Este é um resumo de todos os relatórios sobre este site, selecionar um barangay especial para ver os relatórios enviados para lá.." + +#: templates/web/emptyhomes/reports/index.html:4 +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 "" + +#: templates/web/default/reports/index.html:7 +#: templates/web/fiksgatami/nn/reports/index.html:4 +#: templates/web/fiksgatami/reports/index.html:4 +msgid "This is a summary of all reports on this site; select a particular council to see the reports sent there." +msgstr "Este é um resumo de todos os relatórios sobre este site, selecionar um conselho especial para ver os relatórios enviados para lá." + +#: templates/web/default/auth/token.html:9 +msgid "This may be because the link is too old or already used, or the address was not copied correctly." +msgstr "Isso pode ser porque o link é velho demais ou já foi utilizado, ou o endereço não foi copiado corretamente." + +#: templates/web/default/report/banner.html:15 +msgid "This problem has been closed" +msgstr "Este problema esta solucionado." + +#: templates/web/bromley/report/display.html:98 +#: templates/web/default/report/banner.html:12 +#: templates/web/default/report/update-form.html:48 +#: templates/web/emptyhomes/report/banner.html:3 +#: templates/web/fixmystreet/report/update-form.html:46 +msgid "This problem has been fixed" +msgstr "Este problema foi resolvido" + +#: templates/web/bromley/report/display.html:92 +#: templates/web/default/report/update-form.html:43 +#: templates/web/fixmystreet/report/update-form.html:40 +msgid "This problem has not been fixed" +msgstr "Este problema não foi corrigido" + +#: templates/web/default/report/banner.html:19 +msgid "This problem is in progress" +msgstr "Este problema está em progresso" + +#: templates/web/default/report/banner.html:9 +msgid "This problem is old and of unknown status." +msgstr "Este problema é antigo e de status desconhecido." + +#: 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." + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:86 +msgid "This report is currently marked as closed." +msgstr "Este relatório está marcado como fechado." + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:84 +msgid "This report is currently marked as fixed." +msgstr "Este relatório está marcado como fixo." + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:88 +msgid "This report is currently marked as open." +msgstr "Este relatório está marcado como aberto." + +#: 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: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:1178 +#: templates/web/default/admin/timeline.html:1 +msgid "Timeline" +msgstr "Timeline" + +#: templates/web/default/admin/flagged.html:15 +#: templates/web/default/admin/reports.html:12 +msgid "Title" +msgstr "Titulo" + +#: templates/web/default/around/_report_banner.html:2 +msgid "To <strong>report a problem</strong>, click on the map at the correct location." +msgstr "Para <strong> relatar um problema </strong>, clique no mapa no local correto." + +#: templates/web/default/alert/index.html:27 +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: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: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 "Total" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:24 +msgid "Transport Category" +msgstr "Categoria Transporte" + +#: templates/web/default/js/translation_strings.html:29 +#: templates/web/oxfordshire/js/translation_strings.html:23 +msgid "Try again" +msgstr "Tente novamente" + +#: 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 "Unable to fix" +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:48 +#: templates/web/zurich/admin/report_edit.html:61 +#: templates/web/zurich/admin/update_edit.html:18 +msgid "Unconfirmed" +msgstr "Não confirmado" + +#: templates/web/fixmystreet/report/banner.html:9 +msgid "Unknown" +msgstr "Desconhecido" + +#: perllib/FixMyStreet/App/Controller/Rss.pm:173 +msgid "Unknown alert type" +msgstr "Tipo de alerta desconhecido" + +#: templates/web/default/js/translation_strings.html:39 +#: templates/web/oxfordshire/js/translation_strings.html:33 +msgid "Unknown error" +msgstr "Erro desconhecido" + +#: perllib/FixMyStreet/App/Controller/Report.pm:106 +msgid "Unknown problem ID" +msgstr "Desconhecido problema com ID" + +#: templates/web/bromley/report/display.html:66 +#: templates/web/fixmystreet/report/update-form.html:19 +msgid "Update" +msgstr "Actualizar" + +#: templates/web/default/admin/timeline.html:33 +msgid "Update %s created for problem %d; by %s" +msgstr "Atualize %s criado para o problema de %d; por %s" + +#: templates/web/default/contact/index.html:21 +#: templates/web/fixmystreet/contact/index.html:34 +msgid "Update below added anonymously at %s" +msgstr "Atualize abaixo colocado de forma anónima em %s" + +#: templates/web/default/contact/index.html:23 +#: templates/web/fixmystreet/contact/index.html:36 +msgid "Update below added by %s at %s" +msgstr "Actualizar abaixo adicionado por %s em %s" + +#: 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:38 +msgid "Update breakdown by state" +msgstr "Atualize repartição por Estado" + +#: db/alert_types.pl:7 +msgid "Update by {{name}}" +msgstr "Atualize por {{name}}" + +#: templates/web/default/admin/update_edit.html:42 +#: templates/web/zurich/admin/update_edit.html:25 +msgid "Update changed problem state to %s" +msgstr "Alterado a actualizaçao do estado do problema para %s" + +#: templates/web/default/admin/update_edit.html:44 +msgid "Update marked problem as fixed" +msgstr "Atualizaçao do problema marcado como fixo" + +#: templates/web/default/admin/update_edit.html:46 +msgid "Update reopened problem" +msgstr "Reaberto a actualizaçao do problema" + +#: templates/web/default/admin/body.html:83 +msgid "Update statuses" +msgstr "Atualizar status" + +#: templates/web/default/report/update-form.html:22 +msgid "Update:" +msgstr "Actualizar:" + +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Updated" +msgstr "Atualizado" + +#: 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:24 +#: templates/web/zurich/report/updates.html:2 +msgid "Updates" +msgstr "Actualizaçoes" + +#: 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" + +#: db/alert_types.pl:5 db/alert_types.pl:6 +msgid "Updates on {{title}}" +msgstr "Atualizações sobre {{título}}" + +#: templates/web/bromley/report/display.html:0 +#: templates/web/bromley/report/display.html:8 +#: templates/web/default/report/display.html:0 +#: templates/web/default/report/display.html:5 +#: templates/web/fixmystreet/report/display.html:0 +#: templates/web/fixmystreet/report/display.html:8 +msgid "Updates to this problem, FixMyStreet" +msgstr "Atualizações para este problema, FixMyStreetMindelo" + +#: 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:1314 +msgid "User flagged" +msgstr "Usuário sinalizado" + +#: 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:371 +#: perllib/FixMyStreet/App/Controller/Admin.pm:401 +msgid "Values updated" +msgstr "Valores atualizados" + +#: templates/web/default/admin/report_edit.html:18 +#: templates/web/default/admin/update_edit.html:18 +#: templates/web/zurich/admin/report_edit-sdm.html:24 +#: templates/web/zurich/admin/report_edit.html:23 +#: templates/web/zurich/admin/update_edit.html:10 +msgid "View report on site" +msgstr "Ver relatório no site" + +#: templates/web/default/reports/body.html:14 +msgid "View reports by ward" +msgstr "Exibir relatórios por Ward" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:39 +msgid "View your report" +msgstr "Ver o seu relatório" + +#: templates/web/default/around/display_location.html:0 +#: templates/web/default/around/display_location.html:34 +#: templates/web/seesomething/around/display_location.html:0 +#: templates/web/seesomething/around/display_location.html:16 +msgid "Viewing a location" +msgstr "Visualizando um local" + +#: templates/web/bromley/report/display.html:0 +#: templates/web/default/report/display.html:0 +#: templates/web/fixmystreet/report/display.html:0 +msgid "Viewing a problem" +msgstr "Visualizando um problema" + +#: templates/web/default/reports/body.html:16 +msgid "Wards of this council" +msgstr "Wards deste conselho" + +#: templates/web/default/alert/choose.html:6 +#: templates/web/default/around/around_index.html:13 +#: templates/web/fixmystreet/around/around_index.html:16 +#: templates/web/seesomething/around/around_index.html:13 +msgid "We found more than one match for that location. We show up to ten matches, please try a different search if yours is not here." +msgstr "Encontramos mais de uma correspondência para essa localização. Mostramos até dez partidas, por favor tente uma pesquisa diferente se não estiver aqui." + +#: templates/web/default/auth/token.html:8 +msgid "We have not been able to confirm your account - sorry." +msgstr "Nós não temos sido capazes de confirmar a sua conta - desculpe." + +#: templates/web/default/auth/token.html:16 +msgid "We have sent you an email containing a link to confirm your account." +msgstr "Nós enviamos um e-mail contendo um link para confirmar sua conta." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:18 +#: templates/web/emptyhomes/tokens/confirm_problem.html:20 +msgid "We may contact you periodically to ask if anything has changed with the property you reported." +msgstr "Podemos contactá-lo periodicamente para perguntar se alguma coisa mudou com a propriedade que você relatou." + +#: templates/web/bromley/report/display.html:143 +#: templates/web/fixmystreet/report/update-form.html:115 +msgid "We never show your email" +msgstr "Nós nunca divulgaremos o seu e-mail" + +#: templates/web/bromley/report/new/fill_in_details_form.html:133 +#: templates/web/bromley/report/new/fill_in_details_form.html:179 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:134 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:201 +#: templates/web/zurich/report/new/fill_in_details_form.html:96 +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: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." + +#: templates/web/default/index-steps.html:31 +msgid "We send it to the council on your behalf" +msgstr "Nós enviá-lo para o conselho em seu nome" + +#: templates/web/bromley/report/new/fill_in_details_form.html:217 +#: templates/web/default/report/new/notes.html:5 +#: templates/web/fixmybarangay/report/new/notes.html:5 +msgid "We will only use your personal information in accordance with our <a href=\"/faq#privacy\">privacy policy.</a>" +msgstr "Nós só usamos as suas informações pessoais de acordo com a nossa <a href=\"/faq#privacy\">política de privacidade.</a>" + +#: templates/web/fixmystreet/report/new/notes.html:4 +#: templates/web/oxfordshire/report/new/notes.html:4 +msgid "We will only use your personal information in accordance with our <a href=\"/privacy\">privacy policy.</a>" +msgstr "Nós só usamos as suas informações pessoais de acordo com a nossa <a href=\"/privacy\"> política de privacidade.</a>" + +#: templates/web/emptyhomes/contact/blurb.html:2 +msgid "We’d love to hear what you think about this website. Just fill in the form. Please don’t contact us about individual empty homes; use the box accessed from <a href=\"/\">the front page</a>." +msgstr "Adoraríamos ouvir o que você pensa sobre este website. Basta preencher o formulário.Dê a sua openiao sobre fixmystreetMindelo. Por favor, não entre em contato conosco sobre casas vazias individuais; usar a caixa acessado a partir <a href=\"/\"> primeira página </a>." + +#: templates/web/default/contact/blurb.html:8 +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:61 +#: templates/web/default/admin/body_edit.html:82 +#: templates/web/zurich/admin/body.html:17 +msgid "When edited" +msgstr "Quando editar" + +#: templates/web/default/admin/problem_row.html:35 +msgid "When sent" +msgstr "Quando enviar" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:621 +msgid "Whole block of empty flats" +msgstr "Bloco inteiro de apartamentos vazios" + +#: templates/web/default/open311/index.html:94 +msgid "With request searches, it is also possible to search for agency_responsible to limit the requests to those sent to a single administration. The search term is the administration ID provided by <a href=\"%s\">MaPit</a>." +msgstr "Com o pedido de pesquisa, também é possível pesquisar agency_responsavel para limitar as solicitações às enviados para uma única administração. O termo de pesquisa é a identificação de administração fornecidos pela <a href=\"%s\"> MapIt </a>." + +#: templates/web/fixmystreet/footer.html:21 +#: templates/web/stevenage/footer.html:22 +msgid "Would you like better integration with FixMyStreet? <a href=\"http://www.mysociety.org/for-councils/fixmystreet/\">Find out about FixMyStreet for councils</a>." +msgstr "Gostaria de uma melhor integração com FixMyStreet <a href=\"http://www.mysociety.org/for-councils/fixmystreet/\"> Descobre FixMyStreet para os conselhos </a>." + +#: templates/web/fixmystreet/footer.html:17 +#: templates/web/stevenage/footer.html:18 +msgid "Would you like to contribute to FixMyStreet? Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>." +msgstr "Gostaria de contribuir para FixMyStreet Nosso código é open source e <a href=\"http://github.com/mysociety/fixmystreet\"> disponível no GitHub </a>." + +#: templates/web/default/questionnaire/index.html:106 +#: templates/web/fixmystreet/questionnaire/index.html:96 +msgid "Would you like to receive another questionnaire in 4 weeks, reminding you to check the status?" +msgstr "Gostaria de receber um questionário em 4 semanas, lembrando que você verifique o status?" + +#: templates/web/default/report/new/notes.html:8 +#: templates/web/fixmybarangay/report/new/notes.html:8 +#: templates/web/fixmystreet/report/new/notes.html:8 +#: templates/web/oxfordshire/report/new/notes.html:7 +msgid "Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation." +msgstr "Escrever a mensagem inteiramente em letras maiúsculas torna difícil de ler, assim como a falta de pontuação." + +#: templates/web/default/admin/stats.html:10 +msgid "Year" +msgstr "Ano" + +#: 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 "Sim" + +#: templates/web/bromley/report/display.html:157 +#: templates/web/bromley/report/new/fill_in_details_form.html:198 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:161 +#: templates/web/fixmystreet/report/update-form.html:89 +msgid "Yes I have a password" +msgstr "Sim, tenho uma password" + +#: templates/web/default/contact/index.html:37 +#: templates/web/fixmystreet/contact/index.html:50 +msgid "You are reporting the following problem report for being abusive, containing personal information, or similar:" +msgstr "Você está reportando o seguinte relatório de problema por ser abusiva, contendo informações pessoais, ou similar:" + +#: templates/web/default/contact/index.html:15 +#: templates/web/fixmystreet/contact/index.html:28 +msgid "You are reporting the following update for being abusive, containing personal information, or similar:" +msgstr "Você está reportando a seguinte atualização por ser abusiva, contendo informações pessoais, ou similar:" + +#: templates/web/default/tokens/confirm_problem.html:19 +#: templates/web/default/tokens/confirm_problem.html:21 +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:8 +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 +#: 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 "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/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" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:38 +msgid "You have already answered this questionnaire. If you have a question, please <a href='%s'>get in touch</a>, or <a href='%s'>view your problem</a>.\n" +msgstr "Você já respondeu a este questionário. Se você tem uma pergunta, por favor <a href='%s'> entrar em contato </a>, ou <a href='%s'> ver o seu problema </a>. \n" + +#: templates/web/bromley/report/new/fill_in_details_form.html:97 +#: templates/web/default/questionnaire/index.html:96 +#: templates/web/default/report/new/fill_in_details_form.html:93 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:90 +#: templates/web/fixmystreet/questionnaire/index.html:87 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:99 +#: templates/web/seesomething/report/new/fill_in_details_form.html:59 +#: templates/web/zurich/report/new/fill_in_details_form.html:75 +msgid "You have already attached a photo to this report, attaching another one will replace it." +msgstr "Você já anexou uma foto com este relatório, anexando outro irá substituí-lo." + +#: templates/web/bromley/report/display.html:108 +#: templates/web/default/report/update-form.html:59 +#: templates/web/fixmystreet/report/update-form.html:56 +msgid "You have already attached a photo to this update, attaching another one will replace it." +msgstr "Você já anexou uma foto a esta atualização, anexando outra irá substituí-la." + +#: templates/web/default/auth/sign_out.html:3 +#: templates/web/seesomething/auth/sign_out.html:3 +#: templates/web/zurich/auth/sign_out.html:3 +msgid "You have been signed out" +msgstr "Voce foi logado fora" + +#: templates/web/bromley/report/new/fill_in_details_form.html:25 +#: templates/web/default/report/new/fill_in_details_form.html:7 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:7 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:28 +#: templates/web/zurich/report/new/fill_in_details_form.html:13 +msgid "You have located the problem at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. " +msgstr "Você localizou o problema no ponto marcado com um pino verde no mapa. Se este não é o local correto, basta clicar no mapa novamente." + +#: templates/web/default/tokens/confirm_alert.html:7 +msgid "You have successfully confirmed your alert." +msgstr "Você confirmou com sucesso o seu alerta." + +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:6 +msgid "You have successfully confirmed your email address." +msgstr "Você confirmou com sucesso o seu endereço de e-mail." + +#: templates/web/default/tokens/confirm_problem.html:14 +#: templates/web/default/tokens/confirm_problem.html:15 +msgid "You have successfully confirmed your problem" +msgstr "Você confirmou com sucesso o seu problema" + +#: templates/web/default/tokens/confirm_update.html:11 +#: templates/web/default/tokens/confirm_update.html:12 +msgid "You have successfully confirmed your update and you can now <a href=\"%s\">view it on the site</a>." +msgstr "Você confirmou com êxito a sua atualização e agora você pode <a href=\"%s\"> vê-lo no site </a>." + +#: templates/web/default/tokens/confirm_alert.html:11 +msgid "You have successfully created your alert." +msgstr "Você criou com sucesso o seu alerta." + +#: templates/web/default/tokens/confirm_alert.html:9 +msgid "You have successfully deleted your alert." +msgstr "Você removeu com sucesso o seu alerta." + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:754 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:140 +msgid "You have successfully signed in; please check and confirm your details are accurate:" +msgstr "Você se inscreveu com sucesso nos, por favor, verificar e confirmar os seus dados estão correctos:" + +#: templates/web/default/email_sent.html:13 +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?" + +#: templates/web/default/my/my.html:0 templates/web/default/my/my.html:14 +#: templates/web/default/my/my.html:3 templates/web/fixmystreet/my/my.html:0 +#: templates/web/fixmystreet/my/my.html:14 +#: templates/web/fixmystreet/my/my.html:3 +msgid "Your Reports" +msgstr "Seus relatorios" + +#: templates/web/bromley/report/display.html:41 +#: templates/web/bromley/report/display.html:43 +#: templates/web/bromley/report/new/fill_in_details_form.html:145 +#: templates/web/fixmystreet/alert/_list.html:89 +#: templates/web/fixmystreet/alert/updates.html:19 +#: templates/web/fixmystreet/alert/updates.html:22 +#: templates/web/fixmystreet/contact/index.html:84 +#: templates/web/fixmystreet/report/display.html:65 +#: templates/web/fixmystreet/report/display.html:67 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:115 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:147 +#: templates/web/zurich/report/new/fill_in_details_form.html:88 +msgid "Your email" +msgstr "Seu e-mail" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:81 +msgid "Your email (optional)" +msgstr "Seu e-mail (opcional)" + +#: 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 "O seu endereço de email" + +#: templates/web/default/auth/general.html:27 +msgid "Your email address:" +msgstr "O seu endereço de email:" + +#: templates/web/default/alert/_list.html:92 +#: templates/web/default/report/new/fill_in_details_form.html:124 +#: templates/web/default/report/update-form.html:81 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:133 +#: templates/web/fixmybarangay/alert/_list.html:37 +msgid "Your email:" +msgstr "Seu e-mail:" + +#: templates/web/bromley/report/display.html:195 +#: templates/web/bromley/report/new/fill_in_details_form.html:117 +#: templates/web/bromley/report/new/fill_in_details_form.html:164 +msgid "Your first name" +msgstr "Nome" + +#: templates/web/fixmystreet/report/updates-sidebar-notes.html:5 +msgid "Your information will only be used in accordance with our <a href=\"/privacy\">privacy policy</a>" +msgstr "Suas informações só serão utilizadas de acordo com nossa <a href=\"/privacy\"> política de privacidade </a>" + +#: templates/web/bromley/report/display.html:201 +#: templates/web/bromley/report/new/fill_in_details_form.html:123 +#: templates/web/bromley/report/new/fill_in_details_form.html:170 +msgid "Your last name" +msgstr "Apelido" + +#: 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 "Nome" + +#: templates/web/default/auth/general.html:59 +#: templates/web/default/contact/index.html:68 +#: templates/web/default/report/new/fill_in_details_form.html:203 +#: templates/web/default/report/update-form.html:151 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:124 +msgid "Your name:" +msgstr "Nome" + +#: templates/web/bromley/report/display.html:162 +#: templates/web/bromley/report/new/fill_in_details_form.html:203 +#: templates/web/fixmystreet/auth/general.html:41 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:166 +#: templates/web/fixmystreet/report/update-form.html:94 +#: templates/web/seesomething/auth/general.html:30 +#: templates/web/zurich/auth/general.html:34 +msgid "Your password" +msgstr "Password" + +#: templates/web/default/auth/change_password.html:6 +msgid "Your password has been changed" +msgstr "Sua password foi alterada" + +#: 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 "Telefone " + +#: templates/web/fixmystreet/questionnaire/index.html:15 +msgid "Your report" +msgstr "Seu relatório" + +#: templates/web/default/report_created.html:6 +msgid "Your report has been created and will shortly be sent." +msgstr "Seu relatório foi criado e será enviado em breve." + +#: 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 "Seus relatórios" + +#: templates/web/default/my/my.html:45 templates/web/fixmystreet/my/my.html:49 +msgid "Your updates" +msgstr "Suas atualizações" + +#: templates/web/default/contact/index.html:76 +msgid "Your email:" +msgstr "Seu e-mail:" + +#: templates/web/default/admin/timeline.html:4 +msgid "by %s" +msgstr "por %s" + +#: templates/web/default/reports/body.html:6 +#: templates/web/default/reports/body.html:7 +msgid "council" +msgstr "conselho" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:649 +msgid "council ref: %s" +msgstr "conselho ref:%s" + +#: 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 "não usar o mapa" + +#: templates/web/default/alert/index.html:33 +#: templates/web/fixmystreet/around/postcode_form.html:20 +#: templates/web/seesomething/around/postcode_form.html:9 +msgid "e.g. ‘%s’ or ‘%s’" +msgstr "por exemplo '%s' ou '%s'" + +#: 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" +msgstr "Última atualizada %s" + +#: perllib/Utils.pm:263 +msgid "less than a minute" +msgstr "menos de um minuto" + +#: templates/web/default/report/updates.html:57 +msgid "marked as a duplicate report" +msgstr "" + +#: templates/web/default/report/updates.html:47 +msgid "marked as action scheduled" +msgstr "" + +#: templates/web/default/report/updates.html:59 +msgid "marked as an internal referral" +msgstr "" + +#: templates/web/default/report/updates.html:49 +msgid "marked as closed" +msgstr "" + +#: templates/web/default/report/updates.html:28 +#: templates/web/default/report/updates.html:51 +msgid "marked as fixed" +msgstr "marcado como fixo" + +#: templates/web/default/report/updates.html:45 +msgid "marked as in progress" +msgstr "" + +#: templates/web/default/report/updates.html:41 +msgid "marked as investigating" +msgstr "" + +#: templates/web/default/report/updates.html:55 +msgid "marked as not the council's responsibility" +msgstr "" + +#: templates/web/default/report/updates.html:43 +msgid "marked as planned" +msgstr "" + +#: templates/web/default/report/updates.html:53 +msgid "marked as unable to fix" +msgstr "" + +#: 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 "n / a" + +#: templates/web/default/alert/_list.html:87 +#: templates/web/fixmybarangay/alert/_list.html:32 +#: templates/web/fixmystreet/alert/_list.html:85 +msgid "or" +msgstr "ou" + +#: 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: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: “%s”" +msgstr "originalmente introduzido: \"%s\"" + +#: templates/web/default/admin/report_edit.html:30 +msgid "other areas:" +msgstr "outras áreas:" + +#: templates/web/default/report/updates.html:29 +#: templates/web/default/report/updates.html:39 +msgid "reopened" +msgstr "reaberto" + +#: templates/web/barnet/header.html:71 templates/web/bromley/header.html:100 +#: templates/web/bromley/header.html:65 +#: templates/web/fixmybarangay/header.html:67 +#: templates/web/fixmystreet/header.html:51 +#: templates/web/oxfordshire/header.html:112 +#: templates/web/oxfordshire/header.html:48 +#: templates/web/stevenage/header.html:98 templates/web/zurich/footer.html:12 +msgid "sign out" +msgstr "sair" + +#: templates/web/bromley/report/new/fill_in_details_form.html:4 +#: templates/web/bromley/report/new/fill_in_details_form.html:7 +#: templates/web/default/report/new/fill_in_details_form.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:14 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:14 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:9 +msgid "the local council" +msgstr "o conselho local" + +#: templates/web/default/report/_main.html:6 +#: templates/web/zurich/report/_main.html:5 +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:362 +msgid "this type of local problem" +msgstr "este tipo de problema local" + +#: perllib/Utils.pm:235 +msgid "today" +msgstr "hoje" + +#: 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 "mapa usado" + +#: templates/web/default/admin/update_edit.html:35 +msgid "user is from same council as problem - %d" +msgstr "usuário é da mesmo conselho do problema - %d" + +#: templates/web/default/admin/update_edit.html:38 +msgid "user is problem owner" +msgstr "usuário é proprietário problema" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:3 +msgid "ward" +msgstr "pendente" + +#: templates/web/default/front/stats.html:17 +#, perl-format +msgid "<big>%s</big> report recently" +msgid_plural "<big>%s</big> reports recently" +msgstr[0] "<big>%s</big> Relatorio recentemente" +msgstr[1] "<big>%s</big> Relatorios recentemente" + +#: perllib/Utils.pm:282 +#, perl-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d hora" +msgstr[1] "%d horas" + +#: templates/web/default/report/_support.html:6 +#, perl-format +msgid "%d supporter" +msgid_plural "%d supporters" +msgstr[0] "%d suppoter" +msgstr[1] "%d supporters" + +#: perllib/Utils.pm:284 +#, perl-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuto" +msgstr[1] "%d minutos" + +#: templates/web/default/front/stats.html:29 +#, perl-format +msgid "<big>%s</big> update on reports" +msgid_plural "<big>%s</big> updates on reports" +msgstr[0] "<big>%s</big> atualização em relatório" +msgstr[1] "<big>%s</big> atualização los Relatorios" + +#: templates/web/emptyhomes/report/new/councils_text_none.html:3 +#, perl-format +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] "Nós ainda não temos detalhes para o conselho, que abrange este local." +msgstr[1] "Nós ainda não temos detalhes para o conselho, que abrange este local." + +#: perllib/Utils.pm:278 +#, perl-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "%d semana" +msgstr[1] "%d semanas" + +#: templates/web/default/front/stats.html:12 +#, perl-format +msgid "<big>%s</big> report in past week" +msgid_plural "<big>%s</big> reports in past week" +msgstr[0] "<big>%s</big> Relatório de semana passada" +msgstr[1] "<big>%s</big> Relatórios de semana passado" + +#: templates/web/default/front/stats.html:23 +#, perl-format +msgid "<big>%s</big> fixed in past month" +msgid_plural "<big>%s</big> fixed in past month" +msgstr[0] "<big>%s</big> fixado no mês passado" +msgstr[1] "<big>%s</big> fixado no mês passado" + +#: templates/web/default/report/new/councils_text_some.html:14 +#, perl-format +msgid "We do <strong>not</strong> yet have details for the other council that covers this location." +msgid_plural "We do <strong>not</strong> yet have details for the other councils that cover this location." +msgstr[0] "Fazemos <strong> não </strong> ainda tem detalhes para os outros conselhos que cobrem este local." +msgstr[1] "Fazemos <strong> não </strong> ainda tem detalhes para os outros conselhos que cobrem este local." + +#: perllib/Utils.pm:280 +#, perl-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "%d dia" +msgstr[1] "%d dias" + +#, 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 "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 new file mode 100644 index 000000000..abcfb3860 --- /dev/null +++ b/locale/sv_SE.UTF-8/LC_MESSAGES/FixMyStreet.po @@ -0,0 +1,4675 @@ +# 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: +# Joel Hansen <johaswe@gmail.com>, 2012 +# jonas <jonas@morus.se>, 2012 +# morusrikard <rikard@morus.se>, 2012-2013 +msgid "" +msgstr "" +"Project-Id-Version: fixmystreet\n" +"Report-Msgid-Bugs-To: matthew@mysociety.org\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" +"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" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:602 +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373 +msgid " and " +msgstr "eller" + +#: templates/web/default/tokens/confirm_problem.html:14 +#: templates/web/default/tokens/confirm_problem.html:17 +msgid " and <strong>we will now send it to the council</strong>" +msgstr " och <strong>vi kommer skicka det till kommunen</strong>" + +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_none.html:11 +#: templates/web/default/report/new/councils_text_none.html:14 +#: templates/web/default/report/new/councils_text_some.html:20 +#: templates/web/default/report/new/councils_text_some.html:23 +#: templates/web/default/report/new/councils_text_some.html:5 +#: templates/web/emptyhomes/report/new/councils_text_all.html:2 +msgid " or " +msgstr "eller" + +#: templates/web/default/admin/bodies.html:46 +msgid "%d addresses" +msgstr "%d adresser" + +#: 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:27 +#: templates/web/zurich/admin/index.html:6 +msgid "%d council contacts – %d confirmed, %d unconfirmed" +msgstr "%d kommuner kontaktade – %d bekräftade, %d obekräftade" + +#: templates/web/default/admin/edit-league.html:12 +msgid "%d edits by %s" +msgstr "%d ändringar av %s" + +#: templates/web/default/admin/index.html:24 +msgid "%d live updates" +msgstr "%d uppdateringar" + +#: templates/web/default/admin/index.html:26 +msgid "%d questionnaires sent – %d answered (%s%%)" +msgstr "%d frågeformulär skickade – %d besvarade (%s%%)" + +#: templates/web/default/pagination.html:10 +msgid "%d to %d of %d" +msgstr "" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:22 +msgid "%s - Summary reports" +msgstr "%s - Sammanställningsrapporter" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:651 +msgid "%s ref: %s" +msgstr "%s ref: %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:276 perllib/FixMyStreet/Cobrand/UK.pm:288 +msgid "%s ward, %s" +msgstr "Administrativa området %s, %s" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:538 +msgid "%s, reported at %s" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/UK.pm:303 perllib/FixMyStreet/Cobrand/UK.pm:315 +msgid "%s, within %s ward" +msgstr "%s inom det administrativa området %s" + +#: templates/web/default/email_sent.html:29 +msgid "(Don't worry — we'll hang on to your alert while you're checking your email.)" +msgstr "" + +#: templates/web/default/email_sent.html:25 +msgid "(Don't worry — we'll hang on to your problem report while you're checking your email.)" +msgstr "" + +#: templates/web/default/email_sent.html:27 +msgid "(Don't worry — 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:29 +msgid "(Email in abuse table)" +msgstr "(Epost i missbrukstabellen)" + +#: templates/web/default/alert/_list.html:20 +#: templates/web/fixmystreet/alert/_list.html:24 +msgid "(a default distance which covers roughly 200,000 people)" +msgstr "(ett avstånd som täcker ungefär 200,000 invånare)" + +#: templates/web/default/alert/_list.html:25 +#: templates/web/fixmystreet/alert/_list.html:28 +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 +#: templates/web/zurich/report/_item.html:21 +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 +#: templates/web/zurich/report/_item.html:19 +msgid "(fixed)" +msgstr "(fixad)" + +#: 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 "(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)" +msgstr "(ej skickat till kommunen)" + +#: templates/web/default/report/new/fill_in_details_form.html:217 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:140 +#: templates/web/zurich/report/new/fill_in_details_form.html:100 +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)" +msgstr "(skickat till båda)" + +#: templates/web/default/report/new/fill_in_details_form.html:211 +msgid "(we never show your email address or phone number)" +msgstr "(vi visar aldrig din epostadress eller telefonnummer)" + +#: templates/web/default/report/update-form.html:158 +msgid "(we never show your email)" +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:379 +msgid "-- Pick a category --" +msgstr "-- Välj en katagori --" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:618 +#: perllib/FixMyStreet/DB/Result/Problem.pm:385 +msgid "-- Pick a property type --" +msgstr "-- Välj en fastighetstyp --" + +#: templates/web/emptyhomes/front/stats.html:5 +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’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>" + +#: templates/web/fiksgatami/questionnaire/completed-open.html:1 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try <a href=\"http://www.norge.no/styresmakter/\">writing\n" +"direct to your councillor(s)</a> or, if it’s a problem that could be\n" +"fixed by local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "<p style=\"font-size:150%\">Vi är ledsna över att höra att problemet inte åtgärdats. Du kan prova att skriva direkt till din kommun för att uppmana dem att åtgärda problemet.</p>" + +#: templates/web/fixmystreet/questionnaire/completed-open.html:6 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try <a href=\"http://www.writetothem.com/\">writing direct\n" +"to your councillor(s)</a> or, if it’s a problem that could be fixed by\n" +"local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "<p style=\"font-size:150%\">Vi är ledsna över att höra att problemet inte åtgärdats. Du kan prova att skriva direkt till din kommun för att uppmana dem att åtgärda problemet.</p>" + +#: templates/web/default/questionnaire/completed-open.html:6 +msgid "" +"<p style=\"font-size:150%\">We’re sorry to hear that. We have two\n" +"suggestions: why not try writing to your local representative or, if it’s\n" +"a problem that could be fixed by local people working together, why not\n" +"<a href=\"http://www.pledgebank.com/new\">make and publicise a pledge</a>?\n" +"</p>" +msgstr "<p style=\"font-size:150%\">Vi är ledsna över att höra att problemet inte åtgärdats. Du kan prova att skriva direkt till din kommun för att uppmana dem att åtgärda problemet.</p>" + +#: templates/web/default/questionnaire/index.html:35 +msgid "" +"<p>Getting empty homes back into use can be difficult, but by now a good council\n" +"will have made a lot of progress and reported what they have done on the\n" +"website. Even so properties can remain empty for many months if the owner is\n" +"unwilling or the property is in very poor repair. If nothing has happened or\n" +"you are not satisfied with the progress the council is making, now is the right\n" +"time to say so. We think it’s a good idea to contact some other people who\n" +"may be able to help or put pressure on the council For advice on how to do\n" +"this and other useful information please go to <a\n" +"href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +msgstr "<p>Att få tomma byggnader i användningen igen kan vara svårt, men vid det här laget så borde en bra kommun ha gjort en hel del framsteg och rapporterat vad de har gjort på sin websida. Trots det så kan byggnader vara tomma under flera månader om ägaren inte samarbetar eller om byggnaden har ett större renoveringsbehov. Om ingenting har hänt, eller om du är missnöjd med de framsteg som kommunen gör är det här rätt tillfälle att säga så. Vi tror att det är en bra idé att kontakta några andra personer som också kan hjälpa till med att trycka på kommunen. För hjälp om hur du kan göra det, och annan viktig information, besök <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" + +#: templates/web/default/questionnaire/index.html:26 +msgid "" +"<p>Getting empty homes back into use can be difficult. You shouldn’t expect\n" +"the property to be back into use yet. But a good council will have started work\n" +"and should have reported what they have done on the website. If you are not\n" +"satisfied with progress or information from the council, now is the right time\n" +"to say. You may also want to try contacting some other people who may be able\n" +"to help. For advice on how to do this and other useful information please\n" +"go to <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" +msgstr "<p>Att få tomma byggnader i användningen igen kan vara svårt. Du kan inte förvänta sig att byggnaden ska ha kommit i användning igen redan, men en bra kommun bör ha påbörjat arbetet och rapporterat vad de har gjort på sin websida. Om du är missnöjd med de framsteg som kommunen gör är det här rätt tillfälle att säga så. Vi tror att det är en bra idé att kontakta några andra personer som också kan hjälpa till med att trycka på kommunen. För hjälp om hur du kan göra det, och annan viktig information, besök <a href=\"http://www.emptyhomes.com/getinvolved/campaign.html\">http://www.emptyhomes.com/getinvolved/campaign.html</a>.</p>\n" + +#: templates/web/default/questionnaire/completed.html:9 +msgid "" +"<p>Thank you very much for filling in our questionnaire; if you\n" +"get some more information about the status of your problem, please come back to the\n" +"site and leave an update.</p>" +msgstr "<p>Tack för att du fyllt i vår enkät. Om du får ytterligare information om statusen på ditt problem är vi tacksamma om du återkommer och lämnar en uppdatering.</p>" + +#: templates/web/default/around/_report_banner.html:3 +#: templates/web/default/around/_report_banner.html:5 +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:22 +#: templates/web/zurich/admin/index.html:4 +msgid "<strong>%d</strong> live problems" +msgstr "<strong>%d</strong> aktuella problem" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:183 +msgid "<strong>No</strong> Let me confirm my report by email" +msgstr "<strong>Nej</strong> Låt mig bekräfta min rapport via epost" + +#: templates/web/fixmystreet/report/update-form.html:110 +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:51 +msgid "<strong>No</strong> let me sign in by email" +msgstr "<strong>Nej</strong> Låt mig logga in med min epostadress" + +#: templates/web/default/auth/general.html:55 +msgid "<strong>No</strong>, I do not, let me sign in by email:" +msgstr "<strong>Nej</strong>, det vill jag inte, låt mig logga in med min epostadress:" + +#: templates/web/default/report/new/fill_in_details_form.html:162 +msgid "<strong>No</strong>, let me confirm my report by email:" +msgstr "<strong>Nej<strong>, låt mig bekräfta min rapport via epost:" + +#: templates/web/default/report/update-form.html:117 +msgid "<strong>No</strong>, let me confirm my update by email:" +msgstr "<strong>Nej</strong>, låt mig bekräfta min uppdatering via epost:" + +#: templates/web/default/auth/general.html:37 +#: templates/web/default/report/new/fill_in_details_form.html:140 +#: templates/web/default/report/update-form.html:95 +#: templates/web/fixmystreet/auth/general.html:36 +#: templates/web/fixmystreet/auth/general.html:38 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:159 +#: templates/web/fixmystreet/report/update-form.html:87 +msgid "<strong>Yes</strong> I have a password" +msgstr "<strong>Ja</strong>, jag har ett lösenord" + +#: templates/web/default/static/about-en-gb.html:1 +#: templates/web/default/static/about-en-gb.html:3 +#: templates/web/emptyhomes/header.html:34 +#: templates/web/emptyhomes/static/about-cy.html:1 +#: templates/web/emptyhomes/static/about-cy.html:3 +#: templates/web/emptyhomes/static/about-en-gb.html:1 +#: templates/web/emptyhomes/static/about-en-gb.html:3 +msgid "About us" +msgstr "Om oss" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:81 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:39 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 +msgid "Action Scheduled" +msgstr "" + +#: 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:88 +#: templates/web/zurich/admin/body.html:30 +msgid "Add new category" +msgstr "Ny kategori" + +#: templates/web/default/admin/users.html:45 +msgid "Add user" +msgstr "" + +#: templates/web/default/my/my.html:56 templates/web/fixmystreet/my/my.html:60 +msgid "Added %s" +msgstr "Lades till %s" + +#: templates/web/default/auth/change_password.html:29 +msgid "Again:" +msgstr "Igen:" + +#: templates/web/default/admin/timeline.html:35 +msgid "Alert %d created for %s, type %s, parameters %s / %s" +msgstr "Bevakning %d skapad för %s av typen %s med parametrarna %s/%s" + +#: templates/web/default/admin/timeline.html:37 +msgid "Alert %d disabled (created %s)" +msgstr "Bevakning %d avaktiverad (skapad %s)" + +#: templates/web/bromley/report/display.html:209 +#: templates/web/default/report/update-form.html:163 +#: templates/web/fixmystreet/report/update-form.html:148 +msgid "Alert me to future updates" +msgstr "Varsko mig om framtida uppdateringar" + +#: templates/web/default/reports/index.html:3 +#: templates/web/fixmybarangay/reports/index.html:3 +#: templates/web/zurich/admin/stats.html:5 +#: templates/web/zurich/reports/index.html:15 +msgid "All Reports" +msgstr "Alla rapporter" + +#: 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 "Alla rapporter" + +#: templates/web/default/admin/stats.html:5 +#: templates/web/zurich/admin/stats.html:8 +msgid "All reports between %s and %s" +msgstr "Alla rapporter mellan %s och %s" + +#: templates/web/default/report/new/councils_text_some.html:2 +msgid "All the information you provide here will be sent to" +msgstr "All information du anger här kommer att skickas till" + +#: templates/web/default/report/new/councils_text_all.html:11 +#: templates/web/default/report/new/councils_text_all.html:13 +msgid "All the information you provide here will be sent to <strong>%s</strong> or <strong>Roads Service</strong>." +msgstr "All information du anger här kommer att skickas till ansvariga i <strong>%s</strong> eller <strong>Trafikverket</strong>." + +#: templates/web/default/report/new/councils_text_all.html:4 +#: templates/web/default/report/new/councils_text_all.html:6 +msgid "All the information you provide here will be sent to <strong>%s</strong> or a relevant local body such as <strong>TfL</strong>, via the London Report-It system." +msgstr "All information du anger här kommer att skickas till ansvariga i <strong>%s</strong> eller annan relevant kommunal verksamhet." + +#: templates/web/bromley/report/new/fill_in_details_form.html:4 +#: templates/web/bromley/report/new/fill_in_details_form.html:6 +#: templates/web/default/report/new/councils_text_all.html:18 +#: templates/web/default/report/new/councils_text_all.html:20 +#: templates/web/default/report/new/fill_in_details_form.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:13 +#: templates/web/emptyhomes/report/new/councils_text_all.html:2 +#: templates/web/emptyhomes/report/new/councils_text_all.html:4 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:13 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:8 +msgid "All the information you provide here will be sent to <strong>%s</strong>." +msgstr "All information du anger här kommer att skickas till ansvariga i <strong>%s</strong>." + +#: templates/web/default/questionnaire/index.html:60 +#: templates/web/fixmystreet/questionnaire/index.html:54 +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:32 +#: templates/web/default/admin/problem_row.html:20 +msgid "Anonymous" +msgstr "Anonym" + +#: templates/web/default/admin/report_edit.html:62 +#: templates/web/default/admin/update_edit.html:23 +msgid "Anonymous:" +msgstr "Anonym:" + +#: templates/web/default/footer.html:26 +msgid "Are you a <strong>developer</strong>? Would you like to contribute to FixMyStreet?" +msgstr "Är du en <strong>utvecklare</strong>? Skulle du vilja bidra till FixaMinGata?" + +#: templates/web/fixmystreet/footer.html:16 +#: templates/web/stevenage/footer.html:17 +msgid "Are you a developer?" +msgstr "Är du en utvecklare?" + +#: templates/web/fixmystreet/footer.html:20 +#: templates/web/stevenage/footer.html:21 +msgid "Are you from a council?" +msgstr "Arbetar du på en kommun?" + +#: 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:144 +#: templates/web/zurich/admin/stats.html:36 +msgid "Assign to different category:" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:153 +msgid "Assign to external body:" +msgstr "" + +#: 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:141 +#: templates/web/zurich/report/updates.html:11 +msgid "Assigned to %s" +msgstr "" + +#: templates/web/default/open311/index.html:86 +msgid "At most %d requests are returned in each query. The returned requests are ordered by requested_datetime, so to get all requests, do several searches with rolling start_date and end_date." +msgstr "Som mest returneras %d svar i varje förfrågan. De returnerade svaren är sorterade efter requested_datetime. Om du vill få alla svar måste du göra flera sökningar med rullande start_date och end_date." + +#: templates/web/default/open311/index.html:78 +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:334 +#: templates/web/zurich/report/_item.html:11 +msgid "Awaiting moderation" +msgstr "" + +#: templates/web/default/js/translation_strings.html:32 +#: templates/web/oxfordshire/js/translation_strings.html:26 +msgid "Back" +msgstr "Tillbaka" + +#: templates/web/default/admin/report_blocks.html:11 +msgid "Ban email address" +msgstr "Förbjud epostadress" + +#: templates/web/fixmybarangay/report/new/notes.html:7 +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: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: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:32 +msgid "Body:" +msgstr "" + +#: templates/web/fiksgatami/footer.html:16 +#: templates/web/fiksgatami/nn/footer.html:16 +msgid "Built by <a href=\"http://www.mysociety.org/\">mySociety</a> and maintained by <a href=\"http://www.nuug.no/\">NUUG</a>" +msgstr "Byggt av <a href=\"http://www.mysociety.org/\">mySociety</a> och underhålls av <a href=\"http://www.ffkp.se/\">FFKP</a>" + +#: templates/web/default/admin/stats.html:80 +msgid "By Date" +msgstr "Efter datum" + +#: templates/web/fixmystreet/around/_report_banner.html:10 +#: templates/web/fixmystreet/around/_report_banner.html:8 +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: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 "Kategori" + +#: 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: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 "Kategori:" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366 +msgid "Category: %s" +msgstr "Kategori: %s" + +#: templates/web/default/auth/change_password.html:1 +#: templates/web/default/auth/change_password.html:3 +#: templates/web/default/auth/change_password.html:33 +msgid "Change Password" +msgstr "Ända lösenord" + +#: 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" + +#: 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 +#: 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 "Stängd" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:744 +msgid "Closed by council" +msgstr "Stängd av kommunen" + +#: templates/web/default/my/my.html:32 templates/web/fixmystreet/my/my.html:36 +msgid "Closed reports" +msgstr "Stängda rapporter" + +#: templates/web/default/admin/problem_row.html:38 +msgid "Closed:" +msgstr "Stängd:" + +#: templates/web/default/around/tabbed_lists.html:10 +#: templates/web/default/around/tabbed_lists.html:12 +msgid "Closest nearby problems <small>(within %skm)</small>" +msgstr "Närmaste närliggande problem <small>(inom %s km)</small>" + +#: 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 "Koordinater:" + +#: templates/web/default/admin/list_updates.html:10 +msgid "Cobrand" +msgstr "Cobrand" + +#: templates/web/default/admin/report_edit.html:75 +#: templates/web/default/admin/update_edit.html:50 +msgid "Cobrand data:" +msgstr "Cobrand data:" + +#: templates/web/default/admin/report_edit.html:74 +#: templates/web/default/admin/update_edit.html:49 +msgid "Cobrand:" +msgstr "Cobrand:" + +#: 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" + +#: templates/web/default/admin/body_edit.html:47 +msgid "Configure Endpoint" +msgstr "Konfigurera slutpunkt" + +#: templates/web/default/admin/body.html:62 +msgid "Confirm" +msgstr "Bekfräfta" + +#: templates/web/default/auth/token.html:1 +msgid "Confirm account" +msgstr "Bekräfta konto" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:177 +#: templates/web/fixmystreet/report/update-form.html:105 +msgid "Confirm by email below, providing a new password at that point. When you confirm, your password will be updated." +msgstr "Bekräfta via epost nedan genom att ange ett nytt lösenord. När du bekräftar kommer ditt lösenord att uppdateras." + +#: templates/web/default/questionnaire/creator_fixed.html:1 +#: templates/web/default/tokens/confirm_problem.html:1 +#: templates/web/default/tokens/confirm_problem.html:3 +#: templates/web/default/tokens/confirm_update.html:1 +#: templates/web/default/tokens/confirm_update.html:3 +#: templates/web/emptyhomes/tokens/confirm_problem.html:1 +#: templates/web/emptyhomes/tokens/confirm_problem.html:3 +#: templates/web/southampton/tokens/confirm_problem.html:1 +#: templates/web/southampton/tokens/confirm_problem.html:3 +#: templates/web/zurich/tokens/confirm_problem.html:1 +#: templates/web/zurich/tokens/confirm_problem.html:3 +msgid "Confirmation" +msgstr "Bekräftelse" + +#: 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 "Bekräftat" + +#: templates/web/default/admin/stats.html:5 +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:" +msgstr "Bekräftat:" + +#: templates/web/fiksgatami/footer.html:10 +#: templates/web/fiksgatami/nn/footer.html:10 +msgid "Contact" +msgstr "Kontakt" + +#: templates/web/default/footer.html:24 +msgid "Contact FixMyStreet" +msgstr "Kontakta FixaMinGata" + +#: templates/web/bromley/contact/submit.html:1 +#: templates/web/default/contact/index.html:1 +#: templates/web/default/contact/index.html:2 +#: templates/web/default/contact/submit.html:1 +#: templates/web/fixmystreet/contact/index.html:1 +#: templates/web/fixmystreet/contact/index.html:2 +msgid "Contact Us" +msgstr "Kontakta oss" + +#: templates/web/bromley/contact/submit.html:3 +#: templates/web/default/contact/index.html:6 +#: templates/web/default/contact/submit.html:3 +#: templates/web/fixmystreet/contact/index.html:19 +msgid "Contact the team" +msgstr "Kontakta teamet" + +#: 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: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:9 +msgid "Council" +msgstr "Kommun" + +#: templates/web/default/admin/body.html:1 +#: templates/web/default/admin/body_edit.html:1 +#: templates/web/zurich/admin/body.html:1 +msgid "Council contacts for %s" +msgstr "Kommunkontakter för %s" + +#: templates/web/default/admin/stats.html:84 +msgid "Council:" +msgstr "Kommun:" + +#: templates/web/default/admin/stats.html:12 +#: templates/web/default/admin/stats.html:32 +#: templates/web/zurich/admin/stats.html:45 +#: templates/web/zurich/admin/stats.html:50 +msgid "Count" +msgstr "Antal" + +#: templates/web/default/email_sent.html:1 +msgid "Create a report" +msgstr "Skapa en rapport" + +#: 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/problem_row.html:34 +#: 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:50 +#: templates/web/zurich/admin/report_edit.html:64 +#: templates/web/zurich/admin/update_edit.html:29 +msgid "Created:" +msgstr "Skapad:" + +#: templates/web/default/admin/stats.html:31 +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" +msgstr "Skrivbord" + +#: templates/web/zurich/admin/stats.html:35 +msgid "Dealt with by subdivision within 5 working days" +msgstr "" + +#: 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 "Borttagen" + +#: templates/web/zurich/admin/index-dm.html:22 +#: templates/web/zurich/admin/index-sdm.html:20 +#: templates/web/zurich/admin/reports.html:12 +msgid "Description" +msgstr "" + +#: 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 "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: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:57 +msgid "Devolved" +msgstr "Delegerat" + +#: templates/web/default/admin/edit-league.html:8 +msgid "Diligency prize league table" +msgstr "Flitighetstopplistan" + +#: templates/web/fixmystreet/auth/general.html:30 +msgid "Do you have a FixMyBarangay password?" +msgstr "Har du ett lösenord till FixMyBrangay?" + +#: templates/web/default/auth/general.html:32 +#: templates/web/fixmystreet/auth/general.html:32 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:155 +#: templates/web/fixmystreet/report/update-form.html:84 +msgid "Do you have a FixMyStreet password?" +msgstr "Har du ett lösenord för FixaMinGata?" + +#: templates/web/default/questionnaire/index.html:70 +#: templates/web/fixmystreet/questionnaire/index.html:64 +msgid "Don’t know" +msgstr "Vet ej" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:82 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:47 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 +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:31 +#: templates/web/zurich/admin/problem_row.html:42 +msgid "Edit" +msgstr "Ändra" + +#: templates/web/default/admin/body.html:189 +#: templates/web/zurich/admin/body.html:64 +msgid "Edit body details" +msgstr "" + +#: templates/web/default/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:1 +#: templates/web/zurich/admin/report_edit-sdm.html:4 +#: templates/web/zurich/admin/report_edit.html:1 +#: templates/web/zurich/admin/report_edit.html:5 +msgid "Editing problem %d" +msgstr "Ändrar problem %d" + +#: templates/web/default/admin/update_edit.html:1 +#: templates/web/zurich/admin/update_edit.html:1 +msgid "Editing update %d" +msgstr "Ändrar uppdatering %d" + +#: templates/web/default/admin/user_edit.html:1 +msgid "Editing user %d" +msgstr "Ändrar användare %d" + +#: templates/web/default/admin/body_edit.html:86 +msgid "Editor" +msgstr "Redaktör" + +#: 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 "Epost" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1286 +msgid "Email added to abuse list" +msgstr "Epostadressen tillagd till missbrukslistan" + +#: 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" + +#: templates/web/default/around/_updates.html:5 +msgid "Email me new local problems" +msgstr "Eposta mig nya problem lokalt" + +#: templates/web/default/report/display.html:34 +msgid "Email me updates" +msgstr "Eposta mig uppdateringar" + +#: 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 "Epost:" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318 +msgid "Email: %s" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:620 +msgid "Empty flat or maisonette" +msgstr "Tom lägenhet" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:619 +msgid "Empty house or bungalow" +msgstr "Tomt hus" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:622 +msgid "Empty office or other commercial" +msgstr "Tomt kontor eller annan kommersiell lokal" + +#: templates/web/emptyhomes/report/new/form_heading.html:1 +msgid "Empty property details form" +msgstr "Tom fastighet" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:623 +msgid "Empty pub or bar" +msgstr "Tom pub eller bar" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:624 +msgid "Empty public building - school, hospital, etc." +msgstr "Tom publik byggnad - skola, sjukhus, etc." + +#: 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/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:70 +#, fuzzy +msgid "End Date:" +msgstr "Slutdag:" + +#: templates/web/default/admin/body-form.html:126 +msgid "Endpoint" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/Zurich.pm:71 +msgid "Enter a Zürich street name" +msgstr "" + +#: perllib/FixMyStreet/Cobrand/UK.pm:18 +msgid "Enter a nearby UK postcode, or street name and area" +msgstr "Ange ett postnummer eller gatunamn och ort" + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:25 +msgid "Enter a nearby postcode, or street name and area" +msgstr "Ange ett postnummer eller gatunamn och ort" + +#: templates/web/default/around/postcode_form.html:1 +#: templates/web/default/around/postcode_form.html:2 +#: templates/web/fixmystreet/around/postcode_form.html:10 +#: templates/web/fixmystreet/around/postcode_form.html:11 +#: templates/web/seesomething/around/postcode_form.html:3 +#: templates/web/seesomething/around/postcode_form.html:4 +msgid "Enter a nearby street name and area" +msgstr "Ange ett närligande gatunamn och ort" + +#: templates/web/default/auth/general.html:64 +#: templates/web/default/report/new/fill_in_details_form.html:169 +#: templates/web/default/report/update-form.html:124 +msgid "Enter a new password:" +msgstr "Ange ett nytt lösenord:" + +#: 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 "Ange ett lösenord" + +#: templates/web/default/index-steps.html:26 +msgid "Enter details of the problem" +msgstr "Skriv in information om problemet" + +#: templates/web/default/auth/token.html:5 +#: templates/web/default/errors/generic.html:1 +#: templates/web/default/errors/generic.html:3 +#: templates/web/default/tokens/abuse.html:1 +#: templates/web/default/tokens/abuse.html:3 +#: templates/web/default/tokens/error.html:1 +#: templates/web/default/tokens/error.html:3 +msgid "Error" +msgstr "Fel" + +#: templates/web/default/admin/body.html:11 +#: templates/web/default/admin/body_edit.html:18 +msgid "Example postcode %s" +msgstr "Exempelpostnummer %s" + +#: templates/web/default/open311/index.html:96 +msgid "Examples:" +msgstr "Exempel:" + +#: templates/web/default/admin/report_edit.html:76 +msgid "Extra data:" +msgstr "Extra data:" + +#: templates/web/bromley/contact/submit.html:14 +#: templates/web/default/contact/submit.html:15 +msgid "Failed to send message. Please try again, or <a href=\"mailto:%s\">email us</a>." +msgstr "Misslyckades med att skicka meddelandet. Var vänlig försök igen eller <a href=\"mailto:%s\">eposta oss</a>." + +#: templates/web/zurich/admin/index-dm.html:33 +#: templates/web/zurich/admin/index-sdm.html:30 +msgid "Filter report list" +msgstr "" + +#: templates/web/emptyhomes/front/stats.html:6 +msgid "Find latest local and national news" +msgstr "" + +#: templates/web/bromley/report/display.html:191 +#: templates/web/bromley/report/new/fill_in_details_form.html:113 +#: templates/web/bromley/report/new/fill_in_details_form.html:160 +msgid "First Name" +msgstr "Förnamn" + +#: templates/web/default/questionnaire/index.html:79 +#: templates/web/fixmystreet/questionnaire/index.html:73 +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" +msgstr "Fixa<span id=\"my\">Min</span>Gata" + +#: templates/web/default/header.html:24 +msgid "FixMyStreet" +msgstr "FixaMinGata" + +#: templates/web/default/admin/header.html:10 +msgid "FixMyStreet admin:" +msgstr "FixaMinGata administratör:" + +#: templates/web/default/alert/index.html:11 +msgid "" +"FixMyStreet has a variety of RSS feeds and email alerts for local problems, including\n" +"alerts for all problems within a particular ward or council, or all problems\n" +"within a certain distance of a particular location." +msgstr "FixaMinGata har ett flertal RSS-flöden och epostbevakningar för lokala problem, inklusive bevakning för alla problem inom en kommun eller alla problem inom ett visst avstånd från en plats. " + +#: templates/web/default/alert/_list.html:71 +#: templates/web/fixmystreet/alert/_list.html:73 +msgid "" +"FixMyStreet sends different categories of problem\n" +"to the appropriate council, so problems within the boundary of a particular council\n" +"might not match the problems sent to that council. For example, a graffiti report\n" +"will be sent to the district council, so will appear in both of the district\n" +"council’s alerts, but will only appear in the \"Within the boundary\" alert\n" +"for the county council." +msgstr "FixaMinGata skickar olika kategorier av rapporter till olika enheter inom en kommun eller län. Problem som rapporteras inom en viss kommun dyker därför inte nödvändigtvis upp i listan över rapporter till den kommunen. Exempelvis kan en rapport om en väg skickas till Vägverket snarare än kommunen. Rapporten dyker då inte upp i listan över rapporter till kommunen, men dyker upp om man söker alla rapporter inom ett visst avstånd." + +#: 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 "Löst" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:43 +msgid "Fixed - Council" +msgstr "Löst - Kommun" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:42 +msgid "Fixed - User" +msgstr "Löst - Användare" + +#: templates/web/default/my/my.html:27 templates/web/fixmystreet/my/my.html:31 +msgid "Fixed reports" +msgstr "Lösta rapporer" + +#: templates/web/default/admin/problem_row.html:37 +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: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:51 +msgid "Flagged:" +msgstr "Flaggat:" + +#: templates/web/default/reports/_ward-list.html:3 +#: templates/web/fixmystreet/reports/_ward-list.html:4 +msgid "Follow a ward link to view only reports within that ward." +msgstr "Följ en länk till ett område för att se rapporter endast inom det området." + +#: templates/web/default/admin/report_edit.html:30 +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?" +msgstr "Glömt ditt lösenord?" + +#: templates/web/default/faq/faq-en-gb.html:1 +#: templates/web/emptyhomes/faq/faq-cy.html:1 +#: templates/web/emptyhomes/faq/faq-en-gb.html:1 +#: templates/web/fiksgatami/faq/faq-nb.html:1 +#: templates/web/fiksgatami/nn/faq/faq-nn.html:1 +#: templates/web/fixmindelo/faq/faq-pt-cv.html:1 +#: templates/web/fixmybarangay/faq/faq-en-gb.html:1 +#: templates/web/fixmystreet/faq/faq-en-gb.html:1 +#: templates/web/fixmystreet/static/privacy.html:1 +#: templates/web/oxfordshire/faq/faq-en-gb.html:1 +msgid "Frequently Asked Questions" +msgstr "Vanliga frågor" + +#: templates/web/default/open311/index.html:138 +msgid "GeoRSS on Google Maps" +msgstr "GeoRSS på Google Maps" + +#: templates/web/bromley/report/display.html:30 +#: templates/web/fixmystreet/around/_updates.html:3 +#: templates/web/fixmystreet/report/display.html:38 +msgid "Get updates" +msgstr "Få uppdateringar" + +#: templates/web/fixmystreet/reports/_rss.html:3 +#: templates/web/fixmystreet/reports/_rss.html:9 +msgid "Get updates of %s problems" +msgstr "Få uppdateringar av %s problem" + +#: templates/web/fixmystreet/reports/_rss.html:11 +#: templates/web/fixmystreet/reports/_rss.html:3 +msgid "Get updates of problems in this %s" +msgstr "Få uppdateringar om problem i denna %s" + +#: templates/web/default/alert/_list.html:83 +#: templates/web/fixmybarangay/alert/_list.html:28 +#: templates/web/fixmystreet/alert/_list.html:82 +msgid "Give me an RSS feed" +msgstr "Ge mig ett RSS-flöde" + +#: templates/web/default/alert/index.html:34 +#: templates/web/default/around/postcode_form.html:8 +#: templates/web/fixmystreet/around/postcode_form.html:21 +#: templates/web/seesomething/around/postcode_form.html:10 +#: templates/web/zurich/admin/stats.html:26 +msgid "Go" +msgstr "Gå" + +#: templates/web/default/admin/report_edit.html:77 +msgid "Going to send questionnaire?" +msgstr "Skicka enkät?" + +#: templates/web/default/admin/index.html:32 +msgid "Graph of problem creation by status over time" +msgstr "Visualisering av rapporter över tid" + +#: templates/web/default/reports/index.html:8 +msgid "Greyed-out lines are councils that no longer exist." +msgstr "Utgråade linjer är kommuner som inte längre existerar." + +#: templates/web/default/questionnaire/index.html:61 +#: templates/web/fixmystreet/questionnaire/index.html:55 +msgid "Has this problem been fixed?" +msgstr "Har det här problemet blivit löst?" + +#: templates/web/default/questionnaire/index.html:74 +#: templates/web/fixmystreet/questionnaire/index.html:68 +msgid "Have you ever reported a problem to a council before, or is this your first time?" +msgstr "Har du någonsin rapporterat ett problem till en kommun tidigare eller är det här första gången?" + +#: 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 "Hjälp" + +#: templates/web/default/alert/_list.html:6 +#: templates/web/fixmystreet/alert/_list.html:8 +msgid "Here are the types of local problem alerts for ‘%s’." +msgstr "Här är de olika typerna för lokala problem för ‘%s’" + +#: templates/web/barnet/header.html:70 templates/web/bromley/header.html:64 +#: templates/web/bromley/header.html:99 +#: templates/web/fixmybarangay/header.html:66 +#: templates/web/fixmystreet/header.html:50 +#: templates/web/oxfordshire/header.html:111 +#: templates/web/oxfordshire/header.html:47 +#: templates/web/stevenage/header.html:97 templates/web/zurich/footer.html:11 +msgid "Hi %s" +msgstr "Hej %s" + +#: 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 "Gömd" + +#: templates/web/default/around/display_location.html:67 +msgid "Hide old" +msgstr "Göm äldre" + +#: templates/web/default/around/display_location.html:62 +msgid "Hide pins" +msgstr "Göm pinnar" + +#: templates/web/default/admin/body_edit.html:79 +msgid "History" +msgstr "Historik" + +#: templates/web/default/js/translation_strings.html:31 +#: templates/web/oxfordshire/js/translation_strings.html:25 +msgid "Home" +msgstr "Home" + +#: templates/web/default/index-steps.html:1 +msgid "How to report a problem" +msgstr "Hur man rapporterar ett problem" + +#: 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:733 +msgid "I am afraid you cannot confirm unconfirmed reports." +msgstr "Tyvärr kan du inte bekräfta obekräftade rapporter" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:89 +msgid "I'm afraid we couldn't locate your problem in the database.\n" +msgstr "Tyvärr kunde vi inte hitta ditt problem i databasen.\n" + +#: perllib/FixMyStreet/App/Controller/Tokens.pm:44 +msgid "I'm afraid we couldn't validate that token, as the report was made too long ago." +msgstr "Tyvärr känner vi inte igen den rapporten, troligen eftersom rapporten gjordes för länge sedan." + +#: perllib/FixMyStreet/App/Controller/Tokens.pm:259 +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: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 "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 "" + +#: templates/web/default/email_sent.html:15 +msgid "If you do not, your problem will not be posted." +msgstr "" + +#: templates/web/default/email_sent.html:17 +msgid "If you do not, your update will not be posted." +msgstr "" + +#: templates/web/default/report/new/councils_text_none.html:8 +#: templates/web/default/report/new/councils_text_none.html:9 +msgid "If you submit a problem here the subject and details of the problem will be public, but the problem will <strong>not</strong> be reported to the council." +msgstr "Om du anmäler ett problem här kommer ärendet och detaljerna att bli publika men problemet kommer <strong>inte</strong> att rapporteras till kommunen." + +#: templates/web/emptyhomes/report/new/councils_text_none.html:9 +msgid "If you submit a report here it will be left on the site, but not reported to the council – please still leave your report, so that we can show to the council the activity in their area." +msgstr "Om du skickar en rapport här kommer den att ligga på FixaMInGata men inte rapporteras till kommunen." + +#: templates/web/default/auth/token.html:22 +#: templates/web/default/email_sent.html:9 +msgid "If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way." +msgstr "Om du använder webbmail och har spamfilter bör du kolla din spamfolder eftersom våra brev ibland markeras som skräp." + +#: templates/web/default/questionnaire/index.html:86 +#: templates/web/fixmystreet/questionnaire/index.html:77 +msgid "" +"If you wish to leave a public update on the problem, please enter it here\n" +"(please note it will not be sent to the council). For example, what was\n" +"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" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:100 +msgid "Illegal feed selection" +msgstr "Ogiltigt RSS-flöde" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:82 +#: 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:32 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:30 +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: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 "Pågående" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:38 +msgid "Incident Category" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:163 +msgid "Include reporter personal details" +msgstr "" + +#: templates/web/default/admin/stats.html:76 +msgid "Include unconfirmed reports" +msgstr "Inkludera obekräftade rapporter" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:354 +msgid "Incorrect has_photo value \"%s\"" +msgstr "Inkorrekt värde för has_photo, \"%s\"" + +#: 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 +msgid "Internal referral" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:339 +msgid "Invalid agency_responsible value %s" +msgstr "Inkorrekt värde för agency_responsible, \"%s\"" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1096 +msgid "Invalid end date" +msgstr "Inkorrekt slutdatum" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:432 +msgid "Invalid format %s specified." +msgstr "Inkorrekt format %s angivet." + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1092 +msgid "Invalid start date" +msgstr "Inkorrekt startdatum" + +#: templates/web/bromley/report/display.html:80 +#: templates/web/bromley/report/display.html:81 +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:37 +#: templates/web/default/dashboard/index.html:142 +#: templates/web/default/dashboard/index.html:143 +#: templates/web/default/report/update-form.html:30 +#: templates/web/default/report/update-form.html:31 +#: templates/web/fixmystreet/report/update-form.html:28 +#: templates/web/fixmystreet/report/update-form.html:29 +msgid "Investigating" +msgstr "Undersöker" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:12 +#: templates/web/emptyhomes/tokens/confirm_problem.html:14 +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’t mean the council isn’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 "Det är värt att notera att processen ibland kan vara väldigt långsam, speciellt om fastigheten är i stort behov av reparation eller om ägaren motsätter sig förändringar. I de flesta fall kan det ta mer än sex månader innan du kan förvänta dig att se några förändringar och ibland finns det väldigt starka hinder som förhindrar ett användande av fastigheten. Det här betyder inte att kommunen inte gör något. Vi uppmuntrar kommuner att uppdatera webbsidan så att du kan se vad som händer. Det kan vara en lång process men ett bra första steg är att du rapporterar till kommunen." + +#: 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 "Behåll mig inloggad på den här datorn" + +#: templates/web/bromley/report/display.html:197 +#: templates/web/bromley/report/new/fill_in_details_form.html:119 +#: templates/web/bromley/report/new/fill_in_details_form.html:166 +msgid "Last Name" +msgstr "Efternamn" + +#: templates/web/default/admin/body.html:58 +#: templates/web/zurich/admin/body.html:15 +msgid "Last editor" +msgstr "Senaste redaktör" + +#: templates/web/default/admin/report_edit.html:72 +msgid "Last update:" +msgstr "Senaste uppdatering:" + +#: templates/web/default/admin/problem_row.html:39 +msgid "Last update:" +msgstr "Senaste 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" +msgstr "Lista alla rapporterade problem" + +#: templates/web/bromley/report/new/fill_in_details_form.html:69 +#: templates/web/default/report/new/fill_in_details_form.html:68 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:51 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:75 +#: templates/web/seesomething/report/new/fill_in_details_form.html:25 +#: templates/web/zurich/report/new/fill_in_details_form.html:51 +msgid "Loading..." +msgstr "Laddar..." + +#: templates/web/default/alert/choose.html:1 +#: templates/web/default/alert/choose.html:3 +#: templates/web/default/alert/index.html:1 +#: templates/web/default/alert/index.html:3 +#: templates/web/default/alert/list.html:1 +#: templates/web/default/alert/list.html:5 +#: templates/web/default/alert/updates.html:1 +#: templates/web/default/tokens/confirm_alert.html:1 +#: templates/web/default/tokens/confirm_alert.html:3 +#: templates/web/emptyhomes/alert/index.html:1 +#: templates/web/emptyhomes/alert/index.html:3 +#: templates/web/fixmybarangay/alert/index.html:1 +#: templates/web/fixmybarangay/alert/index.html:3 +#: templates/web/fixmystreet/alert/updates.html:1 +msgid "Local RSS feeds and email alerts" +msgstr "Lokala RSS-flöden och epostbevakningar" + +#: templates/web/default/alert/list.html:1 +#: templates/web/default/alert/list.html:12 +#: templates/web/default/alert/list.html:14 +#: templates/web/default/alert/list.html:3 +msgid "Local RSS feeds and email alerts for ‘%s’" +msgstr "Lokala RSS-flöden och epostbevakningar för '%s'" + +#: 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 "Lokala rapporter" + +#: templates/web/default/index-steps.html:25 +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:43 +#: templates/web/oxfordshire/js/translation_strings.html:37 +msgid "MAP" +msgstr "" + +#: perllib/FixMyStreet/Map/OSM.pm:44 +msgid "Map © <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 © <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" + +#: templates/web/default/contact/index.html:90 +msgid "Message:" +msgstr "Meddelande:" + +#: perllib/FixMyStreet/App/Controller/Open311.pm:440 +msgid "Missing jurisdiction_id" +msgstr "Saknat jurisdiction_id" + +#: templates/web/zurich/admin/stats.html:34 +msgid "Moderated by division within one working day" +msgstr "" + +#: templates/web/default/admin/stats.html:11 +msgid "Month" +msgstr "Månad" + +#: templates/web/default/report/display.html:30 +msgid "More problems nearby" +msgstr "Fler närliggande problem" + +#: 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 "Namn" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:74 +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: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:317 +msgid "Name: %s" +msgstr "" + +#: templates/web/fiksgatami/footer.html:3 +#: templates/web/fiksgatami/nn/footer.html:3 +#: templates/web/reading/footer.html:4 +msgid "Navigation" +msgstr "Navigation" + +#: perllib/FixMyStreet/Geocode/OSM.pm:166 +msgid "Nearest named road to the pin placed on the map (automatically generated using OpenStreetMap): %s%s" +msgstr "Närmaste namngivna gata till placeringen på kartan (genereras automatiskt via OpenStreetMap): %s%s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:148 +msgid "Nearest postcode to the pin placed on the map (automatically generated): %s (%sm away)" +msgstr "Närmaste postnummer till placeringen på kartan (genereras automatiskt): %s (%s meter bort)" + +#: perllib/FixMyStreet/Cobrand/Default.pm:418 +#: perllib/FixMyStreet/Cobrand/Default.pm:458 +msgid "Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s" +msgstr "Närmaste gata till placeringen på kartan (genereras automatiskt av Bing Maps): %s" + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:273 +msgid "" +"Nearest road to the pin placed on the map (automatically generated by Bing Maps): %s\n" +"\n" +msgstr "" +"Närmaste gata till placeringen på kartan (genereras automatiskt av Bing Maps): %s\n" +"\n" + +#: templates/web/default/email_sent.html:3 +msgid "Nearly Done! Now check your email..." +msgstr "Nästan klar! Kolla nu din epost." + +#: templates/web/default/reports/index.html:16 +#: templates/web/fixmybarangay/reports/index.html:16 +msgid "New <br>problems" +msgstr "Nya <br>problem" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:264 +msgid "New body added" +msgstr "" + +#: 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" + +#: db/alert_types_eha.pl:12 +msgid "New local reports on reportemptyhomes.com" +msgstr "Nya lokala rapporter på reportemptyhomes.com" + +#: templates/web/emptyhomes/reports/index.html:10 +#: templates/web/fiksgatami/nn/reports/index.html:10 +#: templates/web/fiksgatami/reports/index.html:10 +msgid "New problems" +msgstr "Nya problem" + +#: db/alert_types.pl:38 +msgid "New problems for {{COUNCIL}} within {{WARD}} ward on FixMyStreet" +msgstr "Nya problem för {{COUNCIL}} inom {{WARD}} området på FixaMinGata" + +#: db/alert_types.pl:26 db/alert_types.pl:30 +msgid "New problems near {{POSTCODE}} on FixMyStreet" +msgstr "Nya problem nära {{POSTCODE}} på FixaMinGata" + +#: db/alert_types.pl:10 +msgid "New problems on FixMyStreet" +msgstr "Nya problem på FixaMinGata" + +#: db/alert_types.pl:34 +msgid "New problems to {{COUNCIL}} on FixMyStreet" +msgstr "Nya problem inom {{COUNCIL}} på FixaMinGata" + +#: db/alert_types.pl:42 +msgid "New problems within {{NAME}}'s boundary on FixMyStreet" +msgstr "Nya problem inom {{NAME}}'s administrativa gräns på FixaMinGata" + +#: templates/web/zurich/admin/index-sdm.html:4 +msgid "New reports" +msgstr "" + +#: db/alert_types_eha.pl:23 +msgid "New reports for {{COUNCIL}} within {{WARD}} ward on reportemptyhomes.com" +msgstr "Nya rapporter för {{COUNCIL}} inom {{WARD}} område på reportemptyhomes.com" + +#: db/alert_types_eha.pl:5 +msgid "New reports on reportemptyhomes.com" +msgstr "Nya rapporter på reportemptyhomes.com" + +#: db/alert_types_eha.pl:16 +msgid "New reports on reportemptyhomes.com near {{POSTCODE}}" +msgstr "Nya rapporter på reportemptyhomes.com nära {{POSTCODE}}" + +#: db/alert_types_eha.pl:19 +msgid "New reports to {{COUNCIL}} on reportemptyhomes.com" +msgstr "Nya rapporter till {{COUNCIL}} på reportemptyhomes.com" + +#: db/alert_types_eha.pl:27 +msgid "New reports within {{NAME}}'s boundary on reportemptyhomes.com" +msgstr "Nya rapporter inom {{NAME}}'s administrativa gräns på reportemptyhomes.com" + +#: templates/web/default/admin/questionnaire.html:24 +msgid "New state" +msgstr "Ny status" + +#: templates/web/zurich/admin/report_edit-sdm.html:61 +msgid "New update:" +msgstr "" + +#: templates/web/fiksgatami/front/news.html:9 +#: templates/web/fiksgatami/nn/front/news.html:9 +#: templates/web/fixmystreet/front/news.html:8 +msgid "New!" +msgstr "Ny!" + +#: templates/web/default/pagination.html:13 +msgid "Next" +msgstr "" + +#: 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 "Nej" + +#: templates/web/default/admin/user-form.html:33 +msgid "No body" +msgstr "" + +#: templates/web/default/admin/stats.html:85 +msgid "No council" +msgstr "Ingen kommun" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:362 +msgid "No council selected" +msgstr "Ingen kommun vald" + +#: 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:25 +#, fuzzy +msgid "No flagged problems found." +msgstr "Inga flaggade problem hittade" + +#: 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:68 +msgid "No further updates" +msgstr "" + +#: templates/web/default/around/around_map_list_items.html:17 +#: templates/web/fixmystreet/around/around_map_list_items.html:8 +msgid "No problems found." +msgstr "Inga poblem hittade." + +#: templates/web/default/around/on_map_list_items.html:14 +#: templates/web/fixmystreet/around/on_map_list_items.html:6 +msgid "No problems have been reported yet." +msgstr "Inga problem har rapporteras än." + +#: 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:73 +msgid "Non Public" +msgstr "Icke-publikt" + +#: 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 "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 +#: 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 "" + +#: templates/web/zurich/admin/report_edit-sdm.html:21 +msgid "Not for my subdivision" +msgstr "" + +#: templates/web/default/admin/questionnaire.html:6 +msgid "Not reported before" +msgstr "Ej rapporterat tidigare" + +#: templates/web/default/report/_main.html:10 +msgid "Not reported to council" +msgstr "Ej rapporterat till kommunen" + +#: 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 "Observera" + +#: templates/web/default/admin/stats.html:51 +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:157 +#: templates/web/default/admin/body_edit.html:44 +#: templates/web/zurich/admin/body.html:47 +msgid "Note:" +msgstr "Observera:" + +#: templates/web/default/open311/index.html:75 +msgid "Note: <strong>%s</strong>" +msgstr "Observera: <strong>%s</strong>" + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:154 +msgid "Now to submit your report…" +msgstr "För att skicka din rapport…" + +#: templates/web/default/report/new/fill_in_details_form.html:131 +msgid "Now to submit your report… do you have a FixMyStreet password?" +msgstr "För att skicka din rapport… har du ett lösenord för FixaMinGata?" + +#: templates/web/fixmystreet/report/update-form.html:83 +msgid "Now to submit your update…" +msgstr "För att skicka din uppdatering…" + +#: templates/web/default/report/update-form.html:86 +msgid "Now to submit your update… do you have a FixMyStreet password?" +msgstr "För att skicka din uppdatering… har du ett lösenord för FixaMinGata?" + +#: templates/web/default/js/translation_strings.html:42 +#: templates/web/oxfordshire/js/translation_strings.html:36 +msgid "OK" +msgstr "" + +#: templates/web/default/report/display.html:24 +#: templates/web/default/report/update.html:16 +msgid "Offensive? Unsuitable? Tell us" +msgstr "Kränkande eller olämpligt? Kontakta oss" + +#: templates/web/default/reports/index.html:18 +#: templates/web/fixmybarangay/reports/index.html:18 +msgid "Old / unknown <br>problems" +msgstr "Äldre/okända <br>problem" + +#: templates/web/fiksgatami/nn/reports/index.html:12 +#: templates/web/fiksgatami/reports/index.html:12 +msgid "Old problems,<br>state unknown" +msgstr "Äldre problem,<br>status okänt" + +#: templates/web/default/admin/questionnaire.html:24 +msgid "Old state" +msgstr "Äldre status" + +#: templates/web/default/reports/index.html:20 +#: templates/web/fixmybarangay/reports/index.html:20 +msgid "Older <br>fixed" +msgstr "Äldre <br>fixat" + +#: templates/web/default/reports/index.html:17 +#: templates/web/fixmybarangay/reports/index.html:17 +msgid "Older <br>problems" +msgstr "Äldre <br>problem" + +#: templates/web/fiksgatami/nn/reports/index.html:14 +#: templates/web/fiksgatami/reports/index.html:14 +msgid "Older fixed" +msgstr "Äldre lösta problem" + +#: templates/web/emptyhomes/reports/index.html:11 +#: templates/web/fiksgatami/nn/reports/index.html:11 +#: templates/web/fiksgatami/reports/index.html:11 +msgid "Older problems" +msgstr "Äldre problem" + +#: 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 "Öppen" + +#: templates/web/default/my/my.html:22 templates/web/fixmystreet/my/my.html:26 +msgid "Open reports" +msgstr "Öppna rapporter" + +#: templates/web/default/open311/index.html:72 +msgid "Open311 API for the mySociety FixMyStreet server" +msgstr "Open311 API för FixaMinGata" + +#: templates/web/default/open311/index.html:82 +msgid "Open311 initiative web page" +msgstr "Open311" + +#: templates/web/default/open311/index.html:83 +msgid "Open311 specification" +msgstr "Open311 Specifikation" + +#: templates/web/default/alert/_list.html:58 +#: templates/web/fixmystreet/alert/_list.html:60 +msgid "Or problems reported to:" +msgstr "Eller problem rapporterade til:" + +#: templates/web/default/alert/_list.html:33 +#: templates/web/fixmystreet/alert/_list.html:36 +msgid "Or you can subscribe to an alert based upon what ward or council you’re in:" +msgstr "Du kan också prenumerera på bevakningar baserat på vilken kommun du bor i:" + +#: 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 "Övrig" + +#: templates/web/default/footer.html:27 +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:8 +msgid "Owner" +msgstr "Ägare" + +#: templates/web/default/errors/page_error_404_not_found.html:1 +#: templates/web/default/errors/page_error_404_not_found.html:3 +msgid "Page Not Found" +msgstr "Sidan hittas ej" + +#: templates/web/default/admin/body-form.html:31 +#: templates/web/zurich/admin/body-form.html:14 +msgid "Parent" +msgstr "" + +#: templates/web/default/admin/report_edit.html:35 +#: templates/web/default/admin/report_edit.html:51 +msgid "Partial" +msgstr "Partiell" + +#: 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 "Lösenord (valfritt)" + +#: templates/web/default/auth/change_password.html:25 +msgid "Password:" +msgstr "Lösenord:" + +#: 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 +msgid "Phone number (optional)" +msgstr "Telefonnummer (valfritt)" + +#: 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 "Telefonnummer:" + +#: 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 "Foto" + +#: templates/web/default/questionnaire/index.html:99 +#: templates/web/default/report/new/fill_in_details_form.html:102 +#: templates/web/default/report/update-form.html:62 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:99 +#: templates/web/fixmystreet/questionnaire/index.html:90 +msgid "Photo:" +msgstr "Foto:" + +#: templates/web/default/alert/list.html:26 +msgid "Photos of recent nearby reports" +msgstr "Foton från närliggande rapporter" + +#: 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" + +#: 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 "Planerat" + +#: templates/web/fixmystreet/questionnaire/index.html:44 +msgid "Please <a class=\"tab_link\" href=\"#report\">take a look</a> at the updates that have been left." +msgstr "Observera <a class=\"tab_link\" href=\"#report\">uppdateringarna</a> som har lämnats." + +#: templates/web/default/report/new/notes.html:6 +#: templates/web/fixmystreet/report/new/notes.html:6 +#: templates/web/oxfordshire/report/new/notes.html:5 +msgid "Please be polite, concise and to the point." +msgstr "Var vänlig, kortfattad och rakt på sak." + +#: templates/web/default/auth/change_password.html:12 +#: templates/web/default/auth/change_password.html:17 +msgid "Please check the passwords and try again" +msgstr "Vänligen kontrollera lösenordet och prova igen" + +#: templates/web/default/auth/token.html:14 +msgid "Please check your email" +msgstr "Vänligen kontrollera din epost" + +#: templates/web/default/auth/general.html:14 +#: templates/web/default/auth/general.html:8 +#: templates/web/fixmystreet/auth/general.html:15 +#: templates/web/fixmystreet/auth/general.html:9 +#: templates/web/seesomething/auth/general.html:15 +#: templates/web/seesomething/auth/general.html:9 +#: templates/web/zurich/auth/general.html:3 +#: templates/web/zurich/auth/general.html:9 +msgid "Please check your email address is correct" +msgstr "Vänligen kontrollera att din epostadress är korrekt" + +#: 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 "Vänligen välj en kategori" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:387 +msgid "Please choose a property type" +msgstr "Vänligen välj en fastighetstyp" + +#: templates/web/seesomething/js/translation_strings.html:6 +msgid "Please choose a transport category" +msgstr "" + +#: templates/web/seesomething/js/translation_strings.html:7 +msgid "Please choose an incident category" +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”" +msgstr "Vänligen beskriv den exakta placeringen för rapporten, ex.v. \"2 dumpade madrasser utanför Vasagatan 19\"" + +#: templates/web/default/contact/blurb.html:2 +msgid "" +"Please do <strong>not</strong> report problems through this form; messages go to\n" +"the team behind FixMyStreet, not a council. To report a problem,\n" +"please <a href=\"/\">go to the front page</a> and follow the instructions." +msgstr "Var snäll och rapportera <strong>inga</strong> problem genom det här formuläret. Meddelanden här går till teamet bakom FixaMinGata, inte till din kommun. för att rapportera ett problem, <a href=\"/\">gå till framsidan</a> och följ instruktionerna." + +#: templates/web/default/report/new/notes.html:7 +#: templates/web/fixmystreet/report/new/notes.html:7 +#: templates/web/oxfordshire/report/new/notes.html:6 +msgid "Please do not be abusive — abusing your council devalues the service for all users." +msgstr "" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:46 +msgid "Please do not give address or personal information in this section." +msgstr "" + +#: 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: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" +msgstr "Vänligen skriv in en giltig epostadress" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:346 +#: perllib/FixMyStreet/App/Controller/Contact.pm:107 +msgid "Please enter a valid email address" +msgstr "Vänligen skriv in en giltig epostadress" + +#: 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" + +#: 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 "Vänligen skriv in din epostadress" + +#: templates/web/bromley/report/new/fill_in_details_form.html:149 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:151 +#: templates/web/seesomething/report/new/fill_in_details_form.html:85 +#: templates/web/zurich/report/new/fill_in_details_form.html:92 +msgid "Please enter your email address" +msgstr "Vänligen skriv in din epostadress" + +#: 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: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: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: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:24 +#: templates/web/oxfordshire/js/translation_strings.html:18 +msgid "Please enter your title" +msgstr "Vänligen skriv in din titel" + +#: 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 "" + +#: templates/web/emptyhomes/report/new/fill_in_details_text.html:1 +msgid "" +"Please fill in details of the empty property below, saying what type of\n" +"property it is e.g. an empty home, block of flats, office etc. Tell us\n" +"something about its condition and any other information you feel is relevant.\n" +"There is no need for you to give the exact address. Please be polite, concise\n" +"and to the point; writing your message entirely in block capitals makes it hard\n" +"to read, as does a lack of punctuation." +msgstr "Var vänlig och fyll i information om den tomma fastigheten nedanför. Ange vilken typ av fastighet det är, ex.v. ett tomt hem, kontor, etc. Berätta för oss om dess renoveringsbehov och annan information som du känner är relevant. Du behöver inte ge någon exakt adress. Var vänlig, konkret och rakt på sak. Om du skriver endast i versaler gör du det svårt att läsa sitt meddelande." + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/default/report/new/fill_in_details_text.html:11 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:10 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:8 +msgid "Please fill in details of the problem below." +msgstr "Fyll i information om problemet nedan." + +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:3 +msgid "" +"Please fill in details of the problem below. Leave as much detail as you can, \n" +"and if possible describe the exact location of\n" +"the problem (e.g. if there is a streetlight number or road name)." +msgstr "Fyll i information om problemet nedan. Lämna så mycket detaljer som du kan och beskriv gärna den exakta platsen för problemet (exempelvis om det finns ett nummer på en lyktstolpe eller gatunamn)." + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/default/report/new/fill_in_details_text.html:3 +msgid "" +"Please fill in details of the problem below. The council won't be able\n" +"to help unless you leave as much detail as you can, so please describe the exact location of\n" +"the problem (e.g. on a wall), what it is, how long it has been there, a description (and a\n" +"photo of the problem if you have one), etc." +msgstr "Fyll i information om problemet nedan. Kommunen kommer inte att kunna hjälpa till om du inte lämnar tillräckligt med detaljer. Beskriv så noga du kan den exakta platsen för problemet (exempelvis \"på väggen\"), vad problemet är, hur länge det har funntis och en beskrivning. Om du har ett foto får du gärna bifoga detta också." + +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:70 +#: templates/web/seesomething/report/new/fill_in_details_form.html:20 +#: templates/web/zurich/report/new/fill_in_details_form.html:46 +msgid "Please fill in details of the problem." +msgstr "Fyll i information om problemet nedan. Ange gärna en adress då detta gör det lättare för kommunen att hitta till platsen." + +#: templates/web/bromley/report/new/fill_in_details_form.html:28 +#: templates/web/default/report/new/fill_in_details_form.html:27 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:26 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:35 +#: templates/web/zurich/report/new/fill_in_details_form.html:20 +msgid "Please fill in the form below with details of the problem, and describe the location as precisely as possible in the details box." +msgstr "Fyll i information om problemet nedan och beskriv den exakta platsen för problemet så noga du kan." + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:243 +msgid "Please indicate whether you'd like to receive another questionnaire" +msgstr "Ange ifall du vill ta emot ett annat frågeformulär" + +#: templates/web/fixmystreet/report/updates-sidebar-notes.html:3 +msgid "Please note that updates are not sent to the council." +msgstr "Observera att uppdateringar inte skickas till kommunen." + +#: templates/web/default/report/update-form.html:7 +msgid "Please note that updates are not sent to the council. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgstr "Observera att uppdateringar inte skickas till kommunen. Om du lämnar ditt namn kommer det att visas publikt. Din information används endast i enlighet med vår <a href=\"/faq#privacy\">sekretesspolicy</a>" + +#: templates/web/barnet/report/updates-sidebar-notes.html:1 +msgid "Please note that updates are not sent to the relevant department. If you leave your name it will be public. Your information will only be used in accordance with our <a href=\"/faq#privacy\">privacy policy</a>" +msgstr "Observera att uppdateringar inte skickas till kommunen. Om du lämnar ditt namn kommer det att visas publikt. Din information används endast i enlighet med vår <a href=\"/faq#privacy\">sekretesspolicy</a>" + +#: templates/web/bromley/report/new/fill_in_details_form.html:23 +#: templates/web/default/report/new/fill_in_details_form.html:5 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:5 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:26 +#: templates/web/zurich/report/new/fill_in_details_form.html:11 +msgid "Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit." +msgstr "Observera att din rapport <strong>inte har skickats än</strong>. Välj en kategori och ytterligare information nedan. Tryck sedan på skicka." + +#: templates/web/default/report/new/notes.html:1 +#: templates/web/fixmybarangay/report/new/notes.html:1 +#: templates/web/fixmystreet/report/new/notes.html:1 +#: templates/web/oxfordshire/report/new/notes.html:1 +msgid "Please note:" +msgstr "Observera:" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:246 +msgid "Please provide some explanation as to why you're reopening this report" +msgstr "Skriv en förklaring till varför du öppna de här rapporten igen" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:253 +msgid "Please provide some text as well as a photo" +msgstr "Skriv lite förklarande text tillsammans med ett foto" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:116 +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:239 +msgid "Please say whether you've ever reported a problem to your council before" +msgstr "Ange om du har anmält ett problem till kommunen tidigare eller ej" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:80 +msgid "Please select the feed you want" +msgstr "Välj det RSS-flöde du vill ha" + +#: perllib/FixMyStreet/App/Controller/Alert.pm:118 +msgid "Please select the type of alert you want" +msgstr "Välj den kategori av rapporter du vill ha" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:235 +msgid "Please state whether or not the problem has been fixed" +msgstr "Ange om problemet har lösts eller ej" + +#: templates/web/default/questionnaire/index.html:50 +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:176 +msgid "Please upload a JPEG image only" +msgstr "Ladda upp en JPEG-bild" + +#: perllib/FixMyStreet/App/Controller/Photo.pm:183 +msgid "Please upload a JPEG image only\n" +msgstr "Ladda upp en JPEG-bild\n" + +#: perllib/FixMyStreet/App/Controller/Contact.pm:98 +msgid "Please write a message" +msgstr "Skriv ett meddelande" + +#: templates/web/bromley/report/display.html:70 +#: templates/web/fixmystreet/report/update-form.html:23 +msgid "Please write your update here" +msgstr "Skriv din uppdatering här" + +#: templates/web/bromley/report/display.html:123 +#: templates/web/bromley/report/display.html:151 +#: templates/web/bromley/report/display.html:163 +#: templates/web/default/contact/index.html:93 +#: templates/web/default/report/update-form.html:109 +#: templates/web/default/report/update-form.html:131 +#: templates/web/default/report/update-form.html:72 +#: templates/web/fixmystreet/contact/index.html:105 +#: templates/web/fixmystreet/report/update-form.html:123 +#: templates/web/fixmystreet/report/update-form.html:71 +#: templates/web/fixmystreet/report/update-form.html:95 +msgid "Post" +msgstr "Skicka" + +#: templates/web/default/report/updates.html:15 +msgid "Posted anonymously at %s" +msgstr "Postat anonymt %s" + +#: templates/web/default/report/updates.html:22 +msgid "Posted by %s (<strong>%s</strong>) at %s" +msgstr "Postat av %s (<strong>%s</strong>) %s" + +#: templates/web/default/report/updates.html:24 +msgid "Posted by %s at %s" +msgstr "Postat av %s %s" + +#: templates/web/default/pagination.html:7 +msgid "Previous" +msgstr "" + +#: 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 "Privat" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:108 +msgid "Private information (not shown on site)" +msgstr "" + +#: templates/web/default/maps/openlayers.html:85 +msgid "Problem" +msgstr "Rapport" + +#: templates/web/default/admin/timeline.html:22 +msgid "Problem %d created" +msgstr "Rapport %d skapat" + +#: templates/web/default/admin/timeline.html:24 +msgid "Problem %s confirmed" +msgstr "Rapport %s bekräftad" + +#: templates/web/default/admin/timeline.html:26 +msgid "Problem %s sent to council %s" +msgstr "Rapport %s skickad till %s" + +#: 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:950 +msgid "Problem marked as open." +msgstr "Problemet markerat som öppet." + +#: templates/web/default/admin/questionnaire.html:21 +msgid "Problem state change based on survey results" +msgstr "Problemets status ändrats baserat på undersökningsresultat" + +#: templates/web/default/admin/flagged.html:10 +msgid "Problems" +msgstr "Problem" + +#: templates/web/default/around/_updates.html:1 +msgid "Problems in this area" +msgstr "Problem i detta område" + +#: templates/web/bromley/report/display.html:31 +#: templates/web/fixmystreet/around/tabbed_lists.html:4 +#: templates/web/fixmystreet/report/display.html:46 +msgid "Problems nearby" +msgstr "Närliggande problem" + +#: templates/web/fixmystreet/around/tabbed_lists.html:3 +#: templates/web/fixmystreet/report/display.html:44 +msgid "Problems on the map" +msgstr "Problem på kartan" + +#: db/alert_types.pl:14 +msgid "Problems recently reported fixed on FixMyStreet" +msgstr "Problem nyligen rapporterade som lösta på FixaMinGata" + +#: templates/web/default/alert/_list.html:19 +#: templates/web/fixmystreet/alert/_list.html:21 +msgid "Problems within %.1fkm of this location" +msgstr "Problem inom %.1f km från denna position" + +#: perllib/FixMyStreet/Cobrand/Default.pm:626 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:109 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:155 +#: perllib/FixMyStreet/Cobrand/UK.pm:228 +msgid "Problems within %s" +msgstr "Problem inom %s" + +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:117 +#: perllib/FixMyStreet/Cobrand/UK.pm:242 +msgid "Problems within %s ward" +msgstr "Problem inom området %s" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:24 +msgid "Problems within %s, FixMyStreet" +msgstr "Problem inom %s, FixaMinGata" + +#: templates/web/default/alert/_list.html:40 +#: templates/web/fixmybarangay/alert/_list.html:13 +#: templates/web/fixmystreet/alert/_list.html:42 +msgid "Problems within the boundary of:" +msgstr "Problem inom gränsen för:" + +#: db/alert_types_eha.pl:8 +msgid "Properties recently reported as put back to use on reportemptyhomes.com" +msgstr "Fastigheter nyligen rapporterade som åtgärdade på reportemptyhomes.com" + +#: templates/web/default/admin/report_edit.html:32 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:115 +msgid "Property address:" +msgstr "" + +#: templates/web/default/report/new/category.html:8 +msgid "Property type:" +msgstr "Fastighetstyp:" + +#: templates/web/bromley/report/new/fill_in_details_form.html:52 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:64 +msgid "Provide a title" +msgstr "Ange en titel" + +#: templates/web/bromley/report/display.html:57 +#: templates/web/default/report/update-form.html:3 +#: templates/web/fixmystreet/report/update-form.html:4 +msgid "Provide an update" +msgstr "Ge en uppdatering" + +#: templates/web/fixmystreet/auth/general.html:53 +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 "" + +#: 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." +msgstr "Att ange ett lösenord är valfritt, men om du gör det kommer du lättare att kunna rapportera framtida problem, lämna uppdateringar och hantera dina anmälningar." + +#: templates/web/bromley/report/display.html:144 +#: templates/web/default/report/new/fill_in_details_form.html:173 +#: templates/web/default/report/update-form.html:128 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:202 +#: templates/web/fixmystreet/report/update-form.html:116 +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:60 +#: templates/web/default/admin/body.html:73 +msgid "Public" +msgstr "Publikt" + +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:44 +msgid "Public information (shown on site)" +msgstr "" + +#: 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:80 +#: templates/web/zurich/admin/stats.html:38 +msgid "Publish photo" +msgstr "" + +#: templates/web/zurich/admin/report_edit.html:222 +msgid "Publish the response" +msgstr "" + +#: templates/web/default/questionnaire/completed.html:1 +#: templates/web/default/questionnaire/completed.html:2 +#: templates/web/default/questionnaire/index.html:0 +#: templates/web/default/questionnaire/index.html:14 +#: templates/web/default/questionnaire/index.html:4 +#: templates/web/fixmystreet/questionnaire/index.html:0 +#: templates/web/fixmystreet/questionnaire/index.html:14 +#: templates/web/fixmystreet/questionnaire/index.html:32 +#: templates/web/fixmystreet/questionnaire/index.html:4 +msgid "Questionnaire" +msgstr "Frågeformulär" + +#: templates/web/default/admin/timeline.html:30 +msgid "Questionnaire %d answered for problem %d, %s to %s" +msgstr "Frågeformulär %d svarat för problem %d, %s till %s" + +#: templates/web/default/admin/timeline.html:28 +msgid "Questionnaire %d sent for problem %d" +msgstr "Frågeformulär %d skickat för problem %d" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:192 +msgid "Questionnaire filled in by problem reporter" +msgstr "Frågeformulär ifyllt av rapportören" + +#: templates/web/bromley/report/display.html:37 +#: templates/web/default/alert/_list.html:21 +#: templates/web/default/around/display_location.html:1 +#: templates/web/default/around/display_location.html:3 +#: templates/web/default/report/display.html:46 +#: templates/web/default/reports/_rss.html:1 +#: templates/web/fixmystreet/alert/_list.html:22 +#: templates/web/fixmystreet/alert/updates.html:9 +#: templates/web/fixmystreet/report/display.html:61 +msgid "RSS feed" +msgstr "RSS-flöde" + +#: perllib/FixMyStreet/Cobrand/UK.pm:271 perllib/FixMyStreet/Cobrand/UK.pm:283 +msgid "RSS feed for %s" +msgstr "RSS-flöde för %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:277 perllib/FixMyStreet/Cobrand/UK.pm:289 +msgid "RSS feed for %s ward, %s" +msgstr "RSS-flöde för område %s, %s" + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:171 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:179 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:189 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:197 +#: perllib/FixMyStreet/Cobrand/UK.pm:297 perllib/FixMyStreet/Cobrand/UK.pm:309 +msgid "RSS feed of %s" +msgstr "RSS-flöde för %s" + +#: perllib/FixMyStreet/Cobrand/UK.pm:302 perllib/FixMyStreet/Cobrand/UK.pm:314 +msgid "RSS feed of %s, within %s ward" +msgstr "RSS-flöde för %s, inom område %s" + +#: templates/web/default/alert/_list.html:21 +#: templates/web/fixmystreet/alert/_list.html:22 +msgid "RSS feed of nearby problems" +msgstr "RSS-flöde av närliggande problem" + +#: templates/web/default/reports/_rss.html:1 +msgid "RSS feed of problems in this %s" +msgstr "RSS-flöde för problem i denna %s" + +#: perllib/FixMyStreet/Cobrand/Default.pm:627 +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:110 +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:154 +#: perllib/FixMyStreet/Cobrand/UK.pm:235 +msgid "RSS feed of problems within %s" +msgstr "RSS-flöde för problem inom %s" + +#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:116 +#: perllib/FixMyStreet/Cobrand/UK.pm:241 +msgid "RSS feed of problems within %s ward" +msgstr "RSS-flöde för problem inom område %s" + +#: templates/web/default/around/display_location.html:1 +#: templates/web/default/around/display_location.html:4 +msgid "RSS feed of recent local problems" +msgstr "RSS-flöde för senaste lokala problemen" + +#: templates/web/bromley/report/display.html:37 +#: templates/web/default/report/display.html:46 +#: templates/web/fixmystreet/alert/updates.html:9 +#: templates/web/fixmystreet/report/display.html:61 +msgid "RSS feed of updates to this problem" +msgstr "RSS-flöde för uppdateringar till denna rapport" + +#: templates/web/bromley/report/display.html:39 +#: templates/web/default/alert/updates.html:9 +#: templates/web/default/report/display.html:37 +#: templates/web/fixmystreet/alert/updates.html:14 +#: templates/web/fixmystreet/report/display.html:63 +msgid "Receive email when updates are left on this problem." +msgstr "Erhåll epost när uppdateringar ges till denna rapport" + +#: templates/web/default/around/display_location.html:0 +#: templates/web/default/around/display_location.html:32 +msgid "Recent local problems, FixMyStreet" +msgstr "Senaste lokala rapporterna, FixaMinGata" + +#: templates/web/default/reports/index.html:19 +#: templates/web/fixmybarangay/reports/index.html:19 +msgid "Recently <br>fixed" +msgstr "Nyligen <br>åtgärdat" + +#: templates/web/fiksgatami/nn/reports/index.html:13 +#: templates/web/fiksgatami/reports/index.html:13 +msgid "Recently fixed" +msgstr "Nyligen åtgärdat" + +#: templates/web/default/index.html:35 templates/web/emptyhomes/index.html:24 +#: templates/web/fixmystreet/index.html:45 +msgid "Recently reported problems" +msgstr "Senaste rapporterade problemen" + +#: templates/web/default/report/new/notes.html:9 +#: templates/web/fixmystreet/report/new/notes.html:10 +msgid "Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site remember that you can contact your council directly using their own website." +msgstr "Kom ihåg att FixaMinGata primärt är avsett för att rapportera fysiska problem som kan åtgärdas. Om ditt problem inte lämpar sig för att rapportera via den här webbsidan kan du kontakta din kommun direkt via deras webbsida." + +#: templates/web/fixmybarangay/report/new/notes.html:9 +msgid "Remember that, for the pilot project, FixMyBarangay is only for reporting potholes and streetlights in bgy. Luz or Basak San Nicolas." +msgstr "Kom igår att, för pilotprojektet FixMyBarangay, rapporteras endast potthål och gatulysen i bgy. Luz och Basak San Nicolas." + +#: templates/web/default/admin/report_blocks.html:16 +msgid "Remove flag" +msgstr "Ta bort flagga" + +#: templates/web/default/admin/report_edit.html:89 +#: templates/web/default/admin/update_edit.html:57 +#: templates/web/zurich/admin/update_edit.html:35 +msgid "Remove photo (can't be undone!)" +msgstr "Ta bort foto (kan inte ångras!)" + +#: templates/web/emptyhomes/header.html:12 +msgid "Report Empty Homes" +msgstr "Rapportera tomma fastigheter" + +#: 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 "Rapportera ett problem" + +#: templates/web/bromley/report/display.html:28 +#: templates/web/fixmystreet/report/display.html:35 +msgid "Report abuse" +msgstr "Rapportera missbruk" + +#: templates/web/default/report_created.html:1 +#: templates/web/default/report_created.html:3 +#: templates/web/seesomething/report_created.html:0 +#: templates/web/seesomething/report_created.html:8 +msgid "Report created" +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Rss.pm:295 +msgid "Report on %s" +msgstr "Rappoort på %s" + +#: templates/web/default/index.html:14 templates/web/emptyhomes/index.html:5 +#: templates/web/fixmystreet/around/intro.html:1 +#: templates/web/stevenage/around/intro.html:1 +#: templates/web/zurich/around/intro.html:1 +msgid "Report, view, or discuss local problems" +msgstr "Rapportera, visa, eller diskutera lokala problem" + +#: templates/web/default/my/my.html:74 +msgid "Reported %s" +msgstr "Rapporterade %s" + +#: templates/web/default/my/my.html:72 +msgid "Reported %s, to %s" +msgstr "Rapporterat %s till %s" + +#: 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 "Rapporterat anonymt %s" + +#: templates/web/default/admin/questionnaire.html:5 +#: templates/web/default/questionnaire/index.html:77 +#: templates/web/fixmystreet/questionnaire/index.html:71 +msgid "Reported before" +msgstr "Rapporterat tidigare" + +#: 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" + +#: templates/web/zurich/report/_main.html:2 +msgid "Reported in the %s category" +msgstr "" + +#: 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: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: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 "Rapportera ett problem" + +#: 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: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 +msgid "Reports awaiting approval" +msgstr "" + +#: templates/web/default/around/tabbed_lists.html:3 +msgid "Reports on and around the map" +msgstr "Rapporter på och runt kartbilden" + +#: templates/web/zurich/admin/index-sdm.html:10 +msgid "Reports published" +msgstr "" + +#: templates/web/default/admin/report_edit.html:71 +msgid "Resend report" +msgstr "Skicka om rapporten" + +#: templates/web/default/js/translation_strings.html:28 +#: templates/web/oxfordshire/js/translation_strings.html:22 +msgid "Right place?" +msgstr "" + +#: perllib/FixMyStreet/Geocode/OSM.pm:173 +msgid "Road operator for this named road (derived from road reference number and type): %s" +msgstr "Vägoperatör för den här namngivna vägen (hämtat från vägens nummer och typ): %s" + +#: perllib/FixMyStreet/Geocode/OSM.pm:170 +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: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:1377 +#: templates/web/default/admin/report_edit.html:86 +#: templates/web/zurich/admin/report_edit.html:77 +msgid "Rotate Right" +msgstr "" + +#: templates/web/default/admin/body_edit.html:76 +msgid "Save changes" +msgstr "Spara ändringar" + +#: templates/web/default/admin/reports.html:1 +#: templates/web/zurich/admin/reports.html:1 +msgid "Search Reports" +msgstr "Sök rapporter" + +#: templates/web/default/admin/users.html:1 +msgid "Search Users" +msgstr "Sök användare" + +#: templates/web/zurich/header.html:77 +msgid "Search reports" +msgstr "" + +#: templates/web/default/admin/reports.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/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:71 +#: templates/web/zurich/admin/body-form.html:26 +msgid "Select an area" +msgstr "" + +#: templates/web/default/alert/_list.html:8 +#: templates/web/fixmystreet/alert/_list.html:10 +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:664 +msgid "Sent to %s %s later" +msgstr "Skickades till %s, %s senare" + +#: templates/web/default/admin/report_edit.html:71 +msgid "Sent:" +msgstr "Skickades:" + +#: templates/web/default/admin/report_edit.html:73 +#: templates/web/zurich/admin/stats.html:45 +msgid "Service:" +msgstr "Tjänst:" + +#: templates/web/fixmystreet/report/display.html:41 +msgid "Share" +msgstr "Dela" + +#: templates/web/bromley/report/display.html:205 +#: templates/web/bromley/report/new/fill_in_details_form.html:129 +#: templates/web/bromley/report/new/fill_in_details_form.html:175 +#: templates/web/default/report/new/fill_in_details_form.html:210 +#: templates/web/default/report/update-form.html:157 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:129 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:197 +#: templates/web/fixmystreet/report/update-form.html:144 +msgid "Show my name publicly" +msgstr "Visa mitt namn publikt" + +#: templates/web/default/around/display_location.html:69 +msgid "Show old" +msgstr "Visa äldre" + +#: templates/web/default/around/display_location.html:60 +msgid "Show pins" +msgstr "Visa pinnar" + +#: templates/web/default/auth/general.html:3 +#: templates/web/default/auth/general.html:49 +#: templates/web/fixmybarangay/header.html:70 +#: templates/web/fixmystreet/auth/general.html:3 +#: templates/web/fixmystreet/auth/general.html:42 +#: templates/web/fixmystreet/auth/general.html:62 +#: templates/web/fixmystreet/header.html:54 +#: templates/web/oxfordshire/header.html:115 +#: templates/web/seesomething/auth/general.html:3 +#: templates/web/seesomething/auth/general.html:39 +#: templates/web/stevenage/header.html:101 +#: templates/web/zurich/auth/general.html:18 +#: templates/web/zurich/auth/general.html:35 +msgid "Sign in" +msgstr "Logga in" + +#: templates/web/default/auth/general.html:74 +msgid "Sign in by email" +msgstr "Logga in via epost" + +#: templates/web/default/auth/general.html:1 +#: templates/web/fixmystreet/auth/general.html:1 +#: templates/web/seesomething/auth/general.html:1 +#: templates/web/zurich/auth/general.html:1 +msgid "Sign in or create an account" +msgstr "Logga in eller skapa nytt konto" + +#: templates/web/bromley/auth/sign_out.html:1 +#: templates/web/default/auth/sign_out.html:1 +#: templates/web/default/header.html:30 +#: templates/web/emptyhomes/header.html:46 +#: templates/web/fiksgatami/header.html:22 +#: templates/web/fiksgatami/nn/header.html:22 +#: templates/web/lichfielddc/header.html:177 +#: templates/web/reading/header.html:33 +#: templates/web/seesomething/auth/sign_out.html:1 +#: templates/web/zurich/auth/sign_out.html:1 +msgid "Sign out" +msgstr "Logga ut" + +#: templates/web/default/header.html:29 +#: templates/web/emptyhomes/header.html:45 +#: templates/web/fiksgatami/header.html:21 +#: templates/web/fiksgatami/nn/header.html:21 +#: templates/web/lichfielddc/header.html:177 +#: templates/web/reading/header.html:32 +msgid "Signed in as %s" +msgstr "Inloggad som %s" + +#: templates/web/default/report/new/fill_in_details_text.html:1 +#: templates/web/fixmybarangay/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +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" +msgstr "Foton från de senaste rapporterna" + +#: perllib/FixMyStreet/App/View/Email.pm:32 +#: perllib/FixMyStreet/App/View/Web.pm:44 +msgid "Some text to localize" +msgstr "Lite text att lokalisera" + +#: perllib/FixMyStreet/Cobrand/UK.pm:93 +msgid "Sorry, that appears to be a Crown dependency postcode, which we don't cover." +msgstr "Tyvärr, det verkar vara ett postnummer som vi inte täcker." + +#: templates/web/default/tokens/abuse.html:5 +msgid "Sorry, there has been an error confirming your problem." +msgstr "Tyvärr har det uppstått ett fel med att bekräfta ditt problem." + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:215 +#: perllib/FixMyStreet/Geocode.pm:28 perllib/FixMyStreet/Geocode/Bing.pm:58 +#: perllib/FixMyStreet/Geocode/Google.pm:74 +#: perllib/FixMyStreet/Geocode/OSM.pm:66 +msgid "Sorry, we could not find that location." +msgstr "Tyvärr kan vi inte hitta den adressen." + +#: perllib/FixMyStreet/Geocode/Bing.pm:53 +#: perllib/FixMyStreet/Geocode/Google.pm:69 +#: perllib/FixMyStreet/Geocode/Zurich.pm:87 +msgid "Sorry, we could not parse that location. Please try again." +msgstr "Tyvärr kan vi inte förstå den adressen. Försök gärna igen." + +#: templates/web/fiksgatami/footer.html:16 +#: templates/web/fiksgatami/nn/footer.html:16 +msgid "Source code" +msgstr "Källkod" + +#: templates/web/default/admin/stats.html:64 +#, fuzzy +msgid "Start Date:" +msgstr "Startdag:" + +#: 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 "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: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: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 "Statistik" + +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Status" +msgstr "" + +#: templates/web/default/report/updates.html:10 +msgid "Still open, via questionnaire, %s" +msgstr "Fortfarande öppen, via frågeformulär, %s" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370 +msgid "Subcategory: %s" +msgstr "" + +#: templates/web/zurich/admin/index-dm.html:27 +msgid "Subdivision/Body" +msgstr "" + +#: templates/web/bromley/report/new/fill_in_details_form.html:48 +#: templates/web/fixmystreet/contact/index.html:91 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:60 +msgid "Subject" +msgstr "Ärende" + +#: 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 "Ärende:" + +#: 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 "Skicka" + +#: 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 "Skicka förändringar" + +#: templates/web/default/questionnaire/index.html:116 +#: templates/web/fixmystreet/questionnaire/index.html:105 +msgid "Submit questionnaire" +msgstr "Skicka frågeformulär" + +#: 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 "" + +#: templates/web/bromley/report/display.html:44 +#: templates/web/default/alert/updates.html:17 +#: templates/web/default/report/display.html:42 +#: templates/web/fixmystreet/alert/updates.html:23 +#: templates/web/fixmystreet/report/display.html:68 +msgid "Subscribe" +msgstr "Prenumerera" + +#: templates/web/default/alert/_list.html:97 +#: templates/web/fixmybarangay/alert/_list.html:42 +#: templates/web/fixmystreet/alert/_list.html:92 +msgid "Subscribe me to an email alert" +msgstr "Prenumerera med epost" + +#: templates/web/fixmybarangay/alert/_list.html:6 +msgid "Subscribe to an alert based upon what baranagay you’re in:" +msgstr "Prenumerera på rapporter baserat på vilket baranagay du är i" + +#: 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 "Summering" + +#: templates/web/default/reports/index.html:1 +#: templates/web/emptyhomes/reports/index.html:1 +#: templates/web/fiksgatami/nn/reports/index.html:1 +#: templates/web/fiksgatami/reports/index.html:1 +#: templates/web/fixmybarangay/reports/index.html:1 +#: templates/web/zurich/reports/index.html:0 +#: templates/web/zurich/reports/index.html:4 +msgid "Summary reports" +msgstr "Sammanställningsrapporter" + +#: perllib/FixMyStreet/App/Controller/Admin.pm:1179 +msgid "Survey" +msgstr "" + +#: templates/web/default/admin/questionnaire.html:1 +msgid "Survey Results" +msgstr "Frågeresultat" + +#: 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" + +#: templates/web/default/admin/body.html:18 +msgid "Text only version" +msgstr "Version med endast text" + +#: templates/web/default/admin/update_edit.html:20 +#: templates/web/zurich/admin/update_edit.html:12 +msgid "Text:" +msgstr "Text:" + +#: templates/web/default/tokens/confirm_update.html:7 +#: templates/web/default/tokens/confirm_update.html:8 +msgid "Thank you — you can <a href=\"%s\">view your updated problem</a> on the site." +msgstr "Tack! Du kan <a href=\"%s\">visa din uppdaterade rapport</a> på webbplatsen." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:6 +#: templates/web/emptyhomes/tokens/confirm_problem.html:8 +msgid "Thank you for reporting an empty property on ReportEmptyHomes.com. We have emailed the lead officer for empty homes in the council responsible with details, and asked them to do whatever they can to get the empty property back into use as soon as possible." +msgstr "Tack för att du rapporterar en tom fastighet på ReportEmptyHomes.com. Vi har skickat epost till ansvarig tjänsteman i den kommun som är ansvarig och bett dem om hjälp att få fastigheten tillbaka i användning." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:30 +#: templates/web/emptyhomes/tokens/confirm_problem.html:31 +msgid "" +"Thank you for reporting this empty property on ReportEmptyHomes.com.\n" +"At present the report cannot be sent through to the council for this area. We\n" +"are working with councils to link them into the system so that as many areas\n" +"as possible will be covered." +msgstr "Tack för att du rapporterar en tom fastighet på ReportEmptyHomes.com. För närvarande kan vi inte skicka epost till ansvarig tjänsteman i den kommun som är ansvarig. Vi arbetar med kommunen för att säkerställa att vi kan göra det i framtiden." + +#: templates/web/default/tokens/error.html:7 +msgid "Thank you for trying to confirm your update or problem. We seem to have an error ourselves though, so <a href=\"%s\">please let us know what went on</a> and we'll look into it." +msgstr "Tack för att du försöker bekräfta din uppdatering eller rapport. Vi har tyvärr stött på ett fel och uppskattar om du kan <a href=\"%s\">rapporterar vad som hände</a> så att vi kan titta på det." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:24 +#: templates/web/emptyhomes/tokens/confirm_problem.html:26 +msgid "Thank you for using ReportEmptyHomes.com. Your action is already helping to resolve the UK’s empty homes crisis." +msgstr "Tack för att du använt ReportEmptyHomes.com. Ditt engagemang hjälper oss att lösa bostadsbristen!" + +#: templates/web/fixmystreet/around/around_index.html:27 +msgid "Thanks for uploading your photo. We now need to locate your problem, so please enter a nearby street name or postcode in the box above :" +msgstr "Tack för att du bifogade ett foto. Vi måste nu lokalisera ditt problem så var vänlig ange närliggande gatunamn och ort eller postnummer i rutan ovan :" + +#: templates/web/default/contact/submit.html:8 +msgid "Thanks for your feedback. We'll get back to you as soon as we can!" +msgstr "Tack för din återkoppling. Vi återkommer så snart vi kan!" + +#: templates/web/default/questionnaire/creator_fixed.html:9 +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: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." + +#: perllib/FixMyStreet/App/Controller/Council.pm:90 +msgid "That location does not appear to be covered by a council; perhaps it is offshore or outside the country. Please try again." +msgstr "Den positionen verkar inte täckas av någon kommun och ligger eventuellt utanför kartan eller utanför landet. Försök gärna med en ny position." + +#: perllib/FixMyStreet/App/Controller/Location.pm:123 +msgid "That location does not appear to be in the UK; please try again." +msgstr "Den positionen verkar inte vara i Sverige: försök gärna igen." + +#: perllib/FixMyStreet/Cobrand/FiksGataMi.pm:63 +#: perllib/FixMyStreet/Cobrand/UK.pm:86 +msgid "That postcode was not recognised, sorry." +msgstr "Det postnummret finns tyvärr inte." + +#: perllib/FixMyStreet/App/Controller/Admin.pm:704 +msgid "That problem will now be resent." +msgstr "Rapportern kommer nu att skickas om." + +#: perllib/FixMyStreet/App/Controller/Report.pm:117 +msgid "That report cannot be viewed on %s." +msgstr "" + +#: perllib/FixMyStreet/App/Controller/Report.pm:111 +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 — <em>please</em> be patient." +msgstr "Bekräftelsebrevet <strong>kan</strong> ta ett par minuter att komma fram — var tålmodig." + +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:1 +#: templates/web/fixmystreet/report/new/fill_in_details_text.html:3 +msgid "The council won’t be able to help unless you leave as much detail as you can. Please describe the exact location of the problem (e.g. on a wall), what it is, how long it has been there, a description (and a photo of the problem if you have one), etc." +msgstr "Det är lättare för kommunen att hjälpa till om du lämnar så mycket detaljer som möjligt. Beskriv den exakta positionen (ex.v. på väggen), vad problemet är, hur länge det har funnits där, en beskrivning och foto (om du har), etc." + +#: templates/web/fixmystreet/questionnaire/index.html:43 +msgid "The details of your problem are available from the other tab above." +msgstr "Information om ditt problem kan du se i fliken \"Din rapport\" ovan." + +#: templates/web/default/questionnaire/index.html:49 +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" +msgstr "Felet var: %s" + +#: templates/web/default/open311/index.html:88 +msgid "The following Open311 v2 attributes are returned for each request: service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code and service_name." +msgstr "Följande Open311 v2-attribut returneras för varje begäran: service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code and service_name." + +#: perllib/FixMyStreet/Geocode/OSM.pm:165 +msgid "The following information about the nearest road might be inaccurate or irrelevant, if the problem is close to several roads or close to a road without a name registered in OpenStreetMap." +msgstr "Följande information om den närmaste vägen kan vara inexakt eller ogiltigt om problemet är nära flera olika vägar eller nära en väg utan ett namn i OpenStreetMap." + +#: db/alert_types.pl:19 db/alert_types.pl:23 db/alert_types.pl:27 +#: db/alert_types.pl:31 +msgid "The latest local problems reported by users" +msgstr "De senaste lokala problemen rapporterat av användare" + +#: db/alert_types_eha.pl:13 +msgid "The latest local reports reported by users" +msgstr "De senaste lokala rapporterna från användare" + +#: db/alert_types.pl:35 +msgid "The latest problems for {{COUNCIL}} reported by users" +msgstr "De senaste problemen för {{COUNCIL}} från användare" + +#: db/alert_types.pl:39 +msgid "The latest problems for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "De senaste problemen för område {{WARD}} i {{COUNCIL}} rapporterad från användare" + +#: db/alert_types.pl:11 +msgid "The latest problems reported by users" +msgstr "De senaste problemen rapporterade av användare" + +#: db/alert_types.pl:15 +msgid "The latest problems reported fixed by users" +msgstr "De senaste problemen rapporterade som lösta av användare" + +#: db/alert_types.pl:43 +msgid "The latest problems within {{NAME}}'s boundary reported by users" +msgstr "De senaste problemen inom {{NAME}}'s gräns rapporterade av användare" + +#: db/alert_types_eha.pl:9 +msgid "The latest properties reported back to use by users" +msgstr "De senaste fastigheterna rapporterade som åter tagna i användning av användare" + +#: db/alert_types_eha.pl:20 +msgid "The latest reports for {{COUNCIL}} reported by users" +msgstr "De senaste rapporterna för {{COUNCIL}} rapporterade från användare" + +#: db/alert_types_eha.pl:24 +msgid "The latest reports for {{COUNCIL}} within {{WARD}} ward reported by users" +msgstr "De senaste rapporterna för {{COUNCIL}} inom {{WARD}} rapporterade från användare" + +#: db/alert_types_eha.pl:28 +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" +msgstr "Lösenorden stämmer inte överens" + +#: templates/web/default/errors/page_error_404_not_found.html:10 +#: templates/web/default/errors/page_error_404_not_found.html:12 +msgid "The requested URL '%s' was not found on this server" +msgstr "Den sökta adressen '%s' hittades inte på denna server" + +#: templates/web/default/alert/_list.html:14 +#: templates/web/fixmystreet/alert/_list.html:16 +msgid "The simplest alert is our geographic one:" +msgstr "Vår enklaste bevakning är för rapporter inom ett geografiskt område:" + +#: templates/web/barnet/report/new/councils_text_all.html:3 +#: templates/web/default/report/new/councils_extra_text.html:1 +#: templates/web/default/report/new/councils_text_some.html:10 +#: templates/web/default/report/new/councils_text_some.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:17 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:12 +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: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." + +#: perllib/FixMyStreet/App/Controller/Contact.pm:116 +#: perllib/FixMyStreet/App/Controller/Dashboard.pm:59 +msgid "There was a problem showing this page. Please try again later." +msgstr "Det uppstod ett problem med att visa denna sida. Försök gärna igen senare." + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:747 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:134 +#: templates/web/default/auth/general.html:23 +#: templates/web/fixmystreet/auth/general.html:24 +#: templates/web/seesomething/auth/general.html:24 +#: templates/web/zurich/auth/general.html:28 +msgid "There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the ‘sign in by email’ section of the form." +msgstr "Felaktigt lösenord eller epostadress. Om du har glömt bort ditt lösenord, eller om du inte har ett lösenord, kan du fylla i ‘logga in via epost’." + +#: perllib/FixMyStreet/App/Controller/Alert.pm:355 +msgid "There was a problem with your email/password combination. Please try again." +msgstr "Felaktigt lösenord eller epostadress. Försök igen." + +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:272 +msgid "There was a problem with your update. Please try again." +msgstr "Det uppstod ett problem med din uppdatering. Försök igen." + +#: perllib/FixMyStreet/App/Controller/Contact.pm:120 +msgid "There were problems with your report. Please see below." +msgstr "Det uppstod ett problem med din rapport. Se nedan." + +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:299 +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." + +#: 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: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" +msgstr "Den här informationen krävs" + +#: templates/web/default/debug_header.html:3 +msgid "This is a developer site; things might break at any time, and the database will be periodically deleted." +msgstr "Det här är en utvecklingsplats: olika saker kan komma att gå sönder vid olika tidpunkter och databasen kommer att rutinmässigt raderas." + +#: templates/web/fixmybarangay/reports/index.html:7 +msgid "This is a summary of all reports on this site; select a particular barangay to see the reports sent there." +msgstr "" + +#: templates/web/emptyhomes/reports/index.html:4 +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 "" + +#: templates/web/default/reports/index.html:7 +#: templates/web/fiksgatami/nn/reports/index.html:4 +#: templates/web/fiksgatami/reports/index.html:4 +msgid "This is a summary of all reports on this site; select a particular council to see the reports sent there." +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." + +#: templates/web/default/auth/token.html:9 +msgid "This may be because the link is too old or already used, or the address was not copied correctly." +msgstr "" + +#: templates/web/default/report/banner.html:15 +msgid "This problem has been closed" +msgstr "Den här rapporten har stängts" + +#: templates/web/bromley/report/display.html:98 +#: templates/web/default/report/banner.html:12 +#: templates/web/default/report/update-form.html:48 +#: templates/web/emptyhomes/report/banner.html:3 +#: templates/web/fixmystreet/report/update-form.html:46 +msgid "This problem has been fixed" +msgstr "Det här problemet har lösts" + +#: templates/web/bromley/report/display.html:92 +#: templates/web/default/report/update-form.html:43 +#: templates/web/fixmystreet/report/update-form.html:40 +msgid "This problem has not been fixed" +msgstr "Det här problemet har inte lösts" + +#: templates/web/default/report/banner.html:19 +msgid "This problem is in progress" +msgstr "Arbete pågår med att lösa problemet" + +#: templates/web/default/report/banner.html:9 +msgid "This problem is old and of unknown status." +msgstr "Problemet är gammalt och har okänt status" + +#: 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 "" + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:86 +msgid "This report is currently marked as closed." +msgstr "Den här rapporten är markerad som stängd" + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:84 +msgid "This report is currently marked as fixed." +msgstr "Det här problemet är markerat som löst" + +#: perllib/FixMyStreet/DB/ResultSet/AlertType.pm:88 +msgid "This report is currently marked as open." +msgstr "Den här rapportern är öppen" + +#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315 +msgid "This report was submitted anonymously" +msgstr "" + +#: 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:1178 +#: templates/web/default/admin/timeline.html:1 +msgid "Timeline" +msgstr "Tidslinje" + +#: templates/web/default/admin/flagged.html:15 +#: templates/web/default/admin/reports.html:12 +msgid "Title" +msgstr "Titel" + +#: templates/web/default/around/_report_banner.html:2 +msgid "To <strong>report a problem</strong>, click on the map at the correct location." +msgstr "Klicka på kartan för att <strong>rapportera ett problem</strong>." + +#: templates/web/default/alert/index.html:27 +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: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: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 "Totalt" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:24 +msgid "Transport Category" +msgstr "" + +#: templates/web/default/js/translation_strings.html:29 +#: templates/web/oxfordshire/js/translation_strings.html:23 +msgid "Try again" +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 "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:48 +#: templates/web/zurich/admin/report_edit.html:61 +#: templates/web/zurich/admin/update_edit.html:18 +msgid "Unconfirmed" +msgstr "Obekräftat" + +#: templates/web/fixmystreet/report/banner.html:9 +msgid "Unknown" +msgstr "Okänt" + +#: perllib/FixMyStreet/App/Controller/Rss.pm:173 +msgid "Unknown alert type" +msgstr "Okänd feltyp" + +#: templates/web/default/js/translation_strings.html:39 +#: templates/web/oxfordshire/js/translation_strings.html:33 +msgid "Unknown error" +msgstr "Okänt fel" + +#: perllib/FixMyStreet/App/Controller/Report.pm:106 +msgid "Unknown problem ID" +msgstr "Okänt problemnummer" + +#: templates/web/bromley/report/display.html:66 +#: templates/web/fixmystreet/report/update-form.html:19 +msgid "Update" +msgstr "Uppdatering" + +#: templates/web/default/admin/timeline.html:33 +msgid "Update %s created for problem %d; by %s" +msgstr "Uppdatering %s skapad för rapporten %d, av %s" + +#: templates/web/default/contact/index.html:21 +#: templates/web/fixmystreet/contact/index.html:34 +msgid "Update below added anonymously at %s" +msgstr "Uppdateringen nedan tillagd anonymt %s" + +#: templates/web/default/contact/index.html:23 +#: templates/web/fixmystreet/contact/index.html:36 +msgid "Update below added by %s at %s" +msgstr "Uppdateringen nedan tillagd av %s den %s" + +#: 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:38 +msgid "Update breakdown by state" +msgstr "Uppdatering per status" + +#: db/alert_types.pl:7 +msgid "Update by {{name}}" +msgstr "Uppdatering av {{name}}" + +#: templates/web/default/admin/update_edit.html:42 +#: templates/web/zurich/admin/update_edit.html:25 +msgid "Update changed problem state to %s" +msgstr "Uppdateringen ändrade statusen till %s" + +#: templates/web/default/admin/update_edit.html:44 +msgid "Update marked problem as fixed" +msgstr "Uppdateringen markerade problemet som löst" + +#: templates/web/default/admin/update_edit.html:46 +msgid "Update reopened problem" +msgstr "Uppdateringen öppnade rapporten på nytt" + +#: templates/web/default/admin/body.html:83 +msgid "Update statuses" +msgstr "Uppdaterad status" + +#: templates/web/default/report/update-form.html:22 +msgid "Update:" +msgstr "Uppdatering:" + +#: templates/web/zurich/admin/index-dm.html:23 +#: templates/web/zurich/admin/index-sdm.html:21 +#: templates/web/zurich/admin/reports.html:13 +msgid "Updated" +msgstr "" + +#: 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:24 +#: templates/web/zurich/report/updates.html:2 +msgid "Updates" +msgstr "Uppdateringar" + +#: perllib/FixMyStreet/DB/Result/Comment.pm:131 +msgid "Updates are limited to 2000 characters in length. Please shorten your update" +msgstr "" + +#: db/alert_types.pl:5 db/alert_types.pl:6 +msgid "Updates on {{title}}" +msgstr "Uppdateringar för {{title}}" + +#: templates/web/bromley/report/display.html:0 +#: templates/web/bromley/report/display.html:8 +#: templates/web/default/report/display.html:0 +#: templates/web/default/report/display.html:5 +#: templates/web/fixmystreet/report/display.html:0 +#: templates/web/fixmystreet/report/display.html:8 +msgid "Updates to this problem, FixMyStreet" +msgstr "Uppdateringar för det här problemet, FixaMinGata" + +#: 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:1314 +msgid "User flagged" +msgstr "Användaren flaggad" + +#: 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:371 +#: perllib/FixMyStreet/App/Controller/Admin.pm:401 +msgid "Values updated" +msgstr "Värden uppdaterade" + +#: templates/web/default/admin/report_edit.html:18 +#: templates/web/default/admin/update_edit.html:18 +#: templates/web/zurich/admin/report_edit-sdm.html:24 +#: templates/web/zurich/admin/report_edit.html:23 +#: templates/web/zurich/admin/update_edit.html:10 +msgid "View report on site" +msgstr "Visa rapporter på sidan" + +#: templates/web/default/reports/body.html:14 +msgid "View reports by ward" +msgstr "Visa rapporter per område" + +#: templates/web/emptyhomes/tokens/confirm_problem.html:39 +msgid "View your report" +msgstr "Visa din rapport" + +#: templates/web/default/around/display_location.html:0 +#: templates/web/default/around/display_location.html:34 +#: templates/web/seesomething/around/display_location.html:0 +#: templates/web/seesomething/around/display_location.html:16 +msgid "Viewing a location" +msgstr "Visa en position" + +#: templates/web/bromley/report/display.html:0 +#: templates/web/default/report/display.html:0 +#: templates/web/fixmystreet/report/display.html:0 +msgid "Viewing a problem" +msgstr "Visa ett problem" + +#: templates/web/default/reports/body.html:16 +msgid "Wards of this council" +msgstr "Delområden i denna kommun" + +#: templates/web/default/alert/choose.html:6 +#: templates/web/default/around/around_index.html:13 +#: templates/web/fixmystreet/around/around_index.html:16 +#: templates/web/seesomething/around/around_index.html:13 +msgid "We found more than one match for that location. We show up to ten matches, please try a different search if yours is not here." +msgstr "Vi hittade fler än en träff. Vi visar upp till tio träffar nedan. Om ingen av dem överenstämmer med vald adress kan du söka igen. Om du söker efter en gata, lägg till stad efteråt: \"Vasagatan, Göteborg\" för att förfina sökningen." + +#: templates/web/default/auth/token.html:8 +msgid "We have not been able to confirm your account - sorry." +msgstr "" + +#: templates/web/default/auth/token.html:16 +msgid "We have sent you an email containing a link to confirm your account." +msgstr "Vi har skickat dig epost med en länk för att bekräfta ditt konto." + +#: templates/web/emptyhomes/tokens/confirm_problem.html:18 +#: templates/web/emptyhomes/tokens/confirm_problem.html:20 +msgid "We may contact you periodically to ask if anything has changed with the property you reported." +msgstr "Vi kan kontakta dig från tid till annan för att fråga om någonting har hänt med den fastighet du rapporterade." + +#: templates/web/bromley/report/display.html:143 +#: templates/web/fixmystreet/report/update-form.html:115 +msgid "We never show your email" +msgstr "Vi visar aldrig din epostadress publikt" + +#: templates/web/bromley/report/new/fill_in_details_form.html:133 +#: templates/web/bromley/report/new/fill_in_details_form.html:179 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:134 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:201 +#: templates/web/zurich/report/new/fill_in_details_form.html:96 +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: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." + +#: templates/web/default/index-steps.html:31 +msgid "We send it to the council on your behalf" +msgstr "Vi skickar rapportern till berörd kommun" + +#: templates/web/bromley/report/new/fill_in_details_form.html:217 +#: templates/web/default/report/new/notes.html:5 +#: templates/web/fixmybarangay/report/new/notes.html:5 +msgid "We will only use your personal information in accordance with our <a href=\"/faq#privacy\">privacy policy.</a>" +msgstr "Vi kommer endast att använda din information i enlighet med vår <a href=\"/faq#privacy\">sekretesspolicy.</a>" + +#: templates/web/fixmystreet/report/new/notes.html:4 +#: templates/web/oxfordshire/report/new/notes.html:4 +msgid "We will only use your personal information in accordance with our <a href=\"/privacy\">privacy policy.</a>" +msgstr "Vi kommer endast att använda din information i enlighet med vår <a href=\"/privacy\">sekretesspolicy.</a>" + +#: templates/web/emptyhomes/contact/blurb.html:2 +msgid "We’d love to hear what you think about this website. Just fill in the form. Please don’t contact us about individual empty homes; use the box accessed from <a href=\"/\">the front page</a>." +msgstr "Vi vill gärna höra vad du tycker om FixaMinGata. Fyll i formuläret nedan och skicka in." + +#: templates/web/default/contact/blurb.html:8 +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:61 +#: templates/web/default/admin/body_edit.html:82 +#: templates/web/zurich/admin/body.html:17 +msgid "When edited" +msgstr "Vid förändringar" + +#: templates/web/default/admin/problem_row.html:35 +msgid "When sent" +msgstr "Vid avsändning" + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:621 +msgid "Whole block of empty flats" +msgstr "Hela block med tomma lägenheter" + +#: templates/web/default/open311/index.html:94 +msgid "With request searches, it is also possible to search for agency_responsible to limit the requests to those sent to a single administration. The search term is the administration ID provided by <a href=\"%s\">MaPit</a>." +msgstr "Vid sökningar är det också möjligt att söka efter agency_responsible för att begränsa svaren till de som skickats till en enstaka kommun. Söktermen för administrations-IDt erhålls av <a href=\"%s\">MapIt</a>." + +#: templates/web/fixmystreet/footer.html:21 +#: templates/web/stevenage/footer.html:22 +msgid "Would you like better integration with FixMyStreet? <a href=\"http://www.mysociety.org/for-councils/fixmystreet/\">Find out about FixMyStreet for councils</a>." +msgstr "Vill du ha en bättre integration för FixaMinGata i ert verksamhetssystem? <a href=\"/contact\">Kontakta oss för mer information</a>." + +#: templates/web/fixmystreet/footer.html:17 +#: templates/web/stevenage/footer.html:18 +msgid "Would you like to contribute to FixMyStreet? Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>." +msgstr "Vill du bidra till FixaMinGata? Vår kod är öppen programvara och <a href=\"http://github.com/MorusAB/fixmystreet\">tillgänglig på GitHub</a>." + +#: templates/web/default/questionnaire/index.html:106 +#: templates/web/fixmystreet/questionnaire/index.html:96 +msgid "Would you like to receive another questionnaire in 4 weeks, reminding you to check the status?" +msgstr "Vill du bli påmind om att kolla statusen med ett annat frågeformulär om fyra veckor?" + +#: templates/web/default/report/new/notes.html:8 +#: templates/web/fixmybarangay/report/new/notes.html:8 +#: templates/web/fixmystreet/report/new/notes.html:8 +#: templates/web/oxfordshire/report/new/notes.html:7 +msgid "Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation." +msgstr "Om du skriver ditt meddelande endast med versaler blir det svårare att läsa, precis som om du inte kommaterar korrekt." + +#: templates/web/default/admin/stats.html:10 +msgid "Year" +msgstr "År" + +#: 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 "Ja" + +#: templates/web/bromley/report/display.html:157 +#: templates/web/bromley/report/new/fill_in_details_form.html:198 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:161 +#: templates/web/fixmystreet/report/update-form.html:89 +msgid "Yes I have a password" +msgstr "Ja, jag har ett lösenord" + +#: templates/web/default/contact/index.html:37 +#: templates/web/fixmystreet/contact/index.html:50 +msgid "You are reporting the following problem report for being abusive, containing personal information, or similar:" +msgstr "Du vill anmäla missbruk, personlig inforation, eller motsvarande i följande rapport:" + +#: templates/web/default/contact/index.html:15 +#: templates/web/fixmystreet/contact/index.html:28 +msgid "You are reporting the following update for being abusive, containing personal information, or similar:" +msgstr "Du vill anmäla missbruk, personlig inforation, eller motsvarande i följande uppdatering:" + +#: templates/web/default/tokens/confirm_problem.html:19 +#: templates/web/default/tokens/confirm_problem.html:21 +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:8 +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 "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/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" + +#: perllib/FixMyStreet/App/Controller/Questionnaire.pm:38 +msgid "You have already answered this questionnaire. If you have a question, please <a href='%s'>get in touch</a>, or <a href='%s'>view your problem</a>.\n" +msgstr "Du har redan svarat på det här frågeformuläret. Om du har en fråga, <a href=\"%s\">kontakta oss</a> eller <a href=\"%s\">visa problemet</a>.\n" + +#: templates/web/bromley/report/new/fill_in_details_form.html:97 +#: templates/web/default/questionnaire/index.html:96 +#: templates/web/default/report/new/fill_in_details_form.html:93 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:90 +#: templates/web/fixmystreet/questionnaire/index.html:87 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:99 +#: templates/web/seesomething/report/new/fill_in_details_form.html:59 +#: templates/web/zurich/report/new/fill_in_details_form.html:75 +msgid "You have already attached a photo to this report, attaching another one will replace it." +msgstr "Du har redan bifogat ett foto till rapporten. Om du bifogar ett nytt foto kommer det att ersätta det tidigare." + +#: templates/web/bromley/report/display.html:108 +#: templates/web/default/report/update-form.html:59 +#: templates/web/fixmystreet/report/update-form.html:56 +msgid "You have already attached a photo to this update, attaching another one will replace it." +msgstr "Du har redan bifogat ett foto till uppdateringen. Om du bifogar ett nytt foto kommer det att ersätta det tidigare." + +#: templates/web/default/auth/sign_out.html:3 +#: templates/web/seesomething/auth/sign_out.html:3 +#: templates/web/zurich/auth/sign_out.html:3 +msgid "You have been signed out" +msgstr "Du har blivit utloggad" + +#: templates/web/bromley/report/new/fill_in_details_form.html:25 +#: templates/web/default/report/new/fill_in_details_form.html:7 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:7 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:28 +#: templates/web/zurich/report/new/fill_in_details_form.html:13 +msgid "You have located the problem at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. " +msgstr "Du har markerat problemet med den gröna pinnen på kartan. Om det inte är rätt position, klicka på rätt plats på kartan igen." + +#: templates/web/default/tokens/confirm_alert.html:7 +msgid "You have successfully confirmed your alert." +msgstr "Du har bekräftat din bevakning." + +#: templates/web/zurich/tokens/confirm_problem.html:5 +#: templates/web/zurich/tokens/confirm_problem.html:6 +msgid "You have successfully confirmed your email address." +msgstr "" + +#: templates/web/default/tokens/confirm_problem.html:14 +#: templates/web/default/tokens/confirm_problem.html:15 +msgid "You have successfully confirmed your problem" +msgstr "Du har bekräftat ditt problem" + +#: templates/web/default/tokens/confirm_update.html:11 +#: templates/web/default/tokens/confirm_update.html:12 +msgid "You have successfully confirmed your update and you can now <a href=\"%s\">view it on the site</a>." +msgstr "Du har bekräftat din uppdatering och kan nu <a href=\"%s\">se den på FixaMinGata</a>." + +#: templates/web/default/tokens/confirm_alert.html:11 +msgid "You have successfully created your alert." +msgstr "Du har skapat en bevakning." + +#: templates/web/default/tokens/confirm_alert.html:9 +msgid "You have successfully deleted your alert." +msgstr "Du har tagit bort en bevakning." + +#: perllib/FixMyStreet/App/Controller/Report/New.pm:754 +#: perllib/FixMyStreet/App/Controller/Report/Update.pm:140 +msgid "You have successfully signed in; please check and confirm your details are accurate:" +msgstr "Du har loggats in. Verifiera att dina uppgifter stämmer:" + +#: templates/web/default/email_sent.html:13 +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?" + +#: templates/web/default/my/my.html:0 templates/web/default/my/my.html:14 +#: templates/web/default/my/my.html:3 templates/web/fixmystreet/my/my.html:0 +#: templates/web/fixmystreet/my/my.html:14 +#: templates/web/fixmystreet/my/my.html:3 +msgid "Your Reports" +msgstr "Dina rapporter" + +#: templates/web/bromley/report/display.html:41 +#: templates/web/bromley/report/display.html:43 +#: templates/web/bromley/report/new/fill_in_details_form.html:145 +#: templates/web/fixmystreet/alert/_list.html:89 +#: templates/web/fixmystreet/alert/updates.html:19 +#: templates/web/fixmystreet/alert/updates.html:22 +#: templates/web/fixmystreet/contact/index.html:84 +#: templates/web/fixmystreet/report/display.html:65 +#: templates/web/fixmystreet/report/display.html:67 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:115 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:147 +#: templates/web/zurich/report/new/fill_in_details_form.html:88 +msgid "Your email" +msgstr "Din epostadress" + +#: templates/web/seesomething/report/new/fill_in_details_form.html:81 +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:58 +msgid "Your email address" +msgstr "Din epostadress" + +#: templates/web/default/auth/general.html:27 +msgid "Your email address:" +msgstr "Din epostadress:" + +#: templates/web/default/alert/_list.html:92 +#: templates/web/default/report/new/fill_in_details_form.html:124 +#: templates/web/default/report/update-form.html:81 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:133 +#: templates/web/fixmybarangay/alert/_list.html:37 +msgid "Your email:" +msgstr "Din epostadress:" + +#: templates/web/bromley/report/display.html:195 +#: templates/web/bromley/report/new/fill_in_details_form.html:117 +#: templates/web/bromley/report/new/fill_in_details_form.html:164 +msgid "Your first name" +msgstr "Ditt förnamn" + +#: templates/web/fixmystreet/report/updates-sidebar-notes.html:5 +msgid "Your information will only be used in accordance with our <a href=\"/privacy\">privacy policy</a>" +msgstr "Din information kommer endast att användas i enlighet med vår <a href=\"/privacy\">sekretesspolicy</a>" + +#: templates/web/bromley/report/display.html:201 +#: templates/web/bromley/report/new/fill_in_details_form.html:123 +#: templates/web/bromley/report/new/fill_in_details_form.html:170 +msgid "Your last name" +msgstr "Ditt efternamn" + +#: 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 "Ditt namn och efternamn" + +#: templates/web/default/auth/general.html:59 +#: templates/web/default/contact/index.html:68 +#: templates/web/default/report/new/fill_in_details_form.html:203 +#: templates/web/default/report/update-form.html:151 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:124 +msgid "Your name:" +msgstr "Ditt namn:" + +#: templates/web/bromley/report/display.html:162 +#: templates/web/bromley/report/new/fill_in_details_form.html:203 +#: templates/web/fixmystreet/auth/general.html:41 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:166 +#: templates/web/fixmystreet/report/update-form.html:94 +#: templates/web/seesomething/auth/general.html:30 +#: templates/web/zurich/auth/general.html:34 +msgid "Your password" +msgstr "Ditt lösenord" + +#: templates/web/default/auth/change_password.html:6 +msgid "Your password has been changed" +msgstr "Ditt lösenord har ändrats" + +#: 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 "Ditt telefonnummer" + +#: templates/web/fixmystreet/questionnaire/index.html:15 +msgid "Your report" +msgstr "Din rapport" + +#: templates/web/default/report_created.html:6 +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/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 "Dina rapporter" + +#: templates/web/default/my/my.html:45 templates/web/fixmystreet/my/my.html:49 +msgid "Your updates" +msgstr "Dina uppdateringar" + +#: templates/web/default/contact/index.html:76 +msgid "Your email:" +msgstr "Din epostadress:" + +#: templates/web/default/admin/timeline.html:4 +msgid "by %s" +msgstr "av %s" + +#: templates/web/default/reports/body.html:6 +#: templates/web/default/reports/body.html:7 +msgid "council" +msgstr "kommun" + +#: perllib/FixMyStreet/DB/Result/Problem.pm:649 +msgid "council ref: %s" +msgstr "kommunens referens: %s" + +#: 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 "använde inte kartan" + +#: templates/web/default/alert/index.html:33 +#: templates/web/fixmystreet/around/postcode_form.html:20 +#: templates/web/seesomething/around/postcode_form.html:9 +msgid "e.g. ‘%s’ or ‘%s’" +msgstr "ex.v. '%s' eller '%s'" + +#: 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" +msgstr "" + +#: perllib/Utils.pm:263 +msgid "less than a minute" +msgstr "mindre än en minut" + +#: templates/web/default/report/updates.html:57 +msgid "marked as a duplicate report" +msgstr "" + +#: templates/web/default/report/updates.html:47 +msgid "marked as action scheduled" +msgstr "" + +#: templates/web/default/report/updates.html:59 +msgid "marked as an internal referral" +msgstr "" + +#: templates/web/default/report/updates.html:49 +msgid "marked as closed" +msgstr "markerad som stängd" + +#: templates/web/default/report/updates.html:28 +#: templates/web/default/report/updates.html:51 +msgid "marked as fixed" +msgstr "markerad som löst" + +#: templates/web/default/report/updates.html:45 +msgid "marked as in progress" +msgstr "markerad som att arbete pågår" + +#: templates/web/default/report/updates.html:41 +msgid "marked as investigating" +msgstr "markerad som att arbete pågår" + +#: templates/web/default/report/updates.html:55 +msgid "marked as not the council's responsibility" +msgstr "" + +#: templates/web/default/report/updates.html:43 +msgid "marked as planned" +msgstr "markerad som att arbete planerat" + +#: templates/web/default/report/updates.html:53 +msgid "marked as unable to fix" +msgstr "" + +#: 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 "Ej tillgängligt" + +#: templates/web/default/alert/_list.html:87 +#: templates/web/fixmybarangay/alert/_list.html:32 +#: templates/web/fixmystreet/alert/_list.html:85 +msgid "or" +msgstr "eller" + +#: 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: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: “%s”" +msgstr "" + +#: templates/web/default/admin/report_edit.html:30 +msgid "other areas:" +msgstr "andra områden:" + +#: templates/web/default/report/updates.html:29 +#: templates/web/default/report/updates.html:39 +msgid "reopened" +msgstr "öppnat på nytt" + +#: templates/web/barnet/header.html:71 templates/web/bromley/header.html:100 +#: templates/web/bromley/header.html:65 +#: templates/web/fixmybarangay/header.html:67 +#: templates/web/fixmystreet/header.html:51 +#: templates/web/oxfordshire/header.html:112 +#: templates/web/oxfordshire/header.html:48 +#: templates/web/stevenage/header.html:98 templates/web/zurich/footer.html:12 +msgid "sign out" +msgstr "logga ut" + +#: templates/web/bromley/report/new/fill_in_details_form.html:4 +#: templates/web/bromley/report/new/fill_in_details_form.html:7 +#: templates/web/default/report/new/fill_in_details_form.html:11 +#: templates/web/default/report/new/fill_in_details_form.html:14 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:11 +#: templates/web/emptyhomes/report/new/fill_in_details_form.html:14 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:6 +#: templates/web/fixmystreet/report/new/fill_in_details_form.html:9 +msgid "the local council" +msgstr "kommunen" + +#: templates/web/default/report/_main.html:6 +#: templates/web/zurich/report/_main.html:5 +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:362 +msgid "this type of local problem" +msgstr "den här typen av problem" + +#: perllib/Utils.pm:235 +msgid "today" +msgstr "idag" + +#: 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 "använde kartan" + +#: templates/web/default/admin/update_edit.html:35 +msgid "user is from same council as problem - %d" +msgstr "användaren är från samma kommun som problemet - %d" + +#: templates/web/default/admin/update_edit.html:38 +msgid "user is problem owner" +msgstr "användaren är inte problemägare" + +#: templates/web/default/reports/body.html:0 +#: templates/web/default/reports/body.html:3 +msgid "ward" +msgstr "område" + +#: templates/web/default/front/stats.html:17 +#, perl-format +msgid "<big>%s</big> report recently" +msgid_plural "<big>%s</big> reports recently" +msgstr[0] "<big>%s</big> rapport nyligen" +msgstr[1] "<big>%s</big> rapporter nyligen" + +#: perllib/Utils.pm:282 +#, perl-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d timme" +msgstr[1] "%d timmar" + +#: templates/web/default/report/_support.html:6 +#, perl-format +msgid "%d supporter" +msgid_plural "%d supporters" +msgstr[0] "" +msgstr[1] "" + +#: perllib/Utils.pm:284 +#, perl-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minut" +msgstr[1] "%d minuter" + +#: templates/web/default/front/stats.html:29 +#, perl-format +msgid "<big>%s</big> update on reports" +msgid_plural "<big>%s</big> updates on reports" +msgstr[0] "<big>%s</big> uppdatering av rapporter" +msgstr[1] "<big>%s</big> uppdateringar av rapporter" + +#: templates/web/emptyhomes/report/new/councils_text_none.html:3 +#, perl-format +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] "Vi har ännu ingen information om kommunen på den platsen" +msgstr[1] "Vi har ännu ingen information om kommunen på den platsen" + +#: perllib/Utils.pm:278 +#, perl-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "%d vecka" +msgstr[1] "%d veckor" + +#: templates/web/default/front/stats.html:12 +#, perl-format +msgid "<big>%s</big> report in past week" +msgid_plural "<big>%s</big> reports in past week" +msgstr[0] "<big>%s</big> rapport senaste veckan" +msgstr[1] "<big>%s</big> rapporter senaste veckan" + +#: templates/web/default/front/stats.html:23 +#, perl-format +msgid "<big>%s</big> fixed in past month" +msgid_plural "<big>%s</big> fixed in past month" +msgstr[0] "<big>%s</big> löst problem senaste månaden" +msgstr[1] "<big>%s</big> lösta problem senaste månaden" + +#: templates/web/default/report/new/councils_text_some.html:14 +#, perl-format +msgid "We do <strong>not</strong> yet have details for the other council that covers this location." +msgid_plural "We do <strong>not</strong> yet have details for the other councils that cover this location." +msgstr[0] "Vi har ännu <strong>ingen</strong> information om kommunen på den platsen" +msgstr[1] "Vi har ännu <strong>ingen</strong> information om kommunen på den platsen" + +#: perllib/Utils.pm:280 +#, perl-format +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/cobranding.txt b/notes/cobranding.txt index db71c87ce..3e902abc8 100644 --- a/notes/cobranding.txt +++ b/notes/cobranding.txt @@ -13,9 +13,8 @@ NB: this is moderately specific to producing cobrands for UK councils site_restriction problems_clause enter_postcode_text - council_check + area_check base_url - all_councils_report should return 0 disambiguate_location - see below for details on this 2: create a web/cobrands/examplecom folder and put custom css/images/js in here diff --git a/notes/states.txt b/notes/states.txt index 70515c41b..32f9beb1a 100644 --- a/notes/states.txt +++ b/notes/states.txt @@ -22,7 +22,7 @@ the problem has been reported to: Open ( a synonym for confirmed ) Investigating Planned - In Progress + In progress Fixed Closed 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/Catalyst/Plugin/Compress/Gzip.pm b/perllib/Catalyst/Plugin/Compress/Gzip.pm new file mode 100644 index 000000000..06532c84c --- /dev/null +++ b/perllib/Catalyst/Plugin/Compress/Gzip.pm @@ -0,0 +1,82 @@ +package Catalyst::Plugin::Compress::Gzip; +use strict; +use warnings; +use MRO::Compat; + +use Compress::Zlib (); + +sub finalize_headers { + my $c = shift; + + if ( $c->response->content_encoding ) { + return $c->next::method(@_); + } + + unless ( $c->response->body ) { + return $c->next::method(@_); + } + + unless ( $c->response->status == 200 ) { + return $c->next::method(@_); + } + + unless ( $c->response->content_type =~ /^text|xml$|javascript$/ ) { + return $c->next::method(@_); + } + + my $accept = $c->request->header('Accept-Encoding') || ''; + + unless ( index( $accept, "gzip" ) >= 0 ) { + return $c->next::method(@_); + } + + + my $body = $c->response->body; + eval { local $/; $body = <$body> } if ref $body; + die "Response body is an unsupported kind of reference" if ref $body; + + $c->response->body( Compress::Zlib::memGzip( $body ) ); + $c->response->content_length( length( $c->response->body ) ); + $c->response->content_encoding('gzip'); + $c->response->headers->push_header( 'Vary', 'Accept-Encoding' ); + + $c->next::method(@_); +} + +1; + +__END__ + +=head1 NAME + +Catalyst::Plugin::Compress::Gzip - Gzip response + +=head1 SYNOPSIS + + use Catalyst qw[Compress::Gzip]; + + +=head1 DESCRIPTION + +Gzip compress response if client supports it. Changed from CPAN version to +overload finalize_headers, rather than finalize. + +=head1 METHODS + +=head2 finalize_headers + +=head1 SEE ALSO + +L<Catalyst>. + +=head1 AUTHOR + +Christian Hansen, C<ch@ngmedia.com> +Matthew Somerville. + +=head1 LICENSE + +This library is free software . You can redistribute it and/or modify it under +the same terms as perl itself. + +=cut diff --git a/perllib/CronFns.pm b/perllib/CronFns.pm index 0573b788d..ac7f85596 100755 --- a/perllib/CronFns.pm +++ b/perllib/CronFns.pm @@ -24,16 +24,19 @@ sub options { die "Either no arguments, --nomail or --verbose" if (@ARGV>1); my $nomail = 0; my $verbose = 0; + my $debug = 0; $nomail = 1 if (@ARGV==1 && $ARGV[0] eq '--nomail'); $verbose = 1 if (@ARGV==1 && $ARGV[0] eq '--verbose'); + $debug = 1 if (@ARGV==1 && $ARGV[0] eq '--debug'); $verbose = 1 if $nomail; - return ($verbose, $nomail); + return ($verbose, $nomail, $debug); } sub site { my $base_url = shift; my $site = 'fixmystreet'; $site = 'emptyhomes' if $base_url =~ 'emptyhomes'; + $site = 'zurich' if $base_url =~ /zurich|zueri/; return $site; } diff --git a/perllib/CrossSell.pm b/perllib/CrossSell.pm index f9cde6936..f9bb73d6a 100644 --- a/perllib/CrossSell.pm +++ b/perllib/CrossSell.pm @@ -142,6 +142,49 @@ 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 +} + +sub display_wtt_link { + return <<EOF; +<h1 style="padding-top:0.5em">WriteToThem</h1> +<p> +Need to write to a politician? Try <a href="https://writetothem.com">WriteToThem</a> - great +for campaigns too. +</p> +EOF +} + +sub display_app_links { + return <<EOF; +<h1 style="padding-top:0.5em">New! FixMyStreet Apps for Apple and Android</h1> +<p> +We've built all-new FixMyStreet phone apps, for your use. Key +improvements include offline reporting (for where there is bad signal) +and a better interface for adding problem reports more quickly and +easily. Please give the apps a go and tell us what you think. +</p> + +<p> +<a href="https://play.google.com/store/apps/details?id=org.mysociety.FixMyStreet"> + <img alt="FixMyStreet Android app on Google Play" + src="/cobrands/fixmystreet/images/google_play_logo.png" /> +</a> + +<a href="https://itunes.apple.com/gb/app/fixmystreet/id297456545"> + <img alt="FixMyStreet app on the App Store" + src="/cobrands/fixmystreet/images/itunes_store_logo.png" /> +</a><br> +</p> +EOF +} + # Not currently used, needs more explanation and testing; perhaps in future. sub display_gny_groups { my ($lon, $lat) = @_; @@ -201,6 +244,11 @@ sub display_advert ($$;$%) { #EOF #unless (defined $data{done_tms} && $data{done_tms}==1) { + $c->stash->{scratch} = 'advert=wtt'; + return '<div style="margin: 0 5em; border-top: dotted 1px #666666;">' + . display_app_links() + . '</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 2d8f462d5..de55e0070 100644 --- a/perllib/FixMyStreet.pm +++ b/perllib/FixMyStreet.pm @@ -7,12 +7,15 @@ use Path::Class; my $ROOT_DIR = file(__FILE__)->parent->parent->absolute->resolve; use Readonly; +use Sub::Override; use mySociety::Config; use mySociety::DBHandle; +my $CONF_FILE = $ENV{FMS_OVERRIDE_CONFIG} || 'general'; + # load the config file and store the contents in a readonly hash -mySociety::Config::set_file( __PACKAGE__->path_to("conf/general") ); +mySociety::Config::set_file( __PACKAGE__->path_to("conf/${CONF_FILE}") ); Readonly::Hash my %CONFIG, %{ mySociety::Config::get_list() }; =head1 NAME @@ -33,7 +36,7 @@ Thus module has utility functions for the FMS project. FixMyStreet->test_mode( $bool ); my $in_test_mode_bool = FixMyStreet->test_mode; -Put the FixMyStreet into test mode - inteded for the unit tests: +Put the FixMyStreet into test mode - intended for the unit tests: BEGIN { use FixMyStreet; @@ -85,6 +88,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 fda9d665c..1664f0f30 100644 --- a/perllib/FixMyStreet/App.pm +++ b/perllib/FixMyStreet/App.pm @@ -2,7 +2,11 @@ package FixMyStreet::App; use Moose; use namespace::autoclean; +# Should move away from Email::Send, but until then: +$Return::Value::NO_CLUCK = 1; + use Catalyst::Runtime 5.80; +use DateTime; use FixMyStreet; use FixMyStreet::Cobrand; use Memcached; @@ -23,6 +27,7 @@ use Catalyst ( 'Session::State::Cookie', # FIXME - we're using our own override atm 'Authentication', 'SmartURI', + 'Compress::Gzip', ); extends 'Catalyst'; @@ -45,7 +50,7 @@ __PACKAGE__->config( default_view => 'Web', # Serve anything in web dir that is not a .cgi script - static => { # + 'Plugin::Static::Simple' => { include_path => [ FixMyStreet->path_to("web") . "" ], ignore_extensions => ['cgi'], }, @@ -85,6 +90,13 @@ __PACKAGE__->config( # Start the application __PACKAGE__->setup(); +# Due to some current issues with proxyings, need to manually +# tell the code we're secure if we are. +after 'prepare_headers' => sub { + my $self = shift; + $self->req->secure( 1 ) if $self->config->{BASE_URL} eq 'https://www.zueriwieneu.ch'; +}; + # set up DB handle for old code FixMyStreet->configure_mysociety_dbhandle; @@ -188,6 +200,22 @@ sub setup_request { mySociety::MaPit::configure( "http://$host/fakemapit/" ); } + # XXX Put in cobrand / do properly + if ($c->cobrand->moniker eq 'zurich') { + FixMyStreet::DB::Result::Problem->visible_states_add_unconfirmed(); + DateTime->DefaultLocale( 'de_CH' ); + } else { + 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; } @@ -274,9 +302,8 @@ sub send_email { my $template = shift; my $extra_stash_values = shift || {}; - my $sender = $c->cobrand->contact_email; + my $sender = $c->config->{DO_NOT_REPLY_EMAIL}; my $sender_name = $c->cobrand->contact_name; - $sender =~ s/team/fms-DO-NOT-REPLY/; # create the vars to pass to the email template my $vars = { @@ -297,6 +324,8 @@ sub send_email { $email->header_set( ucfirst($_), $vars->{$_} ) for grep { $vars->{$_} } qw( to from subject); + return if $c->is_abuser( $email->header('To') ); + $email->header_set( 'Message-ID', sprintf('<fms-%s-%s@%s>', time(), unpack('h*', random_bytes(5, 1)), $c->config->{EMAIL_DOMAIN} ) ); @@ -307,6 +336,7 @@ sub send_email { { _template_ => $email->body, # will get line wrapped _parameters_ => {}, + _line_indent => '', $email->header_pairs } ) }; @@ -320,8 +350,10 @@ sub send_email { sub send_email_cron { my ( $c, $params, $env_from, $env_to, $nomail ) = @_; - $params->{'Message-ID'} = sprintf('<fms-cron-%s-%s@mysociety.org>', time(), - unpack('h*', random_bytes(5, 1)) + return 1 if $c->is_abuser( $env_to ); + + $params->{'Message-ID'} = sprintf('<fms-cron-%s-%s@%s>', time(), + unpack('h*', random_bytes(5, 1)), FixMyStreet->config('EMAIL_DOMAIN') ); $params->{_parameters_}->{signature} = ''; @@ -334,6 +366,7 @@ sub send_email_cron { # } #); + $params->{_line_indent} = ''; my $email = mySociety::Locale::in_gb_locale { mySociety::Email::construct_email($params) }; if ( FixMyStreet->test_mode ) { @@ -435,22 +468,39 @@ Hashref contains height, width and url keys. sub get_photo_params { my ($self, $key) = @_; - $key = ($key eq 'id') ? '' : "/$key"; return {} unless $self->photo; + $key = ($key eq 'id') ? '' : "/$key"; + + my $pre = "/photo$key/" . $self->id; + my $post = '.jpeg'; my $photo = {}; + if (length($self->photo) == 40) { - $photo->{url_full} = '/photo' . $key . '/' . $self->id . '.full.jpeg'; + $post .= '?' . $self->photo; + $photo->{url_full} = "$pre.full$post"; + # XXX Can't use size here because {url} (currently 250px height) may be + # being used, but at this point it doesn't yet exist to find the width + # $str = FixMyStreet->config('UPLOAD_DIR') . $self->photo . '.jpeg'; } else { - ( $photo->{width}, $photo->{height} ) = - Image::Size::imgsize( \$self->photo ); + my $str = \$self->photo; + ( $photo->{width}, $photo->{height} ) = Image::Size::imgsize( $str ); } - $photo->{url} = '/photo' . $key . '/' . $self->id . '.jpeg'; + + $photo->{url} = "$pre$post"; + $photo->{url_tn} = "$pre.tn$post"; + $photo->{url_fp} = "$pre.fp$post"; return $photo; } +sub is_abuser { + my ($c, $email) = @_; + my ($domain) = $email =~ m{ @ (.*) \z }x; + return $c->model('DB::Abuse')->search( { email => [ $email, $domain ] } )->first; +} + =head1 SEE ALSO L<FixMyStreet::App::Controller::Root>, L<Catalyst> diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm index 7a2790b31..cfe165f43 100644 --- a/perllib/FixMyStreet/App/Controller/Admin.pm +++ b/perllib/FixMyStreet/App/Controller/Admin.pm @@ -4,10 +4,13 @@ use namespace::autoclean; BEGIN { extends 'Catalyst::Controller'; } +use Path::Class; use POSIX qw(strftime strcoll); -use Digest::MD5 qw(md5_hex); +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; @@ -23,23 +26,32 @@ Admin pages =cut -=head2 summary - -Redirect to index page. There to make the allowed pages stuff neater - -=cut - sub begin : Private { my ( $self, $c ) = @_; $c->uri_disposition('relative'); - if ( $c->cobrand->moniker eq 'seesomething' ) { + if ( $c->cobrand->moniker eq 'zurich' || $c->cobrand->moniker eq 'seesomething' ) { $c->detach( '/auth/redirect' ) unless $c->user_exists; - $c->detach( '/auth/redirect' ) unless $c->user->from_council; + $c->detach( '/auth/redirect' ) unless $c->user->from_body; } + if ( $c->cobrand->moniker eq 'zurich' ) { + $c->cobrand->admin_type(); + } +} + +sub auto : Private { + my ( $self, $c ) = @_; + + $c->forward('check_page_allowed'); } +=head2 summary + +Redirect to index page. There to make the allowed pages stuff neater + +=cut + sub summary : Path( 'summary' ) : Args(0) { my ( $self, $c ) = @_; $c->go( 'index' ); @@ -54,7 +66,9 @@ Displays some summary information for the requests. sub index : Path : Args(0) { my ( $self, $c ) = @_; - $c->forward('check_page_allowed'); + if ($c->cobrand->moniker eq 'zurich' && $c->stash->{admin_type} ne 'super') { + return $c->cobrand->admin(); + } my $site_restriction = $c->cobrand->site_restriction(); @@ -65,11 +79,9 @@ sub index : Path : Args(0) { %prob_counts = map { $_ => $prob_counts{$_} || 0 } - ('confirmed', 'investigating', 'in progress', 'closed', 'fixed - council', - 'fixed - user', 'fixed', 'unconfirmed', 'hidden', - 'partial', 'planned'); + ( FixMyStreet::DB::Result::Problem->all_states() ); $c->stash->{problems} = \%prob_counts; - $c->stash->{total_problems_live} += $prob_counts{$_} + $c->stash->{total_problems_live} += $prob_counts{$_} ? $prob_counts{$_} : 0 for ( FixMyStreet::DB::Result::Problem->visible_states() ); $c->stash->{total_problems_users} = $c->cobrand->problems->unique_users; @@ -120,13 +132,23 @@ 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 timeline : Path( 'timeline' ) : Args(0) { +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, + ); +} - $c->forward('check_page_allowed'); +sub timeline : Path( 'timeline' ) : Args(0) { + my ($self, $c) = @_; my $site_restriction = $c->cobrand->site_restriction(); my %time; @@ -137,34 +159,34 @@ sub timeline : Path( 'timeline' ) : Args(0) { my $probs = $c->cobrand->problems->timeline; foreach ($probs->all) { - push @{$time{$_->created->epoch}}, { type => 'problemCreated', date => $_->created_local, obj => $_ }; - push @{$time{$_->confirmed->epoch}}, { type => 'problemConfirmed', date => $_->confirmed_local, obj => $_ } if $_->confirmed; - push @{$time{$_->whensent->epoch}}, { type => 'problemSent', date => $_->whensent_local, obj => $_ } if $_->whensent; + push @{$time{$_->created->epoch}}, { type => 'problemCreated', date => $_->created, obj => $_ }; + push @{$time{$_->confirmed->epoch}}, { type => 'problemConfirmed', date => $_->confirmed, obj => $_ } if $_->confirmed; + push @{$time{$_->whensent->epoch}}, { type => 'problemSent', date => $_->whensent, obj => $_ } if $_->whensent; } my $questionnaires = $c->model('DB::Questionnaire')->timeline( $c->cobrand->restriction ); foreach ($questionnaires->all) { - push @{$time{$_->whensent->epoch}}, { type => 'quesSent', date => $_->whensent_local, obj => $_ }; - push @{$time{$_->whenanswered->epoch}}, { type => 'quesAnswered', date => $_->whenanswered_local, obj => $_ } if $_->whenanswered; + push @{$time{$_->whensent->epoch}}, { type => 'quesSent', date => $_->whensent, obj => $_ }; + push @{$time{$_->whenanswered->epoch}}, { type => 'quesAnswered', date => $_->whenanswered, obj => $_ } if $_->whenanswered; } my $updates = $c->model('DB::Comment')->timeline( $site_restriction ); foreach ($updates->all) { - push @{$time{$_->created->epoch}}, { type => 'update', date => $_->created_local, obj => $_} ; + push @{$time{$_->created->epoch}}, { type => 'update', date => $_->created, obj => $_} ; } my $alerts = $c->model('DB::Alert')->timeline_created( $c->cobrand->restriction ); foreach ($alerts->all) { - push @{$time{$_->whensubscribed->epoch}}, { type => 'alertSub', date => $_->whensubscribed_local, obj => $_ }; + push @{$time{$_->whensubscribed->epoch}}, { type => 'alertSub', date => $_->whensubscribed, obj => $_ }; } $alerts = $c->model('DB::Alert')->timeline_disabled( $c->cobrand->restriction ); foreach ($alerts->all) { - push @{$time{$_->whendisabled->epoch}}, { type => 'alertDel', date => $_->whendisabled_local, obj => $_ }; + push @{$time{$_->whendisabled->epoch}}, { type => 'alertDel', date => $_->whendisabled, obj => $_ }; } $c->model('DB')->schema->storage->sql_maker->quote_char( '' ); @@ -177,8 +199,6 @@ sub timeline : Path( 'timeline' ) : Args(0) { sub questionnaire : Path('questionnaire') : Args(0) { my ( $self, $c ) = @_; - $c->forward('check_page_allowed'); - my $questionnaires = $c->model('DB::Questionnaire')->search( { whenanswered => { '!=', undef } }, { group_by => [ 'ever_reported' ], @@ -209,10 +229,10 @@ sub questionnaire : Path('questionnaire') : Args(0) { return 1; } -sub council_list : Path('council_list') : Args(0) { +sub bodies : Path('bodies') : Args(0) { my ( $self, $c ) = @_; - $c->forward('check_page_allowed'); + $c->forward( 'get_token' ); my $edit_activity = $c->model('DB::ContactsHistory')->search( undef, @@ -226,54 +246,78 @@ sub council_list : Path('council_list') : Args(0) { $c->stash->{edit_activity} = $edit_activity; - # Not London, as treated separately - my $area_types = $c->cobrand->moniker eq 'emptyhomes' - ? $c->cobrand->area_types - : [ grep { $_ ne 'LBO' } @{ $c->cobrand->area_types } ]; - my $areas = mySociety::MaPit::call('areas', $area_types); + my $posted = $c->req->param('posted') || ''; + if ( $posted eq 'body' ) { + $c->forward('check_for_super_user'); + $c->forward('check_token'); + + my $params = $c->forward('body_params'); + my $body = $c->model('DB::Body')->create( $params ); + my $area_ids = $c->req->params->{area_ids}; + if ($area_ids) { + $area_ids = [ $area_ids ] unless ref $area_ids; + foreach (@$area_ids) { + $c->model('DB::BodyArea')->create( { body => $body, area_id => $_ } ); + } + } + + $c->stash->{updated} = _('New body added'); + } - my @councils_ids = sort { strcoll($areas->{$a}->{name}, $areas->{$b}->{name}) } keys %$areas; - @councils_ids = $c->cobrand->filter_all_council_ids_list( @councils_ids ); + $c->forward( 'fetch_all_bodies' ); + + # XXX For fixmystreet.com, need to exclude bodies that are covering London. + # But soon, this means just don't have bodies covering London. my $contacts = $c->model('DB::Contact')->search( undef, { - select => [ 'area_id', { count => 'id' }, { count => \'case when deleted then 1 else null end' }, + select => [ 'body_id', { count => 'id' }, { count => \'case when deleted then 1 else null end' }, { count => \'case when confirmed then 1 else null end' } ], - as => [qw/area_id c deleted confirmed/], - group_by => [ 'area_id' ], + as => [qw/body_id c deleted confirmed/], + group_by => [ 'body_id' ], result_class => 'DBIx::Class::ResultClass::HashRefInflator' } ); - my %council_info = map { $_->{area_id} => $_ } $contacts->all; - - my @no_info = grep { !$council_info{$_} } @councils_ids; - my @one_plus_deleted = grep { $council_info{$_} && $council_info{$_}->{deleted} } @councils_ids; - my @unconfirmeds = grep { $council_info{$_} && !$council_info{$_}->{deleted} && $council_info{$_}->{confirmed} != $council_info{$_}->{c} } @councils_ids; - my @all_confirmed = grep { $council_info{$_} && !$council_info{$_}->{deleted} && $council_info{$_}->{confirmed} == $council_info{$_}->{c} } @councils_ids; + my %council_info = map { $_->{body_id} => $_ } $contacts->all; - $c->stash->{areas} = $areas; $c->stash->{counts} = \%council_info; - $c->stash->{no_info} = \@no_info; - $c->stash->{one_plus_deleted} = \@one_plus_deleted; - $c->stash->{unconfirmeds} = \@unconfirmeds; - $c->stash->{all_confirmed} = \@all_confirmed; + + $c->forward( 'body_form_dropdowns' ); return 1; } -sub council_contacts : Path('council_contacts') : Args(1) { - my ( $self, $c, $area_id ) = @_; +sub body_form_dropdowns : Private { + my ( $self, $c ) = @_; - $c->forward('check_page_allowed'); + my $areas; + my $whitelist = $c->config->{MAPIT_ID_WHITELIST}; - my $posted = $c->req->param('posted') || ''; - $c->stash->{area_id} = $area_id; + if ( $whitelist && ref $whitelist eq 'ARRAY' && @$whitelist ) { + $areas = mySociety::MaPit::call('areas', $whitelist); + } else { + $areas = mySociety::MaPit::call('areas', $c->cobrand->area_types); + } + $c->stash->{areas} = [ sort { strcoll($a->{name}, $b->{name}) } values %$areas ]; + + my @methods = map { $_ =~ s/FixMyStreet::SendReport:://; $_ } keys %{ FixMyStreet::SendReport->get_senders }; + $c->stash->{send_methods} = \@methods; +} +sub body : Path('body') : Args(1) { + my ( $self, $c, $body_id ) = @_; + + $c->stash->{body_id} = $body_id; + + $c->forward( 'check_for_super_user' ); $c->forward( 'get_token' ); + $c->forward( 'lookup_body' ); + $c->forward( 'fetch_all_bodies' ); + $c->forward( 'body_form_dropdowns' ); - if ( $posted ) { + if ( $c->req->param('posted') ) { $c->log->debug( 'posted' ); $c->forward('update_contacts'); } @@ -283,11 +327,18 @@ sub council_contacts : Path('council_contacts') : Args(1) { return 1; } +sub check_for_super_user : Private { + my ( $self, $c ) = @_; + if ( $c->cobrand->moniker eq 'zurich' && $c->stash->{admin_type} ne 'super' ) { + $c->detach('/page_error_404_not_found', []); + } +} + sub update_contacts : Private { my ( $self, $c ) = @_; my $posted = $c->req->param('posted'); - my $editor = $c->req->remote_user || _('*unknown*'); + my $editor = $c->forward('get_user'); if ( $posted eq 'new' ) { $c->forward('check_token'); @@ -299,7 +350,7 @@ sub update_contacts : Private { my $contact = $c->model('DB::Contact')->find_or_new( { - area_id => $c->stash->{area_id}, + body_id => $c->stash->{body_id}, category => $category, } ); @@ -333,7 +384,7 @@ sub update_contacts : Private { my $contacts = $c->model('DB::Contact')->search( { - area_id => $c->stash->{area_id}, + body_id => $c->stash->{body_id}, category => { -in => \@categories }, } ); @@ -348,67 +399,53 @@ sub update_contacts : Private { ); $c->stash->{updated} = _('Values updated'); - } elsif ( $posted eq 'open311' ) { + } elsif ( $posted eq 'body' ) { + $c->forward('check_for_super_user'); $c->forward('check_token'); - my %params = map { $_ => $c->req->param($_) || '' } qw/open311_id endpoint jurisdiction api_key area_id send_method send_comments suppress_alerts comment_user_id devolved/; - - if ( $params{open311_id} ) { - my $conf = $c->model('DB::Open311Conf')->find( { id => $params{open311_id} } ); - - $conf->endpoint( $params{endpoint} ); - $conf->jurisdiction( $params{jurisdiction} ); - $conf->api_key( $params{api_key} ); - $conf->send_method( $params{send_method} ); - $conf->send_comments( $params{send_comments} || 0); - $conf->suppress_alerts( $params{suppress_alerts} || 0); - $conf->comment_user_id( $params{comment_user_id} || undef ); - $conf->can_be_devolved( $params{devolved} || 0 ); - - $conf->update(); - - $c->stash->{updated} = _('Configuration updated'); - } else { - my $conf = $c->model('DB::Open311Conf')->find_or_new( { area_id => $params{area_id} } ); - - $conf->endpoint( $params{endpoint} ); - $conf->jurisdiction( $params{jurisdiction} ); - $conf->api_key( $params{api_key} ); - $conf->send_method( $params{send_method} ); - $conf->send_comments( $params{send_comments} || 0); - $conf->suppress_alerts( $params{suppress_alerts} || 0); - $conf->comment_user_id( $params{comment_user_id} || undef ); - $conf->can_be_devolved( $params{devolved} || 0 ); - - $conf->insert(); - - $c->stash->{updated} = _('Configuration updated - contacts will be generated automatically later'); + my $params = $c->forward( 'body_params' ); + $c->stash->{body}->update( $params ); + my @current = $c->stash->{body}->body_areas->all; + my %current = map { $_->area_id => 1 } @current; + my $area_ids = $c->req->params->{area_ids}; + if ($area_ids) { + $area_ids = [ $area_ids ] unless ref $area_ids; + foreach (@$area_ids) { + $c->model('DB::BodyArea')->find_or_create( { body => $c->stash->{body}, area_id => $_ } ); + delete $current{$_}; + } } + # Remove any others + $c->stash->{body}->body_areas->search( { area_id => [ keys %current ] } )->delete; + + $c->stash->{updated} = _('Configuration updated - contacts will be generated automatically later'); } } -sub display_contacts : Private { +sub body_params : Private { my ( $self, $c ) = @_; - $c->forward('setup_council_details'); - - my $area_id = $c->stash->{area_id}; - - my $contacts = $c->model('DB::Contact')->search( - { area_id => $area_id }, - { order_by => ['category'] } + 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, + suppress_alerts => 0, + comment_user_id => undef, + send_extended_statuses => 0, + can_be_devolved => 0, + parent => undef, + deleted => 0, ); + my %params = map { $_ => $c->req->param($_) || $defaults{$_} } @fields; + return \%params; +} - $c->stash->{contacts} = $contacts; - - my @methods = map { $_ =~ s/FixMyStreet::SendReport:://; $_ } keys %{ FixMyStreet::SendReport->get_senders }; - $c->stash->{send_methods} = \@methods; - - my $open311 = $c->model('DB::Open311Conf')->search( - { area_id => $area_id } - ); +sub display_contacts : Private { + my ( $self, $c ) = @_; - $c->stash->{open311} = $open311; + 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'; @@ -419,59 +456,52 @@ sub display_contacts : Private { return 1; } -sub setup_council_details : Private { +sub lookup_body : Private { my ( $self, $c ) = @_; - my $area_id = $c->stash->{area_id}; - - my $mapit_data = mySociety::MaPit::call('area', $area_id); - - $c->stash->{council_name} = $mapit_data->{name}; - - my $example_postcode = mySociety::MaPit::call('area/example_postcode', $area_id); - - if ($example_postcode && ! ref $example_postcode) { - $c->stash->{example_pc} = $example_postcode; + my $body_id = $c->stash->{body_id}; + my $body = $c->model('DB::Body')->find($body_id); + $c->detach( '/page_error_404_not_found' ) + unless $body; + $c->stash->{body} = $body; + + if ($body->body_areas->first) { + my $example_postcode = mySociety::MaPit::call('area/example_postcode', $body->body_areas->first->area_id); + if ($example_postcode && ! ref $example_postcode) { + $c->stash->{example_pc} = $example_postcode; + } } return 1; } -sub council_edit_all : Path('council_edit') { - my ( $self, $c, $area_id, @category ) = @_; +# This is for if the category name contains a '/' +sub body_edit_all : Path('body_edit') { + my ( $self, $c, $body_id, @category ) = @_; my $category = join( '/', @category ); - $c->go( 'council_edit', [ $area_id, $category ] ); + $c->go( 'body_edit', [ $body_id, $category ] ); } -sub council_edit : Path('council_edit') : Args(2) { - my ( $self, $c, $area_id, $category ) = @_; +sub body_edit : Path('body_edit') : Args(2) { + my ( $self, $c, $body_id, $category ) = @_; - $c->forward('check_page_allowed'); - - $c->stash->{area_id} = $area_id; + $c->stash->{body_id} = $body_id; $c->forward( 'get_token' ); - $c->forward('setup_council_details'); - - my $contact = $c->model('DB::Contact')->search( - { - area_id => $area_id, - category => $category - } - )->first; + $c->forward( 'lookup_body' ); + my $contact = $c->stash->{body}->contacts->search( { category => $category } )->first; $c->stash->{contact} = $contact; my $history = $c->model('DB::ContactsHistory')->search( { - area_id => $area_id, + body_id => $body_id, category => $category }, { order_by => ['contacts_history_id'] }, ); - $c->stash->{history} = $history; my @methods = map { $_ =~ s/FixMyStreet::SendReport:://; $_ } keys %{ FixMyStreet::SendReport->get_senders }; @@ -480,13 +510,30 @@ sub council_edit : Path('council_edit') : Args(2) { return 1; } -sub search_reports : Path('search_reports') { +sub reports : Path('reports') { my ( $self, $c ) = @_; - $c->forward('check_page_allowed'); + my $query = {}; + if ( $c->cobrand->moniker eq 'zurich' ) { + my $type = $c->stash->{admin_type}; + my $body = $c->stash->{body}; + if ( $type eq 'dm' ) { + my @children = map { $_->id } $body->bodies->all; + my @all = (@children, $body->id); + $query = { bodies_str => \@all }; + } elsif ( $type eq 'sdm' ) { + $query = { bodies_str => $body->id }; + } + } + + my $order = $c->req->params->{o} || 'created'; + my $dir = defined $c->req->params->{d} ? $c->req->params->{d} : 1; + $c->stash->{order} = $order; + $c->stash->{dir} = $dir; + $order .= ' desc' if $dir; if (my $search = $c->req->param('search')) { - $c->stash->{searched} = 1; + $c->stash->{searched} = $search; my $site_restriction = $c->cobrand->site_restriction; @@ -503,37 +550,40 @@ sub search_reports : Path('search_reports') { $c->model('DB')->schema->storage->sql_maker->quote_char( '"' ); $c->model('DB')->schema->storage->sql_maker->name_sep( '.' ); - my $query; if (is_valid_email($search)) { - $query = [ + $query->{'-or'} = [ 'user.email' => { ilike => $like_search }, ]; } elsif ($search =~ /^id:(\d+)$/) { - $query = [ + $query->{'-or'} = [ 'me.id' => int($1), ]; } elsif ($search =~ /^area:(\d+)$/) { - $query = [ + $query->{'-or'} = [ 'me.areas' => { like => "%,$1,%" } ]; + } elsif ($search =~ /^ref:(\d+)$/) { + $query->{'-or'} = [ + 'me.external_id' => { like => "%$1%" } + ]; } else { - $query = [ + $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 }, - council => { like => $like_search }, + bodies_str => { like => $like_search }, cobrand_data => { like => $like_search }, ]; } + my $problems = $c->cobrand->problems->search( - { - -or => $query, - }, + $query, { prefetch => 'user', - order_by => [\"(state='hidden')",'created'] + order_by => [ \"(state='hidden')", \$order ] } ); @@ -542,9 +592,6 @@ sub search_reports : Path('search_reports') { # will have been turned off $c->stash->{problems} = [ $problems->all ]; - $c->stash->{edit_council_contacts} = 1 - if ( grep {$_ eq 'councilcontacts'} keys %{$c->stash->{allowed_pages}}); - if (is_valid_email($search)) { $query = [ 'user.email' => { ilike => $like_search }, @@ -574,9 +621,9 @@ sub search_reports : Path('search_reports') { -or => $query, }, { - -select => [ 'me.*', qw/problem.council problem.state/ ], + -select => [ 'me.*', qw/problem.bodies_str problem.state/ ], prefetch => [qw/user problem/], - order_by => [\"(me.state='hidden')",\"(problem.state='hidden')",'me.created'] + order_by => [ \"(me.state='hidden')", \"(problem.state='hidden')", 'me.created' ] } ); $c->stash->{updates} = [ $updates->all ]; @@ -584,7 +631,20 @@ sub search_reports : Path('search_reports') { # Switch quoting back off. See above for explanation of this. $c->model('DB')->schema->storage->sql_maker->quote_char( '' ); + } else { + + my $page = $c->req->params->{p} || 1; + my $problems = $c->cobrand->problems->search( + $query, + { order_by => $order } + )->page( $page ); + $c->stash->{problems} = [ $problems->all ]; + $c->stash->{pager} = $problems->pager; } + + $c->stash->{edit_body_contacts} = 1 + if ( grep {$_ eq 'body'} keys %{$c->stash->{allowed_pages}}); + } sub report_edit : Path('report_edit') : Args(1) { @@ -592,11 +652,7 @@ sub report_edit : Path('report_edit') : Args(1) { my $site_restriction = $c->cobrand->site_restriction; - my $problem = $c->cobrand->problems->search( - { - id => $id, - } - )->first; + my $problem = $c->cobrand->problems->search( { id => $id } )->first; $c->detach( '/page_error_404_not_found' ) unless $problem; @@ -604,7 +660,34 @@ sub report_edit : Path('report_edit') : Args(1) { $c->stash->{problem} = $problem; $c->forward('get_token'); - $c->forward('check_page_allowed'); + + if ( $c->cobrand->moniker eq 'zurich' ) { + $c->stash->{page} = 'admin'; + FixMyStreet::Map::display_map( + $c, + latitude => $problem->latitude, + longitude => $problem->longitude, + pins => $problem->used_map + ? [ { + latitude => $problem->latitude, + longitude => $problem->longitude, + colour => $c->cobrand->pin_colour($problem), + type => 'big', + } ] + : [], + ); + } + + if ( $c->req->param('rotate_photo') ) { + $c->forward('rotate_photo'); + return 1; + } + + if ( $c->cobrand->moniker eq 'zurich' ) { + my $done = $c->cobrand->admin_report_edit(); + return if $done; + } + $c->forward('check_email_for_abuse', [ $problem->user->email ] ); $c->stash->{updates} = @@ -633,9 +716,6 @@ sub report_edit : Path('report_edit') : Args(1) { elsif ( $c->req->param('banuser') ) { $c->forward('ban_user'); } - elsif ( $c->req->param('rotate_photo') ) { - $c->forward('rotate_photo'); - } elsif ( $c->req->param('submit') ) { $c->forward('check_token'); @@ -664,6 +744,7 @@ sub report_edit : Path('report_edit') : Args(1) { || $c->req->param('email') ne $problem->user->email || $c->req->param('title') ne $problem->title || $c->req->param('detail') ne $problem->detail + || ($c->req->param('body') && $c->req->param('body') ne $problem->bodies_str) || $flagged != $problem->flagged || $non_public != $problem->non_public ) { @@ -673,8 +754,10 @@ sub report_edit : Path('report_edit') : Args(1) { $problem->anonymous( $c->req->param('anonymous') ); $problem->title( $c->req->param('title') ); $problem->detail( $c->req->param('detail') ); - $problem->state( $c->req->param('state') ); + $problem->state( $new_state ); $problem->name( $c->req->param('name') ); + $problem->bodies_str( $c->req->param('body') ) if $c->req->param('body'); + $problem->flagged( $flagged ); $problem->non_public( $non_public ); @@ -687,11 +770,16 @@ 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 'confirmed' and $old_state eq 'unconfirmed' ) { + if ( $c->req->param('remove_photo') || $new_state eq 'hidden' ) { + unlink glob FixMyStreet->path_to( 'web', 'photo', $problem->id . '.*' ); + } + + if ( $problem->is_visible() and $old_state eq 'unconfirmed' ) { $problem->confirmed( \'ms_current_timestamp()' ); } @@ -721,26 +809,22 @@ sub report_edit : Path('report_edit') : Args(1) { return 1; } -sub search_users: Path('search_users') : Args(0) { +sub users: Path('users') : Args(0) { my ( $self, $c ) = @_; - $c->forward('check_page_allowed'); - if (my $search = $c->req->param('search')) { - $c->stash->{searched} = 1; + $c->stash->{searched} = $search; - my $search = $c->req->param('search'); my $isearch = '%' . $search . '%'; - my $search_n = 0; $search_n = int($search) if $search =~ /^\d+$/; my $users = $c->model('DB::User')->search( { -or => [ - email => { ilike => $isearch }, - name => { ilike => $isearch }, - from_council => $search_n, + email => { ilike => $isearch }, + name => { ilike => $isearch }, + from_body => $search_n, ] } ); @@ -762,6 +846,19 @@ sub search_users: Path('search_users') : Args(0) { } } + } else { + $c->forward('get_token'); + $c->forward('fetch_all_bodies'); + + # Admin users by default + my $users = $c->model('DB::User')->search( + { from_body => { '!=', undef } }, + { order_by => 'name' } + ); + my @users = $users->all; + my %email2user = map { $_->email => $_ } @users; + $c->stash->{users} = \@users; + } return 1; @@ -782,7 +879,6 @@ sub update_edit : Path('update_edit') : Args(1) { unless $update; $c->forward('get_token'); - $c->forward('check_page_allowed'); $c->stash->{update} = $update; @@ -821,10 +917,14 @@ sub update_edit : Path('update_edit') : Args(1) { $update->photo(undef); } + if ( $c->req->param('remove_photo') || $new_state eq 'hidden' ) { + unlink glob FixMyStreet->path_to( 'web', 'photo', 'c', $update->id . '.*' ); + } + $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 = @@ -837,6 +937,11 @@ sub update_edit : Path('update_edit') : Args(1) { if ( $new_state eq 'confirmed' and $old_state eq 'unconfirmed' ) { $update->confirmed( \'ms_current_timestamp()' ); + if ( $update->problem_state && $update->created > $update->problem->lastupdate ) { + $update->problem->state( $update->problem_state ); + $update->problem->lastupdate( \'ms_current_timestamp()' ); + $update->problem->update; + } } $update->update; @@ -868,16 +973,51 @@ sub update_edit : Path('update_edit') : Args(1) { return 1; } +sub user_add : Path('user_edit') : Args(0) { + my ( $self, $c ) = @_; + + $c->stash->{template} = 'admin/user_edit.html'; + $c->forward('get_token'); + $c->forward('fetch_all_bodies'); + + return 1 unless $c->req->param('submit'); + + $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( { + name => $c->req->param('name'), + email => $c->req->param('email'), + from_body => $c->req->param('body') || undef, + flagged => $c->req->param('flagged') || 0, + }, { + key => 'users_email_key' + } ); + $c->stash->{user} = $user; + + $c->forward( 'log_edit', [ $user->id, 'user', 'edit' ] ); + + $c->stash->{status_message} = + '<p><em>' . _('Updated!') . '</em></p>'; + + return 1; +} + sub user_edit : Path('user_edit') : Args(1) { my ( $self, $c, $id ) = @_; - $c->forward('check_page_allowed'); $c->forward('get_token'); my $user = $c->model('DB::User')->find( { id => $id } ); $c->stash->{user} = $user; - $c->forward('set_up_council_details'); + $c->forward('fetch_all_bodies'); if ( $c->req->param('submit') ) { $c->forward('check_token'); @@ -886,14 +1026,21 @@ sub user_edit : Path('user_edit') : Args(1) { if ( $user->email ne $c->req->param('email') || $user->name ne $c->req->param('name' ) || - $user->from_council != $c->req->param('council') ) { + ($user->from_body && $user->from_body->id ne $c->req->param('body')) || + (!$user->from_body && $c->req->param('body')) + ) { $edited = 1; } $user->name( $c->req->param('name') ); $user->email( $c->req->param('email') ); - $user->from_council( $c->req->param('council') || undef ); + $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) { @@ -907,11 +1054,9 @@ sub user_edit : Path('user_edit') : Args(1) { return 1; } -sub list_flagged : Path('list_flagged') : Args(0) { +sub flagged : Path('flagged') : Args(0) { my ( $self, $c ) = @_; - $c->forward('check_page_allowed'); - my $problems = $c->model('DB::Problem')->search( { flagged => 1 } ); # pass in as array ref as using same template as search_reports @@ -919,8 +1064,20 @@ sub list_flagged : Path('list_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; } @@ -928,37 +1085,24 @@ sub list_flagged : Path('list_flagged') : Args(0) { sub stats : Path('stats') : Args(0) { my ( $self, $c ) = @_; - $c->forward('check_page_allowed'); - - $c->forward('set_up_council_details'); + $c->forward('fetch_all_bodies'); - if ( $c->cobrand->moniker eq 'seesomething' ) { + if ( $c->cobrand->moniker eq 'seesomething' || $c->cobrand->moniker eq 'zurich' ) { return $c->cobrand->admin_stats(); } 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; @@ -970,11 +1114,11 @@ sub stats : Path('stats') : Args(0) { my $bymonth = $c->req->param('bymonth'); $c->stash->{bymonth} = $bymonth; - my ( %council, %dates ); - $council{council} = { like => $c->req->param('council') } - if $c->req->param('council'); + my ( %body, %dates ); + $body{bodies_str} = { like => $c->req->param('body') } + if $c->req->param('body'); - $c->stash->{selected_council} = $c->req->param('council'); + $c->stash->{selected_body} = $c->req->param('body'); my $field = 'confirmed'; @@ -1009,7 +1153,7 @@ sub stats : Path('stats') : Args(0) { $field => { '>=', $start_date}, $field => { '<=', $end_date + $one_day }, ], - %council, + %body, %dates, }, \%select, @@ -1038,16 +1182,17 @@ sub set_allowed_pages : Private { if( !$pages ) { $pages = { 'summary' => [_('Summary'), 0], - 'council_list' => [_('Bodies'), 1], - 'search_reports' => [_('Reports'), 2], + 'bodies' => [_('Bodies'), 1], + 'reports' => [_('Reports'), 2], 'timeline' => [_('Timeline'), 3], 'questionnaire' => [_('Survey'), 4], - 'search_users' => [_('Users'), 5], - 'list_flagged' => [_('Flagged'), 6], + 'users' => [_('Users'), 5], + 'flagged' => [_('Flagged'), 6], 'stats' => [_('Stats'), 6], + 'config' => [ undef, undef ], 'user_edit' => [undef, undef], - 'council_contacts' => [undef, undef], - 'council_edit' => [undef, undef], + 'body' => [undef, undef], + 'body_edit' => [undef, undef], 'report_edit' => [undef, undef], 'update_edit' => [undef, undef], 'abuse_edit' => [undef, undef], @@ -1062,6 +1207,16 @@ sub set_allowed_pages : Private { return 1; } +sub get_user : Private { + my ( $self, $c ) = @_; + + my $user = $c->req->remote_user(); + $user ||= ($c->user && $c->user->name); + $user ||= ''; + + return $user; +} + =item get_token Generate a token based on user and secret @@ -1072,12 +1227,8 @@ sub get_token : Private { my ( $self, $c ) = @_; my $secret = $c->model('DB::Secret')->search()->first; - - my $user = $c->req->remote_user(); - $user ||= ''; - - my $token = md5_hex(($user . $secret->secret)); - + my $user = $c->forward('get_user'); + my $token = sha1_hex($user . $secret->secret); $c->stash->{token} = $token; return 1; @@ -1104,7 +1255,7 @@ sub check_token : Private { $c->forward( 'log_edit', [ $object_id, $object_type, $action_performed ] ); -Adds an entry into the admin_log table using the current remote_user. +Adds an entry into the admin_log table using the current user. =cut @@ -1112,7 +1263,7 @@ sub log_edit : Private { my ( $self, $c, $id, $object_type, $action ) = @_; $c->model('DB::AdminLog')->create( { - admin_user => ( $c->req->remote_user() || '' ), + admin_user => $c->forward('get_user'), object_type => $object_type, action => $action, object_id => $id, @@ -1232,21 +1383,36 @@ sub rotate_photo : Private { my ( $self, $c ) =@_; my $direction = $c->req->param('rotate_photo'); + return unless $direction eq _('Rotate Left') or $direction eq _('Rotate Right'); - return unless $direction =~ /Left/ or $direction =~ /Right/; - - my $photo = _rotate_image( $c->stash->{problem}->photo, $direction =~ /Left/ ? -90 : 90 ); + my $photo = $c->stash->{problem}->photo; + my $file; - if ( $photo ) { - $c->stash->{rotated} = 1; - $c->stash->{problem}->photo( $photo ); - $c->stash->{problem}->update(); + # If photo field contains a hash + if ( length($photo) == 40 ) { + $file = file( $c->config->{UPLOAD_DIR}, "$photo.jpeg" ); + $photo = $file->slurp; } + $photo = _rotate_image( $photo, $direction eq _('Rotate Left') ? -90 : 90 ); + return unless $photo; + + # Write out to new location + my $fileid = sha1_hex($photo); + $file = file( $c->config->{UPLOAD_DIR}, "$fileid.jpeg" ); + + my $fh = $file->open('w'); + print $fh $photo; + close $fh; + + unlink glob FixMyStreet->path_to( 'web', 'photo', $c->stash->{problem}->id . '.*' ); + + $c->stash->{problem}->photo( $fileid ); + $c->stash->{problem}->update(); + return 1; } - =head2 check_page_allowed Checks if the current catalyst action is in the list of allowed pages and @@ -1270,16 +1436,16 @@ sub check_page_allowed : Private { return 1; } -sub set_up_council_details : Private { +sub fetch_all_bodies : Private { my ($self, $c ) = @_; - my $areas = mySociety::MaPit::call('areas', $c->cobrand->area_types); - - my @councils_ids = sort { strcoll($areas->{$a}->{name}, $areas->{$b}->{name}) } keys %$areas; - @councils_ids = $c->cobrand->filter_all_council_ids_list( @councils_ids ); - - $c->stash->{council_ids} = \@councils_ids; - $c->stash->{council_details} = $areas; + my @bodies = $c->model('DB::Body')->all; + if ( $c->cobrand->moniker eq 'zurich' ) { + @bodies = $c->cobrand->admin_fetch_all_bodies( @bodies ); + } else { + @bodies = sort { strcoll($a->name, $b->name) } @bodies; + } + $c->stash->{bodies} = \@bodies; return 1; } diff --git a/perllib/FixMyStreet/App/Controller/Alert.pm b/perllib/FixMyStreet/App/Controller/Alert.pm index 91ea61fbc..e821b7467 100644 --- a/perllib/FixMyStreet/App/Controller/Alert.pm +++ b/perllib/FixMyStreet/App/Controller/Alert.pm @@ -407,13 +407,13 @@ Generate the details required to display the council/ward/area RSS feeds sub setup_council_rss_feeds : Private { my ( $self, $c ) = @_; - $c->stash->{council_check_action} = 'alert'; - unless ( $c->forward('/council/load_and_check_councils_and_wards') ) { + $c->stash->{area_check_action} = 'alert'; + unless ( $c->forward('/council/load_and_check_areas_and_wards') ) { $c->go('index'); } ( $c->stash->{options}, $c->stash->{reported_to_options} ) = - $c->cobrand->council_rss_alert_options( $c->stash->{all_councils}, $c ); + $c->cobrand->council_rss_alert_options( $c->stash->{all_areas}, $c ); return 1; } diff --git a/perllib/FixMyStreet/App/Controller/Around.pm b/perllib/FixMyStreet/App/Controller/Around.pm index f2bb23350..41e0ad947 100644 --- a/perllib/FixMyStreet/App/Controller/Around.pm +++ b/perllib/FixMyStreet/App/Controller/Around.pm @@ -40,11 +40,12 @@ sub around_index : Path : Args(0) { my $partial_report = $c->forward('load_partial'); # Try to create a location for whatever we have - return - unless $c->forward('/location/determine_location_from_coords') - || $c->forward('/location/determine_location_from_pc'); + my $ret = $c->forward('/location/determine_location_from_coords') + || $c->forward('/location/determine_location_from_pc'); + return unless $ret; + return $c->res->redirect('/') if $ret == -1 && !$partial_report; - # Check to see if the spot is covered by a council - if not show an error. + # Check to see if the spot is covered by a area - if not show an error. return unless $c->cobrand->moniker eq 'fixmybarangay' || $c->forward('check_location_is_acceptable'); # If we have a partial - redirect to /report/new so that it can be @@ -192,7 +193,7 @@ sub display_location : Private { longitude => $p->longitude, colour => $colour, id => $p->id, - title => $p->title, + title => $p->title_safe, } } @$on_map_all, @$around_map; } @@ -212,7 +213,7 @@ sub display_location : Private { =head2 check_location_is_acceptable -Find the lat and lon in stash and check that they are acceptable to the council, +Find the lat and lon in stash and check that they are acceptable to the area, and that they are in UK (if we are in UK). =cut @@ -220,10 +221,10 @@ and that they are in UK (if we are in UK). sub check_location_is_acceptable : Private { my ( $self, $c ) = @_; - # check that there are councils that can accept this location - $c->stash->{council_check_action} = 'submit_problem'; - $c->stash->{remove_redundant_councils} = 1; - return $c->forward('/council/load_and_check_councils'); + # check that there are areas that can accept this location + $c->stash->{area_check_action} = 'submit_problem'; + $c->stash->{remove_redundant_areas} = 1; + return $c->forward('/council/load_and_check_areas'); } =head2 /ajax @@ -281,6 +282,66 @@ sub ajax : Path('/ajax') { $c->res->body($body); } + +sub location_autocomplete : Path('/ajax/geocode') { + my ( $self, $c ) = @_; + $c->res->content_type('application/json; charset=utf-8'); + unless ( $c->req->param('term') ) { + $c->res->status(404); + $c->res->body(''); + return; + } + # we want the match even if there's no ambiguity, so recommendation doesn't + # disappear when it's the last choice being offered in the autocomplete. + $c->stash->{allow_single_geocode_match_strings} = 1; + return $self->_geocode( $c, $c->req->param('term') ); +} + +sub location_lookup : Path('/ajax/lookup_location') { + my ( $self, $c ) = @_; + $c->res->content_type('application/json; charset=utf-8'); + unless ( $c->req->param('term') ) { + $c->res->status(404); + $c->res->body(''); + return; + } + + return $self->_geocode( $c, $c->req->param('term') ); +} + +sub _geocode : Private { + my ( $self, $c, $term ) = @_; + + my ( $lat, $long, $suggestions ) = + FixMyStreet::Geocode::lookup( $c->req->param('term'), $c ); + + my ($response, @addresses, @locations); + + if ( $lat && $long ) { + $response = { latitude => $lat, longitude => $long }; + } else { + if ( ref($suggestions) eq 'ARRAY' ) { + foreach (@$suggestions) { + push @addresses, decode_utf8($_->{address}); + push @locations, { address => decode_utf8($_->{address}), lat => $_->{latitude}, long => $_->{longitude} }; + } + $response = { suggestions => \@addresses, locations => \@locations }; + } else { + $response = { error => $suggestions }; + } + } + + if ( $c->stash->{allow_single_geocode_match_strings} ) { + $response = \@addresses; + } + + my $body = JSON->new->utf8(1)->encode( + $response + ); + $c->res->body($body); + +} + __PACKAGE__->meta->make_immutable; 1; diff --git a/perllib/FixMyStreet/App/Controller/Auth.pm b/perllib/FixMyStreet/App/Controller/Auth.pm index 3dc25dedf..5a4243fbf 100644 --- a/perllib/FixMyStreet/App/Controller/Auth.pm +++ b/perllib/FixMyStreet/App/Controller/Auth.pm @@ -157,11 +157,8 @@ sub token : Path('/M') : Args(1) { # Sign out in case we are another user $c->logout(); - # get the email and scrap the token - my $data = $token_obj->data; - $token_obj->delete; - # find or create the user related to the token. + my $data = $token_obj->data; my $user = $c->model('DB::User')->find_or_create( { email => $data->{email} } ); $user->name( $data->{name} ) if $data->{name}; $user->password( $data->{password}, 1 ) if $data->{password}; @@ -182,6 +179,10 @@ Used after signing in to take the person back to where they were. sub redirect_on_signin : Private { my ( $self, $c, $redirect ) = @_; $redirect = 'my' unless $redirect; + if ( $c->cobrand->moniker eq 'zurich' ) { + $redirect = 'my' if $redirect eq 'admin'; + $redirect = 'admin' if $c->user->from_body; + } $c->res->redirect( $c->uri_for( "/$redirect" ) ); } diff --git a/perllib/FixMyStreet/App/Controller/Contact.pm b/perllib/FixMyStreet/App/Controller/Contact.pm index 926a3f2a5..6bc6e90ef 100644 --- a/perllib/FixMyStreet/App/Controller/Contact.pm +++ b/perllib/FixMyStreet/App/Controller/Contact.pm @@ -108,11 +108,19 @@ sub validate : Private { if !mySociety::EmailUtil::is_valid_email( $c->req->param('em') ); } + %field_errors = ( + %field_errors, + $c->cobrand->extra_contact_validation($c) + ); + push @errors, _('Illegal ID') if $c->req->param('id') && $c->req->param('id') !~ /^[1-9]\d*$/ or $c->req->param('update_id') && $c->req->param('update_id') !~ /^[1-9]\d*$/; + push @errors, _('There was a problem showing this page. Please try again later.') + if $c->req->params->{message} && $c->req->params->{message} =~ /\[url=|<a/; + unshift @errors, _('There were problems with your report. Please see below.') if scalar keys %field_errors; @@ -146,7 +154,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 ]", @@ -158,7 +166,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 ]", @@ -184,7 +192,7 @@ generally required to stash sub setup_request : Private { my ( $self, $c ) = @_; - $c->stash->{contact_email} = $c->cobrand->contact_email( 'contact' ); + $c->stash->{contact_email} = $c->cobrand->contact_email; $c->stash->{contact_email} =~ s/\@/@/; for my $param (qw/em subject message/) { @@ -206,7 +214,7 @@ Sends the email sub send_email : Private { my ( $self, $c ) = @_; - my $recipient = $c->cobrand->contact_email( 'contact' ); + my $recipient = $c->cobrand->contact_email; my $recipient_name = $c->cobrand->contact_name(); $c->stash->{host} = $c->req->header('HOST'); diff --git a/perllib/FixMyStreet/App/Controller/Council.pm b/perllib/FixMyStreet/App/Controller/Council.pm index cb9e78421..ceec04027 100644 --- a/perllib/FixMyStreet/App/Controller/Council.pm +++ b/perllib/FixMyStreet/App/Controller/Council.pm @@ -14,34 +14,34 @@ Catalyst Controller. =head1 METHODS -=head2 load_and_check_councils_and_wards +=head2 load_and_check_areas_and_wards -Try to load councils and wards for this location and check that we have at least one. If -there are no councils then return false. +Try to load areas and wards for this location and check that we have at least one. If +there are no areas then return false. =cut -sub load_and_check_councils_and_wards : Private { +sub load_and_check_areas_and_wards : Private { my ( $self, $c ) = @_; my $area_types = [ @{$c->cobrand->area_types}, @{$c->cobrand->area_types_children} ]; $c->stash->{area_types} = $area_types; - $c->forward('load_and_check_councils'); + $c->forward('load_and_check_areas'); } -=head2 load_and_check_councils +=head2 load_and_check_areas -Try to load councils for this location and check that we have at least one. If -there are no councils then return false. +Try to load areas for this location and check that we have at least one. If +there are no areas then return false. =cut -sub load_and_check_councils : Private { +sub load_and_check_areas : Private { my ( $self, $c ) = @_; my $latitude = $c->stash->{latitude}; my $longitude = $c->stash->{longitude}; - # Look up councils and do checks for the point we've got + # Look up areas and do checks for the point we've got my $area_types; if ( $c->stash->{area_types} and scalar @{ $c->stash->{area_types} } ) { $area_types = $c->stash->{area_types}; @@ -52,49 +52,52 @@ sub load_and_check_councils : Private { my $short_latitude = Utils::truncate_coordinate($latitude); my $short_longitude = Utils::truncate_coordinate($longitude); - my $all_councils; + my $all_areas; if ( $c->stash->{fetch_all_areas} ) { my %area_types = map { $_ => 1 } @$area_types; - my $all_areas = + $all_areas = mySociety::MaPit::call( 'point', "4326/$short_longitude,$short_latitude" ); - $c->stash->{all_areas} = $all_areas; - $all_councils = { + $c->stash->{all_areas_mapit} = $all_areas; + $all_areas = { map { $_ => $all_areas->{$_} } grep { $area_types{ $all_areas->{$_}->{type} } } keys %$all_areas }; } else { - $all_councils = + $all_areas = mySociety::MaPit::call( 'point', "4326/$short_longitude,$short_latitude", type => $area_types ); } - if ($all_councils->{error}) { - $c->stash->{location_error} = $all_councils->{error}; + if ($all_areas->{error}) { + $c->stash->{location_error_mapit_error} = 1; + $c->stash->{location_error} = $all_areas->{error}; return; } # Let cobrand do a check my ( $success, $error_msg ) = - $c->cobrand->council_check( { all_councils => $all_councils }, - $c->stash->{council_check_action} ); + $c->cobrand->area_check( { all_areas => $all_areas }, + $c->stash->{area_check_action} ); if ( !$success ) { + $c->stash->{location_error_cobrand_check} = 1; $c->stash->{location_error} = $error_msg; return; } # edit hash in-place - $c->cobrand->remove_redundant_councils($all_councils) if $c->stash->{remove_redundant_councils}; + $c->cobrand->remove_redundant_areas($all_areas) if $c->stash->{remove_redundant_areas}; - # If we don't have any councils we can't accept the report - if ( !scalar keys %$all_councils ) { + # If we don't have any areas we can't accept the report + if ( !scalar keys %$all_areas ) { + $c->stash->{location_error_no_areas} = 1; $c->stash->{location_error} = _('That location does not appear to be covered by a council; perhaps it is offshore or outside the country. Please try again.'); return; } - # all good if we have some councils left - $c->stash->{all_councils} = $all_councils; - $c->stash->{all_council_names} = - [ map { $_->{name} } values %$all_councils ]; + # all good if we have some areas left + $c->stash->{all_areas} = $all_areas; + $c->stash->{all_area_names} = + [ map { $_->{name} } values %$all_areas ]; return 1; } diff --git a/perllib/FixMyStreet/App/Controller/Dashboard.pm b/perllib/FixMyStreet/App/Controller/Dashboard.pm index a5ba8ff07..25c6e1923 100644 --- a/perllib/FixMyStreet/App/Controller/Dashboard.pm +++ b/perllib/FixMyStreet/App/Controller/Dashboard.pm @@ -29,7 +29,7 @@ sub example : Local : Args(0) { } # TODO Set up manual version of what the below would do - #$c->forward( '/report/new/setup_categories_and_councils' ); + #$c->forward( '/report/new/setup_categories_and_bodies' ); # See if we've had anything from the dropdowns - perhaps vary results if so $c->stash->{ward} = $c->req->param('ward'); @@ -74,9 +74,9 @@ sub check_page_allowed : Private { $c->detach( '/auth/redirect' ) unless $c->user_exists; $c->detach( '/page_error_404_not_found' ) - unless $c->user_exists && $c->user->from_council; + unless $c->user_exists && $c->user->from_body; - return $c->user->from_council; + return $c->user->from_body; } =head2 index @@ -88,20 +88,23 @@ Show the dashboard table. sub index : Path : Args(0) { my ( $self, $c ) = @_; - my $council = $c->forward('check_page_allowed'); + my $body = $c->forward('check_page_allowed'); # Set up the data for the dropdowns - my $council_detail = mySociety::MaPit::call('area', $council ); + # Just take the first area ID we find + my $area_id = $body->body_areas->first->area_id; + + my $council_detail = mySociety::MaPit::call('area', $area_id ); $c->stash->{council} = $council_detail; - my $children = mySociety::MaPit::call('area/children', $council, + my $children = mySociety::MaPit::call('area/children', $area_id, type => $c->cobrand->area_types_children, ); $c->stash->{children} = $children; - $c->stash->{all_councils} = { $council => $council_detail }; - $c->forward( '/report/new/setup_categories_and_councils' ); + $c->stash->{all_areas} = { $area_id => $council_detail }; + $c->forward( '/report/new/setup_categories_and_bodies' ); # See if we've had anything from the dropdowns @@ -109,7 +112,7 @@ sub index : Path : Args(0) { $c->stash->{category} = $c->req->param('category'); my %where = ( - council => $council, # XXX This will break in a two tier council. Restriction needs looking at... + bodies_str => $body->id, # XXX Does this break in a two tier council? Restriction needs looking at... 'problem.state' => [ FixMyStreet::DB::Result::Problem->visible_states() ], ); $where{areas} = { 'like', '%,' . $c->stash->{ward} . ',%' } @@ -118,16 +121,23 @@ 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 ) ] ); + my $now = DateTime->now( time_zone => 'local' ); + my $t = $now->clone->truncate( to => 'day' ); + $counts{wtd} = $c->forward( 'updates_search', + [ $dtf->format_datetime( $t->clone->subtract( days => $t->dow - 1 ) ) ] ); + $counts{week} = $c->forward( 'updates_search', + [ $dtf->format_datetime( $now->clone->subtract( weeks => 1 ) ) ] ); + $counts{weeks} = $c->forward( 'updates_search', + [ $dtf->format_datetime( $now->clone->subtract( weeks => 4 ) ) ] ); + $counts{ytd} = $c->forward( 'updates_search', + [ $dtf->format_datetime( $t->clone->set( day => 1, month => 1 ) ) ] ); $c->stash->{problems} = \%counts; @@ -135,26 +145,126 @@ 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->{'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( $now->clone->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)) { + if ($_->confirmed >= $now->clone->subtract(days => 7)) { push @{$problems{1}}, $_; - } elsif ($_->confirmed >= DateTime->now->subtract(days => 14)) { + } elsif ($_->confirmed >= $now->clone->subtract(days => 14)) { push @{$problems{2}}, $_; } else { push @{$problems{3}}, $_; } } $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({ binary => 1, eol => "\n" }); + $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 "", @body ); } sub updates_search : Private { @@ -181,11 +291,13 @@ sub updates_search : Private { map { $_ => $counts{$_} || 0 } ('confirmed', 'investigating', 'in progress', 'closed', 'fixed - council', 'fixed - user', 'fixed', 'unconfirmed', 'hidden', - 'partial', 'planned'); + 'partial', 'action scheduled', 'planned'); + + $counts{'action scheduled'} += $counts{planned} || 0; for my $vars ( [ 'time_to_fix', 'fixed - council' ], - [ 'time_to_mark', 'in progress', 'planned', 'investigating', 'closed' ], + [ 'time_to_mark', 'in progress', 'action scheduled', 'investigating', 'closed' ], ) { my $col = shift @$vars; my $substmt = "select min(id) from comment where me.problem_id=comment.problem_id and problem_state in ('" 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/JS.pm b/perllib/FixMyStreet/App/Controller/JS.pm index d7847af75..483c3c2cc 100755 --- a/perllib/FixMyStreet/App/Controller/JS.pm +++ b/perllib/FixMyStreet/App/Controller/JS.pm @@ -11,13 +11,13 @@ FixMyStreet::App::Controller::JS - Catalyst Controller =head1 DESCRIPTION JS Catalyst Controller. To return a language-dependent list -of validation strings. +of translation strings. =head1 METHODS =cut -sub validation_strings : LocalRegex('^validation_strings\.(.*?)\.js$') : Args(0) { +sub translation_strings : LocalRegex('^translation_strings\.(.*?)\.js$') : Args(0) { my ( $self, $c ) = @_; my $lang = $c->req->captures->[0]; $c->cobrand->set_lang_and_domain( $lang, 1 ); diff --git a/perllib/FixMyStreet/App/Controller/JSON.pm b/perllib/FixMyStreet/App/Controller/JSON.pm index f3607341a..17507a84b 100644 --- a/perllib/FixMyStreet/App/Controller/JSON.pm +++ b/perllib/FixMyStreet/App/Controller/JSON.pm @@ -8,6 +8,7 @@ use JSON; use DateTime; use DateTime::Format::ISO8601; use List::MoreUtils 'uniq'; +use FixMyStreet::App; =head1 NAME @@ -80,11 +81,13 @@ sub problems : Local { $date_col = 'lastupdate'; } + my $dt_parser = FixMyStreet::App->model('DB')->schema->storage->datetime_parser; + my $one_day = DateTime::Duration->new( days => 1 ); my $query = { $date_col => { - '>=' => $start_dt, - '<=' => $end_dt + $one_day, + '>=' => $dt_parser->format_datetime($start_dt), + '<=' => $dt_parser->format_datetime($end_dt + $one_day), }, state => [ @state ], }; @@ -92,7 +95,7 @@ sub problems : Local { my @problems = $c->cobrand->problems->search( $query, { order_by => { -asc => 'confirmed' }, columns => [ - 'id', 'title', 'council', 'category', + 'id', 'title', 'bodies_str', 'category', 'detail', 'name', 'anonymous', 'confirmed', 'whensent', 'service', 'latitude', 'longitude', 'used_map', @@ -100,23 +103,13 @@ sub problems : Local { ] } ); - my @councils; foreach my $problem (@problems) { $problem->name( '' ) if $problem->anonymous == 1; $problem->service( 'Web interface' ) if $problem->service eq ''; - if ($problem->council) { - (my $council = $problem->council) =~ s/\|.*//g; - my @council_ids = split /,/, $council; - push(@councils, @council_ids); - $problem->council( \@council_ids ); - } - } - @councils = uniq @councils; - my $areas_info = mySociety::MaPit::call('areas', \@councils); - foreach my $problem (@problems) { - if ($problem->council) { - my @council_names = map { $areas_info->{$_}->{name} } @{$problem->council} ; - $problem->council( join(' and ', @council_names) ); + my $bodies = $problem->bodies; + if (keys %$bodies) { + my @body_names = map { $_->name } values %$bodies; + $problem->bodies_str( join(' and ', @body_names) ); } } diff --git a/perllib/FixMyStreet/App/Controller/Location.pm b/perllib/FixMyStreet/App/Controller/Location.pm index e8bf2cd1c..4312b6911 100644 --- a/perllib/FixMyStreet/App/Controller/Location.pm +++ b/perllib/FixMyStreet/App/Controller/Location.pm @@ -5,6 +5,7 @@ use namespace::autoclean; BEGIN {extends 'Catalyst::Controller'; } use Encode; +use FixMyStreet::Geocode; =head1 NAME @@ -49,6 +50,8 @@ sub determine_location_from_coords : Private { User has searched for a location - try to find it for them. +Return -1 if nothing provided. + If one match is found returns true and lat/lng is set. If several possible matches are found puts an array onto stash so that user can be prompted to pick one and returns false. @@ -61,7 +64,7 @@ sub determine_location_from_pc : Private { my ( $self, $c, $pc ) = @_; # check for something to search - $pc ||= $c->req->param('pc') || return; + $pc ||= $c->req->param('pc') || return -1; $c->stash->{pc} = $pc; # for template if ( $pc =~ /^(-?\d+(?:\.\d+)?)\s*,\s*(-?\d+(?:\.\d+)?)$/ ) { @@ -100,6 +103,7 @@ sub determine_location_from_pc : Private { } # pass errors back to the template + $c->stash->{location_error_pc_lookup} = 1; $c->stash->{location_error} = $error; return; } 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/Open311.pm b/perllib/FixMyStreet/App/Controller/Open311.pm index 040b0d3e6..f3841acef 100644 --- a/perllib/FixMyStreet/App/Controller/Open311.pm +++ b/perllib/FixMyStreet/App/Controller/Open311.pm @@ -100,7 +100,7 @@ sub error : Private { sub get_discovery : Private { my ( $self, $c ) = @_; - my $contact_email = $c->config->{CONTACT_EMAIL}; + my $contact_email = $c->cobrand->contact_email; my $prod_url = 'http://www.fiksgatami.no/open311'; my $test_url = 'http://fiksgatami-dev.nuug.no/open311'; my $prod_changeset = '2011-04-08T00:00:00Z'; @@ -164,12 +164,12 @@ sub get_services : Private { if ($lat || $lon) { my $area_types = $c->cobrand->area_types; - my $all_councils = mySociety::MaPit::call('point', + my $all_areas = mySociety::MaPit::call('point', "4326/$lon,$lat", type => $area_types); $categories = $categories->search( { - area_id => [ keys %$all_councils ], - } ); + 'body_areas.area_id' => [ keys %$all_areas ], + }, { join => { 'body' => 'body_areas' } } ); } my @categories = $categories->search( undef, { @@ -223,19 +223,11 @@ sub output_requests : Private { ); my @problemlist; - my @councils; while ( my $problem = $problems->next ) { my $id = $problem->id; $problem->service( 'Web interface' ) unless $problem->service; - if ($problem->council) { - (my $council = $problem->council) =~ s/\|.*//g; - my @council_ids = split(/,/, $council); - push(@councils, @council_ids); - $problem->council( \@council_ids ); - } - $problem->state( $statusmap{$problem->state} ); my $request = @@ -248,19 +240,23 @@ sub output_requests : Private { 'long' => [ $problem->longitude ], 'status' => [ $problem->state ], # 'status_notes' => [ {} ], - 'requested_datetime' => [ w3date($problem->confirmed_local) ], - 'updated_datetime' => [ w3date($problem->lastupdate_local) ], + 'requested_datetime' => [ w3date($problem->confirmed) ], + 'updated_datetime' => [ w3date($problem->lastupdate) ], # 'expected_datetime' => [ {} ], # 'address' => [ {} ], # 'address_id' => [ {} ], 'service_code' => [ $problem->category ], 'service_name' => [ $problem->category ], # 'service_notice' => [ {} ], - 'agency_responsible' => $problem->council , # FIXME Not according to Open311 v2 # 'zipcode' => [ {} ], 'interface_used' => [ $problem->service ], # Not in Open311 v2 }; + if ( $c->cobrand->moniker ne 'zurich' ) { # XXX + # FIXME Not according to Open311 v2 + $request->{agency_responsible} = $problem->bodies; + } + if ( !$problem->anonymous ) { # Not in Open311 v2 $request->{'requestor_name'} = [ $problem->name ]; @@ -268,7 +264,7 @@ sub output_requests : Private { if ( $problem->whensent ) { # Not in Open311 v2 $request->{'agency_sent_datetime'} = - [ w3date($problem->whensent_local) ]; + [ w3date($problem->whensent) ]; } # Extract number of updates @@ -280,7 +276,7 @@ sub output_requests : Private { $request->{'comment_count'} = [ $updates ]; } - my $display_photos = $c->cobrand->allow_photo_display; + my $display_photos = $c->cobrand->allow_photo_display($problem); if ($display_photos && $problem->photo) { my $url = $c->cobrand->base_url(); my $imgurl = $url . "/photo/$id.full.jpeg"; @@ -288,12 +284,12 @@ sub output_requests : Private { } push(@problemlist, $request); } - my $areas_info = mySociety::MaPit::call('areas', \@councils); + foreach my $request (@problemlist) { if ($request->{agency_responsible}) { - my @council_names = map { $areas_info->{$_}->{name} } @{$request->{agency_responsible}} ; + my @body_names = map { $_->name } values %{$request->{agency_responsible}} ; $request->{agency_responsible} = - [ {'recipient' => [ @council_names ] } ]; + [ {'recipient' => [ @body_names ] } ]; } } $c->forward( 'format_output', [ { @@ -311,15 +307,17 @@ sub get_requests : Private { my $max_requests = $c->req->param('max_requests') || 0; # Only provide access to the published reports + my $states = FixMyStreet::DB::Result::Problem->visible_states(); + delete $states->{unconfirmed}; my $criteria = { - state => [ FixMyStreet::DB::Result::Problem->visible_states() ] + state => [ keys %$states ] }; my %rules = ( service_request_id => [ '=', 'id' ], service_code => [ '=', 'category' ], status => [ 'IN', 'state' ], - agency_responsible => [ '~', 'council' ], + agency_responsible => [ '~', 'bodies_str' ], interface_used => [ '=', 'service' ], has_photo => [ '=', 'photo' ], ); @@ -411,8 +409,10 @@ sub get_request : Private { return; } + my $states = FixMyStreet::DB::Result::Problem->visible_states(); + delete $states->{unconfirmed}; my $criteria = { - state => [ FixMyStreet::DB::Result::Problem->visible_states() ], + state => [ keys %$states ], id => $id, }; $c->forward( 'output_requests', [ $criteria ] ); diff --git a/perllib/FixMyStreet/App/Controller/Photo.pm b/perllib/FixMyStreet/App/Controller/Photo.pm index fa4baf045..09afabecf 100644 --- a/perllib/FixMyStreet/App/Controller/Photo.pm +++ b/perllib/FixMyStreet/App/Controller/Photo.pm @@ -5,7 +5,7 @@ use namespace::autoclean; BEGIN {extends 'Catalyst::Controller'; } use DateTime::Format::HTTP; -use Digest::SHA1 qw(sha1_hex); +use Digest::SHA qw(sha1_hex); use File::Path; use File::Slurp; use Path::Class; @@ -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 ] ); @@ -73,7 +75,9 @@ sub index :LocalRegex('^(c/)?(\d+)(?:\.(full|tn|fp))?\.jpeg$') { $c->detach( 'no_photo' ) unless @photo; - my $photo = $photo[0]->photo; + my $item = $photo[0]; + $c->detach( 'no_photo' ) unless $c->cobrand->allow_photo_display($item); # Should only be for reports, not updates + my $photo = $item->photo; # If photo field contains a hash if (length($photo) == 40) { @@ -102,10 +106,7 @@ sub output : Private { File::Path::make_path( FixMyStreet->path_to( 'web', 'photo', 'c' )->stringify ); File::Slurp::write_file( FixMyStreet->path_to( 'web', $c->req->path )->stringify, \$photo ); - my $dt = DateTime->now()->add( years => 1 ); - $c->res->content_type( 'image/jpeg' ); - $c->res->header( 'expires', DateTime::Format::HTTP->format_datetime( $dt ) ); $c->res->body( $photo ); } diff --git a/perllib/FixMyStreet/App/Controller/Report.pm b/perllib/FixMyStreet/App/Controller/Report.pm index ef966a8a8..13a347a90 100644 --- a/perllib/FixMyStreet/App/Controller/Report.pm +++ b/perllib/FixMyStreet/App/Controller/Report.pm @@ -51,6 +51,25 @@ sub display : Path('') : Args(1) { return $c->res->redirect( $c->uri_for($1), 301 ); } + $c->forward( '_display', [ $id ] ); +} + +=head2 ajax + +Return JSON formatted details of a report + +=cut + +sub ajax : Path('ajax') : Args(1) { + my ( $self, $c, $id ) = @_; + + $c->stash->{ajax} = 1; + $c->forward( '_display', [ $id ] ); +} + +sub _display : Private { + my ( $self, $c, $id ) = @_; + $c->forward( 'load_problem_or_display_error', [ $id ] ); $c->forward( 'load_updates' ); $c->forward( 'format_problem_for_display' ); @@ -66,7 +85,7 @@ sub support : Path('support') : Args(0) { ? $c->uri_for( '/report', $id ) : $c->uri_for('/'); - if ( $id && $c->cobrand->can_support_problems && $c->user && $c->user->from_council ) { + if ( $id && $c->cobrand->can_support_problems && $c->user && $c->user->from_body ) { $c->forward( 'load_problem_or_display_error', [ $id ] ); $c->stash->{problem}->update( { interest_count => \'interest_count +1' } ); } @@ -83,7 +102,7 @@ sub load_problem_or_display_error : Private { : $c->cobrand->problems->find( { id => $id } ); # check that the problem is suitable to show. - if ( !$problem || $problem->state eq 'unconfirmed' || $problem->state eq 'partial' ) { + if ( !$problem || ($problem->state eq 'unconfirmed' && !$c->cobrand->show_unconfirmed_reports) || $problem->state eq 'partial' ) { $c->detach( '/page_error_404_not_found', [ _('Unknown problem ID') ] ); } elsif ( $problem->state eq 'hidden' ) { @@ -147,10 +166,25 @@ sub format_problem_for_display : Private { $c->stash->{add_alert} = 1; } - $c->stash->{extra_name_info} = $problem->council && $problem->council eq '2482' ? 1 : 0; + $c->stash->{extra_name_info} = $problem->bodies_str && $problem->bodies_str eq '2482' ? 1 : 0; + if ( $c->sessionid && $c->flash->{created_report} ) { + $c->stash->{created_report} = $c->flash->{created_report}; + } $c->forward('generate_map_tags'); + if ( $c->stash->{ajax} ) { + $c->res->content_type('application/json; charset=utf-8'); + my $content = JSON->new->utf8(1)->encode( + { + report => $c->cobrand->problem_as_hashref( $problem, $c ), + updates => $c->cobrand->updates_as_hashref( $problem, $c ), + } + ); + $c->res->body( $content ); + return 1; + } + return 1; } @@ -168,7 +202,7 @@ sub generate_map_tags : Private { ? [ { latitude => $problem->latitude, longitude => $problem->longitude, - colour => 'yellow', + colour => $c->cobrand->pin_colour($problem, 'report'), type => 'big', } ] : [], @@ -187,11 +221,10 @@ sub delete :Local :Args(1) { return $c->res->redirect($uri) unless $c->user_exists; - my $council = $c->user->obj->from_council; - return $c->res->redirect($uri) unless $council; + my $body = $c->user->obj->from_body; + return $c->res->redirect($uri) unless $body; - my %councils = map { $_ => 1 } @{$p->councils}; - return $c->res->redirect($uri) unless $councils{$council}; + return $c->res->redirect($uri) unless $p->bodies->{$body->id}; $p->state('hidden'); $p->lastupdate( \'ms_current_timestamp()' ); diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm index 169c3d152..1e9f83aec 100644 --- a/perllib/FixMyStreet/App/Controller/Report/New.pm +++ b/perllib/FixMyStreet/App/Controller/Report/New.pm @@ -4,7 +4,6 @@ use Moose; use namespace::autoclean; BEGIN { extends 'Catalyst::Controller'; } -use FixMyStreet::Geocode; use Encode; use List::MoreUtils qw(uniq); use POSIX 'strcoll'; @@ -90,7 +89,7 @@ sub report_new : Path : Args(0) { # create a problem from the submitted details $c->stash->{template} = "report/new/fill_in_details.html"; - $c->forward('setup_categories_and_councils'); + $c->forward('setup_categories_and_bodies'); $c->forward('generate_map'); $c->forward('check_for_category'); @@ -120,7 +119,7 @@ sub report_new_ajax : Path('mobile') : Args(0) { return 1; } - $c->forward('setup_categories_and_councils'); + $c->forward('setup_categories_and_bodies'); $c->forward('process_user'); $c->forward('process_report'); $c->forward('/photo/process_photo'); @@ -148,7 +147,7 @@ sub report_new_ajax : Path('mobile') : Args(0) { } else { $c->stash->{token_url} = $c->uri_for_email( '/P', $token->token ); $c->send_email( 'problem-confirm.txt', { - to => [ [ $report->user->email, $report->name ] ], + to => [ $report->name ? [ $report->user->email, $report->name ] : $report->user->email ], } ); $c->stash->{ json_response } = { success => 1 }; } @@ -181,7 +180,7 @@ sub report_form_ajax : Path('ajax') : Args(0) { return; } - $c->forward('setup_categories_and_councils'); + $c->forward('setup_categories_and_bodies'); # render templates to get the html my $category = $c->render_fragment( 'report/new/category.html'); @@ -190,11 +189,14 @@ sub report_form_ajax : Path('ajax') : Args(0) { ? $c->render_fragment('report/new/extra_name.html') : ''; + my $extra_titles_list = $c->cobrand->title_list($c->stash->{all_areas}); + my $body = JSON->new->utf8(1)->encode( { councils_text => $councils_text, category => $category, extra_name_info => $extra_name_info, + titles_list => $extra_titles_list, categories => $c->stash->{category_options}, } ); @@ -217,7 +219,7 @@ sub category_extras_ajax : Path('category_extras') : Args(0) { $c->res->body($body); return 1; } - $c->forward('setup_categories_and_councils'); + $c->forward('setup_categories_and_bodies'); my $category_extra = ''; if ( $c->stash->{category_extras}->{ $c->req->param('category') } && @{ $c->stash->{category_extras}->{ $c->req->param('category') } } >= 1 ) { @@ -570,29 +572,35 @@ sub determine_location_from_report : Private { return; } -=head2 setup_categories_and_councils +=head2 setup_categories_and_bodies -Look up categories for this council or councils +Look up categories for the relevant body or bodies. =cut -sub setup_categories_and_councils : Private { +sub setup_categories_and_bodies : Private { my ( $self, $c ) = @_; - my $all_councils = $c->stash->{all_councils}; - my $first_council = ( values %$all_councils )[0]; + my $all_areas = $c->stash->{all_areas}; + my $first_area = ( values %$all_areas )[0]; + + my @bodies = $c->model('DB::Body')->search( + { 'body_areas.area_id' => [ keys %$all_areas ], deleted => 0 }, + { join => 'body_areas' } + )->all; + my %bodies = map { $_->id => $_ } @bodies; + my $first_body = ( values %bodies )[0]; my @contacts # = $c # ->model('DB::Contact') # ->not_deleted # - ->search( { area_id => [ keys %$all_councils ] } ) # + ->search( { body_id => [ keys %bodies ] } ) ->all; # variables to populate - my %area_ids_to_list = (); # Areas with categories assigned + my %bodies_to_list = (); # Bodies with categories assigned my @category_options = (); # categories to show - my $category_label = undef; # what to call them my %category_extras = (); # extra fields to fill in for open311 my %non_public_categories = (); # categories for which the reports are not public @@ -600,9 +608,9 @@ sub setup_categories_and_councils : Private { # FIXME - implement in cobrand if ( $c->cobrand->moniker eq 'emptyhomes' ) { - # add all areas found to the list + # add all bodies found to the list foreach (@contacts) { - $area_ids_to_list{ $_->area_id } = 1; + $bodies_to_list{ $_->body_id } = 1; } # set our own categories @@ -615,22 +623,18 @@ sub setup_categories_and_councils : Private { _('Empty pub or bar'), _('Empty public building - school, hospital, etc.') ); - $category_label = _('Property type:'); - } elsif ($first_council->{id} != COUNCIL_ID_BROMLEY && $first_council->{type} eq 'LBO') { + } elsif ($first_area->{id} != COUNCIL_ID_BROMLEY + && $first_area->{id} != COUNCIL_ID_BARNET + && $first_area->{type} eq 'LBO') { - $area_ids_to_list{ $first_council->{id} } = 1; + $bodies_to_list{ $first_body->id } = 1; my @local_categories; - if ($first_council->{id} == COUNCIL_ID_BARNET) { - @local_categories = sort keys %{ Utils::barnet_categories() } - } else { - @local_categories = sort keys %{ Utils::london_categories() } - } + @local_categories = sort keys %{ Utils::london_categories() }; @category_options = ( _('-- Pick a category --'), @local_categories ); - $category_label = _('Category'); } else { @@ -640,7 +644,7 @@ sub setup_categories_and_councils : Private { my %seen; foreach my $contact (@contacts) { - $area_ids_to_list{ $contact->area_id } = 1; + $bodies_to_list{ $contact->body_id } = 1; unless ( $seen{$contact->category} ) { push @category_options, $contact->category; @@ -657,29 +661,34 @@ sub setup_categories_and_councils : Private { # If there's an Other category present, put it at the bottom @category_options = ( _('-- Pick a category --'), grep { $_ ne _('Other') } @category_options ); push @category_options, _('Other') if $seen{_('Other')}; - $category_label = _('Category'); } } + 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->{area_ids_to_list} = [ keys %area_ids_to_list ]; - $c->stash->{category_label} = $category_label; + $c->stash->{bodies} = \%bodies; + $c->stash->{all_body_names} = [ map { $_->name } values %bodies ]; + $c->stash->{all_body_urls} = [ map { $_->external_url } values %bodies ]; + $c->stash->{bodies_to_list} = [ keys %bodies_to_list ]; $c->stash->{category_options} = \@category_options; $c->stash->{category_extras} = \%category_extras; $c->stash->{non_public_categories} = \%non_public_categories; $c->stash->{category_extras_json} = encode_json \%category_extras; - $c->stash->{extra_name_info} = $first_council->{id} == COUNCIL_ID_BROMLEY ? 1 : 0; + $c->stash->{extra_name_info} = $first_area->{id} == COUNCIL_ID_BROMLEY ? 1 : 0; - my @missing_details_councils = - grep { !$area_ids_to_list{$_} } # - keys %$all_councils; + my @missing_details_bodies = grep { !$bodies_to_list{$_->id} } values %bodies; + my @missing_details_body_names = map { $_->name } @missing_details_bodies; - my @missing_details_council_names = - map { $all_councils->{$_}->{name} } # - @missing_details_councils; - - $c->stash->{missing_details_councils} = \@missing_details_councils; - $c->stash->{missing_details_council_names} = \@missing_details_council_names; + $c->stash->{missing_details_bodies} = \@missing_details_bodies; + $c->stash->{missing_details_body_names} = \@missing_details_body_names; } =head2 check_form_submitted @@ -788,6 +797,7 @@ sub process_report : Private { 'category', # 'subcategory', # 'partial', # + 'service', # ); # load the report @@ -797,6 +807,7 @@ sub process_report : Private { $report->postcode( $params{pc} ); $report->latitude( $c->stash->{latitude} ); $report->longitude( $c->stash->{longitude} ); + $report->send_questionnaire( $c->cobrand->send_questionnaires() ); # set some simple bool values (note they get inverted) $report->anonymous( $params{may_show_name} ? 0 : 1 ); @@ -812,65 +823,71 @@ sub process_report : Private { } $report->detail( $detail ); + # mobile device type + $report->service( $params{service} ) if $params{service}; + # set these straight from the params $report->category( _ $params{category} ) if $params{category}; $report->subcategory( $params{subcategory} ); - my $areas = $c->stash->{all_areas}; + my $areas = $c->stash->{all_areas_mapit}; $report->areas( ',' . join( ',', sort keys %$areas ) . ',' ); # From earlier in the process. - my $councils = $c->stash->{all_councils}; - my $first_council = ( values %$councils )[0]; + $areas = $c->stash->{all_areas}; + my $bodies = $c->stash->{bodies}; + my $first_area = ( values %$areas )[0]; + my $first_body = ( values %$bodies )[0]; if ( $c->cobrand->moniker eq 'emptyhomes' ) { - $councils = join( ',', @{ $c->stash->{area_ids_to_list} } ) || -1; - $report->council( $councils ); + $bodies = join( ',', @{ $c->stash->{bodies_to_list} } ) || -1; + $report->bodies_str( $bodies ); - } elsif ( $first_council->{id} == COUNCIL_ID_BARNET ) { - - unless ( exists Utils::barnet_categories()->{ $report->category } ) { - $c->stash->{field_errors}->{category} = _('Please choose a category'); + my %extra; + $c->cobrand->process_extras( $c, undef, \%extra ); + if ( %extra ) { + $report->extra( \%extra ); } - $report->council( $first_council->{id} ); - - } elsif ( $first_council->{id} != COUNCIL_ID_BROMLEY && $first_council->{type} eq 'LBO') { - + + } elsif ($first_area->{id} != COUNCIL_ID_BROMLEY + && $first_area->{id} != COUNCIL_ID_BARNET + && $first_area->{type} eq 'LBO') { + unless ( Utils::london_categories()->{ $report->category } ) { $c->stash->{field_errors}->{category} = _('Please choose a category'); } - $report->council( $first_council->{id} ); + $report->bodies_str( $first_body->id ); } elsif ( $report->category ) { - # FIXME All contacts were fetched in setup_categories_and_councils, + # FIXME All contacts were fetched in setup_categories_and_bodies, # so can this DB call also be avoided? my @contacts = $c-> # model('DB::Contact') # ->not_deleted # ->search( { - area_id => [ keys %$councils ], + body_id => [ keys %$bodies ], category => $report->category } )->all; unless ( @contacts ) { $c->stash->{field_errors}->{category} = _('Please choose a category'); - $report->council( -1 ); + $report->bodies_str( -1 ); return 1; } - # construct the council string: - # 'x,x' - x are council IDs that have this category - # 'x,x|y,y' - x are council IDs that have this category, y council IDs with *no* contact - my $council_string = join( ',', map { $_->area_id } @contacts ); - $council_string .= - '|' . join( ',', @{ $c->stash->{missing_details_councils} } ) - if $council_string && @{ $c->stash->{missing_details_councils} }; - $report->council($council_string); + # construct the bodies string: + # 'x,x' - x are body IDs that have this category + # 'x,x|y' - x are body IDs that have this category, y body IDs with *no* contact + my $body_string = join( ',', map { $_->body_id } @contacts ); + $body_string .= + '|' . join( ',', map { $_->id } @{ $c->stash->{missing_details_bodies} } ) + if $body_string && @{ $c->stash->{missing_details_bodies} }; + $report->bodies_str($body_string); my @extra = (); my $metas = $contacts[0]->extra; @@ -892,13 +909,13 @@ sub process_report : Private { $report->non_public( 1 ); } - $c->cobrand->process_extras( $c, $contacts[0]->area_id, \@extra ); + $c->cobrand->process_extras( $c, $contacts[0]->body_id, \@extra ); if ( @extra ) { $c->stash->{report_meta} = { map { $_->{name} => $_ } @extra }; $report->extra( \@extra ); } - } elsif ( @{ $c->stash->{area_ids_to_list} } ) { + } elsif ( @{ $c->stash->{bodies_to_list} } ) { # There was an area with categories, but we've not been given one. Bail. $c->stash->{field_errors}->{category} = _('Please choose a category'); @@ -907,7 +924,7 @@ sub process_report : Private { # If we're here, we've been submitted somewhere # where we have no contact information at all. - $report->council( -1 ); + $report->bodies_str( -1 ); } @@ -936,6 +953,22 @@ sub check_for_errors : Private { $c->stash->{field_errors} ||= {}; my %field_errors = $c->cobrand->report_check_for_errors( $c ); + # Zurich, we don't care about title or name + # There is no title, and name is optional + if ( $c->cobrand->moniker eq 'zurich' ) { + delete $field_errors{title}; + 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 # if they're got the login details wrong when signing in then @@ -996,8 +1029,10 @@ sub save_user_and_report : Private { $c->log->info($report->user->id . ' created for this report'); } elsif ( $c->user && $report->user->id == $c->user->id ) { + # Logged in and matches, so instantly confirm (except Zurich, with no confirmation) $report->user->update(); - $report->confirm; + $report->confirm + unless $c->cobrand->moniker eq 'zurich'; $c->log->info($report->user->id . ' is logged in for this report'); } else { @@ -1022,7 +1057,7 @@ sub save_user_and_report : Private { $report->category( _('Other') ) unless $report->category; # Set unknown to DB unknown - $report->council( undef ) if $report->council eq '-1'; + $report->bodies_str( undef ) if $report->bodies_str eq '-1'; # if there is a Message Manager message ID, pass it back to the client view if ($c->cobrand->moniker eq 'fixmybarangay' && $c->req->param('external_source_id')=~/^\d+$/) { @@ -1103,7 +1138,7 @@ sub redirect_or_confirm_creation : Private { $c->forward( 'create_reporter_alert' ); my $report_uri; - if ( $c->cobrand->moniker eq 'fixmybarangay' && $c->user->from_council && $c->stash->{external_source_id}) { + if ( $c->cobrand->moniker eq 'fixmybarangay' && $c->user->from_body && $c->stash->{external_source_id}) { $report_uri = $c->uri_for( '/report', $report->id, undef, { external_source_id => $c->stash->{external_source_id} } ); } elsif ( $c->cobrand->never_confirm_reports && $report->non_public ) { $c->log->info( 'cobrand was set to always confirm reports and report was non public, success page showed'); @@ -1113,6 +1148,9 @@ sub redirect_or_confirm_creation : Private { $report_uri = $c->cobrand->base_url_for_report( $report ) . $report->url; } $c->log->info($report->user->id . ' was logged in, redirecting to /report/' . $report->id); + if ( $c->sessionid ) { + $c->flash->{created_report} = 'loggedin'; + } $c->res->redirect($report_uri); $c->detach; } @@ -1128,7 +1166,7 @@ sub redirect_or_confirm_creation : Private { } ); $c->stash->{token_url} = $c->uri_for_email( '/P', $token->token ); $c->send_email( 'problem-confirm.txt', { - to => [ [ $report->user->email, $report->name ] ], + to => [ $report->name ? [ $report->user->email, $report->name ] : $report->user->email ], } ); # tell user that they've been sent an email diff --git a/perllib/FixMyStreet/App/Controller/Report/Update.pm b/perllib/FixMyStreet/App/Controller/Report/Update.pm index da4cc33ca..bc79cafd3 100644 --- a/perllib/FixMyStreet/App/Controller/Report/Update.pm +++ b/perllib/FixMyStreet/App/Controller/Report/Update.pm @@ -76,7 +76,7 @@ sub update_problem : Private { $problem->state('confirmed'); } - if ( $c->cobrand->can_support_problems && $c->user && $c->user->from_council && $c->req->param('external_source_id') ) { + if ( $c->cobrand->can_support_problems && $c->user && $c->user->from_body && $c->req->param('external_source_id') ) { $problem->interest_count( \'interest_count + 1' ); } @@ -201,14 +201,29 @@ sub process_update : Private { if ( $params{state} ) { $params{state} = 'fixed - council' - if $params{state} eq 'fixed' && $c->user && $c->user->belongs_to_council( $update->problem->council ); + if $params{state} eq 'fixed' && $c->user && $c->user->belongs_to_body( $update->problem->bodies_str ); $update->problem_state( $params{state} ); + } else { + # we do this so we have a record of the state of the problem at this point + # for use when sending updates to external parties + if ( $update->mark_fixed ) { + $update->problem_state( 'fixed - user' ); + } elsif ( $update->mark_open ) { + $update->problem_state( 'confirmed' ); + # if there is not state param and neither of the above conditions apply + # then we are not changing the state of the problem so can use the current + # problem state + } else { + my $problem = $c->stash->{problem} || $update->problem; + $update->problem_state( $problem->state ); + } } + my @extra; # Next function fills this, but we don't need it here. # This is just so that the error checkign for these extra fields runs. # TODO Use extra here as it is used on reports. - $c->cobrand->process_extras( $c, $update->problem->council, \@extra ); + $c->cobrand->process_extras( $c, $update->problem->bodies_str, \@extra ); if ( $c->req->param('fms_extra_title') ) { my %extras = (); @@ -246,10 +261,11 @@ sub check_for_errors : Private { # they have to be an authority user to update the state if ( $c->req->param('state') ) { my $error = 0; - $error = 1 unless $c->user && $c->user->belongs_to_council( $c->stash->{update}->problem->council ); + $error = 1 unless $c->user && $c->user->belongs_to_body( $c->stash->{update}->problem->bodies_str ); my $state = $c->req->param('state'); - $error = 1 unless ( grep { $state eq $_ } ( qw/confirmed closed fixed investigating planned/, 'in progress', 'fixed', 'fixed - user', 'fixed - council' ) ); + $state = 'fixed - council' if $state eq 'fixed'; + $error = 1 unless ( grep { $state eq $_ } ( FixMyStreet::DB::Result::Problem->council_states() ) ); if ( $error ) { $c->stash->{errors} ||= []; @@ -296,7 +312,14 @@ sub save_update : Private { my $update = $c->stash->{update}; - if ( !$update->user->in_storage ) { + if ( $c->cobrand->never_confirm_updates ) { + if ( $update->user->in_storage() ) { + $update->user->update(); + } else { + $update->user->insert(); + } + $update->confirm(); + } elsif ( !$update->user->in_storage ) { # User does not exist. # Store changes in token for when token is validated. $c->stash->{token_data} = { @@ -354,6 +377,7 @@ sub redirect_or_confirm_creation : Private { $c->forward( 'signup_for_alerts' ); my $report_uri = $c->cobrand->base_url_for_report( $update->problem ) . $update->problem->url; + $c->flash->{comment_created} = 1; $c->res->redirect($report_uri); $c->detach; } diff --git a/perllib/FixMyStreet/App/Controller/Reports.pm b/perllib/FixMyStreet/App/Controller/Reports.pm index ec41dc17f..7e0cccc7b 100644 --- a/perllib/FixMyStreet/App/Controller/Reports.pm +++ b/perllib/FixMyStreet/App/Controller/Reports.pm @@ -5,6 +5,7 @@ use namespace::autoclean; use File::Slurp; use List::MoreUtils qw(zip); use POSIX qw(strcoll); +use RABX; use mySociety::MaPit; BEGIN { extends 'Catalyst::Controller'; } @@ -30,34 +31,31 @@ Show the summary page of all reports. sub index : Path : Args(0) { my ( $self, $c ) = @_; - # Fetch all areas of the types we're interested in - my $areas_info; - eval { - my $area_types = $c->cobrand->area_types; - $areas_info = mySociety::MaPit::call('areas', $area_types, - min_generation => $c->cobrand->area_min_generation + # Zurich goes straight to map page, with all reports + if ( $c->cobrand->moniker eq 'zurich' ) { + $c->forward( 'load_and_group_problems' ); + my $pins = $c->stash->{pins}; + $c->stash->{page} = 'reports'; + FixMyStreet::Map::display_map( + $c, + latitude => @$pins ? $pins->[0]{latitude} : 0, + longitude => @$pins ? $pins->[0]{longitude} : 0, + area => 274456, + pins => $pins, + any_zoom => 1, ); - }; - if ($@) { - $c->stash->{message} = _("Unable to look up areas in MaPit. Please try again later.") . ' ' . - sprintf(_('The error was: %s'), $@); - $c->stash->{template} = 'errors/generic.html'; - return; + return 1; } - # For each area, add its link and perhaps alter its name if we need to for - # places with the same name. - foreach (values %$areas_info) { - $_->{url} = $c->uri_for( '/reports/' . $c->cobrand->short_name( $_, $areas_info ) ); - if ($_->{parent_area} && $_->{url} =~ /,|%2C/) { - $_->{name} .= ', ' . $areas_info->{$_->{parent_area}}{name}; - } + if ( my $body = $c->cobrand->all_reports_single_body ) { + $c->stash->{body} = $body; + $c->detach( 'redirect_body' ); } - $c->stash->{areas_info} = $areas_info; - my @keys = sort { strcoll($areas_info->{$a}{name}, $areas_info->{$b}{name}) } keys %$areas_info; - @keys = $c->cobrand->filter_all_council_ids_list( @keys ); - $c->stash->{areas_info_sorted} = [ map { $areas_info->{$_} } @keys ]; + # Fetch all areas of the types we're interested in + my @bodies = $c->model('DB::Body')->all; + @bodies = sort { strcoll($a->name, $b->name) } @bodies; + $c->stash->{bodies} = \@bodies; eval { my $data = File::Slurp::read_file( @@ -99,97 +97,165 @@ Show the summary page for a particular ward. =cut sub ward : Path : Args(2) { - my ( $self, $c, $council, $ward ) = @_; + my ( $self, $c, $body, $ward ) = @_; - $c->forward( 'body_check', [ $council ] ); + $c->forward( 'body_check', [ $body ] ); $c->forward( 'ward_check', [ $ward ] ) if $ward; - $c->forward( 'load_parent' ); - $c->forward( 'check_canonical_url', [ $council ] ); + $c->forward( 'check_canonical_url', [ $body ] ); $c->forward( 'load_and_group_problems' ); - my $council_short = $c->cobrand->short_name( $c->stash->{council}, $c->stash->{areas_info} ); - $c->stash->{rss_url} = '/rss/reports/' . $council_short; + my $body_short = $c->cobrand->short_name( $c->stash->{body} ); + $c->stash->{rss_url} = '/rss/reports/' . $body_short; $c->stash->{rss_url} .= '/' . $c->cobrand->short_name( $c->stash->{ward} ) if $c->stash->{ward}; - $c->stash->{council_url} = '/reports/' . $council_short; + $c->stash->{body_url} = '/reports/' . $body_short; $c->stash->{stats} = $c->cobrand->get_report_stats(); my $pins = $c->stash->{pins}; $c->stash->{page} = 'reports'; # So the map knows to make clickable pins - FixMyStreet::Map::display_map( - $c, + my %map_params = ( latitude => @$pins ? $pins->[0]{latitude} : 0, longitude => @$pins ? $pins->[0]{longitude} : 0, - area => $c->stash->{ward} ? $c->stash->{ward}->{id} : $c->stash->{council}->{id}, - pins => $pins, + area => $c->stash->{ward} ? $c->stash->{ward}->{id} : [ keys %{$c->stash->{body}->areas} ], any_zoom => 1, ); + if ( $c->cobrand->moniker eq 'emptyhomes' ) { + FixMyStreet::Map::display_map( + $c, %map_params, latitude => 0, longitude => 0, + ); + } else { + FixMyStreet::Map::display_map( + $c, %map_params, pins => $pins, + ); + } $c->cobrand->tweak_all_reports_map( $c ); # List of wards - # Ignore external_body special council thing - unless ($c->stash->{ward} || !$c->stash->{council}->{id}) { - my $children = mySociety::MaPit::call('area/children', [ $c->stash->{council}->{id} ], + if ( !$c->stash->{ward} && $c->stash->{body}->id && $c->stash->{body}->body_areas->first ) { + my $children = mySociety::MaPit::call('area/children', [ $c->stash->{body}->body_areas->first->area_id ], type => $c->cobrand->area_types_children, ); - foreach (values %$children) { - $_->{url} = $c->uri_for( $c->stash->{council_url} - . '/' . $c->cobrand->short_name( $_ ) - ); + unless ($children->{error}) { + foreach (values %$children) { + $_->{url} = $c->uri_for( $c->stash->{body_url} + . '/' . $c->cobrand->short_name( $_ ) + ); + } + $c->stash->{children} = $children; } - $c->stash->{children} = $children; } } -sub rss_body : Regex('^rss/(reports|area)$') : Args(1) { - my ( $self, $c, $body ) = @_; - $c->detach( 'rss_ward', [ $body ] ); +sub rss_area : Path('/rss/area') : Args(1) { + my ( $self, $c, $area ) = @_; + $c->detach( 'rss_area_ward', [ $area ] ); } -sub rss_ward : Regex('^rss/(reports|area)$') : Args(2) { - my ( $self, $c, $council, $ward ) = @_; - - my ( $rss ) = $c->req->captures->[0]; +sub rss_area_ward : Path('/rss/area') : Args(2) { + my ( $self, $c, $area, $ward ) = @_; $c->stash->{rss} = 1; - $c->forward( 'body_check', [ $council ] ); - $c->forward( 'ward_check', [ $ward ] ) if $ward; + # area_check + + $area =~ s/\+/ /g; + $area =~ s/\.html//; - if ($rss eq 'area' && $c->stash->{council}{type} ne 'DIS' && $c->stash->{council}{type} ne 'CTY') { - # Two possibilites are the same for one-tier councils, so redirect one to the other - $c->detach( 'redirect_area' ); + # XXX Currently body/area overlaps here are a bit muddy. + # We're checking an area here, but this function is currently doing that. + return if $c->cobrand->reports_body_check( $c, $area ); + + # If we're passed an ID number (don't think this is used anywhere, it + # certainly shouldn't be), just look that up on mapit and redirect + if ($area =~ /^\d+$/) { + my $council = mySociety::MaPit::call('area', $area); + $c->detach( 'redirect_index') if $council->{error}; + $c->stash->{body} = $council; + $c->detach( 'redirect_body' ); + } + + # We must now have a string to check on mapit + my $areas = mySociety::MaPit::call( 'areas', $area, + type => $c->cobrand->area_types, + ); + + if (keys %$areas == 1) { + ($c->stash->{area}) = values %$areas; + } else { + foreach (keys %$areas) { + if (lc($areas->{$_}->{name}) eq lc($area) || $areas->{$_}->{name} =~ /^\Q$area\E (Borough|City|District|County) Council$/i) { + $c->stash->{area} = $areas->{$_}; + } + } } - my $url = $c->cobrand->short_name( $c->stash->{council} ); - $url .= '/' . $c->cobrand->short_name( $c->stash->{ward} ) if $c->stash->{ward}; + $c->detach( 'redirect_index' ) unless $c->stash->{area}; + + $c->forward( 'ward_check', [ $ward ] ) if $ward; + + my $url = $c->cobrand->short_name( $c->stash->{area} ); + $url .= '/' . $c->cobrand->short_name( $c->stash->{ward} ) if $c->stash->{ward}; $c->stash->{qs} = "/$url"; - if ( $rss eq 'area' && $c->stash->{ward} ) { + if ($c->stash->{area}{type} ne 'DIS' && $c->stash->{area}{type} ne 'CTY') { + # UK-specific types - two possibilites are the same for one-tier councils, so redirect one to the other + # With bodies, this should presumably redirect if only one body covers + # the area, and then it will need that body's name (rather than + # assuming as now it is the same as the area) + $c->stash->{body} = $c->stash->{area}; + $c->detach( 'redirect_body' ); + } + + $c->stash->{type} = 'area_problems'; + if ( $c->stash->{ward} ) { # All problems within a particular ward - $c->stash->{type} = 'area_problems'; $c->stash->{title_params} = { NAME => $c->stash->{ward}{name} }; $c->stash->{db_params} = [ $c->stash->{ward}->{id} ]; - } elsif ( $rss eq 'area' ) { - # Problems within a particular council - $c->stash->{type} = 'area_problems'; - $c->stash->{title_params} = { NAME => $c->stash->{council}{name} }; - $c->stash->{db_params} = [ $c->stash->{council}->{id} ]; - } elsif ($c->stash->{ward}) { + } else { + # Problems within a particular area + $c->stash->{title_params} = { NAME => $c->stash->{area}->{name} }; + $c->stash->{db_params} = [ $c->stash->{area}->{id} ]; + } + + # Send on to the RSS generation + $c->forward( '/rss/output' ); + +} + +sub rss_body : Path('/rss/reports') : Args(1) { + my ( $self, $c, $body ) = @_; + $c->detach( 'rss_ward', [ $body ] ); +} + +sub rss_ward : Path('/rss/reports') : Args(2) { + my ( $self, $c, $body, $ward ) = @_; + + $c->stash->{rss} = 1; + + $c->forward( 'body_check', [ $body ] ); + $c->forward( 'ward_check', [ $ward ] ) if $ward; + + my $url = $c->cobrand->short_name( $c->stash->{body} ); + $url .= '/' . $c->cobrand->short_name( $c->stash->{ward} ) if $c->stash->{ward}; + $c->stash->{qs} = "/$url"; + + if ($c->stash->{ward}) { # Problems sent to a council, restricted to a ward $c->stash->{type} = 'ward_problems'; - $c->stash->{title_params} = { COUNCIL => $c->stash->{council}{name}, WARD => $c->stash->{ward}{name} }; - $c->stash->{db_params} = [ $c->stash->{council}->{id}, $c->stash->{ward}->{id} ]; + $c->stash->{title_params} = { COUNCIL => $c->stash->{body}->name, WARD => $c->stash->{ward}{name} }; + $c->stash->{db_params} = [ $c->stash->{body}->id, $c->stash->{ward}->{id} ]; } else { # Problems sent to a council $c->stash->{type} = 'council_problems'; - $c->stash->{title_params} = { COUNCIL => $c->stash->{council}{name} }; - $c->stash->{db_params} = [ $c->stash->{council}->{id}, $c->stash->{council}->{id} ]; + $c->stash->{title_params} = { COUNCIL => $c->stash->{body}->name }; + # XXX This looks up in both bodies_str and areas, but is only using body ID. + # This will not work properly in any install where body IDs are not === area IDs. + $c->stash->{db_params} = [ $c->stash->{body}->id, $c->stash->{body}->id ]; } # Send on to the RSS generation @@ -198,60 +264,47 @@ sub rss_ward : Regex('^rss/(reports|area)$') : Args(2) { =head2 body_check -This action checks the council or external_body name (or code) given in a URI -exists, is valid and so on. If it is, it stores the area or body in the stash, -otherwise it redirects to the all reports page. +This action checks the body name (or code) given in a URI exists, is valid and +so on. If it is, it stores the body in the stash, otherwise it redirects to the +all reports page. =cut sub body_check : Private { - my ( $self, $c, $q_council ) = @_; + my ( $self, $c, $q_body ) = @_; - $q_council =~ s/\+/ /g; - $q_council =~ s/\.html//; + $q_body =~ s/\+/ /g; + $q_body =~ s/\.html//; # Check cobrand specific incantations - e.g. ONS codes for UK, # Oslo/ kommunes sharing a name in Norway - return if $c->cobrand->reports_body_check( $c, $q_council ); + return if $c->cobrand->reports_body_check( $c, $q_body ); # If we're passed an ID number (don't think this is used anywhere, it # certainly shouldn't be), just look that up on MaPit and redirect - if ($q_council =~ /^\d+$/) { - my $council = mySociety::MaPit::call('area', $q_council); - $c->detach( 'redirect_index') if $council->{error}; - $c->stash->{council} = $council; - $c->detach( 'redirect_area' ); - } - - if ( $c->cobrand->reports_by_body ) { - my $problem = $c->cobrand->problems->search({ 'lower(me.external_body)' => lc $q_council }, { columns => [ 'external_body' ], rows => 1 })->single; - if ( $problem ) { - # If external_body, put as a council with ID 0 for the moment. - $c->stash->{council} = { id => 0, name => $problem->external_body }; - return; - } + if ($q_body =~ /^\d+$/) { + my $area = mySociety::MaPit::call('area', $q_body); + $c->detach( 'redirect_index') if $area->{error}; + $c->stash->{body} = $area; + $c->detach( 'redirect_body' ); } # We must now have a string to check - my $area_types = $c->cobrand->area_types; - my $areas = mySociety::MaPit::call( 'areas', $q_council, - type => $area_types, - min_generation => $c->cobrand->area_min_generation - ); + my @bodies = $c->model('DB::Body')->search( { name => { -like => "$q_body%" } } )->all; - if (keys %$areas == 1) { - ($c->stash->{council}) = values %$areas; + if (@bodies == 1) { + $c->stash->{body} = $bodies[0]; return; } else { - foreach (keys %$areas) { - if (lc($areas->{$_}->{name}) eq lc($q_council) || $areas->{$_}->{name} =~ /^\Q$q_council\E (Borough|City|District|County) Council$/i) { - $c->stash->{council} = $areas->{$_}; + foreach (@bodies) { + if (lc($_->name) eq lc($q_body) || $_->name =~ /^\Q$q_body\E (Borough|City|District|County) Council$/i) { + $c->stash->{body} = $_; return; } } } - # No result, bad council name. + # No result, bad body name. $c->detach( 'redirect_index' ); } @@ -259,7 +312,7 @@ sub body_check : Private { This action checks the ward name from a URI exists and is part of the right parent, already found with body_check. It either stores the ward Area if -okay, or redirects to the council page if bad. +okay, or redirects to the body page if bad. =cut @@ -270,48 +323,45 @@ sub ward_check : Private { $ward =~ s/\.html//; $ward =~ s{_}{/}g; - my $council = $c->stash->{council}; + # Could be from RSS area, or body... + my $parent_id; + if ( $c->stash->{body} ) { + $parent_id = $c->stash->{body}->body_areas->first; + $c->detach( 'redirect_body' ) unless $parent_id; + $parent_id = $parent_id->area_id; + } else { + $parent_id = $c->stash->{area}->{id}; + } my $qw = mySociety::MaPit::call('areas', $ward, type => $c->cobrand->area_types_children, - min_generation => $c->cobrand->area_min_generation ); foreach my $area (sort { $a->{name} cmp $b->{name} } values %$qw) { - if ($area->{parent_area} == $council->{id}) { + if ($area->{parent_area} == $parent_id) { $c->stash->{ward} = $area; return; } } # Given a false ward name - $c->detach( 'redirect_area' ); -} - -sub load_parent : Private { - my ( $self, $c ) = @_; - - my $council = $c->stash->{council}; - my $areas_info; - if ($council->{parent_area}) { - $c->stash->{areas_info} = mySociety::MaPit::call('areas', [ $council->{id}, $council->{parent_area} ]) - } else { - $c->stash->{areas_info} = { $council->{id} => $council }; - } + $c->stash->{body} = $c->stash->{area} + unless $c->stash->{body}; + $c->detach( 'redirect_body' ); } =head2 check_canonical_url -Given an already found (case-insensitively) council, check what URL +Given an already found (case-insensitively) body, check what URL we are at and redirect accordingly if different. =cut sub check_canonical_url : Private { - my ( $self, $c, $q_council ) = @_; + my ( $self, $c, $q_body ) = @_; - my $council_short = $c->cobrand->short_name( $c->stash->{council}, $c->stash->{areas_info} ); - my $url_short = URI::Escape::uri_escape_utf8($q_council); + my $body_short = $c->cobrand->short_name( $c->stash->{body} ); + my $url_short = URI::Escape::uri_escape_utf8($q_body); $url_short =~ s/%2B/+/g; - $c->detach( 'redirect_area' ) unless $council_short eq $url_short; + $c->detach( 'redirect_body' ) unless $body_short eq $url_short; } sub load_and_group_problems : Private { @@ -325,69 +375,54 @@ sub load_and_group_problems : Private { }; if ($c->stash->{ward}) { $where->{areas} = { 'like', '%,' . $c->stash->{ward}->{id} . ',%' }; - $where->{council} = [ + $where->{bodies_str} = [ undef, - $c->stash->{council}->{id}, - { 'like', $c->stash->{council}->{id} . ',%' }, - { 'like', '%,' . $c->stash->{council}->{id} }, + $c->stash->{body}->id, + { 'like', $c->stash->{body}->id . ',%' }, + { 'like', '%,' . $c->stash->{body}->id }, ]; - } elsif ($c->stash->{council} && $c->stash->{council}->{id} == 0) { - # A proxy for an external_body - $where->{'lower(external_body)'} = lc $c->stash->{council}->{name}; - } elsif ($c->stash->{council}) { - $where->{areas} = { 'like', '%,' . $c->stash->{council}->{id} . ',%' }; - $where->{council} = [ - undef, - $c->stash->{council}->{id}, - { 'like', $c->stash->{council}->{id} . ',%' }, - { 'like', '%,' . $c->stash->{council}->{id} }, + } elsif ($c->stash->{body}) { + # XXX FixMyStreet used to have the following line so that reports not + # currently sent anywhere could still be listed in the appropriate + # (body/area), as they were the same. Now they're not, not sure if + # there's a way to do this easily. + #$where->{areas} = { 'like', '%,' . $c->stash->{body}->id . ',%' }; + $where->{bodies_str} = [ + # undef, + $c->stash->{body}->id, + { 'like', $c->stash->{body}->id . ',%' }, + { 'like', '%,' . $c->stash->{body}->id }, ]; } my $problems = $c->cobrand->problems->search( $where, { - columns => [ - 'id', 'council', 'state', 'areas', 'latitude', 'longitude', 'title', 'cobrand', - #{ duration => { extract => "epoch from current_timestamp-lastupdate" } }, - #{ age => { extract => "epoch from current_timestamp-confirmed" } }, - { confirmed => { extract => 'epoch from confirmed' } }, - { whensent => { extract => 'epoch from whensent' } }, - { lastupdate => { extract => 'epoch from lastupdate' } }, - { photo => 'photo is not null' }, - ], order_by => { -desc => 'lastupdate' }, rows => $c->cobrand->reports_per_page, } )->page( $page ); $c->stash->{pager} = $problems->pager; - $problems = $problems->cursor; # Raw DB cursor for speed my ( %problems, @pins ); - my $re_councils = join('|', keys %{$c->stash->{areas_info}}); - my @cols = ( 'id', 'council', 'state', 'areas', 'latitude', 'longitude', 'title', 'cobrand', 'confirmed', 'whensent', 'lastupdate', 'photo' ); - while ( my @problem = $problems->next ) { - my %problem = zip @cols, @problem; - $problem{is_fixed} = FixMyStreet::DB::Result::Problem->fixed_states()->{$problem{state}}; - $c->log->debug( $problem{'cobrand'} . ', cobrand is ' . $c->cobrand->moniker ); - if ( !$c->stash->{council}->{id} ) { - # An external_body entry - add_row( \%problem, 0, \%problems, \@pins ); + while ( my $problem = $problems->next ) { + $c->log->debug( $problem->cobrand . ', cobrand is ' . $c->cobrand->moniker ); + if ( !$c->stash->{body} ) { + add_row( $c, $problem, 0, \%problems, \@pins ); next; } - if ( !$problem{council} ) { - # Problem was not sent to any council, add to possible councils - $problem{councils} = 0; - while ($problem{areas} =~ /,($re_councils)(?=,)/g) { - add_row( \%problem, $1, \%problems, \@pins ); + if ( !$problem->bodies_str ) { + # Problem was not sent to any body, add to all possible areas XXX + my $a = $problem->areas; # Store, as otherwise is looked up every iteration. + while ($a =~ /,(\d+)(?=,)/g) { + add_row( $c, $problem, $1, \%problems, \@pins ); } } else { - # Add to councils it was sent to - (my $council = $problem{council}) =~ s/\|.*$//; - my @council = split( /,/, $council ); - $problem{councils} = scalar @council; - foreach ( @council ) { - next if $_ != $c->stash->{council}->{id}; - add_row( \%problem, $_, \%problems, \@pins ); + # Add to bodies it was sent to + # XXX Assumes body ID matches "council ID" + my $bodies = $problem->bodies_str_ids; + foreach ( @$bodies ) { + next if $_ != $c->stash->{body}->id; + add_row( $c, $problem, $_, \%problems, \@pins ); } } } @@ -406,26 +441,26 @@ sub redirect_index : Private { $c->res->redirect( $c->uri_for($url) ); } -sub redirect_area : Private { +sub redirect_body : Private { my ( $self, $c ) = @_; my $url = ''; $url .= "/rss" if $c->stash->{rss}; $url .= '/reports'; - $url .= '/' . $c->cobrand->short_name( $c->stash->{council}, $c->stash->{areas_info} ); + $url .= '/' . $c->cobrand->short_name( $c->stash->{body} ); $url .= '/' . $c->cobrand->short_name( $c->stash->{ward} ) if $c->stash->{ward}; $c->res->redirect( $c->uri_for($url) ); } sub add_row { - my ( $problem, $council, $problems, $pins ) = @_; - push @{$problems->{$council}}, $problem; + my ( $c, $problem, $body, $problems, $pins ) = @_; + push @{$problems->{$body}}, $problem; push @$pins, { - latitude => $problem->{latitude}, - longitude => $problem->{longitude}, - colour => 'yellow', # FixMyStreet::DB::Result::Problem->fixed_states()->{$problem->{state}} ? 'green' : 'red', - id => $problem->{id}, - title => $problem->{title}, + latitude => $problem->latitude, + longitude => $problem->longitude, + colour => $c->cobrand->pin_colour( $problem, 'reports' ), + id => $problem->id, + title => $problem->title_safe, }; } diff --git a/perllib/FixMyStreet/App/Controller/Rss.pm b/perllib/FixMyStreet/App/Controller/Rss.pm index baaa3b927..ed47f6f87 100755 --- a/perllib/FixMyStreet/App/Controller/Rss.pm +++ b/perllib/FixMyStreet/App/Controller/Rss.pm @@ -241,6 +241,15 @@ sub add_row : Private { $row->{name} = 'anonymous' if $row->{anonymous} || !$row->{name}; my $pubDate; + if ($row->{created}) { + $row->{created} =~ /^(\d\d\d\d)-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)/; + $pubDate = mySociety::Locale::in_gb_locale { + strftime("%a, %d %b %Y %H:%M:%S %z", $6, $5, $4, $3, $2-1, $1-1900, -1, -1, 0) + }; + $row->{created} = strftime("%e %B", $6, $5, $4, $3, $2-1, $1-1900, -1, -1, 0); + $row->{created} =~ s/^\s+//; + $row->{created} =~ s/^(\d+)/ordinal($1)/e if $c->stash->{lang_code} eq 'en-gb'; + } if ($row->{confirmed}) { $row->{confirmed} =~ /^(\d\d\d\d)-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)/; $pubDate = mySociety::Locale::in_gb_locale { @@ -257,7 +266,7 @@ sub add_row : Private { my $hashref_restriction = $c->cobrand->site_restriction; my $base_url = $c->cobrand->base_url; - if ( $hashref_restriction && $hashref_restriction->{council} && $row->{council} && $row->{council} ne $hashref_restriction->{council} ) { + if ( $hashref_restriction && $hashref_restriction->{bodies_str} && $row->{bodies_str} && $row->{bodies_str} ne $hashref_restriction->{bodies_str} ) { $base_url = $c->config->{BASE_URL}; } my $url = $base_url . $link; @@ -271,7 +280,7 @@ sub add_row : Private { $item{pubDate} = $pubDate if $pubDate; $item{category} = $row->{category} if $row->{category}; - if ($c->cobrand->allow_photo_display && $row->{photo}) { + if ($c->cobrand->allow_photo_display($row) && $row->{photo}) { my $key = $alert_type->item_table eq 'comment' ? 'c/' : ''; $item{description} .= ent("\n<br><img src=\"". $base_url . "/photo/$key$row->{id}.jpeg\">"); } diff --git a/perllib/FixMyStreet/App/Controller/Static.pm b/perllib/FixMyStreet/App/Controller/Static.pm index 723f0f2e1..40e2431ea 100755 --- a/perllib/FixMyStreet/App/Controller/Static.pm +++ b/perllib/FixMyStreet/App/Controller/Static.pm @@ -19,7 +19,10 @@ template depending on language, will need extending at some point. sub about : Global : Args(0) { my ( $self, $c ) = @_; - # don't need to do anything here - should just pass through. + + my $lang_code = $c->stash->{lang_code}; + my $template = "static/about-$lang_code.html"; + $c->stash->{template} = $template; } sub privacy : Global : Args(0) { @@ -54,6 +57,10 @@ sub iphone : Global : Args(0) { my ( $self, $c ) = @_; } +sub council : Global : Args(0) { + my ( $self, $c ) = @_; +} + __PACKAGE__->meta->make_immutable; 1; diff --git a/perllib/FixMyStreet/App/Controller/Tokens.pm b/perllib/FixMyStreet/App/Controller/Tokens.pm index 03dc69b00..44cb2429d 100644 --- a/perllib/FixMyStreet/App/Controller/Tokens.pm +++ b/perllib/FixMyStreet/App/Controller/Tokens.pm @@ -53,6 +53,25 @@ sub confirm_problem : Path('/P') { return; } + # For Zurich, email confirmation simply sets a flag, it does not change the + # problem state, log in, or anything else + if ($c->cobrand->moniker eq 'zurich') { + my $extra = { %{ $problem->extra || {} } }; + $extra->{email_confirmed} = 1; + $problem->update( { + extra => $extra, + confirmed => \'ms_current_timestamp()', + } ); + + if ( ref($data) && ( $data->{name} || $data->{password} ) ) { + $problem->user->name( $data->{name} ) if $data->{name}; + $problem->user->phone( $data->{phone} ) if $data->{phone}; + $problem->user->update; + } + + return 1; + } + # We have a problem - confirm it if needed! my $old_state = $problem->state; $problem->update( @@ -83,6 +102,7 @@ sub confirm_problem : Path('/P') { $c->res->redirect($report_uri); } + $c->stash->{created_report} = 'fromemail'; return 1; } @@ -176,7 +196,12 @@ sub confirm_update : Path('/C') { $c->authenticate( { email => $comment->user->email }, 'no_password' ); $c->set_session_cookie_expire(0); - $c->forward('/report/update/confirm'); + if ( $comment->confirmed ) { + my $report_uri = $c->cobrand->base_url_for_report( $comment->problem ) . $comment->problem->url; + $c->res->redirect($report_uri); + } else { + $c->forward('/report/update/confirm'); + } return 1; } diff --git a/perllib/FixMyStreet/App/View/Web.pm b/perllib/FixMyStreet/App/View/Web.pm index 42878be37..e4aafe951 100644 --- a/perllib/FixMyStreet/App/View/Web.pm +++ b/perllib/FixMyStreet/App/View/Web.pm @@ -18,8 +18,8 @@ __PACKAGE__->config( ENCODING => 'utf8', render_die => 1, expose_methods => [ - 'loc', 'nget', 'tprintf', 'display_crosssell_advert', 'prettify_epoch', - 'add_links', 'version', + 'loc', 'nget', 'tprintf', 'display_crosssell_advert', 'prettify_dt', + 'add_links', 'version', 'decode', ], FILTERS => { escape_js => \&escape_js, @@ -92,20 +92,20 @@ sub display_crosssell_advert { return CrossSell::display_advert( $c, $email, $name, %data ); } -=head2 Utils::prettify_epoch +=head2 Utils::prettify_dt - [% pretty = prettify_epoch( $epoch, $short_bool ) %] + [% pretty = prettify_dt( $dt, $short_bool ) %] -Return a pretty version of the epoch. +Return a pretty version of the DateTime object. $short_bool = 1; # 16:02, 29 Mar 2011 $short_bool = 0; # 16:02, Tuesday 29 March 2011 =cut -sub prettify_epoch { +sub prettify_dt { my ( $self, $c, $epoch, $short_bool ) = @_; - return Utils::prettify_epoch( $epoch, $short_bool ); + return Utils::prettify_dt( $epoch, $short_bool ); } =head2 add_links @@ -121,10 +121,16 @@ sub add_links { $text =~ s/\r//g; $text = ent($text); - $text =~ s{(https?://[^\s]+)}{<a href="$1">$1</a>}g; + $text =~ s{(https?://)([^\s]+)}{"<a href='$1$2'>$1" . _space_slash($2) . '</a>'}ge; return $text; } +sub _space_slash { + my $t = shift; + $t =~ s{/(?!$)}{/ }g; + return $t; +} + =head2 escape_js Used to escape strings that are going to be put inside JavaScript. @@ -175,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/Bromley.pm b/perllib/FixMyStreet/Cobrand/Bromley.pm index c33135673..f648225ae 100644 --- a/perllib/FixMyStreet/Cobrand/Bromley.pm +++ b/perllib/FixMyStreet/Cobrand/Bromley.pm @@ -29,9 +29,8 @@ sub disambiguate_location { my $town = 'Bromley'; # Bing turns High St Bromley into Bromley High St which is in # Bromley by Bow. - if ( $string =~ /high\+st/i ) { - $town .= ', BR1'; - } + $town .= ', BR1' if $string =~ /^high\s+st(reet)?$/i; + $town = '' if $string =~ /orpington/i; return { %{ $self->SUPER::disambiguate_location() }, town => $town, @@ -80,9 +79,7 @@ sub process_extras { sub contact_email { my $self = shift; - my $type = shift || ''; - return join( '@', 'info', 'bromley.gov.uk' ) if $type eq 'contact'; - return $self->next::method(); + return join( '@', 'info', 'bromley.gov.uk' ); } sub contact_name { 'Bromley Council (do not reply)'; } @@ -100,6 +97,9 @@ sub tweak_all_reports_map { } } +sub title_list { + return ["MR", "MISS", "MRS", "MS", "DR"]; +} 1; diff --git a/perllib/FixMyStreet/Cobrand/Default.pm b/perllib/FixMyStreet/Cobrand/Default.pm index 34f9d0b1d..c8bae90e6 100644 --- a/perllib/FixMyStreet/Cobrand/Default.pm +++ b/perllib/FixMyStreet/Cobrand/Default.pm @@ -4,6 +4,7 @@ use base 'FixMyStreet::Cobrand::Base'; use strict; use warnings; use FixMyStreet; +use FixMyStreet::Geocode::Bing; use Encode; use URI; use Digest::MD5 qw(md5_hex); @@ -294,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'); @@ -363,7 +367,10 @@ Return a boolean indicating whether the cobrand allows photo display =cut -sub allow_photo_display { return 1; } +sub allow_photo_display { + my ( $self, $r ) = @_; + return 1; +} =head2 allow_update_reporting @@ -475,23 +482,23 @@ sub format_postcode { return $postcode; } -=head2 council_check +=head2 area_check -Paramters are COUNCILS, QUERY, CONTEXT. Return a boolean indicating whether -COUNCILS pass any extra checks. CONTEXT is where we are on the site. +Paramters are AREAS, QUERY, CONTEXT. Return a boolean indicating whether +AREAS pass any extra checks. CONTEXT is where we are on the site. =cut -sub council_check { return ( 1, '' ); } +sub area_check { return ( 1, '' ); } -=head2 all_councils_report +=head2 all_reports_single_body Return a boolean indicating whether the cobrand displays a report of all councils =cut -sub all_councils_report { 1 } +sub all_reports_single_body { 0 } =head2 ask_ever_reported @@ -525,7 +532,7 @@ Show the problem creation graph in the admin interface sub admin_show_creation_graph { 1 } -=head2 area_types, area_min_generation +=head2 area_types The MaPit types this site handles @@ -533,7 +540,6 @@ The MaPit types this site handles sub area_types { FixMyStreet->config('MAPIT_TYPES') || [ 'ZZZ' ] } sub area_types_children { FixMyStreet->config('MAPIT_TYPES_CHILDREN') || [] } -sub area_min_generation { '' } =head2 contact_name, contact_email @@ -555,39 +561,36 @@ sub email_host { return 1; } -=item remove_redundant_councils +=item remove_redundant_areas -Remove councils whose reports go to another council +Remove areas whose reports go to another area (XXX) =cut -sub remove_redundant_councils { - my $self = shift; - my $all_councils = shift; -} - -=item filter_all_council_ids_list - -Removes any council IDs that we don't need from an array and returns the -filtered array +sub remove_redundant_areas { + my $self = shift; + my $all_areas = shift; -=cut + my $whitelist = FixMyStreet->config('MAPIT_ID_WHITELIST'); + return unless $whitelist && ref $whitelist eq 'ARRAY' && @$whitelist; -sub filter_all_council_ids_list { - my $self = shift; - return @_; + my %whitelist = map { $_ => 1 } @$whitelist; + foreach (keys %$all_areas) { + delete $all_areas->{$_} unless $whitelist{$_}; + } } =item short_name -Remove extra information from council names for tidy URIs +Remove extra information from body names for tidy URIs =cut sub short_name { my $self = shift; - my ($area, $info) = @_; - my $name = $area->{name}; + my ($area) = @_; + + my $name = $area->{name} || $area->name; $name = URI::Escape::uri_escape_utf8($name); $name =~ s/%20/+/g; return $name; @@ -600,6 +603,13 @@ For UK sub-cobrands, to specify various alternations needed for them. =cut sub is_council { 0; } +=item is_two_tier + +For UK sub-cobrands, to specify various alternations needed for them. + +=cut +sub is_two_tier { 0; } + =item council_rss_alert_options Generate a set of options for council rss alerts. @@ -607,10 +617,10 @@ Generate a set of options for council rss alerts. =cut sub council_rss_alert_options { - my ( $self, $all_councils, $c ) = @_; + my ( $self, $all_areas, $c ) = @_; my ( @options, @reported_to_options ); - foreach (values %$all_councils) { + foreach (values %$all_areas) { $_->{short_name} = $self->short_name( $_ ); ( $_->{id_name} = $_->{short_name} ) =~ tr/+/_/; push @options, { @@ -654,31 +664,26 @@ Get stats to display on the council reports page sub get_report_stats { return 0; } -sub get_council_sender { - my ( $self, $area_id, $area_info, $category ) = @_; - - my $send_method; - - my $council_config = FixMyStreet::App->model("DB::Open311conf")->search( { area_id => $area_id } )->first; - $send_method = $council_config->send_method if $council_config; +sub get_body_sender { + my ( $self, $body, $category ) = @_; - if ( $council_config && $council_config->can_be_devolved ) { + if ( $body->can_be_devolved ) { # look up via category - my $config = FixMyStreet::App->model("DB::Contact")->search( { area_id => $area_id, category => $category } )->first; + my $config = FixMyStreet::App->model("DB::Contact")->search( { body_id => $body->id, category => $category } )->first; if ( $config->send_method ) { return { method => $config->send_method, config => $config }; } else { - return { method => $send_method, config => $council_config }; + return { method => $body->send_method, config => $body }; } - } elsif ( $send_method ) { - return { method => $send_method, config => $council_config }; + } elsif ( $body->send_method ) { + return { method => $body->send_method, config => $body }; } - return $self->_fallback_council_sender( $area_id, $area_info, $category ); + return $self->_fallback_body_sender( $body, $category ); } -sub _fallback_council_sender { - my ( $self, $area_id, $area_info, $category ) = @_; +sub _fallback_body_sender { + my ( $self, $body, $category ) = @_; return { method => 'Email' }; }; @@ -689,9 +694,17 @@ sub example_places { return $e; } +=head2 title_list + +Returns an arrayref of possible titles for a person to send to the mobile app. + +=cut + +sub title_list { return undef; } + =head2 only_authed_can_create -If true, only users with the from_council flag set are able to create reports. +If true, only users with the from_body flag set are able to create reports. =cut @@ -717,11 +730,23 @@ Returns the colour of pin to be used for a particular report =cut sub pin_colour { my ( $self, $p, $context ) = @_; - #return 'green' if time() - $p->confirmed_local->epoch < 7 * 24 * 60 * 60; - return 'yellow' if $context eq 'around'; + #return 'green' if time() - $p->confirmed->epoch < 7 * 24 * 60 * 60; + return 'yellow' if $context eq 'around' || $context eq 'reports' || $context eq 'report'; return $p->is_fixed ? 'green' : 'red'; } +=head2 path_to_pin_icons + +Used to override the path for the pin icons if you want to add custom pin icons +for your cobrand. + +=cut + +sub path_to_pin_icons { + return '/i/'; +} + + =head2 tweak_all_reports_map Used to tweak the display settings of the map on the all reports pages. @@ -738,14 +763,15 @@ sub default_map_zoom { undef }; sub users_can_hide { return 0; } -=head2 reports_by_body +=head2 default_show_name -Can /reports show reports indexed by external_body? This is a temporary measure -until the contacts/area/body handling is rewritten to be better. +Returns true if the show name checkbox should be ticked by default. =cut -sub reports_by_body { 0; } +sub default_show_name { + 1; +} =head2 report_check_for_errors @@ -792,5 +818,65 @@ a name key sub anonymous_account { undef; } +=head2 show_unconfirmed_reports + +Whether reports in state 'unconfirmed' should still be shown on the public site. +(They're always included in the admin interface.) + +=cut + +sub show_unconfirmed_reports { + 0; +} + +=head2 never_confirm_updates + +If true then we never send an email to confirm an update + +=cut + +sub never_confirm_updates { 0; } + +sub include_time_in_update_alerts { 0; } + +=head2 prettify_dt + + my $date = $c->prettify_dt( $datetime ); + +Takes a datetime object and returns a string representation. + +=cut + +sub prettify_dt { + my $self = shift; + my $dt = shift; + + return Utils::prettify_dt( $dt, 1 ); +} + +=head2 extra_contact_validation + +Perform any extra validation on the contact form. + +=cut + +sub extra_contact_validation { (); } + +sub problem_as_hashref { + my $self = shift; + my $problem = shift; + my $ctx = shift; + + return $problem->as_hashref( $ctx ); +} + +sub updates_as_hashref { + my $self = shift; + my $problem = shift; + my $ctx = shift; + + return {}; +} + 1; diff --git a/perllib/FixMyStreet/Cobrand/EmptyHomes.pm b/perllib/FixMyStreet/Cobrand/EmptyHomes.pm index c3d13448d..47ea023d9 100644 --- a/perllib/FixMyStreet/Cobrand/EmptyHomes.pm +++ b/perllib/FixMyStreet/Cobrand/EmptyHomes.pm @@ -62,6 +62,20 @@ to be resized then return 0; sub default_photo_resize { return '195x'; } +sub short_name { + my $self = shift; + my ($area) = @_; + + my $name = $area->{name} || $area->name; + $name =~ s/ (Borough|City|District|County) Council$//; + $name =~ s/ Council$//; + $name =~ s/ & / and /; + $name =~ s{/}{_}g; + $name = URI::Escape::uri_escape_utf8($name); + $name =~ s/%20/-/g; + return $name; +} + =item council_rss_alert_options Generate a set of options for council rss alerts. @@ -107,5 +121,426 @@ sub council_rss_alert_options { return ( \@options, @reported_to_options ? \@reported_to_options : undef ); } +sub process_extras { + my $self = shift; + my $ctx = shift; + my $body_id = shift; + my $extra = shift; + + my $value = $ctx->request->params->{address} || ''; + $ctx->stash->{field_errors}->{address} = _('This information is required') + unless $value; + $extra->{address} = $value; +} + +sub front_stats_data { + my ( $self ) = @_; + my $key = "recent_new"; + my $result = Memcached::get($key); + unless ($result) { + $result = $self->problems->search( + { state => [ FixMyStreet::DB::Result::Problem->visible_states() ] } + )->count; + foreach my $v (values %{$self->old_site_stats}) { + $result += $v; + } + Memcached::set($key, $result, 3600); + } + return $result; +} + +# A record of the number of reports from the Channel 4 site and other old data +sub old_site_stats { + return { + 2223 => 95, + 2238 => 82, + 2245 => 54, + 2248 => 31, + 2250 => 132, + 2253 => 15, + 2255 => 25, + 2256 => 8, + 2257 => 3, + 2258 => 14, + 2259 => 5, + 2260 => 22, + 2261 => 12, + 2262 => 21, + 2263 => 14, + 2264 => 1, + 2267 => 1, + 2271 => 13, + 2272 => 7, + 2273 => 13, + 2274 => 7, + 2275 => 15, + 2276 => 14, + 2277 => 10, + 2278 => 7, + 2279 => 23, + 2280 => 16, + 2281 => 25, + 2282 => 14, + 2283 => 10, + 2284 => 22, + 2285 => 25, + 2286 => 32, + 2287 => 13, + 2288 => 13, + 2289 => 16, + 2290 => 18, + 2291 => 1, + 2292 => 9, + 2293 => 15, + 2294 => 16, + 2295 => 12, + 2296 => 4, + 2299 => 2, + 2300 => 1, + 2304 => 10, + 2305 => 17, + 2306 => 6, + 2307 => 11, + 2308 => 17, + 2309 => 9, + 2310 => 6, + 2311 => 9, + 2312 => 26, + 2313 => 2, + 2314 => 34, + 2315 => 18, + 2316 => 13, + 2317 => 17, + 2318 => 7, + 2319 => 14, + 2320 => 4, + 2321 => 20, + 2322 => 7, + 2323 => 10, + 2324 => 7, + 2325 => 15, + 2326 => 12, + 2327 => 25, + 2328 => 23, + 2329 => 11, + 2330 => 4, + 2331 => 29, + 2332 => 12, + 2333 => 7, + 2334 => 5, + 2335 => 16, + 2336 => 7, + 2337 => 7, + 2338 => 2, + 2339 => 12, + 2340 => 2, + 2341 => 7, + 2342 => 14, + 2343 => 20, + 2344 => 13, + 2345 => 17, + 2346 => 6, + 2347 => 4, + 2348 => 6, + 2349 => 18, + 2350 => 13, + 2351 => 11, + 2352 => 24, + 2353 => 10, + 2354 => 20, + 2355 => 14, + 2356 => 13, + 2357 => 14, + 2358 => 8, + 2359 => 6, + 2360 => 10, + 2361 => 36, + 2362 => 17, + 2363 => 8, + 2364 => 7, + 2365 => 8, + 2366 => 26, + 2367 => 19, + 2368 => 20, + 2369 => 8, + 2370 => 14, + 2371 => 79, + 2372 => 10, + 2373 => 5, + 2374 => 4, + 2375 => 12, + 2376 => 10, + 2377 => 24, + 2378 => 9, + 2379 => 8, + 2380 => 25, + 2381 => 13, + 2382 => 11, + 2383 => 16, + 2384 => 18, + 2385 => 12, + 2386 => 18, + 2387 => 5, + 2388 => 8, + 2389 => 12, + 2390 => 11, + 2391 => 23, + 2392 => 11, + 2393 => 16, + 2394 => 9, + 2395 => 27, + 2396 => 8, + 2397 => 27, + 2398 => 14, + 2402 => 1, + 2403 => 18, + 2404 => 14, + 2405 => 7, + 2406 => 9, + 2407 => 12, + 2408 => 3, + 2409 => 8, + 2410 => 23, + 2411 => 27, + 2412 => 9, + 2413 => 20, + 2414 => 96, + 2415 => 11, + 2416 => 20, + 2417 => 18, + 2418 => 24, + 2419 => 18, + 2420 => 7, + 2421 => 29, + 2427 => 7, + 2428 => 15, + 2429 => 18, + 2430 => 32, + 2431 => 9, + 2432 => 17, + 2433 => 8, + 2434 => 10, + 2435 => 14, + 2436 => 13, + 2437 => 11, + 2438 => 5, + 2439 => 4, + 2440 => 23, + 2441 => 8, + 2442 => 18, + 2443 => 12, + 2444 => 3, + 2445 => 8, + 2446 => 31, + 2447 => 15, + 2448 => 3, + 2449 => 12, + 2450 => 11, + 2451 => 8, + 2452 => 20, + 2453 => 25, + 2454 => 8, + 2455 => 6, + 2456 => 24, + 2457 => 6, + 2458 => 10, + 2459 => 15, + 2460 => 17, + 2461 => 20, + 2462 => 12, + 2463 => 16, + 2464 => 5, + 2465 => 14, + 2466 => 20, + 2467 => 14, + 2468 => 12, + 2469 => 4, + 2470 => 1, + 2471 => 1, + 2474 => 9, + 2475 => 12, + 2476 => 11, + 2477 => 9, + 2478 => 10, + 2479 => 21, + 2480 => 26, + 2481 => 30, + 2482 => 38, + 2483 => 46, + 2484 => 63, + 2485 => 7, + 2486 => 14, + 2487 => 16, + 2488 => 14, + 2489 => 39, + 2490 => 112, + 2491 => 79, + 2492 => 137, + 2493 => 55, + 2494 => 18, + 2495 => 41, + 2496 => 41, + 2497 => 22, + 2498 => 26, + 2499 => 46, + 2500 => 62, + 2501 => 90, + 2502 => 47, + 2503 => 32, + 2504 => 33, + 2505 => 47, + 2506 => 56, + 2507 => 26, + 2508 => 48, + 2509 => 47, + 2510 => 16, + 2511 => 6, + 2512 => 4, + 2513 => 41, + 2514 => 138, + 2515 => 48, + 2516 => 65, + 2517 => 35, + 2518 => 40, + 2519 => 31, + 2520 => 27, + 2521 => 25, + 2522 => 34, + 2523 => 27, + 2524 => 47, + 2525 => 22, + 2526 => 125, + 2527 => 126, + 2528 => 93, + 2529 => 23, + 2530 => 28, + 2531 => 24, + 2532 => 46, + 2533 => 22, + 2534 => 24, + 2535 => 27, + 2536 => 44, + 2537 => 54, + 2538 => 17, + 2539 => 13, + 2540 => 29, + 2541 => 15, + 2542 => 19, + 2543 => 14, + 2544 => 34, + 2545 => 30, + 2546 => 38, + 2547 => 32, + 2548 => 22, + 2549 => 37, + 2550 => 9, + 2551 => 41, + 2552 => 17, + 2553 => 36, + 2554 => 10, + 2555 => 20, + 2556 => 13, + 2557 => 19, + 2558 => 13, + 2559 => 23, + 2560 => 13, + 2561 => 62, + 2562 => 29, + 2563 => 31, + 2564 => 34, + 2565 => 57, + 2566 => 16, + 2567 => 22, + 2568 => 40, + 2569 => 5, + 2570 => 38, + 2571 => 17, + 2572 => 9, + 2573 => 12, + 2574 => 10, + 2575 => 16, + 2576 => 2, + 2577 => 28, + 2578 => 37, + 2579 => 79, + 2580 => 17, + 2581 => 734, + 2582 => 11, + 2583 => 23, + 2584 => 16, + 2585 => 4, + 2586 => 33, + 2587 => 3, + 2588 => 22, + 2589 => 19, + 2590 => 14, + 2591 => 9, + 2592 => 19, + 2593 => 11, + 2594 => 14, + 2595 => 13, + 2596 => 21, + 2597 => 10, + 2598 => 16, + 2599 => 26, + 2600 => 1, + 2601 => 19, + 2602 => 23, + 2603 => 12, + 2604 => 31, + 2605 => 30, + 2606 => 5, + 2607 => 32, + 2608 => 14, + 2609 => 27, + 2610 => 15, + 2611 => 20, + 2612 => 22, + 2613 => 20, + 2614 => 97, + 2615 => 29, + 2616 => 6, + 2617 => 34, + 2618 => 16, + 2619 => 25, + 2620 => 12, + 2621 => 29, + 2622 => 18, + 2623 => 12, + 2624 => 58, + 2625 => 54, + 2626 => 15, + 2627 => 1, + 2629 => 17, + 2630 => 22, + 2636 => 13, + 2637 => 13, + 2638 => 25, + 2639 => 57, + 2640 => 15, + 2641 => 11, + 2642 => 14, + 2643 => 38, + 2644 => 19, + 2645 => 6, + 2646 => 1, + 2647 => 16, + 2648 => 25, + 2649 => 38, + 2650 => 12, + 2651 => 78, + 2652 => 12, + 2654 => 16, + 2655 => 13, + 2656 => 15, + 2657 => 44, + 2658 => 53, + 16869 => 73, + 21068 => 44, + 21069 => 57, + 21070 => 20, + }; +} + 1; diff --git a/perllib/FixMyStreet/Cobrand/FiksGataMi.pm b/perllib/FixMyStreet/Cobrand/FiksGataMi.pm index 6bec115dd..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. @@ -100,33 +100,26 @@ sub guess_road_operator { return ''; } -sub remove_redundant_councils { +sub remove_redundant_areas { my $self = shift; - my $all_councils = shift; + my $all_areas = shift; # Oslo is both a kommune and a fylke, we only want to show it once - delete $all_councils->{301} # - if $all_councils->{3}; -} - -sub filter_all_council_ids_list { - my $self = shift; - my @all_councils_ids = @_; - - # as above we only want to show Oslo once - return grep { $_ != 301 } @all_councils_ids; + delete $all_areas->{301} + if $all_areas->{3}; } sub short_name { my $self = shift; my ($area, $info) = @_; - if ($area->{name} =~ /^(Os|Nes|V\xe5ler|Sande|B\xf8|Her\xf8y)$/) { + my $name = $area->{name} || $area->name; + + if ($name =~ /^(Os|Nes|V\xe5ler|Sande|B\xf8|Her\xf8y)$/) { my $parent = $info->{$area->{parent_area}}->{name}; - return URI::Escape::uri_escape_utf8("$area->{name}, $parent"); + return URI::Escape::uri_escape_utf8("$name, $parent"); } - my $name = $area->{name}; $name =~ s/ & / and /; $name = URI::Escape::uri_escape_utf8($name); $name =~ s/%20/+/g; diff --git a/perllib/FixMyStreet/Cobrand/FixMindelo.pm b/perllib/FixMyStreet/Cobrand/FixMindelo.pm new file mode 100644 index 000000000..fd3a55c6c --- /dev/null +++ b/perllib/FixMyStreet/Cobrand/FixMindelo.pm @@ -0,0 +1,27 @@ +package FixMyStreet::Cobrand::FixMindelo; +use base 'FixMyStreet::Cobrand::Default'; + +use strict; +use warnings; + +sub site_title { return 'FixMindelo'; } + +sub country { + return 'CV'; +} + +sub languages { [ 'pt-cv,Portuguese,pt_CV', 'en-gb,English,en_GB' ] } +sub language_override { 'pt-cv' } + +sub disambiguate_location { + return { + country => 'cv', + bing_country => 'Cape Verde', + }; +} + +# let staff hide reports +sub users_can_hide { 1 } + +1; + diff --git a/perllib/FixMyStreet/Cobrand/FixMyBarangay.pm b/perllib/FixMyStreet/Cobrand/FixMyBarangay.pm index c53b8e971..c7535f856 100644 --- a/perllib/FixMyStreet/Cobrand/FixMyBarangay.pm +++ b/perllib/FixMyStreet/Cobrand/FixMyBarangay.pm @@ -33,6 +33,9 @@ sub only_authed_can_create { return 1; } +# effectively allows barangay staff to hide reports +sub council_id { return '1,2' ; } + sub areas_on_around { return [ 1, 2 ]; } @@ -41,7 +44,20 @@ sub can_support_problems { return 1; } -sub reports_by_body { 1 } +sub default_show_name { + my $self = shift; + + return 0 if $self->{c}->user->from_council; + return 1; +} + +# makes no sense to send questionnaires since FMB's reporters are mostly staff +sub send_questionnaires { + return 0; +} + +# let staff hide reports in their own barangay +sub users_can_hide { 1 } 1; diff --git a/perllib/FixMyStreet/Cobrand/FixMyStreet.pm b/perllib/FixMyStreet/Cobrand/FixMyStreet.pm index 04c137674..ce62e206e 100644 --- a/perllib/FixMyStreet/Cobrand/FixMyStreet.pm +++ b/perllib/FixMyStreet/Cobrand/FixMyStreet.pm @@ -1,13 +1,42 @@ package FixMyStreet::Cobrand::FixMyStreet; use base 'FixMyStreet::Cobrand::UK'; +use constant COUNCIL_ID_BROMLEY => 2482; + # FixMyStreet should return all cobrands sub restriction { return {}; } sub admin_base_url { - return 'https://secure.mysociety.org/admin/bci/'; + return 'https://secure.mysociety.org/admin/bci'; +} + +sub title_list { + my $self = shift; + my $areas = shift; + my $first_area = ( values %$areas )[0]; + + return ["MR", "MISS", "MRS", "MS", "DR"] if $first_area->{id} eq COUNCIL_ID_BROMLEY; + return undef; +} + +sub extra_contact_validation { + my $self = shift; + my $c = shift; + + my %errors; + + $c->stash->{dest} = $c->req->param('dest'); + + $errors{dest} = "Please enter who your message is for" + unless $c->req->param('dest'); + + if ( $c->req->param('dest') eq 'council' || $c->req->param('dest') eq 'update' ) { + $errors{not_for_us} = 1; + } + + return %errors; } 1; diff --git a/perllib/FixMyStreet/Cobrand/FixaMinGata.pm b/perllib/FixMyStreet/Cobrand/FixaMinGata.pm new file mode 100644 index 000000000..f17f7716f --- /dev/null +++ b/perllib/FixMyStreet/Cobrand/FixaMinGata.pm @@ -0,0 +1,272 @@ +package FixMyStreet::Cobrand::FixaMinGata; +use base 'FixMyStreet::Cobrand::Default'; + +use strict; +use warnings; + +use Carp; +use mySociety::MaPit; +use FixMyStreet::Geocode::FixaMinGata; +use DateTime; + + +DateTime->DefaultLocale('sv_SE'); + +sub site_title { + my ($self) = @_; + return 'Fixa Min Gata'; +} + +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 'SE'; +} + +sub languages { [ 'en-gb,English,en_GB', 'sv,Swedish,sv_SE' ] } +sub language_override { 'sv' } + +sub enter_postcode_text { + my ( $self ) = @_; + return _('Enter a nearby postcode, or street name and area'); +} + +# Is also adding language parameter +sub disambiguate_location { + return { + lang => 'sv', + country => 'se', # Is this the right format? /Rikard + }; +} + +sub area_types { + [ 'KOM' ]; +} + +sub admin_base_url { + return 'http://www.fixamingata.se/admin/'; +} + +# If lat/lon are present in the URL, OpenLayers will use that to centre the map. +# Need to specify a zoom to stop it defaulting to null/0. +sub uri { + my ( $self, $uri ) = @_; + + $uri->query_param( zoom => 3 ) + if $uri->query_param('lat') && !$uri->query_param('zoom'); + + return $uri; +} + +sub geocode_postcode { + my ( $self, $s ) = @_; + # Most people write Swedish postcodes like this: + #+ XXX XX, so let's remove the space + # Is this the right place to do this? //Rikard + # This is the right place! // Jonas + $s =~ s/\ //g; # Rikard, remove space in postcode + if ($s =~ /^\d{5}$/) { + my $location = mySociety::MaPit::call('postcode', $s); + if ($location->{error}) { + return { + error => $location->{code} =~ /^4/ + ? _('That postcode was not recognised, sorry.') + : $location->{error} + }; + } + return { + latitude => $location->{wgs84_lat}, + longitude => $location->{wgs84_lon}, + }; + } + return {}; +} + +# Vad gör den här funktionen? Är "Sverige" rätt här? +sub geocoded_string_check { + my ( $self, $s ) = @_; + return 1 if $s =~ /, Sverige/; + return 0; +} + +sub find_closest { + my ( $self, $latitude, $longitude ) = @_; + return FixMyStreet::Geocode::OSM::closest_road_text( $self, $latitude, $longitude ); +} + +# Used by send-reports, calling find_closest, calling OSM geocoding +sub guess_road_operator { + my ( $self, $inforef ) = @_; + + my $highway = $inforef->{highway} || "unknown"; + my $refs = $inforef->{ref} || "unknown"; + return "Trafikverket" + if $highway eq "trunk" || $highway eq "primary"; + + for my $ref (split(/;/, $refs)) { + return "Trafikverket" + if $ref =~ m/E ?\d+/ || $ref =~ m/Fv\d+/i; + } + return ''; +} + +sub remove_redundant_councils { + my $self = shift; + my $all_councils = shift; + + # Oslo is both a kommune and a fylke, we only want to show it once + # Jag tror inte detta är applicerbart på Sverige ;-) //Rikard + #delete $all_councils->{301} # + # if $all_councils->{3}; +} + +sub filter_all_council_ids_list { + my $self = shift; + my @all_councils_ids = @_; + + # as above we only want to show Oslo once + # Rikard kommenterar ut detta. + # return grep { $_ != 301 } @all_councils_ids; + # Rikard: + return @all_councils_ids; # Är detta rätt? //Rikard +} + +sub short_name { + my $self = shift; + my ($area, $info) = @_; + + # Rikard kommenterar ut följande tills vidare... + #if ($area->{name} =~ /^(Os|Nes|V\xe5ler|Sande|B\xf8|Her\xf8y)$/) { + # my $parent = $info->{$area->{parent_area}}->{name}; + # return URI::Escape::uri_escape_utf8("$area->{name}, $parent"); + #} + + my $name = $area->{name}; + $name =~ s/ & / and /; + $name = URI::Escape::uri_escape_utf8($name); + $name =~ s/%20/+/g; + return $name; +} + +# Vad ska vi göra för svenska förhållanden här??? //Rikard +sub council_rss_alert_options { + my $self = shift; + my $all_councils = shift; + my $c = shift; + + my ( @options, @reported_to_options, $fylke, $kommune ); + + foreach ( values %$all_councils ) { + if ( $_->{type} eq 'NKO' ) { + $kommune = $_; + } + else { + $fylke = $_; + } + } + + if ( $fylke->{id} == 3 ) { # Oslo + my $short_name = $self->short_name($fylke, $all_councils); + ( my $id_name = $short_name ) =~ tr/+/_/; + + push @options, + { + type => 'council', + id => sprintf( 'council:%s:%s', $fylke->{id}, $id_name ), + rss_text => + sprintf( _('RSS feed of problems within %s'), $fylke->{name} ), + text => sprintf( _('Problems within %s'), $fylke->{name} ), + uri => $c->uri_for( '/rss/reports', $short_name ), + }; + } + else { + my $short_kommune_name = $self->short_name($kommune, $all_councils); + ( my $id_kommune_name = $short_kommune_name ) =~ tr/+/_/; + + my $short_fylke_name = $self->short_name($fylke, $all_councils); + ( my $id_fylke_name = $short_fylke_name ) =~ tr/+/_/; + + push @options, + { + type => 'area', + id => sprintf( 'area:%s:%s', $kommune->{id}, $id_kommune_name ), + rss_text => + sprintf( _('RSS feed of %s'), $kommune->{name} ), + text => $kommune->{name}, + uri => $c->uri_for( '/rss/area', $short_kommune_name ), + }, + { + type => 'area', + id => sprintf( 'area:%s:%s', $fylke->{id}, $id_fylke_name ), + rss_text => + sprintf( _('RSS feed of %s'), $fylke->{name} ), + text => $fylke->{name}, + uri => $c->uri_for( '/rss/area', $short_fylke_name ), + }; + + push @reported_to_options, + { + type => 'council', + id => sprintf( 'council:%s:%s', $kommune->{id}, $id_kommune_name ), + rss_text => + sprintf( _('RSS feed of %s'), $kommune->{name} ), + text => $kommune->{name}, + uri => $c->uri_for( '/rss/reports', $short_kommune_name ), + }, + { + type => 'council', + id => sprintf( 'council:%s:%s', $fylke->{id}, $id_fylke_name ), + rss_text => + sprintf( _('RSS feed of %s'), $fylke->{name} ), + text => $fylke->{name}, + uri => $c->uri_for( '/rss/reports/', $short_fylke_name ), + }; + } + + return ( + \@options, @reported_to_options + ? \@reported_to_options + : undef + ); + +} + +# Vad ska vi göra för svenska förhållanden här??? //Rikard +sub reports_council_check { + my ( $self, $c, $council ) = @_; + + if ($council eq 'Oslo') { + + # There are two Oslos (kommune and fylke), we only want one of them. + $c->stash->{council} = mySociety::MaPit::call('area', 3); + return 1; + + } elsif ($council =~ /,/) { + + # Some kommunes have the same name, use the fylke name to work out which. + my ($kommune, $fylke) = split /\s*,\s*/, $council; + my $area_types = $c->cobrand->area_types; + my $areas_k = mySociety::MaPit::call('areas', $kommune, type => $area_types); + my $areas_f = mySociety::MaPit::call('areas', $fylke, type => $area_types); + if (keys %$areas_f == 1) { + ($fylke) = values %$areas_f; + foreach (values %$areas_k) { + if ($_->{name} eq $kommune && $_->{parent_area} == $fylke->{id}) { + $c->stash->{council} = $_; + return 1; + } + } + } + # If we're here, we've been given a bad name. + $c->detach( 'redirect_index' ); + + } +} + +1; 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/LichfieldDC.pm b/perllib/FixMyStreet/Cobrand/LichfieldDC.pm index b3dbad089..6a534fc18 100644 --- a/perllib/FixMyStreet/Cobrand/LichfieldDC.pm +++ b/perllib/FixMyStreet/Cobrand/LichfieldDC.pm @@ -8,11 +8,12 @@ sub council_id { return 2434; } sub council_area { return 'Lichfield district'; } sub council_name { return 'Lichfield District Council'; } sub council_url { return 'lichfielddc'; } +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 { council => { like => '%2434%' } }; + return { bodies_str => { like => '%2434%' } }; } # FIXME - need to double check this is all correct @@ -26,17 +27,6 @@ sub disambiguate_location { }; } -# If we ever link to a county problem report, needs to be to main FixMyStreet -sub base_url_for_report { - my ( $self, $report ) = @_; - my %councils = map { $_ => 1 } @{$report->councils}; - if ( $councils{2434} ) { - return $self->base_url; - } else { - return FixMyStreet->config('BASE_URL'); - } -} - sub map_type { return 'OSM'; } diff --git a/perllib/FixMyStreet/Cobrand/Oxfordshire.pm b/perllib/FixMyStreet/Cobrand/Oxfordshire.pm new file mode 100644 index 000000000..33611b219 --- /dev/null +++ b/perllib/FixMyStreet/Cobrand/Oxfordshire.pm @@ -0,0 +1,65 @@ +package FixMyStreet::Cobrand::Oxfordshire; +use base 'FixMyStreet::Cobrand::UKCouncils'; + +use strict; +use warnings; + +sub council_id { return 2237; } +sub council_area { return 'Oxfordshire'; } +sub council_name { return 'Oxfordshire County Council'; } +sub council_url { return 'oxfordshire'; } +sub is_two_tier { return 1; } + +sub base_url { + return FixMyStreet->config('BASE_URL') if FixMyStreet->config('STAGING_SITE'); + return 'http://fixmystreet.oxfordshire.gov.uk'; +} + +# 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 => '%2237%' } }; +} + +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 enter_postcode_text { + my ($self) = @_; + return 'Enter an Oxfordshire postcode, or street name and area'; +} + +sub disambiguate_location { + my $self = shift; + my $string = shift; + return { + %{ $self->SUPER::disambiguate_location() }, + town => 'Oxfordshire', + centre => '51.765765,-1.322324', + span => '0.709058,0.849434', + bounds => [ 51.459413, -1.719500, 52.168471, -0.870066 ], + }; +} + +sub example_places { + return ( 'OX20 1SZ', 'Park St, Woodstock' ); +} + +# 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; } + +sub default_show_name { 0 } + +1; + diff --git a/perllib/FixMyStreet/Cobrand/SeeSomething.pm b/perllib/FixMyStreet/Cobrand/SeeSomething.pm index e445ff435..88d5f6b78 100644 --- a/perllib/FixMyStreet/Cobrand/SeeSomething.pm +++ b/perllib/FixMyStreet/Cobrand/SeeSomething.pm @@ -14,12 +14,12 @@ sub site_title { return 'See Something, Say Something'; } sub site_restriction { my $self = shift; - return { council => { IN => $self->council_id } }; + return { bodies_str => { IN => $self->council_id } }; } sub problems_clause { my $self = shift; - return { council => { IN => $self->council_id } }; + return { bodies_str => { IN => $self->council_id } }; } sub path_to_web_templates { @@ -30,10 +30,10 @@ sub path_to_web_templates { ]; } -sub council_check { +sub area_check { my ( $self, $params, $context ) = @_; - my $councils = $params->{all_councils}; + my $councils = $params->{all_areas}; my $council_match = grep { $councils->{$_} } @{ $self->council_id }; if ($council_match) { @@ -78,7 +78,7 @@ sub never_confirm_reports { 1; } sub allow_anonymous_reports { 1; } -sub anonymous_account { return { name => 'anon user', email => 'anon@example.com' }; } +sub anonymous_account { return { name => 'Anonymous Submission', email => FixMyStreet->config('DO_NOT_REPLY_EMAIL') }; } sub admin_pages { my $self = shift; diff --git a/perllib/FixMyStreet/Cobrand/Southampton.pm b/perllib/FixMyStreet/Cobrand/Southampton.pm index b7374149a..4e068a8c3 100644 --- a/perllib/FixMyStreet/Cobrand/Southampton.pm +++ b/perllib/FixMyStreet/Cobrand/Southampton.pm @@ -20,5 +20,7 @@ sub disambiguate_location { }; } +sub send_questionnaires { return 0; } + 1; diff --git a/perllib/FixMyStreet/Cobrand/Stevenage.pm b/perllib/FixMyStreet/Cobrand/Stevenage.pm index f7a9ccd84..560baba37 100644 --- a/perllib/FixMyStreet/Cobrand/Stevenage.pm +++ b/perllib/FixMyStreet/Cobrand/Stevenage.pm @@ -8,6 +8,7 @@ sub council_id { return 2347; } sub council_area { return 'Stevenage'; } sub council_name { return 'Stevenage Council'; } sub council_url { return 'stevenage'; } +sub is_two_tier { return 1; } sub path_to_web_templates { my $self = shift; diff --git a/perllib/FixMyStreet/Cobrand/UK.pm b/perllib/FixMyStreet/Cobrand/UK.pm index 4eee1869e..4c94fb34d 100644 --- a/perllib/FixMyStreet/Cobrand/UK.pm +++ b/perllib/FixMyStreet/Cobrand/UK.pm @@ -1,6 +1,7 @@ package FixMyStreet::Cobrand::UK; use base 'FixMyStreet::Cobrand::Default'; +use mySociety::MaPit; use mySociety::VotingArea; sub path_to_web_templates { @@ -11,7 +12,6 @@ sub path_to_web_templates { sub country { return 'GB'; } sub area_types { [ 'DIS', 'LBO', 'MTD', 'UTA', 'CTY', 'COI', 'LGD' ] } sub area_types_children { $mySociety::VotingArea::council_child_types } -sub area_min_generation { 10 } sub enter_postcode_text { my ( $self ) = @_; @@ -31,8 +31,11 @@ sub disambiguate_location { }; } -sub _fallback_council_sender { - my ( $self, $area_id, $area_info, $category ) = @_; +sub _fallback_body_sender { + my ( $self, $body, $category ) = @_; + + my $first_area = $body->body_areas->first->area_id; + my $area_info = mySociety::MaPit::call('area', $first_area); return { method => 'London' } if $area_info->{type} eq 'LBO'; return { method => 'NI' } if $area_info->{type} eq 'LGD'; return { method => 'Email' }; @@ -41,11 +44,12 @@ sub _fallback_council_sender { sub process_extras { my $self = shift; my $ctx = shift; - my $area_id = shift; + my $body_id = shift; my $extra = shift; my $fields = shift || []; - if ( $area_id eq '2482' ) { + # XXX Hardcoded body ID matching mapit area ID + if ( $body_id eq '2482' ) { my @fields = ( 'fms_extra_title', @$fields ); for my $field ( @fields ) { my $value = $ctx->request->param( $field ); @@ -97,46 +101,32 @@ sub geocode_postcode { return {}; } -sub remove_redundant_councils { +sub remove_redundant_areas { my $self = shift; - my $all_councils = shift; - - # Ipswich & St Edmundsbury are responsible for everything in their - # areas, not Suffolk - delete $all_councils->{2241} - if $all_councils->{2446} # - || $all_councils->{2443}; + my $all_areas = shift; # Norwich is responsible for everything in its areas, not Norfolk - delete $all_councils->{2233} # - if $all_councils->{2391}; + delete $all_areas->{2233} # + if $all_areas->{2391}; } -sub filter_all_council_ids_list { +sub short_name { my $self = shift; - my @all_councils_ids = @_; + my ($area) = @_; - # Ignore the four council areas introduced because of generation 15 - # (where we put the new boundaries under the old IDs) - return grep { $_ < 141648 || $_ > 141651 } @all_councils_ids; -} + my $name = $area->{name} || $area->name; -sub short_name { - my $self = shift; - my ($area, $info) = @_; - # Special case Durham as it's the only place with two councils of the same name - return 'Durham+County' if $area->{name} eq 'Durham County Council'; - return 'Durham+City' if $area->{name} eq 'Durham City Council'; - - my $name = $area->{name}; - $name =~ s/ (Borough|City|District|County) Council$//; - $name =~ s/ Council$//; - $name =~ s/ & / and /; - $name =~ s{/}{_}g; - $name = URI::Escape::uri_escape_utf8($name); - $name =~ s/%20/+/g; - return $name; + # Special case Durham as it's the only place with two councils of the same name + return 'Durham+County' if $name eq 'Durham County Council'; + return 'Durham+City' if $name eq 'Durham City Council'; + $name =~ s/ (Borough|City|District|County) Council$//; + $name =~ s/ Council$//; + $name =~ s/ & / and /; + $name =~ s{/}{_}g; + $name = URI::Escape::uri_escape_utf8($name); + $name =~ s/%20/+/g; + return $name; } sub find_closest { @@ -174,11 +164,11 @@ sub reports_body_check { if (length($code) == 6) { my $council = mySociety::MaPit::call( 'area', $area->{parent_area} ); $c->stash->{ward} = $area; - $c->stash->{council} = $council; + $c->stash->{body} = $council; } else { - $c->stash->{council} = $area; + $c->stash->{body} = $area; } - $c->detach( 'redirect_area' ); + $c->detach( 'redirect_body' ); } # New ONS codes @@ -188,29 +178,30 @@ sub reports_body_check { if ($code =~ /^(E05|W05|S13)/) { my $council = mySociety::MaPit::call( 'area', $area->{parent_area} ); $c->stash->{ward} = $area; - $c->stash->{council} = $council; - $c->detach( 'redirect_area' ); + $c->stash->{body} = $council; + $c->detach( 'redirect_body' ); } elsif ($code =~ /^(W06|S12|E0[6-9]|E10)/) { - $c->stash->{council} = $area; - $c->detach( 'redirect_area' ); + $c->stash->{body} = $area; + $c->detach( 'redirect_body' ); } } + return; } sub council_rss_alert_options { my $self = shift; - my $all_councils = shift; - my $c = shift; + my $all_areas = shift; + my $c = shift; my %councils = map { $_ => 1 } @{$self->area_types}; - my $num_councils = scalar keys %$all_councils; + my $num_councils = scalar keys %$all_areas; my ( @options, @reported_to_options ); if ( $num_councils == 1 or $num_councils == 2 ) { my ($council, $ward); - foreach (values %$all_councils) { + foreach (values %$all_areas) { if ($councils{$_->{type}}) { $council = $_; $council->{short_name} = $self->short_name( $council ); @@ -249,7 +240,7 @@ sub council_rss_alert_options { } elsif ( $num_councils == 4 ) { # Two-tier council my ($county, $district, $c_ward, $d_ward); - foreach (values %$all_councils) { + foreach (values %$all_areas) { $_->{short_name} = $self->short_name( $_ ); ( $_->{id_name} = $_->{short_name} ) =~ tr/+/_/; if ($_->{type} eq 'CTY') { @@ -320,7 +311,7 @@ sub council_rss_alert_options { }; } else { - throw Error::Simple('An area with three tiers of council? Impossible! '. join('|',keys %$all_councils)); + throw Error::Simple('An area with three tiers of council? Impossible! '. join('|',keys %$all_areas)); } return ( \@options, @reported_to_options ? \@reported_to_options : undef ); diff --git a/perllib/FixMyStreet/Cobrand/UKCouncils.pm b/perllib/FixMyStreet/Cobrand/UKCouncils.pm index a9ebb1b3f..ec3423f35 100644 --- a/perllib/FixMyStreet/Cobrand/UKCouncils.pm +++ b/perllib/FixMyStreet/Cobrand/UKCouncils.pm @@ -13,7 +13,7 @@ sub is_council { sub site_restriction { my $self = shift; - return { council => sprintf('%d', $self->council_id) }; + return { bodies_str => sprintf('%d', $self->council_id) }; } sub site_key { my $self = shift; @@ -27,7 +27,7 @@ sub restriction { # Different function to site_restriction due to two-tier use sub problems_clause { my $self = shift; - return { council => sprintf('%d', $self->council_id) }; + return { bodies_str => sprintf('%d', $self->council_id) }; } sub problems { @@ -51,10 +51,10 @@ sub enter_postcode_text { return 'Enter a ' . $self->council_area . ' postcode, or street name and area'; } -sub council_check { +sub area_check { my ( $self, $params, $context ) = @_; - my $councils = $params->{all_councils}; + my $councils = $params->{all_areas}; my $council_match = defined $councils->{$self->council_id}; if ($council_match) { return 1; @@ -76,8 +76,21 @@ Please visit <a href=\"$url\">the main FixMyStreet site</a>."; } # All reports page only has the one council. -sub all_councils_report { - return 0; +sub all_reports_single_body { + my $self = shift; + return { name => $self->council_name }; +} + +sub reports_body_check { + my ( $self, $c, $code ) = @_; + + # 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(); + } + + return; } sub recent_photos { @@ -86,4 +99,26 @@ 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 ) { + if ( $self->owns_problem( $report ) ) { + return $self->base_url; + } else { + return FixMyStreet->config('BASE_URL'); + } + } else { + return $self->base_url; + } +} + 1; diff --git a/perllib/FixMyStreet/Cobrand/ZeroTB.pm b/perllib/FixMyStreet/Cobrand/ZeroTB.pm new file mode 100644 index 000000000..087bf0912 --- /dev/null +++ b/perllib/FixMyStreet/Cobrand/ZeroTB.pm @@ -0,0 +1,61 @@ +package FixMyStreet::Cobrand::ZeroTB; +use base 'FixMyStreet::Cobrand::Default'; + +use strict; +use warnings; + +sub site_title { return 'ZeroTB'; } + +sub enter_postcode_text { return _ ('Enter a nearby street name and area, postal code or district in Delhi'); } + +sub country { + return 'IN'; +} + +sub languages { [ 'en-gb,English,en_GB' ] } +sub language_override { 'en-gb' } + +sub disambiguate_location { + return { + country => 'in', + town => 'Delhi', + bounds => [ 28.404625000000024, 76.838845800000072, 28.884380600000028, 77.347877500000067 ], + }; +} + +sub only_authed_can_create { return 1; } +sub allow_photo_display { return 0; } +sub allow_photo_upload{ return 0; } +sub send_questionnaires { return 0; } +sub on_map_default_max_pin_age { return 0; } +sub never_confirm_updates { 1; } +sub include_time_in_update_alerts { 1; } + +sub pin_colour { + return 'clinic'; +} + +sub path_to_pin_icons { + return '/cobrands/zerotb/images/'; +} + +sub get_clinic_list { + my $self = shift; + + return $self->problems->search({ state => 'confirmed' }, { order_by => 'title' }); +} + +sub prettify_dt { + my ( $self, $dt, $type ) = @_; + $type ||= ''; + + if ( $type eq 'alert' ) { + return $dt->strftime('%H:%M %Y-%m-%d'); + } else { + return Utils::prettify_dt( $dt, $type ); + } + +} + +1; + diff --git a/perllib/FixMyStreet/Cobrand/Zurich.pm b/perllib/FixMyStreet/Cobrand/Zurich.pm new file mode 100644 index 000000000..087d9046b --- /dev/null +++ b/perllib/FixMyStreet/Cobrand/Zurich.pm @@ -0,0 +1,819 @@ +package FixMyStreet::Cobrand::Zurich; +use base 'FixMyStreet::Cobrand::Default'; + +use DateTime; +use POSIX qw(strcoll); +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; +} + +sub pin_colour { + my ( $self, $p, $context ) = @_; + return 'green' if $p->is_fixed || $p->is_closed; + return 'red' if $p->state eq 'unconfirmed' || $p->state eq 'confirmed'; + return 'yellow'; +} + +# This isn't used +sub find_closest { + my ( $self, $latitude, $longitude, $problem ) = @_; + return ''; +} + +sub enter_postcode_text { + my ( $self ) = @_; + return _('Enter a Zürich street name'); +} + +sub example_places { + return [ 'Langstrasse', 'Basteiplatz' ]; +} + +sub languages { [ 'de-ch,Deutsch,de_CH', 'en-gb,English,en_GB' ] } +sub language_override { 'de-ch' } + +# If lat/lon are in the URI, we must have zoom as well, otherwise OpenLayers defaults to 0. +sub uri { + my ( $self, $uri ) = @_; + + $uri->query_param( zoom => 6 ) + if $uri->query_param('lat') && !$uri->query_param('zoom'); + return $uri; +} + +sub prettify_dt { + my $self = shift; + my $dt = shift; + + 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; + my $ctx = shift; + + my $hashref = $problem->as_hashref( $ctx ); + + if ( $problem->state eq 'unconfirmed' ) { + for my $var ( qw( photo detail state state_t is_fixed meta ) ) { + delete $hashref->{ $var }; + } + $hashref->{detail} = _('This report is awaiting moderation.'); + $hashref->{title} = _('This report is awaiting moderation.'); + $hashref->{state} = 'submitted'; + $hashref->{state_t} = _('Submitted'); + } else { + if ( $problem->state eq 'confirmed' ) { + $hashref->{state} = 'open'; + $hashref->{state_t} = _('Open'); + } elsif ( $problem->is_fixed ) { + $hashref->{state} = 'closed'; + $hashref->{state_t} = _('Closed'); + } elsif ( $problem->state eq 'in progress' || $problem->state eq 'planned' ) { + $hashref->{state} = 'in progress'; + $hashref->{state_t} = _('In progress'); + } + } + + return $hashref; +} + +sub updates_as_hashref { + my $self = shift; + my $problem = shift; + my $ctx = shift; + + my $hashref = {}; + + if ( $problem->state eq 'fixed - council' || $problem->state eq 'closed' ) { + $hashref->{update_pp} = $self->prettify_dt( $problem->lastupdate ); + + if ( $problem->state eq 'fixed - council' ) { + $hashref->{details} = FixMyStreet::App::View::Web->add_links( $ctx, $problem->extra ? $problem->extra->{public_response} : '' ); + } elsif ( $problem->state eq 'closed' ) { + $hashref->{details} = sprintf( _('Assigned to %s'), $problem->body($ctx)->name ); + } + } + + return $hashref; +} + +sub allow_photo_display { + my ( $self, $r ) = @_; + if (ref($r) ne 'HASH') { + return $r->extra && $r->extra->{publish_photo}; + } + my $extra = $r->{extra}; + utf8::encode($extra) if utf8::is_utf8($extra); + my $h = new IO::String($extra); + $extra = RABX::wire_rd($h); + return $extra->{publish_photo}; +} + +sub show_unconfirmed_reports { + 1; +} + +sub get_body_sender { + my ( $self, $body, $category ) = @_; + return { method => 'Zurich' }; +} + +# Report overdue functions + +my %public_holidays = map { $_ => 1 } ( + '2013-01-01', '2013-01-02', '2013-03-29', '2013-04-01', + '2013-04-15', '2013-05-01', '2013-05-09', '2013-05-20', + '2013-08-01', '2013-09-09', '2013-12-25', '2013-12-26', + '2014-01-01', '2014-01-02', '2014-04-18', '2014-04-21', + '2014-04-28', '2014-05-01', '2014-05-29', '2014-06-09', + '2014-08-01', '2014-09-15', '2014-12-25', '2014-12-26', +); + +sub is_public_holiday { + my $dt = shift; + return $public_holidays{$dt->ymd}; +} + +sub is_weekend { + my $dt = shift; + return $dt->dow > 5; +} + +sub add_days { + my ( $dt, $days ) = @_; + $dt = $dt->clone; + while ( $days > 0 ) { + $dt->add ( days => 1 ); + next if is_public_holiday($dt) or is_weekend($dt); + $days--; + } + return $dt; +} + +sub sub_days { + my ( $dt, $days ) = @_; + $dt = $dt->clone; + while ( $days > 0 ) { + $dt->subtract ( days => 1 ); + next if is_public_holiday($dt) or is_weekend($dt); + $days--; + } + return $dt; +} + +sub overdue { + my ( $self, $problem ) = @_; + + my $w = $problem->created; + return 0 unless $w; + + # 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 '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" ] ); +} + +# Specific administrative displays + +sub admin_pages { + my $self = shift; + my $c = $self->{c}; + + my $type = $c->stash->{admin_type}; + my $pages = { + 'summary' => [_('Summary'), 0], + 'reports' => [_('Reports'), 2], + 'report_edit' => [undef, undef], + 'update_edit' => [undef, undef], + }; + return $pages if $type eq 'sdm'; + + $pages = { %$pages, + 'bodies' => [_('Bodies'), 1], + 'body' => [undef, undef], + 'body_edit' => [undef, undef], + }; + return $pages if $type eq 'dm'; + + $pages = { %$pages, + 'users' => [_('Users'), 3], + 'stats' => [_('Stats'), 4], + 'user_edit' => [undef, undef], + }; + return $pages if $type eq 'super'; +} + +sub admin_type { + my $self = shift; + my $c = $self->{c}; + my $body = $c->user->from_body; + $c->stash->{body} = $body; + + my $type; + my $parent = $body->parent; + if (!$parent) { + $type = 'super'; + } else { + my $grandparent = $parent->parent; + $type = $grandparent ? 'sdm' : 'dm'; + } + + $c->stash->{admin_type} = $type; + return $type; +} + +sub admin { + my $self = shift; + my $c = $self->{c}; + my $type = $c->stash->{admin_type}; + + if ($type eq 'dm') { + $c->stash->{template} = 'admin/index-dm.html'; + + my $body = $c->stash->{body}; + my @children = map { $_->id } $body->bodies->all; + my @all = (@children, $body->id); + + my $order = $c->req->params->{o} || 'created'; + my $dir = defined $c->req->params->{d} ? $c->req->params->{d} : 1; + $c->stash->{order} = $order; + $c->stash->{dir} = $dir; + $order .= ' desc' if $dir; + + # XXX No multiples or missing bodies + $c->stash->{unconfirmed} = $c->cobrand->problems->search({ + state => [ 'unconfirmed', 'confirmed' ], + bodies_str => $c->stash->{body}->id, + }, { + order_by => $order, + }); + $c->stash->{approval} = $c->cobrand->problems->search({ + state => 'planned', + bodies_str => $c->stash->{body}->id, + }, { + order_by => $order, + }); + + my $page = $c->req->params->{p} || 1; + $c->stash->{other} = $c->cobrand->problems->search({ + state => { -not_in => [ 'unconfirmed', 'confirmed', 'planned' ] }, + bodies_str => \@all, + }, { + order_by => $order, + })->page( $page ); + $c->stash->{pager} = $c->stash->{other}->pager; + + } elsif ($type eq 'sdm') { + $c->stash->{template} = 'admin/index-sdm.html'; + + my $body = $c->stash->{body}; + + my $order = $c->req->params->{o} || 'created'; + my $dir = defined $c->req->params->{d} ? $c->req->params->{d} : 1; + $c->stash->{order} = $order; + $c->stash->{dir} = $dir; + $order .= ' desc' if $dir; + + # XXX No multiples or missing bodies + $c->stash->{reports_new} = $c->cobrand->problems->search( { + state => 'in progress', + bodies_str => $body->id, + }, { + order_by => $order + } ); + $c->stash->{reports_unpublished} = $c->cobrand->problems->search( { + state => 'planned', + bodies_str => $body->parent->id, + }, { + order_by => $order + } ); + + my $page = $c->req->params->{p} || 1; + $c->stash->{reports_published} = $c->cobrand->problems->search( { + state => 'fixed - council', + bodies_str => $body->parent->id, + }, { + order_by => $order + } )->page( $page ); + $c->stash->{pager} = $c->stash->{reports_published}->pager; + } +} + +sub admin_report_edit { + my $self = shift; + my $c = $self->{c}; + my $type = $c->stash->{admin_type}; + + my $problem = $c->stash->{problem}; + my $body = $c->stash->{body}; + + if ($type ne 'super') { + my %allowed_bodies = map { $_->id => 1 } ( $body->bodies->all, $body ); + $c->detach( '/page_error_404_not_found' ) + unless $allowed_bodies{$problem->bodies_str}; + } + + if ($type eq 'super') { + + my @bodies = $c->model('DB::Body')->all(); + @bodies = sort { strcoll($a->name, $b->name) } @bodies; + $c->stash->{bodies} = \@bodies; + + # Can change category to any other + my @categories = $c->model('DB::Contact')->not_deleted->all; + $c->stash->{categories} = [ map { $_->category } @categories ]; + + } elsif ($type eq 'dm') { + + # Can assign to: + my @bodies = $c->model('DB::Body')->search( [ + { 'me.parent' => $body->parent->id }, # Other DMs on the same level + { 'me.parent' => $body->id }, # Their subdivisions + { 'me.parent' => undef, 'bodies.id' => undef }, # External bodies + ], { join => 'bodies', distinct => 1 } ); + @bodies = sort { strcoll($a->name, $b->name) } @bodies; + $c->stash->{bodies} = \@bodies; + + # Can change category to any other + my @categories = $c->model('DB::Contact')->not_deleted->all; + $c->stash->{categories} = [ map { $_->category } @categories ]; + + } + + # 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 + my $extra = $problem->extra || {}; + $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 ); + $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 ); + $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 { + 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->title( $c->req->param('title') ); + $problem->detail( $c->req->param('detail') ); + $problem->latitude( $c->req->param('latitude') ); + $problem->longitude( $c->req->param('longitude') ); + + # Final, public, Update from DM + if (my $update = $c->req->param('status_update')) { + $extra->{public_response} = $update; + $problem->extra( $extra ); + if ($c->req->params->{publish_response}) { + $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 ); + } + } + + $problem->lastupdate( \'ms_current_timestamp()' ); + $problem->update; + + $c->stash->{status_message} = + '<p><em>' . _('Updated!') . '</em></p>'; + + # do this here otherwise lastupdate and confirmed times + # 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'); + } + + $c->stash->{updates} = [ $c->model('DB::Comment') + ->search( { problem_id => $problem->id }, { order_by => 'created' } ) + ->all ]; + + return 1; + } + + if ($type eq 'sdm') { + + # Has cut-down edit template for adding update and sending back up only + $c->stash->{template} = 'admin/report_edit-sdm.html'; + + if ($c->req->param('send_back')) { + $c->forward('check_token'); + + $problem->bodies_str( $body->parent->id ); + $self->set_problem_state($c, $problem, 'confirmed'); + $problem->update; + # log here + $c->res->redirect( '/admin/summary' ); + + } elsif ($c->req->param('submit')) { + $c->forward('check_token'); + + my $db_update = 0; + if ( $c->req->param('latitude') != $problem->latitude || $c->req->param('longitude') != $problem->longitude ) { + $problem->latitude( $c->req->param('latitude') ); + $problem->longitude( $c->req->param('longitude') ); + $db_update = 1; + } + + $problem->update if $db_update; + + # Add new update from status_update + if (my $update = $c->req->param('status_update')) { + FixMyStreet::App->model('DB::Comment')->create( { + text => $update, + user => $c->user->obj, + state => 'unconfirmed', + problem => $problem, + mark_fixed => 0, + problem_state => 'fixed - council', + anonymous => 1, + } ); + } + + $c->stash->{status_message} = '<p><em>' . _('Updated!') . '</em></p>'; + + # If they clicked the no more updates button, we're done. + if ($c->req->param('no_more_updates')) { + my $extra = $problem->extra || {}; + $extra->{subdiv_overdue} = $self->overdue( $problem ); + $problem->extra( $extra ); + $problem->bodies_str( $body->parent->id ); + $problem->whensent( undef ); + $self->set_problem_state($c, $problem, 'planned'); + $problem->update; + $c->res->redirect( '/admin/summary' ); + } + } + + $c->stash->{updates} = [ $c->model('DB::Comment') + ->search( { problem_id => $problem->id }, { order_by => 'created' } ) + ->all ]; + + return 1; + + } + + return 0; + +} + +sub _admin_send_email { + my ( $c, $template, $problem ) = @_; + + return unless $problem->extra && $problem->extra->{email_confirmed}; + + my $to = $problem->name + ? [ $problem->user->email, $problem->name ] + : $problem->user->email; + + # Similar to what SendReport::Zurich does to find address to send to + my $body = ( values %{$problem->bodies} )[0]; + my $sender = $body->endpoint || $c->cobrand->contact_email; + my $sender_name = $c->cobrand->contact_name; # $body->name? + + $c->send_email( $template, { + to => [ $to ], + url => $c->uri_for_email( $problem->url ), + from => [ $sender, $sender_name ], + } ); +} + +sub admin_fetch_all_bodies { + my ( $self, @bodies ) = @_; + + sub tree_sort { + my ( $level, $id, $sorted, $out ) = @_; + + my @sorted; + my $array = $sorted->{$id}; + if ( $level == 0 ) { + @sorted = sort { + # Want Zurich itself at the top. + return -1 if $sorted->{$a->id}; + return 1 if $sorted->{$b->id}; + # Otherwise, by name + strcoll($a->name, $b->name) + } @$array; + } else { + @sorted = sort { strcoll($a->name, $b->name) } @$array; + } + foreach ( @sorted ) { + $_->api_key( $level ); # Misuse + push @$out, $_; + if ($sorted->{$_->id}) { + tree_sort( $level+1, $_->id, $sorted, $out ); + } + } + } + + my %sorted; + foreach (@bodies) { + my $p = $_->parent ? $_->parent->id : 0; + push @{$sorted{$p}}, $_; + } + + my @out; + tree_sort( 0, 0, \%sorted, \@out ); + return @out; +} + +sub admin_stats { + my $self = shift; + my $c = $self->{c}; + + my %date_params; + my $ym = $c->req->params->{ym}; + 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 ); + $c->stash->{end_date} = $c->stash->{start_date} + DateTime::Duration->new( months => 1 ); + $date_params{created} = { '>=', $c->stash->{start_date}, '<', $c->stash->{end_date} }; + } + + my %params = ( + %date_params, + state => [ FixMyStreet::DB::Result::Problem->visible_states() ], + ); + + if ( $c->req->params->{export} ) { + 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); + } + + # Total reports (non-hidden) + my $total = $c->model('DB::Problem')->search( \%params )->count; + # Device for apps (iOS/Android) + my $per_service = $c->model('DB::Problem')->search( \%params, { + select => [ 'service', { count => 'id' } ], + as => [ 'service', 'c' ], + group_by => [ 'service' ], + }); + # Reports solved + my $solved = $c->model('DB::Problem')->search( { state => 'fixed - council', %date_params } )->count; + # Reports marked as spam + my $hidden = $c->model('DB::Problem')->search( { state => 'hidden', %date_params } )->count; + # 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%' }, %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' } ], + as => [ 'category', 'c' ], + group_by => [ 'category' ], + }); + # How many reports have had their category changed by a DM (wrong category chosen by user) + my $changed = $c->model('DB::Problem')->search( { extra => { like => '%changed_category,I1:1%' }, %params } )->count; + # pictures taken + my $pictures_taken = $c->model('DB::Problem')->search( { photo => { '!=', undef }, %params } )->count; + # pictures published + my $pictures_published = $c->model('DB::Problem')->search( { extra => { like => '%publish_photo,I1:1%' }, %params } )->count; + # how many times was a telephone number provided + # XXX => How many users have a telephone number stored + # my $phone = $c->model('DB::User')->search( { phone => { '!=', undef } } )->count; + # how many times was the email address confirmed + my $email_confirmed = $c->model('DB::Problem')->search( { extra => { like => '%email_confirmed%' }, %params } )->count; + # how many times was the name provided + my $name = $c->model('DB::Problem')->search( { name => { '!=', '' }, %params } )->count; + # how many times was the geolocation used vs. addresssearch + # ? + + $c->stash( + per_service => $per_service, + per_category => $per_category, + reports_total => $total, + reports_solved => $solved, + reports_spam => $hidden, + reports_assigned => $closed, + reports_moderated => $moderated, + reports_dealtwith => $fixed_in_time, + reports_category_changed => $changed, + pictures_taken => $pictures_taken, + pictures_published => $pictures_published, + #users_phone => $phone, + email_confirmed => $email_confirmed, + name_provided => $name, + # GEO + ); + + return 1; +} + +1; 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 ca9ad45c2..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 @@ -77,22 +77,21 @@ with 'FixMyStreet::Roles::Abuser'; my $tz = DateTime::TimeZone->new( name => "local" ); - -sub whensubscribed_local { - my $self = shift; - - return $self->whensubscribed - ? $self->whensubscribed->set_time_zone($tz) - : $self->whensubscribed; -} - -sub whendisabled_local { - my $self = shift; - - return $self->whendisabled - ? $self->whendisabled->set_time_zone($tz) - : $self->whendisabled; -} +my $tz_f; +$tz_f = DateTime::TimeZone->new( name => FixMyStreet->config('TIME_ZONE') ) + if FixMyStreet->config('TIME_ZONE'); + +my $stz = sub { + my ( $orig, $self ) = ( shift, shift ); + my $s = $self->$orig(@_); + return $s unless $s && UNIVERSAL::isa($s, "DateTime"); + $s->set_time_zone($tz); + $s->set_time_zone($tz_f) if $tz_f; + return $s; +}; + +around whensubscribed => $stz; +around whendisabled => $stz; =head2 confirm 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 new file mode 100644 index 000000000..be4adeca9 --- /dev/null +++ b/perllib/FixMyStreet/DB/Result/Body.pm @@ -0,0 +1,112 @@ +use utf8; +package FixMyStreet::DB::Result::Body; + +# Created by DBIx::Class::Schema::Loader +# DO NOT MODIFY THE FIRST PART OF THIS FILE + +use strict; +use warnings; + +use base 'DBIx::Class::Core'; +__PACKAGE__->load_components("FilterColumn", "InflateColumn::DateTime", "EncodedColumn"); +__PACKAGE__->table("body"); +__PACKAGE__->add_columns( + "id", + { + data_type => "integer", + is_auto_increment => 1, + is_nullable => 0, + sequence => "body_id_seq", + }, + "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", + { data_type => "text", is_nullable => 1 }, + "api_key", + { data_type => "text", is_nullable => 1 }, + "send_method", + { data_type => "text", is_nullable => 1 }, + "send_comments", + { data_type => "boolean", default_value => \"false", is_nullable => 0 }, + "comment_user_id", + { data_type => "integer", is_foreign_key => 1, is_nullable => 1 }, + "suppress_alerts", + { data_type => "boolean", default_value => \"false", is_nullable => 0 }, + "can_be_devolved", + { data_type => "boolean", default_value => \"false", is_nullable => 0 }, + "send_extended_statuses", + { data_type => "boolean", default_value => \"false", is_nullable => 0 }, + "deleted", + { data_type => "boolean", default_value => \"false", is_nullable => 0 }, + "external_url", + { data_type => "text", is_nullable => 0 }, +); +__PACKAGE__->set_primary_key("id"); +__PACKAGE__->has_many( + "bodies", + "FixMyStreet::DB::Result::Body", + { "foreign.parent" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); +__PACKAGE__->has_many( + "body_areas", + "FixMyStreet::DB::Result::BodyArea", + { "foreign.body_id" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); +__PACKAGE__->belongs_to( + "comment_user", + "FixMyStreet::DB::Result::User", + { id => "comment_user_id" }, + { + is_deferrable => 0, + join_type => "LEFT", + on_delete => "NO ACTION", + on_update => "NO ACTION", + }, +); +__PACKAGE__->has_many( + "contacts", + "FixMyStreet::DB::Result::Contact", + { "foreign.body_id" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); +__PACKAGE__->belongs_to( + "parent", + "FixMyStreet::DB::Result::Body", + { id => "parent" }, + { + is_deferrable => 0, + join_type => "LEFT", + on_delete => "NO ACTION", + on_update => "NO ACTION", + }, +); +__PACKAGE__->has_many( + "users", + "FixMyStreet::DB::Result::User", + { "foreign.from_body" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + + +# 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 ) = @_; + # XXX $areas_info was used here for Norway parent - needs body parents, I guess + return $c->uri_for( '/reports/' . $c->cobrand->short_name( $self ) ); +} + +sub areas { + my $self = shift; + my %ids = map { $_->area_id => 1 } $self->body_areas->all; + return \%ids; +} + +1; diff --git a/perllib/FixMyStreet/DB/Result/BodyArea.pm b/perllib/FixMyStreet/DB/Result/BodyArea.pm new file mode 100644 index 000000000..4447777dc --- /dev/null +++ b/perllib/FixMyStreet/DB/Result/BodyArea.pm @@ -0,0 +1,33 @@ +use utf8; +package FixMyStreet::DB::Result::BodyArea; + +# Created by DBIx::Class::Schema::Loader +# DO NOT MODIFY THE FIRST PART OF THIS FILE + +use strict; +use warnings; + +use base 'DBIx::Class::Core'; +__PACKAGE__->load_components("FilterColumn", "InflateColumn::DateTime", "EncodedColumn"); +__PACKAGE__->table("body_areas"); +__PACKAGE__->add_columns( + "body_id", + { data_type => "integer", is_foreign_key => 1, is_nullable => 0 }, + "area_id", + { data_type => "integer", is_nullable => 0 }, +); +__PACKAGE__->add_unique_constraint("body_areas_body_id_area_id_idx", ["body_id", "area_id"]); +__PACKAGE__->belongs_to( + "body", + "FixMyStreet::DB::Result::Body", + { id => "body_id" }, + { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" }, +); + + +# 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); + +1; diff --git a/perllib/FixMyStreet/DB/Result/Comment.pm b/perllib/FixMyStreet/DB/Result/Comment.pm index 8c9fea282..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,76 +66,52 @@ __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; - 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'; my $tz = DateTime::TimeZone->new( name => "local" ); -sub created_local { - my $self = shift; +my $tz_f; +$tz_f = DateTime::TimeZone->new( name => FixMyStreet->config('TIME_ZONE') ) + if FixMyStreet->config('TIME_ZONE'); - return $self->created - ? $self->created->set_time_zone($tz) - : $self->created; -} +my $stz = sub { + my ( $orig, $self ) = ( shift, shift ); + my $s = $self->$orig(@_); + return $s unless $s && UNIVERSAL::isa($s, "DateTime"); + $s->set_time_zone($tz); + $s->set_time_zone($tz_f) if $tz_f; + return $s; +}; -sub confirmed_local { - my $self = shift; - - # if confirmed is null then it doesn't get inflated so don't - # try and set the timezone - return $self->confirmed - ? $self->confirmed->set_time_zone($tz) - : $self->confirmed; -} +around created => $stz; +around confirmed => $stz; # You can replace this text with custom code or comments, and it will be preserved on regeneration @@ -146,6 +126,12 @@ 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) > 1750 ) { + $errors{update} = sprintf( _('Updates are limited to %s characters in length. Please shorten your update'), 1750 ); + } + return \%errors; } @@ -175,8 +161,8 @@ sub get_photo_params { =head2 meta_problem_state -Returns a string suitable for display in the update meta section. -Mostly removes the '- council/user' bit from fixed states +Returns a string suitable for display lookup in the update meta section. +Removes the '- council/user' bit from fixed states. =cut diff --git a/perllib/FixMyStreet/DB/Result/Contact.pm b/perllib/FixMyStreet/DB/Result/Contact.pm index 993e3524b..eca028c9b 100644 --- a/perllib/FixMyStreet/DB/Result/Contact.pm +++ b/perllib/FixMyStreet/DB/Result/Contact.pm @@ -18,8 +18,8 @@ __PACKAGE__->add_columns( is_nullable => 0, sequence => "contacts_id_seq", }, - "area_id", - { data_type => "integer", is_nullable => 0 }, + "body_id", + { data_type => "integer", is_foreign_key => 1, is_nullable => 0 }, "category", { data_type => "text", default_value => "Other", is_nullable => 0 }, "email", @@ -48,30 +48,19 @@ __PACKAGE__->add_columns( { data_type => "text", is_nullable => 1 }, ); __PACKAGE__->set_primary_key("id"); -__PACKAGE__->add_unique_constraint("contacts_area_id_category_idx", ["area_id", "category"]); +__PACKAGE__->add_unique_constraint("contacts_body_id_category_idx", ["body_id", "category"]); +__PACKAGE__->belongs_to( + "body", + "FixMyStreet::DB::Result::Body", + { id => "body_id" }, + { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" }, +); -# Created by DBIx::Class::Schema::Loader v0.07017 @ 2012-08-31 10:29:17 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:t6yOPhZmedV/eH6AUvHI6w +# 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; - 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/ContactsHistory.pm b/perllib/FixMyStreet/DB/Result/ContactsHistory.pm index deb00fb95..7126d91c9 100644 --- a/perllib/FixMyStreet/DB/Result/ContactsHistory.pm +++ b/perllib/FixMyStreet/DB/Result/ContactsHistory.pm @@ -20,7 +20,7 @@ __PACKAGE__->add_columns( }, "contact_id", { data_type => "integer", is_nullable => 0 }, - "area_id", + "body_id", { data_type => "integer", is_nullable => 0 }, "category", { data_type => "text", default_value => "Other", is_nullable => 0 }, @@ -40,8 +40,8 @@ __PACKAGE__->add_columns( __PACKAGE__->set_primary_key("contacts_history_id"); -# Created by DBIx::Class::Schema::Loader v0.07017 @ 2012-03-08 17:19:55 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:dN2ueIDoP3d/+Mg1UDqsMw +# Created by DBIx::Class::Schema::Loader v0.07017 @ 2012-12-12 16:37:16 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:sxflEBBn0Mn0s3MroWnWFA # You can replace this text with custom code or comments, and it will be preserved on regeneration diff --git a/perllib/FixMyStreet/DB/Result/Open311conf.pm b/perllib/FixMyStreet/DB/Result/Open311conf.pm deleted file mode 100644 index 8051e27de..000000000 --- a/perllib/FixMyStreet/DB/Result/Open311conf.pm +++ /dev/null @@ -1,60 +0,0 @@ -use utf8; -package FixMyStreet::DB::Result::Open311conf; - -# Created by DBIx::Class::Schema::Loader -# DO NOT MODIFY THE FIRST PART OF THIS FILE - -use strict; -use warnings; - -use base 'DBIx::Class::Core'; -__PACKAGE__->load_components("FilterColumn", "InflateColumn::DateTime", "EncodedColumn"); -__PACKAGE__->table("open311conf"); -__PACKAGE__->add_columns( - "id", - { - data_type => "integer", - is_auto_increment => 1, - is_nullable => 0, - sequence => "open311conf_id_seq", - }, - "area_id", - { data_type => "integer", is_nullable => 0 }, - "endpoint", - { data_type => "text", is_nullable => 0 }, - "jurisdiction", - { data_type => "text", is_nullable => 1 }, - "api_key", - { data_type => "text", is_nullable => 1 }, - "send_method", - { data_type => "text", is_nullable => 1 }, - "send_comments", - { data_type => "boolean", default_value => \"false", is_nullable => 0 }, - "comment_user_id", - { data_type => "integer", is_foreign_key => 1, is_nullable => 1 }, - "suppress_alerts", - { data_type => "boolean", default_value => \"false", is_nullable => 0 }, - "can_be_devolved", - { data_type => "boolean", default_value => \"false", is_nullable => 0 }, -); -__PACKAGE__->set_primary_key("id"); -__PACKAGE__->add_unique_constraint("open311conf_area_id_key", ["area_id"]); -__PACKAGE__->belongs_to( - "comment_user", - "FixMyStreet::DB::Result::User", - { id => "comment_user_id" }, - { - is_deferrable => 1, - join_type => "LEFT", - on_delete => "CASCADE", - on_update => "CASCADE", - }, -); - - -# Created by DBIx::Class::Schema::Loader v0.07017 @ 2012-08-29 14:04:20 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Yoult8K/ldH6DMAKURtr3Q - - -# You can replace this text with custom code or comments, and it will be preserved on regeneration -1; diff --git a/perllib/FixMyStreet/DB/Result/Problem.pm b/perllib/FixMyStreet/DB/Result/Problem.pm index 02e5adb7d..3463ebab6 100644 --- a/perllib/FixMyStreet/DB/Result/Problem.pm +++ b/perllib/FixMyStreet/DB/Result/Problem.pm @@ -24,7 +24,7 @@ __PACKAGE__->add_columns( { data_type => "double precision", is_nullable => 0 }, "longitude", { data_type => "double precision", is_nullable => 0 }, - "council", + "bodies_str", { data_type => "text", is_nullable => 1 }, "areas", { data_type => "text", is_nullable => 0 }, @@ -99,7 +99,7 @@ __PACKAGE__->add_columns( "external_source_id", { data_type => "text", is_nullable => 1 }, "interest_count", - { data_type => "integer", is_nullable => 1 }, + { data_type => "integer", default_value => 0, is_nullable => 1 }, "subcategory", { data_type => "text", is_nullable => 1 }, ); @@ -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-03 17:48:10 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:xN/RB8Vx50CwyOeBjvJezQ +# 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,52 +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; - 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; - 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'; @@ -196,10 +159,11 @@ HASHREF. sub open_states { my $states = { - 'confirmed' => 1, - 'investigating' => 1, - 'planned' => 1, - 'in progress' => 1, + 'confirmed' => 1, + 'investigating' => 1, + 'in progress' => 1, + 'planned' => 1, + 'action scheduled' => 1, }; return wantarray ? keys %{$states} : $states; @@ -237,7 +201,11 @@ HASHREF. sub closed_states { my $states = { - 'closed' => 1, + 'closed' => 1, + 'unable to fix' => 1, + 'not responsible' => 1, + 'duplicate' => 1, + 'internal referral' => 1, }; return wantarray ? keys %{$states} : $states; @@ -248,61 +216,111 @@ sub closed_states { @states = FixMyStreet::DB::Problem::visible_states(); -Get a list or states that should be visible on the site. If called in +Get a list of states that should be visible on the site. If called in array context then returns an array of names, otherwise returns a HASHREF. =cut +my $visible_states = { + 'confirmed' => 1, + 'investigating' => 1, + 'in progress' => 1, + 'planned' => 1, + 'action scheduled' => 1, + 'fixed' => 1, + 'fixed - council' => 1, + 'fixed - user' => 1, + 'unable to fix' => 1, + 'not responsible' => 1, + 'duplicate' => 1, + 'closed' => 1, + 'internal referral' => 1, +}; sub visible_states { + return wantarray ? keys %{$visible_states} : $visible_states; +} +sub visible_states_add_unconfirmed { + $visible_states->{unconfirmed} = 1; +} + +=head2 + + @states = FixMyStreet::DB::Problem::all_states(); + +Get a list of all states that a problem can have. If called in +array context then returns an array of names, otherwise returns a +HASHREF. + +=cut + +sub all_states { my $states = { - 'confirmed' => 1, - 'planned' => 1, - 'investigating' => 1, - 'in progress' => 1, - 'fixed' => 1, - 'fixed - council' => 1, - 'fixed - user' => 1, - 'closed' => 1, + 'hidden' => 1, + 'partial' => 1, + 'unconfirmed' => 1, + 'confirmed' => 1, + 'investigating' => 1, + 'in progress' => 1, + 'planned' => 1, + 'action scheduled' => 1, + 'fixed' => 1, + 'fixed - council' => 1, + 'fixed - user' => 1, + 'unable to fix' => 1, + 'not responsible' => 1, + 'duplicate' => 1, + 'closed' => 1, + 'internal referral' => 1, }; return wantarray ? keys %{$states} : $states; } +=head2 -my $tz = DateTime::TimeZone->new( name => "local" ); - -sub confirmed_local { - my $self = shift; + @states = FixMyStreet::DB::Problem::council_states(); - return $self->confirmed - ? $self->confirmed->set_time_zone($tz) - : $self->confirmed; -} +Get a list of states that are availble to council users. If called in +array context then returns an array of names, otherwise returns a +HASHREF. -sub created_local { - my $self = shift; +=cut +sub council_states { + my $states = { + 'confirmed' => 1, + 'investigating' => 1, + 'action scheduled' => 1, + 'in progress' => 1, + 'fixed - council' => 1, + 'unable to fix' => 1, + 'not responsible' => 1, + 'duplicate' => 1, + 'internal referral' => 1, + }; - return $self->created - ? $self->created->set_time_zone($tz) - : $self->created; + return wantarray ? keys %{$states} : $states; } -sub whensent_local { - my $self = shift; +my $tz = DateTime::TimeZone->new( name => "local" ); - return $self->whensent - ? $self->whensent->set_time_zone($tz) - : $self->whensent; -} +my $tz_f; +$tz_f = DateTime::TimeZone->new( name => FixMyStreet->config('TIME_ZONE') ) + if FixMyStreet->config('TIME_ZONE'); -sub lastupdate_local { - my $self = shift; +my $stz = sub { + my ( $orig, $self ) = ( shift, shift ); + my $s = $self->$orig(@_); + return $s unless $s && UNIVERSAL::isa($s, "DateTime"); + $s->set_time_zone($tz); + $s->set_time_zone($tz_f) if $tz_f; + return $s; +}; - return $self->lastupdate - ? $self->lastupdate->set_time_zone($tz) - : $self->lastupdate; -} +around created => $stz; +around confirmed => $stz; +around whensent => $stz; +around lastupdate => $stz; around service => sub { my ( $orig, $self ) = ( shift, shift ); @@ -311,6 +329,12 @@ around service => sub { return $s; }; +sub title_safe { + my $self = shift; + return _('Awaiting moderation') if $self->cobrand eq 'zurich' && $self->state eq 'unconfirmed'; + return $self->title; +} + =head2 check_for_errors $error_hashref = $problem->check_for_errors(); @@ -335,9 +359,9 @@ sub check_for_errors { $errors{detail} = _('Please enter some details') unless $self->detail =~ m/\S/; - $errors{council} = _('No council selected') - unless $self->council - && $self->council =~ m/^(?:-1|[\d,]+(?:\|[\d,]+)?)$/; + $errors{bodies} = _('No council selected') + unless $self->bodies_str + && $self->bodies_str =~ m/^(?:-1|[\d,]+(?:\|[\d,]+)?)$/; if ( !$self->name || $self->name !~ m/\S/ ) { $errors{name} = _('Please enter your name'); @@ -348,7 +372,7 @@ sub check_for_errors { { $errors{name} = _( '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' - ); + ) unless $self->cobrand eq 'emptyhomes'; } if ( $self->category @@ -364,6 +388,18 @@ sub check_for_errors { $self->category(undef); } + 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; } @@ -390,18 +426,26 @@ sub confirm { return 1; } -=head2 councils +sub bodies_str_ids { + my $self = shift; + return unless $self->bodies_str; + (my $bodies = $self->bodies_str) =~ s/\|.*$//; + my @bodies = split( /,/, $bodies ); + return \@bodies; +} -Returns an arrayref of councils to which a report was sent. +=head2 bodies + +Returns a hashref of bodies to which a report was sent. =cut -sub councils { +sub bodies($) { my $self = shift; - return [] unless $self->council; - (my $council = $self->council) =~ s/\|.*$//; - my @council = split( /,/, $council ); - return \@council; + return {} unless $self->bodies_str; + my $bodies = $self->bodies_str_ids; + my @bodies = FixMyStreet::App->model('DB::Body')->search({ id => $bodies })->all; + return { map { $_->id => $_ } @bodies }; } =head2 url @@ -485,8 +529,7 @@ meta data about the report. sub meta_line { my ( $problem, $c ) = @_; - my $date_time = - Utils::prettify_epoch( $problem->confirmed_local->epoch ); + my $date_time = Utils::prettify_dt( $problem->confirmed ); my $meta = ''; # FIXME Should be in cobrand @@ -494,11 +537,7 @@ sub meta_line { my $category = _($problem->category); utf8::decode($category); - if ($problem->anonymous) { - $meta = sprintf(_('%s, reported anonymously at %s'), $category, $date_time); - } else { - $meta = sprintf(_('%s, reported by %s at %s'), $category, $problem->name, $date_time); - } + $meta = sprintf(_('%s, reported at %s'), $category, $date_time); } else { @@ -507,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') ) { @@ -527,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') ) { @@ -555,21 +594,22 @@ sub body { my ( $problem, $c ) = @_; my $body; if ($problem->external_body) { - $body = $problem->external_body; + if ($problem->cobrand eq 'zurich') { + $body = $c->model('DB::Body')->find({ id => $problem->external_body }); + } else { + $body = $problem->external_body; + } } else { - my $councils = $problem->councils; - my $areas_info = mySociety::MaPit::call('areas', $councils); + my $bodies = $problem->bodies; $body = join( _(' and '), map { - my $name = $areas_info->{$_}->{name}; + my $name = $_->name; if (mySociety::Config::get('AREA_LINKS_FROM_PROBLEMS')) { - '<a href="' - . $c->uri_for( '/reports/' . $c->cobrand->short_name( $areas_info->{$_} ) ) - . '">' . $name . '</a>'; + '<a href="' . $_->url($c) . '">' . $name . '</a>'; } else { $name; } - } @$councils + } values %$bodies ); } return $body; @@ -583,10 +623,10 @@ sub body { # Note: this only makes sense when called on a problem that has been sent! sub can_display_external_id { my $self = shift; - if ($self->external_id && $self->send_method_used && $self->send_method_used eq 'barnet') { + if ($self->external_id && $self->bodies_str =~ /2237/) { return 1; } - return 0; + return 0; } # TODO Some/much of this could be moved to the template @@ -603,7 +643,7 @@ sub processed_summary_string { my ( $problem, $c ) = @_; my ($duration_clause, $external_ref_clause); if ($problem->whensent) { - $duration_clause = $problem->duration_string($c) + $duration_clause = $problem->duration_string($c); } if ($problem->can_display_external_id) { if ($duration_clause) { @@ -623,19 +663,30 @@ sub duration_string { my ( $problem, $c ) = @_; my $body = $problem->body( $c ); return sprintf(_('Sent to %s %s later'), $body, - Utils::prettify_duration($problem->whensent_local->epoch - $problem->confirmed_local->epoch, 'minute') + Utils::prettify_duration($problem->whensent->epoch - $problem->confirmed->epoch, 'minute') ); } +sub local_coords { + my $self = shift; + if ($self->cobrand eq 'zurich') { + my ($x, $y) = Geo::Coordinates::CH1903::from_latlon($self->latitude, $self->longitude); + return ( int($x+0.5), int($y+0.5) ); + } +} + =head2 update_from_open311_service_request - $p->update_from_open311_service_request( $request, $council_details, $system_user ); + $p->update_from_open311_service_request( $request, $body, $system_user ); -Updates the problem based on information in the passed in open311 request. If the request -has an older update time than the problem's lastupdate time then nothing happens. +Updates the problem based on information in the passed in open311 request +(standard, not the extension that uses GetServiceRequestUpdates) . If the +request has an older update time than the problem's lastupdate time then +nothing happens. -Otherwise a comment will be created if there is status update text in the open311 request. -If the open311 request has a state of closed then the problem will be marked as fixed. +Otherwise a comment will be created if there is status update text in the +open311 request. If the open311 request has a state of closed then the problem +will be marked as fixed. NB: a comment will always be created if the problem is being marked as fixed. @@ -644,7 +695,7 @@ Fixed problems will not be re-opened by this method. =cut sub update_from_open311_service_request { - my ( $self, $request, $council_details, $system_user ) = @_; + my ( $self, $request, $body, $system_user ) = @_; my ( $updated, $status_notes ); @@ -667,11 +718,10 @@ sub update_from_open311_service_request { mark_fixed => 0, user => $system_user, anonymous => 0, - name => $council_details->{name}, + name => $body->name, } ); - my $w3c = DateTime::Format::W3CDTF->new; my $req_time = $w3c->parse_datetime( $request->{updated_datetime} ); @@ -720,6 +770,29 @@ sub update_send_failed { } ); } +sub as_hashref { + my $self = shift; + my $c = shift; + + return { + id => $self->id, + title => $self->title, + category => $self->category, + detail => $self->detail, + latitude => $self->latitude, + longitude => $self->longitude, + postcode => $self->postcode, + state => $self->state, + state_t => _( $self->state ), + used_map => $self->used_map, + is_fixed => $self->fixed_states->{ $self->state } ? 1 : 0, + photo => $self->get_photo_params, + meta => $self->confirmed ? $self->meta_line( $c ) : '', + confirmed_pp => $self->confirmed ? $c->cobrand->prettify_dt( $self->confirmed ): '', + created_pp => $c->cobrand->prettify_dt( $self->created ), + }; +} + # we need the inline_constructor bit as we don't inherit from Moose __PACKAGE__->meta->make_immutable( inline_constructor => 0 ); diff --git a/perllib/FixMyStreet/DB/Result/Questionnaire.pm b/perllib/FixMyStreet/DB/Result/Questionnaire.pm index b6791603a..7f9c79d9a 100644 --- a/perllib/FixMyStreet/DB/Result/Questionnaire.pm +++ b/perllib/FixMyStreet/DB/Result/Questionnaire.pm @@ -36,31 +36,33 @@ __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; +use namespace::clean -except => [ 'meta' ]; my $tz = DateTime::TimeZone->new( name => "local" ); -sub whensent_local { - my $self = shift; +my $tz_f; +$tz_f = DateTime::TimeZone->new( name => FixMyStreet->config('TIME_ZONE') ) + if FixMyStreet->config('TIME_ZONE'); - return $self->whensent - ? $self->whensent->set_time_zone($tz) - : $self->whensent; -} +my $stz = sub { + my ( $orig, $self ) = ( shift, shift ); + my $s = $self->$orig(@_); + return $s unless $s && UNIVERSAL::isa($s, "DateTime"); + $s->set_time_zone($tz); + $s->set_time_zone($tz_f) if $tz_f; + return $s; +}; -sub whenanswered_local { - my $self = shift; - - return $self->whenanswered - ? $self->whenanswered->set_time_zone($tz) - : $self->whenanswered; -} +around whensent => $stz; +around whenanswered => $stz; 1; diff --git a/perllib/FixMyStreet/DB/Result/Token.pm b/perllib/FixMyStreet/DB/Result/Token.pm index b223ada3a..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,25 +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; - 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 7f43d1a52..523382670 100644 --- a/perllib/FixMyStreet/DB/Result/User.pm +++ b/perllib/FixMyStreet/DB/Result/User.pm @@ -26,8 +26,8 @@ __PACKAGE__->add_columns( { data_type => "text", is_nullable => 1 }, "password", { data_type => "text", default_value => "", is_nullable => 0 }, - "from_council", - { data_type => "integer", is_nullable => 1 }, + "from_body", + { data_type => "integer", is_foreign_key => 1, is_nullable => 1 }, "flagged", { data_type => "boolean", default_value => \"false", is_nullable => 0 }, "title", @@ -42,16 +42,27 @@ __PACKAGE__->has_many( { cascade_copy => 0, cascade_delete => 0 }, ); __PACKAGE__->has_many( + "bodies", + "FixMyStreet::DB::Result::Body", + { "foreign.comment_user_id" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); +__PACKAGE__->has_many( "comments", "FixMyStreet::DB::Result::Comment", { "foreign.user_id" => "self.id" }, { cascade_copy => 0, cascade_delete => 0 }, ); -__PACKAGE__->has_many( - "open311confs", - "FixMyStreet::DB::Result::Open311conf", - { "foreign.comment_user_id" => "self.id" }, - { cascade_copy => 0, cascade_delete => 0 }, +__PACKAGE__->belongs_to( + "from_body", + "FixMyStreet::DB::Result::Body", + { id => "from_body" }, + { + is_deferrable => 0, + join_type => "LEFT", + on_delete => "NO ACTION", + on_update => "NO ACTION", + }, ); __PACKAGE__->has_many( "problems", @@ -61,8 +72,8 @@ __PACKAGE__->has_many( ); -# Created by DBIx::Class::Schema::Loader v0.07017 @ 2012-05-01 16:20:29 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:LKi8u5IYnHW1+Mez64nvGg +# 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" => { @@ -144,38 +155,27 @@ sub alert_for_problem { } ); } -sub council { +sub body { my $self = shift; - - return '' unless $self->from_council; - - my $key = 'council_name:' . $self->from_council; - my $result = Memcached::get($key); - - unless ($result) { - my $area_info = mySociety::MaPit::call('area', $self->from_council); - $result = $area_info->{name}; - Memcached::set($key, $result, 86400); - } - - return $result; + return '' unless $self->from_body; + return $self->from_body->name; } -=head2 belongs_to_council +=head2 belongs_to_body - $belongs_to_council = $user->belongs_to_council( $council_list ); + $belongs_to_body = $user->belongs_to_body( $bodies ); -Returns true if the user belongs to the comma seperated list of council ids passed in +Returns true if the user belongs to the comma seperated list of body ids passed in =cut -sub belongs_to_council { +sub belongs_to_body { my $self = shift; - my $council = shift; + my $bodies = shift; - my %councils = map { $_ => 1 } split ',', $council; + my %bodies = map { $_ => 1 } split ',', $bodies; - return 1 if $self->from_council && $councils{ $self->from_council }; + return 1 if $self->from_body && $bodies{ $self->from_body->id }; return 0; } diff --git a/perllib/FixMyStreet/DB/ResultSet/AlertType.pm b/perllib/FixMyStreet/DB/ResultSet/AlertType.pm index 468df2654..545b54c60 100644 --- a/perllib/FixMyStreet/DB/ResultSet/AlertType.pm +++ b/perllib/FixMyStreet/DB/ResultSet/AlertType.pm @@ -29,6 +29,7 @@ sub email_alerts ($) { $query .= " $item_table.id as item_id, $item_table.text as item_text, $item_table.name as item_name, $item_table.anonymous as item_anonymous, + $item_table.confirmed as item_confirmed, $head_table.* from alert inner join $item_table on alert.parameter::integer = $item_table.${head_table}_id @@ -58,6 +59,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 @@ -89,13 +91,14 @@ sub email_alerts ($) { } my $url = $cobrand->base_url( $row->{alert_cobrand_data} ); - if ( $hashref_restriction && $hashref_restriction->{council} && $row->{council} ne $hashref_restriction->{council} ) { + if ( $hashref_restriction && $hashref_restriction->{bodies_str} && $row->{bodies_str} ne $hashref_restriction->{bodies_str} ) { $url = mySociety::Config::get('BASE_URL'); } # this is currently only for new_updates if ($row->{item_text}) { - if ( $row->{alert_user_id} == $row->{user_id} ) { + if ( $cobrand->moniker ne 'zurich' && $row->{alert_user_id} == $row->{user_id} ) { # This is an alert to the same user who made the report - make this a login link + # Don't bother with Zurich which has no accounts my $user = FixMyStreet::App->model('DB::User')->find( { id => $row->{alert_user_id} } ); @@ -112,6 +115,27 @@ sub email_alerts ($) { $data{problem_url} = $url . "/report/" . $row->{id}; } $data{data} .= $row->{item_name} . ' : ' if $row->{item_name} && !$row->{item_anonymous}; + if ( $cobrand->include_time_in_update_alerts ) { + # this is basically recreating the code from the inflate wrapper + # in the database model. + my $tz; + if ( FixMyStreet->config('TIME_ZONE') ) { + $tz = FixMyStreet->config('TIME_ZONE'); + } + + my $parser = DateTime::Format::Pg->new(); + my $dt = $parser->parse_timestamp( $row->{item_confirmed} ); + my $l_tz = DateTime::TimeZone->new( name => "local" ); + # We need to always set this otherwise we end up with the DateTime + # object being in the floating timezone in which case applying a + # subsequent timezone set will have no effect. + $dt->set_time_zone( $l_tz ); + if ( $tz ) { + my $tz_obj = DateTime::TimeZone->new( name => $tz ); + $dt->set_time_zone( $tz_obj ); + } + $data{data} .= $cobrand->prettify_dt( $dt, 'alert' ) . "\n\n"; + } $data{data} .= $row->{item_text} . "\n\n------\n\n"; # this is ward and council problems } else { @@ -155,6 +179,7 @@ sub email_alerts ($) { while (my $alert = $query->next) { my $cobrand = FixMyStreet::Cobrand->get_class_for_moniker($alert->cobrand)->new(); next unless $cobrand->email_host; + next if $alert->is_from_abuser; my $longitude = $alert->parameter; my $latitude = $alert->parameter2; @@ -166,7 +191,7 @@ sub email_alerts ($) { }; my $states = "'" . join( "', '", FixMyStreet::DB::Result::Problem::visible_states() ) . "'"; my %data = ( template => $template, data => '', alert_id => $alert->id, alert_email => $alert->user->email, lang => $alert->lang, cobrand => $alert->cobrand, cobrand_data => $alert->cobrand_data ); - my $q = "select problem.id, problem.council, problem.postcode, problem.geocode, problem.title from problem_find_nearby(?, ?, ?) as nearby, problem, users + my $q = "select problem.id, problem.bodies_str, problem.postcode, problem.geocode, problem.title from problem_find_nearby(?, ?, ?) as nearby, problem, users where nearby.problem_id = problem.id and problem.user_id = users.id and problem.state in ($states) @@ -183,7 +208,7 @@ sub email_alerts ($) { parameter => $row->{id}, } ); my $url = $cobrand->base_url( $alert->cobrand_data ); - if ( $hashref_restriction && $hashref_restriction->{council} && $row->{council} ne $hashref_restriction->{council} ) { + if ( $hashref_restriction && $hashref_restriction->{bodies_str} && $row->{bodies_str} ne $hashref_restriction->{bodies_str} ) { $url = mySociety::Config::get('BASE_URL'); } $data{data} .= $url . "/report/" . $row->{id} . " - $row->{title}\n\n"; @@ -202,7 +227,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( { @@ -211,6 +236,11 @@ sub _send_aggregated_alert_email(%) { $data{alert_email} = $user->email; } + my ($domain) = $data{alert_email} =~ m{ @ (.*) \z }x; + return if FixMyStreet::App->model('DB::Abuse')->search( { + email => [ $data{alert_email}, $domain ] + } )->first; + my $token = FixMyStreet::App->model("DB::Token")->new_result( { scope => 'alert', data => { @@ -230,13 +260,12 @@ sub _send_aggregated_alert_email(%) { unless -e $template; $template = Utils::read_file($template); - my $sender = $cobrand->contact_email; - (my $from = $sender) =~ s/team/fms-DO-NOT-REPLY/; # XXX + my $sender = FixMyStreet->config('DO_NOT_REPLY_EMAIL'); my $result = FixMyStreet::App->send_email_cron( { _template_ => $template, _parameters_ => \%data, - From => [ $from, _($cobrand->contact_name) ], + From => [ $sender, _($cobrand->contact_name) ], To => $data{alert_email}, }, $sender, @@ -255,6 +284,7 @@ sub _get_address_from_gecode { my $geocode = shift; return '' unless defined $geocode; + utf8::encode($geocode) if utf8::is_utf8($geocode); my $h = new IO::String($geocode); my $data = RABX::wire_rd($h); diff --git a/perllib/FixMyStreet/DB/ResultSet/Body.pm b/perllib/FixMyStreet/DB/ResultSet/Body.pm new file mode 100644 index 000000000..6802ed604 --- /dev/null +++ b/perllib/FixMyStreet/DB/ResultSet/Body.pm @@ -0,0 +1,17 @@ +package FixMyStreet::DB::ResultSet::Body; +use base 'DBIx::Class::ResultSet'; + +use strict; +use warnings; + +sub for_areas { + my ( $rs, @areas ) = @_; + + my $result = $rs->search( + { 'body_areas.area_id' => \@areas }, + { join => 'body_areas' } + ); + return $result; +} + +1; diff --git a/perllib/FixMyStreet/DB/ResultSet/Nearby.pm b/perllib/FixMyStreet/DB/ResultSet/Nearby.pm index 191223572..91c44d5f4 100644 --- a/perllib/FixMyStreet/DB/ResultSet/Nearby.pm +++ b/perllib/FixMyStreet/DB/ResultSet/Nearby.pm @@ -21,12 +21,7 @@ sub nearby { } if $c->cobrand->problems_clause; my $attrs = { - join => 'problem', - columns => [ - 'problem.id', 'problem.title', 'problem.latitude', - 'problem.longitude', 'distance', 'problem.state', - 'problem.confirmed', { 'problem.photo' => 'problem.photo is not null' }, - ], + prefetch => 'problem', bind => [ $mid_lat, $mid_lon, $dist ], order_by => [ 'distance', { -desc => 'created' } ], rows => $limit, diff --git a/perllib/FixMyStreet/DB/ResultSet/Problem.pm b/perllib/FixMyStreet/DB/ResultSet/Problem.pm index 6da383d6c..c108f7e29 100644 --- a/perllib/FixMyStreet/DB/ResultSet/Problem.pm +++ b/perllib/FixMyStreet/DB/ResultSet/Problem.pm @@ -84,15 +84,16 @@ sub _recent { my $key = $photos ? 'recent_photos' : 'recent'; $key .= ":$site_key:$num"; + # unconfirmed might be returned for e.g. Zurich, but would mean in moderation, so no photo + my @states = grep { $_ ne 'unconfirmed' } FixMyStreet::DB::Result::Problem->visible_states(); my $query = { non_public => 0, - state => [ FixMyStreet::DB::Result::Problem->visible_states() ], + state => \@states, }; $query->{photo} = { '!=', undef } if $photos; my $attrs = { - columns => [ 'id', 'title', 'confirmed' ], - order_by => { -desc => 'confirmed' }, + order_by => { -desc => 'coalesce(confirmed, created)' }, rows => $num, }; @@ -134,10 +135,6 @@ sub around_map { my ( $rs, $min_lat, $max_lat, $min_lon, $max_lon, $interval, $limit ) = @_; my $attr = { order_by => { -desc => 'created' }, - columns => [ - 'id', 'title', 'latitude', 'longitude', 'state', 'confirmed', - { photo => 'photo is not null' }, - ], }; $attr->{rows} = $limit if $limit; @@ -159,7 +156,7 @@ sub around_map { sub timeline { my ( $rs ) = @_; - my $prefetch = + my $prefetch = FixMyStreet::App->model('DB')->schema->storage->sql_maker->quote_char ? [ qw/user/ ] : []; @@ -219,46 +216,74 @@ 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 ) = @_; + # Set up site, language etc. - my ($verbose, $nomail) = CronFns::options(); + my ($verbose, $nomail, $debug_mode) = CronFns::options(); + my $base_url = mySociety::Config::get('BASE_URL'); - my $site = CronFns::site($base_url); + my $site = $site_override || CronFns::site($base_url); + my $states = [ 'confirmed', 'fixed' ]; + $states = [ 'unconfirmed', 'confirmed', 'in progress', 'planned', 'closed' ] if $site eq 'zurich'; my $unsent = FixMyStreet::App->model("DB::Problem")->search( { - state => [ 'confirmed', 'fixed' ], + state => $states, whensent => undef, - council => { '!=', undef }, + bodies_str => { '!=', undef }, } ); my (%notgot, %note); my $send_report = FixMyStreet::SendReport->new(); my $senders = $send_report->get_senders; - my %sending_skipped_by_method; + my $debug_unsent_count = 0; + debug_print("starting to loop through unsent problem reports...") if $debug_mode; while (my $row = $unsent->next) { my $cobrand = FixMyStreet::Cobrand->get_class_for_moniker($row->cobrand)->new(); - # 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 + if ($debug_mode) { + $debug_unsent_count++; + print "\n"; + debug_print("state=" . $row->state . ", bodies_str=" . $row->bodies_str . ($row->cobrand? ", cobrand=" . $row->cobrand : ""), $row->id); + } + + # 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 # more than once if there are multiple vhosts running off the same database. The email_host # call checks if this is the host that sends mail for this cobrand. - next unless $cobrand->email_host(); + if (! $cobrand->email_host()) { + debug_print("skipping because this host does not send reports for cobrand " . $cobrand->moniker, $row->id) if $debug_mode; + next; + } + $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 my $email_base_url = $cobrand->base_url_for_report($row); my %h = map { $_ => $row->$_ } qw/id title detail name category latitude longitude used_map/; - map { $h{$_} = $row->user->$_ } qw/email phone/; - $h{confirmed} = DateTime::Format::Pg->format_datetime( $row->confirmed->truncate (to => 'second' ) ); + map { $h{$_} = $row->user->$_ || '' } qw/email phone/; + $h{confirmed} = DateTime::Format::Pg->format_datetime( $row->confirmed->truncate (to => 'second' ) ) + if $row->confirmed; $h{query} = $row->postcode; $h{url} = $email_base_url . $row->url; + $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"; @@ -302,39 +327,42 @@ sub send_reports { my ( $sender_count ); if ($site eq 'emptyhomes') { - my $council = $row->council; - my $areas_info = mySociety::MaPit::call('areas', $council); + my $body = $row->bodies_str; + $body = FixMyStreet::App->model("DB::Body")->find($body); my $sender = "FixMyStreet::SendReport::EmptyHomes"; $reporters{ $sender } = $sender->new() unless $reporters{$sender}; - $reporters{ $sender }->add_council( $council, $areas_info->{$council} ); + $reporters{ $sender }->add_body( $body ); + $sender_count = 1; } else { # XXX Needs locks! - my @all_councils = split /,|\|/, $row->council; - my ($councils, $missing) = $row->council =~ /^([\d,]+)(?:\|([\d,]+))?/; - my @councils = split(/,/, $councils); - my $areas_info = mySociety::MaPit::call('areas', \@all_councils); + # 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 }, + { order_by => 'name' }, + ); + $missing = FixMyStreet::App->model("DB::Body")->find($missing) if $missing; my @dear; - foreach my $council (@councils) { - my $name = $areas_info->{$council}->{name}; - - my $sender_info = $cobrand->get_council_sender( $council, $areas_info->{$council}, $row->category ); + while (my $body = $bodies->next) { + my $sender_info = $cobrand->get_body_sender( $body, $row->category ); my $sender = "FixMyStreet::SendReport::" . $sender_info->{method}; if ( ! exists $senders->{ $sender } ) { - warn "No such sender [ $sender ] for council $name ( $council )"; + warn "No such sender [ $sender ] for body $body->name ( $body->id )"; next; } $reporters{ $sender } ||= $sender->new(); if ( $reporters{ $sender }->should_skip( $row ) ) { - $sending_skipped_by_method{ $sender }++ if - $reporters{ $sender }->skipped; + debug_print("skipped by sender " . $sender_info->{method} . " (might be due to previous failed attempts?)", $row->id) if $debug_mode; } else { - push @dear, $name; - $reporters{ $sender }->add_council( $council, $areas_info->{$council}, $sender_info->{config} ); + debug_print("OK, adding recipient body " . $body->id . ":" . $body->name . ", " . $body->send_method, $row->id) if $debug_mode; + push @dear, $body->name; + $reporters{ $sender }->add_body( $body, $sender_info->{config} ); } } @@ -352,7 +380,7 @@ sub send_reports { $h{subcategory_line} = "\n\n"; } - $h{councils_name} = join(_(' and '), @dear); + $h{bodies_name} = join(_(' and '), @dear); if ($h{category} eq _('Other')) { $h{multiple} = @dear>1 ? "[ " . _("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.") . " ]\n\n" : ''; @@ -360,11 +388,10 @@ sub send_reports { $h{multiple} = @dear>1 ? "[ " . _("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.") . " ]\n\n" : ''; } - $h{missing} = ''; + $h{missing} = ''; if ($missing) { - my $name = $areas_info->{$missing}->{name}; $h{missing} = '[ ' - . sprintf(_('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.'), $name) + . sprintf(_('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.'), $missing->name) . " ]\n\n"; } @@ -375,16 +402,16 @@ sub send_reports { die 'Report not going anywhere for ID ' . $row->id . '!'; } - next unless $sender_count; + if (! $sender_count) { + debug_print("can't send because sender count is zero", $row->id) if $debug_mode; + next; + } - if (mySociety::Config::get('STAGING_SITE')) { - # on a staging server send emails to ourselves rather than the councils - my @testing_councils = split( '\|', mySociety::Config::get('TESTING_COUNCILS') ); - unless ( grep { $row->council eq $_ } @testing_councils ) { - %reporters = map { $_ => $reporters{$_} } grep { /FixMyStreet::SendReport::(Email|NI)/ } keys %reporters; - unless (%reporters) { - %reporters = ( 'FixMyStreet::SendReport::Email' => FixMyStreet::SendReport::Email->new() ); - } + if (mySociety::Config::get('STAGING_SITE') && !mySociety::Config::get('SEND_REPORTS_ON_STAGING')) { + # on a staging server send emails to ourselves rather than the bodies + %reporters = map { $_ => $reporters{$_} } grep { /FixMyStreet::SendReport::(Email|NI|EmptyHomes)/ } keys %reporters; + unless (%reporters) { + %reporters = ( 'FixMyStreet::SendReport::Email' => FixMyStreet::SendReport::Email->new() ); } } @@ -392,6 +419,7 @@ sub send_reports { my $result = -1; for my $sender ( keys %reporters ) { + debug_print("sending using " . $sender, $row->id) if $debug_mode; $result *= $reporters{ $sender }->send( $row, \%h ); if ( $reporters{ $sender }->unconfirmed_counts) { foreach my $e (keys %{ $reporters{ $sender }->unconfirmed_counts } ) { @@ -414,6 +442,7 @@ sub send_reports { if ( $cobrand->report_sent_confirmation_email && !$h{anonymous_report}) { _send_report_sent_email( $row, \%h, $nomail ); } + debug_print("send successful: OK", $row->id) if $debug_mode; } else { my @errors; for my $sender ( keys %reporters ) { @@ -422,34 +451,35 @@ sub send_reports { } } $row->update_send_failed( join( '|', @errors ) ); + debug_print("send FAILED: " . join( '|', @errors ), $row->id) if $debug_mode; + } + } + if ($debug_mode) { + print "\n"; + if ($debug_unsent_count) { + debug_print("processed all unsent reports (total: $debug_unsent_count)"); + } else { + debug_print("no unsent reports were found (must have whensent=null and suitable bodies_str & state) -- nothing to send"); } } - if ($verbose) { + if ($verbose || $debug_mode) { print "Council email addresses that need checking:\n" if keys %notgot; foreach my $e (keys %notgot) { foreach my $c (keys %{$notgot{$e}}) { print " " . $notgot{$e}{$c} . " problem, to $e category $c (" . $note{$e}{$c}. ")\n"; } } - if (keys %sending_skipped_by_method) { - my $c = 0; - print "\nProblem reports that send-reports did not attempt to send the following:\n"; - foreach my $send_method (sort keys %sending_skipped_by_method) { - printf " %-24s %4d\n", "$send_method:", $sending_skipped_by_method{$send_method}; - $c+=$sending_skipped_by_method{$send_method}; - } - printf " %-24s %4d\n", "Total:", $c; - } my $sending_errors = ''; my $unsent = FixMyStreet::App->model("DB::Problem")->search( { state => [ 'confirmed', 'fixed' ], whensent => undef, - council => { '!=', undef }, + bodies_str => { '!=', undef }, send_fail_count => { '>', 0 } } ); while (my $row = $unsent->next) { - $sending_errors .= "* http://www.fixmystreet.com/report/" . $row->id . ", failed " + my $base_url = mySociety::Config::get('BASE_URL'); + $sending_errors .= "* " . $base_url . "/report/" . $row->id . ", failed " . $row->send_fail_count . " times, last at " . $row->send_fail_timestamp . ", reason " . $row->send_fail_reason . "\n"; } @@ -485,4 +515,11 @@ sub _send_report_sent_email { ); } +sub debug_print { + my $msg = shift; + my $id = shift || ''; + $id = "report $id: " if $id; + print "[] $id$msg\n"; +} + 1; diff --git a/perllib/FixMyStreet/DB/ResultSet/Questionnaire.pm b/perllib/FixMyStreet/DB/ResultSet/Questionnaire.pm index d6b3eb5cb..6f2c19b5e 100644 --- a/perllib/FixMyStreet/DB/ResultSet/Questionnaire.pm +++ b/perllib/FixMyStreet/DB/ResultSet/Questionnaire.pm @@ -50,6 +50,7 @@ sub send_questionnaires_period { # Not all cobrands send questionnaires next unless $cobrand->send_questionnaires; + next if $row->is_from_abuser; # 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 @@ -89,9 +90,8 @@ sub send_questionnaires_period { } ); $h{url} = $cobrand->base_url($row->cobrand_data) . '/Q/' . $token->token; - my $sender = $cobrand->contact_email; + my $sender = FixMyStreet->config('DO_NOT_REPLY_EMAIL'); my $sender_name = _($cobrand->contact_name); - $sender =~ s/team/fms-DO-NOT-REPLY/; print "Sending questionnaire " . $questionnaire->id . ", problem " . $row->id . ", token " . $token->token . " to " diff --git a/perllib/FixMyStreet/EmailSend.pm b/perllib/FixMyStreet/EmailSend.pm index 61d8a70c2..8b6eed462 100644 --- a/perllib/FixMyStreet/EmailSend.pm +++ b/perllib/FixMyStreet/EmailSend.pm @@ -2,10 +2,7 @@ package FixMyStreet::EmailSend; use base Email::Send::SMTP; sub get_env_sender { - # Should really use cobrand's contact_email function, but not sure how - # best to access that from in here. - my $sender = FixMyStreet->config('CONTACT_EMAIL'); - $sender =~ s/team/fms-DO-NOT-REPLY/; + my $sender = FixMyStreet->config('DO_NOT_REPLY_EMAIL'); return $sender; } diff --git a/perllib/FixMyStreet/Geocode.pm b/perllib/FixMyStreet/Geocode.pm index f92e9cc9a..61c398985 100644 --- a/perllib/FixMyStreet/Geocode.pm +++ b/perllib/FixMyStreet/Geocode.pm @@ -13,6 +13,7 @@ use URI::Escape; use FixMyStreet::Geocode::Bing; use FixMyStreet::Geocode::Google; use FixMyStreet::Geocode::OSM; +use FixMyStreet::Geocode::Zurich; # lookup STRING CONTEXT # Given a user-inputted string, try and convert it into co-ordinates using either @@ -30,21 +31,30 @@ sub lookup { } # string STRING CONTEXT -# Canonicalises, and then passes to some external API to look stuff up. +# Passes the string to some external API to look stuff up. sub string { my ($s, $c) = @_; + + my $service = $c->config->{GEOCODER}; + $service = $service->{type} if ref $service; + $service = 'OSM' unless $service =~ /^(Bing|Google|OSM|Zurich)$/; + $service = 'OSM' if $service eq 'Bing' && !FixMyStreet->config('BING_MAPS_API_KEY'); + $service = "FixMyStreet::Geocode::${service}::string"; + + no strict 'refs'; + return &$service($s, $c); +} + +# escape STRING CONTEXT +# Escapes string for putting in URL geocoding call +sub escape { + my ($s, $c) = @_; $s = lc($s); $s =~ s/[^-&\w ']/ /g; $s =~ s/\s+/ /g; $s = URI::Escape::uri_escape_utf8($s); $s =~ s/%20/+/g; - my $params = $c->cobrand->disambiguate_location($s); - return FixMyStreet::Geocode::Bing::string($s, $c, $params) - if FixMyStreet->config('BING_MAPS_API_KEY'); - # Fall back to Google API, which allow access with and without a key - return FixMyStreet::Geocode::Google::string($s, $c, $params) - if FixMyStreet->config('GOOGLE_MAPS_API_KEY'); - return FixMyStreet::Geocode::OSM::string($s, $c, $params); + return $s; } 1; diff --git a/perllib/FixMyStreet/Geocode/Bing.pm b/perllib/FixMyStreet/Geocode/Bing.pm index 18e6b56ce..85eef3d0f 100644 --- a/perllib/FixMyStreet/Geocode/Bing.pm +++ b/perllib/FixMyStreet/Geocode/Bing.pm @@ -15,14 +15,21 @@ use File::Path (); use LWP::Simple; use Digest::MD5 qw(md5_hex); +use mySociety::Locale; + # string STRING CONTEXT # Looks up on Bing Maps API, and caches, a user-inputted location. # Returns array of (LAT, LON, ERROR), where ERROR is either undef, a string, or # an array of matches if there are more than one. The information in the query # may be used to disambiguate the location in cobranded versions of the site. sub string { - my ( $s, $c, $params ) = @_; + my ( $s, $c ) = @_; + + my $params = $c->cobrand->disambiguate_location($s); + + $s = FixMyStreet::Geocode::escape($s); $s .= '+' . $params->{town} if $params->{town} and $s !~ /$params->{town}/i; + my $url = "http://dev.virtualearth.net/REST/v1/Locations?q=$s"; $url .= '&userMapView=' . join(',', @{$params->{bounds}}) if $params->{bounds}; diff --git a/perllib/FixMyStreet/Geocode/FixaMinGata.pm b/perllib/FixMyStreet/Geocode/FixaMinGata.pm new file mode 100644 index 000000000..2db25f504 --- /dev/null +++ b/perllib/FixMyStreet/Geocode/FixaMinGata.pm @@ -0,0 +1,204 @@ +#!/usr/bin/perl +# +# FixMyStreet:Geocode::FixaMinGata +# OpenStreetmap forward and reverse geocoding for FixMyStreet. +# +# Copyright (c) 2011 Petter Reinholdtsen. Some rights reserved. +# Email: pere@hungry.com + +# This module is a slightly derived version of OSM.pm. + +# As of January 2014, the FixaMinGata developers are considering to make further +# changes related to OSM, so it's probably best to keep this module separate +# from the OSM module for now. + +package FixMyStreet::Geocode::FixaMinGata; + +use warnings; +use strict; +use Data::Dumper; + +use Digest::MD5 qw(md5_hex); +use Encode; +use File::Slurp; +use File::Path (); +use LWP::Simple qw($ua); +use Memcached; +use XML::Simple; +use mySociety::Locale; + +my $osmapibase = "http://www.openstreetmap.org/api/"; +my $nominatimbase = "http://nominatim.openstreetmap.org/"; + +# string STRING CONTEXT +# Looks up on Nominatim, and caches, a user-inputted location. +# Returns array of (LAT, LON, ERROR), where ERROR is either undef, a string, or +# an array of matches if there are more than one. The information in the query +# may be used to disambiguate the location in cobranded versions of the site. +sub string { + my ( $s, $c ) = @_; + + my $params = $c->cobrand->disambiguate_location($s); + + $s = FixMyStreet::Geocode::escape($s); + # $s .= '+' . $params->{town} if $params->{town} and $s !~ /$params->{town}/i; + + my $url = "${nominatimbase}search?"; + my %query_params = ( + q => $s, + format => 'json', + addressdetails => 1, + limit => 20, + #'accept-language' => '', + email => 'info' . chr(64) . 'morus.se', + ); + # $query_params{viewbox} = $params->{bounds}[1] . ',' . $params->{bounds}[2] . ',' . $params->{bounds}[3] . ',' . $params->{bounds}[0] + # if $params->{bounds}; + $query_params{countrycodes} = $params->{country} + if $params->{country}; + $url .= join('&', map { "$_=$query_params{$_}" } keys %query_params); + + my $cache_dir = FixMyStreet->config('GEO_CACHE') . 'osm/'; + my $cache_file = $cache_dir . md5_hex($url); + my $js; + if (-s $cache_file) { + $js = File::Slurp::read_file($cache_file); + } else { + $ua->timeout(15); + $js = LWP::Simple::get($url); + $js = encode_utf8($js) if utf8::is_utf8($js); + File::Path::mkpath($cache_dir); + File::Slurp::write_file($cache_file, $js) if $js; + } + + if (!$js) { + return { error => _('Sorry, we could not find that location.') }; + } + + $js = JSON->new->utf8->allow_nonref->decode($js); + + my ( %locations, $error, @valid_locations, $latitude, $longitude ); + foreach (@$js) { + # These co-ordinates are output as query parameters in a URL, make sure they have a "." + next if $_->{class} eq "boundary"; + + my @s = split(/,/, $_->{display_name}); + + my $address = join(",", @s[0,1,2]); + + $locations{$address} = [$_->{lat}, $_->{lon}]; + } + + my ($key) = keys %locations; + + return { latitude => $locations{$key}[0], longitude => $locations{$key}[1] } if scalar keys %locations == 1; + return { error => _('Sorry, we could not find that location.') } if scalar keys %locations == 0; + + foreach $key (keys %locations) { + ( $latitude, $longitude ) = ($locations{$key}[0], $locations{$key}[1]); + mySociety::Locale::in_gb_locale { + push (@$error, { + address => $key, + latitude => sprintf('%0.6f', $latitude), + longitude => sprintf('%0.6f', $longitude) + }); + }; + } + + return { error => $error }; +} + +sub reverse_geocode { + my ($latitude, $longitude, $zoom) = @_; + my $url = + "${nominatimbase}reverse?format=xml&zoom=$zoom&lat=$latitude&lon=$longitude"; + my $key = "OSM:reverse_geocode:$url"; + my $result = Memcached::get($key); + unless ($result) { + my $j = LWP::Simple::get($url); + if ($j) { + Memcached::set($key, $j, 3600); + my $ref = XMLin($j); + return $ref; + } else { + print STDERR "No reply from $url\n"; + } + return undef; + } + return XMLin($result); +} + +sub _osmxml_to_hash { + my ($xml, $type) = @_; + my $ref = XMLin($xml); + my %tags; + if ('ARRAY' eq ref $ref->{$type}->{tag}) { + map { $tags{$_->{'k'}} = $_->{'v'} } @{$ref->{$type}->{tag}}; + return \%tags; + } else { + return undef; + } +} + +sub get_object_tags { + my ($type, $id) = @_; + my $url = "${osmapibase}0.6/$type/$id"; + my $key = "OSM:get_object_tags:$url"; + my $result = Memcached::get($key); + unless ($result) { + my $j = LWP::Simple::get($url); + if ($j) { + Memcached::set($key, $j, 3600); + return _osmxml_to_hash($j, $type); + } else { + print STDERR "No reply from $url\n"; + } + return undef; + } + return _osmxml_to_hash($result, $type); +} + +# A better alternative might be +# http://www.geonames.org/maps/osm-reverse-geocoder.html#findNearbyStreetsOSM +sub get_nearest_road_tags { + my ( $cobrand, $latitude, $longitude ) = @_; + my $inforef = reverse_geocode($latitude, $longitude, 16); + if (exists $inforef->{result}->{osm_type} + && 'way' eq $inforef->{result}->{osm_type}) { + my $osmtags = get_object_tags('way', + $inforef->{result}->{osm_id}); + unless ( exists $osmtags->{operator} ) { + $osmtags->{operatorguess} = $cobrand->guess_road_operator( $osmtags ); + } + return $osmtags; + } + return undef; +} + +sub closest_road_text { + my ( $cobrand, $latitude, $longitude ) = @_; + my $str = ''; + my $osmtags = get_nearest_road_tags( $cobrand, $latitude, $longitude ); + if ($osmtags) { + my ($name, $ref) = ('',''); + $name = $osmtags->{name} if exists $osmtags->{name}; + $ref = " ($osmtags->{ref})" if exists $osmtags->{ref}; + if ($name || $ref) { + $str .= _('The following information about the nearest road might be inaccurate or irrelevant, if the problem is close to several roads or close to a road without a name registered in OpenStreetMap.') . "\n\n"; + $str .= sprintf(_("Nearest named road to the pin placed on the map (automatically generated using OpenStreetMap): %s%s"), + $name, $ref) . "\n\n"; + + if (my $operator = $osmtags->{operator}) { + $str .= sprintf(_("Road operator for this named road (from OpenStreetMap): %s"), + $operator) . "\n\n"; + } elsif ($operator = $osmtags->{operatorguess}) { + $str .= sprintf(_("Road operator for this named road (derived from road reference number and type): %s"), + $operator) . "\n\n"; + } + } + } + return $str; +} + +1; + diff --git a/perllib/FixMyStreet/Geocode/Google.pm b/perllib/FixMyStreet/Geocode/Google.pm index db3a8ae91..fd65b89b1 100644 --- a/perllib/FixMyStreet/Geocode/Google.pm +++ b/perllib/FixMyStreet/Geocode/Google.pm @@ -14,6 +14,7 @@ use File::Slurp; use File::Path (); use LWP::Simple; use Digest::MD5 qw(md5_hex); +use mySociety::Locale; # string STRING CONTEXT # Looks up on Google Maps API, and caches, a user-inputted location. @@ -21,7 +22,11 @@ use Digest::MD5 qw(md5_hex); # an array of matches if there are more than one. The information in the query # may be used to disambiguate the location in cobranded versions of the site. sub string { - my ( $s, $c, $params ) = @_; + my ( $s, $c ) = @_; + + my $params = $c->cobrand->disambiguate_location($s); + + $s = FixMyStreet::Geocode::escape($s); my $url = 'http://maps.google.com/maps/geo?q=' . $s; $url .= '&ll=' . $params->{centre} if $params->{centre}; diff --git a/perllib/FixMyStreet/Geocode/OSM.pm b/perllib/FixMyStreet/Geocode/OSM.pm index d96338c16..fd14b0acc 100644 --- a/perllib/FixMyStreet/Geocode/OSM.pm +++ b/perllib/FixMyStreet/Geocode/OSM.pm @@ -29,8 +29,13 @@ my $nominatimbase = "http://nominatim.openstreetmap.org/"; # an array of matches if there are more than one. The information in the query # may be used to disambiguate the location in cobranded versions of the site. sub string { - my ( $s, $c, $params ) = @_; + my ( $s, $c ) = @_; + + my $params = $c->cobrand->disambiguate_location($s); + + $s = FixMyStreet::Geocode::escape($s); $s .= '+' . $params->{town} if $params->{town} and $s !~ /$params->{town}/i; + my $url = "${nominatimbase}search?"; my %query_params = ( q => $s, diff --git a/perllib/FixMyStreet/Geocode/Zurich.pm b/perllib/FixMyStreet/Geocode/Zurich.pm new file mode 100644 index 000000000..7ba3d27ad --- /dev/null +++ b/perllib/FixMyStreet/Geocode/Zurich.pm @@ -0,0 +1,114 @@ +#!/usr/bin/perl +# +# FixMyStreet::Geocode::Zurich +# Geocoding with Zurich web service. +# +# Thanks to http://msdn.microsoft.com/en-us/library/ms995764.aspx +# and http://noisemore.wordpress.com/2009/03/19/perl-soaplite-wsse-web-services-security-soapheader/ +# for SOAP::Lite pointers +# +# Copyright (c) 2012 UK Citizens Online Democracy. All rights reserved. +# Email: matthew@mysociety.org; WWW: http://www.mysociety.org/ + +package FixMyStreet::Geocode::Zurich; + +use strict; +use Digest::MD5 qw(md5_hex); +use File::Path (); +use Geo::Coordinates::CH1903; +use SOAP::Lite; +use Storable; +use mySociety::Locale; + +my ($soap, $method, $security); + +sub setup_soap { + return if $soap; + + # Variables for the SOAP web service + my $geocoder = FixMyStreet->config('GEOCODER'); + my $url = $geocoder->{url}; + my $username = $geocoder->{username}; + my $password = $geocoder->{password}; + my $attr = 'http://ch/geoz/fixmyzuerich/service'; + my $action = "$attr/IFixMyZuerich/"; + + # Set up the SOAP handler + $security = SOAP::Header->name("Security")->attr({ + 'mustUnderstand' => 'true', + 'xmlns' => 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd' + })->value( + \SOAP::Header->name( + "UsernameToken" => \SOAP::Header->value( + SOAP::Header->name('Username', $username), + SOAP::Header->name('Password', $password) + ) + ) + ); + $soap = SOAP::Lite->on_action( sub { $action . $_[1]; } )->proxy($url); + $method = SOAP::Data->name('getLocation')->attr({ xmlns => $attr }); +} + +# string STRING CONTEXT +# Looks up on Zurich web service a user-inputted location. +# Returns array of (LAT, LON, ERROR), where ERROR is either undef, a string, or +# an array of matches if there are more than one. +# If there is no ambiguity, returns only a {lat,long} hash, unless allow_single_match_string is true +# (because the auto-complete use of this (in /around) should send the matched name even though it's not ambiguous). +# +# The information in the query may be used to disambiguate the location in cobranded +# versions of the site. + +sub string { + my ( $s, $c ) = @_; + + setup_soap(); + + my $cache_dir = FixMyStreet->config('GEO_CACHE') . 'zurich/'; + my $cache_file = $cache_dir . md5_hex($s); + my $result; + if (-s $cache_file) { + $result = retrieve($cache_file); + } else { + my $search = SOAP::Data->name('search' => $s)->type(''); + my $count = SOAP::Data->name('count' => 10)->type(''); + eval { + $result = $soap->call($method, $security, $search, $count); + }; + if ($@) { + warn $@ if FixMyStreet->config('STAGING_SITE'); + return { error => 'The geocoder appears to be down.' }; + } + $result = $result->result; + File::Path::mkpath($cache_dir); + store $result, $cache_file if $result; + } + + if (!$result || !$result->{Location}) { + return { error => _('Sorry, we could not parse that location. Please try again.') }; + } + + my $results = $result->{Location}; + $results = [ $results ] unless ref $results eq 'ARRAY'; + + my ( $error, @valid_locations, $latitude, $longitude ); + foreach (@$results) { + ($latitude, $longitude) = Geo::Coordinates::CH1903::to_latlon($_->{easting}, $_->{northing}); + mySociety::Locale::in_gb_locale { + push (@$error, { + address => $_->{text}, + latitude => sprintf('%0.6f', $latitude), + longitude => sprintf('%0.6f', $longitude) + }); + }; + push (@valid_locations, $_); + last if lc($_->{text}) eq lc($s); + } + if (scalar @valid_locations == 1 && ! $c->stash->{allow_single_geocode_match_strings} ) { + return { latitude => $latitude, longitude => $longitude }; + } + return { error => $error }; +} + +1; + diff --git a/perllib/FixMyStreet/Map.pm b/perllib/FixMyStreet/Map.pm index 587c63d25..f2dd0da6d 100644 --- a/perllib/FixMyStreet/Map.pm +++ b/perllib/FixMyStreet/Map.pm @@ -114,7 +114,26 @@ sub _map_features { } sub map_pins { - return $map_class->map_pins(@_); + my ($c, $interval) = @_; + + my $bbox = $c->req->param('bbox'); + my ( $min_lon, $min_lat, $max_lon, $max_lat ) = split /,/, $bbox; + + my ( $around_map, $around_map_list, $nearby, $dist ) = + FixMyStreet::Map::map_features_bounds( $c, $min_lon, $min_lat, $max_lon, $max_lat, $interval ); + + # create a list of all the pins + my @pins = map { + # Here we might have a DB::Problem or a DB::Nearby, we always want the problem. + my $p = (ref $_ eq 'FixMyStreet::App::Model::DB::Nearby') ? $_->problem : $_; + my $colour = $c->cobrand->pin_colour( $p, 'around' ); + [ $p->latitude, $p->longitude, + $colour, + $p->id, $p->title_safe + ] + } @$around_map, @$nearby; + + return (\@pins, $around_map_list, $nearby, $dist); } sub click_to_wgs84 { diff --git a/perllib/FixMyStreet/Map/Google.pm b/perllib/FixMyStreet/Map/Google.pm index c0d83e35a..9deefc033 100644 --- a/perllib/FixMyStreet/Map/Google.pm +++ b/perllib/FixMyStreet/Map/Google.pm @@ -3,12 +3,17 @@ # FixMyStreet:Map::Google # Google maps on FixMyStreet. # -# Copyright (c) 2010 UK Citizens Online Democracy. All rights reserved. +# Copyright (c) 2013 UK Citizens Online Democracy. All rights reserved. # Email: matthew@mysociety.org; WWW: http://www.mysociety.org/ package FixMyStreet::Map::Google; use strict; +use mySociety::Gaze; +use Utils; + +use constant ZOOM_LEVELS => 6; +use constant MIN_ZOOM_LEVEL => 13; # display_map C PARAMS # PARAMS include: @@ -17,9 +22,37 @@ use strict; # PINS is array of pins to show, location and colour sub display_map { my ($self, $c, %params) = @_; + + my $numZoomLevels = ZOOM_LEVELS; + my $zoomOffset = MIN_ZOOM_LEVEL; + if ($params{any_zoom}) { + $numZoomLevels = 19; + $zoomOffset = 0; + } + + # Adjust zoom level dependent upon population density + my $dist = $c->stash->{distance} + || mySociety::Gaze::get_radius_containing_population( $params{latitude}, $params{longitude}, 200_000 ); + my $default_zoom = $c->cobrand->default_map_zoom() ? $c->cobrand->default_map_zoom() : $numZoomLevels - 4; + $default_zoom = $numZoomLevels - 3 if $dist < 10; + + # Map centre may be overridden in the query string + $params{latitude} = Utils::truncate_coordinate($c->req->params->{lat} + 0) + if defined $c->req->params->{lat}; + $params{longitude} = Utils::truncate_coordinate($c->req->params->{lon} + 0) + if defined $c->req->params->{lon}; + + my $zoom = defined $c->req->params->{zoom} ? $c->req->params->{zoom} + 0 : $default_zoom; + $zoom = $numZoomLevels - 1 if $zoom >= $numZoomLevels; + $zoom = 0 if $zoom < 0; + $params{zoom_act} = $zoomOffset + $zoom; + $c->stash->{map} = { %params, type => 'google', + zoom => $zoom, + zoomOffset => $zoomOffset, + numZoomLevels => $numZoomLevels, }; } 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/Map/OSM.pm b/perllib/FixMyStreet/Map/OSM.pm index 6b3bebba2..74af0e9f3 100644 --- a/perllib/FixMyStreet/Map/OSM.pm +++ b/perllib/FixMyStreet/Map/OSM.pm @@ -13,7 +13,7 @@ use Math::Trig; use mySociety::Gaze; use Utils; -use constant ZOOM_LEVELS => 5; +use constant ZOOM_LEVELS => 6; use constant MIN_ZOOM_LEVEL => 13; sub map_type { @@ -55,15 +55,15 @@ sub display_map { my $numZoomLevels = ZOOM_LEVELS; my $zoomOffset = MIN_ZOOM_LEVEL; if ($params{any_zoom}) { - $numZoomLevels = 18; + $numZoomLevels = 19; $zoomOffset = 0; } # Adjust zoom level dependent upon population density my $dist = $c->stash->{distance} || mySociety::Gaze::get_radius_containing_population( $params{latitude}, $params{longitude}, 200_000 ); - my $default_zoom = $c->cobrand->default_map_zoom() ? $c->cobrand->default_map_zoom() : $numZoomLevels - 3; - $default_zoom = $numZoomLevels - 2 if $dist < 10; + my $default_zoom = $c->cobrand->default_map_zoom() ? $c->cobrand->default_map_zoom() : $numZoomLevels - 4; + $default_zoom = $numZoomLevels - 3 if $dist < 10; # Map centre may be overridden in the query string $params{latitude} = Utils::truncate_coordinate($c->req->params->{lat} + 0) @@ -94,29 +94,6 @@ sub display_map { }; } -sub map_pins { - my ($self, $c, $interval) = @_; - - my $bbox = $c->req->param('bbox'); - my ( $min_lon, $min_lat, $max_lon, $max_lat ) = split /,/, $bbox; - - my ( $around_map, $around_map_list, $nearby, $dist ) = - FixMyStreet::Map::map_features_bounds( $c, $min_lon, $min_lat, $max_lon, $max_lat, $interval ); - - # create a list of all the pins - my @pins = map { - # Here we might have a DB::Problem or a DB::Nearby, we always want the problem. - my $p = (ref $_ eq 'FixMyStreet::App::Model::DB::Nearby') ? $_->problem : $_; - my $colour = $c->cobrand->pin_colour( $p, 'around' ); - [ $p->latitude, $p->longitude, - $colour, - $p->id, $p->title - ] - } @$around_map, @$nearby; - - return (\@pins, $around_map_list, $nearby, $dist); -} - sub compass { my ( $x, $y, $z ) = @_; return { diff --git a/perllib/FixMyStreet/Map/OSM/MapQuest.pm b/perllib/FixMyStreet/Map/OSM/MapQuest.pm index 4751679f5..a7f1b334e 100644 --- a/perllib/FixMyStreet/Map/OSM/MapQuest.pm +++ b/perllib/FixMyStreet/Map/OSM/MapQuest.pm @@ -15,6 +15,10 @@ sub map_type { return 'OpenLayers.Layer.OSM.MapQuestOpen'; } +sub map_template { + return 'mapquest-attribution'; +} + sub map_tiles { my ( $self, %params ) = @_; my ( $x, $y, $z ) = ( $params{x_tile}, $params{y_tile}, $params{zoom_act} ); @@ -28,7 +32,7 @@ sub map_tiles { } sub base_tile_url { - return 'mqcdn.com/tiles/1.0.0/osm/'; + return 'mqcdn.com/tiles/1.0.0/map/'; } 1; diff --git a/perllib/FixMyStreet/Map/Zurich.pm b/perllib/FixMyStreet/Map/Zurich.pm new file mode 100644 index 000000000..e09f8c90f --- /dev/null +++ b/perllib/FixMyStreet/Map/Zurich.pm @@ -0,0 +1,169 @@ +#!/usr/bin/perl +# +# FixMyStreet:Map::Zurich +# Zurich have their own tileserver. +# +# Copyright (c) 2012 UK Citizens Online Democracy. All rights reserved. +# Email: steve@mysociety.org; WWW: http://www.mysociety.org/ + +package FixMyStreet::Map::Zurich; + +use strict; +use Geo::Coordinates::CH1903; +use Math::Trig; +use Utils; + +use constant ZOOM_LEVELS => 8; +use constant DEFAULT_ZOOM => 5; +use constant MIN_ZOOM_LEVEL => 0; +use constant ID_OFFSET => 2; + +sub map_tiles { + my ( $self, %params ) = @_; + my ( $col, $row, $z ) = ( $params{x_tile}, $params{y_tile}, $params{matrix_id} ); + my $tile_url = $self->base_tile_url(); + return [ + "$tile_url/$z/" . ($row - 1) . "/" . ($col - 1) . ".jpg", + "$tile_url/$z/" . ($row - 1) . "/$col.jpg", + "$tile_url/$z/$row/" . ($col - 1) . ".jpg", + "$tile_url/$z/$row/$col.jpg", + ]; +} + +sub base_tile_url { + return '/maps/Hybrid/1.0.0/Hybrid/default/nativeTileMatrixSet'; +} + +sub copyright { + return '© Stadt Zürich'; +} + +# display_map C PARAMS +# PARAMS include: +# latitude, longitude for the centre point of the map +# CLICKABLE is set if the map is clickable +# PINS is array of pins to show, location and colour +sub display_map { + my ($self, $c, %params) = @_; + + # Map centre may be overridden in the query string + $params{latitude} = Utils::truncate_coordinate($c->req->params->{lat} + 0) + if defined $c->req->params->{lat}; + $params{longitude} = Utils::truncate_coordinate($c->req->params->{lon} + 0) + if defined $c->req->params->{lon}; + + my $zoom = defined $c->req->params->{zoom} + ? $c->req->params->{zoom} + 0 + : $c->stash->{page} eq 'report' + ? DEFAULT_ZOOM+1 + : DEFAULT_ZOOM; + $zoom = ZOOM_LEVELS - 1 if $zoom >= ZOOM_LEVELS; + $zoom = 0 if $zoom < 0; + + ($params{x_tile}, $params{y_tile}, $params{matrix_id}) = latlon_to_tile_with_adjust($params{latitude}, $params{longitude}, $zoom); + + foreach my $pin (@{$params{pins}}) { + ($pin->{px}, $pin->{py}) = latlon_to_px($pin->{latitude}, $pin->{longitude}, $params{x_tile}, $params{y_tile}, $zoom); + } + + $c->stash->{map} = { + %params, + type => 'zurich', + map_type => 'OpenLayers.Layer.WMTS', + tiles => $self->map_tiles( %params ), + copyright => $self->copyright(), + zoom => $zoom, + zoomOffset => MIN_ZOOM_LEVEL, + numZoomLevels => ZOOM_LEVELS, + }; +} + +# Given a lat/lon, convert it to Zurch tile co-ordinates (precise). +sub latlon_to_tile($$$) { + my ($lat, $lon, $zoom) = @_; + + my ($x, $y) = Geo::Coordinates::CH1903::from_latlon($lat, $lon); + + my $matrix_id = $zoom + ID_OFFSET; + my @scales = ( '250000', '125000', '64000', '32000', '16000', '8000', '4000', '2000', '1000', '500' ); + my $tileOrigin = { lat => 30814423, lon => -29386322 }; + my $tileSize = 256; + my $res = $scales[$matrix_id] / (39.3701 * 96); # OpenLayers.INCHES_PER_UNIT[units] * OpenLayers.DOTS_PER_INCH + + my $fx = ( $x - $tileOrigin->{lon} ) / ($res * $tileSize); + my $fy = ( $tileOrigin->{lat} - $y ) / ($res * $tileSize); + + return ( $fx, $fy, $matrix_id ); +} + +# Given a lat/lon, convert it to OSM tile co-ordinates (nearest actual tile, +# adjusted so the point will be near the centre of a 2x2 tiled map). +sub latlon_to_tile_with_adjust($$$) { + my ($lat, $lon, $zoom) = @_; + my ($x_tile, $y_tile, $matrix_id) = latlon_to_tile($lat, $lon, $zoom); + + # Try and have point near centre of map + if ($x_tile - int($x_tile) > 0.5) { + $x_tile += 1; + } + if ($y_tile - int($y_tile) > 0.5) { + $y_tile += 1; + } + + return ( int($x_tile), int($y_tile), $matrix_id ); +} + +sub tile_to_latlon { + my ($fx, $fy, $zoom) = @_; + + my $matrix_id = $zoom + ID_OFFSET; + my @scales = ( '250000', '125000', '64000', '32000', '16000', '8000', '4000', '2000', '1000', '500' ); + my $tileOrigin = { lat => 30814423, lon => -29386322 }; + my $tileSize = 256; + my $res = $scales[$matrix_id] / (39.3701 * 96); # OpenLayers.INCHES_PER_UNIT[units] * OpenLayers.DOTS_PER_INCH + + my $x = $fx * $res * $tileSize + $tileOrigin->{lon}; + my $y = $tileOrigin->{lat} - $fy * $res * $tileSize; + + my ($lat, $lon) = Geo::Coordinates::CH1903::to_latlon($x, $y); + + return ( $lat, $lon ); +} + +# Given a lat/lon, convert it to pixel co-ordinates from the top left of the map +sub latlon_to_px($$$$$) { + my ($lat, $lon, $x_tile, $y_tile, $zoom) = @_; + my ($pin_x_tile, $pin_y_tile) = latlon_to_tile($lat, $lon, $zoom); + my $pin_x = tile_to_px($pin_x_tile, $x_tile); + my $pin_y = tile_to_px($pin_y_tile, $y_tile); + return ($pin_x, $pin_y); +} + +# Convert tile co-ordinates to pixel co-ordinates from top left of map +# C is centre tile reference of displayed map +sub tile_to_px { + my ($p, $c) = @_; + $p = 256 * ($p - $c + 1); + $p = int($p + .5 * ($p <=> 0)); + return $p; +} + +sub click_to_tile { + my ($pin_tile, $pin) = @_; + $pin -= 256 while $pin > 256; + $pin += 256 while $pin < 0; + return $pin_tile + $pin / 256; +} + +# Given some click co-ords (the tile they were on, and where in the +# tile they were), convert to WGS84 and return. +sub click_to_wgs84 { + my ($self, $c, $pin_tile_x, $pin_x, $pin_tile_y, $pin_y) = @_; + my $tile_x = click_to_tile($pin_tile_x, $pin_x); + my $tile_y = click_to_tile($pin_tile_y, $pin_y); + my $zoom = (defined $c->req->params->{zoom} ? $c->req->params->{zoom} : DEFAULT_ZOOM); + my ($lat, $lon) = tile_to_latlon($tile_x, $tile_y, $zoom); + return ( $lat, $lon ); +} + +1; diff --git a/perllib/FixMyStreet/SendReport.pm b/perllib/FixMyStreet/SendReport.pm index 9ba507862..5087c7ead 100644 --- a/perllib/FixMyStreet/SendReport.pm +++ b/perllib/FixMyStreet/SendReport.pm @@ -7,17 +7,27 @@ use Module::Pluggable search_path => __PACKAGE__, require => 1; -has 'councils' => ( is => 'rw', isa => 'HashRef', default => sub { {} } ); +has 'body_config' => ( is => 'rw', isa => 'HashRef', default => sub { {} } ); +has 'bodies' => ( is => 'rw', isa => 'ArrayRef', default => sub { [] } ); has 'to' => ( is => 'rw', isa => 'ArrayRef', default => sub { [] } ); has 'success' => ( is => 'rw', isa => 'Bool', default => 0 ); has 'error' => ( is => 'rw', isa => 'Str', default => '' ); -has 'skipped' => ( 'is' => 'rw', isa => 'Str', default => '' ); has 'unconfirmed_counts' => ( 'is' => 'rw', isa => 'HashRef', default => sub { {} } ); has 'unconfirmed_notes' => ( 'is' => 'rw', isa => 'HashRef', default => sub { {} } ); sub should_skip { - return 0; + my $self = shift; + my $row = shift; + + return 0 unless $row->send_fail_count; + + my $tz = DateTime::TimeZone->new( name => 'local' ); + my $now = DateTime->now( time_zone => $tz ); + my $diff = $now - $row->send_fail_timestamp; + + my $backoff = $row->send_fail_count > 1 ? 30 : 5; + return $diff->in_units( 'minutes' ) < $backoff; } sub get_senders { @@ -31,18 +41,18 @@ sub get_senders { sub reset { my $self = shift; - $self->councils( {} ); + $self->bodies( [] ); + $self->body_config( {} ); $self->to( [] ); } -sub add_council { +sub add_body { my $self = shift; - my $council = shift; - my $info = shift; + my $body = shift; my $config = shift; - $self->councils->{ $council } = { info => $info, config => $config }; + push @{$self->bodies}, $body; + $self->body_config->{ $body->id } = $config; } - 1; diff --git a/perllib/FixMyStreet/SendReport/Barnet.pm b/perllib/FixMyStreet/SendReport/Barnet.pm index 9a92686ec..07adb4c33 100644 --- a/perllib/FixMyStreet/SendReport/Barnet.pm +++ b/perllib/FixMyStreet/SendReport/Barnet.pm @@ -4,37 +4,15 @@ use Moose; BEGIN { extends 'FixMyStreet::SendReport'; } -use BarnetInterfaces::service::ZLBB_SERVICE_ORDER; use Encode; use Utils; use mySociety::Config; use mySociety::Web qw(ent); -# maximum number of webservice attempts to send before not trying any more (XXX may be better in config?) -use constant SEND_FAIL_RETRIES_CUTOFF => 3; - # specific council numbers use constant COUNCIL_ID_BARNET => 2489; use constant MAX_LINE_LENGTH => 132; -sub should_skip { - my $self = shift; - my $row = shift; - - my $council_name = 'Barnet'; - my $err_msg = ""; - - if ($row->send_fail_count >= SEND_FAIL_RETRIES_CUTOFF) { - $council_name &&= " to $council_name"; - $err_msg = "skipped: problem id=" . $row->id . " send$council_name has failed " - . $row->send_fail_count . " times, cutoff is " . SEND_FAIL_RETRIES_CUTOFF; - - $self->skipped( $err_msg ); - - return 1; - } -} - sub construct_message { my %h = @_; my $message = <<EOF; @@ -66,6 +44,7 @@ sub send { my $geo_code = "$h{easting} $h{northing}"; + require BarnetInterfaces::service::ZLBB_SERVICE_ORDER; my $interface = BarnetInterfaces::service::ZLBB_SERVICE_ORDER->new(); my ($nearest_postcode, $nearest_street) = ('', ''); @@ -80,9 +59,9 @@ sub send { ? $h{query} : $nearest_postcode; # use given postcode if available # note: endpoint can be of form 'https://username:password@url' - my $council_config = FixMyStreet::App->model("DB::Open311conf")->search( { area_id => COUNCIL_ID_BARNET} )->first; - if ($council_config and $council_config->endpoint) { - $interface->set_proxy($council_config->endpoint); + my $body = FixMyStreet::App->model("DB::Body")->search( { 'body_areas.area_id' => COUNCIL_ID_BARNET }, { join => "body_areas" } )->first; + if ($body and $body->endpoint) { + $interface->set_proxy($body->endpoint); # Barnet web service doesn't like namespaces in the elements so use a prefix $interface->set_prefix('urn'); # uncomment these lines to print XML that will be sent rather @@ -90,7 +69,7 @@ sub send { #$interface->outputxml(1); #$interface->no_dispatch(1); } else { - die "Barnet webservice FAIL: looks like you're missing some config data: no endpoint (URL) found for area_id=" . COUNCIL_ID_BARNET; + die "Barnet webservice FAIL: looks like you're missing some config data: no endpoint (URL) found for area ID " . COUNCIL_ID_BARNET; } eval { diff --git a/perllib/FixMyStreet/SendReport/Email.pm b/perllib/FixMyStreet/SendReport/Email.pm index b69436dd7..d71700020 100644 --- a/perllib/FixMyStreet/SendReport/Email.pm +++ b/perllib/FixMyStreet/SendReport/Email.pm @@ -11,30 +11,46 @@ sub build_recipient_list { my %recips; my $all_confirmed = 1; - foreach my $council ( keys %{ $self->councils } ) { + foreach my $body ( @{ $self->bodies } ) { my $contact = FixMyStreet::App->model("DB::Contact")->find( { deleted => 0, - area_id => $council, + body_id => $body->id, category => $row->category } ); - my ($council_email, $confirmed, $note) = ( $contact->email, $contact->confirmed, $contact->note ); + my ($body_email, $confirmed, $note) = ( $contact->email, $contact->confirmed, $contact->note ); - $council_email = essex_contact($row->latitude, $row->longitude) if $council == 2225; - $council_email = oxfordshire_contact($row->latitude, $row->longitude) if $council == 2237 && $council_email eq 'SPECIAL'; + $body_email = essex_contact($row->latitude, $row->longitude) if $body->areas->{2225}; + $body_email = oxfordshire_contact($row->latitude, $row->longitude) if $body->areas->{2237} && $body_email eq 'SPECIAL'; unless ($confirmed) { $all_confirmed = 0; - $note = 'Council ' . $row->council . ' deleted' + $note = 'Body ' . $row->bodies_str . ' deleted' unless $note; - $council_email = 'N/A' unless $council_email; - $self->unconfirmed_counts->{$council_email}{$row->category}++; - $self->unconfirmed_notes->{$council_email}{$row->category} = $note; + $body_email = 'N/A' unless $body_email; + $self->unconfirmed_counts->{$body_email}{$row->category}++; + $self->unconfirmed_notes->{$body_email}{$row->category} = $note; } - push @{ $self->to }, [ $council_email, $self->councils->{ $council }->{info}->{name} ]; - $recips{$council_email} = 1; + 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' ) { + $body_name = 'See Something, Say Something'; + } + + my @emails; + # allow multiple emails per contact + if ( $body_email =~ /,/ ) { + @emails = split(/,/, $body_email); + } else { + @emails = ( $body_email ); + } + for my $email ( @emails ) { + push @{ $self->to }, [ $email, $body_name ]; + $recips{$email} = 1; + } } return () unless $all_confirmed; @@ -45,7 +61,7 @@ sub get_template { my ( $self, $row ) = @_; my $template = 'submit.txt'; - $template = 'submit-brent.txt' if $row->council eq 2488 || $row->council eq 2237; + $template = 'submit-brent.txt' if $row->bodies_str eq 2488 || $row->bodies_str eq 2237; my $template_path = FixMyStreet->path_to( "templates", "email", $row->cobrand, $row->lang, $template )->stringify; $template_path = FixMyStreet->path_to( "templates", "email", $row->cobrand, $template )->stringify unless -e $template_path; @@ -55,15 +71,20 @@ sub get_template { return $template; } +sub send_from { + my ( $self, $row ) = @_; + return [ $row->user->email, $row->name ]; +} + sub send { my $self = shift; my ( $row, $h ) = @_; my @recips = $self->build_recipient_list( $row, $h ); - # on a staging server send emails to ourselves rather than the councils - if (mySociety::Config::get('STAGING_SITE') && !FixMyStreet->test_mode) { - @recips = ( mySociety::Config::get('CONTACT_EMAIL') ); + # 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 = ( $row->user->email ); } unless ( @recips ) { @@ -77,7 +98,7 @@ sub send { _template_ => $self->get_template( $row ), _parameters_ => $h, To => $self->to, - From => [ $row->user->email, $row->name ], + From => $self->send_from( $row ), }, mySociety::Config::get('CONTACT_EMAIL'), \@recips, diff --git a/perllib/FixMyStreet/SendReport/EmptyHomes.pm b/perllib/FixMyStreet/SendReport/EmptyHomes.pm index 4a6f058fe..4bae6af46 100644 --- a/perllib/FixMyStreet/SendReport/EmptyHomes.pm +++ b/perllib/FixMyStreet/SendReport/EmptyHomes.pm @@ -3,6 +3,8 @@ package FixMyStreet::SendReport::EmptyHomes; use Moose; use namespace::autoclean; +use mySociety::MaPit; + BEGIN { extends 'FixMyStreet::SendReport::Email'; } sub build_recipient_list { @@ -10,35 +12,41 @@ sub build_recipient_list { my %recips; my $all_confirmed = 1; - foreach my $council ( keys %{ $self->councils } ) { + foreach my $body ( @{ $self->bodies } ) { my $contact = FixMyStreet::App->model("DB::Contact")->find( { deleted => 0, - area_id => $council, + body_id => $body->id, category => 'Empty property', } ); - my ($council_email, $confirmed, $note) = ( $contact->email, $contact->confirmed, $contact->note ); + my ($body_email, $confirmed, $note) = ( $contact->email, $contact->confirmed, $contact->note ); unless ($confirmed) { $all_confirmed = 0; - #$note = 'Council ' . $row->council . ' deleted' + #$note = 'Council ' . $row->body . ' deleted' #unless $note; - $council_email = 'N/A' unless $council_email; - #$notgot{$council_email}{$row->category}++; - #$note{$council_email}{$row->category} = $note; + $body_email = 'N/A' unless $body_email; + #$notgot{$body_email}{$row->category}++; + #$note{$body_email}{$row->category} = $note; } - push @{ $self->to }, [ $council_email, $self->councils->{ $council }->{ info }->{name} ]; - $recips{$council_email} = 1; + push @{ $self->to }, [ $body_email, $body->name ]; + $recips{$body_email} = 1; - my $country = $self->councils->{$council}->{country}; + my $area_info = mySociety::MaPit::call('area', $body->body_areas->first->area_id); + my $country = $area_info->{country}; if ($country eq 'W') { - $recips{ 'shelter@' . mySociety::Config::get('EMAIL_DOMAIN') } = 1; + $recips{ 'wales@' . mySociety::Config::get('EMAIL_DOMAIN') } = 1; + } elsif ($country eq 'S') { + $recips{ 'scotland@' . mySociety::Config::get('EMAIL_DOMAIN') } = 1; } else { $recips{ 'eha@' . mySociety::Config::get('EMAIL_DOMAIN') } = 1; } } + # Set address email parameter from added data + $h->{address} = $row->extra->{address}; + return () unless $all_confirmed; return keys %recips; } diff --git a/perllib/FixMyStreet/SendReport/London.pm b/perllib/FixMyStreet/SendReport/London.pm index 6e7951922..2c48a091c 100644 --- a/perllib/FixMyStreet/SendReport/London.pm +++ b/perllib/FixMyStreet/SendReport/London.pm @@ -79,7 +79,6 @@ sub send { my $response = $browser->post( mySociety::Config::get('LONDON_REPORTIT_URL'), \%params ); my $out = $response->content; if ($response->code ne 200) { - print "Failed to post $h->{id} to London API, response was " . $response->code . " $out\n"; $self->error( "Failed to post $h->{id} to London API, response was " . $response->code . " $out" ); return 1; } diff --git a/perllib/FixMyStreet/SendReport/NI.pm b/perllib/FixMyStreet/SendReport/NI.pm index 810ee60e2..e0ea24f9c 100644 --- a/perllib/FixMyStreet/SendReport/NI.pm +++ b/perllib/FixMyStreet/SendReport/NI.pm @@ -9,10 +9,10 @@ sub build_recipient_list { my %recips; my $all_confirmed = 1; - foreach my $council ( keys %{ $self->councils } ) { + foreach my $body ( @{ $self->bodies } ) { my $contact = FixMyStreet::App->model("DB::Contact")->find( { deleted => 0, - area_id => $council, + body_id => $body->id, category => $row->category } ); @@ -23,10 +23,10 @@ sub build_recipient_list { $email = 'N/A' unless $email; } - my $name = $self->councils->{$council}->{info}->{name}; + my $name = $body->name; if ( $email =~ /^roads.([^@]*)\@drdni/ ) { $name = "Roads Service (\u$1)"; - $h->{councils_name} = $name; + $h->{bodies_name} = $name; $row->external_body( 'Roads Service' ); } push @{ $self->to }, [ $email, $name ]; diff --git a/perllib/FixMyStreet/SendReport/Noop.pm b/perllib/FixMyStreet/SendReport/Noop.pm new file mode 100644 index 000000000..f2e0a3bdb --- /dev/null +++ b/perllib/FixMyStreet/SendReport/Noop.pm @@ -0,0 +1,12 @@ +package FixMyStreet::SendReport::Noop; + +use Moose; + +BEGIN { extends 'FixMyStreet::SendReport'; } + +# Always skip when using this method +sub should_skip { + return 1; +} + +1; diff --git a/perllib/FixMyStreet/SendReport/Open311.pm b/perllib/FixMyStreet/SendReport/Open311.pm index 8d7a418af..ce5ee80a0 100644 --- a/perllib/FixMyStreet/SendReport/Open311.pm +++ b/perllib/FixMyStreet/SendReport/Open311.pm @@ -9,17 +9,9 @@ use FixMyStreet::App; use mySociety::Config; use DateTime::Format::W3CDTF; use Open311; +use Readonly; -sub should_skip { - my $self = shift; - my $row = shift; - - if ( $row->send_fail_count > 0 ) { - if ( bromley_retry_timeout($row) ) { - return 1; - } - } -} +Readonly::Scalar my $COUNCIL_ID_OXFORDSHIRE => 2237; sub send { my $self = shift; @@ -27,17 +19,22 @@ sub send { my $result = -1; - foreach my $council ( keys %{ $self->councils } ) { - my $conf = $self->councils->{$council}->{config}; + foreach my $body ( @{ $self->bodies } ) { + my $conf = $self->body_config->{ $body->id }; my $always_send_latlong = 1; my $send_notpinpointed = 0; my $use_service_as_deviceid = 0; - my $basic_desc = 0; + my $extended_desc = 1; + + # To rollback temporary changes made by this function + my $revert = 0; # Extra bromley fields - if ( $row->council =~ /2482/ ) { + if ( $row->bodies_str eq '2482' ) { + + $revert = 1; my $extra = $row->extra; if ( $row->used_map || ( !$row->used_map && !$row->postcode ) ) { @@ -49,7 +46,7 @@ sub send { push @$extra, { name => 'report_title', value => $row->title }; push @$extra, { name => 'public_anonymity_required', value => $row->anonymous ? 'TRUE' : 'FALSE' }; push @$extra, { name => 'email_alerts_requested', value => 'FALSE' }; # always false as can never request them - push @$extra, { name => 'requested_datetime', value => DateTime::Format::W3CDTF->format_datetime($row->confirmed_local->set_nanosecond(0)) }; + push @$extra, { name => 'requested_datetime', value => DateTime::Format::W3CDTF->format_datetime($row->confirmed->set_nanosecond(0)) }; push @$extra, { name => 'email', value => $row->user->email }; $row->extra( $extra ); @@ -60,66 +57,92 @@ sub send { # make sure we have last_name attribute present in row's extra, so # it is passed correctly to Bromley as attribute[] if ( $row->cobrand ne 'bromley' ) { - my ( $firstname, $lastname ) = ( $row->user->name =~ /(\w+)\.?\s+(.+)/ ); + my ( $firstname, $lastname ) = ( $row->name =~ /(\w+)\.?\s+(.+)/ ); push @$extra, { name => 'last_name', value => $lastname }; } - $basic_desc = 1; + $extended_desc = 0; + } + + # extra Oxfordshire fields: send nearest street, postcode, northing and easting, and the FMS id + if ( $row->bodies_str =~ /$COUNCIL_ID_OXFORDSHIRE/ ) { + + my $extra = $row->extra; + push @$extra, { name => 'external_id', value => $row->id }; + push @$extra, { name => 'closest_address', value => $h->{closest_address} } if $h->{closest_address}; + if ( $row->used_map || ( !$row->used_map && !$row->postcode ) ) { + push @$extra, { name => 'northing', value => $h->{northing} }; + push @$extra, { name => 'easting', value => $h->{easting} }; + } + $row->extra( $extra ); + + $extended_desc = 'oxfordshire'; } # FIXME: we've already looked this up before my $contact = FixMyStreet::App->model("DB::Contact")->find( { deleted => 0, - area_id => $conf->area_id, + body_id => $body->id, category => $row->category } ); - my $open311 = Open311->new( + my %open311_params = ( jurisdiction => $conf->jurisdiction, endpoint => $conf->endpoint, api_key => $conf->api_key, always_send_latlong => $always_send_latlong, send_notpinpointed => $send_notpinpointed, use_service_as_deviceid => $use_service_as_deviceid, - basic_description => $basic_desc, + extended_description => $extended_desc, ); + if (FixMyStreet->test_mode) { + my $test_res = HTTP::Response->new(); + $test_res->code(200); + $test_res->message('OK'); + $test_res->content('<?xml version="1.0" encoding="utf-8"?><service_requests><request><service_request_id>248</service_request_id></request></service_requests>'); + $open311_params{test_mode} = 1; + $open311_params{test_get_returns} = { 'requests.xml' => $test_res }; + } + + my $open311 = Open311->new( %open311_params ); # non standard west berks end points - if ( $row->council =~ /2619/ ) { + if ( $row->bodies_str =~ /2619/ ) { $open311->endpoints( { services => 'Services', requests => 'Requests' } ); } + # non-standard Oxfordshire endpoint (because it's just a script, not a full Open311 service) + if ( $row->bodies_str =~ /$COUNCIL_ID_OXFORDSHIRE/ ) { + $open311->endpoints( { requests => 'open311_service_request.cgi' } ); + $revert = 1; + } + # required to get round issues with CRM constraints - if ( $row->council =~ /2218/ ) { + if ( $row->bodies_str =~ /2218/ ) { $row->user->name( $row->user->id . ' ' . $row->user->name ); + $revert = 1; } if ($row->cobrand eq 'fixmybarangay') { - # FixMyBarangay endpoints expect external_id as an attribute + # FixMyBarangay endpoints expect external_id as an attribute, as do Oxfordshire $row->extra( [ { 'name' => 'external_id', 'value' => $row->id } ] ); + $revert = 1; } my $resp = $open311->send_service_request( $row, $h, $contact->email ); # make sure we don't save user changes from above - if ( $row->council =~ /2218/ || $row->council =~ /2482/ || $row->cobrand eq 'fixmybarangay') { - $row->discard_changes(); - } + $row->discard_changes() if $revert; if ( $resp ) { $row->external_id( $resp ); $row->send_method_used('Open311'); - if ($row->cobrand eq 'fixmybarangay') { - # currently the only external body using Open311 is DPS - # (this will change when we have 'body' logic in place, meanwhile: hardcoded) - $row->external_body("DPS"); - } $result *= 0; $self->success( 1 ); } else { $result *= 1; # temporary fix to resolve some issues with west berks - if ( $row->council =~ /2619/ ) { + if ( $row->bodies_str =~ /2619/ ) { $result *= 0; } } @@ -130,17 +153,4 @@ sub send { return $result; } -sub bromley_retry_timeout { - my $row = shift; - - my $tz = DateTime::TimeZone->new( name => 'local' ); - my $now = DateTime->now( time_zone => $tz ); - my $diff = $now - $row->send_fail_timestamp; - if ( $diff->in_units( 'minutes' ) < 30 ) { - return 1; - } - - return 0; -} - 1; diff --git a/perllib/FixMyStreet/SendReport/Zurich.pm b/perllib/FixMyStreet/SendReport/Zurich.pm new file mode 100644 index 000000000..d46561e9e --- /dev/null +++ b/perllib/FixMyStreet/SendReport/Zurich.pm @@ -0,0 +1,73 @@ +package FixMyStreet::SendReport::Zurich; + +use Moose; + +BEGIN { extends 'FixMyStreet::SendReport::Email'; } + +sub build_recipient_list { + my ( $self, $row, $h ) = @_; + + # Only one body ever, most of the time with an email endpoint + my $body = @{ $self->bodies }[0]; + if ( $row->external_body ) { + $body = FixMyStreet::App->model("DB::Body")->find( { id => $row->external_body } ); + $h->{bodies_name} = $body->name; + } + my $body_email = $body->endpoint; + + my $parent = $body->parent; + if ($parent && !$parent->parent) { + # Division, might have an individual contact email address + my $contact = FixMyStreet::App->model("DB::Contact")->find( { + body_id => $body->id, + category => $row->category + } ); + $body_email = $contact->email if $contact && $contact->email; + } + + push @{ $self->to }, [ $body_email, $body->name ]; + return $body_email; +} + +sub get_template { + my ( $self, $row ) = @_; + + my $template; + if ( $row->state eq 'unconfirmed' || $row->state eq 'confirmed' ) { + $template = 'submit.txt'; + } elsif ( $row->state eq 'in progress' ) { + $template = 'submit-in-progress.txt'; + } elsif ( $row->state eq 'planned' ) { + $template = 'submit-feedback-pending.txt'; + } elsif ( $row->state eq 'closed' ) { + $template = 'submit-external.txt'; + if ( $row->extra->{third_personal} ) { + $template = 'submit-external-personal.txt'; + } + } + + my $template_path = FixMyStreet->path_to( "templates", "email", "zurich", $template )->stringify; + $template = Utils::read_file( $template_path ); + return $template; +} + +# Zurich emails come from the site itself, unless it's to an external body, +# in which case it's from the category/body +sub send_from { + my ( $self, $row ) = @_; + + if ( $row->external_body ) { + my $body = @{ $self->bodies }[0]; + my $body_email = $body->endpoint; + my $contact = FixMyStreet::App->model("DB::Contact")->find( { + body_id => $body->id, + category => $row->category + } ); + $body_email = $contact->email if $contact && $contact->email; + return [ $body_email, FixMyStreet->config('CONTACT_NAME') ]; + } + + return [ FixMyStreet->config('CONTACT_EMAIL'), FixMyStreet->config('CONTACT_NAME') ]; +} + +1; diff --git a/perllib/FixMyStreet/TestMech.pm b/perllib/FixMyStreet/TestMech.pm index 7f81c0fc2..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; } @@ -243,7 +255,7 @@ sub import_errors { my @errors = # grep { $_ } # map { s{^ERROR:\s*(.*)$}{$1}g ? $_ : undef; } # - split m/\n+/, $mech->response->content; + split m/\n+/, $mech->content; return \@errors; } @@ -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 @@ -519,11 +531,11 @@ sub get_ok_json { return decode_json( $res->content ); } -sub delete_problems_for_council { +sub delete_problems_for_body { my $mech = shift; - my $council = shift; + my $body = shift; - my $reports = FixMyStreet::App->model('DB::Problem')->search( { council => $council } ); + my $reports = FixMyStreet::App->model('DB::Problem')->search( { bodies_str => $body } ); if ( $reports ) { for my $r ( $reports->all ) { $r->comments->delete; @@ -532,8 +544,26 @@ sub delete_problems_for_council { } } -sub create_problems_for_council { - my ( $mech, $count, $council, $title, $params ) = @_; +sub create_body_ok { + my $self = shift; + my ( $id, $name ) = @_; + + my $params = { id => $id, name => $name }; + my $body = FixMyStreet::App->model('DB::Body')->find_or_create($params); + $body->update($params); # Make sure + ok $body, "found/created user for $id $name"; + + FixMyStreet::App->model('DB::BodyArea')->find_or_create({ + area_id => $id, + body_id => $id, + }); + + return $body; + +} + +sub create_problems_for_body { + my ( $mech, $count, $body, $title, $params ) = @_; my $dt = $params->{dt} || DateTime->now(); @@ -549,11 +579,11 @@ sub create_problems_for_council { while ($count) { my $default_params = { postcode => 'SW1A 1AA', - council => $council, + bodies_str => $body, areas => ',105255,11806,11828,2247,2504,', category => 'Other', - title => "$title Test $count for $council", - detail => "$title Test $count for $council Detail", + title => "$title Test $count for $body", + detail => "$title Test $count for $body Detail", used_map => 't', name => 'Test User', anonymous => 'f', diff --git a/perllib/Geo/Coordinates/CH1903.pm b/perllib/Geo/Coordinates/CH1903.pm new file mode 100644 index 000000000..612182152 --- /dev/null +++ b/perllib/Geo/Coordinates/CH1903.pm @@ -0,0 +1,105 @@ +#!/usr/bin/perl +# +# Geo::Coordinates::CH1903 +# Conversion between WGS84 and Swiss CH1903. +# +# Copyright (c) 2012 UK Citizens Online Democracy. This module is free +# software; you can redistribute it and/or modify it under the same terms as +# Perl itself. +# +# WWW: http://www.mysociety.org/ + +package Geo::Coordinates::CH1903; + +$Geo::Coordinates::CH1903::VERSION = '1.00'; + +use strict; + +=head1 NAME + +Geo::Coordinates::CH1903 + +=head1 VERSION + +1.00 + +=head1 SYNOPSIS + + use Geo::Coordinates::CH1903; + + my ($lat, $lon) = ...; + my ($e, $n) = Geo::Coordinates::CH1903::from_latlon($lat, $lon); + my ($lat, $lon) = Geo::Coordinates::CH1903::to_latlon($e, $n); + +=head1 FUNCTIONS + +=over 4 + +=cut + +sub from_latlon($$) { + my ($lat, $lon) = @_; + + $lat *= 3600; + $lon *= 3600; + + my $lat_aux = ($lat - 169028.66) / 10000; + my $lon_aux = ($lon - 26782.5) / 10000; + + my $x = 600072.37 + + (211455.93 * $lon_aux) + - (10938.51 * $lon_aux * $lat_aux) + - (0.36 * $lon_aux * $lat_aux**2) + - (44.54 * $lon_aux**3); + + my $y = 200147.07 + + (308807.95 * $lat_aux) + + (3745.25 * $lon_aux**2) + + (76.63 * $lat_aux**2) + - (194.56 * $lon_aux**2 * $lat_aux) + + (119.79 * $lat_aux**3); + + return ($x, $y); +} + +sub to_latlon($$) { + my ($x, $y) = @_; + + my $x_aux = ($x - 600000) / 1000000; + my $y_aux = ($y - 200000) / 1000000; + + my $lat = 16.9023892 + + (3.238272 * $y_aux) + - (0.270978 * $x_aux**2) + - (0.002528 * $y_aux**2) + - (0.0447 * $x_aux**2 * $y_aux) + - (0.0140 * $y_aux**3); + + my $lon = 2.6779094 + + (4.728982 * $x_aux) + + (0.791484 * $x_aux * $y_aux) + + (0.1306 * $x_aux * $y_aux**2) + - (0.0436 * $x_aux**3); + + $lat = $lat * 100 / 36; + $lon = $lon * 100 / 36; + + return ($lat, $lon); +} + +=head1 AUTHOR AND COPYRIGHT + +Maths courtesy of the Swiss Federal Office of Topography: +http://www.swisstopo.admin.ch/internet/swisstopo/en/home/products/software/products/skripts.html + +Written by Matthew Somerville + +Copyright (c) UK Citizens Online Democracy. + +This module is free software; you can redistribute it and/or modify it +under the same terms as Perl itself. + +=cut + +1; + diff --git a/perllib/Open311.pm b/perllib/Open311.pm index 52e17e99d..4f9b948ce 100644 --- a/perllib/Open311.pm +++ b/perllib/Open311.pm @@ -22,9 +22,10 @@ has success => ( is => 'rw', 'isa' => 'Bool', default => 0 ); has error => ( is => 'rw', 'isa' => 'Str', default => '' ); has always_send_latlong => ( is => 'ro', isa => 'Bool', default => 1 ); has send_notpinpointed => ( is => 'ro', isa => 'Bool', default => 0 ); -has basic_description => ( is => 'ro', isa => 'Bool', default => 0 ); +has extended_description => ( is => 'ro', isa => 'Str', default => 1 ); has use_service_as_deviceid => ( is => 'ro', isa => 'Bool', default => 0 ); has use_extended_updates => ( is => 'ro', isa => 'Bool', default => 0 ); +has extended_statuses => ( is => 'ro', isa => 'Bool', default => 0 ); before [ qw/get_service_list get_service_meta_info get_service_requests get_service_request_updates @@ -38,7 +39,11 @@ sub get_service_list { my $service_list_xml = $self->_get( $self->endpoints->{services} ); - return $self->_get_xml_object( $service_list_xml ); + if ( $service_list_xml ) { + return $self->_get_xml_object( $service_list_xml ); + } else { + return undef; + } } sub get_service_meta_info { @@ -95,15 +100,15 @@ sub _populate_service_request_params { my $service_code = shift; my $description; - if ( $self->basic_description ) { - $description = $problem->detail; - } else { + if ( $self->extended_description ) { $description = $self->_generate_service_request_description( $problem, $extra ); + } else { + $description = $problem->detail; } - my ( $firstname, $lastname ) = ( $problem->user->name =~ /(\w+)\.?\s+(.+)/ ); + my ( $firstname, $lastname ) = ( $problem->name =~ /(\w+)\.?\s+(.+)/ ); my $params = { email => $problem->user->email, @@ -167,16 +172,23 @@ sub _generate_service_request_description { my $problem = shift; my $extra = shift; - my $description = <<EOT; -title: @{[$problem->title()]} - -detail: @{[$problem->detail()]} - -url: $extra->{url} - -Submitted via FixMyStreet -EOT -; + my $description = ""; + if ($extra->{easting_northing}) { # Proxy for cobrand being in the UK + $description .= "detail: " . $problem->detail . "\n\n"; + $description .= "url: " . $extra->{url} . "\n\n"; + $description .= "Submitted via FixMyStreet\n"; + if ($self->extended_description ne 'oxfordshire') { + $description = "title: " . $problem->title . "\n\n$description"; + } + } elsif ($problem->cobrand eq 'fixamingata') { + $description .= "Beskrivning: " . $problem->detail . "\n\n"; + $description .= "Länk till ärendet: " . $extra->{url} . "\n\n"; + $description .= "Skickad via FixaMinGata\n"; + } else { + $description .= $problem->title . "\n\n"; + $description .= $problem->detail . "\n\n"; + $description .= $extra->{url} . "\n"; + } return $description; } @@ -282,11 +294,41 @@ 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; + + my $status = 'OPEN'; + if ( $self->extended_statuses ) { + if ( FixMyStreet::DB::Result::Problem->fixed_states()->{$state} ) { + $status = 'FIXED'; + } elsif ( $state eq 'in progress' ) { + $status = 'IN_PROGRESS'; + } elsif ($state eq 'action scheduled' + || $state eq 'planned' ) { + $status = 'ACTION_SCHEDULED'; + } elsif ( $state eq 'investigating' ) { + $status = 'INVESTIGATING'; + } elsif ( $state eq 'duplicate' ) { + $status = 'DUPLICATE'; + } elsif ( $state eq 'not responsible' ) { + $status = 'NOT_COUNCILS_RESPONSIBILITY'; + } elsif ( $state eq 'unable to fix' ) { + $status = 'NO_FURTHER_ACTION'; + } elsif ( $state eq 'internal referral' ) { + $status = 'INTERNAL_REFERRAL'; + } + } else { + if ( !FixMyStreet::DB::Result::Problem->open_states()->{$state} ) { + $status = 'CLOSED'; + } + } my $params = { - updated_datetime => DateTime::Format::W3CDTF->format_datetime($comment->confirmed_local->set_nanosecond(0)), + updated_datetime => DateTime::Format::W3CDTF->format_datetime($comment->confirmed->set_nanosecond(0)), service_request_id => $comment->problem->external_id, - status => $comment->problem->is_open ? 'OPEN' : 'CLOSED', + status => $status, email => $comment->user->email, description => $comment->text, last_name => $lastname, diff --git a/perllib/Open311/GetServiceRequestUpdates.pm b/perllib/Open311/GetServiceRequestUpdates.pm index 0b4e037fd..f7b758137 100644 --- a/perllib/Open311/GetServiceRequestUpdates.pm +++ b/perllib/Open311/GetServiceRequestUpdates.pm @@ -5,17 +5,19 @@ use Open311; use FixMyStreet::App; use DateTime::Format::W3CDTF; -has council_list => ( is => 'ro' ); has system_user => ( is => 'rw' ); has start_date => ( is => 'ro', default => undef ); has end_date => ( is => 'ro', default => undef ); has suppress_alerts => ( is => 'rw', default => 0 ); has verbose => ( is => 'ro', default => 0 ); +Readonly::Scalar my $AREA_ID_BROMLEY => 2482; +Readonly::Scalar my $AREA_ID_OXFORDSHIRE => 2237; + sub fetch { my $self = shift; - my $councils = FixMyStreet::App->model('DB::Open311Conf')->search( + my $bodies = FixMyStreet::App->model('DB::Body')->search( { send_method => 'Open311', send_comments => 1, @@ -24,29 +26,34 @@ sub fetch { } ); - while ( my $council = $councils->next ) { + while ( my $body = $bodies->next ) { my $o = Open311->new( - endpoint => $council->endpoint, - api_key => $council->api_key, - jurisdiction => $council->jurisdiction, + endpoint => $body->endpoint, + api_key => $body->api_key, + jurisdiction => $body->jurisdiction, ); - if ( $council->area_id =~ /2482/ ) { + # custom endpoint URLs because these councils have non-standard paths + if ( $body->areas->{$AREA_ID_BROMLEY} ) { my $endpoints = $o->endpoints; $endpoints->{update} = 'update.xml'; $endpoints->{service_request_updates} = 'update.xml'; $o->endpoints( $endpoints ); + } elsif ( $body->areas->{$AREA_ID_OXFORDSHIRE} ) { + my $endpoints = $o->endpoints; + $endpoints->{service_request_updates} = 'open311_service_request_update.cgi'; + $o->endpoints( $endpoints ); } - $self->suppress_alerts( $council->suppress_alerts ); - $self->system_user( $council->comment_user ); - $self->update_comments( $o, { areaid => $council->area_id }, ); + $self->suppress_alerts( $body->suppress_alerts ); + $self->system_user( $body->comment_user ); + $self->update_comments( $o, { areas => $body->areas }, ); } } sub update_comments { - my ( $self, $open311, $council_details ) = @_; + my ( $self, $open311, $body_details ) = @_; my @args = (); @@ -56,7 +63,7 @@ sub update_comments { push @args, $self->start_date; push @args, $self->end_date; # default to asking for last 2 hours worth if not Bromley - } elsif ( $council_details->{areaid} != 2482 ) { + } elsif ( ! $body_details->{areas}->{$AREA_ID_BROMLEY} ) { my $end_dt = DateTime->now(); my $start_dt = $end_dt->clone; $start_dt->add( hours => -2 ); @@ -68,7 +75,7 @@ sub update_comments { my $requests = $open311->get_service_request_updates( @args ); unless ( $open311->success ) { - warn "Failed to fetch ServiceRequest Updates for " . $council_details->{areaid} . ":\n" . $open311->error + warn "Failed to fetch ServiceRequest Updates for " . join(",", keys %{$body_details->{areas}}) . ":\n" . $open311->error if $self->verbose; return 0; } @@ -80,12 +87,13 @@ sub update_comments { # what problem it belongs to so just skip next unless $request_id; - my $problem = - FixMyStreet::App->model('DB::Problem') - ->search( { - external_id => $request_id, - council => { like => '%' . $council_details->{areaid} . '%' }, - } ); + my $problem; + my $criteria = { + external_id => $request_id, + # XXX This assumes that areas will actually only be one area. + bodies_str => { like => '%' . join(",", keys %{$body_details->{areas}}) . '%' }, + }; + $problem = FixMyStreet::App->model('DB::Problem')->search( $criteria ); if (my $p = $problem->first) { my $c = $p->comments->search( { external_id => $request->{update_id} } ); @@ -112,13 +120,17 @@ sub update_comments { # if the comment is older than the last update # do not change the status of the problem as it's # tricky to determine the right thing to do. - if ( $comment->created_local > $p->lastupdate_local ) { - if ( $p->is_open and lc($request->{status}) eq 'closed' ) { - $p->state( 'fixed - council' ); - $comment->problem_state( 'fixed - council' ); - } elsif ( ( $p->is_closed || $p->is_fixed ) and lc($request->{status}) eq 'open' ) { - $p->state( 'confirmed' ); - $comment->problem_state( 'confirmed' ); + if ( $comment->created > $p->lastupdate ) { + my $state = $self->map_state( $request->{status} ); + + # don't update state unless it's an allowed state and it's + # 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} ) ) { + if ($p->is_visible) { + $p->state($state); + } + $comment->problem_state($state); } } @@ -127,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, + } ); + } } } } @@ -146,4 +160,22 @@ sub update_comments { return 1; } +sub map_state { + my $self = shift; + my $incoming_state = shift; + + $incoming_state = lc($incoming_state); + $incoming_state =~ s/_/ /g; + + my %state_map = ( + fixed => 'fixed - council', + 'not councils responsibility' => 'not responsible', + 'no further action' => 'unable to fix', + open => 'confirmed', + closed => 'fixed - council' + ); + + return $state_map{$incoming_state} || $incoming_state; +} + 1; diff --git a/perllib/Open311/GetUpdates.pm b/perllib/Open311/GetUpdates.pm index 5d5291d47..5007a1f82 100644 --- a/perllib/Open311/GetUpdates.pm +++ b/perllib/Open311/GetUpdates.pm @@ -4,26 +4,22 @@ use Moose; use Open311; use FixMyStreet::App; -has council_list => ( is => 'ro' ); +has body_list => ( is => 'ro' ); has system_user => ( is => 'ro' ); sub get_updates { my $self = shift; - while ( my $council = $self->council_list->next ) { + while ( my $body = $self->body_list->next ) { my $open311 = Open311->new( - endpoint => $council->endpoint, - jurisdiction => $council->jurisdiction, - api_key => $council->api_key + endpoint => $body->endpoint, + jurisdiction => $body->jurisdiction, + api_key => $body->api_key ); - my $area_id = $council->area_id; - - my $council_details = mySociety::MaPit::call( 'area', $area_id ); - my $reports = FixMyStreet::App->model('DB::Problem')->search( { - council => { like => "\%$area_id\%" }, + bodies_str => { like => "\%" . $body->id . "\%" }, state => { 'IN', [qw/confirmed fixed/] }, -and => [ external_id => { '!=', undef }, @@ -39,12 +35,12 @@ sub get_updates { next unless @report_ids; - $self->update_reports( \@report_ids, $open311, $council_details ); + $self->update_reports( \@report_ids, $open311, $body ); } } sub update_reports { - my ( $self, $report_ids, $open311, $council_details ) = @_; + my ( $self, $report_ids, $open311, $body ) = @_; my $service_requests = $open311->get_service_requests( $report_ids ); @@ -72,7 +68,9 @@ sub update_reports { ->search( { external_id => $request_id, } ); if (my $p = $problem->first) { - $p->update_from_open311_service_request( $request, $council_details, $self->system_user ); + my $cobrand = FixMyStreet::Cobrand->get_class_for_moniker($p->cobrand)->new(); + $cobrand->set_lang_and_domain($p->lang, 1, FixMyStreet->path_to('locale')->stringify ); + $p->update_from_open311_service_request( $request, $body, $self->system_user ); } } diff --git a/perllib/Open311/PopulateServiceList.pm b/perllib/Open311/PopulateServiceList.pm index e8ae56833..c5fc4a506 100644 --- a/perllib/Open311/PopulateServiceList.pm +++ b/perllib/Open311/PopulateServiceList.pm @@ -6,34 +6,34 @@ use XML::Simple; use FixMyStreet::App; use Open311; -has council_list => ( is => 'ro' ); +has bodies => ( is => 'ro' ); has found_contacts => ( is => 'rw', default => sub { [] } ); has verbose => ( is => 'ro', default => 0 ); -has _current_council => ( is => 'rw' ); +has _current_body => ( is => 'rw' ); has _current_open311 => ( is => 'rw' ); has _current_service => ( is => 'rw' ); -my $council_list = FixMyStreet::App->model('DB::Open311conf'); +my $bodies = FixMyStreet::App->model('DB::Body'); -sub process_councils { +sub process_bodies { my $self = shift; - while ( my $council = $self->council_list->next ) { - next unless $council->endpoint; - next unless lc($council->send_method) eq 'open311'; - $self->_current_council( $council ); - $self->process_council; + while ( my $body = $self->bodies->next ) { + next unless $body->endpoint; + next unless lc($body->send_method) eq 'open311'; + next if $body->jurisdiction =~ /^fixmybarangay_\w+$/; # FMB depts. not using service discovery yet + $self->_current_body( $body ); + $self->process_body; } } -sub process_council { +sub process_body { my $self = shift; - my $open311 = Open311->new( - endpoint => $self->_current_council->endpoint, - jurisdiction => $self->_current_council->jurisdiction, - api_key => $self->_current_council->api_key + endpoint => $self->_current_body->endpoint, + jurisdiction => $self->_current_body->jurisdiction, + api_key => $self->_current_body->api_key ); $self->_current_open311( $open311 ); @@ -41,8 +41,10 @@ sub process_council { my $list = $open311->get_service_list; unless ( $list ) { - my $id = $self->_current_council->area_id; - warn "Council $id - http://mapit.mysociety.org/area/$id.html - did not return a service list\n" + my $id = $self->_current_body->id; + my $mapit_url = mySociety::Config::get('MAPIT_URL'); + my $areas = join( ",", keys %{$self->_current_body->areas} ); + warn "Body $id for areas $areas - $mapit_url/areas/$areas.html - did not return a service list\n" if $self->verbose >= 1; return; } @@ -55,7 +57,7 @@ sub _check_endpoints { my $self = shift; # west berks end point not standard - if ( $self->_current_council->area_id == 2619 ) { + if ( $self->_current_body->areas->{2619} ) { $self->_current_open311->endpoints( { services => 'Services', @@ -71,7 +73,10 @@ sub process_services { my $list = shift; $self->found_contacts( [] ); - foreach my $service ( @{ $list->{service} } ) { + my $services = $list->{service}; + # XML might only have one result and then squashed the 'array'-ness + $services = [ $services ] unless ref $services eq 'ARRAY'; + foreach my $service ( @$services ) { $self->_current_service( $service ); $self->process_service; } @@ -81,14 +86,14 @@ sub process_services { sub process_service { my $self = shift; - my $category = $self->_current_council->area_id == 2218 ? - $self->_current_service->{description} : + my $category = $self->_current_body->areas->{2218} ? + $self->_current_service->{description} : $self->_current_service->{service_name}; print $self->_current_service->{service_code} . ': ' . $category . "\n" if $self->verbose >= 2; my $contacts = FixMyStreet::App->model( 'DB::Contact')->search( { - area_id => $self->_current_council->area_id, + body_id => $self->_current_body->id, -OR => [ email => $self->_current_service->{service_code}, category => $category, @@ -125,7 +130,7 @@ sub _handle_existing_contact { my $service_name = $self->_normalize_service_name; - print $self->_current_council->area_id . " already has a contact for service code " . $self->_current_service->{service_code} . "\n" if $self->verbose >= 2; + print $self->_current_body->id . " already has a contact for service code " . $self->_current_service->{service_code} . "\n" if $self->verbose >= 2; if ( $contact->deleted || $service_name ne $contact->category || $self->_current_service->{service_code} ne $contact->email ) { eval { @@ -143,7 +148,7 @@ sub _handle_existing_contact { }; if ( $@ ) { - warn "Failed to update contact for service code " . $self->_current_service->{service_code} . " for council @{[$self->_current_council->area_id]}: $@\n" + warn "Failed to update contact for service code " . $self->_current_service->{service_code} . " for body @{[$self->_current_body->id]}: $@\n" if $self->verbose >= 1; return; } @@ -168,7 +173,7 @@ sub _create_contact { $contact = FixMyStreet::App->model( 'DB::Contact')->create( { email => $self->_current_service->{service_code}, - area_id => $self->_current_council->area_id, + body_id => $self->_current_body->id, category => $service_name, confirmed => 1, deleted => 0, @@ -180,7 +185,7 @@ sub _create_contact { }; if ( $@ ) { - warn "Failed to create contact for service code " . $self->_current_service->{service_code} . " for council @{[$self->_current_council->area_id]}: $@\n" + warn "Failed to create contact for service code " . $self->_current_service->{service_code} . " for body @{[$self->_current_body->id]}: $@\n" if $self->verbose >= 1; return; } @@ -191,7 +196,7 @@ sub _create_contact { if ( $contact ) { push @{ $self->found_contacts }, $self->_current_service->{service_code}; - print "created contact for service code " . $self->_current_service->{service_code} . " for council @{[$self->_current_council->area_id]}\n" if $self->verbose >= 2; + print "created contact for service code " . $self->_current_service->{service_code} . " for body @{[$self->_current_body->id]}\n" if $self->verbose >= 2; } } @@ -210,7 +215,7 @@ sub _add_meta_to_contact { if ( ! $meta_data->{attributes}->{attribute} ) { warn sprintf( "Empty meta data for %s at %s", $self->_current_service->{service_code}, - $self->_current_council->endpoint ) + $self->_current_body->endpoint ) if $self->verbose; return; } @@ -225,7 +230,7 @@ sub _add_meta_to_contact { # we add these later on from bromley so don't list them here # as we don't want to display them - if ( $self->_current_council->area_id == 2482 ) { + if ( $self->_current_body->areas->{2482} ) { my %ignore = map { $_ => 1 } qw/ service_request_id_ext requested_datetime @@ -256,8 +261,8 @@ sub _normalize_service_name { # FIXME - at the moment it makes more sense to use the description # for cambridgeshire but need a more flexible way to set this - my $service_name = $self->_current_council->area_id == 2218 ? - $self->_current_service->{description} : + my $service_name = $self->_current_body->areas->{2218} ? + $self->_current_service->{description} : $self->_current_service->{service_name}; # remove trailing whitespace as it upsets db queries # to look up contact details when creating problem @@ -272,7 +277,7 @@ sub _delete_contacts_not_in_service_list { my $found_contacts = FixMyStreet::App->model( 'DB::Contact')->search( { email => { -not_in => $self->found_contacts }, - area_id => $self->_current_council->area_id, + body_id => $self->_current_body->id, deleted => 0, } ); diff --git a/perllib/PoChange.pm b/perllib/PoChange.pm index 06b78fa3f..f26161889 100644 --- a/perllib/PoChange.pm +++ b/perllib/PoChange.pm @@ -41,7 +41,6 @@ sub fixmystreet_to_reportemptyhomes($) { $s =~ s/We send it to the council on your behalf/The details will be sent directly to the right person in the local council for them to take action/; $s =~ s/To find out what local alerts we have for you/To find out what local alerts we have in your area, council or ward/; $s =~ s/Local alerts/Get local reports/; - $s =~ s/All reports/Reports/; $s =~ s/Report an empty property/Report a property/; $s =~ s/Help/FAQs/; diff --git a/perllib/Template/Document.pm b/perllib/Template/Document.pm new file mode 100644 index 000000000..8fc66deea --- /dev/null +++ b/perllib/Template/Document.pm @@ -0,0 +1,539 @@ +##============================================================= -*-Perl-*- +# +# Template::Document +# +# DESCRIPTION +# Module defining a class of objects which encapsulate compiled +# templates, storing additional block definitions and metadata +# as well as the compiled Perl sub-routine representing the main +# template content. +# +# AUTHOR +# Andy Wardley <abw@wardley.org> +# +# COPYRIGHT +# Copyright (C) 1996-2007 Andy Wardley. All Rights Reserved. +# +# This module is free software; you can redistribute it and/or +# modify it under the same terms as Perl itself. +# +#============================================================================ + +package Template::Document; + +use strict; +use warnings; +use base 'Template::Base'; +use Template::Constants; + +our $VERSION = 2.79; +our $DEBUG = 0 unless defined $DEBUG; +our $ERROR = ''; +our ($COMPERR, $AUTOLOAD, $UNICODE); + +BEGIN { + # UNICODE is supported in versions of Perl from 5.008 onwards + if ($UNICODE = $] > 5.007 ? 1 : 0) { + if ($] > 5.008) { + # utf8::is_utf8() available from Perl 5.8.1 onwards + *is_utf8 = \&utf8::is_utf8; + } + elsif ($] == 5.008) { + # use Encode::is_utf8() for Perl 5.8.0 + require Encode; + *is_utf8 = \&Encode::is_utf8; + } + } +} + + +#======================================================================== +# ----- PUBLIC METHODS ----- +#======================================================================== + +#------------------------------------------------------------------------ +# new(\%document) +# +# Creates a new self-contained Template::Document object which +# encapsulates a compiled Perl sub-routine, $block, any additional +# BLOCKs defined within the document ($defblocks, also Perl sub-routines) +# and additional $metadata about the document. +#------------------------------------------------------------------------ + +sub new { + my ($class, $doc) = @_; + my ($block, $defblocks, $variables, $metadata) = @$doc{ qw( BLOCK DEFBLOCKS VARIABLES METADATA ) }; + $defblocks ||= { }; + $metadata ||= { }; + + # evaluate Perl code in $block to create sub-routine reference if necessary + unless (ref $block) { + local $SIG{__WARN__} = \&catch_warnings; + $COMPERR = ''; + + # DON'T LOOK NOW! - blindly untainting can make you go blind! + $block =~ /(.*)/s; + $block = $1; + + $block = eval $block; + return $class->error($@) + unless defined $block; + } + + # same for any additional BLOCK definitions + @$defblocks{ keys %$defblocks } = + # MORE BLIND UNTAINTING - turn away if you're squeamish + map { + ref($_) + ? $_ + : ( /(.*)/s && eval($1) or return $class->error($@) ) + } values %$defblocks; + + bless { + %$metadata, + _BLOCK => $block, + _DEFBLOCKS => $defblocks, + _VARIABLES => $variables, + _HOT => 0, + }, $class; +} + + +#------------------------------------------------------------------------ +# block() +# +# Returns a reference to the internal sub-routine reference, _BLOCK, +# that constitutes the main document template. +#------------------------------------------------------------------------ + +sub block { + return $_[0]->{ _BLOCK }; +} + + +#------------------------------------------------------------------------ +# blocks() +# +# Returns a reference to a hash array containing any BLOCK definitions +# from the template. The hash keys are the BLOCK nameand the values +# are references to Template::Document objects. Returns 0 (# an empty hash) +# if no blocks are defined. +#------------------------------------------------------------------------ + +sub blocks { + return $_[0]->{ _DEFBLOCKS }; +} + + +#----------------------------------------------------------------------- +# variables() +# +# Returns a reference to a hash of variables used in the template. +# This requires the TRACE_VARS option to be enabled. +#----------------------------------------------------------------------- + +sub variables { + return $_[0]->{ _VARIABLES }; +} + +#------------------------------------------------------------------------ +# process($context) +# +# Process the document in a particular context. Checks for recursion, +# registers the document with the context via visit(), processes itself, +# and then unwinds with a large gin and tonic. +#------------------------------------------------------------------------ + +sub process { + my ($self, $context) = @_; + my $defblocks = $self->{ _DEFBLOCKS }; + my $output; + + + # check we're not already visiting this template + return $context->throw(Template::Constants::ERROR_FILE, + "recursion into '$self->{ name }'") + if $self->{ _HOT } && ! $context->{ RECURSION }; ## RETURN ## + + $context->visit($self, $defblocks); + + $self->{ _HOT } = 1; + eval { + my $block = $self->{ _BLOCK }; + $output = &$block($context); + }; + $self->{ _HOT } = 0; + + $context->leave(); + + die $context->catch($@) + if $@; + + return $output; +} + + +#------------------------------------------------------------------------ +# AUTOLOAD +# +# Provides pseudo-methods for read-only access to various internal +# members. +#------------------------------------------------------------------------ + +sub AUTOLOAD { + my $self = shift; + my $method = $AUTOLOAD; + + $method =~ s/.*:://; + return if $method eq 'DESTROY'; +# my ($pkg, $file, $line) = caller(); +# print STDERR "called $self->AUTOLOAD($method) from $file line $line\n"; + return $self->{ $method }; +} + + +#======================================================================== +# ----- PRIVATE METHODS ----- +#======================================================================== + + +#------------------------------------------------------------------------ +# _dump() +# +# Debug method which returns a string representing the internal state +# of the object. +#------------------------------------------------------------------------ + +sub _dump { + my $self = shift; + my $dblks; + my $output = "$self : $self->{ name }\n"; + + $output .= "BLOCK: $self->{ _BLOCK }\nDEFBLOCKS:\n"; + + if ($dblks = $self->{ _DEFBLOCKS }) { + foreach my $b (keys %$dblks) { + $output .= " $b: $dblks->{ $b }\n"; + } + } + + return $output; +} + + +#======================================================================== +# ----- CLASS METHODS ----- +#======================================================================== + +#------------------------------------------------------------------------ +# as_perl($content) +# +# This method expects a reference to a hash passed as the first argument +# containing 3 items: +# METADATA # a hash of template metadata +# BLOCK # string containing Perl sub definition for main block +# DEFBLOCKS # hash containing further subs for addional BLOCK defs +# It returns a string containing Perl code which, when evaluated and +# executed, will instantiate a new Template::Document object with the +# above data. On error, it returns undef with an appropriate error +# message set in $ERROR. +#------------------------------------------------------------------------ + +sub as_perl { + my ($class, $content) = @_; + my ($block, $defblocks, $metadata) = @$content{ qw( BLOCK DEFBLOCKS METADATA ) }; + + #$block =~ s/\n(?!#line)/\n /g; + $block =~ s/\s+$//; + + $defblocks = join('', map { + my $code = $defblocks->{ $_ }; + # $code =~ s/\n(?!#line)/\n /g; + $code =~ s/\s*$//; + " '$_' => $code,\n"; + } keys %$defblocks); + $defblocks =~ s/\s+$//; + + $metadata = join('', map { + my $x = $metadata->{ $_ }; + $x =~ s/(['\\])/\\$1/g; + " '$_' => '$x',\n"; + } keys %$metadata); + $metadata =~ s/\s+$//; + + return <<EOF +#------------------------------------------------------------------------ +# Compiled template generated by the Template Toolkit version $Template::VERSION +#------------------------------------------------------------------------ + +$class->new({ + METADATA => { +$metadata + }, + BLOCK => $block, + DEFBLOCKS => { +$defblocks + }, +}); +EOF +} + + +#------------------------------------------------------------------------ +# write_perl_file($filename, \%content) +# +# This method calls as_perl() to generate the Perl code to represent a +# compiled template with the content passed as the second argument. +# It then writes this to the file denoted by the first argument. +# +# Returns 1 on success. On error, sets the $ERROR package variable +# to contain an error message and returns undef. +#------------------------------------------------------------------------ + +sub write_perl_file { + my ($class, $file, $content) = @_; + my ($fh, $tmpfile); + + return $class->error("invalid filename: $file") + unless $file =~ /^(.+)$/s; + + eval { + require File::Temp; + require File::Basename; + ($fh, $tmpfile) = File::Temp::tempfile( + DIR => File::Basename::dirname($file) + ); + my $perlcode = $class->as_perl($content) || die $!; + + if ($UNICODE && is_utf8($perlcode)) { + $perlcode = "use utf8;\n\n$perlcode"; + binmode $fh, ":utf8"; + } + print $fh $perlcode; + close($fh); + }; + return $class->error($@) if $@; + return rename($tmpfile, $file) + || $class->error($!); +} + + +#------------------------------------------------------------------------ +# catch_warnings($msg) +# +# Installed as +#------------------------------------------------------------------------ + +sub catch_warnings { + $COMPERR .= join('', @_); +} + + +1; + +__END__ + +=head1 NAME + +Template::Document - Compiled template document object + +=head1 SYNOPSIS + + use Template::Document; + + $doc = Template::Document->new({ + BLOCK => sub { # some perl code; return $some_text }, + DEFBLOCKS => { + header => sub { # more perl code; return $some_text }, + footer => sub { # blah blah blah; return $some_text }, + }, + METADATA => { + author => 'Andy Wardley', + version => 3.14, + } + }) || die $Template::Document::ERROR; + + print $doc->process($context); + +=head1 DESCRIPTION + +This module defines an object class whose instances represent compiled +template documents. The L<Template::Parser> module creates a +C<Template::Document> instance to encapsulate a template as it is compiled +into Perl code. + +The constructor method, L<new()>, expects a reference to a hash array +containing the C<BLOCK>, C<DEFBLOCKS> and C<METADATA> items. + +The C<BLOCK> item should contain a reference to a Perl subroutine or a textual +representation of Perl code, as generated by the L<Template::Parser> module. +This is then evaluated into a subroutine reference using C<eval()>. + +The C<DEFLOCKS> item should reference a hash array containing further named +C<BLOCK>s which may be defined in the template. The keys represent C<BLOCK> +names and the values should be subroutine references or text strings of Perl +code as per the main C<BLOCK> item. + +The C<METADATA> item should reference a hash array of metadata items relevant +to the document. + +The L<process()> method can then be called on the instantiated +C<Template::Document> object, passing a reference to a L<Template::Context> +object as the first parameter. This will install any locally defined blocks +(C<DEFBLOCKS>) in the C<BLOCKS> cache in the context (via a call to +L<visit()|Template::Context#visit()>) so that they may be subsequently +resolved by the context. The main C<BLOCK> subroutine is then executed, +passing the context reference on as a parameter. The text returned from the +template subroutine is then returned by the L<process()> method, after calling +the context L<leave()|Template::Context#leave()> method to permit cleanup and +de-registration of named C<BLOCKS> previously installed. + +An C<AUTOLOAD> method provides access to the C<METADATA> items for the +document. The L<Template::Service> module installs a reference to the main +C<Template::Document> object in the stash as the C<template> variable. This allows +metadata items to be accessed from within templates, including C<PRE_PROCESS> +templates. + +header: + + <html> + <head> + <title>[% template.title %] + </head> + ... + +C<Template::Document> objects are usually created by the L<Template::Parser> +but can be manually instantiated or sub-classed to provide custom +template components. + +=head1 METHODS + +=head2 new(\%config) + +Constructor method which accept a reference to a hash array containing the +structure as shown in this example: + + $doc = Template::Document->new({ + BLOCK => sub { # some perl code; return $some_text }, + DEFBLOCKS => { + header => sub { # more perl code; return $some_text }, + footer => sub { # blah blah blah; return $some_text }, + }, + METADATA => { + author => 'Andy Wardley', + version => 3.14, + } + }) || die $Template::Document::ERROR; + +C<BLOCK> and C<DEFBLOCKS> items may be expressed as references to Perl subroutines +or as text strings containing Perl subroutine definitions, as is generated +by the L<Template::Parser> module. These are evaluated into subroutine references +using C<eval()>. + +Returns a new C<Template::Document> object or C<undef> on error. The +L<error()|Template::Base#error()> class method can be called, or the C<$ERROR> +package variable inspected to retrieve the relevant error message. + +=head2 process($context) + +Main processing routine for the compiled template document. A reference to a +L<Template::Context> object should be passed as the first parameter. The +method installs any locally defined blocks via a call to the context +L<visit()|Template::Context#visit()> method, processes its own template, +(passing the context reference as a parameter) and then calls +L<leave()|Template::Context#leave()> in the context to allow cleanup. + + print $doc->process($context); + +Returns a text string representing the generated output for the template. +Errors are thrown via C<die()>. + +=head2 block() + +Returns a reference to the main C<BLOCK> subroutine. + +=head2 blocks() + +Returns a reference to the hash array of named C<DEFBLOCKS> subroutines. + +=head2 variables() + +Returns a reference to a hash of variables used in the template. +This requires the L<TRACE_VARS|Template::Manual::Config#TRACE_VARS> +option to be enabled. + +=head2 AUTOLOAD + +An autoload method returns C<METADATA> items. + + print $doc->author(); + +=head1 CLASS METHODS + +These methods are used internally. + +=head2 as_perl($content) + +This method generate a Perl representation of the template. + + my $perl = Template::Document->as_perl({ + BLOCK => $main_block, + DEFBLOCKS => { + foo => $foo_block, + bar => $bar_block, + }, + METADATA => { + name => 'my_template', + } + }); + +=head2 write_perl_file(\%config) + +This method is used to write compiled Perl templates to disk. If the +C<COMPILE_EXT> option (to indicate a file extension for saving compiled +templates) then the L<Template::Parser> module calls this subroutine before +calling the L<new()> constructor. At this stage, the parser has a +representation of the template as text strings containing Perl code. We can +write that to a file, enclosed in a small wrapper which will allow us to +susequently C<require()> the file and have Perl parse and compile it into a +C<Template::Document>. Thus we have persistence of compiled templates. + +=head1 INTERNAL FUNCTIONS + +=head2 catch_warnings() + +This is a simple handler used to catch any errors that arise when the +compiled Perl template is first evaluated (that is, evaluated by Perl to +create a template subroutine at compile, rather than the template being +processed at runtime). + +=head2 is_utf8() + +This is mapped to C<utf8::is_utf8> for versions of Perl that have it (> 5.008) +or to C<Encode::is_utf8> for Perl 5.008. Earlier versions of Perl are not +supported. + +=head1 AUTHOR + +Andy Wardley E<lt>abw@wardley.orgE<gt> L<http://wardley.org/> + +=head1 COPYRIGHT + +Copyright (C) 1996-2012 Andy Wardley. All Rights Reserved. + +This module is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +=head1 SEE ALSO + +L<Template>, L<Template::Parser> + +=cut + +# Local Variables: +# mode: perl +# perl-indent-level: 4 +# indent-tabs-mode: nil +# End: +# +# vim: expandtab shiftwidth=4: diff --git a/perllib/Utils.pm b/perllib/Utils.pm index fa90620a0..7a22c888d 100644 --- a/perllib/Utils.pm +++ b/perllib/Utils.pm @@ -123,7 +123,9 @@ sub london_categories { } sub barnet_categories { - # The values here are KBIDs from Barnet's system: see bin/send-reports for formatting + # The values here are KBIDs from Barnet's system: see bin/send-reports for formatting. + # They are no longer used since Barnet switched to email for delivery of problem reports. + # and can be removed when SendReport/Barnet.pm is removed. if (mySociety::Config::get('STAGING_SITE')) { # note staging site must use different KBIDs return { 'Street scene misc' => 14 # for test @@ -221,18 +223,12 @@ sub cleanup_text { return $input; } -sub prettify_epoch { - my ( $epoch, $type ) = @_; +sub prettify_dt { + my ( $dt, $type ) = @_; $type ||= ''; $type = 'short' if $type eq '1'; - my $dt = DateTime->from_epoch( epoch => $epoch, time_zone => 'local' ); - $dt->set_time_zone( FixMyStreet->config('TIME_ZONE') ) - if FixMyStreet->config('TIME_ZONE'); - - my $now = DateTime->now( time_zone => 'local' ); - $now->set_time_zone( FixMyStreet->config('TIME_ZONE') ) - if FixMyStreet->config('TIME_ZONE'); + my $now = DateTime->now( time_zone => FixMyStreet->config('TIME_ZONE') || 'local' ); my $tt = ''; $tt = $dt->strftime('%H:%M') unless $type eq 'date'; @@ -243,6 +239,8 @@ sub prettify_epoch { $tt .= ', ' unless $type eq 'date'; if ($dt->strftime('%Y %U') eq $now->strftime('%Y %U')) { $tt .= decode_utf8($dt->strftime('%A')); + } elsif ($type eq 'zurich') { + $tt .= decode_utf8($dt->strftime('%e. %B %Y')); } elsif ($type eq 'short') { $tt .= decode_utf8($dt->strftime('%e %b %Y')); } elsif ($dt->strftime('%Y') eq $now->strftime('%Y')) { diff --git a/phonegap/Android/.classpath b/phonegap/Android/.classpath deleted file mode 100644 index e088a5d5b..000000000 --- a/phonegap/Android/.classpath +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="src" path="src"/> - <classpathentry kind="src" path="gen"/> - <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> - <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/> - <classpathentry kind="lib" path="libs/cordova-2.1.0.jar"/> - <classpathentry kind="output" path="bin/classes"/> -</classpath> diff --git a/phonegap/Android/.project b/phonegap/Android/.project deleted file mode 100644 index 72e54dea9..000000000 --- a/phonegap/Android/.project +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>Android</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>com.android.ide.eclipse.adt.ApkBuilder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>com.android.ide.eclipse.adt.AndroidNature</nature> - <nature>org.eclipse.jdt.core.javanature</nature> - </natures> -</projectDescription> diff --git a/phonegap/Android/AndroidManifest.xml b/phonegap/Android/AndroidManifest.xml deleted file mode 100644 index 8e7f49994..000000000 --- a/phonegap/Android/AndroidManifest.xml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="org.mysociety.FixMyStreet" - android:versionCode="1" - android:versionName="1.0" > - - <uses-sdk - android:minSdkVersion="7" - android:targetSdkVersion="15" /> - - <supports-screens - android:largeScreens="true" - android:normalScreens="true" - android:smallScreens="true" - android:resizeable="true" - android:anyDensity="true" /> - <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> - <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> - <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/> - <uses-permission android:name="android.permission.CAMERA"/> - <uses-permission android:name="android.permission.INTERNET"/> - <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> - <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> - - <application - android:icon="@drawable/ic_launcher" - android:label="@string/app_name" - android:theme="@style/AppTheme" > - <activity - android:name=".AndroidActivity" - android:label="@string/title_activity_main" - android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" > - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - </application> - -</manifest>
\ No newline at end of file diff --git a/phonegap/Android/assets/www b/phonegap/Android/assets/www deleted file mode 120000 index 933a59978..000000000 --- a/phonegap/Android/assets/www +++ /dev/null @@ -1 +0,0 @@ -../../www
\ No newline at end of file diff --git a/phonegap/Android/gen/org/mysociety/FixMyStreet/R.java b/phonegap/Android/gen/org/mysociety/FixMyStreet/R.java deleted file mode 100644 index 9dd2e6d98..000000000 --- a/phonegap/Android/gen/org/mysociety/FixMyStreet/R.java +++ /dev/null @@ -1,38 +0,0 @@ -/* AUTO-GENERATED FILE. DO NOT MODIFY. - * - * This class was automatically generated by the - * aapt tool from the resource data it found. It - * should not be modified by hand. - */ - -package org.mysociety.FixMyStreet; - -public final class R { - public static final class attr { - } - public static final class drawable { - public static final int ic_action_search=0x7f020000; - public static final int ic_launcher=0x7f020001; - } - public static final class id { - public static final int menu_settings=0x7f080000; - } - public static final class layout { - public static final int activity_main=0x7f030000; - } - public static final class menu { - public static final int activity_main=0x7f070000; - } - public static final class string { - public static final int app_name=0x7f050000; - public static final int hello=0x7f050001; - public static final int menu_settings=0x7f050002; - public static final int title_activity_main=0x7f050003; - } - public static final class style { - public static final int AppTheme=0x7f060000; - } - public static final class xml { - public static final int config=0x7f040000; - } -} diff --git a/phonegap/Android/libs/cordova-2.1.0.jar b/phonegap/Android/libs/cordova-2.1.0.jar Binary files differdeleted file mode 100644 index d3eecaaaf..000000000 --- a/phonegap/Android/libs/cordova-2.1.0.jar +++ /dev/null diff --git a/phonegap/Android/proguard-project.txt b/phonegap/Android/proguard-project.txt deleted file mode 100644 index f2fe1559a..000000000 --- a/phonegap/Android/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/phonegap/Android/project.properties b/phonegap/Android/project.properties deleted file mode 100644 index 9b84a6b4b..000000000 --- a/phonegap/Android/project.properties +++ /dev/null @@ -1,14 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-16 diff --git a/phonegap/Android/res/drawable-hdpi/ic_action_search.png b/phonegap/Android/res/drawable-hdpi/ic_action_search.png Binary files differdeleted file mode 100644 index 67de12dec..000000000 --- a/phonegap/Android/res/drawable-hdpi/ic_action_search.png +++ /dev/null diff --git a/phonegap/Android/res/drawable-hdpi/ic_launcher.png b/phonegap/Android/res/drawable-hdpi/ic_launcher.png Binary files differdeleted file mode 100644 index a301d5795..000000000 --- a/phonegap/Android/res/drawable-hdpi/ic_launcher.png +++ /dev/null diff --git a/phonegap/Android/res/drawable-ldpi/ic_launcher.png b/phonegap/Android/res/drawable-ldpi/ic_launcher.png Binary files differdeleted file mode 100644 index 2c2a58b2f..000000000 --- a/phonegap/Android/res/drawable-ldpi/ic_launcher.png +++ /dev/null diff --git a/phonegap/Android/res/drawable-mdpi/ic_action_search.png b/phonegap/Android/res/drawable-mdpi/ic_action_search.png Binary files differdeleted file mode 100644 index 134d5490b..000000000 --- a/phonegap/Android/res/drawable-mdpi/ic_action_search.png +++ /dev/null diff --git a/phonegap/Android/res/drawable-mdpi/ic_launcher.png b/phonegap/Android/res/drawable-mdpi/ic_launcher.png Binary files differdeleted file mode 100644 index f91f736fe..000000000 --- a/phonegap/Android/res/drawable-mdpi/ic_launcher.png +++ /dev/null diff --git a/phonegap/Android/res/drawable-xhdpi/ic_action_search.png b/phonegap/Android/res/drawable-xhdpi/ic_action_search.png Binary files differdeleted file mode 100644 index d699c6b37..000000000 --- a/phonegap/Android/res/drawable-xhdpi/ic_action_search.png +++ /dev/null diff --git a/phonegap/Android/res/drawable-xhdpi/ic_launcher.png b/phonegap/Android/res/drawable-xhdpi/ic_launcher.png Binary files differdeleted file mode 100644 index 96095ec84..000000000 --- a/phonegap/Android/res/drawable-xhdpi/ic_launcher.png +++ /dev/null diff --git a/phonegap/Android/res/layout/activity_main.xml b/phonegap/Android/res/layout/activity_main.xml deleted file mode 100644 index 0b4ffccc1..000000000 --- a/phonegap/Android/res/layout/activity_main.xml +++ /dev/null @@ -1,14 +0,0 @@ -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" > - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerHorizontal="true" - android:layout_centerVertical="true" - android:text="@string/hello" - tools:context=".MainActivity" /> - -</RelativeLayout> diff --git a/phonegap/Android/res/menu/activity_main.xml b/phonegap/Android/res/menu/activity_main.xml deleted file mode 100644 index cfc10fd52..000000000 --- a/phonegap/Android/res/menu/activity_main.xml +++ /dev/null @@ -1,6 +0,0 @@ -<menu xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:id="@+id/menu_settings" - android:title="@string/menu_settings" - android:orderInCategory="100" - android:showAsAction="never" /> -</menu> diff --git a/phonegap/Android/res/values-v11/styles.xml b/phonegap/Android/res/values-v11/styles.xml deleted file mode 100644 index d408cbc37..000000000 --- a/phonegap/Android/res/values-v11/styles.xml +++ /dev/null @@ -1,5 +0,0 @@ -<resources> - - <style name="AppTheme" parent="android:Theme.Holo.Light" /> - -</resources>
\ No newline at end of file diff --git a/phonegap/Android/res/values-v14/styles.xml b/phonegap/Android/res/values-v14/styles.xml deleted file mode 100644 index 1c089a788..000000000 --- a/phonegap/Android/res/values-v14/styles.xml +++ /dev/null @@ -1,5 +0,0 @@ -<resources> - - <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar" /> - -</resources>
\ No newline at end of file diff --git a/phonegap/Android/res/values/strings.xml b/phonegap/Android/res/values/strings.xml deleted file mode 100644 index 6e091cf98..000000000 --- a/phonegap/Android/res/values/strings.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - - <string name="hello">Hello World, AndroidActivity!</string> - <string name="app_name">FixMyStreet</string> - <string name="menu_settings">Settings</string> - <string name="title_activity_main">AndroidActivity</string> - -</resources>
\ No newline at end of file diff --git a/phonegap/Android/res/xml/config.xml b/phonegap/Android/res/xml/config.xml deleted file mode 100644 index 4a6fffccb..000000000 --- a/phonegap/Android/res/xml/config.xml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. ---> -<cordova> - <!-- - access elements control the Android whitelist. - Domains are assumed blocked unless set otherwise - --> - - <access origin="http://127.0.0.1*"/> <!-- allow local pages --> - - <!-- <access origin="https://example.com" /> allow any secure requests to example.com --> - <!-- <access origin="https://example.com" subdomains="true" /> such as above, but including subdomains, such as www --> - <access origin=".*"/> - - <log level="DEBUG"/> - <preference name="useBrowserHistory" value="false" /> - <preference name="exit-on-suspend" value="false" /> -<plugins> - <plugin name="App" value="org.apache.cordova.App"/> - <plugin name="Geolocation" value="org.apache.cordova.GeoBroker"/> - <plugin name="Device" value="org.apache.cordova.Device"/> - <plugin name="Accelerometer" value="org.apache.cordova.AccelListener"/> - <plugin name="Compass" value="org.apache.cordova.CompassListener"/> - <plugin name="Media" value="org.apache.cordova.AudioHandler"/> - <plugin name="Camera" value="org.apache.cordova.CameraLauncher"/> - <plugin name="Contacts" value="org.apache.cordova.ContactManager"/> - <plugin name="File" value="org.apache.cordova.FileUtils"/> - <plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager"/> - <plugin name="Notification" value="org.apache.cordova.Notification"/> - <plugin name="Storage" value="org.apache.cordova.Storage"/> - <plugin name="Temperature" value="org.apache.cordova.TempListener"/> - <plugin name="FileTransfer" value="org.apache.cordova.FileTransfer"/> - <plugin name="Capture" value="org.apache.cordova.Capture"/> - <plugin name="Battery" value="org.apache.cordova.BatteryListener"/> - <plugin name="SplashScreen" value="org.apache.cordova.SplashScreen"/> - <plugin name="Echo" value="org.apache.cordova.Echo" /> -</plugins> -</cordova> - diff --git a/phonegap/Android/src/org/mysociety/FixMyStreet/AndroidActivity.java b/phonegap/Android/src/org/mysociety/FixMyStreet/AndroidActivity.java deleted file mode 100644 index f5401fb27..000000000 --- a/phonegap/Android/src/org/mysociety/FixMyStreet/AndroidActivity.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.mysociety.FixMyStreet; - -import android.os.Bundle; -import org.apache.cordova.*; - -public class AndroidActivity extends DroidGap { - /** Called when the activity is first created. */ - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - super.loadUrl("file:///android_asset/www/index.html"); - } -}
\ No newline at end of file diff --git a/phonegap/README b/phonegap/README deleted file mode 100644 index 33249369e..000000000 --- a/phonegap/README +++ /dev/null @@ -1,11 +0,0 @@ -BUILDING ---------- - -The cordova.sj file in www is for bilding on the iPhone. In order -to build on android you need to replace it with the android_cordova.js -file in this directory. - -If you Build on android and see an error about Cordova.exec before deviceready -then it's likely that you have forgotten this step. - -To build on iPhone copy the iphone_cordova.js over the cordova.js in www. diff --git a/phonegap/iPhone/Default-568h@2x.png b/phonegap/iPhone/Default-568h@2x.png Binary files differdeleted file mode 100644 index 0891b7aab..000000000 --- a/phonegap/iPhone/Default-568h@2x.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet.xcodeproj/project.pbxproj b/phonegap/iPhone/FixMyStreet.xcodeproj/project.pbxproj deleted file mode 100644 index 9ab180b40..000000000 --- a/phonegap/iPhone/FixMyStreet.xcodeproj/project.pbxproj +++ /dev/null @@ -1,611 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 24065F8D162C7721004574A1 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 24065F8C162C7721004574A1 /* Default-568h@2x.png */; }; - 249ED5EB162D82AD000076A1 /* cordova in Resources */ = {isa = PBXBuildFile; fileRef = 249ED5EA162D82AD000076A1 /* cordova */; }; - 249ED5EC162D83BA000076A1 /* libCordova.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 240FE2F1162D6E4D00250E2D /* libCordova.a */; }; - 24D3BF4C1508D60F005923FE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24D3BF4B1508D60F005923FE /* Foundation.framework */; }; - 24D3BF4E1508D60F005923FE /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24D3BF4D1508D60F005923FE /* UIKit.framework */; }; - 24D3BF501508D60F005923FE /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24D3BF4F1508D60F005923FE /* CoreGraphics.framework */; }; - 24D3BF521508D60F005923FE /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24D3BF511508D60F005923FE /* AddressBook.framework */; }; - 24D3BF541508D60F005923FE /* AddressBookUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24D3BF531508D60F005923FE /* AddressBookUI.framework */; }; - 24D3BF561508D60F005923FE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24D3BF551508D60F005923FE /* AudioToolbox.framework */; }; - 24D3BF581508D60F005923FE /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24D3BF571508D60F005923FE /* AVFoundation.framework */; }; - 24D3BF5A1508D60F005923FE /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24D3BF591508D60F005923FE /* CoreLocation.framework */; }; - 24D3BF5C1508D60F005923FE /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24D3BF5B1508D60F005923FE /* MediaPlayer.framework */; }; - 24D3BF5E1508D60F005923FE /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24D3BF5D1508D60F005923FE /* QuartzCore.framework */; }; - 24D3BF601508D60F005923FE /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24D3BF5F1508D60F005923FE /* SystemConfiguration.framework */; }; - 24D3BF621508D60F005923FE /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24D3BF611508D60F005923FE /* MobileCoreServices.framework */; }; - 24D3BF641508D60F005923FE /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24D3BF631508D60F005923FE /* CoreMedia.framework */; }; - 24D3BF6A1508D60F005923FE /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 24D3BF681508D60F005923FE /* InfoPlist.strings */; }; - 24D3BF6C1508D60F005923FE /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 24D3BF6B1508D60F005923FE /* main.m */; }; - 24D3BF741508D60F005923FE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 24D3BF721508D60F005923FE /* Localizable.strings */; }; - 24D3BF781508D60F005923FE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 24D3BF761508D60F005923FE /* Localizable.strings */; }; - 24D3BF7C1508D60F005923FE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 24D3BF7A1508D60F005923FE /* Localizable.strings */; }; - 24D3BF801508D60F005923FE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 24D3BF7E1508D60F005923FE /* Localizable.strings */; }; - 24D3BF831508D60F005923FE /* icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 24D3BF821508D60F005923FE /* icon.png */; }; - 24D3BF851508D60F005923FE /* icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 24D3BF841508D60F005923FE /* icon@2x.png */; }; - 24D3BF871508D60F005923FE /* icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = 24D3BF861508D60F005923FE /* icon-72.png */; }; - 24D3BF8A1508D60F005923FE /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 24D3BF891508D60F005923FE /* Default.png */; }; - 24D3BF8C1508D60F005923FE /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 24D3BF8B1508D60F005923FE /* Default@2x.png */; }; - 24D3BF8E1508D60F005923FE /* Capture.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 24D3BF8D1508D60F005923FE /* Capture.bundle */; }; - 24D3BF901508D60F005923FE /* Cordova.plist in Resources */ = {isa = PBXBuildFile; fileRef = 24D3BF8F1508D60F005923FE /* Cordova.plist */; }; - 24D3BF941508D60F005923FE /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 24D3BF931508D60F005923FE /* AppDelegate.m */; }; - 24D3BF971508D60F005923FE /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 24D3BF961508D60F005923FE /* MainViewController.m */; }; - 24D3BF991508D60F005923FE /* MainViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 24D3BF981508D60F005923FE /* MainViewController.xib */; }; - 24E16541150E0F9600F31308 /* www in Resources */ = {isa = PBXBuildFile; fileRef = 24E16540150E0F9600F31308 /* www */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 240FE2F0162D6E4D00250E2D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 240FE2E9162D6E4D00250E2D /* CordovaLib.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 68A32D7114102E1C006B237C; - remoteInfo = CordovaLib; - }; - 249ED5DC162D7057000076A1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 240FE2E9162D6E4D00250E2D /* CordovaLib.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = D2AAC07D0554694100DB518D; - remoteInfo = CordovaLib; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 24065F8C162C7721004574A1 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; }; - 240FE2E9162D6E4D00250E2D /* CordovaLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CordovaLib.xcodeproj; path = ../../../../../libs/cordova_2.1/lib/ios/CordovaLib/CordovaLib.xcodeproj; sourceTree = "<group>"; }; - 249ED5EA162D82AD000076A1 /* cordova */ = {isa = PBXFileReference; lastKnownFileType = folder; path = cordova; sourceTree = "<group>"; }; - 24D3BF471508D60F005923FE /* FixMyStreet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FixMyStreet.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 24D3BF4B1508D60F005923FE /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 24D3BF4D1508D60F005923FE /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 24D3BF4F1508D60F005923FE /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 24D3BF511508D60F005923FE /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; }; - 24D3BF531508D60F005923FE /* AddressBookUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBookUI.framework; path = System/Library/Frameworks/AddressBookUI.framework; sourceTree = SDKROOT; }; - 24D3BF551508D60F005923FE /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; - 24D3BF571508D60F005923FE /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; - 24D3BF591508D60F005923FE /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; - 24D3BF5B1508D60F005923FE /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; }; - 24D3BF5D1508D60F005923FE /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - 24D3BF5F1508D60F005923FE /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; - 24D3BF611508D60F005923FE /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; - 24D3BF631508D60F005923FE /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; - 24D3BF671508D60F005923FE /* FixMyStreet-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "FixMyStreet-Info.plist"; sourceTree = "<group>"; }; - 24D3BF691508D60F005923FE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; }; - 24D3BF6B1508D60F005923FE /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; - 24D3BF6D1508D60F005923FE /* FixMyStreet-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "FixMyStreet-Prefix.pch"; sourceTree = "<group>"; }; - 24D3BF731508D60F005923FE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = Resources/en.lproj/Localizable.strings; sourceTree = "<group>"; }; - 24D3BF771508D60F005923FE /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = Resources/es.lproj/Localizable.strings; sourceTree = "<group>"; }; - 24D3BF7B1508D60F005923FE /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = Resources/de.lproj/Localizable.strings; sourceTree = "<group>"; }; - 24D3BF7F1508D60F005923FE /* se */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = se; path = Resources/se.lproj/Localizable.strings; sourceTree = "<group>"; }; - 24D3BF821508D60F005923FE /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = icon.png; path = Resources/icons/icon.png; sourceTree = "<group>"; }; - 24D3BF841508D60F005923FE /* icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "icon@2x.png"; path = "Resources/icons/icon@2x.png"; sourceTree = "<group>"; }; - 24D3BF861508D60F005923FE /* icon-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "icon-72.png"; path = "Resources/icons/icon-72.png"; sourceTree = "<group>"; }; - 24D3BF891508D60F005923FE /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Default.png; path = Resources/splash/Default.png; sourceTree = "<group>"; }; - 24D3BF8B1508D60F005923FE /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default@2x.png"; path = "Resources/splash/Default@2x.png"; sourceTree = "<group>"; }; - 24D3BF8D1508D60F005923FE /* Capture.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = Capture.bundle; path = Resources/Capture.bundle; sourceTree = "<group>"; }; - 24D3BF8F1508D60F005923FE /* Cordova.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Cordova.plist; sourceTree = "<group>"; }; - 24D3BF921508D60F005923FE /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Classes/AppDelegate.h; sourceTree = "<group>"; }; - 24D3BF931508D60F005923FE /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = Classes/AppDelegate.m; sourceTree = "<group>"; }; - 24D3BF951508D60F005923FE /* MainViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MainViewController.h; path = Classes/MainViewController.h; sourceTree = "<group>"; }; - 24D3BF961508D60F005923FE /* MainViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MainViewController.m; path = Classes/MainViewController.m; sourceTree = "<group>"; }; - 24D3BF981508D60F005923FE /* MainViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = MainViewController.xib; path = Classes/MainViewController.xib; sourceTree = "<group>"; }; - 24D3BF9B1508D60F005923FE /* README */ = {isa = PBXFileReference; lastKnownFileType = text; name = README; path = Plugins/README; sourceTree = "<group>"; }; - 24E16540150E0F9600F31308 /* www */ = {isa = PBXFileReference; lastKnownFileType = folder; name = www; path = ../www; sourceTree = "<group>"; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 24D3BF411508D60F005923FE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 249ED5EC162D83BA000076A1 /* libCordova.a in Frameworks */, - 24D3BF4C1508D60F005923FE /* Foundation.framework in Frameworks */, - 24D3BF4E1508D60F005923FE /* UIKit.framework in Frameworks */, - 24D3BF501508D60F005923FE /* CoreGraphics.framework in Frameworks */, - 24D3BF521508D60F005923FE /* AddressBook.framework in Frameworks */, - 24D3BF541508D60F005923FE /* AddressBookUI.framework in Frameworks */, - 24D3BF561508D60F005923FE /* AudioToolbox.framework in Frameworks */, - 24D3BF581508D60F005923FE /* AVFoundation.framework in Frameworks */, - 24D3BF5A1508D60F005923FE /* CoreLocation.framework in Frameworks */, - 24D3BF5C1508D60F005923FE /* MediaPlayer.framework in Frameworks */, - 24D3BF5E1508D60F005923FE /* QuartzCore.framework in Frameworks */, - 24D3BF601508D60F005923FE /* SystemConfiguration.framework in Frameworks */, - 24D3BF621508D60F005923FE /* MobileCoreServices.framework in Frameworks */, - 24D3BF641508D60F005923FE /* CoreMedia.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 24D3BF441508D60F005923FE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 240FE2EA162D6E4D00250E2D /* Products */ = { - isa = PBXGroup; - children = ( - 240FE2F1162D6E4D00250E2D /* libCordova.a */, - ); - name = Products; - sourceTree = "<group>"; - }; - 24D3BF391508D60E005923FE = { - isa = PBXGroup; - children = ( - 249ED5EA162D82AD000076A1 /* cordova */, - 24065F8C162C7721004574A1 /* Default-568h@2x.png */, - 24E16540150E0F9600F31308 /* www */, - 24D3BF651508D60F005923FE /* FixMyStreet */, - 24D3BF4A1508D60F005923FE /* Frameworks */, - 24D3BF481508D60F005923FE /* Products */, - 240FE2E9162D6E4D00250E2D /* CordovaLib.xcodeproj */, - ); - sourceTree = "<group>"; - }; - 24D3BF481508D60F005923FE /* Products */ = { - isa = PBXGroup; - children = ( - 24D3BF471508D60F005923FE /* FixMyStreet.app */, - ); - name = Products; - sourceTree = "<group>"; - }; - 24D3BF4A1508D60F005923FE /* Frameworks */ = { - isa = PBXGroup; - children = ( - 24D3BF4B1508D60F005923FE /* Foundation.framework */, - 24D3BF4D1508D60F005923FE /* UIKit.framework */, - 24D3BF4F1508D60F005923FE /* CoreGraphics.framework */, - 24D3BF511508D60F005923FE /* AddressBook.framework */, - 24D3BF531508D60F005923FE /* AddressBookUI.framework */, - 24D3BF551508D60F005923FE /* AudioToolbox.framework */, - 24D3BF571508D60F005923FE /* AVFoundation.framework */, - 24D3BF591508D60F005923FE /* CoreLocation.framework */, - 24D3BF5B1508D60F005923FE /* MediaPlayer.framework */, - 24D3BF5D1508D60F005923FE /* QuartzCore.framework */, - 24D3BF5F1508D60F005923FE /* SystemConfiguration.framework */, - 24D3BF611508D60F005923FE /* MobileCoreServices.framework */, - 24D3BF631508D60F005923FE /* CoreMedia.framework */, - ); - name = Frameworks; - sourceTree = "<group>"; - }; - 24D3BF651508D60F005923FE /* FixMyStreet */ = { - isa = PBXGroup; - children = ( - 24D3BF701508D60F005923FE /* Resources */, - 24D3BF911508D60F005923FE /* Classes */, - 24D3BF9A1508D60F005923FE /* Plugins */, - 24D3BF661508D60F005923FE /* Supporting Files */, - ); - path = FixMyStreet; - sourceTree = "<group>"; - }; - 24D3BF661508D60F005923FE /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 24D3BF671508D60F005923FE /* FixMyStreet-Info.plist */, - 24D3BF681508D60F005923FE /* InfoPlist.strings */, - 24D3BF6B1508D60F005923FE /* main.m */, - 24D3BF6D1508D60F005923FE /* FixMyStreet-Prefix.pch */, - 24D3BF8F1508D60F005923FE /* Cordova.plist */, - 24D3BF981508D60F005923FE /* MainViewController.xib */, - ); - name = "Supporting Files"; - sourceTree = "<group>"; - }; - 24D3BF701508D60F005923FE /* Resources */ = { - isa = PBXGroup; - children = ( - 24D3BF8D1508D60F005923FE /* Capture.bundle */, - 24D3BF711508D60F005923FE /* en.lproj */, - 24D3BF751508D60F005923FE /* es.lproj */, - 24D3BF791508D60F005923FE /* de.lproj */, - 24D3BF7D1508D60F005923FE /* se.lproj */, - 24D3BF811508D60F005923FE /* icons */, - 24D3BF881508D60F005923FE /* splash */, - ); - name = Resources; - sourceTree = "<group>"; - }; - 24D3BF711508D60F005923FE /* en.lproj */ = { - isa = PBXGroup; - children = ( - 24D3BF721508D60F005923FE /* Localizable.strings */, - ); - name = en.lproj; - sourceTree = "<group>"; - }; - 24D3BF751508D60F005923FE /* es.lproj */ = { - isa = PBXGroup; - children = ( - 24D3BF761508D60F005923FE /* Localizable.strings */, - ); - name = es.lproj; - sourceTree = "<group>"; - }; - 24D3BF791508D60F005923FE /* de.lproj */ = { - isa = PBXGroup; - children = ( - 24D3BF7A1508D60F005923FE /* Localizable.strings */, - ); - name = de.lproj; - sourceTree = "<group>"; - }; - 24D3BF7D1508D60F005923FE /* se.lproj */ = { - isa = PBXGroup; - children = ( - 24D3BF7E1508D60F005923FE /* Localizable.strings */, - ); - name = se.lproj; - sourceTree = "<group>"; - }; - 24D3BF811508D60F005923FE /* icons */ = { - isa = PBXGroup; - children = ( - 24D3BF821508D60F005923FE /* icon.png */, - 24D3BF841508D60F005923FE /* icon@2x.png */, - 24D3BF861508D60F005923FE /* icon-72.png */, - ); - name = icons; - sourceTree = "<group>"; - }; - 24D3BF881508D60F005923FE /* splash */ = { - isa = PBXGroup; - children = ( - 24D3BF891508D60F005923FE /* Default.png */, - 24D3BF8B1508D60F005923FE /* Default@2x.png */, - ); - name = splash; - sourceTree = "<group>"; - }; - 24D3BF911508D60F005923FE /* Classes */ = { - isa = PBXGroup; - children = ( - 24D3BF921508D60F005923FE /* AppDelegate.h */, - 24D3BF931508D60F005923FE /* AppDelegate.m */, - 24D3BF951508D60F005923FE /* MainViewController.h */, - 24D3BF961508D60F005923FE /* MainViewController.m */, - ); - name = Classes; - sourceTree = "<group>"; - }; - 24D3BF9A1508D60F005923FE /* Plugins */ = { - isa = PBXGroup; - children = ( - 24D3BF9B1508D60F005923FE /* README */, - ); - name = Plugins; - sourceTree = "<group>"; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 24D3BF461508D60F005923FE /* FixMyStreet */ = { - isa = PBXNativeTarget; - buildConfigurationList = 24D3BFA01508D60F005923FE /* Build configuration list for PBXNativeTarget "FixMyStreet" */; - buildPhases = ( - 24D3BF401508D60F005923FE /* Sources */, - 24D3BF411508D60F005923FE /* Frameworks */, - 24D3BF421508D60F005923FE /* Resources */, - 24D3BF431508D60F005923FE /* Sources */, - 24D3BF441508D60F005923FE /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 249ED5DD162D7057000076A1 /* PBXTargetDependency */, - ); - name = FixMyStreet; - productName = FixMyStreet; - productReference = 24D3BF471508D60F005923FE /* FixMyStreet.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 24D3BF3B1508D60E005923FE /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0450; - }; - buildConfigurationList = 24D3BF3E1508D60E005923FE /* Build configuration list for PBXProject "FixMyStreet" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - es, - de, - se, - ); - mainGroup = 24D3BF391508D60E005923FE; - productRefGroup = 24D3BF481508D60F005923FE /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 240FE2EA162D6E4D00250E2D /* Products */; - ProjectRef = 240FE2E9162D6E4D00250E2D /* CordovaLib.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 24D3BF461508D60F005923FE /* FixMyStreet */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 240FE2F1162D6E4D00250E2D /* libCordova.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libCordova.a; - remoteRef = 240FE2F0162D6E4D00250E2D /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 24D3BF421508D60F005923FE /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 24D3BF6A1508D60F005923FE /* InfoPlist.strings in Resources */, - 24D3BF741508D60F005923FE /* Localizable.strings in Resources */, - 24D3BF781508D60F005923FE /* Localizable.strings in Resources */, - 24D3BF7C1508D60F005923FE /* Localizable.strings in Resources */, - 24D3BF801508D60F005923FE /* Localizable.strings in Resources */, - 24D3BF831508D60F005923FE /* icon.png in Resources */, - 24D3BF851508D60F005923FE /* icon@2x.png in Resources */, - 24D3BF871508D60F005923FE /* icon-72.png in Resources */, - 24D3BF8A1508D60F005923FE /* Default.png in Resources */, - 24D3BF8C1508D60F005923FE /* Default@2x.png in Resources */, - 24D3BF8E1508D60F005923FE /* Capture.bundle in Resources */, - 24D3BF901508D60F005923FE /* Cordova.plist in Resources */, - 24D3BF991508D60F005923FE /* MainViewController.xib in Resources */, - 24E16541150E0F9600F31308 /* www in Resources */, - 24065F8D162C7721004574A1 /* Default-568h@2x.png in Resources */, - 249ED5EB162D82AD000076A1 /* cordova in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 24D3BF401508D60F005923FE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 24D3BF6C1508D60F005923FE /* main.m in Sources */, - 24D3BF941508D60F005923FE /* AppDelegate.m in Sources */, - 24D3BF971508D60F005923FE /* MainViewController.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 24D3BF431508D60F005923FE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 249ED5DD162D7057000076A1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = CordovaLib; - targetProxy = 249ED5DC162D7057000076A1 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 24D3BF681508D60F005923FE /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 24D3BF691508D60F005923FE /* en */, - ); - name = InfoPlist.strings; - sourceTree = "<group>"; - }; - 24D3BF721508D60F005923FE /* Localizable.strings */ = { - isa = PBXVariantGroup; - children = ( - 24D3BF731508D60F005923FE /* en */, - ); - name = Localizable.strings; - sourceTree = "<group>"; - }; - 24D3BF761508D60F005923FE /* Localizable.strings */ = { - isa = PBXVariantGroup; - children = ( - 24D3BF771508D60F005923FE /* es */, - ); - name = Localizable.strings; - sourceTree = "<group>"; - }; - 24D3BF7A1508D60F005923FE /* Localizable.strings */ = { - isa = PBXVariantGroup; - children = ( - 24D3BF7B1508D60F005923FE /* de */, - ); - name = Localizable.strings; - sourceTree = "<group>"; - }; - 24D3BF7E1508D60F005923FE /* Localizable.strings */ = { - isa = PBXVariantGroup; - children = ( - 24D3BF7F1508D60F005923FE /* se */, - ); - name = Localizable.strings; - sourceTree = "<group>"; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 24D3BF9E1508D60F005923FE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - CLANG_ENABLE_OBJC_ARC = NO; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 3.0; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 24D3BF9F1508D60F005923FE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - CLANG_ENABLE_OBJC_ARC = NO; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 3.0; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 24D3BFA11508D60F005923FE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = YES; - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = /Users/Shared/Cordova/Frameworks; - GCC_DYNAMIC_NO_PIC = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "FixMyStreet/FixMyStreet-Prefix.pch"; - GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1,"; - GCC_THUMB_SUPPORT = NO; - "HEADER_SEARCH_PATHS[arch=*]" = ( - "\"$(TARGET_BUILD_DIR)/usr/local/lib/include\"", - "\"$(OBJROOT)/UninstalledProducts/include\"", - "\"$(BUILT_PRODUCTS_DIR)\"", - ); - INFOPLIST_FILE = "FixMyStreet/FixMyStreet-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.3; - OTHER_LDFLAGS = ( - "-weak_framework", - UIKit, - "-weak_framework", - AVFoundation, - "-weak_framework", - CoreMedia, - "-weak_library", - /usr/lib/libSystem.B.dylib, - "-Obj-C", - "-all_load", - "-weak_framework", - CoreFoundation, - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - TARGETED_DEVICE_FAMILY = 1; - VALIDATE_PRODUCT = YES; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - 24D3BFA21508D60F005923FE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = YES; - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - FRAMEWORK_SEARCH_PATHS = /Users/Shared/Cordova/Frameworks; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "FixMyStreet/FixMyStreet-Prefix.pch"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "NDEBUG=1,", - "CORDOVA_FRAMEWORK=1", - ); - GCC_THUMB_SUPPORT = NO; - "HEADER_SEARCH_PATHS[arch=*]" = ( - "\"$(TARGET_BUILD_DIR)/usr/local/lib/include\"", - "\"$(OBJROOT)/UninstalledProducts/include\"", - "\"$(BUILT_PRODUCTS_DIR)\"", - ); - INFOPLIST_FILE = "FixMyStreet/FixMyStreet-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.3; - OTHER_LDFLAGS = ( - "-weak_framework", - UIKit, - "-weak_framework", - AVFoundation, - "-weak_framework", - CoreMedia, - "-weak_library", - /usr/lib/libSystem.B.dylib, - "-Obj-C", - "-all_load", - "-weak_framework", - CoreFoundation, - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - TARGETED_DEVICE_FAMILY = 1; - VALIDATE_PRODUCT = NO; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 24D3BF3E1508D60E005923FE /* Build configuration list for PBXProject "FixMyStreet" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 24D3BF9E1508D60F005923FE /* Debug */, - 24D3BF9F1508D60F005923FE /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 24D3BFA01508D60F005923FE /* Build configuration list for PBXNativeTarget "FixMyStreet" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 24D3BFA11508D60F005923FE /* Debug */, - 24D3BFA21508D60F005923FE /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 24D3BF3B1508D60E005923FE /* Project object */; -} diff --git a/phonegap/iPhone/FixMyStreet.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/phonegap/iPhone/FixMyStreet.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index f65be0eea..000000000 --- a/phonegap/iPhone/FixMyStreet.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Workspace - version = "1.0"> - <FileRef - location = "self:FixMyStreet.xcodeproj"> - </FileRef> -</Workspace> diff --git a/phonegap/iPhone/FixMyStreet.xcodeproj/xcuserdata/struan.xcuserdatad/xcschemes/FixMyStreet.xcscheme b/phonegap/iPhone/FixMyStreet.xcodeproj/xcuserdata/struan.xcuserdatad/xcschemes/FixMyStreet.xcscheme deleted file mode 100644 index 4d631ea26..000000000 --- a/phonegap/iPhone/FixMyStreet.xcodeproj/xcuserdata/struan.xcuserdatad/xcschemes/FixMyStreet.xcscheme +++ /dev/null @@ -1,86 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Scheme - LastUpgradeVersion = "0450" - version = "1.3"> - <BuildAction - parallelizeBuildables = "YES" - buildImplicitDependencies = "YES"> - <BuildActionEntries> - <BuildActionEntry - buildForTesting = "YES" - buildForRunning = "YES" - buildForProfiling = "YES" - buildForArchiving = "YES" - buildForAnalyzing = "YES"> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "24D3BF461508D60F005923FE" - BuildableName = "FixMyStreet.app" - BlueprintName = "FixMyStreet" - ReferencedContainer = "container:FixMyStreet.xcodeproj"> - </BuildableReference> - </BuildActionEntry> - </BuildActionEntries> - </BuildAction> - <TestAction - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB" - shouldUseLaunchSchemeArgsEnv = "YES" - buildConfiguration = "Debug"> - <Testables> - </Testables> - <MacroExpansion> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "24D3BF461508D60F005923FE" - BuildableName = "FixMyStreet.app" - BlueprintName = "FixMyStreet" - ReferencedContainer = "container:FixMyStreet.xcodeproj"> - </BuildableReference> - </MacroExpansion> - </TestAction> - <LaunchAction - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB" - launchStyle = "0" - useCustomWorkingDirectory = "NO" - buildConfiguration = "Debug" - ignoresPersistentStateOnLaunch = "NO" - debugDocumentVersioning = "YES" - allowLocationSimulation = "YES"> - <BuildableProductRunnable> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "24D3BF461508D60F005923FE" - BuildableName = "FixMyStreet.app" - BlueprintName = "FixMyStreet" - ReferencedContainer = "container:FixMyStreet.xcodeproj"> - </BuildableReference> - </BuildableProductRunnable> - <AdditionalOptions> - </AdditionalOptions> - </LaunchAction> - <ProfileAction - shouldUseLaunchSchemeArgsEnv = "YES" - savedToolIdentifier = "" - useCustomWorkingDirectory = "NO" - buildConfiguration = "Release" - debugDocumentVersioning = "YES"> - <BuildableProductRunnable> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "24D3BF461508D60F005923FE" - BuildableName = "FixMyStreet.app" - BlueprintName = "FixMyStreet" - ReferencedContainer = "container:FixMyStreet.xcodeproj"> - </BuildableReference> - </BuildableProductRunnable> - </ProfileAction> - <AnalyzeAction - buildConfiguration = "Debug"> - </AnalyzeAction> - <ArchiveAction - buildConfiguration = "Release" - revealArchiveInOrganizer = "YES"> - </ArchiveAction> -</Scheme> diff --git a/phonegap/iPhone/FixMyStreet.xcodeproj/xcuserdata/struan.xcuserdatad/xcschemes/xcschememanagement.plist b/phonegap/iPhone/FixMyStreet.xcodeproj/xcuserdata/struan.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 0d3188478..000000000 --- a/phonegap/iPhone/FixMyStreet.xcodeproj/xcuserdata/struan.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>SchemeUserState</key> - <dict> - <key>FixMyStreet.xcscheme</key> - <dict> - <key>orderHint</key> - <integer>0</integer> - </dict> - </dict> - <key>SuppressBuildableAutocreation</key> - <dict> - <key>24D3BF461508D60F005923FE</key> - <dict> - <key>primary</key> - <true/> - </dict> - </dict> -</dict> -</plist> diff --git a/phonegap/iPhone/FixMyStreet/Classes/AppDelegate.h b/phonegap/iPhone/FixMyStreet/Classes/AppDelegate.h deleted file mode 100644 index 5c258f148..000000000 --- a/phonegap/iPhone/FixMyStreet/Classes/AppDelegate.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -// -// AppDelegate.h -// tmp_cordova -// -// Created by ___FULLUSERNAME___ on ___DATE___. -// Copyright ___ORGANIZATIONNAME___ ___YEAR___. All rights reserved. -// - -#import <UIKit/UIKit.h> - -#import <Cordova/CDVViewController.h> - -@interface AppDelegate : NSObject < UIApplicationDelegate > { - -} - -// invoke string is passed to your app on launch, this is only valid if you -// edit tmp_cordova-Info.plist to add a protocol -// a simple tutorial can be found here : -// http://iphonedevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html - -@property (nonatomic, strong) IBOutlet UIWindow* window; -@property (nonatomic, strong) IBOutlet CDVViewController* viewController; - -@end - diff --git a/phonegap/iPhone/FixMyStreet/Classes/AppDelegate.m b/phonegap/iPhone/FixMyStreet/Classes/AppDelegate.m deleted file mode 100644 index b1c862eee..000000000 --- a/phonegap/iPhone/FixMyStreet/Classes/AppDelegate.m +++ /dev/null @@ -1,138 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -// -// AppDelegate.m -// tmp_cordova -// -// Created by ___FULLUSERNAME___ on ___DATE___. -// Copyright ___ORGANIZATIONNAME___ ___YEAR___. All rights reserved. -// - -#import "AppDelegate.h" -#import "MainViewController.h" - -#import <Cordova/CDVPlugin.h> - - -@implementation AppDelegate - -@synthesize window, viewController; - -- (id) init -{ - /** If you need to do any extra app-specific initialization, you can do it here - * -jm - **/ - NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; - [cookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways]; - - self = [super init]; - return self; -} - -#pragma UIApplicationDelegate implementation - -/** - * This is main kick off after the app inits, the views and Settings are setup here. (preferred - iOS4 and up) - */ -- (BOOL) application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions -{ - NSURL* url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey]; - NSString* invokeString = nil; - - if (url && [url isKindOfClass:[NSURL class]]) { - invokeString = [url absoluteString]; - NSLog(@"tmp_cordova launchOptions = %@", url); - } - - CGRect screenBounds = [[UIScreen mainScreen] bounds]; - self.window = [[UIWindow alloc] initWithFrame:screenBounds]; - self.window.autoresizesSubviews = YES; - - self.viewController = [[MainViewController alloc] init]; - self.viewController.useSplashScreen = YES; - self.viewController.wwwFolderName = @"www"; - self.viewController.startPage = @"index.html"; - self.viewController.invokeString = invokeString; - - // NOTE: To control the view's frame size, override [self.viewController viewWillAppear:] in your view controller. - - // check whether the current orientation is supported: if it is, keep it, rather than forcing a rotation - BOOL forceStartupRotation = YES; - UIDeviceOrientation curDevOrientation = [[UIDevice currentDevice] orientation]; - - if (UIDeviceOrientationUnknown == curDevOrientation) { - // UIDevice isn't firing orientation notifications yet… go look at the status bar - curDevOrientation = (UIDeviceOrientation)[[UIApplication sharedApplication] statusBarOrientation]; - } - - if (UIDeviceOrientationIsValidInterfaceOrientation(curDevOrientation)) { - if ([self.viewController supportsOrientation:curDevOrientation]) { - forceStartupRotation = NO; - } - } - - if (forceStartupRotation) { - UIInterfaceOrientation newOrient; - if ([self.viewController supportsOrientation:UIInterfaceOrientationPortrait]) - newOrient = UIInterfaceOrientationPortrait; - else if ([self.viewController supportsOrientation:UIInterfaceOrientationLandscapeLeft]) - newOrient = UIInterfaceOrientationLandscapeLeft; - else if ([self.viewController supportsOrientation:UIInterfaceOrientationLandscapeRight]) - newOrient = UIInterfaceOrientationLandscapeRight; - else - newOrient = UIInterfaceOrientationPortraitUpsideDown; - - NSLog(@"AppDelegate forcing status bar to: %d from: %d", newOrient, curDevOrientation); - [[UIApplication sharedApplication] setStatusBarOrientation:newOrient]; - } - - self.window.rootViewController = self.viewController; - [self.window makeKeyAndVisible]; - - return YES; -} - -// this happens while we are running ( in the background, or from within our own app ) -// only valid if tmp_cordova-Info.plist specifies a protocol to handle -- (BOOL) application:(UIApplication*)application handleOpenURL:(NSURL*)url -{ - if (!url) { - return NO; - } - - // calls into javascript global function 'handleOpenURL' - NSString* jsString = [NSString stringWithFormat:@"handleOpenURL(\"%@\");", url]; - [self.viewController.webView stringByEvaluatingJavaScriptFromString:jsString]; - - // all plugins will get the notification, and their handlers will be called - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:CDVPluginHandleOpenURLNotification object:url]]; - - return YES; -} - -- (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window -{ - // IPhone doesn't support upside down by default, while the IPad does. Override to allow all orientations always, and let the root view controller decide whats allowed (the supported orientations mask gets intersected). - NSUInteger supportedInterfaceOrientations = (1 << UIInterfaceOrientationPortrait) | (1 << UIInterfaceOrientationLandscapeLeft) | (1 << UIInterfaceOrientationLandscapeRight) | (1 << UIInterfaceOrientationPortraitUpsideDown); - return supportedInterfaceOrientations; -} - -@end diff --git a/phonegap/iPhone/FixMyStreet/Classes/MainViewController.h b/phonegap/iPhone/FixMyStreet/Classes/MainViewController.h deleted file mode 100644 index c2b68deb8..000000000 --- a/phonegap/iPhone/FixMyStreet/Classes/MainViewController.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -// -// MainViewController.h -// cordova1.8.0 -// -// Created by Struan Donald on 08/06/2012. -// Copyright __MyCompanyName__ 2012. All rights reserved. -// - -#import <Cordova/CDVViewController.h> - -@interface MainViewController : CDVViewController - -@end diff --git a/phonegap/iPhone/FixMyStreet/Classes/MainViewController.m b/phonegap/iPhone/FixMyStreet/Classes/MainViewController.m deleted file mode 100644 index 289da3596..000000000 --- a/phonegap/iPhone/FixMyStreet/Classes/MainViewController.m +++ /dev/null @@ -1,140 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -// -// MainViewController.h -// cordova1.8.0 -// -// Created by Struan Donald on 08/06/2012. -// Copyright __MyCompanyName__ 2012. All rights reserved. -// - -#import "MainViewController.h" - -@implementation MainViewController - -- (id) initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void) didReceiveMemoryWarning -{ - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -#pragma mark - View lifecycle - -- (void) viewDidLoad -{ - [super viewDidLoad]; - // Do any additional setup after loading the view from its nib. -} - -- (void) viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - // Return YES for supported orientations - return [super shouldAutorotateToInterfaceOrientation:interfaceOrientation]; -} - -/* Comment out the block below to over-ride */ -/* -- (CDVCordovaView*) newCordovaViewWithFrame:(CGRect)bounds -{ - return[super newCordovaViewWithFrame:bounds]; -} -*/ - -/* Comment out the block below to over-ride */ -/* -#pragma CDVCommandDelegate implementation - -- (id) getCommandInstance:(NSString*)className -{ - return [super getCommandInstance:className]; -} - -- (BOOL) execute:(CDVInvokedUrlCommand*)command -{ - return [super execute:command]; -} - -- (NSString*) pathForResource:(NSString*)resourcepath; -{ - return [super pathForResource:resourcepath]; -} - -- (void) registerPlugin:(CDVPlugin*)plugin withClassName:(NSString*)className -{ - return [super registerPlugin:plugin withClassName:className]; -} -*/ - -#pragma UIWebDelegate implementation - -- (void) webViewDidFinishLoad:(UIWebView*) theWebView -{ - // only valid if ___PROJECTNAME__-Info.plist specifies a protocol to handle - if (self.invokeString) - { - // this is passed before the deviceready event is fired, so you can access it in js when you receive deviceready - NSString* jsString = [NSString stringWithFormat:@"var invokeString = \"%@\";", self.invokeString]; - [theWebView stringByEvaluatingJavaScriptFromString:jsString]; - } - - // Black base color for background matches the native apps - theWebView.backgroundColor = [UIColor blackColor]; - - return [super webViewDidFinishLoad:theWebView]; -} - -/* Comment out the block below to over-ride */ -/* - -- (void) webViewDidStartLoad:(UIWebView*)theWebView -{ - return [super webViewDidStartLoad:theWebView]; -} - -- (void) webView:(UIWebView*)theWebView didFailLoadWithError:(NSError*)error -{ - return [super webView:theWebView didFailLoadWithError:error]; -} - -- (BOOL) webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType -{ - return [super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType]; -} -*/ - -@end diff --git a/phonegap/iPhone/FixMyStreet/Classes/MainViewController.xib b/phonegap/iPhone/FixMyStreet/Classes/MainViewController.xib deleted file mode 100644 index 9837f578c..000000000 --- a/phonegap/iPhone/FixMyStreet/Classes/MainViewController.xib +++ /dev/null @@ -1,118 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="8.00"> - <data> - <int key="IBDocument.SystemTarget">1280</int> - <string key="IBDocument.SystemVersion">11C25</string> - <string key="IBDocument.InterfaceBuilderVersion">1919</string> - <string key="IBDocument.AppKitVersion">1138.11</string> - <string key="IBDocument.HIToolboxVersion">566.00</string> - <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> - <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <string key="NS.object.0">916</string> - </object> - <array key="IBDocument.IntegratedClassDependencies"> - <string>IBProxyObject</string> - <string>IBUIView</string> - </array> - <array key="IBDocument.PluginDependencies"> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - </array> - <object class="NSMutableDictionary" key="IBDocument.Metadata"> - <string key="NS.key.0">PluginDependencyRecalculationVersion</string> - <integer value="1" key="NS.object.0"/> - </object> - <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> - <object class="IBProxyObject" id="372490531"> - <string key="IBProxiedObjectIdentifier">IBFilesOwner</string> - <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> - </object> - <object class="IBProxyObject" id="975951072"> - <string key="IBProxiedObjectIdentifier">IBFirstResponder</string> - <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> - </object> - <object class="IBUIView" id="191373211"> - <reference key="NSNextResponder"/> - <int key="NSvFlags">274</int> - <string key="NSFrame">{{0, 20}, {320, 460}}</string> - <reference key="NSSuperview"/> - <reference key="NSWindow"/> - <object class="NSColor" key="IBUIBackgroundColor"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MQA</bytes> - <object class="NSColorSpace" key="NSCustomColorSpace"> - <int key="NSID">2</int> - </object> - </object> - <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/> - <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> - </object> - </array> - <object class="IBObjectContainer" key="IBDocument.Objects"> - <array class="NSMutableArray" key="connectionRecords"> - <object class="IBConnectionRecord"> - <object class="IBCocoaTouchOutletConnection" key="connection"> - <string key="label">view</string> - <reference key="source" ref="372490531"/> - <reference key="destination" ref="191373211"/> - </object> - <int key="connectionID">3</int> - </object> - </array> - <object class="IBMutableOrderedSet" key="objectRecords"> - <array key="orderedObjects"> - <object class="IBObjectRecord"> - <int key="objectID">0</int> - <array key="object" id="0"/> - <reference key="children" ref="1000"/> - <nil key="parent"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">1</int> - <reference key="object" ref="191373211"/> - <reference key="parent" ref="0"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">-1</int> - <reference key="object" ref="372490531"/> - <reference key="parent" ref="0"/> - <string key="objectName">File's Owner</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">-2</int> - <reference key="object" ref="975951072"/> - <reference key="parent" ref="0"/> - </object> - </array> - </object> - <dictionary class="NSMutableDictionary" key="flattenedProperties"> - <string key="-1.CustomClassName">MainViewController</string> - <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <string key="-2.CustomClassName">UIResponder</string> - <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <string key="1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - </dictionary> - <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/> - <nil key="activeLocalization"/> - <dictionary class="NSMutableDictionary" key="localizations"/> - <nil key="sourceID"/> - <int key="maxID">3</int> - </object> - <object class="IBClassDescriber" key="IBDocument.Classes"> - <array class="NSMutableArray" key="referencedPartialClassDescriptions"> - <object class="IBPartialClassDescription"> - <string key="className">MainViewController</string> - <string key="superclassName">UIViewController</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBProjectSource</string> - <string key="minorKey">./Classes/MainViewController.h</string> - </object> - </object> - </array> - </object> - <int key="IBDocument.localizationMode">0</int> - <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string> - <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> - <int key="IBDocument.defaultPropertyAccessControl">3</int> - <string key="IBCocoaTouchPluginVersion">916</string> - </data> -</archive> diff --git a/phonegap/iPhone/FixMyStreet/Cordova.plist b/phonegap/iPhone/FixMyStreet/Cordova.plist deleted file mode 100644 index cc71225d2..000000000 --- a/phonegap/iPhone/FixMyStreet/Cordova.plist +++ /dev/null @@ -1,65 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>UIWebViewBounce</key> - <true/> - <key>TopActivityIndicator</key> - <string>gray</string> - <key>EnableLocation</key> - <false/> - <key>EnableViewportScale</key> - <false/> - <key>AutoHideSplashScreen</key> - <true/> - <key>ShowSplashScreenSpinner</key> - <true/> - <key>MediaPlaybackRequiresUserAction</key> - <false/> - <key>AllowInlineMediaPlayback</key> - <false/> - <key>OpenAllWhitelistURLsInWebView</key> - <false/> - <key>ExternalHosts</key> - <array> - <string>*.tilma.mysociety.org</string> - <string>mapit.mysociety.org</string> - <string>*.tile.openstreetmap.org</string> - <string>*.virtualearth.net</string> - <string>struan.fixmystreet.dev.mysociety.org</string> - </array> - <key>Plugins</key> - <dict> - <key>Device</key> - <string>CDVDevice</string> - <key>Compass</key> - <string>CDVLocation</string> - <key>Accelerometer</key> - <string>CDVAccelerometer</string> - <key>Camera</key> - <string>CDVCamera</string> - <key>NetworkStatus</key> - <string>CDVConnection</string> - <key>Contacts</key> - <string>CDVContacts</string> - <key>Debug Console</key> - <string>CDVDebugConsole</string> - <key>File</key> - <string>CDVFile</string> - <key>FileTransfer</key> - <string>CDVFileTransfer</string> - <key>Geolocation</key> - <string>CDVLocation</string> - <key>Notification</key> - <string>CDVNotification</string> - <key>Media</key> - <string>CDVSound</string> - <key>Capture</key> - <string>CDVCapture</string> - <key>SplashScreen</key> - <string>CDVSplashScreen</string> - <key>Battery</key> - <string>CDVBattery</string> - </dict> -</dict> -</plist> diff --git a/phonegap/iPhone/FixMyStreet/FixMyStreet-Info.plist b/phonegap/iPhone/FixMyStreet/FixMyStreet-Info.plist deleted file mode 100644 index 3162159f6..000000000 --- a/phonegap/iPhone/FixMyStreet/FixMyStreet-Info.plist +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>English</string> - <key>CFBundleDisplayName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundleExecutable</key> - <string>${EXECUTABLE_NAME}</string> - <key>CFBundleIconFile</key> - <string>icon.png</string> - <key>CFBundleIconFiles</key> - <array> - <string>icon.png</string> - <string>icon@2x.png</string> - <string>icon-72.png</string> - </array> - <key>CFBundleIdentifier</key> - <string>org.mysociety.FixMyStreet</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>APPL</string> - <key>CFBundleShortVersionString</key> - <string>2.0</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>2.0</string> - <key>LSRequiresIPhoneOS</key> - <true/> - <key>NSMainNibFile</key> - <string></string> - <key>NSMainNibFile~ipad</key> - <string></string> - <key>UIStatusBarHidden</key> - <true/> - <key>UISupportedInterfaceOrientations</key> - <array> - <string>UIInterfaceOrientationPortrait</string> - </array> - <key>UISupportedInterfaceOrientations~ipad</key> - <array> - <string>UIInterfaceOrientationPortrait</string> - <string>UIInterfaceOrientationLandscapeLeft</string> - <string>UIInterfaceOrientationPortraitUpsideDown</string> - <string>UIInterfaceOrientationLandscapeRight</string> - </array> -</dict> -</plist> diff --git a/phonegap/iPhone/FixMyStreet/FixMyStreet-Prefix.pch b/phonegap/iPhone/FixMyStreet/FixMyStreet-Prefix.pch deleted file mode 100644 index b74079015..000000000 --- a/phonegap/iPhone/FixMyStreet/FixMyStreet-Prefix.pch +++ /dev/null @@ -1,7 +0,0 @@ -// -// Prefix header for all source files of the 'FixMyStreet' target in the 'FixMyStreet' project -// - -#ifdef __OBJC__ - #import <UIKit/UIKit.h> -#endif diff --git a/phonegap/iPhone/FixMyStreet/Plugins/README b/phonegap/iPhone/FixMyStreet/Plugins/README deleted file mode 100644 index 438840dbc..000000000 --- a/phonegap/iPhone/FixMyStreet/Plugins/README +++ /dev/null @@ -1 +0,0 @@ -Put the .h and .m files of your plugin here. The .js files of your plugin belong in the www folder.
\ No newline at end of file diff --git a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/controls_bg.png b/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/controls_bg.png Binary files differdeleted file mode 100644 index 784e9c7dd..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/controls_bg.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/controls_bg@2x.png b/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/controls_bg@2x.png Binary files differdeleted file mode 100644 index 1e28c6dbc..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/controls_bg@2x.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/controls_bg~ipad.png b/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/controls_bg~ipad.png Binary files differdeleted file mode 100644 index efbef8aaa..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/controls_bg~ipad.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/microphone.png b/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/microphone.png Binary files differdeleted file mode 100644 index 155b88cae..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/microphone.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/microphone@2x.png b/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/microphone@2x.png Binary files differdeleted file mode 100644 index 79ef16bac..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/microphone@2x.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/microphone~ipad.png b/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/microphone~ipad.png Binary files differdeleted file mode 100644 index ef1c472bf..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/microphone~ipad.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/record_button.png b/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/record_button.png Binary files differdeleted file mode 100644 index ceb95898f..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/record_button.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/record_button@2x.png b/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/record_button@2x.png Binary files differdeleted file mode 100644 index d6ce30281..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/record_button@2x.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/record_button~ipad.png b/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/record_button~ipad.png Binary files differdeleted file mode 100644 index d8e24a4d0..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/record_button~ipad.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/recording_bg.png b/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/recording_bg.png Binary files differdeleted file mode 100644 index bafc087e2..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/recording_bg.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/recording_bg@2x.png b/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/recording_bg@2x.png Binary files differdeleted file mode 100644 index 798490b0f..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/recording_bg@2x.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/recording_bg~ipad.png b/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/recording_bg~ipad.png Binary files differdeleted file mode 100644 index 3b467f632..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/recording_bg~ipad.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/stop_button.png b/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/stop_button.png Binary files differdeleted file mode 100644 index 9c31838a4..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/stop_button.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/stop_button@2x.png b/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/stop_button@2x.png Binary files differdeleted file mode 100644 index 8cf657eaa..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/stop_button@2x.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/stop_button~ipad.png b/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/stop_button~ipad.png Binary files differdeleted file mode 100644 index 59bb7a573..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/Capture.bundle/stop_button~ipad.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/Resources/de.lproj/Localizable.strings b/phonegap/iPhone/FixMyStreet/Resources/de.lproj/Localizable.strings deleted file mode 100644 index f1cdb42d1..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/de.lproj/Localizable.strings +++ /dev/null @@ -1,26 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - - -// accessibility label for recording button -"toggle audio recording" = "starten/beenden der Tonaufnahme"; -// notification spoken by VoiceOver when timed recording finishes -"timed recording complete" = "programmierte Aufnahme beendet"; -// accessibility hint for display of recorded elapsed time -"recorded time in minutes and seconds" = "aufgenommene Zeit in Minuten und Sekunden";
\ No newline at end of file diff --git a/phonegap/iPhone/FixMyStreet/Resources/en.lproj/Localizable.strings b/phonegap/iPhone/FixMyStreet/Resources/en.lproj/Localizable.strings deleted file mode 100644 index 897268443..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/en.lproj/Localizable.strings +++ /dev/null @@ -1,25 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -// accessibility label for recording button -"toggle audio recording" = "toggle audio recording"; -// notification spoken by VoiceOver when timed recording finishes -"timed recording complete" = "timed recording complete"; -// accessibility hint for display of recorded elapsed time -"recorded time in minutes and seconds" = "recorded time in minutes and seconds";
\ No newline at end of file diff --git a/phonegap/iPhone/FixMyStreet/Resources/es.lproj/Localizable.strings b/phonegap/iPhone/FixMyStreet/Resources/es.lproj/Localizable.strings deleted file mode 100644 index 23831e662..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/es.lproj/Localizable.strings +++ /dev/null @@ -1,25 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -// accessibility label for recording button -"toggle audio recording" = "grabación de audio cambiar"; -// notification spoken by VoiceOver when timed recording finishes -"timed recording complete" = "tiempo de grabación completo"; -// accessibility hint for display of recorded elapsed time -"recorded time in minutes and seconds" = "tiempo registrado en minutos y segundos";
\ No newline at end of file diff --git a/phonegap/iPhone/FixMyStreet/Resources/icons/icon-72.png b/phonegap/iPhone/FixMyStreet/Resources/icons/icon-72.png Binary files differdeleted file mode 100644 index 8c6e5df34..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/icons/icon-72.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/Resources/icons/icon.png b/phonegap/iPhone/FixMyStreet/Resources/icons/icon.png Binary files differdeleted file mode 100644 index b2571a719..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/icons/icon.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/Resources/icons/icon@2x.png b/phonegap/iPhone/FixMyStreet/Resources/icons/icon@2x.png Binary files differdeleted file mode 100644 index d75098f5a..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/icons/icon@2x.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/Resources/se.lproj/Localizable.strings b/phonegap/iPhone/FixMyStreet/Resources/se.lproj/Localizable.strings deleted file mode 100644 index 0af964685..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/se.lproj/Localizable.strings +++ /dev/null @@ -1,26 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - - -// accessibility label for recording button -"toggle audio recording" = "börja/avsluta inspelning"; -// notification spoken by VoiceOver when timed recording finishes -"timed recording complete" = "inspelning har avslutad"; -// accessibility hint for display of recorded elapsed time -"recorded time in minutes and seconds" = "inspelad tid in minuter och sekund";
\ No newline at end of file diff --git a/phonegap/iPhone/FixMyStreet/Resources/splash/Default.png b/phonegap/iPhone/FixMyStreet/Resources/splash/Default.png Binary files differdeleted file mode 100644 index 644f3804c..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/splash/Default.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/Resources/splash/Default@2x.png b/phonegap/iPhone/FixMyStreet/Resources/splash/Default@2x.png Binary files differdeleted file mode 100644 index 02d6e3593..000000000 --- a/phonegap/iPhone/FixMyStreet/Resources/splash/Default@2x.png +++ /dev/null diff --git a/phonegap/iPhone/FixMyStreet/en.lproj/InfoPlist.strings b/phonegap/iPhone/FixMyStreet/en.lproj/InfoPlist.strings deleted file mode 100644 index 477b28ff8..000000000 --- a/phonegap/iPhone/FixMyStreet/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/phonegap/iPhone/FixMyStreet/main.m b/phonegap/iPhone/FixMyStreet/main.m deleted file mode 100644 index b6fba52b1..000000000 --- a/phonegap/iPhone/FixMyStreet/main.m +++ /dev/null @@ -1,35 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ -// -// main.m -// FixMyStreet -// -// Created by Struan Donald on 08/03/2012. -// Copyright __MyCompanyName__ 2012. All rights reserved. -// - -#import <UIKit/UIKit.h> - -int main(int argc, char *argv[]) { - - NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; - int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate"); - [pool release]; - return retVal; -} diff --git a/phonegap/www/about.html b/phonegap/www/about.html deleted file mode 100644 index 91e3c30b4..000000000 --- a/phonegap/www/about.html +++ /dev/null @@ -1,153 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <title></title> - - <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" /> - <meta charset="utf-8"> - - <link rel="stylesheet" href="css/base.css"> - <link rel="stylesheet" href="css/mobile.css"> - <script type="text/javascript" src="js/config.js"></script> - <script type="text/javascript" charset="utf-8" src="cordova-independent.js"></script> - <script type="text/javascript" src="js/jquery-1.7.0.min.js"></script> - <script type="text/javascript" src="js/json2.js"></script> - <script type="text/javascript" src="js/mobile.js"></script> - </head> - <body class="frontpage fullwidthpage mobile-header"> - <div class="wrapper"> - <div class="table-cell"> - <div id="user-meta"> - </div> - <div class="container"> - <div class="content" role="main"> - <div class="tablewrapper"> - <div class="container"> - <div class="content" role="main"> - <h1><a name="faq"></a>Frequently Asked Questions</h1> - <dl> - <dt>What is FixMyStreet?</dt> - <dd>FixMyStreet is a site to help people report, view, -or discuss local problems they’ve found to their local council by -simply locating them on a map. It launched in early February -2007.</dd> - <dt>What sort of problems should I report with FixMyStreet?</dt> - <dd>FixMyStreet is primarily for reporting things which are -<strong>broken or dirty or damaged or dumped, and need fixing, cleaning -or clearing</strong>, such as: - - <ul><li>Abandoned vehicles - <li>Dog Fouling - <li>Flyposting or graffiti - <li>Flytipping or litter - <li>Streetcleaning, such as broken glass in a cycle lane - <li>Unlit lamposts - <li>Potholes - </ul> - </dd> - - <dt>What isn’t FixMyStreet for?</dt> - <dd>FixMyStreet is not a way of getting in touch with your council for all - issues – please use FixMyStreet only for problems such as the above. We - often route problem reports via cleansing services or highways and so using - FixMyStreet for other matters may result in a delay in your report getting - to the right department. <strong>You will need to contact your council - directly for problems such as</strong>: - - <ul><li>Anti-social behaviour - <li>Any urgent or emergency problems - <li>Noise pollution or barking dogs - <li>Fires and smoke/smell pollution - <li>Missing wheelie bins or recycling boxes or missed rubbish collections - <li>Proposals for speed bumps/ CCTV/ pedestrian crossings/ new road layouts/ etc. - <li>Complaining about your neighbours - <li>Complaining about the council - <li>Joy riding, drug taking, animal cruelty, or other criminal activity - </ul> - <p>Councils often have direct hotlines for these sorts of issues.</p> - </dd> - - <dt>How do I use the site?</dt> - <dd>After entering a postcode or location, you are presented -with a map of that area. You can view problems already reported in that area, -or report ones of your own simply by clicking on the map at the location of -the problem.</dd> - <dt>How are the problems solved?</dt> - <dd>They are reported to the relevant council by email. The -council can then resolve the problem the way they normally would. -Alternatively, you can discuss the problem on the website with others, and -then together lobby the council to fix it, or fix it directly yourselves.</dd> - <dt>Is it free?</dt> - <dd>The site is free to use, yes. FixMyStreet is run -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>Why do you only cover the countries of Great Britain?</dt> - <dd>We would love to cover Northern Ireland, but we have only been able - to locate boundaries for Great Britain (from Ordnance Survey). If you - know of a source for Northern Ireland council boundaries - so that we can add them to the site, that'd be great.</dd> - </dl> - - <h2><a name="organisation"></a>Organisation Questions</h2> - <dl> - <dt>Who built FixMyStreet?</dt> - <dd>This site 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.com</a>. -mySociety’s primary mission is to build Internet projects which give people simple, tangible -benefits in the civic and community aspects of their lives. Our first project -was <a href="http://www.writetothem.com/">WriteToThem</a>, where you can write to any of your -elected representatives, for free. The charity is called UK Citizens Online Democracy and is charity number 1076346. mySociety -can be contacted by email at <a href="mailto:hello@mysociety.org">hello@mysociety.org</a>, -or by post at mySociety, 483 Green Lanes, London, N13 4BS, UK.</dd> - <dt><img src="/i/moj.png" align="right" alt="Ministry of Justice" hspace="10">Who pays for it?</dt> - <dd>FixMyStreet was originally paid for via the Department for - Constitutional Affairs Innovations Fund. It is now funded by a variety of means, from commercial - work to <a href="http://www.mysociety.org/donate/">donations</a>.</dd> - - <dt>Do you need any help with the project?</dt> - <dd>Yes, we can use help in all sorts of ways, technical or -non-technical. Please see our <a -href="http://www.mysociety.org/helpus/">Get Involved page</a>.</dd> - <dt>I’d like a site like this for my own location/ where’s the "source code" to this site?</dt> - <dd> -The software behind this site is open source, and available -to you mainly under the GNU Affero GPL software license. You can <a -href="http://github.com/mysociety/fixmystreet">download the -source code</a> and help us develop it. -You’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> - <dt>People build things, not organisations. Who <em>actually</em> built it?</dt> - <dd>Matthew Somerville and Francis Irving wrote the site, -Chris Lightfoot wrote the tileserver and map cutter, Richard Pope created -our pins, Deborah Kerr keeps things up-to-date and does user support, -Ayesha Garrett designed our posters, and Tom Steinberg managed it all. - -Thanks also to -<a href="http://www.ordnancesurvey.co.uk">Ordnance Survey</a> (for the maps, -UK postcodes, and UK addresses – data © Crown copyright, all -rights reserved, Ministry of Justice 100037819 2008), -Yahoo! for their BSD-licensed JavaScript libraries, the entire free software -community (this particular project was brought to you by Perl, PostgreSQL, -and the number 161.290) and <a -href="http://www.bytemark.co.uk/">Bytemark</a> (who kindly host all -our servers). - -Let us know if we’ve missed anyone.</dd> - </dl> - </div><!-- .content role=main --> - </div><!-- .container --> - </div><!-- .table-cell --> - <div class="big-green-banner mobile-map-banner mobile-nav-banner"> - <a href="index.html">home</a> - About - </div> - </div> <!-- .wrapper --> - </body> -</html> -</html> diff --git a/phonegap/www/account.html b/phonegap/www/account.html deleted file mode 100644 index f483b7547..000000000 --- a/phonegap/www/account.html +++ /dev/null @@ -1,109 +0,0 @@ -<!doctype html> -<html class="no-js" lang="en-gb"> - <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"> - - <link rel="stylesheet" href="css/base.css"> - <link rel="stylesheet" href="css/mobile.css"> - <link rel="stylesheet" href="css/layout.css" media="(min-width:48em)"> - - <script type="text/javascript" src="js/jquery-1.7.0.min.js"></script> - <script type="text/javascript" charset="utf-8" src="cordova-independent.js"></script> - - <script type="text/javascript" src="js/config.js"></script> - <script type="text/javascript" src="js/json2.js"></script> - - <meta http-equiv="content-type" content="text/html; charset=utf-8"> - - <script src="js/jquery.validate.min.js" type="text/javascript" charset="utf-8"></script> - - <script type="text/javascript" src="js/geo.min.js"></script> - <script type="text/javascript" src="js/fixmystreet.js"></script> - <script type="text/javascript" src="js/mobile.js"></script> - - <script type="text/javascript"> - validation_strings = { - update: 'Please enter a message', - title: 'Please enter a subject', - detail: 'Please enter some details', - name: { - required: 'Please enter your name', - validName: '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' - }, - category: 'Please choose a category', - rznvy: { - required: 'Please enter your email', - email: 'Please enter a valid email' - }, - email: { - required: 'Please enter your email', - email: 'Please enter a valid email' - } - }; - </script> - <title> Viewing a location :: FixMyStreet </title> - </head> - - <body class="mobile-header" id="container" onload="display_signed_out_msg();"> - - <div class="wrapper"> - <div class="table-cell"> - <header id="site-header" role="banner"> - <div class="container"> - <span id="site-logo"></span> - </div> - </header> - - <div id="user-meta"> - - </div> - - <div class="container"> - <div class="content" role="main"> - <form action="" method="post" name="signInForm" id="signInForm" enctype="multipart/form-data" class="validate"> - <div id="form_sign_in_only" class="nodisplay"> - <div id="form_sign_in_yes" class="form-box"> - <label for="form_email" id="email_label">Email</label> - <input type="email" value="" name="email" id="form_email" placeholder="Please enter your email address" required> - - <div class="form-txt-submit-box"> - <label for="password_sign_in" id="passsword_sign_in_label">Password</label> - <input type="password" name="password_sign_in" id="password_sign_in" placeholder="Your password" value=""> - <input class="green-btn" type="submit" id="submit_sign_in" name="submit_sign_in" value="Sign in"> - </div> - - </div> - </div> - </form> - <div id="forget_button" class="form-txt-submit-box nodisplay"> - <input class="green-btn" type="button" id="forget" name="forget" value="Forget"> - </div> - </div> - </div> - </div><!-- .table-cell --> - - <div class="big-green-banner mobile-map-banner mobile-nav-banner"> - <a href="index.html">home</a> - Account - </div> - </div> <!-- .wrapper --> - <div class="spinner" id="loadingSpinner"> - <div class="bar1"></div> - <div class="bar2"></div> - <div class="bar3"></div> - <div class="bar4"></div> - <div class="bar5"></div> - <div class="bar6"></div> - <div class="bar7"></div> - <div class="bar8"></div> - <div class="bar9"></div> - <div class="bar10"></div> - <div class="bar11"></div> - <div class="bar12"></div> - </div> -</body> -</html> diff --git a/phonegap/www/around.html b/phonegap/www/around.html deleted file mode 100644 index 00842e777..000000000 --- a/phonegap/www/around.html +++ /dev/null @@ -1,262 +0,0 @@ -<!doctype html> -<html class="no-js" lang="en-gb"> - <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"> - - <link rel="stylesheet" href="css/base.css"> - <link rel="stylesheet" href="css/layout.css" media="(min-width:48em)"> - <link rel="stylesheet" href="css/mobile.css"> - - <script type="text/javascript" src="js/jquery-1.7.0.min.js"></script> - <script type="text/javascript" src="cordova-independent.js"></script> - - <script type="text/javascript" src="js/config.js"></script> - <script type="text/javascript" src="js/json2.js"></script> - - <meta http-equiv="content-type" content="text/html; charset=utf-8"> - - <script src="js/jquery.validate.min.js" type="text/javascript" charset="utf-8"></script> - - <script type="text/javascript" src="js/geo.min.js"></script> - <script type="text/javascript" src="js/fixmystreet.js"></script> - <script type="text/javascript" src="js/mobile.js"></script> - <script type="text/javascript" src="js/OpenLayers.fixmystreet.js"></script> - <script type="text/javascript" src="js/map-OpenLayers.js"></script> - <script type="text/javascript" src="js/map-bing-ol.js"></script> - <script type="text/javascript" src="js/jquery.ba-hashchange.min.js"></script> - - <script type="text/javascript"> - validation_strings = { - update: 'Please enter a message', - title: 'Please enter a subject', - detail: 'Please enter some details', - name: { - required: 'Please enter your name', - validName: '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' - }, - category: 'Please choose a category', - rznvy: { - required: 'Please enter your email', - email: 'Please enter a valid email' - }, - email: { - required: 'Please enter your email', - email: 'Please enter a valid email' - } - }; - </script> - <title> Viewing a location :: FixMyStreet</title> - </head> - - <body class="mappage"> - - <div class="wrapper"> - <div class="table-cell"> - <header id="site-header" role="banner"> - <div class="container"> - <span id="site-logo"></span> - </div> - </header> - - <div id="user-meta"> - - </div> - - <div class="container"> - <div class="content" role="main"> - - <form action="" method="post" name="mapForm" id="mapForm" enctype="multipart/form-data" class="validate"> - - <input type="hidden" name="pc" id="pc" value=""> - <input type="hidden" name="latitude" id="fixmystreet.latitude" value=""> - <input type="hidden" name="longitude" id="fixmystreet.longitude" value=""> - - <input type="hidden" name="zoom" value="2"> - <script type="text/javascript"> - var fixmystreet = { - 'page': 'around', - 'area': '', - 'all_pins': '', - 'latitude': localStorage.latitude, - 'longitude': localStorage.longitude, - - 'zoom': 2, - 'numZoomLevels': 5, - 'zoomOffset': 13, - 'map_type': "", - 'pins': [ ] - - }; - - $('#fixmystreet\\.latitude').val( localStorage.latitude ); - $('#fixmystreet\\.longitude').val( localStorage.longitude ); - $('#pc').val( localStorage.pc ); - </script> - <div id="map_box"> - <div id="map"></div> - <p id="sub_map_links"> - <a id="hide_pins_link" rel="nofollow" href="">Hide pins</a> - <a id="all_pins_link" rel="nofollow" href="">Show old</a> - </p> - </div> - - <div id="side"> - - <h1 class="big-green-banner">Click map to report a problem</h1> - - <section class="full-width"> - <menu id="problems-nav" class="tab-nav"> - <ul> - <li><a href="#current">Problems on the map</a></li> - <li><a href="#current_near">Problems nearby</a></li> - </ul> - </menu> - <ul id="current" class="issue-list-a tab"> - <li><p>No problems have been reported yet.</p></li> - </ul> - - <ul id="current_near" class="issue-list-a tab"> - <li><p>No problems found.</p></li> - </ul> - </section> - </div> - - <div style="display:none" id="side-form"> - <div id="report-a-problem-main"> - <h1>Reporting a problem</h1> - - <p id="councils_text"> - All the information you provide here will be sent to <strong>the local council</strong>. - The subject and details of the problem will be public, plus your name if you give us permission. - </p> - - <div id="report-a-problem-sidebar"> - - <div class="sidebar-tips"> - <p>You have located the problem at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. </p> - <p> - Please fill in details of the problem below. The council won't be able - to help unless you leave as much detail as you can, so please describe the exact location of - the problem (e.g. on a wall), what it is, how long it has been there, a description (and a - photo of the problem if you have one), etc. - </p> - </div> - - <div class="sidebar-notes"> - <p>Please note:</p> - - <ul class="plain-list"> - <li>We will only use your personal information in accordance with our <a href="/faq#privacy">privacy policy.</a></li> - <li>Please be polite, concise and to the point.</li> - <li>Please do not be abusive — abusing your council devalues the service for all users.</li> - <li>Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation.</li> - <li>Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site remember that you can contact your council directly using their own website.</li> - </ul> - </div> - </div> - - <fieldset> - <div id="problem_form"> - <label for="form_title">Subject</label> - <input type="text" value="" name="title" id="form_title" placeholder="Provide a title" required> - - <label for="form_detail">Details</label> - <textarea rows="7" cols="26" name="detail" id="form_detail" placeholder="Please fill in details of the problem." required></textarea> - - <div id="form_category_row"> - <label class="inline" for="form_category">Category</label> - <select name="category" id="form_category" required><option>Loading...</option></select> - </div> - - <div id="add_photo"> - <label>Add a Photo</label> - <input value="Take Photo" type="button" name="photo_button" id="id_photo_button" onclick="takePhoto(navigator.camera.PictureSourceType.CAMERA);" class="green-btn"> Or - <input value="Choose" type="button" name="existing" id="id_existing" onclick="takePhoto(navigator.camera.PictureSourceType.SAVEDPHOTOALBUM);" class="green-btn"> - </div> - - <div id="display_photo" style="display: none"> - <label>Your Photo</label> - <img id="photo" src="" width="200" /> - <input value="Remove Photo" type="button" name="del_photo_button" id="id_del_photo_button" onclick="delPhoto();" class="green-btn"> - </div> - - <input type="hidden" name="photo" id="form_photo" value=""> - <label for="form_email" id="email_label">Your email</label> - <input type="email" value="" name="email" id="form_email" placeholder="Please enter your email address" required> - - <div id="form_sign_in"> - <h3 id="now_submit">Now to submit your report…</h3> - <h2 id="have_password">Do you have a FixMyStreet password?</h2> - - <div id="form_sign_in_yes" class="form-box"> - - <h5><strong>Yes</strong> I have a password</h5> - - <label class="hidden-js n" for="password_sign_in">Yes I have a password</label> - <div class="form-txt-submit-box"> - <input type="password" name="password_sign_in" id="password_sign_in" placeholder="Your password" value=""> - <input class="green-btn" type="submit" id="submit_sign_in" name="submit_sign_in" value="Report"> - </div> - </div> - - <div id="form_sign_in_no" class="form-box"> - <h5 id="let_me_confirm"><strong>No</strong> Let me confirm my report by email</h5> - - <label for="form_may_show_nameme">Name</label> - <input type="text" class="form-focus-trigger validName" value="" name="name" id="form_name" placeholder="Your name"> - - <div class="checkbox-group"> - <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1" checked> - <label class="inline" for="form_may_show_name">Show my name publicly</label> - </div> - - <div class="general-sidebar-notes form-focus-hidden"> - <p class="dark">We never show your email address or phone number.</p> - <p id="providing_password">Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports.</p> - </div> - - <label class="form-focus-hidden" for="form_phone">Phone number</label> - <input class="form-focus-hidden" type="text" value="" name="phone" id="form_phone" placeholder="Your phone number (optional)"> - - <div id="password_surround"> - <label class="form-focus-hidden" for="password_register" id="password_label">Password</label> - </div> - - <div class="form-txt-submit-box form-focus-hidden"> - <input type="password" name="password_register" id="password_register" value="" placeholder="Enter a password (optional)"> - <input class="green-btn" type="submit" id="submit_register" name="submit_register" value="Report"> - </div> - </div> - </div> - </div> - </fieldset> - - <input type="hidden" name="submit_problem" value="1"> - </div> - - </div> - </form> - </div><!-- .content role=main --> - </div><!-- .container --> - </div><!-- .table-cell --> - </div> <!-- .wrapper --> - <div class="spinner" id="loadingSpinner"> - <div class="bar1"></div> - <div class="bar2"></div> - <div class="bar3"></div> - <div class="bar4"></div> - <div class="bar5"></div> - <div class="bar6"></div> - <div class="bar7"></div> - <div class="bar8"></div> - <div class="bar9"></div> - <div class="bar10"></div> - <div class="bar11"></div> - <div class="bar12"></div> - </div> -</body> -</html> diff --git a/phonegap/www/cordova-android-2.1.0.js b/phonegap/www/cordova-android-2.1.0.js deleted file mode 100755 index 9e7fa8ec2..000000000 --- a/phonegap/www/cordova-android-2.1.0.js +++ /dev/null @@ -1,5814 +0,0 @@ -// commit 143f5221a6251c9cbccdedc57005c61551b97f12 - -// File generated at :: Wed Sep 12 2012 12:51:58 GMT-0700 (PDT) - -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. -*/ - -;(function() { - -// file: lib/scripts/require.js -var require, - define; - -(function () { - var modules = {}; - - function build(module) { - var factory = module.factory; - module.exports = {}; - delete module.factory; - factory(require, module.exports, module); - return module.exports; - } - - require = function (id) { - if (!modules[id]) { - throw "module " + id + " not found"; - } - return modules[id].factory ? build(modules[id]) : modules[id].exports; - }; - - define = function (id, factory) { - if (modules[id]) { - throw "module " + id + " already defined"; - } - - modules[id] = { - id: id, - factory: factory - }; - }; - - define.remove = function (id) { - delete modules[id]; - }; - -})(); - -//Export for use in node -if (typeof module === "object" && typeof require === "function") { - module.exports.require = require; - module.exports.define = define; -} -// file: lib/cordova.js -define("cordova", function(require, exports, module) { -var channel = require('cordova/channel'); - -/** - * Listen for DOMContentLoaded and notify our channel subscribers. - */ -document.addEventListener('DOMContentLoaded', function() { - channel.onDOMContentLoaded.fire(); -}, false); -if (document.readyState == 'complete' || document.readyState == 'interactive') { - channel.onDOMContentLoaded.fire(); -} - -/** - * Intercept calls to addEventListener + removeEventListener and handle deviceready, - * resume, and pause events. - */ -var m_document_addEventListener = document.addEventListener; -var m_document_removeEventListener = document.removeEventListener; -var m_window_addEventListener = window.addEventListener; -var m_window_removeEventListener = window.removeEventListener; - -/** - * Houses custom event handlers to intercept on document + window event listeners. - */ -var documentEventHandlers = {}, - windowEventHandlers = {}; - -document.addEventListener = function(evt, handler, capture) { - var e = evt.toLowerCase(); - if (typeof documentEventHandlers[e] != 'undefined') { - if (evt === 'deviceready') { - documentEventHandlers[e].subscribeOnce(handler); - } else { - documentEventHandlers[e].subscribe(handler); - } - } else { - m_document_addEventListener.call(document, evt, handler, capture); - } -}; - -window.addEventListener = function(evt, handler, capture) { - var e = evt.toLowerCase(); - if (typeof windowEventHandlers[e] != 'undefined') { - windowEventHandlers[e].subscribe(handler); - } else { - m_window_addEventListener.call(window, evt, handler, capture); - } -}; - -document.removeEventListener = function(evt, handler, capture) { - var e = evt.toLowerCase(); - // If unsubcribing from an event that is handled by a plugin - if (typeof documentEventHandlers[e] != "undefined") { - documentEventHandlers[e].unsubscribe(handler); - } else { - m_document_removeEventListener.call(document, evt, handler, capture); - } -}; - -window.removeEventListener = function(evt, handler, capture) { - var e = evt.toLowerCase(); - // If unsubcribing from an event that is handled by a plugin - if (typeof windowEventHandlers[e] != "undefined") { - windowEventHandlers[e].unsubscribe(handler); - } else { - m_window_removeEventListener.call(window, evt, handler, capture); - } -}; - -function createEvent(type, data) { - var event = document.createEvent('Events'); - event.initEvent(type, false, false); - if (data) { - for (var i in data) { - if (data.hasOwnProperty(i)) { - event[i] = data[i]; - } - } - } - return event; -} - -if(typeof window.console === "undefined") { - window.console = { - log:function(){} - }; -} - -var cordova = { - define:define, - require:require, - /** - * Methods to add/remove your own addEventListener hijacking on document + window. - */ - addWindowEventHandler:function(event, opts) { - return (windowEventHandlers[event] = channel.create(event, opts)); - }, - addDocumentEventHandler:function(event, opts) { - return (documentEventHandlers[event] = channel.create(event, opts)); - }, - removeWindowEventHandler:function(event) { - delete windowEventHandlers[event]; - }, - removeDocumentEventHandler:function(event) { - delete documentEventHandlers[event]; - }, - /** - * Retreive original event handlers that were replaced by Cordova - * - * @return object - */ - getOriginalHandlers: function() { - return {'document': {'addEventListener': m_document_addEventListener, 'removeEventListener': m_document_removeEventListener}, - 'window': {'addEventListener': m_window_addEventListener, 'removeEventListener': m_window_removeEventListener}}; - }, - /** - * Method to fire event from native code - * bNoDetach is required for events which cause an exception which needs to be caught in native code - */ - fireDocumentEvent: function(type, data, bNoDetach) { - var evt = createEvent(type, data); - if (typeof documentEventHandlers[type] != 'undefined') { - if( bNoDetach ) { - documentEventHandlers[type].fire(evt); - } - else { - setTimeout(function() { - documentEventHandlers[type].fire(evt); - }, 0); - } - } else { - document.dispatchEvent(evt); - } - }, - fireWindowEvent: function(type, data) { - var evt = createEvent(type,data); - if (typeof windowEventHandlers[type] != 'undefined') { - setTimeout(function() { - windowEventHandlers[type].fire(evt); - }, 0); - } else { - window.dispatchEvent(evt); - } - }, - - // TODO: iOS only - // This queue holds the currently executing command and all pending - // commands executed with cordova.exec(). - commandQueue:[], - // Indicates if we're currently in the middle of flushing the command - // queue on the native side. - commandQueueFlushing:false, - // END TODO - /** - * Plugin callback mechanism. - */ - callbackId: 0, - callbacks: {}, - callbackStatus: { - NO_RESULT: 0, - OK: 1, - CLASS_NOT_FOUND_EXCEPTION: 2, - ILLEGAL_ACCESS_EXCEPTION: 3, - INSTANTIATION_EXCEPTION: 4, - MALFORMED_URL_EXCEPTION: 5, - IO_EXCEPTION: 6, - INVALID_ACTION: 7, - JSON_EXCEPTION: 8, - ERROR: 9 - }, - - /** - * Called by native code when returning successful result from an action. - * - * @param callbackId - * @param args - */ - callbackSuccess: function(callbackId, args) { - if (cordova.callbacks[callbackId]) { - - // If result is to be sent to callback - if (args.status == cordova.callbackStatus.OK) { - try { - if (cordova.callbacks[callbackId].success) { - cordova.callbacks[callbackId].success(args.message); - } - } - catch (e) { - console.log("Error in success callback: "+callbackId+" = "+e); - } - } - - // Clear callback if not expecting any more results - if (!args.keepCallback) { - delete cordova.callbacks[callbackId]; - } - } - }, - - /** - * Called by native code when returning error result from an action. - * - * @param callbackId - * @param args - */ - callbackError: function(callbackId, args) { - if (cordova.callbacks[callbackId]) { - try { - if (cordova.callbacks[callbackId].fail) { - cordova.callbacks[callbackId].fail(args.message); - } - } - catch (e) { - console.log("Error in error callback: "+callbackId+" = "+e); - } - - // Clear callback if not expecting any more results - if (!args.keepCallback) { - delete cordova.callbacks[callbackId]; - } - } - }, - addConstructor: function(func) { - channel.onCordovaReady.subscribeOnce(function() { - try { - func(); - } catch(e) { - console.log("Failed to run constructor: " + e); - } - }); - } -}; - -// Register pause, resume and deviceready channels as events on document. -channel.onPause = cordova.addDocumentEventHandler('pause'); -channel.onResume = cordova.addDocumentEventHandler('resume'); -channel.onDeviceReady = cordova.addDocumentEventHandler('deviceready'); - -module.exports = cordova; - -}); - -// file: lib/common/builder.js -define("cordova/builder", function(require, exports, module) { -var utils = require('cordova/utils'); - -function each(objects, func, context) { - for (var prop in objects) { - if (objects.hasOwnProperty(prop)) { - func.apply(context, [objects[prop], prop]); - } - } -} - -function include(parent, objects, clobber, merge) { - each(objects, function (obj, key) { - try { - var result = obj.path ? require(obj.path) : {}; - - if (clobber) { - // Clobber if it doesn't exist. - if (typeof parent[key] === 'undefined') { - parent[key] = result; - } else if (typeof obj.path !== 'undefined') { - // If merging, merge properties onto parent, otherwise, clobber. - if (merge) { - recursiveMerge(parent[key], result); - } else { - parent[key] = result; - } - } - result = parent[key]; - } else { - // Overwrite if not currently defined. - if (typeof parent[key] == 'undefined') { - parent[key] = result; - } else if (merge && typeof obj.path !== 'undefined') { - // If merging, merge parent onto result - recursiveMerge(result, parent[key]); - parent[key] = result; - } else { - // Set result to what already exists, so we can build children into it if they exist. - result = parent[key]; - } - } - - if (obj.children) { - include(result, obj.children, clobber, merge); - } - } catch(e) { - utils.alert('Exception building cordova JS globals: ' + e + ' for key "' + key + '"'); - } - }); -} - -/** - * Merge properties from one object onto another recursively. Properties from - * the src object will overwrite existing target property. - * - * @param target Object to merge properties into. - * @param src Object to merge properties from. - */ -function recursiveMerge(target, src) { - for (var prop in src) { - if (src.hasOwnProperty(prop)) { - if (typeof target.prototype !== 'undefined' && target.prototype.constructor === target) { - // If the target object is a constructor override off prototype. - target.prototype[prop] = src[prop]; - } else { - target[prop] = typeof src[prop] === 'object' ? recursiveMerge( - target[prop], src[prop]) : src[prop]; - } - } - } - return target; -} - -module.exports = { - build: function (objects) { - return { - intoButDontClobber: function (target) { - include(target, objects, false, false); - }, - intoAndClobber: function(target) { - include(target, objects, true, false); - }, - intoAndMerge: function(target) { - include(target, objects, true, true); - } - }; - } -}; - -}); - -// file: lib/common/channel.js -define("cordova/channel", function(require, exports, module) { -var utils = require('cordova/utils'), - nextGuid = 1; - -/** - * Custom pub-sub "channel" that can have functions subscribed to it - * This object is used to define and control firing of events for - * cordova initialization. - * - * The order of events during page load and Cordova startup is as follows: - * - * onDOMContentLoaded Internal event that is received when the web page is loaded and parsed. - * onNativeReady Internal event that indicates the Cordova native side is ready. - * onCordovaReady Internal event fired when all Cordova JavaScript objects have been created. - * onCordovaInfoReady Internal event fired when device properties are available. - * onCordovaConnectionReady Internal event fired when the connection property has been set. - * onDeviceReady User event fired to indicate that Cordova is ready - * onResume User event fired to indicate a start/resume lifecycle event - * onPause User event fired to indicate a pause lifecycle event - * onDestroy Internal event fired when app is being destroyed (User should use window.onunload event, not this one). - * - * The only Cordova events that user code should register for are: - * deviceready Cordova native code is initialized and Cordova APIs can be called from JavaScript - * pause App has moved to background - * resume App has returned to foreground - * - * Listeners can be registered as: - * document.addEventListener("deviceready", myDeviceReadyListener, false); - * document.addEventListener("resume", myResumeListener, false); - * document.addEventListener("pause", myPauseListener, false); - * - * The DOM lifecycle events should be used for saving and restoring state - * window.onload - * window.onunload - * - */ - -/** - * Channel - * @constructor - * @param type String the channel name - * @param opts Object options to pass into the channel, currently - * supports: - * onSubscribe: callback that fires when - * something subscribes to the Channel. Sets - * context to the Channel. - * onUnsubscribe: callback that fires when - * something unsubscribes to the Channel. Sets - * context to the Channel. - */ -var Channel = function(type, opts) { - this.type = type; - this.handlers = {}; - this.numHandlers = 0; - this.fired = false; - this.enabled = true; - this.events = { - onSubscribe:null, - onUnsubscribe:null - }; - if (opts) { - if (opts.onSubscribe) this.events.onSubscribe = opts.onSubscribe; - if (opts.onUnsubscribe) this.events.onUnsubscribe = opts.onUnsubscribe; - } -}, - channel = { - /** - * Calls the provided function only after all of the channels specified - * have been fired. - */ - join: function (h, c) { - var i = c.length; - var len = i; - var f = function() { - if (!(--i)) h(); - }; - for (var j=0; j<len; j++) { - !c[j].fired?c[j].subscribeOnce(f):i--; - } - if (!i) h(); - }, - create: function (type, opts) { - channel[type] = new Channel(type, opts); - return channel[type]; - }, - - /** - * cordova Channels that must fire before "deviceready" is fired. - */ - deviceReadyChannelsArray: [], - deviceReadyChannelsMap: {}, - - /** - * Indicate that a feature needs to be initialized before it is ready to be used. - * This holds up Cordova's "deviceready" event until the feature has been initialized - * and Cordova.initComplete(feature) is called. - * - * @param feature {String} The unique feature name - */ - waitForInitialization: function(feature) { - if (feature) { - var c = null; - if (this[feature]) { - c = this[feature]; - } - else { - c = this.create(feature); - } - this.deviceReadyChannelsMap[feature] = c; - this.deviceReadyChannelsArray.push(c); - } - }, - - /** - * Indicate that initialization code has completed and the feature is ready to be used. - * - * @param feature {String} The unique feature name - */ - initializationComplete: function(feature) { - var c = this.deviceReadyChannelsMap[feature]; - if (c) { - c.fire(); - } - } - }; - -function forceFunction(f) { - if (f === null || f === undefined || typeof f != 'function') throw "Function required as first argument!"; -} - -/** - * Subscribes the given function to the channel. Any time that - * Channel.fire is called so too will the function. - * Optionally specify an execution context for the function - * and a guid that can be used to stop subscribing to the channel. - * Returns the guid. - */ -Channel.prototype.subscribe = function(f, c, g) { - // need a function to call - forceFunction(f); - - var func = f; - if (typeof c == "object") { func = utils.close(c, f); } - - g = g || func.observer_guid || f.observer_guid; - if (!g) { - // first time any channel has seen this subscriber - g = nextGuid++; - } - func.observer_guid = g; - f.observer_guid = g; - - // Don't add the same handler more than once. - if (!this.handlers[g]) { - this.handlers[g] = func; - this.numHandlers++; - if (this.events.onSubscribe) this.events.onSubscribe.call(this); - if (this.fired) func.apply(this, this.fireArgs); - } - return g; -}; - -/** - * Like subscribe but the function is only called once and then it - * auto-unsubscribes itself. - */ -Channel.prototype.subscribeOnce = function(f, c) { - // need a function to call - forceFunction(f); - - var g = null; - var _this = this; - if (this.fired) { - f.apply(c || null, this.fireArgs); - } else { - g = this.subscribe(function() { - _this.unsubscribe(g); - f.apply(c || null, arguments); - }); - f.observer_guid = g; - } - return g; -}; - -/** - * Unsubscribes the function with the given guid from the channel. - */ -Channel.prototype.unsubscribe = function(g) { - // need a function to unsubscribe - if (g === null || g === undefined) { throw "You must pass _something_ into Channel.unsubscribe"; } - - if (typeof g == 'function') { g = g.observer_guid; } - var handler = this.handlers[g]; - if (handler) { - if (handler.observer_guid) handler.observer_guid=null; - delete this.handlers[g]; - this.numHandlers--; - if (this.events.onUnsubscribe) this.events.onUnsubscribe.call(this); - } -}; - -/** - * Calls all functions subscribed to this channel. - */ -Channel.prototype.fire = function(e) { - if (this.enabled) { - var fail = false; - this.fired = true; - this.fireArgs = arguments; - // Copy the values first so that it is safe to modify it from within - // callbacks. - var toCall = []; - for (var item in this.handlers) { - toCall.push(this.handlers[item]); - } - for (var i = 0; i < toCall.length; ++i) { - var rv = (toCall[i].apply(this, arguments)===false); - fail = fail || rv; - } - return !fail; - } - return true; -}; - -// defining them here so they are ready super fast! -// DOM event that is received when the web page is loaded and parsed. -channel.create('onDOMContentLoaded'); - -// Event to indicate the Cordova native side is ready. -channel.create('onNativeReady'); - -// Event to indicate that all Cordova JavaScript objects have been created -// and it's time to run plugin constructors. -channel.create('onCordovaReady'); - -// Event to indicate that device properties are available -channel.create('onCordovaInfoReady'); - -// Event to indicate that the connection property has been set. -channel.create('onCordovaConnectionReady'); - -// Event to indicate that Cordova is ready -channel.create('onDeviceReady'); - -// Event to indicate a resume lifecycle event -channel.create('onResume'); - -// Event to indicate a pause lifecycle event -channel.create('onPause'); - -// Event to indicate a destroy lifecycle event -channel.create('onDestroy'); - -// Channels that must fire before "deviceready" is fired. -channel.waitForInitialization('onCordovaReady'); -channel.waitForInitialization('onCordovaConnectionReady'); - -module.exports = channel; - -}); - -// file: lib/common/common.js -define("cordova/common", function(require, exports, module) { -module.exports = { - objects: { - cordova: { - path: 'cordova', - children: { - exec: { - path: 'cordova/exec' - }, - logger: { - path: 'cordova/plugin/logger' - } - } - }, - Cordova: { - children: { - exec: { - path: 'cordova/exec' - } - } - }, - navigator: { - children: { - notification: { - path: 'cordova/plugin/notification' - }, - accelerometer: { - path: 'cordova/plugin/accelerometer' - }, - battery: { - path: 'cordova/plugin/battery' - }, - camera:{ - path: 'cordova/plugin/Camera' - }, - compass:{ - path: 'cordova/plugin/compass' - }, - contacts: { - path: 'cordova/plugin/contacts' - }, - device:{ - children:{ - capture: { - path: 'cordova/plugin/capture' - } - } - }, - geolocation: { - path: 'cordova/plugin/geolocation' - }, - network: { - children: { - connection: { - path: 'cordova/plugin/network' - } - } - }, - splashscreen: { - path: 'cordova/plugin/splashscreen' - } - } - }, - Acceleration: { - path: 'cordova/plugin/Acceleration' - }, - Camera:{ - path: 'cordova/plugin/CameraConstants' - }, - CameraPopoverOptions: { - path: 'cordova/plugin/CameraPopoverOptions' - }, - CaptureError: { - path: 'cordova/plugin/CaptureError' - }, - CaptureAudioOptions:{ - path: 'cordova/plugin/CaptureAudioOptions' - }, - CaptureImageOptions: { - path: 'cordova/plugin/CaptureImageOptions' - }, - CaptureVideoOptions: { - path: 'cordova/plugin/CaptureVideoOptions' - }, - CompassHeading:{ - path: 'cordova/plugin/CompassHeading' - }, - CompassError:{ - path: 'cordova/plugin/CompassError' - }, - ConfigurationData: { - path: 'cordova/plugin/ConfigurationData' - }, - Connection: { - path: 'cordova/plugin/Connection' - }, - Contact: { - path: 'cordova/plugin/Contact' - }, - ContactAddress: { - path: 'cordova/plugin/ContactAddress' - }, - ContactError: { - path: 'cordova/plugin/ContactError' - }, - ContactField: { - path: 'cordova/plugin/ContactField' - }, - ContactFindOptions: { - path: 'cordova/plugin/ContactFindOptions' - }, - ContactName: { - path: 'cordova/plugin/ContactName' - }, - ContactOrganization: { - path: 'cordova/plugin/ContactOrganization' - }, - Coordinates: { - path: 'cordova/plugin/Coordinates' - }, - device: { - path: 'cordova/plugin/device' - }, - DirectoryEntry: { - path: 'cordova/plugin/DirectoryEntry' - }, - DirectoryReader: { - path: 'cordova/plugin/DirectoryReader' - }, - Entry: { - path: 'cordova/plugin/Entry' - }, - File: { - path: 'cordova/plugin/File' - }, - FileEntry: { - path: 'cordova/plugin/FileEntry' - }, - FileError: { - path: 'cordova/plugin/FileError' - }, - FileReader: { - path: 'cordova/plugin/FileReader' - }, - FileSystem: { - path: 'cordova/plugin/FileSystem' - }, - FileTransfer: { - path: 'cordova/plugin/FileTransfer' - }, - FileTransferError: { - path: 'cordova/plugin/FileTransferError' - }, - FileUploadOptions: { - path: 'cordova/plugin/FileUploadOptions' - }, - FileUploadResult: { - path: 'cordova/plugin/FileUploadResult' - }, - FileWriter: { - path: 'cordova/plugin/FileWriter' - }, - Flags: { - path: 'cordova/plugin/Flags' - }, - LocalFileSystem: { - path: 'cordova/plugin/LocalFileSystem' - }, - Media: { - path: 'cordova/plugin/Media' - }, - MediaError: { - path: 'cordova/plugin/MediaError' - }, - MediaFile: { - path: 'cordova/plugin/MediaFile' - }, - MediaFileData:{ - path: 'cordova/plugin/MediaFileData' - }, - Metadata:{ - path: 'cordova/plugin/Metadata' - }, - Position: { - path: 'cordova/plugin/Position' - }, - PositionError: { - path: 'cordova/plugin/PositionError' - }, - ProgressEvent: { - path: 'cordova/plugin/ProgressEvent' - }, - requestFileSystem:{ - path: 'cordova/plugin/requestFileSystem' - }, - resolveLocalFileSystemURI:{ - path: 'cordova/plugin/resolveLocalFileSystemURI' - } - } -}; - -}); - -// file: lib/android/exec.js -define("cordova/exec", function(require, exports, module) { -/** - * Execute a cordova command. It is up to the native side whether this action - * is synchronous or asynchronous. The native side can return: - * Synchronous: PluginResult object as a JSON string - * Asynchrounous: Empty string "" - * If async, the native side will cordova.callbackSuccess or cordova.callbackError, - * depending upon the result of the action. - * - * @param {Function} success The success callback - * @param {Function} fail The fail callback - * @param {String} service The name of the service to use - * @param {String} action Action to be run in cordova - * @param {String[]} [args] Zero or more arguments to pass to the method - */ -var cordova = require('cordova'), - callback = require('cordova/plugin/android/callback'), - polling = require('cordova/plugin/android/polling'), - jsToNativeBridgeMode, - nativeToJsBridgeMode, - jsToNativeModes = { - PROMPT: 0, - JS_OBJECT: 1, - // This mode is currently for benchmarking purposes only. It must be enabled - // on the native side through the ENABLE_LOCATION_CHANGE_EXEC_MODE - // constant within CordovaWebViewClient.java before it will work. - LOCATION_CHANGE: 2 - }, - nativeToJsModes = { - // Polls for messages using the prompt() bridge. - POLLING: 0, - // Does an XHR to a local server, which will send back messages. This is - // broken on ICS when a proxy server is configured. - HANGING_GET: 1, - // For LOAD_URL to be viable, it would need to have a work-around for - // the bug where the soft-keyboard gets dismissed when a message is sent. - LOAD_URL: 2, - // For the ONLINE_EVENT to be viable, it would need to intercept all event - // listeners (both through addEventListener and window.ononline) as well - // as set the navigator property itself. - ONLINE_EVENT: 3, - // Uses reflection to access private APIs of the WebView that can send JS - // to be executed. - // Requires Android 3.2.4 or above. - PRIVATE_API: 4 - }; - -function androidExec(success, fail, service, action, args) { - // Set default bridge modes if they have not already been set. - if (jsToNativeBridgeMode === undefined) { - androidExec.setJsToNativeBridgeMode(jsToNativeModes.PROMPT); - } - if (nativeToJsBridgeMode === undefined) { - if (callback.isAvailable()) { - androidExec.setNativeToJsBridgeMode(nativeToJsModes.HANGING_GET); - } else { - androidExec.setNativeToJsBridgeMode(nativeToJsModes.POLLING); - } - } - try { - var callbackId = service + cordova.callbackId++, - argsJson = JSON.stringify(args), - result; - if (success || fail) { - cordova.callbacks[callbackId] = {success:success, fail:fail}; - } - - if (jsToNativeBridgeMode == jsToNativeModes.LOCATION_CHANGE) { - window.location = 'http://cdv_exec/' + service + '#' + action + '#' + callbackId + '#' + argsJson; - } else if (jsToNativeBridgeMode == jsToNativeModes.JS_OBJECT) { - // Explicit cast to string is required on Android 2.1 to convert from - // a Java string to a JS string. - result = '' + _cordovaExec.exec(service, action, callbackId, argsJson); - } else { - result = prompt(argsJson, "gap:"+JSON.stringify([service, action, callbackId, true])); - } - - // If a result was returned - if (result) { - var v = JSON.parse(result); - - // If status is OK, then return value back to caller - if (v.status === cordova.callbackStatus.OK) { - - // If there is a success callback, then call it now with - // returned value - if (success) { - try { - success(v.message); - } catch (e) { - console.log("Error in success callback: " + callbackId + " = " + e); - } - - // Clear callback if not expecting any more results - if (!v.keepCallback) { - delete cordova.callbacks[callbackId]; - } - } - return v.message; - } - - // If no result - else if (v.status === cordova.callbackStatus.NO_RESULT) { - // Clear callback if not expecting any more results - if (!v.keepCallback) { - delete cordova.callbacks[callbackId]; - } - } - - // If error, then display error - else { - console.log("Error: Status="+v.status+" Message="+v.message); - - // If there is a fail callback, then call it now with returned value - if (fail) { - try { - fail(v.message); - } - catch (e1) { - console.log("Error in error callback: "+callbackId+" = "+e1); - } - - // Clear callback if not expecting any more results - if (!v.keepCallback) { - delete cordova.callbacks[callbackId]; - } - } - return null; - } - } - } catch (e2) { - console.log("Error: "+e2); - } -} - -function onOnLineEvent(e) { - while (polling.pollOnce()); -} - -androidExec.jsToNativeModes = jsToNativeModes; -androidExec.nativeToJsModes = nativeToJsModes; - -androidExec.setJsToNativeBridgeMode = function(mode) { - if (mode == jsToNativeModes.JS_OBJECT && !window._cordovaExec) { - console.log('Falling back on PROMPT mode since _cordovaExec is missing.'); - mode = jsToNativeModes.PROMPT; - } - jsToNativeBridgeMode = mode; -}; - -androidExec.setNativeToJsBridgeMode = function(mode) { - if (mode == nativeToJsBridgeMode) { - return; - } - if (nativeToJsBridgeMode == nativeToJsModes.POLLING) { - polling.stop(); - } else if (nativeToJsBridgeMode == nativeToJsModes.HANGING_GET) { - callback.stop(); - } else if (nativeToJsBridgeMode == nativeToJsModes.ONLINE_EVENT) { - window.removeEventListener('online', onOnLineEvent, false); - window.removeEventListener('offline', onOnLineEvent, false); - } - - nativeToJsBridgeMode = mode; - // Tell the native side to switch modes. - prompt(mode, "gap_bridge_mode:"); - - if (mode == nativeToJsModes.POLLING) { - polling.start(); - } else if (mode == nativeToJsModes.HANGING_GET) { - callback.start(); - } else if (mode == nativeToJsModes.ONLINE_EVENT) { - window.addEventListener('online', onOnLineEvent, false); - window.addEventListener('offline', onOnLineEvent, false); - } -}; - -module.exports = androidExec; - -}); - -// file: lib/android/platform.js -define("cordova/platform", function(require, exports, module) { -module.exports = { - id: "android", - initialize:function() { - var channel = require("cordova/channel"), - cordova = require('cordova'), - exec = require('cordova/exec'); - - // Inject a listener for the backbutton on the document. - var backButtonChannel = cordova.addDocumentEventHandler('backbutton', { - onSubscribe:function() { - // If we just attached the first handler, let native know we need to override the back button. - if (this.numHandlers === 1) { - exec(null, null, "App", "overrideBackbutton", [true]); - } - }, - onUnsubscribe:function() { - // If we just detached the last handler, let native know we no longer override the back button. - if (this.numHandlers === 0) { - exec(null, null, "App", "overrideBackbutton", [false]); - } - } - }); - - // Add hardware MENU and SEARCH button handlers - cordova.addDocumentEventHandler('menubutton'); - cordova.addDocumentEventHandler('searchbutton'); - - // Figure out if we need to shim-in localStorage and WebSQL - // support from the native side. - var storage = require('cordova/plugin/android/storage'); - - // First patch WebSQL if necessary - if (typeof window.openDatabase == 'undefined') { - // Not defined, create an openDatabase function for all to use! - window.openDatabase = storage.openDatabase; - } else { - // Defined, but some Android devices will throw a SECURITY_ERR - - // so we wrap the whole thing in a try-catch and shim in our own - // if the device has Android bug 16175. - var originalOpenDatabase = window.openDatabase; - window.openDatabase = function(name, version, desc, size) { - var db = null; - try { - db = originalOpenDatabase(name, version, desc, size); - } - catch (ex) { - if (ex.code === 18) { - db = null; - } else { - throw ex; - } - } - - if (db === null) { - return storage.openDatabase(name, version, desc, size); - } - else { - return db; - } - - }; - } - - // Patch localStorage if necessary - if (typeof window.localStorage == 'undefined' || window.localStorage === null) { - window.localStorage = new storage.CupcakeLocalStorage(); - } - - // Let native code know we are all done on the JS side. - // Native code will then un-hide the WebView. - channel.join(function() { - exec(null, null, "App", "show", []); - }, [channel.onCordovaReady]); - }, - objects: { - cordova: { - children: { - JSCallback:{ - path:"cordova/plugin/android/callback" - }, - JSCallbackPolling:{ - path:"cordova/plugin/android/polling" - } - } - }, - navigator: { - children: { - app:{ - path: "cordova/plugin/android/app" - } - } - }, - File: { // exists natively on Android WebView, override - path: "cordova/plugin/File" - }, - FileReader: { // exists natively on Android WebView, override - path: "cordova/plugin/FileReader" - }, - FileError: { //exists natively on Android WebView on Android 4.x - path: "cordova/plugin/FileError" - }, - MediaError: { // exists natively on Android WebView on Android 4.x - path: "cordova/plugin/MediaError" - } - }, - merges: { - device: { - path: 'cordova/plugin/android/device' - }, - navigator: { - children: { - notification: { - path: 'cordova/plugin/android/notification' - } - } - } - } -}; - -}); - -// file: lib/common/plugin/Acceleration.js -define("cordova/plugin/Acceleration", function(require, exports, module) { -var Acceleration = function(x, y, z, timestamp) { - this.x = x; - this.y = y; - this.z = z; - this.timestamp = timestamp || (new Date()).getTime(); -}; - -module.exports = Acceleration; - -}); - -// file: lib/common/plugin/Camera.js -define("cordova/plugin/Camera", function(require, exports, module) { -var exec = require('cordova/exec'), - Camera = require('cordova/plugin/CameraConstants'); - -var cameraExport = {}; - -// Tack on the Camera Constants to the base camera plugin. -for (var key in Camera) { - cameraExport[key] = Camera[key]; -} - -/** - * Gets a picture from source defined by "options.sourceType", and returns the - * image as defined by the "options.destinationType" option. - - * The defaults are sourceType=CAMERA and destinationType=FILE_URI. - * - * @param {Function} successCallback - * @param {Function} errorCallback - * @param {Object} options - */ -cameraExport.getPicture = function(successCallback, errorCallback, options) { - // successCallback required - if (typeof successCallback != "function") { - console.log("Camera Error: successCallback is not a function"); - return; - } - - // errorCallback optional - if (errorCallback && (typeof errorCallback != "function")) { - console.log("Camera Error: errorCallback is not a function"); - return; - } - - var quality = 50; - if (options && typeof options.quality == "number") { - quality = options.quality; - } else if (options && typeof options.quality == "string") { - var qlity = parseInt(options.quality, 10); - if (isNaN(qlity) === false) { - quality = qlity.valueOf(); - } - } - - var destinationType = Camera.DestinationType.FILE_URI; - if (typeof options.destinationType == "number") { - destinationType = options.destinationType; - } - - var sourceType = Camera.PictureSourceType.CAMERA; - if (typeof options.sourceType == "number") { - sourceType = options.sourceType; - } - - var targetWidth = -1; - if (typeof options.targetWidth == "number") { - targetWidth = options.targetWidth; - } else if (typeof options.targetWidth == "string") { - var width = parseInt(options.targetWidth, 10); - if (isNaN(width) === false) { - targetWidth = width.valueOf(); - } - } - - var targetHeight = -1; - if (typeof options.targetHeight == "number") { - targetHeight = options.targetHeight; - } else if (typeof options.targetHeight == "string") { - var height = parseInt(options.targetHeight, 10); - if (isNaN(height) === false) { - targetHeight = height.valueOf(); - } - } - - var encodingType = Camera.EncodingType.JPEG; - if (typeof options.encodingType == "number") { - encodingType = options.encodingType; - } - - var mediaType = Camera.MediaType.PICTURE; - if (typeof options.mediaType == "number") { - mediaType = options.mediaType; - } - var allowEdit = false; - if (typeof options.allowEdit == "boolean") { - allowEdit = options.allowEdit; - } else if (typeof options.allowEdit == "number") { - allowEdit = options.allowEdit <= 0 ? false : true; - } - var correctOrientation = false; - if (typeof options.correctOrientation == "boolean") { - correctOrientation = options.correctOrientation; - } else if (typeof options.correctOrientation == "number") { - correctOrientation = options.correctOrientation <=0 ? false : true; - } - var saveToPhotoAlbum = false; - if (typeof options.saveToPhotoAlbum == "boolean") { - saveToPhotoAlbum = options.saveToPhotoAlbum; - } else if (typeof options.saveToPhotoAlbum == "number") { - saveToPhotoAlbum = options.saveToPhotoAlbum <=0 ? false : true; - } - var popoverOptions = null; - if (typeof options.popoverOptions == "object") { - popoverOptions = options.popoverOptions; - } - - var args = [quality, destinationType, sourceType, targetWidth, targetHeight, encodingType, - mediaType, allowEdit, correctOrientation, saveToPhotoAlbum, popoverOptions]; - - exec(successCallback, errorCallback, "Camera", "takePicture", args); -}; - -cameraExport.cleanup = function(successCallback, errorCallback) { - exec(successCallback, errorCallback, "Camera", "cleanup", []); -}; - -module.exports = cameraExport; -}); - -// file: lib/common/plugin/CameraConstants.js -define("cordova/plugin/CameraConstants", function(require, exports, module) { -module.exports = { - DestinationType:{ - DATA_URL: 0, // Return base64 encoded string - FILE_URI: 1 // Return file uri (content://media/external/images/media/2 for Android) - }, - EncodingType:{ - JPEG: 0, // Return JPEG encoded image - PNG: 1 // Return PNG encoded image - }, - MediaType:{ - PICTURE: 0, // allow selection of still pictures only. DEFAULT. Will return format specified via DestinationType - VIDEO: 1, // allow selection of video only, ONLY RETURNS URL - ALLMEDIA : 2 // allow selection from all media types - }, - PictureSourceType:{ - PHOTOLIBRARY : 0, // Choose image from picture library (same as SAVEDPHOTOALBUM for Android) - CAMERA : 1, // Take picture from camera - SAVEDPHOTOALBUM : 2 // Choose image from picture library (same as PHOTOLIBRARY for Android) - }, - PopoverArrowDirection:{ - ARROW_UP : 1, // matches iOS UIPopoverArrowDirection constants to specify arrow location on popover - ARROW_DOWN : 2, - ARROW_LEFT : 4, - ARROW_RIGHT : 8, - ARROW_ANY : 15 - } -}; -}); - -// file: lib/common/plugin/CameraPopoverOptions.js -define("cordova/plugin/CameraPopoverOptions", function(require, exports, module) { -var Camera = require('cordova/plugin/CameraConstants'); - -/** - * Encapsulates options for iOS Popover image picker - */ -var CameraPopoverOptions = function(x,y,width,height,arrowDir){ - // information of rectangle that popover should be anchored to - this.x = x || 0; - this.y = y || 32; - this.width = width || 320; - this.height = height || 480; - // The direction of the popover arrow - this.arrowDir = arrowDir || Camera.PopoverArrowDirection.ARROW_ANY; -}; - -module.exports = CameraPopoverOptions; -}); - -// file: lib/common/plugin/CaptureAudioOptions.js -define("cordova/plugin/CaptureAudioOptions", function(require, exports, module) { -/** - * Encapsulates all audio capture operation configuration options. - */ -var CaptureAudioOptions = function(){ - // Upper limit of sound clips user can record. Value must be equal or greater than 1. - this.limit = 1; - // Maximum duration of a single sound clip in seconds. - this.duration = 0; - // The selected audio mode. Must match with one of the elements in supportedAudioModes array. - this.mode = null; -}; - -module.exports = CaptureAudioOptions; -}); - -// file: lib/common/plugin/CaptureError.js -define("cordova/plugin/CaptureError", function(require, exports, module) { -/** - * The CaptureError interface encapsulates all errors in the Capture API. - */ -var CaptureError = function(c) { - this.code = c || null; -}; - -// Camera or microphone failed to capture image or sound. -CaptureError.CAPTURE_INTERNAL_ERR = 0; -// Camera application or audio capture application is currently serving other capture request. -CaptureError.CAPTURE_APPLICATION_BUSY = 1; -// Invalid use of the API (e.g. limit parameter has value less than one). -CaptureError.CAPTURE_INVALID_ARGUMENT = 2; -// User exited camera application or audio capture application before capturing anything. -CaptureError.CAPTURE_NO_MEDIA_FILES = 3; -// The requested capture operation is not supported. -CaptureError.CAPTURE_NOT_SUPPORTED = 20; - -module.exports = CaptureError; -}); - -// file: lib/common/plugin/CaptureImageOptions.js -define("cordova/plugin/CaptureImageOptions", function(require, exports, module) { -/** - * Encapsulates all image capture operation configuration options. - */ -var CaptureImageOptions = function(){ - // Upper limit of images user can take. Value must be equal or greater than 1. - this.limit = 1; - // The selected image mode. Must match with one of the elements in supportedImageModes array. - this.mode = null; -}; - -module.exports = CaptureImageOptions; -}); - -// file: lib/common/plugin/CaptureVideoOptions.js -define("cordova/plugin/CaptureVideoOptions", function(require, exports, module) { -/** - * Encapsulates all video capture operation configuration options. - */ -var CaptureVideoOptions = function(){ - // Upper limit of videos user can record. Value must be equal or greater than 1. - this.limit = 1; - // Maximum duration of a single video clip in seconds. - this.duration = 0; - // The selected video mode. Must match with one of the elements in supportedVideoModes array. - this.mode = null; -}; - -module.exports = CaptureVideoOptions; -}); - -// file: lib/common/plugin/CompassError.js -define("cordova/plugin/CompassError", function(require, exports, module) { -/** - * CompassError. - * An error code assigned by an implementation when an error has occured - * @constructor - */ -var CompassError = function(err) { - this.code = (err !== undefined ? err : null); -}; - -CompassError.COMPASS_INTERNAL_ERR = 0; -CompassError.COMPASS_NOT_SUPPORTED = 20; - -module.exports = CompassError; -}); - -// file: lib/common/plugin/CompassHeading.js -define("cordova/plugin/CompassHeading", function(require, exports, module) { -var CompassHeading = function(magneticHeading, trueHeading, headingAccuracy, timestamp) { - this.magneticHeading = (magneticHeading !== undefined ? magneticHeading : null); - this.trueHeading = (trueHeading !== undefined ? trueHeading : null); - this.headingAccuracy = (headingAccuracy !== undefined ? headingAccuracy : null); - this.timestamp = (timestamp !== undefined ? timestamp : new Date().getTime()); -}; - -module.exports = CompassHeading; -}); - -// file: lib/common/plugin/ConfigurationData.js -define("cordova/plugin/ConfigurationData", function(require, exports, module) { -/** - * Encapsulates a set of parameters that the capture device supports. - */ -function ConfigurationData() { - // The ASCII-encoded string in lower case representing the media type. - this.type = null; - // The height attribute represents height of the image or video in pixels. - // In the case of a sound clip this attribute has value 0. - this.height = 0; - // The width attribute represents width of the image or video in pixels. - // In the case of a sound clip this attribute has value 0 - this.width = 0; -} - -module.exports = ConfigurationData; -}); - -// file: lib/common/plugin/Connection.js -define("cordova/plugin/Connection", function(require, exports, module) { -/** - * Network status - */ -module.exports = { - UNKNOWN: "unknown", - ETHERNET: "ethernet", - WIFI: "wifi", - CELL_2G: "2g", - CELL_3G: "3g", - CELL_4G: "4g", - NONE: "none" -}; -}); - -// file: lib/common/plugin/Contact.js -define("cordova/plugin/Contact", function(require, exports, module) { -var exec = require('cordova/exec'), - ContactError = require('cordova/plugin/ContactError'), - utils = require('cordova/utils'); - -/** -* Converts primitives into Complex Object -* Currently only used for Date fields -*/ -function convertIn(contact) { - var value = contact.birthday; - try { - contact.birthday = new Date(parseFloat(value)); - } catch (exception){ - console.log("Cordova Contact convertIn error: exception creating date."); - } - return contact; -} - -/** -* Converts Complex objects into primitives -* Only conversion at present is for Dates. -**/ - -function convertOut(contact) { - var value = contact.birthday; - if (value !== null) { - // try to make it a Date object if it is not already - if (!utils.isDate(value)){ - try { - value = new Date(value); - } catch(exception){ - value = null; - } - } - if (utils.isDate(value)){ - value = value.valueOf(); // convert to milliseconds - } - contact.birthday = value; - } - return contact; -} - -/** -* Contains information about a single contact. -* @constructor -* @param {DOMString} id unique identifier -* @param {DOMString} displayName -* @param {ContactName} name -* @param {DOMString} nickname -* @param {Array.<ContactField>} phoneNumbers array of phone numbers -* @param {Array.<ContactField>} emails array of email addresses -* @param {Array.<ContactAddress>} addresses array of addresses -* @param {Array.<ContactField>} ims instant messaging user ids -* @param {Array.<ContactOrganization>} organizations -* @param {DOMString} birthday contact's birthday -* @param {DOMString} note user notes about contact -* @param {Array.<ContactField>} photos -* @param {Array.<ContactField>} categories -* @param {Array.<ContactField>} urls contact's web sites -*/ -var Contact = function (id, displayName, name, nickname, phoneNumbers, emails, addresses, - ims, organizations, birthday, note, photos, categories, urls) { - this.id = id || null; - this.rawId = null; - this.displayName = displayName || null; - this.name = name || null; // ContactName - this.nickname = nickname || null; - this.phoneNumbers = phoneNumbers || null; // ContactField[] - this.emails = emails || null; // ContactField[] - this.addresses = addresses || null; // ContactAddress[] - this.ims = ims || null; // ContactField[] - this.organizations = organizations || null; // ContactOrganization[] - this.birthday = birthday || null; - this.note = note || null; - this.photos = photos || null; // ContactField[] - this.categories = categories || null; // ContactField[] - this.urls = urls || null; // ContactField[] -}; - -/** -* Removes contact from device storage. -* @param successCB success callback -* @param errorCB error callback -*/ -Contact.prototype.remove = function(successCB, errorCB) { - var fail = function(code) { - errorCB(new ContactError(code)); - }; - if (this.id === null) { - fail(ContactError.UNKNOWN_ERROR); - } - else { - exec(successCB, fail, "Contacts", "remove", [this.id]); - } -}; - -/** -* Creates a deep copy of this Contact. -* With the contact ID set to null. -* @return copy of this Contact -*/ -Contact.prototype.clone = function() { - var clonedContact = utils.clone(this); - var i; - clonedContact.id = null; - clonedContact.rawId = null; - // Loop through and clear out any id's in phones, emails, etc. - if (clonedContact.phoneNumbers) { - for (i = 0; i < clonedContact.phoneNumbers.length; i++) { - clonedContact.phoneNumbers[i].id = null; - } - } - if (clonedContact.emails) { - for (i = 0; i < clonedContact.emails.length; i++) { - clonedContact.emails[i].id = null; - } - } - if (clonedContact.addresses) { - for (i = 0; i < clonedContact.addresses.length; i++) { - clonedContact.addresses[i].id = null; - } - } - if (clonedContact.ims) { - for (i = 0; i < clonedContact.ims.length; i++) { - clonedContact.ims[i].id = null; - } - } - if (clonedContact.organizations) { - for (i = 0; i < clonedContact.organizations.length; i++) { - clonedContact.organizations[i].id = null; - } - } - if (clonedContact.categories) { - for (i = 0; i < clonedContact.categories.length; i++) { - clonedContact.categories[i].id = null; - } - } - if (clonedContact.photos) { - for (i = 0; i < clonedContact.photos.length; i++) { - clonedContact.photos[i].id = null; - } - } - if (clonedContact.urls) { - for (i = 0; i < clonedContact.urls.length; i++) { - clonedContact.urls[i].id = null; - } - } - return clonedContact; -}; - -/** -* Persists contact to device storage. -* @param successCB success callback -* @param errorCB error callback -*/ -Contact.prototype.save = function(successCB, errorCB) { - var fail = function(code) { - errorCB(new ContactError(code)); - }; - var success = function(result) { - if (result) { - if (typeof successCB === 'function') { - var fullContact = require('cordova/plugin/contacts').create(result); - successCB(convertIn(fullContact)); - } - } - else { - // no Entry object returned - fail(ContactError.UNKNOWN_ERROR); - } - }; - var dupContact = convertOut(utils.clone(this)); - exec(success, fail, "Contacts", "save", [dupContact]); -}; - - -module.exports = Contact; - -}); - -// file: lib/common/plugin/ContactAddress.js -define("cordova/plugin/ContactAddress", function(require, exports, module) { -/** -* Contact address. -* @constructor -* @param {DOMString} id unique identifier, should only be set by native code -* @param formatted // NOTE: not a W3C standard -* @param streetAddress -* @param locality -* @param region -* @param postalCode -* @param country -*/ - -var ContactAddress = function(pref, type, formatted, streetAddress, locality, region, postalCode, country) { - this.id = null; - this.pref = (typeof pref != 'undefined' ? pref : false); - this.type = type || null; - this.formatted = formatted || null; - this.streetAddress = streetAddress || null; - this.locality = locality || null; - this.region = region || null; - this.postalCode = postalCode || null; - this.country = country || null; -}; - -module.exports = ContactAddress; -}); - -// file: lib/common/plugin/ContactError.js -define("cordova/plugin/ContactError", function(require, exports, module) { -/** - * ContactError. - * An error code assigned by an implementation when an error has occured - * @constructor - */ -var ContactError = function(err) { - this.code = (typeof err != 'undefined' ? err : null); -}; - -/** - * Error codes - */ -ContactError.UNKNOWN_ERROR = 0; -ContactError.INVALID_ARGUMENT_ERROR = 1; -ContactError.TIMEOUT_ERROR = 2; -ContactError.PENDING_OPERATION_ERROR = 3; -ContactError.IO_ERROR = 4; -ContactError.NOT_SUPPORTED_ERROR = 5; -ContactError.PERMISSION_DENIED_ERROR = 20; - -module.exports = ContactError; -}); - -// file: lib/common/plugin/ContactField.js -define("cordova/plugin/ContactField", function(require, exports, module) { -/** -* Generic contact field. -* @constructor -* @param {DOMString} id unique identifier, should only be set by native code // NOTE: not a W3C standard -* @param type -* @param value -* @param pref -*/ -var ContactField = function(type, value, pref) { - this.id = null; - this.type = (type && type.toString()) || null; - this.value = (value && value.toString()) || null; - this.pref = (typeof pref != 'undefined' ? pref : false); -}; - -module.exports = ContactField; -}); - -// file: lib/common/plugin/ContactFindOptions.js -define("cordova/plugin/ContactFindOptions", function(require, exports, module) { -/** - * ContactFindOptions. - * @constructor - * @param filter used to match contacts against - * @param multiple boolean used to determine if more than one contact should be returned - */ - -var ContactFindOptions = function(filter, multiple) { - this.filter = filter || ''; - this.multiple = (typeof multiple != 'undefined' ? multiple : false); -}; - -module.exports = ContactFindOptions; -}); - -// file: lib/common/plugin/ContactName.js -define("cordova/plugin/ContactName", function(require, exports, module) { -/** -* Contact name. -* @constructor -* @param formatted // NOTE: not part of W3C standard -* @param familyName -* @param givenName -* @param middle -* @param prefix -* @param suffix -*/ -var ContactName = function(formatted, familyName, givenName, middle, prefix, suffix) { - this.formatted = formatted || null; - this.familyName = familyName || null; - this.givenName = givenName || null; - this.middleName = middle || null; - this.honorificPrefix = prefix || null; - this.honorificSuffix = suffix || null; -}; - -module.exports = ContactName; -}); - -// file: lib/common/plugin/ContactOrganization.js -define("cordova/plugin/ContactOrganization", function(require, exports, module) { -/** -* Contact organization. -* @constructor -* @param {DOMString} id unique identifier, should only be set by native code // NOTE: not a W3C standard -* @param name -* @param dept -* @param title -* @param startDate -* @param endDate -* @param location -* @param desc -*/ - -var ContactOrganization = function(pref, type, name, dept, title) { - this.id = null; - this.pref = (typeof pref != 'undefined' ? pref : false); - this.type = type || null; - this.name = name || null; - this.department = dept || null; - this.title = title || null; -}; - -module.exports = ContactOrganization; -}); - -// file: lib/common/plugin/Coordinates.js -define("cordova/plugin/Coordinates", function(require, exports, module) { -/** - * This class contains position information. - * @param {Object} lat - * @param {Object} lng - * @param {Object} alt - * @param {Object} acc - * @param {Object} head - * @param {Object} vel - * @param {Object} altacc - * @constructor - */ -var Coordinates = function(lat, lng, alt, acc, head, vel, altacc) { - /** - * The latitude of the position. - */ - this.latitude = lat; - /** - * The longitude of the position, - */ - this.longitude = lng; - /** - * The accuracy of the position. - */ - this.accuracy = acc; - /** - * The altitude of the position. - */ - this.altitude = (alt !== undefined ? alt : null); - /** - * The direction the device is moving at the position. - */ - this.heading = (head !== undefined ? head : null); - /** - * The velocity with which the device is moving at the position. - */ - this.speed = (vel !== undefined ? vel : null); - - if (this.speed === 0 || this.speed === null) { - this.heading = NaN; - } - - /** - * The altitude accuracy of the position. - */ - this.altitudeAccuracy = (altacc !== undefined) ? altacc : null; -}; - -module.exports = Coordinates; - -}); - -// file: lib/common/plugin/DirectoryEntry.js -define("cordova/plugin/DirectoryEntry", function(require, exports, module) { -var utils = require('cordova/utils'), - exec = require('cordova/exec'), - Entry = require('cordova/plugin/Entry'), - FileError = require('cordova/plugin/FileError'), - DirectoryReader = require('cordova/plugin/DirectoryReader'); - -/** - * An interface representing a directory on the file system. - * - * {boolean} isFile always false (readonly) - * {boolean} isDirectory always true (readonly) - * {DOMString} name of the directory, excluding the path leading to it (readonly) - * {DOMString} fullPath the absolute full path to the directory (readonly) - * TODO: implement this!!! {FileSystem} filesystem on which the directory resides (readonly) - */ -var DirectoryEntry = function(name, fullPath) { - DirectoryEntry.__super__.constructor.apply(this, [false, true, name, fullPath]); -}; - -utils.extend(DirectoryEntry, Entry); - -/** - * Creates a new DirectoryReader to read entries from this directory - */ -DirectoryEntry.prototype.createReader = function() { - return new DirectoryReader(this.fullPath); -}; - -/** - * Creates or looks up a directory - * - * @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a directory - * @param {Flags} options to create or excluively create the directory - * @param {Function} successCallback is called with the new entry - * @param {Function} errorCallback is called with a FileError - */ -DirectoryEntry.prototype.getDirectory = function(path, options, successCallback, errorCallback) { - var win = typeof successCallback !== 'function' ? null : function(result) { - var entry = new DirectoryEntry(result.name, result.fullPath); - successCallback(entry); - }; - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; - exec(win, fail, "File", "getDirectory", [this.fullPath, path, options]); -}; - -/** - * Deletes a directory and all of it's contents - * - * @param {Function} successCallback is called with no parameters - * @param {Function} errorCallback is called with a FileError - */ -DirectoryEntry.prototype.removeRecursively = function(successCallback, errorCallback) { - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; - exec(successCallback, fail, "File", "removeRecursively", [this.fullPath]); -}; - -/** - * Creates or looks up a file - * - * @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a file - * @param {Flags} options to create or excluively create the file - * @param {Function} successCallback is called with the new entry - * @param {Function} errorCallback is called with a FileError - */ -DirectoryEntry.prototype.getFile = function(path, options, successCallback, errorCallback) { - var win = typeof successCallback !== 'function' ? null : function(result) { - var FileEntry = require('cordova/plugin/FileEntry'); - var entry = new FileEntry(result.name, result.fullPath); - successCallback(entry); - }; - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; - exec(win, fail, "File", "getFile", [this.fullPath, path, options]); -}; - -module.exports = DirectoryEntry; - -}); - -// file: lib/common/plugin/DirectoryReader.js -define("cordova/plugin/DirectoryReader", function(require, exports, module) { -var exec = require('cordova/exec'), - FileError = require('cordova/plugin/FileError') ; - -/** - * An interface that lists the files and directories in a directory. - */ -function DirectoryReader(path) { - this.path = path || null; -} - -/** - * Returns a list of entries from a directory. - * - * @param {Function} successCallback is called with a list of entries - * @param {Function} errorCallback is called with a FileError - */ -DirectoryReader.prototype.readEntries = function(successCallback, errorCallback) { - var win = typeof successCallback !== 'function' ? null : function(result) { - var retVal = []; - for (var i=0; i<result.length; i++) { - var entry = null; - if (result[i].isDirectory) { - entry = new (require('cordova/plugin/DirectoryEntry'))(); - } - else if (result[i].isFile) { - entry = new (require('cordova/plugin/FileEntry'))(); - } - entry.isDirectory = result[i].isDirectory; - entry.isFile = result[i].isFile; - entry.name = result[i].name; - entry.fullPath = result[i].fullPath; - retVal.push(entry); - } - successCallback(retVal); - }; - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; - exec(win, fail, "File", "readEntries", [this.path]); -}; - -module.exports = DirectoryReader; - -}); - -// file: lib/common/plugin/Entry.js -define("cordova/plugin/Entry", function(require, exports, module) { -var exec = require('cordova/exec'), - FileError = require('cordova/plugin/FileError'), - Metadata = require('cordova/plugin/Metadata'); - -/** - * Represents a file or directory on the local file system. - * - * @param isFile - * {boolean} true if Entry is a file (readonly) - * @param isDirectory - * {boolean} true if Entry is a directory (readonly) - * @param name - * {DOMString} name of the file or directory, excluding the path - * leading to it (readonly) - * @param fullPath - * {DOMString} the absolute full path to the file or directory - * (readonly) - */ -function Entry(isFile, isDirectory, name, fullPath, fileSystem) { - this.isFile = (typeof isFile != 'undefined'?isFile:false); - this.isDirectory = (typeof isDirectory != 'undefined'?isDirectory:false); - this.name = name || ''; - this.fullPath = fullPath || ''; - this.filesystem = fileSystem || null; -} - -/** - * Look up the metadata of the entry. - * - * @param successCallback - * {Function} is called with a Metadata object - * @param errorCallback - * {Function} is called with a FileError - */ -Entry.prototype.getMetadata = function(successCallback, errorCallback) { - var success = typeof successCallback !== 'function' ? null : function(lastModified) { - var metadata = new Metadata(lastModified); - successCallback(metadata); - }; - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; - - exec(success, fail, "File", "getMetadata", [this.fullPath]); -}; - -/** - * Set the metadata of the entry. - * - * @param successCallback - * {Function} is called with a Metadata object - * @param errorCallback - * {Function} is called with a FileError - * @param metadataObject - * {Object} keys and values to set - */ -Entry.prototype.setMetadata = function(successCallback, errorCallback, metadataObject) { - - exec(successCallback, errorCallback, "File", "setMetadata", [this.fullPath, metadataObject]); -}; - -/** - * Move a file or directory to a new location. - * - * @param parent - * {DirectoryEntry} the directory to which to move this entry - * @param newName - * {DOMString} new name of the entry, defaults to the current name - * @param successCallback - * {Function} called with the new DirectoryEntry object - * @param errorCallback - * {Function} called with a FileError - */ -Entry.prototype.moveTo = function(parent, newName, successCallback, errorCallback) { - var fail = function(code) { - if (typeof errorCallback === 'function') { - errorCallback(new FileError(code)); - } - }; - // user must specify parent Entry - if (!parent) { - fail(FileError.NOT_FOUND_ERR); - return; - } - // source path - var srcPath = this.fullPath, - // entry name - name = newName || this.name, - success = function(entry) { - if (entry) { - if (typeof successCallback === 'function') { - // create appropriate Entry object - var result = (entry.isDirectory) ? new (require('cordova/plugin/DirectoryEntry'))(entry.name, entry.fullPath) : new (require('cordova/plugin/FileEntry'))(entry.name, entry.fullPath); - try { - successCallback(result); - } - catch (e) { - console.log('Error invoking callback: ' + e); - } - } - } - else { - // no Entry object returned - fail(FileError.NOT_FOUND_ERR); - } - }; - - // copy - exec(success, fail, "File", "moveTo", [srcPath, parent.fullPath, name]); -}; - -/** - * Copy a directory to a different location. - * - * @param parent - * {DirectoryEntry} the directory to which to copy the entry - * @param newName - * {DOMString} new name of the entry, defaults to the current name - * @param successCallback - * {Function} called with the new Entry object - * @param errorCallback - * {Function} called with a FileError - */ -Entry.prototype.copyTo = function(parent, newName, successCallback, errorCallback) { - var fail = function(code) { - if (typeof errorCallback === 'function') { - errorCallback(new FileError(code)); - } - }; - - // user must specify parent Entry - if (!parent) { - fail(FileError.NOT_FOUND_ERR); - return; - } - - // source path - var srcPath = this.fullPath, - // entry name - name = newName || this.name, - // success callback - success = function(entry) { - if (entry) { - if (typeof successCallback === 'function') { - // create appropriate Entry object - var result = (entry.isDirectory) ? new (require('cordova/plugin/DirectoryEntry'))(entry.name, entry.fullPath) : new (require('cordova/plugin/FileEntry'))(entry.name, entry.fullPath); - try { - successCallback(result); - } - catch (e) { - console.log('Error invoking callback: ' + e); - } - } - } - else { - // no Entry object returned - fail(FileError.NOT_FOUND_ERR); - } - }; - - // copy - exec(success, fail, "File", "copyTo", [srcPath, parent.fullPath, name]); -}; - -/** - * Return a URL that can be used to identify this entry. - */ -Entry.prototype.toURL = function() { - // fullPath attribute contains the full URL - return this.fullPath; -}; - -/** - * Returns a URI that can be used to identify this entry. - * - * @param {DOMString} mimeType for a FileEntry, the mime type to be used to interpret the file, when loaded through this URI. - * @return uri - */ -Entry.prototype.toURI = function(mimeType) { - console.log("DEPRECATED: Update your code to use 'toURL'"); - // fullPath attribute contains the full URI - return this.toURL(); -}; - -/** - * Remove a file or directory. It is an error to attempt to delete a - * directory that is not empty. It is an error to attempt to delete a - * root directory of a file system. - * - * @param successCallback {Function} called with no parameters - * @param errorCallback {Function} called with a FileError - */ -Entry.prototype.remove = function(successCallback, errorCallback) { - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; - exec(successCallback, fail, "File", "remove", [this.fullPath]); -}; - -/** - * Look up the parent DirectoryEntry of this entry. - * - * @param successCallback {Function} called with the parent DirectoryEntry object - * @param errorCallback {Function} called with a FileError - */ -Entry.prototype.getParent = function(successCallback, errorCallback) { - var win = typeof successCallback !== 'function' ? null : function(result) { - var DirectoryEntry = require('cordova/plugin/DirectoryEntry'); - var entry = new DirectoryEntry(result.name, result.fullPath); - successCallback(entry); - }; - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; - exec(win, fail, "File", "getParent", [this.fullPath]); -}; - -module.exports = Entry; -}); - -// file: lib/common/plugin/File.js -define("cordova/plugin/File", function(require, exports, module) { -/** - * Constructor. - * name {DOMString} name of the file, without path information - * fullPath {DOMString} the full path of the file, including the name - * type {DOMString} mime type - * lastModifiedDate {Date} last modified date - * size {Number} size of the file in bytes - */ - -var File = function(name, fullPath, type, lastModifiedDate, size){ - this.name = name || ''; - this.fullPath = fullPath || null; - this.type = type || null; - this.lastModifiedDate = lastModifiedDate || null; - this.size = size || 0; -}; - -module.exports = File; -}); - -// file: lib/common/plugin/FileEntry.js -define("cordova/plugin/FileEntry", function(require, exports, module) { -var utils = require('cordova/utils'), - exec = require('cordova/exec'), - Entry = require('cordova/plugin/Entry'), - FileWriter = require('cordova/plugin/FileWriter'), - File = require('cordova/plugin/File'), - FileError = require('cordova/plugin/FileError'); - -/** - * An interface representing a file on the file system. - * - * {boolean} isFile always true (readonly) - * {boolean} isDirectory always false (readonly) - * {DOMString} name of the file, excluding the path leading to it (readonly) - * {DOMString} fullPath the absolute full path to the file (readonly) - * {FileSystem} filesystem on which the file resides (readonly) - */ -var FileEntry = function(name, fullPath) { - FileEntry.__super__.constructor.apply(this, [true, false, name, fullPath]); -}; - -utils.extend(FileEntry, Entry); - -/** - * Creates a new FileWriter associated with the file that this FileEntry represents. - * - * @param {Function} successCallback is called with the new FileWriter - * @param {Function} errorCallback is called with a FileError - */ -FileEntry.prototype.createWriter = function(successCallback, errorCallback) { - this.file(function(filePointer) { - var writer = new FileWriter(filePointer); - - if (writer.fileName === null || writer.fileName === "") { - if (typeof errorCallback === "function") { - errorCallback(new FileError(FileError.INVALID_STATE_ERR)); - } - } else { - if (typeof successCallback === "function") { - successCallback(writer); - } - } - }, errorCallback); -}; - -/** - * Returns a File that represents the current state of the file that this FileEntry represents. - * - * @param {Function} successCallback is called with the new File object - * @param {Function} errorCallback is called with a FileError - */ -FileEntry.prototype.file = function(successCallback, errorCallback) { - var win = typeof successCallback !== 'function' ? null : function(f) { - var file = new File(f.name, f.fullPath, f.type, f.lastModifiedDate, f.size); - successCallback(file); - }; - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; - exec(win, fail, "File", "getFileMetadata", [this.fullPath]); -}; - - -module.exports = FileEntry; -}); - -// file: lib/common/plugin/FileError.js -define("cordova/plugin/FileError", function(require, exports, module) { -/** - * FileError - */ -function FileError(error) { - this.code = error || null; -} - -// File error codes -// Found in DOMException -FileError.NOT_FOUND_ERR = 1; -FileError.SECURITY_ERR = 2; -FileError.ABORT_ERR = 3; - -// Added by File API specification -FileError.NOT_READABLE_ERR = 4; -FileError.ENCODING_ERR = 5; -FileError.NO_MODIFICATION_ALLOWED_ERR = 6; -FileError.INVALID_STATE_ERR = 7; -FileError.SYNTAX_ERR = 8; -FileError.INVALID_MODIFICATION_ERR = 9; -FileError.QUOTA_EXCEEDED_ERR = 10; -FileError.TYPE_MISMATCH_ERR = 11; -FileError.PATH_EXISTS_ERR = 12; - -module.exports = FileError; -}); - -// file: lib/common/plugin/FileReader.js -define("cordova/plugin/FileReader", function(require, exports, module) { -var exec = require('cordova/exec'), - FileError = require('cordova/plugin/FileError'), - ProgressEvent = require('cordova/plugin/ProgressEvent'); - -/** - * This class reads the mobile device file system. - * - * For Android: - * The root directory is the root of the file system. - * To read from the SD card, the file name is "sdcard/my_file.txt" - * @constructor - */ -var FileReader = function() { - this.fileName = ""; - - this.readyState = 0; // FileReader.EMPTY - - // File data - this.result = null; - - // Error - this.error = null; - - // Event handlers - this.onloadstart = null; // When the read starts. - this.onprogress = null; // While reading (and decoding) file or fileBlob data, and reporting partial file data (progess.loaded/progress.total) - this.onload = null; // When the read has successfully completed. - this.onerror = null; // When the read has failed (see errors). - this.onloadend = null; // When the request has completed (either in success or failure). - this.onabort = null; // When the read has been aborted. For instance, by invoking the abort() method. -}; - -// States -FileReader.EMPTY = 0; -FileReader.LOADING = 1; -FileReader.DONE = 2; - -/** - * Abort reading file. - */ -FileReader.prototype.abort = function() { - this.result = null; - - if (this.readyState == FileReader.DONE || this.readyState == FileReader.EMPTY) { - return; - } - - this.readyState = FileReader.DONE; - - // If abort callback - if (typeof this.onabort === 'function') { - this.onabort(new ProgressEvent('abort', {target:this})); - } - // If load end callback - if (typeof this.onloadend === 'function') { - this.onloadend(new ProgressEvent('loadend', {target:this})); - } -}; - -/** - * Read text file. - * - * @param file {File} File object containing file properties - * @param encoding [Optional] (see http://www.iana.org/assignments/character-sets) - */ -FileReader.prototype.readAsText = function(file, encoding) { - // Figure out pathing - this.fileName = ''; - if (typeof file.fullPath === 'undefined') { - this.fileName = file; - } else { - this.fileName = file.fullPath; - } - - // Already loading something - if (this.readyState == FileReader.LOADING) { - throw new FileError(FileError.INVALID_STATE_ERR); - } - - // LOADING state - this.readyState = FileReader.LOADING; - - // If loadstart callback - if (typeof this.onloadstart === "function") { - this.onloadstart(new ProgressEvent("loadstart", {target:this})); - } - - // Default encoding is UTF-8 - var enc = encoding ? encoding : "UTF-8"; - - var me = this; - - // Read file - exec( - // Success callback - function(r) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileReader.DONE) { - return; - } - - // Save result - me.result = r; - - // If onload callback - if (typeof me.onload === "function") { - me.onload(new ProgressEvent("load", {target:me})); - } - - // DONE state - me.readyState = FileReader.DONE; - - // If onloadend callback - if (typeof me.onloadend === "function") { - me.onloadend(new ProgressEvent("loadend", {target:me})); - } - }, - // Error callback - function(e) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileReader.DONE) { - return; - } - - // DONE state - me.readyState = FileReader.DONE; - - // null result - me.result = null; - - // Save error - me.error = new FileError(e); - - // If onerror callback - if (typeof me.onerror === "function") { - me.onerror(new ProgressEvent("error", {target:me})); - } - - // If onloadend callback - if (typeof me.onloadend === "function") { - me.onloadend(new ProgressEvent("loadend", {target:me})); - } - }, "File", "readAsText", [this.fileName, enc]); -}; - - -/** - * Read file and return data as a base64 encoded data url. - * A data url is of the form: - * data:[<mediatype>][;base64],<data> - * - * @param file {File} File object containing file properties - */ -FileReader.prototype.readAsDataURL = function(file) { - this.fileName = ""; - if (typeof file.fullPath === "undefined") { - this.fileName = file; - } else { - this.fileName = file.fullPath; - } - - // Already loading something - if (this.readyState == FileReader.LOADING) { - throw new FileError(FileError.INVALID_STATE_ERR); - } - - // LOADING state - this.readyState = FileReader.LOADING; - - // If loadstart callback - if (typeof this.onloadstart === "function") { - this.onloadstart(new ProgressEvent("loadstart", {target:this})); - } - - var me = this; - - // Read file - exec( - // Success callback - function(r) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileReader.DONE) { - return; - } - - // DONE state - me.readyState = FileReader.DONE; - - // Save result - me.result = r; - - // If onload callback - if (typeof me.onload === "function") { - me.onload(new ProgressEvent("load", {target:me})); - } - - // If onloadend callback - if (typeof me.onloadend === "function") { - me.onloadend(new ProgressEvent("loadend", {target:me})); - } - }, - // Error callback - function(e) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileReader.DONE) { - return; - } - - // DONE state - me.readyState = FileReader.DONE; - - me.result = null; - - // Save error - me.error = new FileError(e); - - // If onerror callback - if (typeof me.onerror === "function") { - me.onerror(new ProgressEvent("error", {target:me})); - } - - // If onloadend callback - if (typeof me.onloadend === "function") { - me.onloadend(new ProgressEvent("loadend", {target:me})); - } - }, "File", "readAsDataURL", [this.fileName]); -}; - -/** - * Read file and return data as a binary data. - * - * @param file {File} File object containing file properties - */ -FileReader.prototype.readAsBinaryString = function(file) { - // TODO - Can't return binary data to browser. - console.log('method "readAsBinaryString" is not supported at this time.'); -}; - -/** - * Read file and return data as a binary data. - * - * @param file {File} File object containing file properties - */ -FileReader.prototype.readAsArrayBuffer = function(file) { - // TODO - Can't return binary data to browser. - console.log('This method is not supported at this time.'); -}; - -module.exports = FileReader; -}); - -// file: lib/common/plugin/FileSystem.js -define("cordova/plugin/FileSystem", function(require, exports, module) { -var DirectoryEntry = require('cordova/plugin/DirectoryEntry'); - -/** - * An interface representing a file system - * - * @constructor - * {DOMString} name the unique name of the file system (readonly) - * {DirectoryEntry} root directory of the file system (readonly) - */ -var FileSystem = function(name, root) { - this.name = name || null; - if (root) { - this.root = new DirectoryEntry(root.name, root.fullPath); - } -}; - -module.exports = FileSystem; - -}); - -// file: lib/common/plugin/FileTransfer.js -define("cordova/plugin/FileTransfer", function(require, exports, module) { -var exec = require('cordova/exec'), - FileTransferError = require('cordova/plugin/FileTransferError'); - -/** - * FileTransfer uploads a file to a remote server. - * @constructor - */ -var FileTransfer = function() {}; - -/** -* Given an absolute file path, uploads a file on the device to a remote server -* using a multipart HTTP request. -* @param filePath {String} Full path of the file on the device -* @param server {String} URL of the server to receive the file -* @param successCallback (Function} Callback to be invoked when upload has completed -* @param errorCallback {Function} Callback to be invoked upon error -* @param options {FileUploadOptions} Optional parameters such as file name and mimetype -* @param trustAllHosts {Boolean} Optional trust all hosts (e.g. for self-signed certs), defaults to false -*/ -FileTransfer.prototype.upload = function(filePath, server, successCallback, errorCallback, options, trustAllHosts) { - // sanity parameter checking - if (!filePath || !server) throw new Error("FileTransfer.upload requires filePath and server URL parameters at the minimum."); - // check for options - var fileKey = null; - var fileName = null; - var mimeType = null; - var params = null; - var chunkedMode = true; - var headers = null; - if (options) { - fileKey = options.fileKey; - fileName = options.fileName; - mimeType = options.mimeType; - headers = options.headers; - if (options.chunkedMode !== null || typeof options.chunkedMode != "undefined") { - chunkedMode = options.chunkedMode; - } - if (options.params) { - params = options.params; - } - else { - params = {}; - } - } - - var fail = function(e) { - var error = new FileTransferError(e.code, e.source, e.target, e.http_status); - errorCallback(error); - }; - - exec(successCallback, fail, 'FileTransfer', 'upload', [filePath, server, fileKey, fileName, mimeType, params, trustAllHosts, chunkedMode, headers]); -}; - -/** - * Downloads a file form a given URL and saves it to the specified directory. - * @param source {String} URL of the server to receive the file - * @param target {String} Full path of the file on the device - * @param successCallback (Function} Callback to be invoked when upload has completed - * @param errorCallback {Function} Callback to be invoked upon error - */ -FileTransfer.prototype.download = function(source, target, successCallback, errorCallback) { - // sanity parameter checking - if (!source || !target) throw new Error("FileTransfer.download requires source URI and target URI parameters at the minimum."); - var win = function(result) { - var entry = null; - if (result.isDirectory) { - entry = new (require('cordova/plugin/DirectoryEntry'))(); - } - else if (result.isFile) { - entry = new (require('cordova/plugin/FileEntry'))(); - } - entry.isDirectory = result.isDirectory; - entry.isFile = result.isFile; - entry.name = result.name; - entry.fullPath = result.fullPath; - successCallback(entry); - }; - - var fail = function(e) { - var error = new FileTransferError(e.code, e.source, e.target, e.http_status); - errorCallback(error); - }; - - exec(win, errorCallback, 'FileTransfer', 'download', [source, target]); -}; - -module.exports = FileTransfer; - -}); - -// file: lib/common/plugin/FileTransferError.js -define("cordova/plugin/FileTransferError", function(require, exports, module) { -/** - * FileTransferError - * @constructor - */ -var FileTransferError = function(code, source, target, status) { - this.code = code || null; - this.source = source || null; - this.target = target || null; - this.http_status = status || null; -}; - -FileTransferError.FILE_NOT_FOUND_ERR = 1; -FileTransferError.INVALID_URL_ERR = 2; -FileTransferError.CONNECTION_ERR = 3; - -module.exports = FileTransferError; - -}); - -// file: lib/common/plugin/FileUploadOptions.js -define("cordova/plugin/FileUploadOptions", function(require, exports, module) { -/** - * Options to customize the HTTP request used to upload files. - * @constructor - * @param fileKey {String} Name of file request parameter. - * @param fileName {String} Filename to be used by the server. Defaults to image.jpg. - * @param mimeType {String} Mimetype of the uploaded file. Defaults to image/jpeg. - * @param params {Object} Object with key: value params to send to the server. - * @param headers {Object} Keys are header names, values are header values. Multiple - * headers of the same name are not supported. - */ -var FileUploadOptions = function(fileKey, fileName, mimeType, params, headers) { - this.fileKey = fileKey || null; - this.fileName = fileName || null; - this.mimeType = mimeType || null; - this.params = params || null; - this.headers = headers || null; -}; - -module.exports = FileUploadOptions; - -}); - -// file: lib/common/plugin/FileUploadResult.js -define("cordova/plugin/FileUploadResult", function(require, exports, module) { -/** - * FileUploadResult - * @constructor - */ -var FileUploadResult = function() { - this.bytesSent = 0; - this.responseCode = null; - this.response = null; -}; - -module.exports = FileUploadResult; -}); - -// file: lib/common/plugin/FileWriter.js -define("cordova/plugin/FileWriter", function(require, exports, module) { -var exec = require('cordova/exec'), - FileError = require('cordova/plugin/FileError'), - ProgressEvent = require('cordova/plugin/ProgressEvent'); - -/** - * This class writes to the mobile device file system. - * - * For Android: - * The root directory is the root of the file system. - * To write to the SD card, the file name is "sdcard/my_file.txt" - * - * @constructor - * @param file {File} File object containing file properties - * @param append if true write to the end of the file, otherwise overwrite the file - */ -var FileWriter = function(file) { - this.fileName = ""; - this.length = 0; - if (file) { - this.fileName = file.fullPath || file; - this.length = file.size || 0; - } - // default is to write at the beginning of the file - this.position = 0; - - this.readyState = 0; // EMPTY - - this.result = null; - - // Error - this.error = null; - - // Event handlers - this.onwritestart = null; // When writing starts - this.onprogress = null; // While writing the file, and reporting partial file data - this.onwrite = null; // When the write has successfully completed. - this.onwriteend = null; // When the request has completed (either in success or failure). - this.onabort = null; // When the write has been aborted. For instance, by invoking the abort() method. - this.onerror = null; // When the write has failed (see errors). -}; - -// States -FileWriter.INIT = 0; -FileWriter.WRITING = 1; -FileWriter.DONE = 2; - -/** - * Abort writing file. - */ -FileWriter.prototype.abort = function() { - // check for invalid state - if (this.readyState === FileWriter.DONE || this.readyState === FileWriter.INIT) { - throw new FileError(FileError.INVALID_STATE_ERR); - } - - // set error - this.error = new FileError(FileError.ABORT_ERR); - - this.readyState = FileWriter.DONE; - - // If abort callback - if (typeof this.onabort === "function") { - this.onabort(new ProgressEvent("abort", {"target":this})); - } - - // If write end callback - if (typeof this.onwriteend === "function") { - this.onwriteend(new ProgressEvent("writeend", {"target":this})); - } -}; - -/** - * Writes data to the file - * - * @param text to be written - */ -FileWriter.prototype.write = function(text) { - // Throw an exception if we are already writing a file - if (this.readyState === FileWriter.WRITING) { - throw new FileError(FileError.INVALID_STATE_ERR); - } - - // WRITING state - this.readyState = FileWriter.WRITING; - - var me = this; - - // If onwritestart callback - if (typeof me.onwritestart === "function") { - me.onwritestart(new ProgressEvent("writestart", {"target":me})); - } - - // Write file - exec( - // Success callback - function(r) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileWriter.DONE) { - return; - } - - // position always increases by bytes written because file would be extended - me.position += r; - // The length of the file is now where we are done writing. - - me.length = me.position; - - // DONE state - me.readyState = FileWriter.DONE; - - // If onwrite callback - if (typeof me.onwrite === "function") { - me.onwrite(new ProgressEvent("write", {"target":me})); - } - - // If onwriteend callback - if (typeof me.onwriteend === "function") { - me.onwriteend(new ProgressEvent("writeend", {"target":me})); - } - }, - // Error callback - function(e) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileWriter.DONE) { - return; - } - - // DONE state - me.readyState = FileWriter.DONE; - - // Save error - me.error = new FileError(e); - - // If onerror callback - if (typeof me.onerror === "function") { - me.onerror(new ProgressEvent("error", {"target":me})); - } - - // If onwriteend callback - if (typeof me.onwriteend === "function") { - me.onwriteend(new ProgressEvent("writeend", {"target":me})); - } - }, "File", "write", [this.fileName, text, this.position]); -}; - -/** - * Moves the file pointer to the location specified. - * - * If the offset is a negative number the position of the file - * pointer is rewound. If the offset is greater than the file - * size the position is set to the end of the file. - * - * @param offset is the location to move the file pointer to. - */ -FileWriter.prototype.seek = function(offset) { - // Throw an exception if we are already writing a file - if (this.readyState === FileWriter.WRITING) { - throw new FileError(FileError.INVALID_STATE_ERR); - } - - if (!offset && offset !== 0) { - return; - } - - // See back from end of file. - if (offset < 0) { - this.position = Math.max(offset + this.length, 0); - } - // Offset is bigger than file size so set position - // to the end of the file. - else if (offset > this.length) { - this.position = this.length; - } - // Offset is between 0 and file size so set the position - // to start writing. - else { - this.position = offset; - } -}; - -/** - * Truncates the file to the size specified. - * - * @param size to chop the file at. - */ -FileWriter.prototype.truncate = function(size) { - // Throw an exception if we are already writing a file - if (this.readyState === FileWriter.WRITING) { - throw new FileError(FileError.INVALID_STATE_ERR); - } - - // WRITING state - this.readyState = FileWriter.WRITING; - - var me = this; - - // If onwritestart callback - if (typeof me.onwritestart === "function") { - me.onwritestart(new ProgressEvent("writestart", {"target":this})); - } - - // Write file - exec( - // Success callback - function(r) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileWriter.DONE) { - return; - } - - // DONE state - me.readyState = FileWriter.DONE; - - // Update the length of the file - me.length = r; - me.position = Math.min(me.position, r); - - // If onwrite callback - if (typeof me.onwrite === "function") { - me.onwrite(new ProgressEvent("write", {"target":me})); - } - - // If onwriteend callback - if (typeof me.onwriteend === "function") { - me.onwriteend(new ProgressEvent("writeend", {"target":me})); - } - }, - // Error callback - function(e) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileWriter.DONE) { - return; - } - - // DONE state - me.readyState = FileWriter.DONE; - - // Save error - me.error = new FileError(e); - - // If onerror callback - if (typeof me.onerror === "function") { - me.onerror(new ProgressEvent("error", {"target":me})); - } - - // If onwriteend callback - if (typeof me.onwriteend === "function") { - me.onwriteend(new ProgressEvent("writeend", {"target":me})); - } - }, "File", "truncate", [this.fileName, size]); -}; - -module.exports = FileWriter; - -}); - -// file: lib/common/plugin/Flags.js -define("cordova/plugin/Flags", function(require, exports, module) { -/** - * Supplies arguments to methods that lookup or create files and directories. - * - * @param create - * {boolean} file or directory if it doesn't exist - * @param exclusive - * {boolean} used with create; if true the command will fail if - * target path exists - */ -function Flags(create, exclusive) { - this.create = create || false; - this.exclusive = exclusive || false; -} - -module.exports = Flags; -}); - -// file: lib/common/plugin/LocalFileSystem.js -define("cordova/plugin/LocalFileSystem", function(require, exports, module) { -var exec = require('cordova/exec'); - -/** - * Represents a local file system. - */ -var LocalFileSystem = function() { - -}; - -LocalFileSystem.TEMPORARY = 0; //temporary, with no guarantee of persistence -LocalFileSystem.PERSISTENT = 1; //persistent - -module.exports = LocalFileSystem; -}); - -// file: lib/common/plugin/Media.js -define("cordova/plugin/Media", function(require, exports, module) { -var utils = require('cordova/utils'), - exec = require('cordova/exec'); - -var mediaObjects = {}; - -/** - * This class provides access to the device media, interfaces to both sound and video - * - * @constructor - * @param src The file name or url to play - * @param successCallback The callback to be called when the file is done playing or recording. - * successCallback() - * @param errorCallback The callback to be called if there is an error. - * errorCallback(int errorCode) - OPTIONAL - * @param statusCallback The callback to be called when media status has changed. - * statusCallback(int statusCode) - OPTIONAL - */ -var Media = function(src, successCallback, errorCallback, statusCallback) { - - // successCallback optional - if (successCallback && (typeof successCallback !== "function")) { - console.log("Media Error: successCallback is not a function"); - return; - } - - // errorCallback optional - if (errorCallback && (typeof errorCallback !== "function")) { - console.log("Media Error: errorCallback is not a function"); - return; - } - - // statusCallback optional - if (statusCallback && (typeof statusCallback !== "function")) { - console.log("Media Error: statusCallback is not a function"); - return; - } - - this.id = utils.createUUID(); - mediaObjects[this.id] = this; - this.src = src; - this.successCallback = successCallback; - this.errorCallback = errorCallback; - this.statusCallback = statusCallback; - this._duration = -1; - this._position = -1; - exec(null, this.errorCallback, "Media", "create", [this.id, this.src]); -}; - -// Media messages -Media.MEDIA_STATE = 1; -Media.MEDIA_DURATION = 2; -Media.MEDIA_POSITION = 3; -Media.MEDIA_ERROR = 9; - -// Media states -Media.MEDIA_NONE = 0; -Media.MEDIA_STARTING = 1; -Media.MEDIA_RUNNING = 2; -Media.MEDIA_PAUSED = 3; -Media.MEDIA_STOPPED = 4; -Media.MEDIA_MSG = ["None", "Starting", "Running", "Paused", "Stopped"]; - -// "static" function to return existing objs. -Media.get = function(id) { - return mediaObjects[id]; -}; - -/** - * Start or resume playing audio file. - */ -Media.prototype.play = function(options) { - exec(null, null, "Media", "startPlayingAudio", [this.id, this.src, options]); -}; - -/** - * Stop playing audio file. - */ -Media.prototype.stop = function() { - var me = this; - exec(function() { - me._position = 0; - }, this.errorCallback, "Media", "stopPlayingAudio", [this.id]); -}; - -/** - * Seek or jump to a new time in the track.. - */ -Media.prototype.seekTo = function(milliseconds) { - var me = this; - exec(function(p) { - me._position = p; - }, this.errorCallback, "Media", "seekToAudio", [this.id, milliseconds]); -}; - -/** - * Pause playing audio file. - */ -Media.prototype.pause = function() { - exec(null, this.errorCallback, "Media", "pausePlayingAudio", [this.id]); -}; - -/** - * Get duration of an audio file. - * The duration is only set for audio that is playing, paused or stopped. - * - * @return duration or -1 if not known. - */ -Media.prototype.getDuration = function() { - return this._duration; -}; - -/** - * Get position of audio. - */ -Media.prototype.getCurrentPosition = function(success, fail) { - var me = this; - exec(function(p) { - me._position = p; - success(p); - }, fail, "Media", "getCurrentPositionAudio", [this.id]); -}; - -/** - * Start recording audio file. - */ -Media.prototype.startRecord = function() { - exec(null, this.errorCallback, "Media", "startRecordingAudio", [this.id, this.src]); -}; - -/** - * Stop recording audio file. - */ -Media.prototype.stopRecord = function() { - exec(null, this.errorCallback, "Media", "stopRecordingAudio", [this.id]); -}; - -/** - * Release the resources. - */ -Media.prototype.release = function() { - exec(null, this.errorCallback, "Media", "release", [this.id]); -}; - -/** - * Adjust the volume. - */ -Media.prototype.setVolume = function(volume) { - exec(null, null, "Media", "setVolume", [this.id, volume]); -}; - -/** - * Audio has status update. - * PRIVATE - * - * @param id The media object id (string) - * @param msgType The 'type' of update this is - * @param value Use of value is determined by the msgType - */ -Media.onStatus = function(id, msgType, value) { - - var media = mediaObjects[id]; - - if(media) { - switch(msgType) { - case Media.MEDIA_STATE : - media.statusCallback && media.statusCallback(value); - if(value == Media.MEDIA_STOPPED) { - media.successCallback && media.successCallback(); - } - break; - case Media.MEDIA_DURATION : - media._duration = value; - break; - case Media.MEDIA_ERROR : - media.errorCallback && media.errorCallback(value); - break; - case Media.MEDIA_POSITION : - media._position = Number(value); - break; - default : - console && console.error && console.error("Unhandled Media.onStatus :: " + msgType); - break; - } - } - else { - console && console.error && console.error("Received Media.onStatus callback for unknown media :: " + id); - } - -}; - -module.exports = Media; -}); - -// file: lib/common/plugin/MediaError.js -define("cordova/plugin/MediaError", function(require, exports, module) { -/** - * This class contains information about any Media errors. -*/ -/* - According to :: http://dev.w3.org/html5/spec-author-view/video.html#mediaerror - We should never be creating these objects, we should just implement the interface - which has 1 property for an instance, 'code' - - instead of doing : - errorCallbackFunction( new MediaError(3,'msg') ); -we should simply use a literal : - errorCallbackFunction( {'code':3} ); - */ - -if(!MediaError) { - var MediaError = function(code, msg) { - this.code = (typeof code != 'undefined') ? code : null; - this.message = msg || ""; // message is NON-standard! do not use! - }; -} - -MediaError.MEDIA_ERR_NONE_ACTIVE = MediaError.MEDIA_ERR_NONE_ACTIVE || 0; -MediaError.MEDIA_ERR_ABORTED = MediaError.MEDIA_ERR_ABORTED || 1; -MediaError.MEDIA_ERR_NETWORK = MediaError.MEDIA_ERR_NETWORK || 2; -MediaError.MEDIA_ERR_DECODE = MediaError.MEDIA_ERR_DECODE || 3; -MediaError.MEDIA_ERR_NONE_SUPPORTED = MediaError.MEDIA_ERR_NONE_SUPPORTED || 4; -// TODO: MediaError.MEDIA_ERR_NONE_SUPPORTED is legacy, the W3 spec now defines it as below. -// as defined by http://dev.w3.org/html5/spec-author-view/video.html#error-codes -MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED || 4; - -module.exports = MediaError; - -}); - -// file: lib/common/plugin/MediaFile.js -define("cordova/plugin/MediaFile", function(require, exports, module) { -var utils = require('cordova/utils'), - exec = require('cordova/exec'), - File = require('cordova/plugin/File'), - CaptureError = require('cordova/plugin/CaptureError'); -/** - * Represents a single file. - * - * name {DOMString} name of the file, without path information - * fullPath {DOMString} the full path of the file, including the name - * type {DOMString} mime type - * lastModifiedDate {Date} last modified date - * size {Number} size of the file in bytes - */ -var MediaFile = function(name, fullPath, type, lastModifiedDate, size){ - MediaFile.__super__.constructor.apply(this, arguments); -}; - -utils.extend(MediaFile, File); - -/** - * Request capture format data for a specific file and type - * - * @param {Function} successCB - * @param {Function} errorCB - */ -MediaFile.prototype.getFormatData = function(successCallback, errorCallback) { - if (typeof this.fullPath === "undefined" || this.fullPath === null) { - errorCallback(new CaptureError(CaptureError.CAPTURE_INVALID_ARGUMENT)); - } else { - exec(successCallback, errorCallback, "Capture", "getFormatData", [this.fullPath, this.type]); - } -}; - -module.exports = MediaFile; - -}); - -// file: lib/common/plugin/MediaFileData.js -define("cordova/plugin/MediaFileData", function(require, exports, module) { -/** - * MediaFileData encapsulates format information of a media file. - * - * @param {DOMString} codecs - * @param {long} bitrate - * @param {long} height - * @param {long} width - * @param {float} duration - */ -var MediaFileData = function(codecs, bitrate, height, width, duration){ - this.codecs = codecs || null; - this.bitrate = bitrate || 0; - this.height = height || 0; - this.width = width || 0; - this.duration = duration || 0; -}; - -module.exports = MediaFileData; -}); - -// file: lib/common/plugin/Metadata.js -define("cordova/plugin/Metadata", function(require, exports, module) { -/** - * Information about the state of the file or directory - * - * {Date} modificationTime (readonly) - */ -var Metadata = function(time) { - this.modificationTime = (typeof time != 'undefined'?new Date(time):null); -}; - -module.exports = Metadata; -}); - -// file: lib/common/plugin/Position.js -define("cordova/plugin/Position", function(require, exports, module) { -var Coordinates = require('cordova/plugin/Coordinates'); - -var Position = function(coords, timestamp) { - if (coords) { - this.coords = new Coordinates(coords.latitude, coords.longitude, coords.altitude, coords.accuracy, coords.heading, coords.velocity, coords.altitudeAccuracy); - } else { - this.coords = new Coordinates(); - } - this.timestamp = (timestamp !== undefined) ? timestamp : new Date(); -}; - -module.exports = Position; - -}); - -// file: lib/common/plugin/PositionError.js -define("cordova/plugin/PositionError", function(require, exports, module) { -/** - * Position error object - * - * @constructor - * @param code - * @param message - */ -var PositionError = function(code, message) { - this.code = code || null; - this.message = message || ''; -}; - -PositionError.PERMISSION_DENIED = 1; -PositionError.POSITION_UNAVAILABLE = 2; -PositionError.TIMEOUT = 3; - -module.exports = PositionError; -}); - -// file: lib/common/plugin/ProgressEvent.js -define("cordova/plugin/ProgressEvent", function(require, exports, module) { -// If ProgressEvent exists in global context, use it already, otherwise use our own polyfill -// Feature test: See if we can instantiate a native ProgressEvent; -// if so, use that approach, -// otherwise fill-in with our own implementation. -// -// NOTE: right now we always fill in with our own. Down the road would be nice if we can use whatever is native in the webview. -var ProgressEvent = (function() { - /* - var createEvent = function(data) { - var event = document.createEvent('Events'); - event.initEvent('ProgressEvent', false, false); - if (data) { - for (var i in data) { - if (data.hasOwnProperty(i)) { - event[i] = data[i]; - } - } - if (data.target) { - // TODO: cannot call <some_custom_object>.dispatchEvent - // need to first figure out how to implement EventTarget - } - } - return event; - }; - try { - var ev = createEvent({type:"abort",target:document}); - return function ProgressEvent(type, data) { - data.type = type; - return createEvent(data); - }; - } catch(e){ - */ - return function ProgressEvent(type, dict) { - this.type = type; - this.bubbles = false; - this.cancelBubble = false; - this.cancelable = false; - this.lengthComputable = false; - this.loaded = dict && dict.loaded ? dict.loaded : 0; - this.total = dict && dict.total ? dict.total : 0; - this.target = dict && dict.target ? dict.target : null; - }; - //} -})(); - -module.exports = ProgressEvent; -}); - -// file: lib/common/plugin/accelerometer.js -define("cordova/plugin/accelerometer", function(require, exports, module) { -/** - * This class provides access to device accelerometer data. - * @constructor - */ -var utils = require("cordova/utils"), - exec = require("cordova/exec"), - Acceleration = require('cordova/plugin/Acceleration'); - -// Is the accel sensor running? -var running = false; - -// Keeps reference to watchAcceleration calls. -var timers = {}; - -// Array of listeners; used to keep track of when we should call start and stop. -var listeners = []; - -// Last returned acceleration object from native -var accel = null; - -// Tells native to start. -function start() { - exec(function(a) { - var tempListeners = listeners.slice(0); - accel = new Acceleration(a.x, a.y, a.z, a.timestamp); - for (var i = 0, l = tempListeners.length; i < l; i++) { - tempListeners[i].win(accel); - } - }, function(e) { - var tempListeners = listeners.slice(0); - for (var i = 0, l = tempListeners.length; i < l; i++) { - tempListeners[i].fail(e); - } - }, "Accelerometer", "start", []); - running = true; -} - -// Tells native to stop. -function stop() { - exec(null, null, "Accelerometer", "stop", []); - running = false; -} - -// Adds a callback pair to the listeners array -function createCallbackPair(win, fail) { - return {win:win, fail:fail}; -} - -// Removes a win/fail listener pair from the listeners array -function removeListeners(l) { - var idx = listeners.indexOf(l); - if (idx > -1) { - listeners.splice(idx, 1); - if (listeners.length === 0) { - stop(); - } - } -} - -var accelerometer = { - /** - * Asynchronously aquires the current acceleration. - * - * @param {Function} successCallback The function to call when the acceleration data is available - * @param {Function} errorCallback The function to call when there is an error getting the acceleration data. (OPTIONAL) - * @param {AccelerationOptions} options The options for getting the accelerometer data such as timeout. (OPTIONAL) - */ - getCurrentAcceleration: function(successCallback, errorCallback, options) { - // successCallback required - if (typeof successCallback !== "function") { - throw "getCurrentAcceleration must be called with at least a success callback function as first parameter."; - } - - var p; - var win = function(a) { - removeListeners(p); - successCallback(a); - }; - var fail = function(e) { - removeListeners(p); - errorCallback(e); - }; - - p = createCallbackPair(win, fail); - listeners.push(p); - - if (!running) { - start(); - } - }, - - /** - * Asynchronously aquires the acceleration repeatedly at a given interval. - * - * @param {Function} successCallback The function to call each time the acceleration data is available - * @param {Function} errorCallback The function to call when there is an error getting the acceleration data. (OPTIONAL) - * @param {AccelerationOptions} options The options for getting the accelerometer data such as timeout. (OPTIONAL) - * @return String The watch id that must be passed to #clearWatch to stop watching. - */ - watchAcceleration: function(successCallback, errorCallback, options) { - // Default interval (10 sec) - var frequency = (options && options.frequency && typeof options.frequency == 'number') ? options.frequency : 10000; - - // successCallback required - if (typeof successCallback !== "function") { - throw "watchAcceleration must be called with at least a success callback function as first parameter."; - } - - // Keep reference to watch id, and report accel readings as often as defined in frequency - var id = utils.createUUID(); - - var p = createCallbackPair(function(){}, function(e) { - removeListeners(p); - errorCallback(e); - }); - listeners.push(p); - - timers[id] = { - timer:window.setInterval(function() { - if (accel) { - successCallback(accel); - } - }, frequency), - listeners:p - }; - - if (running) { - // If we're already running then immediately invoke the success callback - // but only if we have retrieved a value, sample code does not check for null ... - if(accel) { - successCallback(accel); - } - } else { - start(); - } - - return id; - }, - - /** - * Clears the specified accelerometer watch. - * - * @param {String} id The id of the watch returned from #watchAcceleration. - */ - clearWatch: function(id) { - // Stop javascript timer & remove from timer list - if (id && timers[id]) { - window.clearInterval(timers[id].timer); - removeListeners(timers[id].listeners); - delete timers[id]; - } - } -}; - -module.exports = accelerometer; - -}); - -// file: lib/android/plugin/android/app.js -define("cordova/plugin/android/app", function(require, exports, module) { -var exec = require('cordova/exec'); - -module.exports = { - /** - * Clear the resource cache. - */ - clearCache:function() { - exec(null, null, "App", "clearCache", []); - }, - - /** - * Load the url into the webview or into new browser instance. - * - * @param url The URL to load - * @param props Properties that can be passed in to the activity: - * wait: int => wait msec before loading URL - * loadingDialog: "Title,Message" => display a native loading dialog - * loadUrlTimeoutValue: int => time in msec to wait before triggering a timeout error - * clearHistory: boolean => clear webview history (default=false) - * openExternal: boolean => open in a new browser (default=false) - * - * Example: - * navigator.app.loadUrl("http://server/myapp/index.html", {wait:2000, loadingDialog:"Wait,Loading App", loadUrlTimeoutValue: 60000}); - */ - loadUrl:function(url, props) { - exec(null, null, "App", "loadUrl", [url, props]); - }, - - /** - * Cancel loadUrl that is waiting to be loaded. - */ - cancelLoadUrl:function() { - exec(null, null, "App", "cancelLoadUrl", []); - }, - - /** - * Clear web history in this web view. - * Instead of BACK button loading the previous web page, it will exit the app. - */ - clearHistory:function() { - exec(null, null, "App", "clearHistory", []); - }, - - /** - * Go to previous page displayed. - * This is the same as pressing the backbutton on Android device. - */ - backHistory:function() { - exec(null, null, "App", "backHistory", []); - }, - - /** - * Override the default behavior of the Android back button. - * If overridden, when the back button is pressed, the "backKeyDown" JavaScript event will be fired. - * - * Note: The user should not have to call this method. Instead, when the user - * registers for the "backbutton" event, this is automatically done. - * - * @param override T=override, F=cancel override - */ - overrideBackbutton:function(override) { - exec(null, null, "App", "overrideBackbutton", [override]); - }, - - /** - * Exit and terminate the application. - */ - exitApp:function() { - return exec(null, null, "App", "exitApp", []); - } -}; -}); - -// file: lib/android/plugin/android/callback.js -define("cordova/plugin/android/callback", function(require, exports, module) { -var port = null, - token = null, - xmlhttp; - -function startXhr() { - // cordova/exec depends on this module, so we can't require cordova/exec on the module level. - var exec = require('cordova/exec'), - xmlhttp = new XMLHttpRequest(); - - // Callback function when XMLHttpRequest is ready - xmlhttp.onreadystatechange=function(){ - if (!xmlhttp) { - return; - } - if (xmlhttp.readyState === 4){ - // If callback has JavaScript statement to execute - if (xmlhttp.status === 200) { - - // Need to url decode the response - var msg = decodeURIComponent(xmlhttp.responseText); - setTimeout(function() { - try { - var t = eval(msg); - } - catch (e) { - // If we're getting an error here, seeing the message will help in debugging - console.log("JSCallback: Message from Server: " + msg); - console.log("JSCallback Error: "+e); - } - }, 1); - setTimeout(startXhr, 1); - } - - // If callback ping (used to keep XHR request from timing out) - else if (xmlhttp.status === 404) { - setTimeout(startXhr, 10); - } - - // 0 == Page is unloading. - // 400 == Bad request. - // 403 == invalid token. - // 503 == server stopped. - else { - console.log("JSCallback Error: Request failed with status " + xmlhttp.status); - exec.setNativeToJsBridgeMode(exec.nativeToJsModes.POLLING); - } - } - }; - - if (port === null) { - port = prompt("getPort", "gap_callbackServer:"); - } - if (token === null) { - token = prompt("getToken", "gap_callbackServer:"); - } - xmlhttp.open("GET", "http://127.0.0.1:"+port+"/"+token , true); - xmlhttp.send(); -} - -module.exports = { - start: function() { - startXhr(); - }, - - stop: function() { - if (xmlhttp) { - var tmp = xmlhttp; - xmlhttp = null; - tmp.abort(); - } - }, - - isAvailable: function() { - return ("true" != prompt("usePolling", "gap_callbackServer:")); - } -}; - - -}); - -// file: lib/android/plugin/android/device.js -define("cordova/plugin/android/device", function(require, exports, module) { -var channel = require('cordova/channel'), - utils = require('cordova/utils'), - exec = require('cordova/exec'), - app = require('cordova/plugin/android/app'); - -module.exports = { - /* - * DEPRECATED - * This is only for Android. - * - * You must explicitly override the back button. - */ - overrideBackButton:function() { - console.log("Device.overrideBackButton() is deprecated. Use App.overrideBackbutton(true)."); - app.overrideBackbutton(true); - }, - - /* - * DEPRECATED - * This is only for Android. - * - * This resets the back button to the default behaviour - */ - resetBackButton:function() { - console.log("Device.resetBackButton() is deprecated. Use App.overrideBackbutton(false)."); - app.overrideBackbutton(false); - }, - - /* - * DEPRECATED - * This is only for Android. - * - * This terminates the activity! - */ - exitApp:function() { - console.log("Device.exitApp() is deprecated. Use App.exitApp()."); - app.exitApp(); - } -}; - -}); - -// file: lib/android/plugin/android/notification.js -define("cordova/plugin/android/notification", function(require, exports, module) { -var exec = require('cordova/exec'); - -/** - * Provides Android enhanced notification API. - */ -module.exports = { - activityStart : function(title, message) { - // If title and message not specified then mimic Android behavior of - // using default strings. - if (typeof title === "undefined" && typeof message == "undefined") { - title = "Busy"; - message = 'Please wait...'; - } - - exec(null, null, 'Notification', 'activityStart', [ title, message ]); - }, - - /** - * Close an activity dialog - */ - activityStop : function() { - exec(null, null, 'Notification', 'activityStop', []); - }, - - /** - * Display a progress dialog with progress bar that goes from 0 to 100. - * - * @param {String} - * title Title of the progress dialog. - * @param {String} - * message Message to display in the dialog. - */ - progressStart : function(title, message) { - exec(null, null, 'Notification', 'progressStart', [ title, message ]); - }, - - /** - * Close the progress dialog. - */ - progressStop : function() { - exec(null, null, 'Notification', 'progressStop', []); - }, - - /** - * Set the progress dialog value. - * - * @param {Number} - * value 0-100 - */ - progressValue : function(value) { - exec(null, null, 'Notification', 'progressValue', [ value ]); - } -}; -}); - -// file: lib/android/plugin/android/polling.js -define("cordova/plugin/android/polling", function(require, exports, module) { -var cordova = require('cordova'), - POLL_INTERVAL = 50, - enabled = false; - -function pollOnce() { - var msg = prompt("", "gap_poll:"); - if (msg) { - try { - eval(""+msg); - } - catch (e) { - console.log("JSCallbackPolling: Message from Server: " + msg); - console.log("JSCallbackPolling Error: "+e); - } - return true; - } - return false; -} - -function doPoll() { - if (!enabled) { - return; - } - var nextDelay = POLL_INTERVAL; - if (pollOnce()) { - nextDelay = 0; - } - setTimeout(doPoll, nextDelay); -} - -module.exports = { - start: function() { - enabled = true; - setTimeout(doPoll, 1); - }, - stop: function() { - enabled = false; - }, - pollOnce: pollOnce -}; - - -}); - -// file: lib/android/plugin/android/storage.js -define("cordova/plugin/android/storage", function(require, exports, module) { -var utils = require('cordova/utils'), - exec = require('cordova/exec'), - channel = require('cordova/channel'); - -var queryQueue = {}; - -/** - * SQL result set object - * PRIVATE METHOD - * @constructor - */ -var DroidDB_Rows = function() { - this.resultSet = []; // results array - this.length = 0; // number of rows -}; - -/** - * Get item from SQL result set - * - * @param row The row number to return - * @return The row object - */ -DroidDB_Rows.prototype.item = function(row) { - return this.resultSet[row]; -}; - -/** - * SQL result set that is returned to user. - * PRIVATE METHOD - * @constructor - */ -var DroidDB_Result = function() { - this.rows = new DroidDB_Rows(); -}; - -/** - * Callback from native code when query is complete. - * PRIVATE METHOD - * - * @param id Query id - */ -function completeQuery(id, data) { - var query = queryQueue[id]; - if (query) { - try { - delete queryQueue[id]; - - // Get transaction - var tx = query.tx; - - // If transaction hasn't failed - // Note: We ignore all query results if previous query - // in the same transaction failed. - if (tx && tx.queryList[id]) { - - // Save query results - var r = new DroidDB_Result(); - r.rows.resultSet = data; - r.rows.length = data.length; - try { - if (typeof query.successCallback === 'function') { - query.successCallback(query.tx, r); - } - } catch (ex) { - console.log("executeSql error calling user success callback: "+ex); - } - - tx.queryComplete(id); - } - } catch (e) { - console.log("executeSql error: "+e); - } - } -} - -/** - * Callback from native code when query fails - * PRIVATE METHOD - * - * @param reason Error message - * @param id Query id - */ -function failQuery(reason, id) { - var query = queryQueue[id]; - if (query) { - try { - delete queryQueue[id]; - - // Get transaction - var tx = query.tx; - - // If transaction hasn't failed - // Note: We ignore all query results if previous query - // in the same transaction failed. - if (tx && tx.queryList[id]) { - tx.queryList = {}; - - try { - if (typeof query.errorCallback === 'function') { - query.errorCallback(query.tx, reason); - } - } catch (ex) { - console.log("executeSql error calling user error callback: "+ex); - } - - tx.queryFailed(id, reason); - } - - } catch (e) { - console.log("executeSql error: "+e); - } - } -} - -/** - * SQL query object - * PRIVATE METHOD - * - * @constructor - * @param tx The transaction object that this query belongs to - */ -var DroidDB_Query = function(tx) { - - // Set the id of the query - this.id = utils.createUUID(); - - // Add this query to the queue - queryQueue[this.id] = this; - - // Init result - this.resultSet = []; - - // Set transaction that this query belongs to - this.tx = tx; - - // Add this query to transaction list - this.tx.queryList[this.id] = this; - - // Callbacks - this.successCallback = null; - this.errorCallback = null; - -}; - -/** - * Transaction object - * PRIVATE METHOD - * @constructor - */ -var DroidDB_Tx = function() { - - // Set the id of the transaction - this.id = utils.createUUID(); - - // Callbacks - this.successCallback = null; - this.errorCallback = null; - - // Query list - this.queryList = {}; -}; - -/** - * Mark query in transaction as complete. - * If all queries are complete, call the user's transaction success callback. - * - * @param id Query id - */ -DroidDB_Tx.prototype.queryComplete = function(id) { - delete this.queryList[id]; - - // If no more outstanding queries, then fire transaction success - if (this.successCallback) { - var count = 0; - var i; - for (i in this.queryList) { - if (this.queryList.hasOwnProperty(i)) { - count++; - } - } - if (count === 0) { - try { - this.successCallback(); - } catch(e) { - console.log("Transaction error calling user success callback: " + e); - } - } - } -}; - -/** - * Mark query in transaction as failed. - * - * @param id Query id - * @param reason Error message - */ -DroidDB_Tx.prototype.queryFailed = function(id, reason) { - - // The sql queries in this transaction have already been run, since - // we really don't have a real transaction implemented in native code. - // However, the user callbacks for the remaining sql queries in transaction - // will not be called. - this.queryList = {}; - - if (this.errorCallback) { - try { - this.errorCallback(reason); - } catch(e) { - console.log("Transaction error calling user error callback: " + e); - } - } -}; - -/** - * Execute SQL statement - * - * @param sql SQL statement to execute - * @param params Statement parameters - * @param successCallback Success callback - * @param errorCallback Error callback - */ -DroidDB_Tx.prototype.executeSql = function(sql, params, successCallback, errorCallback) { - - // Init params array - if (typeof params === 'undefined') { - params = []; - } - - // Create query and add to queue - var query = new DroidDB_Query(this); - queryQueue[query.id] = query; - - // Save callbacks - query.successCallback = successCallback; - query.errorCallback = errorCallback; - - // Call native code - exec(null, null, "Storage", "executeSql", [sql, params, query.id]); -}; - -var DatabaseShell = function() { -}; - -/** - * Start a transaction. - * Does not support rollback in event of failure. - * - * @param process {Function} The transaction function - * @param successCallback {Function} - * @param errorCallback {Function} - */ -DatabaseShell.prototype.transaction = function(process, errorCallback, successCallback) { - var tx = new DroidDB_Tx(); - tx.successCallback = successCallback; - tx.errorCallback = errorCallback; - try { - process(tx); - } catch (e) { - console.log("Transaction error: "+e); - if (tx.errorCallback) { - try { - tx.errorCallback(e); - } catch (ex) { - console.log("Transaction error calling user error callback: "+e); - } - } - } -}; - -/** - * Open database - * - * @param name Database name - * @param version Database version - * @param display_name Database display name - * @param size Database size in bytes - * @return Database object - */ -var DroidDB_openDatabase = function(name, version, display_name, size) { - exec(null, null, "Storage", "openDatabase", [name, version, display_name, size]); - var db = new DatabaseShell(); - return db; -}; - -/** - * For browsers with no localStorage we emulate it with SQLite. Follows the w3c api. - * TODO: Do similar for sessionStorage. - * @constructor - */ -var CupcakeLocalStorage = function() { - channel.waitForInitialization("cupcakeStorage"); - - try { - - this.db = openDatabase('localStorage', '1.0', 'localStorage', 2621440); - var storage = {}; - this.length = 0; - function setLength (length) { - this.length = length; - localStorage.length = length; - } - this.db.transaction( - function (transaction) { - var i; - transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))'); - transaction.executeSql('SELECT * FROM storage', [], function(tx, result) { - for(var i = 0; i < result.rows.length; i++) { - storage[result.rows.item(i).id] = result.rows.item(i).body; - } - setLength(result.rows.length); - channel.initializationComplete("cupcakeStorage"); - }); - - }, - function (err) { - utils.alert(err.message); - } - ); - this.setItem = function(key, val) { - if (typeof(storage[key])=='undefined') { - this.length++; - } - storage[key] = val; - this.db.transaction( - function (transaction) { - transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))'); - transaction.executeSql('REPLACE INTO storage (id, body) values(?,?)', [key,val]); - } - ); - }; - this.getItem = function(key) { - return storage[key]; - }; - this.removeItem = function(key) { - delete storage[key]; - this.length--; - this.db.transaction( - function (transaction) { - transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))'); - transaction.executeSql('DELETE FROM storage where id=?', [key]); - } - ); - }; - this.clear = function() { - storage = {}; - this.length = 0; - this.db.transaction( - function (transaction) { - transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))'); - transaction.executeSql('DELETE FROM storage', []); - } - ); - }; - this.key = function(index) { - var i = 0; - for (var j in storage) { - if (i==index) { - return j; - } else { - i++; - } - } - return null; - }; - - } catch(e) { - utils.alert("Database error "+e+"."); - return; - } -}; - -module.exports = { - openDatabase:DroidDB_openDatabase, - CupcakeLocalStorage:CupcakeLocalStorage, - failQuery:failQuery, - completeQuery:completeQuery -}; - -}); - -// file: lib/common/plugin/battery.js -define("cordova/plugin/battery", function(require, exports, module) { -/** - * This class contains information about the current battery status. - * @constructor - */ -var cordova = require('cordova'), - exec = require('cordova/exec'); - -function handlers() { - return battery.channels.batterystatus.numHandlers + - battery.channels.batterylow.numHandlers + - battery.channels.batterycritical.numHandlers; -} - -var Battery = function() { - this._level = null; - this._isPlugged = null; - // Create new event handlers on the window (returns a channel instance) - var subscriptionEvents = { - onSubscribe:this.onSubscribe, - onUnsubscribe:this.onUnsubscribe - }; - this.channels = { - batterystatus:cordova.addWindowEventHandler("batterystatus", subscriptionEvents), - batterylow:cordova.addWindowEventHandler("batterylow", subscriptionEvents), - batterycritical:cordova.addWindowEventHandler("batterycritical", subscriptionEvents) - }; -}; -/** - * Event handlers for when callbacks get registered for the battery. - * Keep track of how many handlers we have so we can start and stop the native battery listener - * appropriately (and hopefully save on battery life!). - */ -Battery.prototype.onSubscribe = function() { - var me = battery; - // If we just registered the first handler, make sure native listener is started. - if (handlers() === 1) { - exec(me._status, me._error, "Battery", "start", []); - } -}; - -Battery.prototype.onUnsubscribe = function() { - var me = battery; - - // If we just unregistered the last handler, make sure native listener is stopped. - if (handlers() === 0) { - exec(null, null, "Battery", "stop", []); - } -}; - -/** - * Callback for battery status - * - * @param {Object} info keys: level, isPlugged - */ -Battery.prototype._status = function(info) { - if (info) { - var me = battery; - var level = info.level; - if (me._level !== level || me._isPlugged !== info.isPlugged) { - // Fire batterystatus event - cordova.fireWindowEvent("batterystatus", info); - - // Fire low battery event - if (level === 20 || level === 5) { - if (level === 20) { - cordova.fireWindowEvent("batterylow", info); - } - else { - cordova.fireWindowEvent("batterycritical", info); - } - } - } - me._level = level; - me._isPlugged = info.isPlugged; - } -}; - -/** - * Error callback for battery start - */ -Battery.prototype._error = function(e) { - console.log("Error initializing Battery: " + e); -}; - -var battery = new Battery(); - -module.exports = battery; -}); - -// file: lib/common/plugin/capture.js -define("cordova/plugin/capture", function(require, exports, module) { -var exec = require('cordova/exec'), - MediaFile = require('cordova/plugin/MediaFile'); - -/** - * Launches a capture of different types. - * - * @param (DOMString} type - * @param {Function} successCB - * @param {Function} errorCB - * @param {CaptureVideoOptions} options - */ -function _capture(type, successCallback, errorCallback, options) { - var win = function(pluginResult) { - var mediaFiles = []; - var i; - for (i = 0; i < pluginResult.length; i++) { - var mediaFile = new MediaFile(); - mediaFile.name = pluginResult[i].name; - mediaFile.fullPath = pluginResult[i].fullPath; - mediaFile.type = pluginResult[i].type; - mediaFile.lastModifiedDate = pluginResult[i].lastModifiedDate; - mediaFile.size = pluginResult[i].size; - mediaFiles.push(mediaFile); - } - successCallback(mediaFiles); - }; - exec(win, errorCallback, "Capture", type, [options]); -} -/** - * The Capture interface exposes an interface to the camera and microphone of the hosting device. - */ -function Capture() { - this.supportedAudioModes = []; - this.supportedImageModes = []; - this.supportedVideoModes = []; -} - -/** - * Launch audio recorder application for recording audio clip(s). - * - * @param {Function} successCB - * @param {Function} errorCB - * @param {CaptureAudioOptions} options - */ -Capture.prototype.captureAudio = function(successCallback, errorCallback, options){ - _capture("captureAudio", successCallback, errorCallback, options); -}; - -/** - * Launch camera application for taking image(s). - * - * @param {Function} successCB - * @param {Function} errorCB - * @param {CaptureImageOptions} options - */ -Capture.prototype.captureImage = function(successCallback, errorCallback, options){ - _capture("captureImage", successCallback, errorCallback, options); -}; - -/** - * Launch device camera application for recording video(s). - * - * @param {Function} successCB - * @param {Function} errorCB - * @param {CaptureVideoOptions} options - */ -Capture.prototype.captureVideo = function(successCallback, errorCallback, options){ - _capture("captureVideo", successCallback, errorCallback, options); -}; - - -module.exports = new Capture(); - -}); - -// file: lib/common/plugin/compass.js -define("cordova/plugin/compass", function(require, exports, module) { -var exec = require('cordova/exec'), - utils = require('cordova/utils'), - CompassHeading = require('cordova/plugin/CompassHeading'), - CompassError = require('cordova/plugin/CompassError'), - timers = {}, - compass = { - /** - * Asynchronously acquires the current heading. - * @param {Function} successCallback The function to call when the heading - * data is available - * @param {Function} errorCallback The function to call when there is an error - * getting the heading data. - * @param {CompassOptions} options The options for getting the heading data (not used). - */ - getCurrentHeading:function(successCallback, errorCallback, options) { - // successCallback required - if (typeof successCallback !== "function") { - console.log("Compass Error: successCallback is not a function"); - return; - } - - // errorCallback optional - if (errorCallback && (typeof errorCallback !== "function")) { - console.log("Compass Error: errorCallback is not a function"); - return; - } - - var win = function(result) { - var ch = new CompassHeading(result.magneticHeading, result.trueHeading, result.headingAccuracy, result.timestamp); - successCallback(ch); - }; - var fail = function(code) { - var ce = new CompassError(code); - errorCallback(ce); - }; - - // Get heading - exec(win, fail, "Compass", "getHeading", [options]); - }, - - /** - * Asynchronously acquires the heading repeatedly at a given interval. - * @param {Function} successCallback The function to call each time the heading - * data is available - * @param {Function} errorCallback The function to call when there is an error - * getting the heading data. - * @param {HeadingOptions} options The options for getting the heading data - * such as timeout and the frequency of the watch. For iOS, filter parameter - * specifies to watch via a distance filter rather than time. - */ - watchHeading:function(successCallback, errorCallback, options) { - // Default interval (100 msec) - var frequency = (options !== undefined && options.frequency !== undefined) ? options.frequency : 100; - var filter = (options !== undefined && options.filter !== undefined) ? options.filter : 0; - - // successCallback required - if (typeof successCallback !== "function") { - console.log("Compass Error: successCallback is not a function"); - return; - } - - // errorCallback optional - if (errorCallback && (typeof errorCallback !== "function")) { - console.log("Compass Error: errorCallback is not a function"); - return; - } - - var id = utils.createUUID(); - if (filter > 0) { - // is an iOS request for watch by filter, no timer needed - timers[id] = "iOS"; - compass.getCurrentHeading(successCallback, errorCallback, options); - } else { - // Start watch timer to get headings - timers[id] = window.setInterval(function() { - compass.getCurrentHeading(successCallback, errorCallback); - }, frequency); - } - - return id; - }, - - /** - * Clears the specified heading watch. - * @param {String} watchId The ID of the watch returned from #watchHeading. - */ - clearWatch:function(id) { - // Stop javascript timer & remove from timer list - if (id && timers[id]) { - if (timers[id] != "iOS") { - clearInterval(timers[id]); - } else { - // is iOS watch by filter so call into device to stop - exec(null, null, "Compass", "stopHeading", []); - } - delete timers[id]; - } - } - }; - -module.exports = compass; -}); - -// file: lib/common/plugin/console-via-logger.js -define("cordova/plugin/console-via-logger", function(require, exports, module) { -//------------------------------------------------------------------------------ - -var logger = require("cordova/plugin/logger"); -var utils = require("cordova/utils"); - -//------------------------------------------------------------------------------ -// object that we're exporting -//------------------------------------------------------------------------------ -var console = module.exports; - -//------------------------------------------------------------------------------ -// copy of the original console object -//------------------------------------------------------------------------------ -var WinConsole = window.console; - -//------------------------------------------------------------------------------ -// whether to use the logger -//------------------------------------------------------------------------------ -var UseLogger = false; - -//------------------------------------------------------------------------------ -// Timers -//------------------------------------------------------------------------------ -var Timers = {}; - -//------------------------------------------------------------------------------ -// used for unimplemented methods -//------------------------------------------------------------------------------ -function noop() {} - -//------------------------------------------------------------------------------ -// used for unimplemented methods -//------------------------------------------------------------------------------ -console.useLogger = function (value) { - if (arguments.length) UseLogger = !!value; - - if (UseLogger) { - if (logger.useConsole()) { - throw new Error("console and logger are too intertwingly"); - } - } - - return UseLogger; -}; - -//------------------------------------------------------------------------------ -console.log = function() { - if (logger.useConsole()) return; - logger.log.apply(logger, [].slice.call(arguments)); -}; - -//------------------------------------------------------------------------------ -console.error = function() { - if (logger.useConsole()) return; - logger.error.apply(logger, [].slice.call(arguments)); -}; - -//------------------------------------------------------------------------------ -console.warn = function() { - if (logger.useConsole()) return; - logger.warn.apply(logger, [].slice.call(arguments)); -}; - -//------------------------------------------------------------------------------ -console.info = function() { - if (logger.useConsole()) return; - logger.info.apply(logger, [].slice.call(arguments)); -}; - -//------------------------------------------------------------------------------ -console.debug = function() { - if (logger.useConsole()) return; - logger.debug.apply(logger, [].slice.call(arguments)); -}; - -//------------------------------------------------------------------------------ -console.assert = function(expression) { - if (expression) return; - - var message = utils.vformat(arguments[1], [].slice.call(arguments, 2)); - console.log("ASSERT: " + message); -}; - -//------------------------------------------------------------------------------ -console.clear = function() {}; - -//------------------------------------------------------------------------------ -console.dir = function(object) { - console.log("%o", object); -}; - -//------------------------------------------------------------------------------ -console.dirxml = function(node) { - console.log(node.innerHTML); -}; - -//------------------------------------------------------------------------------ -console.trace = noop; - -//------------------------------------------------------------------------------ -console.group = console.log; - -//------------------------------------------------------------------------------ -console.groupCollapsed = console.log; - -//------------------------------------------------------------------------------ -console.groupEnd = noop; - -//------------------------------------------------------------------------------ -console.time = function(name) { - Timers[name] = new Date().valueOf(); -}; - -//------------------------------------------------------------------------------ -console.timeEnd = function(name) { - var timeStart = Timers[name]; - if (!timeStart) { - console.warn("unknown timer: " + name); - return; - } - - var timeElapsed = new Date().valueOf() - timeStart; - console.log(name + ": " + timeElapsed + "ms"); -}; - -//------------------------------------------------------------------------------ -console.timeStamp = noop; - -//------------------------------------------------------------------------------ -console.profile = noop; - -//------------------------------------------------------------------------------ -console.profileEnd = noop; - -//------------------------------------------------------------------------------ -console.count = noop; - -//------------------------------------------------------------------------------ -console.exception = console.log; - -//------------------------------------------------------------------------------ -console.table = function(data, columns) { - console.log("%o", data); -}; - -//------------------------------------------------------------------------------ -// return a new function that calls both functions passed as args -//------------------------------------------------------------------------------ -function wrapperedOrigCall(orgFunc, newFunc) { - return function() { - var args = [].slice.call(arguments); - try { orgFunc.apply(WinConsole, args); } catch (e) {} - try { newFunc.apply(console, args); } catch (e) {} - }; -} - -//------------------------------------------------------------------------------ -// For every function that exists in the original console object, that -// also exists in the new console object, wrap the new console method -// with one that calls both -//------------------------------------------------------------------------------ -for (var key in console) { - if (typeof WinConsole[key] == "function") { - console[key] = wrapperedOrigCall(WinConsole[key], console[key]); - } -} - -}); - -// file: lib/common/plugin/contacts.js -define("cordova/plugin/contacts", function(require, exports, module) { -var exec = require('cordova/exec'), - ContactError = require('cordova/plugin/ContactError'), - utils = require('cordova/utils'), - Contact = require('cordova/plugin/Contact'); - -/** -* Represents a group of Contacts. -* @constructor -*/ -var contacts = { - /** - * Returns an array of Contacts matching the search criteria. - * @param fields that should be searched - * @param successCB success callback - * @param errorCB error callback - * @param {ContactFindOptions} options that can be applied to contact searching - * @return array of Contacts matching search criteria - */ - find:function(fields, successCB, errorCB, options) { - if (!successCB) { - throw new TypeError("You must specify a success callback for the find command."); - } - if (!fields || (utils.isArray(fields) && fields.length === 0)) { - if (typeof errorCB === "function") { - errorCB(new ContactError(ContactError.INVALID_ARGUMENT_ERROR)); - } - } else { - var win = function(result) { - var cs = []; - for (var i = 0, l = result.length; i < l; i++) { - cs.push(contacts.create(result[i])); - } - successCB(cs); - }; - exec(win, errorCB, "Contacts", "search", [fields, options]); - } - }, - - /** - * This function creates a new contact, but it does not persist the contact - * to device storage. To persist the contact to device storage, invoke - * contact.save(). - * @param properties an object whose properties will be examined to create a new Contact - * @returns new Contact object - */ - create:function(properties) { - var i; - var contact = new Contact(); - for (i in properties) { - if (typeof contact[i] !== 'undefined' && properties.hasOwnProperty(i)) { - contact[i] = properties[i]; - } - } - return contact; - } -}; - -module.exports = contacts; - -}); - -// file: lib/common/plugin/device.js -define("cordova/plugin/device", function(require, exports, module) { -var channel = require('cordova/channel'), - utils = require('cordova/utils'), - exec = require('cordova/exec'); - -// Tell cordova channel to wait on the CordovaInfoReady event -channel.waitForInitialization('onCordovaInfoReady'); - -/** - * This represents the mobile device, and provides properties for inspecting the model, version, UUID of the - * phone, etc. - * @constructor - */ -function Device() { - this.available = false; - this.platform = null; - this.version = null; - this.name = null; - this.uuid = null; - this.cordova = null; - - var me = this; - - channel.onCordovaReady.subscribeOnce(function() { - me.getInfo(function(info) { - me.available = true; - me.platform = info.platform; - me.version = info.version; - me.name = info.name; - me.uuid = info.uuid; - me.cordova = info.cordova; - channel.onCordovaInfoReady.fire(); - },function(e) { - me.available = false; - utils.alert("[ERROR] Error initializing Cordova: " + e); - }); - }); -} - -/** - * Get device info - * - * @param {Function} successCallback The function to call when the heading data is available - * @param {Function} errorCallback The function to call when there is an error getting the heading data. (OPTIONAL) - */ -Device.prototype.getInfo = function(successCallback, errorCallback) { - - // successCallback required - if (typeof successCallback !== "function") { - console.log("Device Error: successCallback is not a function"); - return; - } - - // errorCallback optional - if (errorCallback && (typeof errorCallback !== "function")) { - console.log("Device Error: errorCallback is not a function"); - return; - } - - // Get info - exec(successCallback, errorCallback, "Device", "getDeviceInfo", []); -}; - -module.exports = new Device(); - -}); - -// file: lib/common/plugin/echo.js -define("cordova/plugin/echo", function(require, exports, module) { -var exec = require('cordova/exec'); - -/** - * Sends the given message through exec() to the Echo plugink, which sends it back to the successCallback. - * @param successCallback invoked with a FileSystem object - * @param errorCallback invoked if error occurs retrieving file system - * @param message The string to be echoed. - * @param forceAsync Whether to force an async return value (for testing native->js bridge). - */ -module.exports = function(successCallback, errorCallback, message, forceAsync) { - var action = forceAsync ? 'echoAsync' : 'echo'; - exec(successCallback, errorCallback, "Echo", action, [message]); -}; - - -}); - -// file: lib/common/plugin/geolocation.js -define("cordova/plugin/geolocation", function(require, exports, module) { -var utils = require('cordova/utils'), - exec = require('cordova/exec'), - PositionError = require('cordova/plugin/PositionError'), - Position = require('cordova/plugin/Position'); - -var timers = {}; // list of timers in use - -// Returns default params, overrides if provided with values -function parseParameters(options) { - var opt = { - maximumAge: 0, - enableHighAccuracy: false, - timeout: Infinity - }; - - if (options) { - if (options.maximumAge !== undefined && !isNaN(options.maximumAge) && options.maximumAge > 0) { - opt.maximumAge = options.maximumAge; - } - if (options.enableHighAccuracy !== undefined) { - opt.enableHighAccuracy = options.enableHighAccuracy; - } - if (options.timeout !== undefined && !isNaN(options.timeout)) { - if (options.timeout < 0) { - opt.timeout = 0; - } else { - opt.timeout = options.timeout; - } - } - } - - return opt; -} - -// Returns a timeout failure, closed over a specified timeout value and error callback. -function createTimeout(errorCallback, timeout) { - var t = setTimeout(function() { - clearTimeout(t); - t = null; - errorCallback({ - code:PositionError.TIMEOUT, - message:"Position retrieval timed out." - }); - }, timeout); - return t; -} - -var geolocation = { - lastPosition:null, // reference to last known (cached) position returned - /** - * Asynchronously aquires the current position. - * - * @param {Function} successCallback The function to call when the position data is available - * @param {Function} errorCallback The function to call when there is an error getting the heading position. (OPTIONAL) - * @param {PositionOptions} options The options for getting the position data. (OPTIONAL) - */ - getCurrentPosition:function(successCallback, errorCallback, options) { - if (arguments.length === 0) { - throw new Error("getCurrentPosition must be called with at least one argument."); - } - options = parseParameters(options); - - // Timer var that will fire an error callback if no position is retrieved from native - // before the "timeout" param provided expires - var timeoutTimer = null; - - var win = function(p) { - clearTimeout(timeoutTimer); - if (!timeoutTimer) { - // Timeout already happened, or native fired error callback for - // this geo request. - // Don't continue with success callback. - return; - } - var pos = new Position( - { - latitude:p.latitude, - longitude:p.longitude, - altitude:p.altitude, - accuracy:p.accuracy, - heading:p.heading, - velocity:p.velocity, - altitudeAccuracy:p.altitudeAccuracy - }, - (p.timestamp === undefined ? new Date() : ((p.timestamp instanceof Date) ? p.timestamp : new Date(p.timestamp))) - ); - geolocation.lastPosition = pos; - successCallback(pos); - }; - var fail = function(e) { - clearTimeout(timeoutTimer); - timeoutTimer = null; - var err = new PositionError(e.code, e.message); - if (errorCallback) { - errorCallback(err); - } - }; - - // Check our cached position, if its timestamp difference with current time is less than the maximumAge, then just - // fire the success callback with the cached position. - if (geolocation.lastPosition && options.maximumAge && (((new Date()).getTime() - geolocation.lastPosition.timestamp.getTime()) <= options.maximumAge)) { - successCallback(geolocation.lastPosition); - // If the cached position check failed and the timeout was set to 0, error out with a TIMEOUT error object. - } else if (options.timeout === 0) { - fail({ - code:PositionError.TIMEOUT, - message:"timeout value in PositionOptions set to 0 and no cached Position object available, or cached Position object's age exceeds provided PositionOptions' maximumAge parameter." - }); - // Otherwise we have to call into native to retrieve a position. - } else { - if (options.timeout !== Infinity) { - // If the timeout value was not set to Infinity (default), then - // set up a timeout function that will fire the error callback - // if no successful position was retrieved before timeout expired. - timeoutTimer = createTimeout(fail, options.timeout); - } else { - // This is here so the check in the win function doesn't mess stuff up - // may seem weird but this guarantees timeoutTimer is - // always truthy before we call into native - timeoutTimer = true; - } - exec(win, fail, "Geolocation", "getLocation", [options.enableHighAccuracy, options.maximumAge]); - } - return timeoutTimer; - }, - /** - * Asynchronously watches the geolocation for changes to geolocation. When a change occurs, - * the successCallback is called with the new location. - * - * @param {Function} successCallback The function to call each time the location data is available - * @param {Function} errorCallback The function to call when there is an error getting the location data. (OPTIONAL) - * @param {PositionOptions} options The options for getting the location data such as frequency. (OPTIONAL) - * @return String The watch id that must be passed to #clearWatch to stop watching. - */ - watchPosition:function(successCallback, errorCallback, options) { - if (arguments.length === 0) { - throw new Error("watchPosition must be called with at least one argument."); - } - options = parseParameters(options); - - var id = utils.createUUID(); - - // Tell device to get a position ASAP, and also retrieve a reference to the timeout timer generated in getCurrentPosition - timers[id] = geolocation.getCurrentPosition(successCallback, errorCallback, options); - - var fail = function(e) { - clearTimeout(timers[id]); - var err = new PositionError(e.code, e.message); - if (errorCallback) { - errorCallback(err); - } - }; - - var win = function(p) { - clearTimeout(timers[id]); - if (options.timeout !== Infinity) { - timers[id] = createTimeout(fail, options.timeout); - } - var pos = new Position( - { - latitude:p.latitude, - longitude:p.longitude, - altitude:p.altitude, - accuracy:p.accuracy, - heading:p.heading, - velocity:p.velocity, - altitudeAccuracy:p.altitudeAccuracy - }, - (p.timestamp === undefined ? new Date() : ((p.timestamp instanceof Date) ? p.timestamp : new Date(p.timestamp))) - ); - geolocation.lastPosition = pos; - successCallback(pos); - }; - - exec(win, fail, "Geolocation", "addWatch", [id, options.enableHighAccuracy]); - - return id; - }, - /** - * Clears the specified heading watch. - * - * @param {String} id The ID of the watch returned from #watchPosition - */ - clearWatch:function(id) { - if (id && timers[id] !== undefined) { - clearTimeout(timers[id]); - delete timers[id]; - exec(null, null, "Geolocation", "clearWatch", [id]); - } - } -}; - -module.exports = geolocation; - -}); - -// file: lib/common/plugin/logger.js -define("cordova/plugin/logger", function(require, exports, module) { -//------------------------------------------------------------------------------ -// The logger module exports the following properties/functions: -// -// LOG - constant for the level LOG -// ERROR - constant for the level ERROR -// WARN - constant for the level WARN -// INFO - constant for the level INFO -// DEBUG - constant for the level DEBUG -// logLevel() - returns current log level -// logLevel(value) - sets and returns a new log level -// useConsole() - returns whether logger is using console -// useConsole(value) - sets and returns whether logger is using console -// log(message,...) - logs a message at level LOG -// error(message,...) - logs a message at level ERROR -// warn(message,...) - logs a message at level WARN -// info(message,...) - logs a message at level INFO -// debug(message,...) - logs a message at level DEBUG -// logLevel(level,message,...) - logs a message specified level -// -//------------------------------------------------------------------------------ - -var logger = exports; - -var exec = require('cordova/exec'); -var utils = require('cordova/utils'); - -var UseConsole = true; -var Queued = []; -var DeviceReady = false; -var CurrentLevel; - -/** - * Logging levels - */ - -var Levels = [ - "LOG", - "ERROR", - "WARN", - "INFO", - "DEBUG" -]; - -/* - * add the logging levels to the logger object and - * to a separate levelsMap object for testing - */ - -var LevelsMap = {}; -for (var i=0; i<Levels.length; i++) { - var level = Levels[i]; - LevelsMap[level] = i; - logger[level] = level; -} - -CurrentLevel = LevelsMap.WARN; - -/** - * Getter/Setter for the logging level - * - * Returns the current logging level. - * - * When a value is passed, sets the logging level to that value. - * The values should be one of the following constants: - * logger.LOG - * logger.ERROR - * logger.WARN - * logger.INFO - * logger.DEBUG - * - * The value used determines which messages get printed. The logging - * values above are in order, and only messages logged at the logging - * level or above will actually be displayed to the user. E.g., the - * default level is WARN, so only messages logged with LOG, ERROR, or - * WARN will be displayed; INFO and DEBUG messages will be ignored. - */ -logger.level = function (value) { - if (arguments.length) { - if (LevelsMap[value] === null) { - throw new Error("invalid logging level: " + value); - } - CurrentLevel = LevelsMap[value]; - } - - return Levels[CurrentLevel]; -}; - -/** - * Getter/Setter for the useConsole functionality - * - * When useConsole is true, the logger will log via the - * browser 'console' object. Otherwise, it will use the - * native Logger plugin. - */ -logger.useConsole = function (value) { - if (arguments.length) UseConsole = !!value; - - if (UseConsole) { - if (typeof console == "undefined") { - throw new Error("global console object is not defined"); - } - - if (typeof console.log != "function") { - throw new Error("global console object does not have a log function"); - } - - if (typeof console.useLogger == "function") { - if (console.useLogger()) { - throw new Error("console and logger are too intertwingly"); - } - } - } - - return UseConsole; -}; - -/** - * Logs a message at the LOG level. - * - * Parameters passed after message are used applied to - * the message with utils.format() - */ -logger.log = function(message) { logWithArgs("LOG", arguments); }; - -/** - * Logs a message at the ERROR level. - * - * Parameters passed after message are used applied to - * the message with utils.format() - */ -logger.error = function(message) { logWithArgs("ERROR", arguments); }; - -/** - * Logs a message at the WARN level. - * - * Parameters passed after message are used applied to - * the message with utils.format() - */ -logger.warn = function(message) { logWithArgs("WARN", arguments); }; - -/** - * Logs a message at the INFO level. - * - * Parameters passed after message are used applied to - * the message with utils.format() - */ -logger.info = function(message) { logWithArgs("INFO", arguments); }; - -/** - * Logs a message at the DEBUG level. - * - * Parameters passed after message are used applied to - * the message with utils.format() - */ -logger.debug = function(message) { logWithArgs("DEBUG", arguments); }; - -// log at the specified level with args -function logWithArgs(level, args) { - args = [level].concat([].slice.call(args)); - logger.logLevel.apply(logger, args); -} - -/** - * Logs a message at the specified level. - * - * Parameters passed after message are used applied to - * the message with utils.format() - */ -logger.logLevel = function(level, message /* , ... */) { - // format the message with the parameters - var formatArgs = [].slice.call(arguments, 2); - message = utils.vformat(message, formatArgs); - - if (LevelsMap[level] === null) { - throw new Error("invalid logging level: " + level); - } - - if (LevelsMap[level] > CurrentLevel) return; - - // queue the message if not yet at deviceready - if (!DeviceReady && !UseConsole) { - Queued.push([level, message]); - return; - } - - // if not using the console, use the native logger - if (!UseConsole) { - exec(null, null, "Logger", "logLevel", [level, message]); - return; - } - - // make sure console is not using logger - if (console.__usingCordovaLogger) { - throw new Error("console and logger are too intertwingly"); - } - - // log to the console - switch (level) { - case logger.LOG: console.log(message); break; - case logger.ERROR: console.log("ERROR: " + message); break; - case logger.WARN: console.log("WARN: " + message); break; - case logger.INFO: console.log("INFO: " + message); break; - case logger.DEBUG: console.log("DEBUG: " + message); break; - } -}; - -// when deviceready fires, log queued messages -logger.__onDeviceReady = function() { - if (DeviceReady) return; - - DeviceReady = true; - - for (var i=0; i<Queued.length; i++) { - var messageArgs = Queued[i]; - logger.logLevel(messageArgs[0], messageArgs[1]); - } - - Queued = null; -}; - -// add a deviceready event to log queued messages -document.addEventListener("deviceready", logger.__onDeviceReady, false); - -}); - -// file: lib/common/plugin/network.js -define("cordova/plugin/network", function(require, exports, module) { -var exec = require('cordova/exec'), - cordova = require('cordova'), - channel = require('cordova/channel'); - -var NetworkConnection = function () { - this.type = null; - this._firstRun = true; - this._timer = null; - this.timeout = 500; - - var me = this; - - channel.onCordovaReady.subscribeOnce(function() { - me.getInfo(function (info) { - me.type = info; - if (info === "none") { - // set a timer if still offline at the end of timer send the offline event - me._timer = setTimeout(function(){ - cordova.fireDocumentEvent("offline"); - me._timer = null; - }, me.timeout); - } else { - // If there is a current offline event pending clear it - if (me._timer !== null) { - clearTimeout(me._timer); - me._timer = null; - } - cordova.fireDocumentEvent("online"); - } - - // should only fire this once - if (me._firstRun) { - me._firstRun = false; - channel.onCordovaConnectionReady.fire(); - } - }, - function (e) { - // If we can't get the network info we should still tell Cordova - // to fire the deviceready event. - if (me._firstRun) { - me._firstRun = false; - channel.onCordovaConnectionReady.fire(); - } - console.log("Error initializing Network Connection: " + e); - }); - }); -}; - -/** - * Get connection info - * - * @param {Function} successCallback The function to call when the Connection data is available - * @param {Function} errorCallback The function to call when there is an error getting the Connection data. (OPTIONAL) - */ -NetworkConnection.prototype.getInfo = function (successCallback, errorCallback) { - // Get info - exec(successCallback, errorCallback, "NetworkStatus", "getConnectionInfo", []); -}; - -module.exports = new NetworkConnection(); -}); - -// file: lib/common/plugin/notification.js -define("cordova/plugin/notification", function(require, exports, module) { -var exec = require('cordova/exec'); - -/** - * Provides access to notifications on the device. - */ - -module.exports = { - - /** - * Open a native alert dialog, with a customizable title and button text. - * - * @param {String} message Message to print in the body of the alert - * @param {Function} completeCallback The callback that is called when user clicks on a button. - * @param {String} title Title of the alert dialog (default: Alert) - * @param {String} buttonLabel Label of the close button (default: OK) - */ - alert: function(message, completeCallback, title, buttonLabel) { - var _title = (title || "Alert"); - var _buttonLabel = (buttonLabel || "OK"); - exec(completeCallback, null, "Notification", "alert", [message, _title, _buttonLabel]); - }, - - /** - * Open a native confirm dialog, with a customizable title and button text. - * The result that the user selects is returned to the result callback. - * - * @param {String} message Message to print in the body of the alert - * @param {Function} resultCallback The callback that is called when user clicks on a button. - * @param {String} title Title of the alert dialog (default: Confirm) - * @param {String} buttonLabels Comma separated list of the labels of the buttons (default: 'OK,Cancel') - */ - confirm: function(message, resultCallback, title, buttonLabels) { - var _title = (title || "Confirm"); - var _buttonLabels = (buttonLabels || "OK,Cancel"); - exec(resultCallback, null, "Notification", "confirm", [message, _title, _buttonLabels]); - }, - - /** - * Causes the device to vibrate. - * - * @param {Integer} mills The number of milliseconds to vibrate for. - */ - vibrate: function(mills) { - exec(null, null, "Notification", "vibrate", [mills]); - }, - - /** - * Causes the device to beep. - * On Android, the default notification ringtone is played "count" times. - * - * @param {Integer} count The number of beeps. - */ - beep: function(count) { - exec(null, null, "Notification", "beep", [count]); - } -}; -}); - -// file: lib/common/plugin/requestFileSystem.js -define("cordova/plugin/requestFileSystem", function(require, exports, module) { -var FileError = require('cordova/plugin/FileError'), - FileSystem = require('cordova/plugin/FileSystem'), - exec = require('cordova/exec'); - -/** - * Request a file system in which to store application data. - * @param type local file system type - * @param size indicates how much storage space, in bytes, the application expects to need - * @param successCallback invoked with a FileSystem object - * @param errorCallback invoked if error occurs retrieving file system - */ -var requestFileSystem = function(type, size, successCallback, errorCallback) { - var fail = function(code) { - if (typeof errorCallback === 'function') { - errorCallback(new FileError(code)); - } - }; - - if (type < 0 || type > 3) { - fail(FileError.SYNTAX_ERR); - } else { - // if successful, return a FileSystem object - var success = function(file_system) { - if (file_system) { - if (typeof successCallback === 'function') { - // grab the name and root from the file system object - var result = new FileSystem(file_system.name, file_system.root); - successCallback(result); - } - } - else { - // no FileSystem object returned - fail(FileError.NOT_FOUND_ERR); - } - }; - exec(success, fail, "File", "requestFileSystem", [type, size]); - } -}; - -module.exports = requestFileSystem; -}); - -// file: lib/common/plugin/resolveLocalFileSystemURI.js -define("cordova/plugin/resolveLocalFileSystemURI", function(require, exports, module) { -var DirectoryEntry = require('cordova/plugin/DirectoryEntry'), - FileEntry = require('cordova/plugin/FileEntry'), - FileError = require('cordova/plugin/FileError'), - exec = require('cordova/exec'); - -/** - * Look up file system Entry referred to by local URI. - * @param {DOMString} uri URI referring to a local file or directory - * @param successCallback invoked with Entry object corresponding to URI - * @param errorCallback invoked if error occurs retrieving file system entry - */ -module.exports = function(uri, successCallback, errorCallback) { - // error callback - var fail = function(error) { - if (typeof errorCallback === 'function') { - errorCallback(new FileError(error)); - } - }; - // sanity check for 'not:valid:filename' - if(!uri || uri.split(":").length > 2) { - setTimeout( function() { - fail(FileError.ENCODING_ERR); - },0); - return; - } - // if successful, return either a file or directory entry - var success = function(entry) { - var result; - if (entry) { - if (typeof successCallback === 'function') { - // create appropriate Entry object - result = (entry.isDirectory) ? new DirectoryEntry(entry.name, entry.fullPath) : new FileEntry(entry.name, entry.fullPath); - try { - successCallback(result); - } - catch (e) { - console.log('Error invoking callback: ' + e); - } - } - } - else { - // no Entry object returned - fail(FileError.NOT_FOUND_ERR); - } - }; - - exec(success, fail, "File", "resolveLocalFileSystemURI", [uri]); -}; - -}); - -// file: lib/common/plugin/splashscreen.js -define("cordova/plugin/splashscreen", function(require, exports, module) { -var exec = require('cordova/exec'); - -var splashscreen = { - show:function() { - exec(null, null, "SplashScreen", "show", []); - }, - hide:function() { - exec(null, null, "SplashScreen", "hide", []); - } -}; - -module.exports = splashscreen; -}); - -// file: lib/common/utils.js -define("cordova/utils", function(require, exports, module) { -var utils = exports; - -/** - * Returns an indication of whether the argument is an array or not - */ -utils.isArray = function(a) { - return Object.prototype.toString.call(a) == '[object Array]'; -}; - -/** - * Returns an indication of whether the argument is a Date or not - */ -utils.isDate = function(d) { - return Object.prototype.toString.call(d) == '[object Date]'; -}; - -/** - * Does a deep clone of the object. - */ -utils.clone = function(obj) { - if(!obj || typeof obj == 'function' || utils.isDate(obj) || typeof obj != 'object') { - return obj; - } - - var retVal, i; - - if(utils.isArray(obj)){ - retVal = []; - for(i = 0; i < obj.length; ++i){ - retVal.push(utils.clone(obj[i])); - } - return retVal; - } - - retVal = {}; - for(i in obj){ - if(!(i in retVal) || retVal[i] != obj[i]) { - retVal[i] = utils.clone(obj[i]); - } - } - return retVal; -}; - -/** - * Returns a wrappered version of the function - */ -utils.close = function(context, func, params) { - if (typeof params == 'undefined') { - return function() { - return func.apply(context, arguments); - }; - } else { - return function() { - return func.apply(context, params); - }; - } -}; - -/** - * Create a UUID - */ -utils.createUUID = function() { - return UUIDcreatePart(4) + '-' + - UUIDcreatePart(2) + '-' + - UUIDcreatePart(2) + '-' + - UUIDcreatePart(2) + '-' + - UUIDcreatePart(6); -}; - -/** - * Extends a child object from a parent object using classical inheritance - * pattern. - */ -utils.extend = (function() { - // proxy used to establish prototype chain - var F = function() {}; - // extend Child from Parent - return function(Child, Parent) { - F.prototype = Parent.prototype; - Child.prototype = new F(); - Child.__super__ = Parent.prototype; - Child.prototype.constructor = Child; - }; -}()); - -/** - * Alerts a message in any available way: alert or console.log. - */ -utils.alert = function(msg) { - if (alert) { - alert(msg); - } else if (console && console.log) { - console.log(msg); - } -}; - -/** - * Formats a string and arguments following it ala sprintf() - * - * see utils.vformat() for more information - */ -utils.format = function(formatString /* ,... */) { - var args = [].slice.call(arguments, 1); - return utils.vformat(formatString, args); -}; - -/** - * Formats a string and arguments following it ala vsprintf() - * - * format chars: - * %j - format arg as JSON - * %o - format arg as JSON - * %c - format arg as '' - * %% - replace with '%' - * any other char following % will format it's - * arg via toString(). - * - * for rationale, see FireBug's Console API: - * http://getfirebug.com/wiki/index.php/Console_API - */ -utils.vformat = function(formatString, args) { - if (formatString === null || formatString === undefined) return ""; - if (arguments.length == 1) return formatString.toString(); - if (typeof formatString != "string") return formatString.toString(); - - var pattern = /(.*?)%(.)(.*)/; - var rest = formatString; - var result = []; - - while (args.length) { - var arg = args.shift(); - var match = pattern.exec(rest); - - if (!match) break; - - rest = match[3]; - - result.push(match[1]); - - if (match[2] == '%') { - result.push('%'); - args.unshift(arg); - continue; - } - - result.push(formatted(arg, match[2])); - } - - result.push(rest); - - return result.join(''); -}; - -//------------------------------------------------------------------------------ -function UUIDcreatePart(length) { - var uuidpart = ""; - for (var i=0; i<length; i++) { - var uuidchar = parseInt((Math.random() * 256), 10).toString(16); - if (uuidchar.length == 1) { - uuidchar = "0" + uuidchar; - } - uuidpart += uuidchar; - } - return uuidpart; -} - -//------------------------------------------------------------------------------ -function formatted(object, formatChar) { - - try { - switch(formatChar) { - case 'j': - case 'o': return JSON.stringify(object); - case 'c': return ''; - } - } - catch (e) { - return "error JSON.stringify()ing argument: " + e; - } - - if ((object === null) || (object === undefined)) { - return Object.prototype.toString.call(object); - } - - return object.toString(); -} - -}); - - -window.cordova = require('cordova'); - -// file: lib/scripts/bootstrap.js -(function (context) { - var channel = require("cordova/channel"), - _self = { - boot: function () { - /** - * Create all cordova objects once page has fully loaded and native side is ready. - */ - channel.join(function() { - var builder = require('cordova/builder'), - base = require('cordova/common'), - platform = require('cordova/platform'); - - // Drop the common globals into the window object, but be nice and don't overwrite anything. - builder.build(base.objects).intoButDontClobber(window); - - // Drop the platform-specific globals into the window object - // and clobber any existing object. - builder.build(platform.objects).intoAndClobber(window); - - // Merge the platform-specific overrides/enhancements into - // the window object. - if (typeof platform.merges !== 'undefined') { - builder.build(platform.merges).intoAndMerge(window); - } - - // Call the platform-specific initialization - platform.initialize(); - - // Fire event to notify that all objects are created - channel.onCordovaReady.fire(); - - // Fire onDeviceReady event once all constructors have run and - // cordova info has been received from native side. - channel.join(function() { - require('cordova').fireDocumentEvent('deviceready'); - }, channel.deviceReadyChannelsArray); - - }, [ channel.onDOMContentLoaded, channel.onNativeReady ]); - } - }; - - // boot up once native side is ready - channel.onNativeReady.subscribeOnce(_self.boot); - - // _nativeReady is global variable that the native side can set - // to signify that the native code is ready. It is a global since - // it may be called before any cordova JS is ready. - if (window._nativeReady) { - channel.onNativeReady.fire(); - } - -}(window)); - - -})();var PhoneGap = cordova; diff --git a/phonegap/www/cordova-independent.js b/phonegap/www/cordova-independent.js deleted file mode 100644 index f56a8f08f..000000000 --- a/phonegap/www/cordova-independent.js +++ /dev/null @@ -1,12 +0,0 @@ -(function () { - var scriptElement = document.createElement("script"); - scriptElement.type = "text/javascript"; - if (navigator.userAgent.match(/(iPhone|iPod|iPad)/)) { - scriptElement.src = 'cordova-ios-2.1.0.js'; - } else if (navigator.userAgent.match(/Android/)) { - scriptElement.src = 'cordova-android-2.1.0.js'; - } else { - alert("Unknown platform - userAgent is: " + navigator.userAgent); - } - $('head').prepend(scriptElement); -})(); diff --git a/phonegap/www/cordova-ios-2.1.0.js b/phonegap/www/cordova-ios-2.1.0.js deleted file mode 100755 index db81edf6c..000000000 --- a/phonegap/www/cordova-ios-2.1.0.js +++ /dev/null @@ -1,5305 +0,0 @@ -// commit 143f5221a6251c9cbccdedc57005c61551b97f12 - -// File generated at :: Wed Sep 12 2012 15:26:58 GMT-0700 (PDT) - -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. -*/ - -;(function() { - -// file: lib/scripts/require.js -var require, - define; - -(function () { - var modules = {}; - - function build(module) { - var factory = module.factory; - module.exports = {}; - delete module.factory; - factory(require, module.exports, module); - return module.exports; - } - - require = function (id) { - if (!modules[id]) { - throw "module " + id + " not found"; - } - return modules[id].factory ? build(modules[id]) : modules[id].exports; - }; - - define = function (id, factory) { - if (modules[id]) { - throw "module " + id + " already defined"; - } - - modules[id] = { - id: id, - factory: factory - }; - }; - - define.remove = function (id) { - delete modules[id]; - }; - -})(); - -//Export for use in node -if (typeof module === "object" && typeof require === "function") { - module.exports.require = require; - module.exports.define = define; -} -// file: lib/cordova.js -define("cordova", function(require, exports, module) { -var channel = require('cordova/channel'); - -/** - * Listen for DOMContentLoaded and notify our channel subscribers. - */ -document.addEventListener('DOMContentLoaded', function() { - channel.onDOMContentLoaded.fire(); -}, false); -if (document.readyState == 'complete' || document.readyState == 'interactive') { - channel.onDOMContentLoaded.fire(); -} - -/** - * Intercept calls to addEventListener + removeEventListener and handle deviceready, - * resume, and pause events. - */ -var m_document_addEventListener = document.addEventListener; -var m_document_removeEventListener = document.removeEventListener; -var m_window_addEventListener = window.addEventListener; -var m_window_removeEventListener = window.removeEventListener; - -/** - * Houses custom event handlers to intercept on document + window event listeners. - */ -var documentEventHandlers = {}, - windowEventHandlers = {}; - -document.addEventListener = function(evt, handler, capture) { - var e = evt.toLowerCase(); - if (typeof documentEventHandlers[e] != 'undefined') { - if (evt === 'deviceready') { - documentEventHandlers[e].subscribeOnce(handler); - } else { - documentEventHandlers[e].subscribe(handler); - } - } else { - m_document_addEventListener.call(document, evt, handler, capture); - } -}; - -window.addEventListener = function(evt, handler, capture) { - var e = evt.toLowerCase(); - if (typeof windowEventHandlers[e] != 'undefined') { - windowEventHandlers[e].subscribe(handler); - } else { - m_window_addEventListener.call(window, evt, handler, capture); - } -}; - -document.removeEventListener = function(evt, handler, capture) { - var e = evt.toLowerCase(); - // If unsubcribing from an event that is handled by a plugin - if (typeof documentEventHandlers[e] != "undefined") { - documentEventHandlers[e].unsubscribe(handler); - } else { - m_document_removeEventListener.call(document, evt, handler, capture); - } -}; - -window.removeEventListener = function(evt, handler, capture) { - var e = evt.toLowerCase(); - // If unsubcribing from an event that is handled by a plugin - if (typeof windowEventHandlers[e] != "undefined") { - windowEventHandlers[e].unsubscribe(handler); - } else { - m_window_removeEventListener.call(window, evt, handler, capture); - } -}; - -function createEvent(type, data) { - var event = document.createEvent('Events'); - event.initEvent(type, false, false); - if (data) { - for (var i in data) { - if (data.hasOwnProperty(i)) { - event[i] = data[i]; - } - } - } - return event; -} - -if(typeof window.console === "undefined") { - window.console = { - log:function(){} - }; -} - -var cordova = { - define:define, - require:require, - /** - * Methods to add/remove your own addEventListener hijacking on document + window. - */ - addWindowEventHandler:function(event, opts) { - return (windowEventHandlers[event] = channel.create(event, opts)); - }, - addDocumentEventHandler:function(event, opts) { - return (documentEventHandlers[event] = channel.create(event, opts)); - }, - removeWindowEventHandler:function(event) { - delete windowEventHandlers[event]; - }, - removeDocumentEventHandler:function(event) { - delete documentEventHandlers[event]; - }, - /** - * Retreive original event handlers that were replaced by Cordova - * - * @return object - */ - getOriginalHandlers: function() { - return {'document': {'addEventListener': m_document_addEventListener, 'removeEventListener': m_document_removeEventListener}, - 'window': {'addEventListener': m_window_addEventListener, 'removeEventListener': m_window_removeEventListener}}; - }, - /** - * Method to fire event from native code - * bNoDetach is required for events which cause an exception which needs to be caught in native code - */ - fireDocumentEvent: function(type, data, bNoDetach) { - var evt = createEvent(type, data); - if (typeof documentEventHandlers[type] != 'undefined') { - if( bNoDetach ) { - documentEventHandlers[type].fire(evt); - } - else { - setTimeout(function() { - documentEventHandlers[type].fire(evt); - }, 0); - } - } else { - document.dispatchEvent(evt); - } - }, - fireWindowEvent: function(type, data) { - var evt = createEvent(type,data); - if (typeof windowEventHandlers[type] != 'undefined') { - setTimeout(function() { - windowEventHandlers[type].fire(evt); - }, 0); - } else { - window.dispatchEvent(evt); - } - }, - - // TODO: iOS only - // This queue holds the currently executing command and all pending - // commands executed with cordova.exec(). - commandQueue:[], - // Indicates if we're currently in the middle of flushing the command - // queue on the native side. - commandQueueFlushing:false, - // END TODO - /** - * Plugin callback mechanism. - */ - callbackId: 0, - callbacks: {}, - callbackStatus: { - NO_RESULT: 0, - OK: 1, - CLASS_NOT_FOUND_EXCEPTION: 2, - ILLEGAL_ACCESS_EXCEPTION: 3, - INSTANTIATION_EXCEPTION: 4, - MALFORMED_URL_EXCEPTION: 5, - IO_EXCEPTION: 6, - INVALID_ACTION: 7, - JSON_EXCEPTION: 8, - ERROR: 9 - }, - - /** - * Called by native code when returning successful result from an action. - * - * @param callbackId - * @param args - */ - callbackSuccess: function(callbackId, args) { - if (cordova.callbacks[callbackId]) { - - // If result is to be sent to callback - if (args.status == cordova.callbackStatus.OK) { - try { - if (cordova.callbacks[callbackId].success) { - cordova.callbacks[callbackId].success(args.message); - } - } - catch (e) { - console.log("Error in success callback: "+callbackId+" = "+e); - } - } - - // Clear callback if not expecting any more results - if (!args.keepCallback) { - delete cordova.callbacks[callbackId]; - } - } - }, - - /** - * Called by native code when returning error result from an action. - * - * @param callbackId - * @param args - */ - callbackError: function(callbackId, args) { - if (cordova.callbacks[callbackId]) { - try { - if (cordova.callbacks[callbackId].fail) { - cordova.callbacks[callbackId].fail(args.message); - } - } - catch (e) { - console.log("Error in error callback: "+callbackId+" = "+e); - } - - // Clear callback if not expecting any more results - if (!args.keepCallback) { - delete cordova.callbacks[callbackId]; - } - } - }, - addConstructor: function(func) { - channel.onCordovaReady.subscribeOnce(function() { - try { - func(); - } catch(e) { - console.log("Failed to run constructor: " + e); - } - }); - } -}; - -// Register pause, resume and deviceready channels as events on document. -channel.onPause = cordova.addDocumentEventHandler('pause'); -channel.onResume = cordova.addDocumentEventHandler('resume'); -channel.onDeviceReady = cordova.addDocumentEventHandler('deviceready'); - -module.exports = cordova; - -}); - -// file: lib/common/builder.js -define("cordova/builder", function(require, exports, module) { -var utils = require('cordova/utils'); - -function each(objects, func, context) { - for (var prop in objects) { - if (objects.hasOwnProperty(prop)) { - func.apply(context, [objects[prop], prop]); - } - } -} - -function include(parent, objects, clobber, merge) { - each(objects, function (obj, key) { - try { - var result = obj.path ? require(obj.path) : {}; - - if (clobber) { - // Clobber if it doesn't exist. - if (typeof parent[key] === 'undefined') { - parent[key] = result; - } else if (typeof obj.path !== 'undefined') { - // If merging, merge properties onto parent, otherwise, clobber. - if (merge) { - recursiveMerge(parent[key], result); - } else { - parent[key] = result; - } - } - result = parent[key]; - } else { - // Overwrite if not currently defined. - if (typeof parent[key] == 'undefined') { - parent[key] = result; - } else if (merge && typeof obj.path !== 'undefined') { - // If merging, merge parent onto result - recursiveMerge(result, parent[key]); - parent[key] = result; - } else { - // Set result to what already exists, so we can build children into it if they exist. - result = parent[key]; - } - } - - if (obj.children) { - include(result, obj.children, clobber, merge); - } - } catch(e) { - utils.alert('Exception building cordova JS globals: ' + e + ' for key "' + key + '"'); - } - }); -} - -/** - * Merge properties from one object onto another recursively. Properties from - * the src object will overwrite existing target property. - * - * @param target Object to merge properties into. - * @param src Object to merge properties from. - */ -function recursiveMerge(target, src) { - for (var prop in src) { - if (src.hasOwnProperty(prop)) { - if (typeof target.prototype !== 'undefined' && target.prototype.constructor === target) { - // If the target object is a constructor override off prototype. - target.prototype[prop] = src[prop]; - } else { - target[prop] = typeof src[prop] === 'object' ? recursiveMerge( - target[prop], src[prop]) : src[prop]; - } - } - } - return target; -} - -module.exports = { - build: function (objects) { - return { - intoButDontClobber: function (target) { - include(target, objects, false, false); - }, - intoAndClobber: function(target) { - include(target, objects, true, false); - }, - intoAndMerge: function(target) { - include(target, objects, true, true); - } - }; - } -}; - -}); - -// file: lib/common/channel.js -define("cordova/channel", function(require, exports, module) { -var utils = require('cordova/utils'), - nextGuid = 1; - -/** - * Custom pub-sub "channel" that can have functions subscribed to it - * This object is used to define and control firing of events for - * cordova initialization. - * - * The order of events during page load and Cordova startup is as follows: - * - * onDOMContentLoaded Internal event that is received when the web page is loaded and parsed. - * onNativeReady Internal event that indicates the Cordova native side is ready. - * onCordovaReady Internal event fired when all Cordova JavaScript objects have been created. - * onCordovaInfoReady Internal event fired when device properties are available. - * onCordovaConnectionReady Internal event fired when the connection property has been set. - * onDeviceReady User event fired to indicate that Cordova is ready - * onResume User event fired to indicate a start/resume lifecycle event - * onPause User event fired to indicate a pause lifecycle event - * onDestroy Internal event fired when app is being destroyed (User should use window.onunload event, not this one). - * - * The only Cordova events that user code should register for are: - * deviceready Cordova native code is initialized and Cordova APIs can be called from JavaScript - * pause App has moved to background - * resume App has returned to foreground - * - * Listeners can be registered as: - * document.addEventListener("deviceready", myDeviceReadyListener, false); - * document.addEventListener("resume", myResumeListener, false); - * document.addEventListener("pause", myPauseListener, false); - * - * The DOM lifecycle events should be used for saving and restoring state - * window.onload - * window.onunload - * - */ - -/** - * Channel - * @constructor - * @param type String the channel name - * @param opts Object options to pass into the channel, currently - * supports: - * onSubscribe: callback that fires when - * something subscribes to the Channel. Sets - * context to the Channel. - * onUnsubscribe: callback that fires when - * something unsubscribes to the Channel. Sets - * context to the Channel. - */ -var Channel = function(type, opts) { - this.type = type; - this.handlers = {}; - this.numHandlers = 0; - this.fired = false; - this.enabled = true; - this.events = { - onSubscribe:null, - onUnsubscribe:null - }; - if (opts) { - if (opts.onSubscribe) this.events.onSubscribe = opts.onSubscribe; - if (opts.onUnsubscribe) this.events.onUnsubscribe = opts.onUnsubscribe; - } -}, - channel = { - /** - * Calls the provided function only after all of the channels specified - * have been fired. - */ - join: function (h, c) { - var i = c.length; - var len = i; - var f = function() { - if (!(--i)) h(); - }; - for (var j=0; j<len; j++) { - !c[j].fired?c[j].subscribeOnce(f):i--; - } - if (!i) h(); - }, - create: function (type, opts) { - channel[type] = new Channel(type, opts); - return channel[type]; - }, - - /** - * cordova Channels that must fire before "deviceready" is fired. - */ - deviceReadyChannelsArray: [], - deviceReadyChannelsMap: {}, - - /** - * Indicate that a feature needs to be initialized before it is ready to be used. - * This holds up Cordova's "deviceready" event until the feature has been initialized - * and Cordova.initComplete(feature) is called. - * - * @param feature {String} The unique feature name - */ - waitForInitialization: function(feature) { - if (feature) { - var c = null; - if (this[feature]) { - c = this[feature]; - } - else { - c = this.create(feature); - } - this.deviceReadyChannelsMap[feature] = c; - this.deviceReadyChannelsArray.push(c); - } - }, - - /** - * Indicate that initialization code has completed and the feature is ready to be used. - * - * @param feature {String} The unique feature name - */ - initializationComplete: function(feature) { - var c = this.deviceReadyChannelsMap[feature]; - if (c) { - c.fire(); - } - } - }; - -function forceFunction(f) { - if (f === null || f === undefined || typeof f != 'function') throw "Function required as first argument!"; -} - -/** - * Subscribes the given function to the channel. Any time that - * Channel.fire is called so too will the function. - * Optionally specify an execution context for the function - * and a guid that can be used to stop subscribing to the channel. - * Returns the guid. - */ -Channel.prototype.subscribe = function(f, c, g) { - // need a function to call - forceFunction(f); - - var func = f; - if (typeof c == "object") { func = utils.close(c, f); } - - g = g || func.observer_guid || f.observer_guid; - if (!g) { - // first time any channel has seen this subscriber - g = nextGuid++; - } - func.observer_guid = g; - f.observer_guid = g; - - // Don't add the same handler more than once. - if (!this.handlers[g]) { - this.handlers[g] = func; - this.numHandlers++; - if (this.events.onSubscribe) this.events.onSubscribe.call(this); - if (this.fired) func.apply(this, this.fireArgs); - } - return g; -}; - -/** - * Like subscribe but the function is only called once and then it - * auto-unsubscribes itself. - */ -Channel.prototype.subscribeOnce = function(f, c) { - // need a function to call - forceFunction(f); - - var g = null; - var _this = this; - if (this.fired) { - f.apply(c || null, this.fireArgs); - } else { - g = this.subscribe(function() { - _this.unsubscribe(g); - f.apply(c || null, arguments); - }); - f.observer_guid = g; - } - return g; -}; - -/** - * Unsubscribes the function with the given guid from the channel. - */ -Channel.prototype.unsubscribe = function(g) { - // need a function to unsubscribe - if (g === null || g === undefined) { throw "You must pass _something_ into Channel.unsubscribe"; } - - if (typeof g == 'function') { g = g.observer_guid; } - var handler = this.handlers[g]; - if (handler) { - if (handler.observer_guid) handler.observer_guid=null; - delete this.handlers[g]; - this.numHandlers--; - if (this.events.onUnsubscribe) this.events.onUnsubscribe.call(this); - } -}; - -/** - * Calls all functions subscribed to this channel. - */ -Channel.prototype.fire = function(e) { - if (this.enabled) { - var fail = false; - this.fired = true; - this.fireArgs = arguments; - // Copy the values first so that it is safe to modify it from within - // callbacks. - var toCall = []; - for (var item in this.handlers) { - toCall.push(this.handlers[item]); - } - for (var i = 0; i < toCall.length; ++i) { - var rv = (toCall[i].apply(this, arguments)===false); - fail = fail || rv; - } - return !fail; - } - return true; -}; - -// defining them here so they are ready super fast! -// DOM event that is received when the web page is loaded and parsed. -channel.create('onDOMContentLoaded'); - -// Event to indicate the Cordova native side is ready. -channel.create('onNativeReady'); - -// Event to indicate that all Cordova JavaScript objects have been created -// and it's time to run plugin constructors. -channel.create('onCordovaReady'); - -// Event to indicate that device properties are available -channel.create('onCordovaInfoReady'); - -// Event to indicate that the connection property has been set. -channel.create('onCordovaConnectionReady'); - -// Event to indicate that Cordova is ready -channel.create('onDeviceReady'); - -// Event to indicate a resume lifecycle event -channel.create('onResume'); - -// Event to indicate a pause lifecycle event -channel.create('onPause'); - -// Event to indicate a destroy lifecycle event -channel.create('onDestroy'); - -// Channels that must fire before "deviceready" is fired. -channel.waitForInitialization('onCordovaReady'); -channel.waitForInitialization('onCordovaConnectionReady'); - -module.exports = channel; - -}); - -// file: lib/common/common.js -define("cordova/common", function(require, exports, module) { -module.exports = { - objects: { - cordova: { - path: 'cordova', - children: { - exec: { - path: 'cordova/exec' - }, - logger: { - path: 'cordova/plugin/logger' - } - } - }, - Cordova: { - children: { - exec: { - path: 'cordova/exec' - } - } - }, - navigator: { - children: { - notification: { - path: 'cordova/plugin/notification' - }, - accelerometer: { - path: 'cordova/plugin/accelerometer' - }, - battery: { - path: 'cordova/plugin/battery' - }, - camera:{ - path: 'cordova/plugin/Camera' - }, - compass:{ - path: 'cordova/plugin/compass' - }, - contacts: { - path: 'cordova/plugin/contacts' - }, - device:{ - children:{ - capture: { - path: 'cordova/plugin/capture' - } - } - }, - geolocation: { - path: 'cordova/plugin/geolocation' - }, - network: { - children: { - connection: { - path: 'cordova/plugin/network' - } - } - }, - splashscreen: { - path: 'cordova/plugin/splashscreen' - } - } - }, - Acceleration: { - path: 'cordova/plugin/Acceleration' - }, - Camera:{ - path: 'cordova/plugin/CameraConstants' - }, - CameraPopoverOptions: { - path: 'cordova/plugin/CameraPopoverOptions' - }, - CaptureError: { - path: 'cordova/plugin/CaptureError' - }, - CaptureAudioOptions:{ - path: 'cordova/plugin/CaptureAudioOptions' - }, - CaptureImageOptions: { - path: 'cordova/plugin/CaptureImageOptions' - }, - CaptureVideoOptions: { - path: 'cordova/plugin/CaptureVideoOptions' - }, - CompassHeading:{ - path: 'cordova/plugin/CompassHeading' - }, - CompassError:{ - path: 'cordova/plugin/CompassError' - }, - ConfigurationData: { - path: 'cordova/plugin/ConfigurationData' - }, - Connection: { - path: 'cordova/plugin/Connection' - }, - Contact: { - path: 'cordova/plugin/Contact' - }, - ContactAddress: { - path: 'cordova/plugin/ContactAddress' - }, - ContactError: { - path: 'cordova/plugin/ContactError' - }, - ContactField: { - path: 'cordova/plugin/ContactField' - }, - ContactFindOptions: { - path: 'cordova/plugin/ContactFindOptions' - }, - ContactName: { - path: 'cordova/plugin/ContactName' - }, - ContactOrganization: { - path: 'cordova/plugin/ContactOrganization' - }, - Coordinates: { - path: 'cordova/plugin/Coordinates' - }, - device: { - path: 'cordova/plugin/device' - }, - DirectoryEntry: { - path: 'cordova/plugin/DirectoryEntry' - }, - DirectoryReader: { - path: 'cordova/plugin/DirectoryReader' - }, - Entry: { - path: 'cordova/plugin/Entry' - }, - File: { - path: 'cordova/plugin/File' - }, - FileEntry: { - path: 'cordova/plugin/FileEntry' - }, - FileError: { - path: 'cordova/plugin/FileError' - }, - FileReader: { - path: 'cordova/plugin/FileReader' - }, - FileSystem: { - path: 'cordova/plugin/FileSystem' - }, - FileTransfer: { - path: 'cordova/plugin/FileTransfer' - }, - FileTransferError: { - path: 'cordova/plugin/FileTransferError' - }, - FileUploadOptions: { - path: 'cordova/plugin/FileUploadOptions' - }, - FileUploadResult: { - path: 'cordova/plugin/FileUploadResult' - }, - FileWriter: { - path: 'cordova/plugin/FileWriter' - }, - Flags: { - path: 'cordova/plugin/Flags' - }, - LocalFileSystem: { - path: 'cordova/plugin/LocalFileSystem' - }, - Media: { - path: 'cordova/plugin/Media' - }, - MediaError: { - path: 'cordova/plugin/MediaError' - }, - MediaFile: { - path: 'cordova/plugin/MediaFile' - }, - MediaFileData:{ - path: 'cordova/plugin/MediaFileData' - }, - Metadata:{ - path: 'cordova/plugin/Metadata' - }, - Position: { - path: 'cordova/plugin/Position' - }, - PositionError: { - path: 'cordova/plugin/PositionError' - }, - ProgressEvent: { - path: 'cordova/plugin/ProgressEvent' - }, - requestFileSystem:{ - path: 'cordova/plugin/requestFileSystem' - }, - resolveLocalFileSystemURI:{ - path: 'cordova/plugin/resolveLocalFileSystemURI' - } - } -}; - -}); - -// file: lib/ios/exec.js -define("cordova/exec", function(require, exports, module) { - /** - * Creates a gap bridge iframe used to notify the native code about queued - * commands. - * - * @private - */ -var cordova = require('cordova'), - channel = require('cordova/channel'), - nativecomm = require('cordova/plugin/ios/nativecomm'), - utils = require('cordova/utils'), - jsToNativeModes = { - IFRAME_NAV: 0, - XHR_NO_PAYLOAD: 1, - XHR_WITH_PAYLOAD: 2, - XHR_OPTIONAL_PAYLOAD: 3 - }, - // XHR mode does not work on iOS 4.2, so default to IFRAME_NAV for such devices. - // XHR mode's main advantage is working around a bug in -webkit-scroll, which - // doesn't exist in 4.X devices anyways. - bridgeMode = navigator.userAgent.indexOf(' 4_') == -1 ? jsToNativeModes.XHR_NO_PAYLOAD : jsToNativeModes.IFRAME_NAV, - execIframe, - execXhr; - -function createExecIframe() { - var iframe = document.createElement("iframe"); - iframe.style.display = 'none'; - document.body.appendChild(iframe); - return iframe; -} - -function shouldBundleCommandJson() { - if (bridgeMode == 2) { - return true; - } - if (bridgeMode == 3) { - var payloadLength = 0; - for (var i = 0; i < cordova.commandQueue.length; ++i) { - payloadLength += cordova.commandQueue[i].length; - } - // The value here was determined using the benchmark within CordovaLibApp on an iPad 3. - return payloadLength < 4500; - } - return false; -} - -function iOSExec() { - if (!channel.onCordovaReady.fired) { - utils.alert("ERROR: Attempting to call cordova.exec()" + - " before 'deviceready'. Ignoring."); - return; - } - - var successCallback, failCallback, service, action, actionArgs, splitCommand; - var callbackId = null; - if (typeof arguments[0] !== "string") { - // FORMAT ONE - successCallback = arguments[0]; - failCallback = arguments[1]; - service = arguments[2]; - action = arguments[3]; - actionArgs = arguments[4]; - - // Since we need to maintain backwards compatibility, we have to pass - // an invalid callbackId even if no callback was provided since plugins - // will be expecting it. The Cordova.exec() implementation allocates - // an invalid callbackId and passes it even if no callbacks were given. - callbackId = 'INVALID'; - } else { - // FORMAT TWO - splitCommand = arguments[0].split("."); - action = splitCommand.pop(); - service = splitCommand.join("."); - actionArgs = Array.prototype.splice.call(arguments, 1); - } - - // Register the callbacks and add the callbackId to the positional - // arguments if given. - if (successCallback || failCallback) { - callbackId = service + cordova.callbackId++; - cordova.callbacks[callbackId] = - {success:successCallback, fail:failCallback}; - } - - var command = [callbackId, service, action, actionArgs]; - - // Stringify and queue the command. We stringify to command now to - // effectively clone the command arguments in case they are mutated before - // the command is executed. - cordova.commandQueue.push(JSON.stringify(command)); - - // If the queue length is 1, then that means it was empty before we queued - // the given command, so let the native side know that we have some - // commands to execute, unless the queue is currently being flushed, in - // which case the command will be picked up without notification. - if (cordova.commandQueue.length == 1 && !cordova.commandQueueFlushing) { - if (bridgeMode) { - execXhr = execXhr || new XMLHttpRequest(); - // Changeing this to a GET will make the XHR reach the URIProtocol on 4.2. - // For some reason it still doesn't work though... - execXhr.open('HEAD', "file:///!gap_exec", true); - execXhr.setRequestHeader('vc', cordova.iOSVCAddr); - if (shouldBundleCommandJson()) { - execXhr.setRequestHeader('cmds', nativecomm()); - } - execXhr.send(null); - } else { - execIframe = execIframe || createExecIframe(); - execIframe.src = "gap://ready"; - } - } -} - -iOSExec.jsToNativeModes = jsToNativeModes; - -iOSExec.setJsToNativeBridgeMode = function(mode) { - // Remove the iFrame since it may be no longer required, and its existence - // can trigger browser bugs. - // https://issues.apache.org/jira/browse/CB-593 - if (execIframe) { - execIframe.parentNode.removeChild(execIframe); - execIframe = null; - } - bridgeMode = mode; -}; - -module.exports = iOSExec; - -}); - -// file: lib/ios/platform.js -define("cordova/platform", function(require, exports, module) { -module.exports = { - id: "ios", - initialize:function() { - // iOS doesn't allow reassigning / overriding navigator.geolocation object. - // So clobber its methods here instead :) - var geo = require('cordova/plugin/geolocation'); - - navigator.geolocation.getCurrentPosition = geo.getCurrentPosition; - navigator.geolocation.watchPosition = geo.watchPosition; - navigator.geolocation.clearWatch = geo.clearWatch; - }, - objects: { - File: { // exists natively, override - path: "cordova/plugin/File" - }, - FileReader: { // exists natively, override - path: "cordova/plugin/FileReader" - }, - MediaError: { // exists natively, override - path: "cordova/plugin/MediaError" - }, - console: { - path: 'cordova/plugin/ios/console' - } - }, - merges:{ - Contact:{ - path: "cordova/plugin/ios/Contact" - }, - Entry:{ - path: "cordova/plugin/ios/Entry" - }, - FileReader:{ - path: "cordova/plugin/ios/FileReader" - }, - navigator:{ - children:{ - notification:{ - path:"cordova/plugin/ios/notification" - }, - contacts:{ - path:"cordova/plugin/ios/contacts" - } - } - } - } -}; - -// use the native logger -var logger = require("cordova/plugin/logger"); -logger.useConsole(false); - -}); - -// file: lib/common/plugin/Acceleration.js -define("cordova/plugin/Acceleration", function(require, exports, module) { -var Acceleration = function(x, y, z, timestamp) { - this.x = x; - this.y = y; - this.z = z; - this.timestamp = timestamp || (new Date()).getTime(); -}; - -module.exports = Acceleration; - -}); - -// file: lib/common/plugin/Camera.js -define("cordova/plugin/Camera", function(require, exports, module) { -var exec = require('cordova/exec'), - Camera = require('cordova/plugin/CameraConstants'); - -var cameraExport = {}; - -// Tack on the Camera Constants to the base camera plugin. -for (var key in Camera) { - cameraExport[key] = Camera[key]; -} - -/** - * Gets a picture from source defined by "options.sourceType", and returns the - * image as defined by the "options.destinationType" option. - - * The defaults are sourceType=CAMERA and destinationType=FILE_URI. - * - * @param {Function} successCallback - * @param {Function} errorCallback - * @param {Object} options - */ -cameraExport.getPicture = function(successCallback, errorCallback, options) { - // successCallback required - if (typeof successCallback != "function") { - console.log("Camera Error: successCallback is not a function"); - return; - } - - // errorCallback optional - if (errorCallback && (typeof errorCallback != "function")) { - console.log("Camera Error: errorCallback is not a function"); - return; - } - - var quality = 50; - if (options && typeof options.quality == "number") { - quality = options.quality; - } else if (options && typeof options.quality == "string") { - var qlity = parseInt(options.quality, 10); - if (isNaN(qlity) === false) { - quality = qlity.valueOf(); - } - } - - var destinationType = Camera.DestinationType.FILE_URI; - if (typeof options.destinationType == "number") { - destinationType = options.destinationType; - } - - var sourceType = Camera.PictureSourceType.CAMERA; - if (typeof options.sourceType == "number") { - sourceType = options.sourceType; - } - - var targetWidth = -1; - if (typeof options.targetWidth == "number") { - targetWidth = options.targetWidth; - } else if (typeof options.targetWidth == "string") { - var width = parseInt(options.targetWidth, 10); - if (isNaN(width) === false) { - targetWidth = width.valueOf(); - } - } - - var targetHeight = -1; - if (typeof options.targetHeight == "number") { - targetHeight = options.targetHeight; - } else if (typeof options.targetHeight == "string") { - var height = parseInt(options.targetHeight, 10); - if (isNaN(height) === false) { - targetHeight = height.valueOf(); - } - } - - var encodingType = Camera.EncodingType.JPEG; - if (typeof options.encodingType == "number") { - encodingType = options.encodingType; - } - - var mediaType = Camera.MediaType.PICTURE; - if (typeof options.mediaType == "number") { - mediaType = options.mediaType; - } - var allowEdit = false; - if (typeof options.allowEdit == "boolean") { - allowEdit = options.allowEdit; - } else if (typeof options.allowEdit == "number") { - allowEdit = options.allowEdit <= 0 ? false : true; - } - var correctOrientation = false; - if (typeof options.correctOrientation == "boolean") { - correctOrientation = options.correctOrientation; - } else if (typeof options.correctOrientation == "number") { - correctOrientation = options.correctOrientation <=0 ? false : true; - } - var saveToPhotoAlbum = false; - if (typeof options.saveToPhotoAlbum == "boolean") { - saveToPhotoAlbum = options.saveToPhotoAlbum; - } else if (typeof options.saveToPhotoAlbum == "number") { - saveToPhotoAlbum = options.saveToPhotoAlbum <=0 ? false : true; - } - var popoverOptions = null; - if (typeof options.popoverOptions == "object") { - popoverOptions = options.popoverOptions; - } - - var args = [quality, destinationType, sourceType, targetWidth, targetHeight, encodingType, - mediaType, allowEdit, correctOrientation, saveToPhotoAlbum, popoverOptions]; - - exec(successCallback, errorCallback, "Camera", "takePicture", args); -}; - -cameraExport.cleanup = function(successCallback, errorCallback) { - exec(successCallback, errorCallback, "Camera", "cleanup", []); -}; - -module.exports = cameraExport; -}); - -// file: lib/common/plugin/CameraConstants.js -define("cordova/plugin/CameraConstants", function(require, exports, module) { -module.exports = { - DestinationType:{ - DATA_URL: 0, // Return base64 encoded string - FILE_URI: 1 // Return file uri (content://media/external/images/media/2 for Android) - }, - EncodingType:{ - JPEG: 0, // Return JPEG encoded image - PNG: 1 // Return PNG encoded image - }, - MediaType:{ - PICTURE: 0, // allow selection of still pictures only. DEFAULT. Will return format specified via DestinationType - VIDEO: 1, // allow selection of video only, ONLY RETURNS URL - ALLMEDIA : 2 // allow selection from all media types - }, - PictureSourceType:{ - PHOTOLIBRARY : 0, // Choose image from picture library (same as SAVEDPHOTOALBUM for Android) - CAMERA : 1, // Take picture from camera - SAVEDPHOTOALBUM : 2 // Choose image from picture library (same as PHOTOLIBRARY for Android) - }, - PopoverArrowDirection:{ - ARROW_UP : 1, // matches iOS UIPopoverArrowDirection constants to specify arrow location on popover - ARROW_DOWN : 2, - ARROW_LEFT : 4, - ARROW_RIGHT : 8, - ARROW_ANY : 15 - } -}; -}); - -// file: lib/common/plugin/CameraPopoverOptions.js -define("cordova/plugin/CameraPopoverOptions", function(require, exports, module) { -var Camera = require('cordova/plugin/CameraConstants'); - -/** - * Encapsulates options for iOS Popover image picker - */ -var CameraPopoverOptions = function(x,y,width,height,arrowDir){ - // information of rectangle that popover should be anchored to - this.x = x || 0; - this.y = y || 32; - this.width = width || 320; - this.height = height || 480; - // The direction of the popover arrow - this.arrowDir = arrowDir || Camera.PopoverArrowDirection.ARROW_ANY; -}; - -module.exports = CameraPopoverOptions; -}); - -// file: lib/common/plugin/CaptureAudioOptions.js -define("cordova/plugin/CaptureAudioOptions", function(require, exports, module) { -/** - * Encapsulates all audio capture operation configuration options. - */ -var CaptureAudioOptions = function(){ - // Upper limit of sound clips user can record. Value must be equal or greater than 1. - this.limit = 1; - // Maximum duration of a single sound clip in seconds. - this.duration = 0; - // The selected audio mode. Must match with one of the elements in supportedAudioModes array. - this.mode = null; -}; - -module.exports = CaptureAudioOptions; -}); - -// file: lib/common/plugin/CaptureError.js -define("cordova/plugin/CaptureError", function(require, exports, module) { -/** - * The CaptureError interface encapsulates all errors in the Capture API. - */ -var CaptureError = function(c) { - this.code = c || null; -}; - -// Camera or microphone failed to capture image or sound. -CaptureError.CAPTURE_INTERNAL_ERR = 0; -// Camera application or audio capture application is currently serving other capture request. -CaptureError.CAPTURE_APPLICATION_BUSY = 1; -// Invalid use of the API (e.g. limit parameter has value less than one). -CaptureError.CAPTURE_INVALID_ARGUMENT = 2; -// User exited camera application or audio capture application before capturing anything. -CaptureError.CAPTURE_NO_MEDIA_FILES = 3; -// The requested capture operation is not supported. -CaptureError.CAPTURE_NOT_SUPPORTED = 20; - -module.exports = CaptureError; -}); - -// file: lib/common/plugin/CaptureImageOptions.js -define("cordova/plugin/CaptureImageOptions", function(require, exports, module) { -/** - * Encapsulates all image capture operation configuration options. - */ -var CaptureImageOptions = function(){ - // Upper limit of images user can take. Value must be equal or greater than 1. - this.limit = 1; - // The selected image mode. Must match with one of the elements in supportedImageModes array. - this.mode = null; -}; - -module.exports = CaptureImageOptions; -}); - -// file: lib/common/plugin/CaptureVideoOptions.js -define("cordova/plugin/CaptureVideoOptions", function(require, exports, module) { -/** - * Encapsulates all video capture operation configuration options. - */ -var CaptureVideoOptions = function(){ - // Upper limit of videos user can record. Value must be equal or greater than 1. - this.limit = 1; - // Maximum duration of a single video clip in seconds. - this.duration = 0; - // The selected video mode. Must match with one of the elements in supportedVideoModes array. - this.mode = null; -}; - -module.exports = CaptureVideoOptions; -}); - -// file: lib/common/plugin/CompassError.js -define("cordova/plugin/CompassError", function(require, exports, module) { -/** - * CompassError. - * An error code assigned by an implementation when an error has occured - * @constructor - */ -var CompassError = function(err) { - this.code = (err !== undefined ? err : null); -}; - -CompassError.COMPASS_INTERNAL_ERR = 0; -CompassError.COMPASS_NOT_SUPPORTED = 20; - -module.exports = CompassError; -}); - -// file: lib/common/plugin/CompassHeading.js -define("cordova/plugin/CompassHeading", function(require, exports, module) { -var CompassHeading = function(magneticHeading, trueHeading, headingAccuracy, timestamp) { - this.magneticHeading = (magneticHeading !== undefined ? magneticHeading : null); - this.trueHeading = (trueHeading !== undefined ? trueHeading : null); - this.headingAccuracy = (headingAccuracy !== undefined ? headingAccuracy : null); - this.timestamp = (timestamp !== undefined ? timestamp : new Date().getTime()); -}; - -module.exports = CompassHeading; -}); - -// file: lib/common/plugin/ConfigurationData.js -define("cordova/plugin/ConfigurationData", function(require, exports, module) { -/** - * Encapsulates a set of parameters that the capture device supports. - */ -function ConfigurationData() { - // The ASCII-encoded string in lower case representing the media type. - this.type = null; - // The height attribute represents height of the image or video in pixels. - // In the case of a sound clip this attribute has value 0. - this.height = 0; - // The width attribute represents width of the image or video in pixels. - // In the case of a sound clip this attribute has value 0 - this.width = 0; -} - -module.exports = ConfigurationData; -}); - -// file: lib/common/plugin/Connection.js -define("cordova/plugin/Connection", function(require, exports, module) { -/** - * Network status - */ -module.exports = { - UNKNOWN: "unknown", - ETHERNET: "ethernet", - WIFI: "wifi", - CELL_2G: "2g", - CELL_3G: "3g", - CELL_4G: "4g", - NONE: "none" -}; -}); - -// file: lib/common/plugin/Contact.js -define("cordova/plugin/Contact", function(require, exports, module) { -var exec = require('cordova/exec'), - ContactError = require('cordova/plugin/ContactError'), - utils = require('cordova/utils'); - -/** -* Converts primitives into Complex Object -* Currently only used for Date fields -*/ -function convertIn(contact) { - var value = contact.birthday; - try { - contact.birthday = new Date(parseFloat(value)); - } catch (exception){ - console.log("Cordova Contact convertIn error: exception creating date."); - } - return contact; -} - -/** -* Converts Complex objects into primitives -* Only conversion at present is for Dates. -**/ - -function convertOut(contact) { - var value = contact.birthday; - if (value !== null) { - // try to make it a Date object if it is not already - if (!utils.isDate(value)){ - try { - value = new Date(value); - } catch(exception){ - value = null; - } - } - if (utils.isDate(value)){ - value = value.valueOf(); // convert to milliseconds - } - contact.birthday = value; - } - return contact; -} - -/** -* Contains information about a single contact. -* @constructor -* @param {DOMString} id unique identifier -* @param {DOMString} displayName -* @param {ContactName} name -* @param {DOMString} nickname -* @param {Array.<ContactField>} phoneNumbers array of phone numbers -* @param {Array.<ContactField>} emails array of email addresses -* @param {Array.<ContactAddress>} addresses array of addresses -* @param {Array.<ContactField>} ims instant messaging user ids -* @param {Array.<ContactOrganization>} organizations -* @param {DOMString} birthday contact's birthday -* @param {DOMString} note user notes about contact -* @param {Array.<ContactField>} photos -* @param {Array.<ContactField>} categories -* @param {Array.<ContactField>} urls contact's web sites -*/ -var Contact = function (id, displayName, name, nickname, phoneNumbers, emails, addresses, - ims, organizations, birthday, note, photos, categories, urls) { - this.id = id || null; - this.rawId = null; - this.displayName = displayName || null; - this.name = name || null; // ContactName - this.nickname = nickname || null; - this.phoneNumbers = phoneNumbers || null; // ContactField[] - this.emails = emails || null; // ContactField[] - this.addresses = addresses || null; // ContactAddress[] - this.ims = ims || null; // ContactField[] - this.organizations = organizations || null; // ContactOrganization[] - this.birthday = birthday || null; - this.note = note || null; - this.photos = photos || null; // ContactField[] - this.categories = categories || null; // ContactField[] - this.urls = urls || null; // ContactField[] -}; - -/** -* Removes contact from device storage. -* @param successCB success callback -* @param errorCB error callback -*/ -Contact.prototype.remove = function(successCB, errorCB) { - var fail = function(code) { - errorCB(new ContactError(code)); - }; - if (this.id === null) { - fail(ContactError.UNKNOWN_ERROR); - } - else { - exec(successCB, fail, "Contacts", "remove", [this.id]); - } -}; - -/** -* Creates a deep copy of this Contact. -* With the contact ID set to null. -* @return copy of this Contact -*/ -Contact.prototype.clone = function() { - var clonedContact = utils.clone(this); - var i; - clonedContact.id = null; - clonedContact.rawId = null; - // Loop through and clear out any id's in phones, emails, etc. - if (clonedContact.phoneNumbers) { - for (i = 0; i < clonedContact.phoneNumbers.length; i++) { - clonedContact.phoneNumbers[i].id = null; - } - } - if (clonedContact.emails) { - for (i = 0; i < clonedContact.emails.length; i++) { - clonedContact.emails[i].id = null; - } - } - if (clonedContact.addresses) { - for (i = 0; i < clonedContact.addresses.length; i++) { - clonedContact.addresses[i].id = null; - } - } - if (clonedContact.ims) { - for (i = 0; i < clonedContact.ims.length; i++) { - clonedContact.ims[i].id = null; - } - } - if (clonedContact.organizations) { - for (i = 0; i < clonedContact.organizations.length; i++) { - clonedContact.organizations[i].id = null; - } - } - if (clonedContact.categories) { - for (i = 0; i < clonedContact.categories.length; i++) { - clonedContact.categories[i].id = null; - } - } - if (clonedContact.photos) { - for (i = 0; i < clonedContact.photos.length; i++) { - clonedContact.photos[i].id = null; - } - } - if (clonedContact.urls) { - for (i = 0; i < clonedContact.urls.length; i++) { - clonedContact.urls[i].id = null; - } - } - return clonedContact; -}; - -/** -* Persists contact to device storage. -* @param successCB success callback -* @param errorCB error callback -*/ -Contact.prototype.save = function(successCB, errorCB) { - var fail = function(code) { - errorCB(new ContactError(code)); - }; - var success = function(result) { - if (result) { - if (typeof successCB === 'function') { - var fullContact = require('cordova/plugin/contacts').create(result); - successCB(convertIn(fullContact)); - } - } - else { - // no Entry object returned - fail(ContactError.UNKNOWN_ERROR); - } - }; - var dupContact = convertOut(utils.clone(this)); - exec(success, fail, "Contacts", "save", [dupContact]); -}; - - -module.exports = Contact; - -}); - -// file: lib/common/plugin/ContactAddress.js -define("cordova/plugin/ContactAddress", function(require, exports, module) { -/** -* Contact address. -* @constructor -* @param {DOMString} id unique identifier, should only be set by native code -* @param formatted // NOTE: not a W3C standard -* @param streetAddress -* @param locality -* @param region -* @param postalCode -* @param country -*/ - -var ContactAddress = function(pref, type, formatted, streetAddress, locality, region, postalCode, country) { - this.id = null; - this.pref = (typeof pref != 'undefined' ? pref : false); - this.type = type || null; - this.formatted = formatted || null; - this.streetAddress = streetAddress || null; - this.locality = locality || null; - this.region = region || null; - this.postalCode = postalCode || null; - this.country = country || null; -}; - -module.exports = ContactAddress; -}); - -// file: lib/common/plugin/ContactError.js -define("cordova/plugin/ContactError", function(require, exports, module) { -/** - * ContactError. - * An error code assigned by an implementation when an error has occured - * @constructor - */ -var ContactError = function(err) { - this.code = (typeof err != 'undefined' ? err : null); -}; - -/** - * Error codes - */ -ContactError.UNKNOWN_ERROR = 0; -ContactError.INVALID_ARGUMENT_ERROR = 1; -ContactError.TIMEOUT_ERROR = 2; -ContactError.PENDING_OPERATION_ERROR = 3; -ContactError.IO_ERROR = 4; -ContactError.NOT_SUPPORTED_ERROR = 5; -ContactError.PERMISSION_DENIED_ERROR = 20; - -module.exports = ContactError; -}); - -// file: lib/common/plugin/ContactField.js -define("cordova/plugin/ContactField", function(require, exports, module) { -/** -* Generic contact field. -* @constructor -* @param {DOMString} id unique identifier, should only be set by native code // NOTE: not a W3C standard -* @param type -* @param value -* @param pref -*/ -var ContactField = function(type, value, pref) { - this.id = null; - this.type = (type && type.toString()) || null; - this.value = (value && value.toString()) || null; - this.pref = (typeof pref != 'undefined' ? pref : false); -}; - -module.exports = ContactField; -}); - -// file: lib/common/plugin/ContactFindOptions.js -define("cordova/plugin/ContactFindOptions", function(require, exports, module) { -/** - * ContactFindOptions. - * @constructor - * @param filter used to match contacts against - * @param multiple boolean used to determine if more than one contact should be returned - */ - -var ContactFindOptions = function(filter, multiple) { - this.filter = filter || ''; - this.multiple = (typeof multiple != 'undefined' ? multiple : false); -}; - -module.exports = ContactFindOptions; -}); - -// file: lib/common/plugin/ContactName.js -define("cordova/plugin/ContactName", function(require, exports, module) { -/** -* Contact name. -* @constructor -* @param formatted // NOTE: not part of W3C standard -* @param familyName -* @param givenName -* @param middle -* @param prefix -* @param suffix -*/ -var ContactName = function(formatted, familyName, givenName, middle, prefix, suffix) { - this.formatted = formatted || null; - this.familyName = familyName || null; - this.givenName = givenName || null; - this.middleName = middle || null; - this.honorificPrefix = prefix || null; - this.honorificSuffix = suffix || null; -}; - -module.exports = ContactName; -}); - -// file: lib/common/plugin/ContactOrganization.js -define("cordova/plugin/ContactOrganization", function(require, exports, module) { -/** -* Contact organization. -* @constructor -* @param {DOMString} id unique identifier, should only be set by native code // NOTE: not a W3C standard -* @param name -* @param dept -* @param title -* @param startDate -* @param endDate -* @param location -* @param desc -*/ - -var ContactOrganization = function(pref, type, name, dept, title) { - this.id = null; - this.pref = (typeof pref != 'undefined' ? pref : false); - this.type = type || null; - this.name = name || null; - this.department = dept || null; - this.title = title || null; -}; - -module.exports = ContactOrganization; -}); - -// file: lib/common/plugin/Coordinates.js -define("cordova/plugin/Coordinates", function(require, exports, module) { -/** - * This class contains position information. - * @param {Object} lat - * @param {Object} lng - * @param {Object} alt - * @param {Object} acc - * @param {Object} head - * @param {Object} vel - * @param {Object} altacc - * @constructor - */ -var Coordinates = function(lat, lng, alt, acc, head, vel, altacc) { - /** - * The latitude of the position. - */ - this.latitude = lat; - /** - * The longitude of the position, - */ - this.longitude = lng; - /** - * The accuracy of the position. - */ - this.accuracy = acc; - /** - * The altitude of the position. - */ - this.altitude = (alt !== undefined ? alt : null); - /** - * The direction the device is moving at the position. - */ - this.heading = (head !== undefined ? head : null); - /** - * The velocity with which the device is moving at the position. - */ - this.speed = (vel !== undefined ? vel : null); - - if (this.speed === 0 || this.speed === null) { - this.heading = NaN; - } - - /** - * The altitude accuracy of the position. - */ - this.altitudeAccuracy = (altacc !== undefined) ? altacc : null; -}; - -module.exports = Coordinates; - -}); - -// file: lib/common/plugin/DirectoryEntry.js -define("cordova/plugin/DirectoryEntry", function(require, exports, module) { -var utils = require('cordova/utils'), - exec = require('cordova/exec'), - Entry = require('cordova/plugin/Entry'), - FileError = require('cordova/plugin/FileError'), - DirectoryReader = require('cordova/plugin/DirectoryReader'); - -/** - * An interface representing a directory on the file system. - * - * {boolean} isFile always false (readonly) - * {boolean} isDirectory always true (readonly) - * {DOMString} name of the directory, excluding the path leading to it (readonly) - * {DOMString} fullPath the absolute full path to the directory (readonly) - * TODO: implement this!!! {FileSystem} filesystem on which the directory resides (readonly) - */ -var DirectoryEntry = function(name, fullPath) { - DirectoryEntry.__super__.constructor.apply(this, [false, true, name, fullPath]); -}; - -utils.extend(DirectoryEntry, Entry); - -/** - * Creates a new DirectoryReader to read entries from this directory - */ -DirectoryEntry.prototype.createReader = function() { - return new DirectoryReader(this.fullPath); -}; - -/** - * Creates or looks up a directory - * - * @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a directory - * @param {Flags} options to create or excluively create the directory - * @param {Function} successCallback is called with the new entry - * @param {Function} errorCallback is called with a FileError - */ -DirectoryEntry.prototype.getDirectory = function(path, options, successCallback, errorCallback) { - var win = typeof successCallback !== 'function' ? null : function(result) { - var entry = new DirectoryEntry(result.name, result.fullPath); - successCallback(entry); - }; - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; - exec(win, fail, "File", "getDirectory", [this.fullPath, path, options]); -}; - -/** - * Deletes a directory and all of it's contents - * - * @param {Function} successCallback is called with no parameters - * @param {Function} errorCallback is called with a FileError - */ -DirectoryEntry.prototype.removeRecursively = function(successCallback, errorCallback) { - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; - exec(successCallback, fail, "File", "removeRecursively", [this.fullPath]); -}; - -/** - * Creates or looks up a file - * - * @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a file - * @param {Flags} options to create or excluively create the file - * @param {Function} successCallback is called with the new entry - * @param {Function} errorCallback is called with a FileError - */ -DirectoryEntry.prototype.getFile = function(path, options, successCallback, errorCallback) { - var win = typeof successCallback !== 'function' ? null : function(result) { - var FileEntry = require('cordova/plugin/FileEntry'); - var entry = new FileEntry(result.name, result.fullPath); - successCallback(entry); - }; - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; - exec(win, fail, "File", "getFile", [this.fullPath, path, options]); -}; - -module.exports = DirectoryEntry; - -}); - -// file: lib/common/plugin/DirectoryReader.js -define("cordova/plugin/DirectoryReader", function(require, exports, module) { -var exec = require('cordova/exec'), - FileError = require('cordova/plugin/FileError') ; - -/** - * An interface that lists the files and directories in a directory. - */ -function DirectoryReader(path) { - this.path = path || null; -} - -/** - * Returns a list of entries from a directory. - * - * @param {Function} successCallback is called with a list of entries - * @param {Function} errorCallback is called with a FileError - */ -DirectoryReader.prototype.readEntries = function(successCallback, errorCallback) { - var win = typeof successCallback !== 'function' ? null : function(result) { - var retVal = []; - for (var i=0; i<result.length; i++) { - var entry = null; - if (result[i].isDirectory) { - entry = new (require('cordova/plugin/DirectoryEntry'))(); - } - else if (result[i].isFile) { - entry = new (require('cordova/plugin/FileEntry'))(); - } - entry.isDirectory = result[i].isDirectory; - entry.isFile = result[i].isFile; - entry.name = result[i].name; - entry.fullPath = result[i].fullPath; - retVal.push(entry); - } - successCallback(retVal); - }; - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; - exec(win, fail, "File", "readEntries", [this.path]); -}; - -module.exports = DirectoryReader; - -}); - -// file: lib/common/plugin/Entry.js -define("cordova/plugin/Entry", function(require, exports, module) { -var exec = require('cordova/exec'), - FileError = require('cordova/plugin/FileError'), - Metadata = require('cordova/plugin/Metadata'); - -/** - * Represents a file or directory on the local file system. - * - * @param isFile - * {boolean} true if Entry is a file (readonly) - * @param isDirectory - * {boolean} true if Entry is a directory (readonly) - * @param name - * {DOMString} name of the file or directory, excluding the path - * leading to it (readonly) - * @param fullPath - * {DOMString} the absolute full path to the file or directory - * (readonly) - */ -function Entry(isFile, isDirectory, name, fullPath, fileSystem) { - this.isFile = (typeof isFile != 'undefined'?isFile:false); - this.isDirectory = (typeof isDirectory != 'undefined'?isDirectory:false); - this.name = name || ''; - this.fullPath = fullPath || ''; - this.filesystem = fileSystem || null; -} - -/** - * Look up the metadata of the entry. - * - * @param successCallback - * {Function} is called with a Metadata object - * @param errorCallback - * {Function} is called with a FileError - */ -Entry.prototype.getMetadata = function(successCallback, errorCallback) { - var success = typeof successCallback !== 'function' ? null : function(lastModified) { - var metadata = new Metadata(lastModified); - successCallback(metadata); - }; - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; - - exec(success, fail, "File", "getMetadata", [this.fullPath]); -}; - -/** - * Set the metadata of the entry. - * - * @param successCallback - * {Function} is called with a Metadata object - * @param errorCallback - * {Function} is called with a FileError - * @param metadataObject - * {Object} keys and values to set - */ -Entry.prototype.setMetadata = function(successCallback, errorCallback, metadataObject) { - - exec(successCallback, errorCallback, "File", "setMetadata", [this.fullPath, metadataObject]); -}; - -/** - * Move a file or directory to a new location. - * - * @param parent - * {DirectoryEntry} the directory to which to move this entry - * @param newName - * {DOMString} new name of the entry, defaults to the current name - * @param successCallback - * {Function} called with the new DirectoryEntry object - * @param errorCallback - * {Function} called with a FileError - */ -Entry.prototype.moveTo = function(parent, newName, successCallback, errorCallback) { - var fail = function(code) { - if (typeof errorCallback === 'function') { - errorCallback(new FileError(code)); - } - }; - // user must specify parent Entry - if (!parent) { - fail(FileError.NOT_FOUND_ERR); - return; - } - // source path - var srcPath = this.fullPath, - // entry name - name = newName || this.name, - success = function(entry) { - if (entry) { - if (typeof successCallback === 'function') { - // create appropriate Entry object - var result = (entry.isDirectory) ? new (require('cordova/plugin/DirectoryEntry'))(entry.name, entry.fullPath) : new (require('cordova/plugin/FileEntry'))(entry.name, entry.fullPath); - try { - successCallback(result); - } - catch (e) { - console.log('Error invoking callback: ' + e); - } - } - } - else { - // no Entry object returned - fail(FileError.NOT_FOUND_ERR); - } - }; - - // copy - exec(success, fail, "File", "moveTo", [srcPath, parent.fullPath, name]); -}; - -/** - * Copy a directory to a different location. - * - * @param parent - * {DirectoryEntry} the directory to which to copy the entry - * @param newName - * {DOMString} new name of the entry, defaults to the current name - * @param successCallback - * {Function} called with the new Entry object - * @param errorCallback - * {Function} called with a FileError - */ -Entry.prototype.copyTo = function(parent, newName, successCallback, errorCallback) { - var fail = function(code) { - if (typeof errorCallback === 'function') { - errorCallback(new FileError(code)); - } - }; - - // user must specify parent Entry - if (!parent) { - fail(FileError.NOT_FOUND_ERR); - return; - } - - // source path - var srcPath = this.fullPath, - // entry name - name = newName || this.name, - // success callback - success = function(entry) { - if (entry) { - if (typeof successCallback === 'function') { - // create appropriate Entry object - var result = (entry.isDirectory) ? new (require('cordova/plugin/DirectoryEntry'))(entry.name, entry.fullPath) : new (require('cordova/plugin/FileEntry'))(entry.name, entry.fullPath); - try { - successCallback(result); - } - catch (e) { - console.log('Error invoking callback: ' + e); - } - } - } - else { - // no Entry object returned - fail(FileError.NOT_FOUND_ERR); - } - }; - - // copy - exec(success, fail, "File", "copyTo", [srcPath, parent.fullPath, name]); -}; - -/** - * Return a URL that can be used to identify this entry. - */ -Entry.prototype.toURL = function() { - // fullPath attribute contains the full URL - return this.fullPath; -}; - -/** - * Returns a URI that can be used to identify this entry. - * - * @param {DOMString} mimeType for a FileEntry, the mime type to be used to interpret the file, when loaded through this URI. - * @return uri - */ -Entry.prototype.toURI = function(mimeType) { - console.log("DEPRECATED: Update your code to use 'toURL'"); - // fullPath attribute contains the full URI - return this.toURL(); -}; - -/** - * Remove a file or directory. It is an error to attempt to delete a - * directory that is not empty. It is an error to attempt to delete a - * root directory of a file system. - * - * @param successCallback {Function} called with no parameters - * @param errorCallback {Function} called with a FileError - */ -Entry.prototype.remove = function(successCallback, errorCallback) { - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; - exec(successCallback, fail, "File", "remove", [this.fullPath]); -}; - -/** - * Look up the parent DirectoryEntry of this entry. - * - * @param successCallback {Function} called with the parent DirectoryEntry object - * @param errorCallback {Function} called with a FileError - */ -Entry.prototype.getParent = function(successCallback, errorCallback) { - var win = typeof successCallback !== 'function' ? null : function(result) { - var DirectoryEntry = require('cordova/plugin/DirectoryEntry'); - var entry = new DirectoryEntry(result.name, result.fullPath); - successCallback(entry); - }; - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; - exec(win, fail, "File", "getParent", [this.fullPath]); -}; - -module.exports = Entry; -}); - -// file: lib/common/plugin/File.js -define("cordova/plugin/File", function(require, exports, module) { -/** - * Constructor. - * name {DOMString} name of the file, without path information - * fullPath {DOMString} the full path of the file, including the name - * type {DOMString} mime type - * lastModifiedDate {Date} last modified date - * size {Number} size of the file in bytes - */ - -var File = function(name, fullPath, type, lastModifiedDate, size){ - this.name = name || ''; - this.fullPath = fullPath || null; - this.type = type || null; - this.lastModifiedDate = lastModifiedDate || null; - this.size = size || 0; -}; - -module.exports = File; -}); - -// file: lib/common/plugin/FileEntry.js -define("cordova/plugin/FileEntry", function(require, exports, module) { -var utils = require('cordova/utils'), - exec = require('cordova/exec'), - Entry = require('cordova/plugin/Entry'), - FileWriter = require('cordova/plugin/FileWriter'), - File = require('cordova/plugin/File'), - FileError = require('cordova/plugin/FileError'); - -/** - * An interface representing a file on the file system. - * - * {boolean} isFile always true (readonly) - * {boolean} isDirectory always false (readonly) - * {DOMString} name of the file, excluding the path leading to it (readonly) - * {DOMString} fullPath the absolute full path to the file (readonly) - * {FileSystem} filesystem on which the file resides (readonly) - */ -var FileEntry = function(name, fullPath) { - FileEntry.__super__.constructor.apply(this, [true, false, name, fullPath]); -}; - -utils.extend(FileEntry, Entry); - -/** - * Creates a new FileWriter associated with the file that this FileEntry represents. - * - * @param {Function} successCallback is called with the new FileWriter - * @param {Function} errorCallback is called with a FileError - */ -FileEntry.prototype.createWriter = function(successCallback, errorCallback) { - this.file(function(filePointer) { - var writer = new FileWriter(filePointer); - - if (writer.fileName === null || writer.fileName === "") { - if (typeof errorCallback === "function") { - errorCallback(new FileError(FileError.INVALID_STATE_ERR)); - } - } else { - if (typeof successCallback === "function") { - successCallback(writer); - } - } - }, errorCallback); -}; - -/** - * Returns a File that represents the current state of the file that this FileEntry represents. - * - * @param {Function} successCallback is called with the new File object - * @param {Function} errorCallback is called with a FileError - */ -FileEntry.prototype.file = function(successCallback, errorCallback) { - var win = typeof successCallback !== 'function' ? null : function(f) { - var file = new File(f.name, f.fullPath, f.type, f.lastModifiedDate, f.size); - successCallback(file); - }; - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; - exec(win, fail, "File", "getFileMetadata", [this.fullPath]); -}; - - -module.exports = FileEntry; -}); - -// file: lib/common/plugin/FileError.js -define("cordova/plugin/FileError", function(require, exports, module) { -/** - * FileError - */ -function FileError(error) { - this.code = error || null; -} - -// File error codes -// Found in DOMException -FileError.NOT_FOUND_ERR = 1; -FileError.SECURITY_ERR = 2; -FileError.ABORT_ERR = 3; - -// Added by File API specification -FileError.NOT_READABLE_ERR = 4; -FileError.ENCODING_ERR = 5; -FileError.NO_MODIFICATION_ALLOWED_ERR = 6; -FileError.INVALID_STATE_ERR = 7; -FileError.SYNTAX_ERR = 8; -FileError.INVALID_MODIFICATION_ERR = 9; -FileError.QUOTA_EXCEEDED_ERR = 10; -FileError.TYPE_MISMATCH_ERR = 11; -FileError.PATH_EXISTS_ERR = 12; - -module.exports = FileError; -}); - -// file: lib/common/plugin/FileReader.js -define("cordova/plugin/FileReader", function(require, exports, module) { -var exec = require('cordova/exec'), - FileError = require('cordova/plugin/FileError'), - ProgressEvent = require('cordova/plugin/ProgressEvent'); - -/** - * This class reads the mobile device file system. - * - * For Android: - * The root directory is the root of the file system. - * To read from the SD card, the file name is "sdcard/my_file.txt" - * @constructor - */ -var FileReader = function() { - this.fileName = ""; - - this.readyState = 0; // FileReader.EMPTY - - // File data - this.result = null; - - // Error - this.error = null; - - // Event handlers - this.onloadstart = null; // When the read starts. - this.onprogress = null; // While reading (and decoding) file or fileBlob data, and reporting partial file data (progess.loaded/progress.total) - this.onload = null; // When the read has successfully completed. - this.onerror = null; // When the read has failed (see errors). - this.onloadend = null; // When the request has completed (either in success or failure). - this.onabort = null; // When the read has been aborted. For instance, by invoking the abort() method. -}; - -// States -FileReader.EMPTY = 0; -FileReader.LOADING = 1; -FileReader.DONE = 2; - -/** - * Abort reading file. - */ -FileReader.prototype.abort = function() { - this.result = null; - - if (this.readyState == FileReader.DONE || this.readyState == FileReader.EMPTY) { - return; - } - - this.readyState = FileReader.DONE; - - // If abort callback - if (typeof this.onabort === 'function') { - this.onabort(new ProgressEvent('abort', {target:this})); - } - // If load end callback - if (typeof this.onloadend === 'function') { - this.onloadend(new ProgressEvent('loadend', {target:this})); - } -}; - -/** - * Read text file. - * - * @param file {File} File object containing file properties - * @param encoding [Optional] (see http://www.iana.org/assignments/character-sets) - */ -FileReader.prototype.readAsText = function(file, encoding) { - // Figure out pathing - this.fileName = ''; - if (typeof file.fullPath === 'undefined') { - this.fileName = file; - } else { - this.fileName = file.fullPath; - } - - // Already loading something - if (this.readyState == FileReader.LOADING) { - throw new FileError(FileError.INVALID_STATE_ERR); - } - - // LOADING state - this.readyState = FileReader.LOADING; - - // If loadstart callback - if (typeof this.onloadstart === "function") { - this.onloadstart(new ProgressEvent("loadstart", {target:this})); - } - - // Default encoding is UTF-8 - var enc = encoding ? encoding : "UTF-8"; - - var me = this; - - // Read file - exec( - // Success callback - function(r) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileReader.DONE) { - return; - } - - // Save result - me.result = r; - - // If onload callback - if (typeof me.onload === "function") { - me.onload(new ProgressEvent("load", {target:me})); - } - - // DONE state - me.readyState = FileReader.DONE; - - // If onloadend callback - if (typeof me.onloadend === "function") { - me.onloadend(new ProgressEvent("loadend", {target:me})); - } - }, - // Error callback - function(e) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileReader.DONE) { - return; - } - - // DONE state - me.readyState = FileReader.DONE; - - // null result - me.result = null; - - // Save error - me.error = new FileError(e); - - // If onerror callback - if (typeof me.onerror === "function") { - me.onerror(new ProgressEvent("error", {target:me})); - } - - // If onloadend callback - if (typeof me.onloadend === "function") { - me.onloadend(new ProgressEvent("loadend", {target:me})); - } - }, "File", "readAsText", [this.fileName, enc]); -}; - - -/** - * Read file and return data as a base64 encoded data url. - * A data url is of the form: - * data:[<mediatype>][;base64],<data> - * - * @param file {File} File object containing file properties - */ -FileReader.prototype.readAsDataURL = function(file) { - this.fileName = ""; - if (typeof file.fullPath === "undefined") { - this.fileName = file; - } else { - this.fileName = file.fullPath; - } - - // Already loading something - if (this.readyState == FileReader.LOADING) { - throw new FileError(FileError.INVALID_STATE_ERR); - } - - // LOADING state - this.readyState = FileReader.LOADING; - - // If loadstart callback - if (typeof this.onloadstart === "function") { - this.onloadstart(new ProgressEvent("loadstart", {target:this})); - } - - var me = this; - - // Read file - exec( - // Success callback - function(r) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileReader.DONE) { - return; - } - - // DONE state - me.readyState = FileReader.DONE; - - // Save result - me.result = r; - - // If onload callback - if (typeof me.onload === "function") { - me.onload(new ProgressEvent("load", {target:me})); - } - - // If onloadend callback - if (typeof me.onloadend === "function") { - me.onloadend(new ProgressEvent("loadend", {target:me})); - } - }, - // Error callback - function(e) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileReader.DONE) { - return; - } - - // DONE state - me.readyState = FileReader.DONE; - - me.result = null; - - // Save error - me.error = new FileError(e); - - // If onerror callback - if (typeof me.onerror === "function") { - me.onerror(new ProgressEvent("error", {target:me})); - } - - // If onloadend callback - if (typeof me.onloadend === "function") { - me.onloadend(new ProgressEvent("loadend", {target:me})); - } - }, "File", "readAsDataURL", [this.fileName]); -}; - -/** - * Read file and return data as a binary data. - * - * @param file {File} File object containing file properties - */ -FileReader.prototype.readAsBinaryString = function(file) { - // TODO - Can't return binary data to browser. - console.log('method "readAsBinaryString" is not supported at this time.'); -}; - -/** - * Read file and return data as a binary data. - * - * @param file {File} File object containing file properties - */ -FileReader.prototype.readAsArrayBuffer = function(file) { - // TODO - Can't return binary data to browser. - console.log('This method is not supported at this time.'); -}; - -module.exports = FileReader; -}); - -// file: lib/common/plugin/FileSystem.js -define("cordova/plugin/FileSystem", function(require, exports, module) { -var DirectoryEntry = require('cordova/plugin/DirectoryEntry'); - -/** - * An interface representing a file system - * - * @constructor - * {DOMString} name the unique name of the file system (readonly) - * {DirectoryEntry} root directory of the file system (readonly) - */ -var FileSystem = function(name, root) { - this.name = name || null; - if (root) { - this.root = new DirectoryEntry(root.name, root.fullPath); - } -}; - -module.exports = FileSystem; - -}); - -// file: lib/common/plugin/FileTransfer.js -define("cordova/plugin/FileTransfer", function(require, exports, module) { -var exec = require('cordova/exec'), - FileTransferError = require('cordova/plugin/FileTransferError'); - -/** - * FileTransfer uploads a file to a remote server. - * @constructor - */ -var FileTransfer = function() {}; - -/** -* Given an absolute file path, uploads a file on the device to a remote server -* using a multipart HTTP request. -* @param filePath {String} Full path of the file on the device -* @param server {String} URL of the server to receive the file -* @param successCallback (Function} Callback to be invoked when upload has completed -* @param errorCallback {Function} Callback to be invoked upon error -* @param options {FileUploadOptions} Optional parameters such as file name and mimetype -* @param trustAllHosts {Boolean} Optional trust all hosts (e.g. for self-signed certs), defaults to false -*/ -FileTransfer.prototype.upload = function(filePath, server, successCallback, errorCallback, options, trustAllHosts) { - // sanity parameter checking - if (!filePath || !server) throw new Error("FileTransfer.upload requires filePath and server URL parameters at the minimum."); - // check for options - var fileKey = null; - var fileName = null; - var mimeType = null; - var params = null; - var chunkedMode = true; - var headers = null; - if (options) { - fileKey = options.fileKey; - fileName = options.fileName; - mimeType = options.mimeType; - headers = options.headers; - if (options.chunkedMode !== null || typeof options.chunkedMode != "undefined") { - chunkedMode = options.chunkedMode; - } - if (options.params) { - params = options.params; - } - else { - params = {}; - } - } - - var fail = function(e) { - var error = new FileTransferError(e.code, e.source, e.target, e.http_status); - errorCallback(error); - }; - - exec(successCallback, fail, 'FileTransfer', 'upload', [filePath, server, fileKey, fileName, mimeType, params, trustAllHosts, chunkedMode, headers]); -}; - -/** - * Downloads a file form a given URL and saves it to the specified directory. - * @param source {String} URL of the server to receive the file - * @param target {String} Full path of the file on the device - * @param successCallback (Function} Callback to be invoked when upload has completed - * @param errorCallback {Function} Callback to be invoked upon error - */ -FileTransfer.prototype.download = function(source, target, successCallback, errorCallback) { - // sanity parameter checking - if (!source || !target) throw new Error("FileTransfer.download requires source URI and target URI parameters at the minimum."); - var win = function(result) { - var entry = null; - if (result.isDirectory) { - entry = new (require('cordova/plugin/DirectoryEntry'))(); - } - else if (result.isFile) { - entry = new (require('cordova/plugin/FileEntry'))(); - } - entry.isDirectory = result.isDirectory; - entry.isFile = result.isFile; - entry.name = result.name; - entry.fullPath = result.fullPath; - successCallback(entry); - }; - - var fail = function(e) { - var error = new FileTransferError(e.code, e.source, e.target, e.http_status); - errorCallback(error); - }; - - exec(win, errorCallback, 'FileTransfer', 'download', [source, target]); -}; - -module.exports = FileTransfer; - -}); - -// file: lib/common/plugin/FileTransferError.js -define("cordova/plugin/FileTransferError", function(require, exports, module) { -/** - * FileTransferError - * @constructor - */ -var FileTransferError = function(code, source, target, status) { - this.code = code || null; - this.source = source || null; - this.target = target || null; - this.http_status = status || null; -}; - -FileTransferError.FILE_NOT_FOUND_ERR = 1; -FileTransferError.INVALID_URL_ERR = 2; -FileTransferError.CONNECTION_ERR = 3; - -module.exports = FileTransferError; - -}); - -// file: lib/common/plugin/FileUploadOptions.js -define("cordova/plugin/FileUploadOptions", function(require, exports, module) { -/** - * Options to customize the HTTP request used to upload files. - * @constructor - * @param fileKey {String} Name of file request parameter. - * @param fileName {String} Filename to be used by the server. Defaults to image.jpg. - * @param mimeType {String} Mimetype of the uploaded file. Defaults to image/jpeg. - * @param params {Object} Object with key: value params to send to the server. - * @param headers {Object} Keys are header names, values are header values. Multiple - * headers of the same name are not supported. - */ -var FileUploadOptions = function(fileKey, fileName, mimeType, params, headers) { - this.fileKey = fileKey || null; - this.fileName = fileName || null; - this.mimeType = mimeType || null; - this.params = params || null; - this.headers = headers || null; -}; - -module.exports = FileUploadOptions; - -}); - -// file: lib/common/plugin/FileUploadResult.js -define("cordova/plugin/FileUploadResult", function(require, exports, module) { -/** - * FileUploadResult - * @constructor - */ -var FileUploadResult = function() { - this.bytesSent = 0; - this.responseCode = null; - this.response = null; -}; - -module.exports = FileUploadResult; -}); - -// file: lib/common/plugin/FileWriter.js -define("cordova/plugin/FileWriter", function(require, exports, module) { -var exec = require('cordova/exec'), - FileError = require('cordova/plugin/FileError'), - ProgressEvent = require('cordova/plugin/ProgressEvent'); - -/** - * This class writes to the mobile device file system. - * - * For Android: - * The root directory is the root of the file system. - * To write to the SD card, the file name is "sdcard/my_file.txt" - * - * @constructor - * @param file {File} File object containing file properties - * @param append if true write to the end of the file, otherwise overwrite the file - */ -var FileWriter = function(file) { - this.fileName = ""; - this.length = 0; - if (file) { - this.fileName = file.fullPath || file; - this.length = file.size || 0; - } - // default is to write at the beginning of the file - this.position = 0; - - this.readyState = 0; // EMPTY - - this.result = null; - - // Error - this.error = null; - - // Event handlers - this.onwritestart = null; // When writing starts - this.onprogress = null; // While writing the file, and reporting partial file data - this.onwrite = null; // When the write has successfully completed. - this.onwriteend = null; // When the request has completed (either in success or failure). - this.onabort = null; // When the write has been aborted. For instance, by invoking the abort() method. - this.onerror = null; // When the write has failed (see errors). -}; - -// States -FileWriter.INIT = 0; -FileWriter.WRITING = 1; -FileWriter.DONE = 2; - -/** - * Abort writing file. - */ -FileWriter.prototype.abort = function() { - // check for invalid state - if (this.readyState === FileWriter.DONE || this.readyState === FileWriter.INIT) { - throw new FileError(FileError.INVALID_STATE_ERR); - } - - // set error - this.error = new FileError(FileError.ABORT_ERR); - - this.readyState = FileWriter.DONE; - - // If abort callback - if (typeof this.onabort === "function") { - this.onabort(new ProgressEvent("abort", {"target":this})); - } - - // If write end callback - if (typeof this.onwriteend === "function") { - this.onwriteend(new ProgressEvent("writeend", {"target":this})); - } -}; - -/** - * Writes data to the file - * - * @param text to be written - */ -FileWriter.prototype.write = function(text) { - // Throw an exception if we are already writing a file - if (this.readyState === FileWriter.WRITING) { - throw new FileError(FileError.INVALID_STATE_ERR); - } - - // WRITING state - this.readyState = FileWriter.WRITING; - - var me = this; - - // If onwritestart callback - if (typeof me.onwritestart === "function") { - me.onwritestart(new ProgressEvent("writestart", {"target":me})); - } - - // Write file - exec( - // Success callback - function(r) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileWriter.DONE) { - return; - } - - // position always increases by bytes written because file would be extended - me.position += r; - // The length of the file is now where we are done writing. - - me.length = me.position; - - // DONE state - me.readyState = FileWriter.DONE; - - // If onwrite callback - if (typeof me.onwrite === "function") { - me.onwrite(new ProgressEvent("write", {"target":me})); - } - - // If onwriteend callback - if (typeof me.onwriteend === "function") { - me.onwriteend(new ProgressEvent("writeend", {"target":me})); - } - }, - // Error callback - function(e) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileWriter.DONE) { - return; - } - - // DONE state - me.readyState = FileWriter.DONE; - - // Save error - me.error = new FileError(e); - - // If onerror callback - if (typeof me.onerror === "function") { - me.onerror(new ProgressEvent("error", {"target":me})); - } - - // If onwriteend callback - if (typeof me.onwriteend === "function") { - me.onwriteend(new ProgressEvent("writeend", {"target":me})); - } - }, "File", "write", [this.fileName, text, this.position]); -}; - -/** - * Moves the file pointer to the location specified. - * - * If the offset is a negative number the position of the file - * pointer is rewound. If the offset is greater than the file - * size the position is set to the end of the file. - * - * @param offset is the location to move the file pointer to. - */ -FileWriter.prototype.seek = function(offset) { - // Throw an exception if we are already writing a file - if (this.readyState === FileWriter.WRITING) { - throw new FileError(FileError.INVALID_STATE_ERR); - } - - if (!offset && offset !== 0) { - return; - } - - // See back from end of file. - if (offset < 0) { - this.position = Math.max(offset + this.length, 0); - } - // Offset is bigger than file size so set position - // to the end of the file. - else if (offset > this.length) { - this.position = this.length; - } - // Offset is between 0 and file size so set the position - // to start writing. - else { - this.position = offset; - } -}; - -/** - * Truncates the file to the size specified. - * - * @param size to chop the file at. - */ -FileWriter.prototype.truncate = function(size) { - // Throw an exception if we are already writing a file - if (this.readyState === FileWriter.WRITING) { - throw new FileError(FileError.INVALID_STATE_ERR); - } - - // WRITING state - this.readyState = FileWriter.WRITING; - - var me = this; - - // If onwritestart callback - if (typeof me.onwritestart === "function") { - me.onwritestart(new ProgressEvent("writestart", {"target":this})); - } - - // Write file - exec( - // Success callback - function(r) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileWriter.DONE) { - return; - } - - // DONE state - me.readyState = FileWriter.DONE; - - // Update the length of the file - me.length = r; - me.position = Math.min(me.position, r); - - // If onwrite callback - if (typeof me.onwrite === "function") { - me.onwrite(new ProgressEvent("write", {"target":me})); - } - - // If onwriteend callback - if (typeof me.onwriteend === "function") { - me.onwriteend(new ProgressEvent("writeend", {"target":me})); - } - }, - // Error callback - function(e) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileWriter.DONE) { - return; - } - - // DONE state - me.readyState = FileWriter.DONE; - - // Save error - me.error = new FileError(e); - - // If onerror callback - if (typeof me.onerror === "function") { - me.onerror(new ProgressEvent("error", {"target":me})); - } - - // If onwriteend callback - if (typeof me.onwriteend === "function") { - me.onwriteend(new ProgressEvent("writeend", {"target":me})); - } - }, "File", "truncate", [this.fileName, size]); -}; - -module.exports = FileWriter; - -}); - -// file: lib/common/plugin/Flags.js -define("cordova/plugin/Flags", function(require, exports, module) { -/** - * Supplies arguments to methods that lookup or create files and directories. - * - * @param create - * {boolean} file or directory if it doesn't exist - * @param exclusive - * {boolean} used with create; if true the command will fail if - * target path exists - */ -function Flags(create, exclusive) { - this.create = create || false; - this.exclusive = exclusive || false; -} - -module.exports = Flags; -}); - -// file: lib/common/plugin/LocalFileSystem.js -define("cordova/plugin/LocalFileSystem", function(require, exports, module) { -var exec = require('cordova/exec'); - -/** - * Represents a local file system. - */ -var LocalFileSystem = function() { - -}; - -LocalFileSystem.TEMPORARY = 0; //temporary, with no guarantee of persistence -LocalFileSystem.PERSISTENT = 1; //persistent - -module.exports = LocalFileSystem; -}); - -// file: lib/common/plugin/Media.js -define("cordova/plugin/Media", function(require, exports, module) { -var utils = require('cordova/utils'), - exec = require('cordova/exec'); - -var mediaObjects = {}; - -/** - * This class provides access to the device media, interfaces to both sound and video - * - * @constructor - * @param src The file name or url to play - * @param successCallback The callback to be called when the file is done playing or recording. - * successCallback() - * @param errorCallback The callback to be called if there is an error. - * errorCallback(int errorCode) - OPTIONAL - * @param statusCallback The callback to be called when media status has changed. - * statusCallback(int statusCode) - OPTIONAL - */ -var Media = function(src, successCallback, errorCallback, statusCallback) { - - // successCallback optional - if (successCallback && (typeof successCallback !== "function")) { - console.log("Media Error: successCallback is not a function"); - return; - } - - // errorCallback optional - if (errorCallback && (typeof errorCallback !== "function")) { - console.log("Media Error: errorCallback is not a function"); - return; - } - - // statusCallback optional - if (statusCallback && (typeof statusCallback !== "function")) { - console.log("Media Error: statusCallback is not a function"); - return; - } - - this.id = utils.createUUID(); - mediaObjects[this.id] = this; - this.src = src; - this.successCallback = successCallback; - this.errorCallback = errorCallback; - this.statusCallback = statusCallback; - this._duration = -1; - this._position = -1; - exec(null, this.errorCallback, "Media", "create", [this.id, this.src]); -}; - -// Media messages -Media.MEDIA_STATE = 1; -Media.MEDIA_DURATION = 2; -Media.MEDIA_POSITION = 3; -Media.MEDIA_ERROR = 9; - -// Media states -Media.MEDIA_NONE = 0; -Media.MEDIA_STARTING = 1; -Media.MEDIA_RUNNING = 2; -Media.MEDIA_PAUSED = 3; -Media.MEDIA_STOPPED = 4; -Media.MEDIA_MSG = ["None", "Starting", "Running", "Paused", "Stopped"]; - -// "static" function to return existing objs. -Media.get = function(id) { - return mediaObjects[id]; -}; - -/** - * Start or resume playing audio file. - */ -Media.prototype.play = function(options) { - exec(null, null, "Media", "startPlayingAudio", [this.id, this.src, options]); -}; - -/** - * Stop playing audio file. - */ -Media.prototype.stop = function() { - var me = this; - exec(function() { - me._position = 0; - }, this.errorCallback, "Media", "stopPlayingAudio", [this.id]); -}; - -/** - * Seek or jump to a new time in the track.. - */ -Media.prototype.seekTo = function(milliseconds) { - var me = this; - exec(function(p) { - me._position = p; - }, this.errorCallback, "Media", "seekToAudio", [this.id, milliseconds]); -}; - -/** - * Pause playing audio file. - */ -Media.prototype.pause = function() { - exec(null, this.errorCallback, "Media", "pausePlayingAudio", [this.id]); -}; - -/** - * Get duration of an audio file. - * The duration is only set for audio that is playing, paused or stopped. - * - * @return duration or -1 if not known. - */ -Media.prototype.getDuration = function() { - return this._duration; -}; - -/** - * Get position of audio. - */ -Media.prototype.getCurrentPosition = function(success, fail) { - var me = this; - exec(function(p) { - me._position = p; - success(p); - }, fail, "Media", "getCurrentPositionAudio", [this.id]); -}; - -/** - * Start recording audio file. - */ -Media.prototype.startRecord = function() { - exec(null, this.errorCallback, "Media", "startRecordingAudio", [this.id, this.src]); -}; - -/** - * Stop recording audio file. - */ -Media.prototype.stopRecord = function() { - exec(null, this.errorCallback, "Media", "stopRecordingAudio", [this.id]); -}; - -/** - * Release the resources. - */ -Media.prototype.release = function() { - exec(null, this.errorCallback, "Media", "release", [this.id]); -}; - -/** - * Adjust the volume. - */ -Media.prototype.setVolume = function(volume) { - exec(null, null, "Media", "setVolume", [this.id, volume]); -}; - -/** - * Audio has status update. - * PRIVATE - * - * @param id The media object id (string) - * @param msgType The 'type' of update this is - * @param value Use of value is determined by the msgType - */ -Media.onStatus = function(id, msgType, value) { - - var media = mediaObjects[id]; - - if(media) { - switch(msgType) { - case Media.MEDIA_STATE : - media.statusCallback && media.statusCallback(value); - if(value == Media.MEDIA_STOPPED) { - media.successCallback && media.successCallback(); - } - break; - case Media.MEDIA_DURATION : - media._duration = value; - break; - case Media.MEDIA_ERROR : - media.errorCallback && media.errorCallback(value); - break; - case Media.MEDIA_POSITION : - media._position = Number(value); - break; - default : - console && console.error && console.error("Unhandled Media.onStatus :: " + msgType); - break; - } - } - else { - console && console.error && console.error("Received Media.onStatus callback for unknown media :: " + id); - } - -}; - -module.exports = Media; -}); - -// file: lib/common/plugin/MediaError.js -define("cordova/plugin/MediaError", function(require, exports, module) { -/** - * This class contains information about any Media errors. -*/ -/* - According to :: http://dev.w3.org/html5/spec-author-view/video.html#mediaerror - We should never be creating these objects, we should just implement the interface - which has 1 property for an instance, 'code' - - instead of doing : - errorCallbackFunction( new MediaError(3,'msg') ); -we should simply use a literal : - errorCallbackFunction( {'code':3} ); - */ - -if(!MediaError) { - var MediaError = function(code, msg) { - this.code = (typeof code != 'undefined') ? code : null; - this.message = msg || ""; // message is NON-standard! do not use! - }; -} - -MediaError.MEDIA_ERR_NONE_ACTIVE = MediaError.MEDIA_ERR_NONE_ACTIVE || 0; -MediaError.MEDIA_ERR_ABORTED = MediaError.MEDIA_ERR_ABORTED || 1; -MediaError.MEDIA_ERR_NETWORK = MediaError.MEDIA_ERR_NETWORK || 2; -MediaError.MEDIA_ERR_DECODE = MediaError.MEDIA_ERR_DECODE || 3; -MediaError.MEDIA_ERR_NONE_SUPPORTED = MediaError.MEDIA_ERR_NONE_SUPPORTED || 4; -// TODO: MediaError.MEDIA_ERR_NONE_SUPPORTED is legacy, the W3 spec now defines it as below. -// as defined by http://dev.w3.org/html5/spec-author-view/video.html#error-codes -MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED || 4; - -module.exports = MediaError; - -}); - -// file: lib/common/plugin/MediaFile.js -define("cordova/plugin/MediaFile", function(require, exports, module) { -var utils = require('cordova/utils'), - exec = require('cordova/exec'), - File = require('cordova/plugin/File'), - CaptureError = require('cordova/plugin/CaptureError'); -/** - * Represents a single file. - * - * name {DOMString} name of the file, without path information - * fullPath {DOMString} the full path of the file, including the name - * type {DOMString} mime type - * lastModifiedDate {Date} last modified date - * size {Number} size of the file in bytes - */ -var MediaFile = function(name, fullPath, type, lastModifiedDate, size){ - MediaFile.__super__.constructor.apply(this, arguments); -}; - -utils.extend(MediaFile, File); - -/** - * Request capture format data for a specific file and type - * - * @param {Function} successCB - * @param {Function} errorCB - */ -MediaFile.prototype.getFormatData = function(successCallback, errorCallback) { - if (typeof this.fullPath === "undefined" || this.fullPath === null) { - errorCallback(new CaptureError(CaptureError.CAPTURE_INVALID_ARGUMENT)); - } else { - exec(successCallback, errorCallback, "Capture", "getFormatData", [this.fullPath, this.type]); - } -}; - -module.exports = MediaFile; - -}); - -// file: lib/common/plugin/MediaFileData.js -define("cordova/plugin/MediaFileData", function(require, exports, module) { -/** - * MediaFileData encapsulates format information of a media file. - * - * @param {DOMString} codecs - * @param {long} bitrate - * @param {long} height - * @param {long} width - * @param {float} duration - */ -var MediaFileData = function(codecs, bitrate, height, width, duration){ - this.codecs = codecs || null; - this.bitrate = bitrate || 0; - this.height = height || 0; - this.width = width || 0; - this.duration = duration || 0; -}; - -module.exports = MediaFileData; -}); - -// file: lib/common/plugin/Metadata.js -define("cordova/plugin/Metadata", function(require, exports, module) { -/** - * Information about the state of the file or directory - * - * {Date} modificationTime (readonly) - */ -var Metadata = function(time) { - this.modificationTime = (typeof time != 'undefined'?new Date(time):null); -}; - -module.exports = Metadata; -}); - -// file: lib/common/plugin/Position.js -define("cordova/plugin/Position", function(require, exports, module) { -var Coordinates = require('cordova/plugin/Coordinates'); - -var Position = function(coords, timestamp) { - if (coords) { - this.coords = new Coordinates(coords.latitude, coords.longitude, coords.altitude, coords.accuracy, coords.heading, coords.velocity, coords.altitudeAccuracy); - } else { - this.coords = new Coordinates(); - } - this.timestamp = (timestamp !== undefined) ? timestamp : new Date(); -}; - -module.exports = Position; - -}); - -// file: lib/common/plugin/PositionError.js -define("cordova/plugin/PositionError", function(require, exports, module) { -/** - * Position error object - * - * @constructor - * @param code - * @param message - */ -var PositionError = function(code, message) { - this.code = code || null; - this.message = message || ''; -}; - -PositionError.PERMISSION_DENIED = 1; -PositionError.POSITION_UNAVAILABLE = 2; -PositionError.TIMEOUT = 3; - -module.exports = PositionError; -}); - -// file: lib/common/plugin/ProgressEvent.js -define("cordova/plugin/ProgressEvent", function(require, exports, module) { -// If ProgressEvent exists in global context, use it already, otherwise use our own polyfill -// Feature test: See if we can instantiate a native ProgressEvent; -// if so, use that approach, -// otherwise fill-in with our own implementation. -// -// NOTE: right now we always fill in with our own. Down the road would be nice if we can use whatever is native in the webview. -var ProgressEvent = (function() { - /* - var createEvent = function(data) { - var event = document.createEvent('Events'); - event.initEvent('ProgressEvent', false, false); - if (data) { - for (var i in data) { - if (data.hasOwnProperty(i)) { - event[i] = data[i]; - } - } - if (data.target) { - // TODO: cannot call <some_custom_object>.dispatchEvent - // need to first figure out how to implement EventTarget - } - } - return event; - }; - try { - var ev = createEvent({type:"abort",target:document}); - return function ProgressEvent(type, data) { - data.type = type; - return createEvent(data); - }; - } catch(e){ - */ - return function ProgressEvent(type, dict) { - this.type = type; - this.bubbles = false; - this.cancelBubble = false; - this.cancelable = false; - this.lengthComputable = false; - this.loaded = dict && dict.loaded ? dict.loaded : 0; - this.total = dict && dict.total ? dict.total : 0; - this.target = dict && dict.target ? dict.target : null; - }; - //} -})(); - -module.exports = ProgressEvent; -}); - -// file: lib/common/plugin/accelerometer.js -define("cordova/plugin/accelerometer", function(require, exports, module) { -/** - * This class provides access to device accelerometer data. - * @constructor - */ -var utils = require("cordova/utils"), - exec = require("cordova/exec"), - Acceleration = require('cordova/plugin/Acceleration'); - -// Is the accel sensor running? -var running = false; - -// Keeps reference to watchAcceleration calls. -var timers = {}; - -// Array of listeners; used to keep track of when we should call start and stop. -var listeners = []; - -// Last returned acceleration object from native -var accel = null; - -// Tells native to start. -function start() { - exec(function(a) { - var tempListeners = listeners.slice(0); - accel = new Acceleration(a.x, a.y, a.z, a.timestamp); - for (var i = 0, l = tempListeners.length; i < l; i++) { - tempListeners[i].win(accel); - } - }, function(e) { - var tempListeners = listeners.slice(0); - for (var i = 0, l = tempListeners.length; i < l; i++) { - tempListeners[i].fail(e); - } - }, "Accelerometer", "start", []); - running = true; -} - -// Tells native to stop. -function stop() { - exec(null, null, "Accelerometer", "stop", []); - running = false; -} - -// Adds a callback pair to the listeners array -function createCallbackPair(win, fail) { - return {win:win, fail:fail}; -} - -// Removes a win/fail listener pair from the listeners array -function removeListeners(l) { - var idx = listeners.indexOf(l); - if (idx > -1) { - listeners.splice(idx, 1); - if (listeners.length === 0) { - stop(); - } - } -} - -var accelerometer = { - /** - * Asynchronously aquires the current acceleration. - * - * @param {Function} successCallback The function to call when the acceleration data is available - * @param {Function} errorCallback The function to call when there is an error getting the acceleration data. (OPTIONAL) - * @param {AccelerationOptions} options The options for getting the accelerometer data such as timeout. (OPTIONAL) - */ - getCurrentAcceleration: function(successCallback, errorCallback, options) { - // successCallback required - if (typeof successCallback !== "function") { - throw "getCurrentAcceleration must be called with at least a success callback function as first parameter."; - } - - var p; - var win = function(a) { - removeListeners(p); - successCallback(a); - }; - var fail = function(e) { - removeListeners(p); - errorCallback(e); - }; - - p = createCallbackPair(win, fail); - listeners.push(p); - - if (!running) { - start(); - } - }, - - /** - * Asynchronously aquires the acceleration repeatedly at a given interval. - * - * @param {Function} successCallback The function to call each time the acceleration data is available - * @param {Function} errorCallback The function to call when there is an error getting the acceleration data. (OPTIONAL) - * @param {AccelerationOptions} options The options for getting the accelerometer data such as timeout. (OPTIONAL) - * @return String The watch id that must be passed to #clearWatch to stop watching. - */ - watchAcceleration: function(successCallback, errorCallback, options) { - // Default interval (10 sec) - var frequency = (options && options.frequency && typeof options.frequency == 'number') ? options.frequency : 10000; - - // successCallback required - if (typeof successCallback !== "function") { - throw "watchAcceleration must be called with at least a success callback function as first parameter."; - } - - // Keep reference to watch id, and report accel readings as often as defined in frequency - var id = utils.createUUID(); - - var p = createCallbackPair(function(){}, function(e) { - removeListeners(p); - errorCallback(e); - }); - listeners.push(p); - - timers[id] = { - timer:window.setInterval(function() { - if (accel) { - successCallback(accel); - } - }, frequency), - listeners:p - }; - - if (running) { - // If we're already running then immediately invoke the success callback - // but only if we have retrieved a value, sample code does not check for null ... - if(accel) { - successCallback(accel); - } - } else { - start(); - } - - return id; - }, - - /** - * Clears the specified accelerometer watch. - * - * @param {String} id The id of the watch returned from #watchAcceleration. - */ - clearWatch: function(id) { - // Stop javascript timer & remove from timer list - if (id && timers[id]) { - window.clearInterval(timers[id].timer); - removeListeners(timers[id].listeners); - delete timers[id]; - } - } -}; - -module.exports = accelerometer; - -}); - -// file: lib/common/plugin/battery.js -define("cordova/plugin/battery", function(require, exports, module) { -/** - * This class contains information about the current battery status. - * @constructor - */ -var cordova = require('cordova'), - exec = require('cordova/exec'); - -function handlers() { - return battery.channels.batterystatus.numHandlers + - battery.channels.batterylow.numHandlers + - battery.channels.batterycritical.numHandlers; -} - -var Battery = function() { - this._level = null; - this._isPlugged = null; - // Create new event handlers on the window (returns a channel instance) - var subscriptionEvents = { - onSubscribe:this.onSubscribe, - onUnsubscribe:this.onUnsubscribe - }; - this.channels = { - batterystatus:cordova.addWindowEventHandler("batterystatus", subscriptionEvents), - batterylow:cordova.addWindowEventHandler("batterylow", subscriptionEvents), - batterycritical:cordova.addWindowEventHandler("batterycritical", subscriptionEvents) - }; -}; -/** - * Event handlers for when callbacks get registered for the battery. - * Keep track of how many handlers we have so we can start and stop the native battery listener - * appropriately (and hopefully save on battery life!). - */ -Battery.prototype.onSubscribe = function() { - var me = battery; - // If we just registered the first handler, make sure native listener is started. - if (handlers() === 1) { - exec(me._status, me._error, "Battery", "start", []); - } -}; - -Battery.prototype.onUnsubscribe = function() { - var me = battery; - - // If we just unregistered the last handler, make sure native listener is stopped. - if (handlers() === 0) { - exec(null, null, "Battery", "stop", []); - } -}; - -/** - * Callback for battery status - * - * @param {Object} info keys: level, isPlugged - */ -Battery.prototype._status = function(info) { - if (info) { - var me = battery; - var level = info.level; - if (me._level !== level || me._isPlugged !== info.isPlugged) { - // Fire batterystatus event - cordova.fireWindowEvent("batterystatus", info); - - // Fire low battery event - if (level === 20 || level === 5) { - if (level === 20) { - cordova.fireWindowEvent("batterylow", info); - } - else { - cordova.fireWindowEvent("batterycritical", info); - } - } - } - me._level = level; - me._isPlugged = info.isPlugged; - } -}; - -/** - * Error callback for battery start - */ -Battery.prototype._error = function(e) { - console.log("Error initializing Battery: " + e); -}; - -var battery = new Battery(); - -module.exports = battery; -}); - -// file: lib/common/plugin/capture.js -define("cordova/plugin/capture", function(require, exports, module) { -var exec = require('cordova/exec'), - MediaFile = require('cordova/plugin/MediaFile'); - -/** - * Launches a capture of different types. - * - * @param (DOMString} type - * @param {Function} successCB - * @param {Function} errorCB - * @param {CaptureVideoOptions} options - */ -function _capture(type, successCallback, errorCallback, options) { - var win = function(pluginResult) { - var mediaFiles = []; - var i; - for (i = 0; i < pluginResult.length; i++) { - var mediaFile = new MediaFile(); - mediaFile.name = pluginResult[i].name; - mediaFile.fullPath = pluginResult[i].fullPath; - mediaFile.type = pluginResult[i].type; - mediaFile.lastModifiedDate = pluginResult[i].lastModifiedDate; - mediaFile.size = pluginResult[i].size; - mediaFiles.push(mediaFile); - } - successCallback(mediaFiles); - }; - exec(win, errorCallback, "Capture", type, [options]); -} -/** - * The Capture interface exposes an interface to the camera and microphone of the hosting device. - */ -function Capture() { - this.supportedAudioModes = []; - this.supportedImageModes = []; - this.supportedVideoModes = []; -} - -/** - * Launch audio recorder application for recording audio clip(s). - * - * @param {Function} successCB - * @param {Function} errorCB - * @param {CaptureAudioOptions} options - */ -Capture.prototype.captureAudio = function(successCallback, errorCallback, options){ - _capture("captureAudio", successCallback, errorCallback, options); -}; - -/** - * Launch camera application for taking image(s). - * - * @param {Function} successCB - * @param {Function} errorCB - * @param {CaptureImageOptions} options - */ -Capture.prototype.captureImage = function(successCallback, errorCallback, options){ - _capture("captureImage", successCallback, errorCallback, options); -}; - -/** - * Launch device camera application for recording video(s). - * - * @param {Function} successCB - * @param {Function} errorCB - * @param {CaptureVideoOptions} options - */ -Capture.prototype.captureVideo = function(successCallback, errorCallback, options){ - _capture("captureVideo", successCallback, errorCallback, options); -}; - - -module.exports = new Capture(); - -}); - -// file: lib/common/plugin/compass.js -define("cordova/plugin/compass", function(require, exports, module) { -var exec = require('cordova/exec'), - utils = require('cordova/utils'), - CompassHeading = require('cordova/plugin/CompassHeading'), - CompassError = require('cordova/plugin/CompassError'), - timers = {}, - compass = { - /** - * Asynchronously acquires the current heading. - * @param {Function} successCallback The function to call when the heading - * data is available - * @param {Function} errorCallback The function to call when there is an error - * getting the heading data. - * @param {CompassOptions} options The options for getting the heading data (not used). - */ - getCurrentHeading:function(successCallback, errorCallback, options) { - // successCallback required - if (typeof successCallback !== "function") { - console.log("Compass Error: successCallback is not a function"); - return; - } - - // errorCallback optional - if (errorCallback && (typeof errorCallback !== "function")) { - console.log("Compass Error: errorCallback is not a function"); - return; - } - - var win = function(result) { - var ch = new CompassHeading(result.magneticHeading, result.trueHeading, result.headingAccuracy, result.timestamp); - successCallback(ch); - }; - var fail = function(code) { - var ce = new CompassError(code); - errorCallback(ce); - }; - - // Get heading - exec(win, fail, "Compass", "getHeading", [options]); - }, - - /** - * Asynchronously acquires the heading repeatedly at a given interval. - * @param {Function} successCallback The function to call each time the heading - * data is available - * @param {Function} errorCallback The function to call when there is an error - * getting the heading data. - * @param {HeadingOptions} options The options for getting the heading data - * such as timeout and the frequency of the watch. For iOS, filter parameter - * specifies to watch via a distance filter rather than time. - */ - watchHeading:function(successCallback, errorCallback, options) { - // Default interval (100 msec) - var frequency = (options !== undefined && options.frequency !== undefined) ? options.frequency : 100; - var filter = (options !== undefined && options.filter !== undefined) ? options.filter : 0; - - // successCallback required - if (typeof successCallback !== "function") { - console.log("Compass Error: successCallback is not a function"); - return; - } - - // errorCallback optional - if (errorCallback && (typeof errorCallback !== "function")) { - console.log("Compass Error: errorCallback is not a function"); - return; - } - - var id = utils.createUUID(); - if (filter > 0) { - // is an iOS request for watch by filter, no timer needed - timers[id] = "iOS"; - compass.getCurrentHeading(successCallback, errorCallback, options); - } else { - // Start watch timer to get headings - timers[id] = window.setInterval(function() { - compass.getCurrentHeading(successCallback, errorCallback); - }, frequency); - } - - return id; - }, - - /** - * Clears the specified heading watch. - * @param {String} watchId The ID of the watch returned from #watchHeading. - */ - clearWatch:function(id) { - // Stop javascript timer & remove from timer list - if (id && timers[id]) { - if (timers[id] != "iOS") { - clearInterval(timers[id]); - } else { - // is iOS watch by filter so call into device to stop - exec(null, null, "Compass", "stopHeading", []); - } - delete timers[id]; - } - } - }; - -module.exports = compass; -}); - -// file: lib/common/plugin/console-via-logger.js -define("cordova/plugin/console-via-logger", function(require, exports, module) { -//------------------------------------------------------------------------------ - -var logger = require("cordova/plugin/logger"); -var utils = require("cordova/utils"); - -//------------------------------------------------------------------------------ -// object that we're exporting -//------------------------------------------------------------------------------ -var console = module.exports; - -//------------------------------------------------------------------------------ -// copy of the original console object -//------------------------------------------------------------------------------ -var WinConsole = window.console; - -//------------------------------------------------------------------------------ -// whether to use the logger -//------------------------------------------------------------------------------ -var UseLogger = false; - -//------------------------------------------------------------------------------ -// Timers -//------------------------------------------------------------------------------ -var Timers = {}; - -//------------------------------------------------------------------------------ -// used for unimplemented methods -//------------------------------------------------------------------------------ -function noop() {} - -//------------------------------------------------------------------------------ -// used for unimplemented methods -//------------------------------------------------------------------------------ -console.useLogger = function (value) { - if (arguments.length) UseLogger = !!value; - - if (UseLogger) { - if (logger.useConsole()) { - throw new Error("console and logger are too intertwingly"); - } - } - - return UseLogger; -}; - -//------------------------------------------------------------------------------ -console.log = function() { - if (logger.useConsole()) return; - logger.log.apply(logger, [].slice.call(arguments)); -}; - -//------------------------------------------------------------------------------ -console.error = function() { - if (logger.useConsole()) return; - logger.error.apply(logger, [].slice.call(arguments)); -}; - -//------------------------------------------------------------------------------ -console.warn = function() { - if (logger.useConsole()) return; - logger.warn.apply(logger, [].slice.call(arguments)); -}; - -//------------------------------------------------------------------------------ -console.info = function() { - if (logger.useConsole()) return; - logger.info.apply(logger, [].slice.call(arguments)); -}; - -//------------------------------------------------------------------------------ -console.debug = function() { - if (logger.useConsole()) return; - logger.debug.apply(logger, [].slice.call(arguments)); -}; - -//------------------------------------------------------------------------------ -console.assert = function(expression) { - if (expression) return; - - var message = utils.vformat(arguments[1], [].slice.call(arguments, 2)); - console.log("ASSERT: " + message); -}; - -//------------------------------------------------------------------------------ -console.clear = function() {}; - -//------------------------------------------------------------------------------ -console.dir = function(object) { - console.log("%o", object); -}; - -//------------------------------------------------------------------------------ -console.dirxml = function(node) { - console.log(node.innerHTML); -}; - -//------------------------------------------------------------------------------ -console.trace = noop; - -//------------------------------------------------------------------------------ -console.group = console.log; - -//------------------------------------------------------------------------------ -console.groupCollapsed = console.log; - -//------------------------------------------------------------------------------ -console.groupEnd = noop; - -//------------------------------------------------------------------------------ -console.time = function(name) { - Timers[name] = new Date().valueOf(); -}; - -//------------------------------------------------------------------------------ -console.timeEnd = function(name) { - var timeStart = Timers[name]; - if (!timeStart) { - console.warn("unknown timer: " + name); - return; - } - - var timeElapsed = new Date().valueOf() - timeStart; - console.log(name + ": " + timeElapsed + "ms"); -}; - -//------------------------------------------------------------------------------ -console.timeStamp = noop; - -//------------------------------------------------------------------------------ -console.profile = noop; - -//------------------------------------------------------------------------------ -console.profileEnd = noop; - -//------------------------------------------------------------------------------ -console.count = noop; - -//------------------------------------------------------------------------------ -console.exception = console.log; - -//------------------------------------------------------------------------------ -console.table = function(data, columns) { - console.log("%o", data); -}; - -//------------------------------------------------------------------------------ -// return a new function that calls both functions passed as args -//------------------------------------------------------------------------------ -function wrapperedOrigCall(orgFunc, newFunc) { - return function() { - var args = [].slice.call(arguments); - try { orgFunc.apply(WinConsole, args); } catch (e) {} - try { newFunc.apply(console, args); } catch (e) {} - }; -} - -//------------------------------------------------------------------------------ -// For every function that exists in the original console object, that -// also exists in the new console object, wrap the new console method -// with one that calls both -//------------------------------------------------------------------------------ -for (var key in console) { - if (typeof WinConsole[key] == "function") { - console[key] = wrapperedOrigCall(WinConsole[key], console[key]); - } -} - -}); - -// file: lib/common/plugin/contacts.js -define("cordova/plugin/contacts", function(require, exports, module) { -var exec = require('cordova/exec'), - ContactError = require('cordova/plugin/ContactError'), - utils = require('cordova/utils'), - Contact = require('cordova/plugin/Contact'); - -/** -* Represents a group of Contacts. -* @constructor -*/ -var contacts = { - /** - * Returns an array of Contacts matching the search criteria. - * @param fields that should be searched - * @param successCB success callback - * @param errorCB error callback - * @param {ContactFindOptions} options that can be applied to contact searching - * @return array of Contacts matching search criteria - */ - find:function(fields, successCB, errorCB, options) { - if (!successCB) { - throw new TypeError("You must specify a success callback for the find command."); - } - if (!fields || (utils.isArray(fields) && fields.length === 0)) { - if (typeof errorCB === "function") { - errorCB(new ContactError(ContactError.INVALID_ARGUMENT_ERROR)); - } - } else { - var win = function(result) { - var cs = []; - for (var i = 0, l = result.length; i < l; i++) { - cs.push(contacts.create(result[i])); - } - successCB(cs); - }; - exec(win, errorCB, "Contacts", "search", [fields, options]); - } - }, - - /** - * This function creates a new contact, but it does not persist the contact - * to device storage. To persist the contact to device storage, invoke - * contact.save(). - * @param properties an object whose properties will be examined to create a new Contact - * @returns new Contact object - */ - create:function(properties) { - var i; - var contact = new Contact(); - for (i in properties) { - if (typeof contact[i] !== 'undefined' && properties.hasOwnProperty(i)) { - contact[i] = properties[i]; - } - } - return contact; - } -}; - -module.exports = contacts; - -}); - -// file: lib/common/plugin/device.js -define("cordova/plugin/device", function(require, exports, module) { -var channel = require('cordova/channel'), - utils = require('cordova/utils'), - exec = require('cordova/exec'); - -// Tell cordova channel to wait on the CordovaInfoReady event -channel.waitForInitialization('onCordovaInfoReady'); - -/** - * This represents the mobile device, and provides properties for inspecting the model, version, UUID of the - * phone, etc. - * @constructor - */ -function Device() { - this.available = false; - this.platform = null; - this.version = null; - this.name = null; - this.uuid = null; - this.cordova = null; - - var me = this; - - channel.onCordovaReady.subscribeOnce(function() { - me.getInfo(function(info) { - me.available = true; - me.platform = info.platform; - me.version = info.version; - me.name = info.name; - me.uuid = info.uuid; - me.cordova = info.cordova; - channel.onCordovaInfoReady.fire(); - },function(e) { - me.available = false; - utils.alert("[ERROR] Error initializing Cordova: " + e); - }); - }); -} - -/** - * Get device info - * - * @param {Function} successCallback The function to call when the heading data is available - * @param {Function} errorCallback The function to call when there is an error getting the heading data. (OPTIONAL) - */ -Device.prototype.getInfo = function(successCallback, errorCallback) { - - // successCallback required - if (typeof successCallback !== "function") { - console.log("Device Error: successCallback is not a function"); - return; - } - - // errorCallback optional - if (errorCallback && (typeof errorCallback !== "function")) { - console.log("Device Error: errorCallback is not a function"); - return; - } - - // Get info - exec(successCallback, errorCallback, "Device", "getDeviceInfo", []); -}; - -module.exports = new Device(); - -}); - -// file: lib/common/plugin/echo.js -define("cordova/plugin/echo", function(require, exports, module) { -var exec = require('cordova/exec'); - -/** - * Sends the given message through exec() to the Echo plugink, which sends it back to the successCallback. - * @param successCallback invoked with a FileSystem object - * @param errorCallback invoked if error occurs retrieving file system - * @param message The string to be echoed. - * @param forceAsync Whether to force an async return value (for testing native->js bridge). - */ -module.exports = function(successCallback, errorCallback, message, forceAsync) { - var action = forceAsync ? 'echoAsync' : 'echo'; - exec(successCallback, errorCallback, "Echo", action, [message]); -}; - - -}); - -// file: lib/common/plugin/geolocation.js -define("cordova/plugin/geolocation", function(require, exports, module) { -var utils = require('cordova/utils'), - exec = require('cordova/exec'), - PositionError = require('cordova/plugin/PositionError'), - Position = require('cordova/plugin/Position'); - -var timers = {}; // list of timers in use - -// Returns default params, overrides if provided with values -function parseParameters(options) { - var opt = { - maximumAge: 0, - enableHighAccuracy: false, - timeout: Infinity - }; - - if (options) { - if (options.maximumAge !== undefined && !isNaN(options.maximumAge) && options.maximumAge > 0) { - opt.maximumAge = options.maximumAge; - } - if (options.enableHighAccuracy !== undefined) { - opt.enableHighAccuracy = options.enableHighAccuracy; - } - if (options.timeout !== undefined && !isNaN(options.timeout)) { - if (options.timeout < 0) { - opt.timeout = 0; - } else { - opt.timeout = options.timeout; - } - } - } - - return opt; -} - -// Returns a timeout failure, closed over a specified timeout value and error callback. -function createTimeout(errorCallback, timeout) { - var t = setTimeout(function() { - clearTimeout(t); - t = null; - errorCallback({ - code:PositionError.TIMEOUT, - message:"Position retrieval timed out." - }); - }, timeout); - return t; -} - -var geolocation = { - lastPosition:null, // reference to last known (cached) position returned - /** - * Asynchronously aquires the current position. - * - * @param {Function} successCallback The function to call when the position data is available - * @param {Function} errorCallback The function to call when there is an error getting the heading position. (OPTIONAL) - * @param {PositionOptions} options The options for getting the position data. (OPTIONAL) - */ - getCurrentPosition:function(successCallback, errorCallback, options) { - if (arguments.length === 0) { - throw new Error("getCurrentPosition must be called with at least one argument."); - } - options = parseParameters(options); - - // Timer var that will fire an error callback if no position is retrieved from native - // before the "timeout" param provided expires - var timeoutTimer = null; - - var win = function(p) { - clearTimeout(timeoutTimer); - if (!timeoutTimer) { - // Timeout already happened, or native fired error callback for - // this geo request. - // Don't continue with success callback. - return; - } - var pos = new Position( - { - latitude:p.latitude, - longitude:p.longitude, - altitude:p.altitude, - accuracy:p.accuracy, - heading:p.heading, - velocity:p.velocity, - altitudeAccuracy:p.altitudeAccuracy - }, - (p.timestamp === undefined ? new Date() : ((p.timestamp instanceof Date) ? p.timestamp : new Date(p.timestamp))) - ); - geolocation.lastPosition = pos; - successCallback(pos); - }; - var fail = function(e) { - clearTimeout(timeoutTimer); - timeoutTimer = null; - var err = new PositionError(e.code, e.message); - if (errorCallback) { - errorCallback(err); - } - }; - - // Check our cached position, if its timestamp difference with current time is less than the maximumAge, then just - // fire the success callback with the cached position. - if (geolocation.lastPosition && options.maximumAge && (((new Date()).getTime() - geolocation.lastPosition.timestamp.getTime()) <= options.maximumAge)) { - successCallback(geolocation.lastPosition); - // If the cached position check failed and the timeout was set to 0, error out with a TIMEOUT error object. - } else if (options.timeout === 0) { - fail({ - code:PositionError.TIMEOUT, - message:"timeout value in PositionOptions set to 0 and no cached Position object available, or cached Position object's age exceeds provided PositionOptions' maximumAge parameter." - }); - // Otherwise we have to call into native to retrieve a position. - } else { - if (options.timeout !== Infinity) { - // If the timeout value was not set to Infinity (default), then - // set up a timeout function that will fire the error callback - // if no successful position was retrieved before timeout expired. - timeoutTimer = createTimeout(fail, options.timeout); - } else { - // This is here so the check in the win function doesn't mess stuff up - // may seem weird but this guarantees timeoutTimer is - // always truthy before we call into native - timeoutTimer = true; - } - exec(win, fail, "Geolocation", "getLocation", [options.enableHighAccuracy, options.maximumAge]); - } - return timeoutTimer; - }, - /** - * Asynchronously watches the geolocation for changes to geolocation. When a change occurs, - * the successCallback is called with the new location. - * - * @param {Function} successCallback The function to call each time the location data is available - * @param {Function} errorCallback The function to call when there is an error getting the location data. (OPTIONAL) - * @param {PositionOptions} options The options for getting the location data such as frequency. (OPTIONAL) - * @return String The watch id that must be passed to #clearWatch to stop watching. - */ - watchPosition:function(successCallback, errorCallback, options) { - if (arguments.length === 0) { - throw new Error("watchPosition must be called with at least one argument."); - } - options = parseParameters(options); - - var id = utils.createUUID(); - - // Tell device to get a position ASAP, and also retrieve a reference to the timeout timer generated in getCurrentPosition - timers[id] = geolocation.getCurrentPosition(successCallback, errorCallback, options); - - var fail = function(e) { - clearTimeout(timers[id]); - var err = new PositionError(e.code, e.message); - if (errorCallback) { - errorCallback(err); - } - }; - - var win = function(p) { - clearTimeout(timers[id]); - if (options.timeout !== Infinity) { - timers[id] = createTimeout(fail, options.timeout); - } - var pos = new Position( - { - latitude:p.latitude, - longitude:p.longitude, - altitude:p.altitude, - accuracy:p.accuracy, - heading:p.heading, - velocity:p.velocity, - altitudeAccuracy:p.altitudeAccuracy - }, - (p.timestamp === undefined ? new Date() : ((p.timestamp instanceof Date) ? p.timestamp : new Date(p.timestamp))) - ); - geolocation.lastPosition = pos; - successCallback(pos); - }; - - exec(win, fail, "Geolocation", "addWatch", [id, options.enableHighAccuracy]); - - return id; - }, - /** - * Clears the specified heading watch. - * - * @param {String} id The ID of the watch returned from #watchPosition - */ - clearWatch:function(id) { - if (id && timers[id] !== undefined) { - clearTimeout(timers[id]); - delete timers[id]; - exec(null, null, "Geolocation", "clearWatch", [id]); - } - } -}; - -module.exports = geolocation; - -}); - -// file: lib/ios/plugin/ios/Contact.js -define("cordova/plugin/ios/Contact", function(require, exports, module) { -var exec = require('cordova/exec'), - ContactError = require('cordova/plugin/ContactError'); - -/** - * Provides iOS Contact.display API. - */ -module.exports = { - display : function(errorCB, options) { - /* - * Display a contact using the iOS Contact Picker UI - * NOT part of W3C spec so no official documentation - * - * @param errorCB error callback - * @param options object - * allowsEditing: boolean AS STRING - * "true" to allow editing the contact - * "false" (default) display contact - */ - - if (this.id === null) { - if (typeof errorCB === "function") { - var errorObj = new ContactError(ContactError.UNKNOWN_ERROR); - errorCB(errorObj); - } - } - else { - exec(null, errorCB, "Contacts","displayContact", [this.id, options]); - } - } -}; -}); - -// file: lib/ios/plugin/ios/Entry.js -define("cordova/plugin/ios/Entry", function(require, exports, module) { -module.exports = { - toURL:function() { - // TODO: refactor path in a cross-platform way so we can eliminate - // these kinds of platform-specific hacks. - return "file://localhost" + this.fullPath; - }, - toURI: function() { - console.log("DEPRECATED: Update your code to use 'toURL'"); - return "file://localhost" + this.fullPath; - } -}; -}); - -// file: lib/ios/plugin/ios/FileReader.js -define("cordova/plugin/ios/FileReader", function(require, exports, module) { -var exec = require('cordova/exec'), - FileError = require('cordova/plugin/FileError'), - FileReader = require('cordova/plugin/FileReader'), - ProgressEvent = require('cordova/plugin/ProgressEvent'); - -module.exports = { - readAsText:function(file, encoding) { - // Figure out pathing - this.fileName = ''; - if (typeof file.fullPath === 'undefined') { - this.fileName = file; - } else { - this.fileName = file.fullPath; - } - - // Already loading something - if (this.readyState == FileReader.LOADING) { - throw new FileError(FileError.INVALID_STATE_ERR); - } - - // LOADING state - this.readyState = FileReader.LOADING; - - // If loadstart callback - if (typeof this.onloadstart === "function") { - this.onloadstart(new ProgressEvent("loadstart", {target:this})); - } - - // Default encoding is UTF-8 - var enc = encoding ? encoding : "UTF-8"; - - var me = this; - - // Read file - exec( - // Success callback - function(r) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileReader.DONE) { - return; - } - - // Save result - me.result = decodeURIComponent(r); - - // If onload callback - if (typeof me.onload === "function") { - me.onload(new ProgressEvent("load", {target:me})); - } - - // DONE state - me.readyState = FileReader.DONE; - - // If onloadend callback - if (typeof me.onloadend === "function") { - me.onloadend(new ProgressEvent("loadend", {target:me})); - } - }, - // Error callback - function(e) { - // If DONE (cancelled), then don't do anything - if (me.readyState === FileReader.DONE) { - return; - } - - // DONE state - me.readyState = FileReader.DONE; - - // null result - me.result = null; - - // Save error - me.error = new FileError(e); - - // If onerror callback - if (typeof me.onerror === "function") { - me.onerror(new ProgressEvent("error", {target:me})); - } - - // If onloadend callback - if (typeof me.onloadend === "function") { - me.onloadend(new ProgressEvent("loadend", {target:me})); - } - }, - "File", "readAsText", [this.fileName, enc]); - } -}; -}); - -// file: lib/ios/plugin/ios/console.js -define("cordova/plugin/ios/console", function(require, exports, module) { -var exec = require('cordova/exec'); - -/** - * This class provides access to the debugging console. - * @constructor - */ -var DebugConsole = function() { - this.winConsole = window.console; - this.logLevel = DebugConsole.INFO_LEVEL; -}; - -// from most verbose, to least verbose -DebugConsole.ALL_LEVEL = 1; // same as first level -DebugConsole.INFO_LEVEL = 1; -DebugConsole.WARN_LEVEL = 2; -DebugConsole.ERROR_LEVEL = 4; -DebugConsole.NONE_LEVEL = 8; - -DebugConsole.prototype.setLevel = function(level) { - this.logLevel = level; -}; - -var stringify = function(message) { - try { - if (typeof message === "object" && JSON && JSON.stringify) { - try { - return JSON.stringify(message); - } - catch (e) { - return "error JSON.stringify()ing argument: " + e; - } - } else { - return message.toString(); - } - } catch (e) { - return e.toString(); - } -}; - -/** - * Print a normal log message to the console - * @param {Object|String} message Message or object to print to the console - */ -DebugConsole.prototype.log = function(message) { - if (this.logLevel <= DebugConsole.INFO_LEVEL) { - exec(null, null, 'Debug Console', 'log', [ stringify(message), { logLevel: 'INFO' } ]); - } - else if (this.winConsole && this.winConsole.log) { - this.winConsole.log(message); - } -}; - -/** - * Print a warning message to the console - * @param {Object|String} message Message or object to print to the console - */ -DebugConsole.prototype.warn = function(message) { - if (this.logLevel <= DebugConsole.WARN_LEVEL) { - exec(null, null, 'Debug Console', 'log', [ stringify(message), { logLevel: 'WARN' } ]); - } - else if (this.winConsole && this.winConsole.warn) { - this.winConsole.warn(message); - } -}; - -/** - * Print an error message to the console - * @param {Object|String} message Message or object to print to the console - */ -DebugConsole.prototype.error = function(message) { - if (this.logLevel <= DebugConsole.ERROR_LEVEL) { - exec(null, null, 'Debug Console', 'log', [ stringify(message), { logLevel: 'ERROR' } ]); - } - else if (this.winConsole && this.winConsole.error){ - this.winConsole.error(message); - } -}; - -module.exports = new DebugConsole(); -}); - -// file: lib/ios/plugin/ios/contacts.js -define("cordova/plugin/ios/contacts", function(require, exports, module) { -var exec = require('cordova/exec'); - -/** - * Provides iOS enhanced contacts API. - */ -module.exports = { - newContactUI : function(successCallback) { - /* - * Create a contact using the iOS Contact Picker UI - * NOT part of W3C spec so no official documentation - * - * returns: the id of the created contact as param to successCallback - */ - exec(successCallback, null, "Contacts","newContact", []); - }, - chooseContact : function(successCallback, options) { - /* - * Select a contact using the iOS Contact Picker UI - * NOT part of W3C spec so no official documentation - * - * @param errorCB error callback - * @param options object - * allowsEditing: boolean AS STRING - * "true" to allow editing the contact - * "false" (default) display contact - * fields: array of fields to return in contact object (see ContactOptions.fields) - * - * @returns - * id of contact selected - * ContactObject - * if no fields provided contact contains just id information - * if fields provided contact object contains information for the specified fields - * - */ - var win = function(result) { - var fullContact = require('cordova/plugin/contacts').create(result); - successCallback(fullContact.id, fullContact); - }; - exec(win, null, "Contacts","chooseContact", [options]); - } -}; -}); - -// file: lib/ios/plugin/ios/nativecomm.js -define("cordova/plugin/ios/nativecomm", function(require, exports, module) { -var cordova = require('cordova'); - -/** - * Called by native code to retrieve all queued commands and clear the queue. - */ -module.exports = function() { - // Each entry in commandQueue is a JSON string already. - var json = '[' + cordova.commandQueue.join(',') + ']'; - cordova.commandQueue.length = 0; - return json; -}; - -}); - -// file: lib/ios/plugin/ios/notification.js -define("cordova/plugin/ios/notification", function(require, exports, module) { -var Media = require('cordova/plugin/Media'); - -module.exports = { - beep:function(count) { - (new Media('beep.wav')).play(); - } -}; -}); - -// file: lib/common/plugin/logger.js -define("cordova/plugin/logger", function(require, exports, module) { -//------------------------------------------------------------------------------ -// The logger module exports the following properties/functions: -// -// LOG - constant for the level LOG -// ERROR - constant for the level ERROR -// WARN - constant for the level WARN -// INFO - constant for the level INFO -// DEBUG - constant for the level DEBUG -// logLevel() - returns current log level -// logLevel(value) - sets and returns a new log level -// useConsole() - returns whether logger is using console -// useConsole(value) - sets and returns whether logger is using console -// log(message,...) - logs a message at level LOG -// error(message,...) - logs a message at level ERROR -// warn(message,...) - logs a message at level WARN -// info(message,...) - logs a message at level INFO -// debug(message,...) - logs a message at level DEBUG -// logLevel(level,message,...) - logs a message specified level -// -//------------------------------------------------------------------------------ - -var logger = exports; - -var exec = require('cordova/exec'); -var utils = require('cordova/utils'); - -var UseConsole = true; -var Queued = []; -var DeviceReady = false; -var CurrentLevel; - -/** - * Logging levels - */ - -var Levels = [ - "LOG", - "ERROR", - "WARN", - "INFO", - "DEBUG" -]; - -/* - * add the logging levels to the logger object and - * to a separate levelsMap object for testing - */ - -var LevelsMap = {}; -for (var i=0; i<Levels.length; i++) { - var level = Levels[i]; - LevelsMap[level] = i; - logger[level] = level; -} - -CurrentLevel = LevelsMap.WARN; - -/** - * Getter/Setter for the logging level - * - * Returns the current logging level. - * - * When a value is passed, sets the logging level to that value. - * The values should be one of the following constants: - * logger.LOG - * logger.ERROR - * logger.WARN - * logger.INFO - * logger.DEBUG - * - * The value used determines which messages get printed. The logging - * values above are in order, and only messages logged at the logging - * level or above will actually be displayed to the user. E.g., the - * default level is WARN, so only messages logged with LOG, ERROR, or - * WARN will be displayed; INFO and DEBUG messages will be ignored. - */ -logger.level = function (value) { - if (arguments.length) { - if (LevelsMap[value] === null) { - throw new Error("invalid logging level: " + value); - } - CurrentLevel = LevelsMap[value]; - } - - return Levels[CurrentLevel]; -}; - -/** - * Getter/Setter for the useConsole functionality - * - * When useConsole is true, the logger will log via the - * browser 'console' object. Otherwise, it will use the - * native Logger plugin. - */ -logger.useConsole = function (value) { - if (arguments.length) UseConsole = !!value; - - if (UseConsole) { - if (typeof console == "undefined") { - throw new Error("global console object is not defined"); - } - - if (typeof console.log != "function") { - throw new Error("global console object does not have a log function"); - } - - if (typeof console.useLogger == "function") { - if (console.useLogger()) { - throw new Error("console and logger are too intertwingly"); - } - } - } - - return UseConsole; -}; - -/** - * Logs a message at the LOG level. - * - * Parameters passed after message are used applied to - * the message with utils.format() - */ -logger.log = function(message) { logWithArgs("LOG", arguments); }; - -/** - * Logs a message at the ERROR level. - * - * Parameters passed after message are used applied to - * the message with utils.format() - */ -logger.error = function(message) { logWithArgs("ERROR", arguments); }; - -/** - * Logs a message at the WARN level. - * - * Parameters passed after message are used applied to - * the message with utils.format() - */ -logger.warn = function(message) { logWithArgs("WARN", arguments); }; - -/** - * Logs a message at the INFO level. - * - * Parameters passed after message are used applied to - * the message with utils.format() - */ -logger.info = function(message) { logWithArgs("INFO", arguments); }; - -/** - * Logs a message at the DEBUG level. - * - * Parameters passed after message are used applied to - * the message with utils.format() - */ -logger.debug = function(message) { logWithArgs("DEBUG", arguments); }; - -// log at the specified level with args -function logWithArgs(level, args) { - args = [level].concat([].slice.call(args)); - logger.logLevel.apply(logger, args); -} - -/** - * Logs a message at the specified level. - * - * Parameters passed after message are used applied to - * the message with utils.format() - */ -logger.logLevel = function(level, message /* , ... */) { - // format the message with the parameters - var formatArgs = [].slice.call(arguments, 2); - message = utils.vformat(message, formatArgs); - - if (LevelsMap[level] === null) { - throw new Error("invalid logging level: " + level); - } - - if (LevelsMap[level] > CurrentLevel) return; - - // queue the message if not yet at deviceready - if (!DeviceReady && !UseConsole) { - Queued.push([level, message]); - return; - } - - // if not using the console, use the native logger - if (!UseConsole) { - exec(null, null, "Logger", "logLevel", [level, message]); - return; - } - - // make sure console is not using logger - if (console.__usingCordovaLogger) { - throw new Error("console and logger are too intertwingly"); - } - - // log to the console - switch (level) { - case logger.LOG: console.log(message); break; - case logger.ERROR: console.log("ERROR: " + message); break; - case logger.WARN: console.log("WARN: " + message); break; - case logger.INFO: console.log("INFO: " + message); break; - case logger.DEBUG: console.log("DEBUG: " + message); break; - } -}; - -// when deviceready fires, log queued messages -logger.__onDeviceReady = function() { - if (DeviceReady) return; - - DeviceReady = true; - - for (var i=0; i<Queued.length; i++) { - var messageArgs = Queued[i]; - logger.logLevel(messageArgs[0], messageArgs[1]); - } - - Queued = null; -}; - -// add a deviceready event to log queued messages -document.addEventListener("deviceready", logger.__onDeviceReady, false); - -}); - -// file: lib/common/plugin/network.js -define("cordova/plugin/network", function(require, exports, module) { -var exec = require('cordova/exec'), - cordova = require('cordova'), - channel = require('cordova/channel'); - -var NetworkConnection = function () { - this.type = null; - this._firstRun = true; - this._timer = null; - this.timeout = 500; - - var me = this; - - channel.onCordovaReady.subscribeOnce(function() { - me.getInfo(function (info) { - me.type = info; - if (info === "none") { - // set a timer if still offline at the end of timer send the offline event - me._timer = setTimeout(function(){ - cordova.fireDocumentEvent("offline"); - me._timer = null; - }, me.timeout); - } else { - // If there is a current offline event pending clear it - if (me._timer !== null) { - clearTimeout(me._timer); - me._timer = null; - } - cordova.fireDocumentEvent("online"); - } - - // should only fire this once - if (me._firstRun) { - me._firstRun = false; - channel.onCordovaConnectionReady.fire(); - } - }, - function (e) { - // If we can't get the network info we should still tell Cordova - // to fire the deviceready event. - if (me._firstRun) { - me._firstRun = false; - channel.onCordovaConnectionReady.fire(); - } - console.log("Error initializing Network Connection: " + e); - }); - }); -}; - -/** - * Get connection info - * - * @param {Function} successCallback The function to call when the Connection data is available - * @param {Function} errorCallback The function to call when there is an error getting the Connection data. (OPTIONAL) - */ -NetworkConnection.prototype.getInfo = function (successCallback, errorCallback) { - // Get info - exec(successCallback, errorCallback, "NetworkStatus", "getConnectionInfo", []); -}; - -module.exports = new NetworkConnection(); -}); - -// file: lib/common/plugin/notification.js -define("cordova/plugin/notification", function(require, exports, module) { -var exec = require('cordova/exec'); - -/** - * Provides access to notifications on the device. - */ - -module.exports = { - - /** - * Open a native alert dialog, with a customizable title and button text. - * - * @param {String} message Message to print in the body of the alert - * @param {Function} completeCallback The callback that is called when user clicks on a button. - * @param {String} title Title of the alert dialog (default: Alert) - * @param {String} buttonLabel Label of the close button (default: OK) - */ - alert: function(message, completeCallback, title, buttonLabel) { - var _title = (title || "Alert"); - var _buttonLabel = (buttonLabel || "OK"); - exec(completeCallback, null, "Notification", "alert", [message, _title, _buttonLabel]); - }, - - /** - * Open a native confirm dialog, with a customizable title and button text. - * The result that the user selects is returned to the result callback. - * - * @param {String} message Message to print in the body of the alert - * @param {Function} resultCallback The callback that is called when user clicks on a button. - * @param {String} title Title of the alert dialog (default: Confirm) - * @param {String} buttonLabels Comma separated list of the labels of the buttons (default: 'OK,Cancel') - */ - confirm: function(message, resultCallback, title, buttonLabels) { - var _title = (title || "Confirm"); - var _buttonLabels = (buttonLabels || "OK,Cancel"); - exec(resultCallback, null, "Notification", "confirm", [message, _title, _buttonLabels]); - }, - - /** - * Causes the device to vibrate. - * - * @param {Integer} mills The number of milliseconds to vibrate for. - */ - vibrate: function(mills) { - exec(null, null, "Notification", "vibrate", [mills]); - }, - - /** - * Causes the device to beep. - * On Android, the default notification ringtone is played "count" times. - * - * @param {Integer} count The number of beeps. - */ - beep: function(count) { - exec(null, null, "Notification", "beep", [count]); - } -}; -}); - -// file: lib/common/plugin/requestFileSystem.js -define("cordova/plugin/requestFileSystem", function(require, exports, module) { -var FileError = require('cordova/plugin/FileError'), - FileSystem = require('cordova/plugin/FileSystem'), - exec = require('cordova/exec'); - -/** - * Request a file system in which to store application data. - * @param type local file system type - * @param size indicates how much storage space, in bytes, the application expects to need - * @param successCallback invoked with a FileSystem object - * @param errorCallback invoked if error occurs retrieving file system - */ -var requestFileSystem = function(type, size, successCallback, errorCallback) { - var fail = function(code) { - if (typeof errorCallback === 'function') { - errorCallback(new FileError(code)); - } - }; - - if (type < 0 || type > 3) { - fail(FileError.SYNTAX_ERR); - } else { - // if successful, return a FileSystem object - var success = function(file_system) { - if (file_system) { - if (typeof successCallback === 'function') { - // grab the name and root from the file system object - var result = new FileSystem(file_system.name, file_system.root); - successCallback(result); - } - } - else { - // no FileSystem object returned - fail(FileError.NOT_FOUND_ERR); - } - }; - exec(success, fail, "File", "requestFileSystem", [type, size]); - } -}; - -module.exports = requestFileSystem; -}); - -// file: lib/common/plugin/resolveLocalFileSystemURI.js -define("cordova/plugin/resolveLocalFileSystemURI", function(require, exports, module) { -var DirectoryEntry = require('cordova/plugin/DirectoryEntry'), - FileEntry = require('cordova/plugin/FileEntry'), - FileError = require('cordova/plugin/FileError'), - exec = require('cordova/exec'); - -/** - * Look up file system Entry referred to by local URI. - * @param {DOMString} uri URI referring to a local file or directory - * @param successCallback invoked with Entry object corresponding to URI - * @param errorCallback invoked if error occurs retrieving file system entry - */ -module.exports = function(uri, successCallback, errorCallback) { - // error callback - var fail = function(error) { - if (typeof errorCallback === 'function') { - errorCallback(new FileError(error)); - } - }; - // sanity check for 'not:valid:filename' - if(!uri || uri.split(":").length > 2) { - setTimeout( function() { - fail(FileError.ENCODING_ERR); - },0); - return; - } - // if successful, return either a file or directory entry - var success = function(entry) { - var result; - if (entry) { - if (typeof successCallback === 'function') { - // create appropriate Entry object - result = (entry.isDirectory) ? new DirectoryEntry(entry.name, entry.fullPath) : new FileEntry(entry.name, entry.fullPath); - try { - successCallback(result); - } - catch (e) { - console.log('Error invoking callback: ' + e); - } - } - } - else { - // no Entry object returned - fail(FileError.NOT_FOUND_ERR); - } - }; - - exec(success, fail, "File", "resolveLocalFileSystemURI", [uri]); -}; - -}); - -// file: lib/common/plugin/splashscreen.js -define("cordova/plugin/splashscreen", function(require, exports, module) { -var exec = require('cordova/exec'); - -var splashscreen = { - show:function() { - exec(null, null, "SplashScreen", "show", []); - }, - hide:function() { - exec(null, null, "SplashScreen", "hide", []); - } -}; - -module.exports = splashscreen; -}); - -// file: lib/common/utils.js -define("cordova/utils", function(require, exports, module) { -var utils = exports; - -/** - * Returns an indication of whether the argument is an array or not - */ -utils.isArray = function(a) { - return Object.prototype.toString.call(a) == '[object Array]'; -}; - -/** - * Returns an indication of whether the argument is a Date or not - */ -utils.isDate = function(d) { - return Object.prototype.toString.call(d) == '[object Date]'; -}; - -/** - * Does a deep clone of the object. - */ -utils.clone = function(obj) { - if(!obj || typeof obj == 'function' || utils.isDate(obj) || typeof obj != 'object') { - return obj; - } - - var retVal, i; - - if(utils.isArray(obj)){ - retVal = []; - for(i = 0; i < obj.length; ++i){ - retVal.push(utils.clone(obj[i])); - } - return retVal; - } - - retVal = {}; - for(i in obj){ - if(!(i in retVal) || retVal[i] != obj[i]) { - retVal[i] = utils.clone(obj[i]); - } - } - return retVal; -}; - -/** - * Returns a wrappered version of the function - */ -utils.close = function(context, func, params) { - if (typeof params == 'undefined') { - return function() { - return func.apply(context, arguments); - }; - } else { - return function() { - return func.apply(context, params); - }; - } -}; - -/** - * Create a UUID - */ -utils.createUUID = function() { - return UUIDcreatePart(4) + '-' + - UUIDcreatePart(2) + '-' + - UUIDcreatePart(2) + '-' + - UUIDcreatePart(2) + '-' + - UUIDcreatePart(6); -}; - -/** - * Extends a child object from a parent object using classical inheritance - * pattern. - */ -utils.extend = (function() { - // proxy used to establish prototype chain - var F = function() {}; - // extend Child from Parent - return function(Child, Parent) { - F.prototype = Parent.prototype; - Child.prototype = new F(); - Child.__super__ = Parent.prototype; - Child.prototype.constructor = Child; - }; -}()); - -/** - * Alerts a message in any available way: alert or console.log. - */ -utils.alert = function(msg) { - if (alert) { - alert(msg); - } else if (console && console.log) { - console.log(msg); - } -}; - -/** - * Formats a string and arguments following it ala sprintf() - * - * see utils.vformat() for more information - */ -utils.format = function(formatString /* ,... */) { - var args = [].slice.call(arguments, 1); - return utils.vformat(formatString, args); -}; - -/** - * Formats a string and arguments following it ala vsprintf() - * - * format chars: - * %j - format arg as JSON - * %o - format arg as JSON - * %c - format arg as '' - * %% - replace with '%' - * any other char following % will format it's - * arg via toString(). - * - * for rationale, see FireBug's Console API: - * http://getfirebug.com/wiki/index.php/Console_API - */ -utils.vformat = function(formatString, args) { - if (formatString === null || formatString === undefined) return ""; - if (arguments.length == 1) return formatString.toString(); - if (typeof formatString != "string") return formatString.toString(); - - var pattern = /(.*?)%(.)(.*)/; - var rest = formatString; - var result = []; - - while (args.length) { - var arg = args.shift(); - var match = pattern.exec(rest); - - if (!match) break; - - rest = match[3]; - - result.push(match[1]); - - if (match[2] == '%') { - result.push('%'); - args.unshift(arg); - continue; - } - - result.push(formatted(arg, match[2])); - } - - result.push(rest); - - return result.join(''); -}; - -//------------------------------------------------------------------------------ -function UUIDcreatePart(length) { - var uuidpart = ""; - for (var i=0; i<length; i++) { - var uuidchar = parseInt((Math.random() * 256), 10).toString(16); - if (uuidchar.length == 1) { - uuidchar = "0" + uuidchar; - } - uuidpart += uuidchar; - } - return uuidpart; -} - -//------------------------------------------------------------------------------ -function formatted(object, formatChar) { - - try { - switch(formatChar) { - case 'j': - case 'o': return JSON.stringify(object); - case 'c': return ''; - } - } - catch (e) { - return "error JSON.stringify()ing argument: " + e; - } - - if ((object === null) || (object === undefined)) { - return Object.prototype.toString.call(object); - } - - return object.toString(); -} - -}); - - -window.cordova = require('cordova'); - -// file: lib/scripts/bootstrap.js -(function (context) { - var channel = require("cordova/channel"), - _self = { - boot: function () { - /** - * Create all cordova objects once page has fully loaded and native side is ready. - */ - channel.join(function() { - var builder = require('cordova/builder'), - base = require('cordova/common'), - platform = require('cordova/platform'); - - // Drop the common globals into the window object, but be nice and don't overwrite anything. - builder.build(base.objects).intoButDontClobber(window); - - // Drop the platform-specific globals into the window object - // and clobber any existing object. - builder.build(platform.objects).intoAndClobber(window); - - // Merge the platform-specific overrides/enhancements into - // the window object. - if (typeof platform.merges !== 'undefined') { - builder.build(platform.merges).intoAndMerge(window); - } - - // Call the platform-specific initialization - platform.initialize(); - - // Fire event to notify that all objects are created - channel.onCordovaReady.fire(); - - // Fire onDeviceReady event once all constructors have run and - // cordova info has been received from native side. - channel.join(function() { - require('cordova').fireDocumentEvent('deviceready'); - }, channel.deviceReadyChannelsArray); - - }, [ channel.onDOMContentLoaded, channel.onNativeReady ]); - } - }; - - // boot up once native side is ready - channel.onNativeReady.subscribeOnce(_self.boot); - - // _nativeReady is global variable that the native side can set - // to signify that the native code is ready. It is a global since - // it may be called before any cordova JS is ready. - if (window._nativeReady) { - channel.onNativeReady.fire(); - } - -}(window)); - - -})();var PhoneGap = cordova; diff --git a/phonegap/www/css/base.css b/phonegap/www/css/base.css deleted file mode 100644 index 35b1853a2..000000000 --- a/phonegap/www/css/base.css +++ /dev/null @@ -1,2148 +0,0 @@ -/* Base stylesheet for FixMyStreet look - * - * In a mobile first way, this contains the look of the site, and a basic - * layout for browsers that can't handle media queries. Baseline grid of 1.5em. - */ -/* - * HTML5 ✰ Boilerplate, with minor tweaks. - * - * What follows is the result of much research on cross-browser styling. - * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal, - * Kroc Camen, and the H5BP dev community and team. - * - * Detailed information about this CSS: h5bp.com/css - * - * ==|== normalize ========================================================== - */ -/* ============================================================================= - HTML5 display definitions - ========================================================================== */ -article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { - display: block; -} - -audio, canvas, video { - display: inline-block; - *display: inline; - *zoom: 1; -} - -audio:not([controls]) { - display: none; -} - -[hidden] { - display: none; -} - -/* ============================================================================= - Base - ========================================================================== */ -/* - * 1. Correct text resizing oddly in IE6/7 when body font-size is set using em units - * 2. Force vertical scrollbar in non-IE - mySociety removed. - * 3. Prevent iOS text size adjust on device orientation change, without disabling user zoom: h5bp.com/g - */ -html { - font-size: 100%; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} - -/* mySociety change: line-height from 1.4 */ -body { - margin: 0; - font-size: 1em; - line-height: 1.5; -} - -/* mySociety addition: background colour */ -body, button, input, select, textarea { - font-family: sans-serif; - color: #222; - background-color: white; -} - -/* - * Remove text-shadow in selection highlight: h5bp.com/i - * These selection declarations have to be separate - * mySociety change: background colour from #fe57a1 - */ -::-moz-selection { - background: #ffeeaa; - color: #000; - text-shadow: none; -} - -::selection { - background: #ffeeaa; - color: #000; - text-shadow: none; -} - -/* ============================================================================= - Links - ========================================================================== */ -/* mySociety removal: link colours specified elsewhere */ -a:focus { - outline: thin dotted; -} - -/* Improve readability when focused and hovered in all browsers: h5bp.com/h */ -a:hover, a:active { - outline: 0; -} - -/* ============================================================================= - Typography - ========================================================================== */ -abbr[title] { - border-bottom: 1px dotted; -} - -b, strong { - font-weight: bold; -} - -/* mySociety change: from 1em 40px; */ -blockquote { - margin: 1.5em 2em; -} - -dfn { - font-style: italic; -} - -hr { - display: block; - height: 1px; - border: 0; - border-top: 1px solid #ccc; - margin: 1em 0; - padding: 0; -} - -ins { - background: #ff9; - color: #000; - text-decoration: none; -} - -mark { - background: #ff0; - color: #000; - font-style: italic; - font-weight: bold; -} - -/* Redeclare monospace font family: h5bp.com/j */ -pre, code, kbd, samp { - font-family: monospace, serif; - _font-family: 'courier new', monospace; - font-size: 1em; -} - -/* Improve readability of pre-formatted text in all browsers */ -pre { - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; -} - -q { - quotes: none; -} - -q:before, q:after { - content: ""; - content: none; -} - -small, .small-print { - font-size: 85%; -} - -/* Position subscript and superscript content without affecting line-height: h5bp.com/k */ -sub, sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -/* ============================================================================= - Lists - ========================================================================== */ -/* mySociety change: left 40px, top/bottom 1em */ -ul, ol { - margin: 0 0 1.5em; - padding: 0 0 0 2em; -} - -dd { - margin: 0 0 0 2em; -} - -nav ul, nav ol { - list-style: none; - list-style-image: none; - margin: 0; - padding: 0; -} - -/* ============================================================================= - Embedded content - ========================================================================== */ -/* - * 1. Improve image quality when scaled in IE7: h5bp.com/d - * 2. Remove the gap between images and borders on image containers: h5bp.com/e - */ -img { - border: 0; - -ms-interpolation-mode: bicubic; - vertical-align: middle; -} - -/* - * Correct overflow not hidden in IE9 - */ -svg:not(:root) { - overflow: hidden; -} - -/* ============================================================================= - Figures - ========================================================================== */ -figure { - margin: 0; -} - -/* ============================================================================= - Forms - ========================================================================== */ -form { - margin: 0; -} - -fieldset { - border: 0; - margin: 0; - padding: 0; -} - -/* Indicate that 'label' will shift focus to the associated form element */ -label { - cursor: pointer; -} - -/* - * 1. Correct color not inheriting in IE6/7/8/9 - * 2. Correct alignment displayed oddly in IE6/7 - */ -legend { - border: 0; - *margin-left: -7px; - padding: 0; -} - -/* - * 1. Correct font-size not inheriting in all browsers - * 2. Remove margins in FF3/4 S5 Chrome - * 3. Define consistent vertical alignment display in all browsers - */ -button, input, select, textarea { - font-size: 100%; - margin: 0; - vertical-align: baseline; - *vertical-align: middle; -} - -/* - * 1. Define line-height as normal to match FF3/4 (set using !important in the UA stylesheet) - */ -button, input { - line-height: normal; -} - -/* - * 1. Display hand cursor for clickable form elements - * 2. Allow styling of clickable form elements in iOS - * 3. Correct inner spacing displayed oddly in IE7 (doesn't effect IE6) - */ -button, input[type="button"], input[type="reset"], input[type="submit"] { - cursor: pointer; - -webkit-appearance: button; - *overflow: visible; -} - -/* - * Consistent box sizing and appearance - */ -input[type="checkbox"], input[type="radio"] { - box-sizing: border-box; - padding: 0; -} - -input[type="search"] { - -webkit-appearance: textfield; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - box-sizing: content-box; -} - -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/* - * Remove inner padding and border in FF3/4: h5bp.com/l - */ -button::-moz-focus-inner, input::-moz-focus-inner { - border: 0; - padding: 0; -} - -/* - * 1. Remove default vertical scrollbar in IE6/7/8/9 - * 2. Allow only vertical resizing - */ -textarea { - overflow: auto; - vertical-align: top; - resize: vertical; -} - -/* ============================================================================= - Tables - ========================================================================== */ -table { - border-collapse: collapse; - border-spacing: 0; -} - -td { - vertical-align: top; -} - -/* ==|== primary styles ===================================================== - Author: - ========================================================================== */ -/* ==|== non-semantic helper classes ======================================== - Please define your styles before this section. - ========================================================================== */ -/* For image replacement */ -.ir { - display: block; - border: 0; - text-indent: -999em; - overflow: hidden; - background-color: transparent; - background-repeat: no-repeat; - text-align: left; - direction: ltr; - *line-height: 0; -} - -.ir br { - display: none; -} - -/* Hide from both screenreaders and browsers: h5bp.com/u */ -.hidden { - display: none !important; - visibility: hidden; -} - -/* Hide only visually, but have it available for screenreaders: h5bp.com/v */ -.visuallyhidden { - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; -} - -/* Extends the .visuallyhidden class to allow the element to be focusable when navigated to via the keyboard: h5bp.com/p */ -.visuallyhidden.focusable:active, .visuallyhidden.focusable:focus { - clip: auto; - height: auto; - margin: 0; - overflow: visible; - position: static; - width: auto; -} - -/* Hide visually and from screenreaders, but maintain layout */ -.invisible { - visibility: hidden; -} - -/* Contain floats: h5bp.com/q */ -/* mySociety change: rename to cf */ -.cf:before, .cf:after { - content: ""; - display: table; -} - -.cf:after { - clear: both; -} - -.cf { - *zoom: 1; -} - -/* ==|== print styles ======================================================= - Print styles. - Inlined to avoid required HTTP connection: h5bp.com/r - ========================================================================== */ -/* mySociety removal: bits of * and :after */ -@media print { - * { - box-shadow: none !important; - text-shadow: none !important; - filter: none !important; - -ms-filter: none !important; - } - - /* Black prints faster: h5bp.com/s */ - a, a:visited { - text-decoration: underline; - } - - abbr[title]:after { - content: " (" attr(title) ")"; - } - - pre, blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - - thead { - display: table-header-group; - } - - /* h5bp.com/t */ - tr, img { - page-break-inside: avoid; - } - - img { - max-width: 100% !important; - } - - @page { - margin: 0.5cm; -} - - p, h2, h3 { - orphans: 3; - widows: 3; - } - - h2, h3 { - page-break-after: avoid; - } -} -/* COLOURS */ -/* HEADINGS and TYPOGRAPHY */ -body { - font-family: MuseoSans, Helmet, Freesans, sans-serif; - margin: 0; - font-size: 1em; - line-height: 1.5; - color: #222; - background-color: #fff; -} - -p { - font-size: 1em; - font-weight: normal; - margin: 0 0 1em 0; -} - -small, .small-print { - font-family: Helmet, Freesans, sans-serif; - font-style: italic; - font-size: 0.8125em; - line-height: 1.2307em; -} - -h1 { - font-family: 'Museo300-display', MuseoSans, Helmet, Freesans, sans-serif; - font-size: 2em; - line-height: 1em; - font-weight: normal; - margin-top: 0.5em; - margin-bottom: 0.5em; -} - -#front-main h1 { - margin-top: 0.7em; -} - -h1#reports_heading span { - display: none; -} - -h1#reports_heading a { - display: block; - font-size: 50%; -} - -h2 { - font-family: 'Museo300-display', MuseoSans, Helmet, Freesans, sans-serif; - font-size: 1.5em; - /*24px*/ - line-height: 1.3333em; - /*32px*/ - font-weight: normal; - margin-top: 1.333333333em; - /*32px*/ - margin-bottom: 0.666666666em; - /*16px*/ -} - -h3 { - font-size: 1.25em; - line-height: 1.20em; - margin-top: 1.2em; - margin-bottom: 0.8em; - font-weight: normal; -} - -h4 { - font-size: 1em; - font-weight: normal; - margin-bottom: 1em; -} - -ul, ol { - font-size: 1em; - margin-bottom: 2em; - margin-left: 2em; - padding: 0; -} - -li { - margin-bottom: 0.5em; -} - -ul li { - list-style: square; -} - -ol li { - list-style: decimal; -} - -ol.big-numbers { - padding: 0; - margin: 0; - counter-reset: li; -} -ol.big-numbers > li { - position: relative; - list-style: none; - padding: 0 0 0 2.5em; - margin-bottom: 2em; -} -ol.big-numbers > li:before { - content: counter(li); - counter-increment: li; - position: absolute; - left: 0; - top: -0.2em; - color: #ccc; - line-height: 1; - font-family: Helmet, Freesans, sans-serif; - font-weight: bold; - font-size: 2.5em; -} - -dl { - margin: 0; - padding: 0; -} -dl dt { - font-size: 1em; - line-height: 1.5em; - font-weight: bold; -} -dl dd { - font-weight: 1em; - line-height: 1.5em; - margin: 0 0 1em 0; -} - -blockquote p:before { - content: '“'; -} -blockquote p:after { - content: '”'; -} - -pre { - font-family: monospace; -} - -img { - height: auto; -} - -select, input, textarea { - font-size: 99%; - max-width: 95%; -} - -select { - width: 100%; -} - -a, -a:visited { - text-decoration: none; - color: #0BA7D1; -} -a:hover, a:active, -a:visited:hover, -a:visited:active { - text-decoration: underline; - color: #0D7CCE; -} - -.small-print { - margin-bottom: 1.2307em; - color: #666666; -} - -.meta { - color: #555555; - font-style: italic; - margin-bottom: 0px; -} - -.meta-2 { - font-family: Helmet, Freesans, sans-serif; - color: #666666; - font-style: italic; - font-size: 0.75em; -} - -h4.static, h4.static-with-rule { - font-family: Helmet, Freesans, sans-serif; - text-transform: uppercase; - font-size: 0.875em; - line-height: 1.71428em; - color: #666; - margin-top: 2em; -} - -h4.static-with-rule { - background: #f6f6f6; - border-top: 0.25em solid #ffd000; - margin-bottom: 0.25em; - padding: 0.5em 1em; -} - -/* FORMS */ -::-webkit-input-placeholder { - color: #666666; - font-style: italic; - font-size: 0.9375em; -} - -:-moz-placeholder { - color: #666666; - font-style: italic; - font-size: 0.9375em; -} - -:-ms-placeholder { - color: #666666; - font-style: italic; - font-size: 0.9375em; -} - -.placeholder { - color: #666666; - font-style: italic; - font-size: 0.9375em; -} - -fieldset { - margin: 1em; -} - -input[type=text], -input[type=password], -input[type=email], -input[type=file], -textarea { - width: 100%; - padding: 0.5em; - margin: 0 0 0 -0.5em; -} - -textarea { - border: 0.125em solid #888888; - -moz-border-radius: 0.25em; - -webkit-border-radius: 0.25em; - -o-border-radius: 0.25em; - -ms-border-radius: 0.25em; - -khtml-border-radius: 0.25em; - border-radius: 0.25em; - display: block; - font-size: 1em; - line-height: 1.5em; - font-family: Helmet, Freesans, sans-serif; - min-height: 8em; -} - -input[type=text], -input[type=password], -input[type=email], -input[type=file] { - border: 0.125em solid #888888; - -moz-border-radius: 0.25em; - -webkit-border-radius: 0.25em; - -o-border-radius: 0.25em; - -ms-border-radius: 0.25em; - -khtml-border-radius: 0.25em; - border-radius: 0.25em; - display: block; - font-size: 1em; - line-height: 1em; -} - -input[type=file] { - margin-bottom: 1em; -} - -label { - display: block; - margin-top: 1.25em; - margin-bottom: 0.25em; - font-weight: bold; -} -label.inline { - display: inline; - padding: 0 2em 0 1em; - font-weight: normal; -} - -.form-box { - margin: 0 -2em 0.25em -2em; - background: #eeeeee; - padding: 1em 2em 1em 2em; - max-width: 26em; -} -.form-box > input[type=text] { - margin-bottom: 1em; -} -.form-box .title { - font-size: 1.25em; - margin: 0.5em 0; -} -.form-box h5 { - margin: 0; - font-size: 1.125em; - font-weight: normal; -} -.form-box h5 strong { - font-size: 2em; - margin-right: 0.25em; -} - -.ie6 .form-box { - margin: 0 0 0.25em 0; -} - -.form-txt-submit-box { - min-height: 3em; -} -.form-txt-submit-box input[type=password], .form-txt-submit-box input[type=text], .form-txt-submit-box input[type=email] { - width: 65%; - float: left; -} -.form-txt-submit-box input[type=submit] { - float: right; - width: 28%; - margin-right: 0.25em; - padding-top: 0.7em; - padding-bottom: 0.6em; -} - -.checkbox-group { - margin: 1em 0; -} - -div.form-error, -p.form-error { - display: -moz-inline-box; - -moz-box-orient: vertical; - display: inline-block; - vertical-align: middle; - *vertical-align: auto; - background: #ff0000; - color: #fff; - padding: 0 0.5em; - margin: 0 0 0 -0.5em; - -moz-border-radius: 0.25em 0.25em 0 0; - -webkit-border-radius: 0.25em 0.25em 0 0; - -o-border-radius: 0.25em 0.25em 0 0; - -ms-border-radius: 0.25em 0.25em 0 0; - -khtml-border-radius: 0.25em 0.25em 0 0; - border-radius: 0.25em 0.25em 0 0; -} -div.form-error, -p.form-error { - *display: inline; -} - -input.form-error, -textarea.form-error { - border-color: #ff0000; - -moz-border-radius: 0 0.25em 0.25em 0.25em; - -webkit-border-radius: 0 0.25em 0.25em 0.25em; - -o-border-radius: 0 0.25em 0.25em 0.25em; - -ms-border-radius: 0 0.25em 0.25em 0.25em; - -khtml-border-radius: 0 0.25em 0.25em 0.25em; - border-radius: 0 0.25em 0.25em 0.25em; -} - -ul.error { - background: #ff0000; - color: #fff; - padding: 0 0.5em; - margin: 0 0 0 -0.5em; - -moz-border-radius: 0.25em; - -webkit-border-radius: 0.25em; - -o-border-radius: 0.25em; - -ms-border-radius: 0.25em; - -khtml-border-radius: 0.25em; - border-radius: 0.25em; -} - -div.label-valid, -p.label-valid { - display: none !important; - visibility: hidden; -} - -/*** LAYOUT ***/ -.container { - padding: 0 1em 1em; -} - -.full-width, .shadow-wrap, #footer-mobileapps, #map_box, .promo, .alert, #front-main #postcodeForm { - margin: 0 -1em; -} - -#site-header { - border-top: 0.25em solid #ffd000; - height: 3em; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #000000), color-stop(10%, #222222), color-stop(90%, #222222), color-stop(100%, #000000)); - background: -webkit-linear-gradient(#000000, #222222 10%, #222222 90%, #000000); - background: -moz-linear-gradient(#000000, #222222 10%, #222222 90%, #000000); - background: -o-linear-gradient(#000000, #222222 10%, #222222 90%, #000000); - background: -ms-linear-gradient(#000000, #222222 10%, #222222 90%, #000000); - background: linear-gradient(#000000, #222222 10%, #222222 90%, #000000); -} -#site-header .container { - min-height: 4em; -} - -#site-logo { - display: block; - width: 175px; - height: 40px; - top: 0.4em; - background: url("../images/sprite.png") -3px -3px no-repeat; - text-indent: -999999px; - position: absolute; - z-index: 2; -} - -.ie6 #site-logo { - background: url("../images/ie_logo.gif") 0 -5px no-repeat; -} - -.ie7 #site-logo { - background: url("../images/sprite.png") -3px -3px no-repeat; -} - -#nav-link { - width: 50px; - height: 48px; - background: url("../images/sprite.png") -5px -916px no-repeat; - display: block; - text-indent: -999999px; - position: absolute; - right: 2em; - top: -2px; -} -#nav-link:hover { - top: 2px; -} - -#main-nav ul { - list-style-type: none; - padding: 0; - margin: 0; -} -#main-nav ul li { - list-style-type: none; - padding: 0; - margin: 0; - border: 0; -} -#main-nav ul li a, #main-nav ul li span { - display: block; - padding: 0.5em 1em; - background: #f6f6f6; - color: #333; - font-size: 1.25em; - border-bottom: 0.25em solid #333; -} -#main-nav ul li a:hover, #main-nav ul li span.hover { - background: #333; - color: #fff; - text-decoration: none; -} -#main-nav ul li span { - background-color: #ccc; -} -#main-nav ul#mysoc-menu li a { - background: #ffd000; -} -#main-nav ul#mysoc-menu li a#mysoc-logo { - background-image: url("../images/sprite.png"); - background-repeat: no-repeat; - background-position: -240px -38px; - text-indent: -999999px; -} - -.ie6 #main-nav ul#mysoc-menu li a#mysoc-logo { - background: url("../images/ie_mysoc_logo.gif") center no-repeat; -} - -.ie7 #main-nav ul#mysoc-menu li a#mysoc-logo { - background: url("../images/sprite.png") -240px -38px no-repeat; -} - -.wrapper { - width: 100%; - display: table; - caption-side: bottom; -} - -#user-meta p { - position: relative; - background: #ffd000; - padding: 1em 6em 1em 1em; -} -#user-meta p a { - position: absolute; - right: 1em; - display: -moz-inline-box; - -moz-box-orient: vertical; - display: inline-block; - vertical-align: middle; - *vertical-align: auto; - text-transform: uppercase; - font-size: 0.75em; - background: #333; - padding: 0.25em 0.75em; - color: #fff; - -moz-border-radius: 0.25em; - -webkit-border-radius: 0.25em; - -o-border-radius: 0.25em; - -ms-border-radius: 0.25em; - -khtml-border-radius: 0.25em; - border-radius: 0.25em; -} -#user-meta p a { - *display: inline; -} - -.shadow-wrap ul#key-tools { - list-style-type: none; - padding: 0; - margin: 0; - margin-bottom: 1em; - display: table; - width: 100%; -} -.shadow-wrap ul#key-tools li { - list-style-type: none; - padding: 0; - margin: 0; - border: 0; -} -.shadow-wrap ul#key-tools li { - display: table-cell; - vertical-align: bottom; - text-align: center; - border-right: 0.25em solid #fff; -} -.shadow-wrap ul#key-tools li:last-child { - border-right: none; -} -.shadow-wrap ul#key-tools li a { - display: block; - background-color: #f5f5f5; - background-repeat: no-repeat; - color: #333; - padding: 4em 2em 1em 2em; - text-transform: uppercase; - font-size: 0.6875em; - font-family: Helmet, Freesans, sans-serif; -} -.shadow-wrap ul#key-tools li a:hover, .shadow-wrap ul#key-tools li a.hover, .shadow-wrap ul#key-tools li a.active { - text-decoration: none; - background-color: #333; - color: #fff; -} -.shadow-wrap ul#key-tools li a.abuse { - background-image: url("../images/sprite.png"); - background-position: center -2424px; -} -.shadow-wrap ul#key-tools li a.feed { - background-image: url("../images/sprite.png"); - background-position: center -2563px; -} -.shadow-wrap ul#key-tools li a.chevron { - background-image: url("../images/sprite.png"); - background-position: center -2716px; -} -.shadow-wrap ul#key-tools li a.hover, .shadow-wrap ul#key-tools li a.active { - background-image: url("../images/sprite.png"); - background-position: center -2064px; -} - -.ie6 .shadow-wrap ul#key-tools, .ie7 .shadow-wrap ul#key-tools { - background: #f5f5f5; -} -.ie6 .shadow-wrap ul#key-tools li, .ie7 .shadow-wrap ul#key-tools li { - float: left; -} -.ie6 .shadow-wrap ul#key-tools li a, .ie7 .shadow-wrap ul#key-tools li a { - padding-left: 1.5em; - padding-right: 3em; -} - -.ie6 .shadow-wrap ul#key-tools li a.abuse { - background-image: url("../images/ie_key_tools_sprite.gif"); - background-position: right 0px; -} -.ie6 .shadow-wrap ul#key-tools li a.feed { - background-image: url("../images/ie_key_tools_sprite.gif"); - background-position: right -58px; -} -.ie6 .shadow-wrap ul#key-tools li a.chevron { - background-image: url("../images/ie_key_tools_sprite.gif"); - background-position: right -116px; -} -.ie6 .shadow-wrap ul#key-tools li a:hover { - background-image: url("../images/ie_key_tools_sprite_dark.gif"); -} - -#footer-mobileapps { - padding: 1em; -} -#footer-mobileapps h4 { - margin: 0; -} -#footer-mobileapps ul { - list-style-type: none; - padding: 0; - margin: 0; -} -#footer-mobileapps ul li { - list-style-type: none; - padding: 0; - margin: 0; - border: 0; -} -#footer-mobileapps ul li { - border-bottom: 1px solid #AFAFAF; -} -#footer-mobileapps ul li:last-child { - border-bottom: none; -} -#footer-mobileapps ul li a { - display: block; - padding: 0.5em 0; -} - -#footer-help ul { - list-style-type: none; - padding: 0; - margin: 0; -} -#footer-help ul li { - list-style-type: none; - padding: 0; - margin: 0; - border: 0; -} -#footer-help ul li { - border-bottom: 1px solid #AFAFAF; -} -#footer-help ul li:last-child { - border-bottom: none; -} -#footer-help ul li h4 { - margin: 0.75em 0 0.25em 0; -} -#footer-help ul li p { - font-size: 0.75em; -} - -/*BUTTONS*/ -button, input[type=submit], .btn { - cursor: pointer; - font-size: 0.875em; - font-family: Helmet, Freesans, sans-serif; - font-weight: bold; - text-transform: uppercase; - line-height: 1.375em; - padding: 0.7em 0.5em 0.5em 0.5em; - margin: 0; - width: auto; - height: auto; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -o-border-radius: 4px; - -ms-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - background: #eeeeee; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eeeeee), color-stop(100%, #cccccc)); - background: -webkit-linear-gradient(#eeeeee, #cccccc); - background: -moz-linear-gradient(#eeeeee, #cccccc); - background: -o-linear-gradient(#eeeeee, #cccccc); - background: -ms-linear-gradient(#eeeeee, #cccccc); - background: linear-gradient(#eeeeee, #cccccc); - border: 1px solid #999999; - color: #333333; -} -button:hover, input[type=submit]:hover, .btn:hover { - background: #777777; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #999999), color-stop(100%, #777777)); - background: -webkit-linear-gradient(#999999, #777777); - background: -moz-linear-gradient(#999999, #777777); - background: -o-linear-gradient(#999999, #777777); - background: -ms-linear-gradient(#999999, #777777); - background: linear-gradient(#999999, #777777); - text-decoration: none; - border: 1px solid #666666; - color: white; -} - -.green-btn, -button.green-btn, -input.green-btn { - cursor: pointer; - font-size: 0.875em; - font-family: Helmet, Freesans, sans-serif; - font-weight: bold; - text-transform: uppercase; - line-height: 1.375em; - padding: 0.7em 0.5em 0.5em 0.5em; - margin: 0; - width: auto; - height: auto; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -o-border-radius: 4px; - -ms-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - background: #9fde23; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #9fde23), color-stop(100%, #7fb900)); - background: -webkit-linear-gradient(#9fde23, #7fb900); - background: -moz-linear-gradient(#9fde23, #7fb900); - background: -o-linear-gradient(#9fde23, #7fb900); - background: -ms-linear-gradient(#9fde23, #7fb900); - background: linear-gradient(#9fde23, #7fb900); - border: 1px solid #5b9700; - color: white; -} -.green-btn:hover, -button.green-btn:hover, -input.green-btn:hover { - background: #9fde23; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #7fb900), color-stop(100%, #9fde23)); - background: -webkit-linear-gradient(#7fb900, #9fde23); - background: -moz-linear-gradient(#7fb900, #9fde23); - background: -o-linear-gradient(#7fb900, #9fde23); - background: -ms-linear-gradient(#7fb900, #9fde23); - background: linear-gradient(#7fb900, #9fde23); - text-decoration: none; - border: 1px solid #5b9700; - color: white; -} - -.red-btn, -button.red-btn, -input.red-btn { - cursor: pointer; - font-size: 0.875em; - font-family: Helmet, Freesans, sans-serif; - font-weight: bold; - text-transform: uppercase; - line-height: 1.375em; - padding: 0.7em 0.5em 0.5em 0.5em; - margin: 0; - width: auto; - height: auto; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -o-border-radius: 4px; - -ms-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - background: #ff0038; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ff0038), color-stop(100%, #bf002a)); - background: -webkit-linear-gradient(#ff0038, #bf002a); - background: -moz-linear-gradient(#ff0038, #bf002a); - background: -o-linear-gradient(#ff0038, #bf002a); - background: -ms-linear-gradient(#ff0038, #bf002a); - background: linear-gradient(#ff0038, #bf002a); - border: 1px solid #80001c; - color: white; -} -.red-btn:hover, -button.red-btn:hover, -input.red-btn:hover { - background: #ff0038; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bf002a), color-stop(100%, #ff0038)); - background: -webkit-linear-gradient(#bf002a, #ff0038); - background: -moz-linear-gradient(#bf002a, #ff0038); - background: -o-linear-gradient(#bf002a, #ff0038); - background: -ms-linear-gradient(#bf002a, #ff0038); - background: linear-gradient(#bf002a, #ff0038); - text-decoration: none; - border: 1px solid #80001c; - color: white; -} - -.final-submit, -input.final-submit { - margin: 1em 0.5em; - float: right; -} - -.button-right, -.button-left, -a.button-right, -a.button-left { - display: -moz-inline-box; - -moz-box-orient: vertical; - display: inline-block; - vertical-align: middle; - *vertical-align: auto; - cursor: pointer; - font-size: 1em; - line-height: 1; - margin: 0; - border: 1px solid #999; - color: #333; - background: #eee; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -o-border-radius: 4px; - -ms-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; -} -.button-right, -.button-left, -a.button-right, -a.button-left { - *display: inline; -} -.button-right:hover, -.button-left:hover, -a.button-right:hover, -a.button-left:hover { - color: #fff; - background: #777; - text-decoration: none; - border: 1px solid #666; -} - -.button-right, -a.button-right, -:hover.button-right, -a:hover.button-right { - padding: 1em 3em 1em 1em; - background-image: url("../images/sprite.png"); - background-repeat: no-repeat; - background-position: right -686px; -} - -.button-left, -a.button-left, -:hover.button-left, -a:hover.button-left { - padding: 1em 1em 1em 3em; - background-image: url("../images/sprite.png"); - background-repeat: no-repeat; - background-position: -18px -802px; -} - -.big-green-banner { - position: relative; - z-index: 1000; - top: -1.75em; - background: #00bd08; - color: #fff; - padding: 1em; - text-transform: uppercase; - text-align: center; - font-size: 0.875em; -} -.big-green-banner:before { - content: ""; - left: -0.5em; - top: 0; - position: absolute; - width: 0; - height: 0; - border-left: 0.5em solid transparent; - border-bottom: 0.5em solid #4B8304; -} - -.banner { - position: relative; - z-index: 1100; -} -.banner p { - position: absolute; - top: -1.95em; - right: 0; - display: -moz-inline-box; - -moz-box-orient: vertical; - display: inline-block; - vertical-align: middle; - *vertical-align: auto; - font-size: 0.6875em; - line-height: 1em; - padding: 0.5em 1em; - margin: 0; - color: #1a1a1a; - background: #ccc; - text-transform: uppercase; - text-align: center; -} -.banner p { - *display: inline; -} -.banner p:before { - content: ""; - left: -0.5em; - top: 0; - position: absolute; - width: 0; - height: 0; - border-left: 0.5em solid transparent; - border-bottom: 0.5em solid #888; -} -.banner p#fixed { - color: #fff; - background: #00bd08; -} -.banner p#fixed:before { - border-bottom: 0.5em solid #4B8304; -} - -/*OTHER*/ -.plain-list { - list-style-type: none; - padding: 0; - margin: 0; -} -.plain-list li { - list-style-type: none; - padding: 0; - margin: 0; - border: 0; -} -.plain-list li { - margin-bottom: 1em; -} - -.issue-list { - margin: 0 0 1em 0; - padding: 0; - border-bottom: 0.25em solid #ffd000; -} -.issue-list li { - list-style: none; - background: #f6f6f6; - margin: 0.25em 0 0 0; - padding: 0.5em 1em; - display: block; -} -.issue-list li .update-wrap { - display: table; - width: 100%; -} -.issue-list li .update-wrap .update-text, .issue-list li .update-wrap .update-img { - display: table-cell; - vertical-align: top; -} -.issue-list li .update-wrap .update-text p, .issue-list li .update-wrap .update-img p { - margin-bottom: 0.5em; -} -.issue-list li .update-wrap .update-img { - text-align: right; -} -.issue-list li .update-wrap .update-img img { - margin: -0.5em -1em 0 0.5em; - height: auto; -} - -.ie7 .issue-list li .update-wrap .update-text, .ie7 .issue-list li .update-wrap .update-text { - float: left; - width: 19em; -} -.ie7 .issue-list li .update-wrap .update-img, .ie7 .issue-list li .update-wrap .update-img { - float: right; -} - -.issue-list-a, .list-a { - margin: 0 0 1em 0; - padding: 0; - border-bottom: 0.25em solid #ffd000; -} -.issue-list-a li, .list-a li { - list-style: none; - margin: 0; - padding: 0; -} -.issue-list-a li a, .list-a li a { - margin: 0.25em 0 0 0; - display: table; - background: #f6f6f6; - color: #222222; - width: 100%; -} -.issue-list-a li a:hover, .list-a li a:hover { - text-decoration: none; - color: #222222; - background: #e6e6e6; -} -.issue-list-a li a .text, .list-a li a .text, .issue-list-a li a .img, .list-a li a .img { - display: table-cell; - vertical-align: top; -} -.issue-list-a li a .img, .list-a li a .img { - text-align: right; -} -.issue-list-a li a .img img, .list-a li a .img img { - height: auto; -} -.issue-list-a li a .text, .list-a li a .text { - padding: 0.25em 1em; -} -.issue-list-a li a .text h4, .list-a li a .text h4 { - margin: 0; -} -.issue-list-a li a .text small, .list-a li a .text small, .issue-list-a li a .text .small-print, .list-a li a .text .small-print { - color: #666; -} -.issue-list-a li > p, .list-a li > p { - margin: 0.25em 0 0 0; - padding: 0.5em 1em; - background: #f6f6f6; -} - -.list-a a { - padding: 0.5em 1em; - font-weight: bold; -} - -.ie6 .issue-list-a, .ie6 .list-a, .ie7 .issue-list-a, .ie7 .list-a { - overflow: hidden; -} -.ie6 .issue-list-a li a, .ie6 .list-a li a, .ie7 .issue-list-a li a, .ie7 .list-a li a { - clear: both; - width: auto; - display: block; - overflow: hidden; -} -.ie6 .issue-list-a li a .text, .ie6 .list-a li a .text, .ie7 .issue-list-a li a .text, .ie7 .list-a li a .text { - float: left; - width: 18em; -} -.ie6 .issue-list-a li a .img, .ie6 .list-a li a .img, .ie7 .issue-list-a li a .img, .ie7 .list-a li a .img { - width: 6.25em; - float: right; -} - -.ie6 .issue-list-a li a, .ie6 .list-a li a { - height: 5.5em; -} -.ie6 .issue-list-a li a .img img, .ie6 .list-a li a .img img { - height: 60px; -} - -.update-img a { - display: -moz-inline-box; - -moz-box-orient: vertical; - display: inline-block; - vertical-align: middle; - *vertical-align: auto; - position: relative; -} -.update-img a { - *display: inline; -} -.update-img a span { - position: absolute; - top: 0; - right: 0; - display: block; - width: 20px; - height: 20px; - opacity: 0.5; - background: white url(images/sprite.png) -16px -1098px no-repeat; - font: 0/0 a; - color: transparent; -} -.update-img a:hover span { - opacity: 1; -} - -.issue-list li .update-wrap .update-img a span { - right: -16px; - top: -8px; -} - -.problem-header { - margin-bottom: 1em; -} - -.problem-header .update-img { - float: right; - margin-left: 0.5em; - margin-bottom: 0.5em; -} - -#map_box { - background: #333; - height: 29em; - margin-bottom: 1em; - overflow: hidden; - position: relative; -} -#map_box #map { - width: 100%; - height: 100%; -} - -#fms_pan_zoom { - right: 0.5em !important; - top: 0.5em !important; - left: 0.5em !important; -} - -.ie6 #fms_pan_zoom { - left: auto !important; -} - -#fms_pan_zoom_panup, -#fms_pan_zoom_pandown, -#fms_pan_zoom_panleft, -#fms_pan_zoom_panright, -#fms_pan_zoom_zoomin, -#fms_pan_zoom_zoomout { - width: 36px !important; - height: 36px !important; - text-indent: -999999px; - opacity: 0.85; - background: url("../images/sprite.png") no-repeat; - filter: none !important; -} -#fms_pan_zoom_panup:hover, -#fms_pan_zoom_pandown:hover, -#fms_pan_zoom_panleft:hover, -#fms_pan_zoom_panright:hover, -#fms_pan_zoom_zoomin:hover, -#fms_pan_zoom_zoomout:hover { - opacity: 1; -} - -#fms_pan_zoom_zoomworld { - display: none !important; - visibility: none !important; -} - -#fms_pan_zoom_panup { - background-position: -42px -222px; - right: 30px !important; - left: auto !important; - top: 0 !important; -} - -#fms_pan_zoom_pandown { - background-position: -42px -282px; - right: 30px !important; - left: auto !important; - top: 72px !important; -} - -#fms_pan_zoom_panleft { - background-position: -12px -252px; - width: 48px !important; - right: 48px !important; - left: auto !important; - top: 36px !important; -} - -#fms_pan_zoom_panright { - background-position: -60px -252px; - width: 48px !important; - right: 0 !important; - left: auto !important; - top: 36px !important; -} - -#fms_pan_zoom_zoomin { - background-position: -152px -223px; - height: 44px !important; - left: 0 !important; - top: 0 !important; -} - -#fms_pan_zoom_zoomout { - background-position: -152px -259px; - height: 44px !important; - left: 0 !important; - top: 44px !important; -} - -#sub_map_links { - position: absolute; - left: 0; - right: 0; - bottom: 0; - z-index: 1100; - background: #333; - background: rgba(0, 0, 0, 0.7); - margin: 0; -} -#sub_map_links a { - display: -moz-inline-box; - -moz-box-orient: vertical; - display: inline-block; - vertical-align: middle; - *vertical-align: auto; - font-size: 0.6875em; - color: #fff; - padding: 0.6em 3em 0.5em 1em; - background-repeat: no-repeat; -} -#sub_map_links a { - *display: inline; -} -#sub_map_links a#hide_pins_link { - background-image: url("../images/sprite.png"); - background-position: right -3976px; -} -#sub_map_links a#all_pins_link { - background-image: url("../images/sprite.png"); - background-position: right -4022px; -} -#sub_map_links a#map_permalink { - background-image: url("../images/sprite.png"); - background-position: right -4070px; -} -#sub_map_links a.feed { - background-image: url("../images/sprite.png"); - background-position: right -3936px; -} -#sub_map_links a:hover { - background-color: #000; - text-decoration: none; -} - -.ie6 #sub_map_links a#hide_pins_link { - background-image: url("../images/ie_sub_map_links_sprite.gif"); - background-position: right 1px; -} -.ie6 #sub_map_links a#all_pins_link { - background-image: url("../images/ie_sub_map_links_sprite.gif"); - background-position: right -45px; -} -.ie6 #sub_map_links a#map_permalink { - background-image: url("../images/ie_sub_map_links_sprite.gif"); - background-position: right -93px; -} - -#mob_sub_map_links { - position: absolute; - z-index: 1100; - bottom: 0; - display: table; - margin: 0; - width: 100%; - background: rgba(0, 0, 0, 0.7); -} -#mob_sub_map_links a { - color: #fff; - width: 50%; - padding: 0.5em 0; - font-size: 1em; - display: table-cell; - text-align: center; -} -#mob_sub_map_links a:hover { - background: #000; - text-decoration: none; -} -#mob_sub_map_links.map_complete { - background: none; - display: block; - border-bottom: 4px solid #fff; -} -#mob_sub_map_links.map_complete a#try_again { - display: block; - margin: 0 auto 6em auto; - background: rgba(0, 0, 0, 0.8); - -moz-border-radius: 0.5em; - -webkit-border-radius: 0.5em; - -o-border-radius: 0.5em; - -ms-border-radius: 0.5em; - -khtml-border-radius: 0.5em; - border-radius: 0.5em; -} -#mob_sub_map_links.map_complete a#mob_ok { - position: absolute; - right: 1em; - bottom: 0; - height: 20px; - padding-top: 30px; - display: block; - width: 4em; - background: white url("../images/sprite.png") 12px -4140px no-repeat; - color: #000; -} - -.mobile-map-banner { - margin: 0; - position: absolute; - top: 0; - left: 0; - right: 0; - font-size: 0.75em; - background: rgba(0, 0, 0, 0.7); - padding: 0.75em 30px; -} -.mobile-map-banner a { - cursor: pointer; - font-size: 0.875em; - font-family: Helmet, Freesans, sans-serif; - font-weight: bold; - text-transform: uppercase; - line-height: 1.375em; - padding: 0.7em 0.5em 0.5em 0.5em; - margin: 0; - width: auto; - height: auto; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -o-border-radius: 4px; - -ms-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - background: #333333; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #333333), color-stop(100%, #1a1a1a)); - background: -webkit-linear-gradient(#333333, #1a1a1a); - background: -moz-linear-gradient(#333333, #1a1a1a); - background: -o-linear-gradient(#333333, #1a1a1a); - background: -ms-linear-gradient(#333333, #1a1a1a); - background: linear-gradient(#333333, #1a1a1a); - border: 1px solid #1a1a1a; - color: white; - font-weight: normal; - font-size: 0.875em; - line-height: 1; - padding: 0.5em 0.75em; - position: absolute; - left: 0.3em; - top: 0.3em; -} -.mobile-map-banner a:hover { - background: #333333; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1a1a1a), color-stop(100%, #333333)); - background: -webkit-linear-gradient(#1a1a1a, #333333); - background: -moz-linear-gradient(#1a1a1a, #333333); - background: -o-linear-gradient(#1a1a1a, #333333); - background: -ms-linear-gradient(#1a1a1a, #333333); - background: linear-gradient(#1a1a1a, #333333); - text-decoration: none; - border: 1px solid #1a1a1a; - color: white; -} - -.olControlAttribution { - bottom: 3.25em !important; - right: 0.25em !important; - left: 0.25em !important; - color: #222222; - font-size: 0.75em !important; -} - -.olControlAttribution img { - vertical-align: bottom; -} - -.olControlPermalink { - bottom: 3px !important; - right: 3px; -} - -/* Drag is only present in noscript form. XXX Copy from core. */ -#drag input, #drag img { - position: absolute; - border: none; - max-width: none; -} -#drag input { - cursor: crosshair; - background-color: #cccccc; -} -#drag img { - cursor: move; -} -#drag img.pin { - z-index: 100; - background-color: inherit; -} -#drag a img.pin { - cursor: pointer; - cursor: hand; -} - -a.rap-notes-trigger, -a:hover.rap-notes-trigger { - display: block; - width: 90%; - padding-left: 5%; - padding-right: 5%; -} - -.rap-notes { - margin: 1em 0; -} - -#problems-nav { - padding: 0 1em; - overflow: hidden; - border-bottom: 0.25em solid #333; -} -#problems-nav ul { - list-style-type: none; - padding: 0; - margin: 0; - display: table; - width: 100%; -} -#problems-nav ul li { - list-style-type: none; - padding: 0; - margin: 0; - border: 0; -} -#problems-nav ul li { - display: table-cell; - border-right: 0.25em solid #fff; -} -#problems-nav ul li:last-child { - border-right: none; -} -#problems-nav ul li a { - display: block; - background: #e2e2e2; - color: #333; - padding: 1em; - text-transform: uppercase; - text-align: center; -} -#problems-nav ul li a:hover { - text-decoration: none; - background: #e6e6e6; -} -#problems-nav ul li a.active { - background: #333; - color: #fff; -} - -.ie6 #problems-nav, .ie7 #problems-nav { - clear: both; - margin: 0; - padding: 0; -} -.ie6 #problems-nav ul li, .ie7 #problems-nav ul li { - float: left; -} - -table.nicetable { - width: 100%; - margin-bottom: 2em; -} -table.nicetable thead { - border-bottom: 0.25em solid #ccc; -} -table.nicetable thead th { - font-size: 0.75em; -} -table.nicetable tr.a { - background: #f6f6f6; -} -table.nicetable tr:nth-child(even) { - background: #f6f6f6; -} -table.nicetable tr.gone { - color: #666666; - background-color: #cccccc; -} -table.nicetable tr:hover { - background: #FFF5CC; - cursor: pointer; -} -table.nicetable tr td { - padding: 0.25em; -} -table.nicetable tr td a:hover { - text-decoration: none; -} -table.nicetable .title { - text-align: left; -} -table.nicetable .data { - width: 12%; -} - -.promo { - background: #ffd000; - padding: 1em; - margin-bottom: 1em; - overflow: hidden; - position: relative; -} -.promo .close-promo { - position: absolute; - top: 0.5em; - right: 0.5em; - display: block; - width: 16px; - height: 16px; - text-indent: -999999px; - background: url(images/sprite.png) -341px -263px no-repeat; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -o-border-radius: 4px; - -ms-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; -} -.promo .close-promo:hover { - background: #222222 url(images/sprite.png) -341px -223px no-repeat; -} - -.alert { - background: #ff0000; - padding: 1em; - margin-bottom: 1em; - color: #fff; -} -.alert a, .alert a:hover { - color: #ffd000; -} - -.pagination { - text-align: center; - padding: 0.5em 1em; - background: #eee; - position: relative; -} -.pagination .prev { - position: absolute; - left: 0.5em; -} -.pagination .next { - position: absolute; - right: 0.5em; -} -.pagination a { - display: -moz-inline-box; - -moz-box-orient: vertical; - display: inline-block; - vertical-align: middle; - *vertical-align: auto; - background: #ffd000; - padding-left: 0.5em; - padding-right: 0.5em; - color: #1a1a1a; -} -.pagination a { - *display: inline; -} -.pagination a:hover { - color: #1a1a1a; - text-decoration: none; - background: #e7bd00; -} - -.desk-only { - display: none !important; -} - -.js .hidden-js { - display: none; - visibility: hidden; -} - -.no-js .hidden-nojs { - display: none !important; - visibility: hidden; -} - -/* Front page */ -#front-main { - text-align: center; -} -#front-main h2 { - font-style: italic; - font-family: Helmet, Freesans, sans-serif; - font-size: 1.1875em; - color: #4d4d4d; -} -#front-main #postcodeForm { - padding: 1em; - color: #222222; - background: #ffd000; - font-family: Helmet, Freesans, sans-serif; -} -#front-main #postcodeForm label { - margin: 0; -} -#front-main #postcodeForm div { - display: table; - width: 100%; - background: #fff; - border: 1px solid #f3b11e; -} -#front-main #postcodeForm div input#pc { - display: table-cell; - margin: 0; - padding: 0.25em 2%; - width: 82%; - border: none; - background: none; - line-height: 1.5em; -} -#front-main #postcodeForm div input#submit { - display: table-cell; - border: none; - padding: 0; - margin: 0; - width: 14%; - height: 35px; - background: #000; - color: #fff; - text-transform: uppercase; - -moz-border-radius: 0; - -webkit-border-radius: 0; - -o-border-radius: 0; - -ms-border-radius: 0; - -khtml-border-radius: 0; - border-radius: 0; -} -#front-main #postcodeForm div input#submit:hover { - background: #333; -} -#front-main a#geolocate_link { - display: -moz-inline-box; - -moz-box-orient: vertical; - display: inline-block; - vertical-align: middle; - *vertical-align: auto; - vertical-align: top; - background: #1a1a1a; - color: #C8C8C8; - padding: 0.5em; - font-family: Helmet, Freesans, sans-serif; - font-size: 0.8125em; - -moz-border-radius: 0 0 0.25em 0.25em; - -webkit-border-radius: 0 0 0.25em 0.25em; - -o-border-radius: 0 0 0.25em 0.25em; - -ms-border-radius: 0 0 0.25em 0.25em; - -khtml-border-radius: 0 0 0.25em 0.25em; - border-radius: 0 0 0.25em 0.25em; -} -#front-main a#geolocate_link { - *display: inline; -} -#front-main a#geolocate_link:hover { - text-decoration: none; - background: #2a2a2a; -} - -#front-howto #front_stats { - display: table; - width: 100%; - color: #222222; - background: #ffd000; - font-family: Helmet, Freesans, sans-serif; -} -#front-howto #front_stats div { - display: table-cell; - text-align: center; - padding: 1em; - line-height: 1.25em; - font-size: 0.8125em; - font-weight: bold; -} -#front-howto #front_stats div big { - display: block; - margin-bottom: 0.5em; - font-size: 1.5385em; -} - -#front-recently .issue-list-a, #front-recently .list-a { - border-bottom: none; - margin-bottom: 0; -} - -#alerts ul { - margin-bottom: 1em; -} -#alerts li { - padding: 0em; - margin-bottom: 0.5em; -} -#alerts .a { - background: #f6f6f6; -} -#alerts img[width="16"] { - float: right; -} diff --git a/phonegap/www/css/layout.css b/phonegap/www/css/layout.css deleted file mode 100644 index 568c81389..000000000 --- a/phonegap/www/css/layout.css +++ /dev/null @@ -1,1012 +0,0 @@ -/* COLOURS */ -.desk-only { - display: block !important; -} - -.mob-only { - display: none !important; -} - -body { - background: #1a1a1a url../images/tile.jpg) 0 0 repeat; -} - -body.white { - background: #FFFFFF; -} - -.container { - margin: 0 auto; - padding: 0em; - width: 60em; - position: relative; - z-index: 1; -} - -.ie6 .container, .ie7 .container { - z-index: 100; -} - -.wrapper { - display: table; - caption-side: top; - width: 100%; -} -.wrapper .table-cell { - display: table-cell; -} - -.ie6 .wrapper, .ie7 .wrapper { - padding-top: 4em; -} - -.nav-wrapper { - display: table-caption; -} -.nav-wrapper .nav-wrapper-2 { - width: 100%; - min-height: 4em; - position: absolute; - border-top: 0.25em solid #ffd000; - z-index: 2; -} - -.white .nav-wrapper .nav-wrapper-2 { - background: #1a1a1a url../images/tile.jpg) 0 0 repeat; -} - -.ie6 .nav-wrapper, .ie7 .nav-wrapper { - position: absolute; - top: 0; - left: 0; - width: 100%; -} -.ie6 .nav-wrapper .nav-wrapper-2, .ie7 .nav-wrapper .nav-wrapper-2 { - position: static; -} - -#site-header { - height: auto; - background: none; - border-top: 0px; -} -#site-header .container { - position: static; -} - -#site-logo { - top: 0.9em; - position: absolute; - z-index: 3; -} - -.ie6 #site-header, .ie7 #site-header { - height: 3em; -} -.ie6 #site-header .container, .ie7 #site-header .container { - position: relative; -} -.ie6 #site-logo, .ie7 #site-logo { - position: absolute; - top: -3.25em; -} - -#nav-link { - left: -999999px; -} - -#main-nav { - margin: 0 auto; - padding: 0em; - width: 60em; -} -#main-nav ul { - list-style: none; - padding: 0px; - margin: 0px; - float: right; -} -#main-nav ul li { - list-style: none; - display: inline; - margin: 0px; - padding: 0px; - float: left; -} -#main-nav ul li a, -#main-nav ul li span { - display: block; - color: #fff; - background: none; - border-bottom: none; -} -#main-nav ul#main-menu li a, #main-nav ul#main-menu li span { - padding: 0.75em; - font-size: 0.9em; -} -#main-nav ul#main-menu li a:hover { - background: #444; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #000000), color-stop(10%, #444444), color-stop(95%, #444444), color-stop(100%, #111111)); - background: -webkit-linear-gradient(#000000, #444444 10%, #444444 95%, #111111); - background: -moz-linear-gradient(#000000, #444444 10%, #444444 95%, #111111); - background: -o-linear-gradient(#000000, #444444 10%, #444444 95%, #111111); - background: -ms-linear-gradient(#000000, #444444 10%, #444444 95%, #111111); - background: linear-gradient(#000000, #444444 10%, #444444 95%, #111111); -} -#main-nav ul#main-menu li a.report-a-problem-btn { - background: #ffd000; - padding: 0.25em; - margin: 0.5em; - color: #333; - -moz-border-radius: 0.25em; - -webkit-border-radius: 0.25em; - -o-border-radius: 0.25em; - -ms-border-radius: 0.25em; - -khtml-border-radius: 0.25em; - border-radius: 0.25em; -} -#main-nav ul#main-menu li a.report-a-problem-btn:hover { - background: #ffe700; -} -#main-nav ul#main-menu li span { - color: #ffd000; -} -#main-nav ul#mysoc-menu { - padding: 0em 0.5em; - margin-left: 0.25em; - background: #ffd000; - -moz-border-radius: 0 0 0.375em 0.375em; - -webkit-border-radius: 0 0 0.375em 0.375em; - -o-border-radius: 0 0 0.375em 0.375em; - -ms-border-radius: 0 0 0.375em 0.375em; - -khtml-border-radius: 0 0 0.375em 0.375em; - border-radius: 0 0 0.375em 0.375em; - -moz-box-shadow: 0em 0.3em 0.1em 0em black; - -webkit-box-shadow: 0em 0.3em 0.1em 0em black; - -o-box-shadow: 0em 0.3em 0.1em 0em black; - box-shadow: 0em 0.3em 0.1em 0em black; -} -#main-nav ul#mysoc-menu li a { - color: #000; - text-transform: uppercase; - font-size: 0.6875em; - padding: 1.3em 0.7em 1em 0.7em; -} -#main-nav ul#mysoc-menu li a#mysoc-logo { - width: 84px; - height: 16px; - background-position: -260px -43px; - opacity: 0.8; -} -#main-nav ul#mysoc-menu li a#mysoc-logo:hover { - opacity: 1; -} -#main-nav ul#mysoc-menu li a:hover { - color: #fff; -} - -.content { - width: 27em; - margin-top: 3em; - background: #fff; - padding: 1em; - padding-bottom: 3em; - margin-left: 0.5em; - margin-bottom: -1em; - -moz-box-shadow: 0px 0px 6px 1px black; - -webkit-box-shadow: 0px 0px 6px 1px black; - -o-box-shadow: 0px 0px 6px 1px black; - box-shadow: 0px 0px 6px 1px black; -} - -body.white .content { - -moz-box-shadow: none; - -webkit-box-shadow: none; - -o-box-shadow: none; - box-shadow: none; -} - -.ie6 .content, .ie7 .content, .ie8 .content { - border: 1px solid black; - margin: 0; -} - -.ie8 .content { - margin-top: 3em; -} - -body.white.mappage .content { - -moz-box-shadow: 0px 0px 6px 1px black; - -webkit-box-shadow: 0px 0px 6px 1px black; - -o-box-shadow: 0px 0px 6px 1px black; - box-shadow: 0px 0px 6px 1px black; -} - -body.mappage .content { - float: left; -} -body.mappage #main-nav ul#main-menu li a, -body.mappage #main-nav ul#main-menu li span { - padding: 1.4em 0.75em 1.35em 0.75em; -} -body.mappage #main-nav ul#main-menu li a.report-a-problem-btn { - padding: 0.5em; - margin: 0.9em 0.25em 0.85em 0.25em; -} -body.mappage .nav-wrapper .nav-wrapper-2 { - position: fixed; - background: #222; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #000000), color-stop(10%, #222222), color-stop(90%, #222222), color-stop(100%, #000000)); - background: -webkit-linear-gradient(#000000, #222222 10%, #222222 90%, #000000); - background: -moz-linear-gradient(#000000, #222222 10%, #222222 90%, #000000); - background: -o-linear-gradient(#000000, #222222 10%, #222222 90%, #000000); - background: -ms-linear-gradient(#000000, #222222 10%, #222222 90%, #000000); - background: linear-gradient(#000000, #222222 10%, #222222 90%, #000000); -} -body.mappage #site-logo { - position: fixed; -} - -.ie6 body.mappage .container, .ie7 body.mappage .container { - float: left; - width: 27em; - margin-left: 1.4em; -} -.ie6 body.mappage .nav-wrapper, .ie7 body.mappage .nav-wrapper { - z-index: 1; -} -.ie6 body.mappage .nav-wrapper .nav-wrapper-2, .ie7 body.mappage .nav-wrapper .nav-wrapper-2 { - position: static; -} -.ie6 body.mappage #site-logo, .ie7 body.mappage #site-logo { - position: absolute; - top: -3.25em; -} - -.ie6 body.mappage .container { - margin-left: 0.7em; -} - -.ie8 body.mappage .nav-wrapper { - position: relative; - z-index: 0; -} -.ie8 body.mappage .nav-wrapper .nav-wrapper-2 { - position: static; -} -.ie8 body.mappage #site-logo { - position: absolute; - top: -3.25em; -} -.ie8 body.mappage #user-meta p { - top: 1em; -} -.ie8 body.mappage .content { - margin-top: 3em; -} - -body.fullwidthpage .content, body.twothirdswidthpage .content { - width: 57em; -} -body.fullwidthpage .intro, body.twothirdswidthpage .intro { - width: 40em; -} - -body.twothirdswidthpage .content { - width: 40em; - position: relative; -} -body.twothirdswidthpage .content aside { - background: #eee; - position: absolute; - left: 42em; - top: 0; - z-index: -1; - width: 13em; - padding: 1em; - -moz-box-shadow: 0px 0px 6px 1px black; - -webkit-box-shadow: 0px 0px 6px 1px black; - -o-box-shadow: 0px 0px 6px 1px black; - box-shadow: 0px 0px 6px 1px black; -} -body.twothirdswidthpage .content aside h2 { - margin-top: 0; -} -body.twothirdswidthpage .content aside img { - margin-bottom: 0.25em; -} -body.twothirdswidthpage .content .sticky-sidebar { - position: absolute; - left: 42em; - z-index: -1; -} -body.twothirdswidthpage .content .sticky-sidebar aside { - position: fixed; - top: 7em; - left: auto; -} - -.ie6 body.twothirdswidthpage .content .sticky-sidebar { - position: static; -} -.ie6 body.twothirdswidthpage .content .sticky-sidebar aside { - position: absolute; - left: 42em; - top: 0; -} - -.tablewrapper { - display: table; - width: 100%; - padding: 1em 0; -} -.tablewrapper > div { - display: table-cell; - width: 50%; -} -.tablewrapper .full-width { - width: auto; - margin: 0; -} - -.ie6 .tablewrapper, .ie7 .tablewrapper { - display: block; -} -.ie6 .tablewrapper div, .ie7 .tablewrapper div { - width: 48%; - display: block; - float: left; - border: none !important; -} - -.bordered { - margin: 0 -1em; - padding: 0 1em; - width: auto; - border-top: 0.25em solid #ffd000; -} - -#footer-mobileapps { - border-right: 1em solid #fff; - background: none; - padding: 0; - -moz-box-shadow: inset rgba(0, 0, 0, 0) 0 0 0; - -webkit-box-shadow: inset rgba(0, 0, 0, 0) 0 0 0; - -o-box-shadow: inset rgba(0, 0, 0, 0) 0 0 0; - box-shadow: inset rgba(0, 0, 0, 0) 0 0 0; -} -#footer-mobileapps h2 { - color: #222; - margin-top: 0; -} -#footer-mobileapps ul { - list-style-type: none; - padding: 0; - margin: 0; -} -#footer-mobileapps ul li { - list-style-type: none; - padding: 0; - margin: 0; - border: 0; - float: left; -} -#footer-mobileapps ul li a { - float: left; - display: block; -} -#footer-mobileapps ul li { - border-bottom: none; - float: left; - margin: 0 1em 1em 0; -} -#footer-mobileapps ul li a { - color: #222; - padding: 0; - width: 96px; - height: 32px; - margin: 0 auto; - text-indent: -999999px; - background: url(../images/sprite.png) -12px -3610px no-repeat; - opacity: 0.8; -} -#footer-mobileapps ul li a:hover { - opacity: 1; -} -#footer-mobileapps ul li a.m-app-iphone { - background-position: -12px -3610px; -} -#footer-mobileapps ul li a.m-app-iphone-streetreport { - background-position: -12px -3678px; - height: 50px; -} -#footer-mobileapps ul li a.m-app-droid { - background-position: -12px -3756px; -} -#footer-mobileapps ul li a.m-app-nokia { - background-position: -12px -3820px; - width: 74px; -} - -.ie6 #footer-mobileapps, .ie7 #footer-mobileapps { - margin: 0 0.5em; - margin-right: 2%; -} - -.ie6 #footer-mobileapps ul li a { - background: url(../images/ie_mobileapps.gif) -1px -1px no-repeat; -} -.ie6 #footer-mobileapps ul li a.m-app-iphone-streetreport { - background-position: -1px -69px; - height: 50px; -} -.ie6 #footer-mobileapps ul li a.m-app-droid { - background-position: -1px -148px; -} -.ie6 #footer-mobileapps ul li a.m-app-nokia { - background-position: -1px -212px; - width: 74px; -} - -#footer-ads { - border-left: 1em solid #fff; -} -#footer-ads ul { - display: table; -} -#footer-ads ul li { - display: table-cell; - border-bottom: none; -} -#footer-ads ul li:last-child { - border-left: 1.25em solid #fff; -} - -.ie6 #footer-ads, .ie7 #footer-ads { - margin-left: 2%; -} -.ie6 #footer-ads ul, .ie7 #footer-ads ul { - width: 100%; -} -.ie6 #footer-ads ul li, .ie7 #footer-ads ul li { - float: left; - width: 45%; -} - -#map_box { - position: absolute; - height: 29em; - width: 29em; - right: 1em; - top: 3em; - z-index: 1; -} - -#fms_pan_zoom { - top: 4.75em !important; -} - -#fms_pan_zoom_zoomin { - left: auto !important; - right: 30px; - top: 130px !important; -} - -#fms_pan_zoom_zoomout { - left: auto !important; - right: 30px; - top: 174px !important; -} - -.olControlAttribution { - bottom: 0.5em !important; - left: auto !important; -} - -#sub_map_links { - left: auto; - bottom: auto; - bottom: 2em; -} -#sub_map_links #map_links_toggle { - display: block; - cursor: pointer; - position: absolute; - left: -1em; - width: 1em; - height: 100%; - background: black url(../images/sprite.png) right -4119px no-repeat; - -moz-border-radius: 0.25em 0 0 0.25em; - -webkit-border-radius: 0.25em 0 0 0.25em; - -o-border-radius: 0.25em 0 0 0.25em; - -ms-border-radius: 0.25em 0 0 0.25em; - -khtml-border-radius: 0.25em 0 0 0.25em; - border-radius: 0.25em 0 0 0.25em; -} -#sub_map_links #map_links_toggle:hover { - left: -1.5em; - border-right: 0.5em solid #000; -} -#sub_map_links #map_links_toggle.closed { - background-position: right -4159px; -} - -.ie6 #sub_map_links #map_links_toggle { - height: 1.75em; - background: black url(../images/ie_sub_map_links_sprite.gif") center -143px no-repeat; -} -.ie6 #sub_map_links #map_links_toggle.closed { - background-position: center -183px; -} - -#user-meta { - display: block; - position: relative; - max-width: 57em; - margin: 0 auto; -} -#user-meta p { - display: -moz-inline-box; - -moz-box-orient: vertical; - display: inline-block; - vertical-align: middle; - *vertical-align: auto; - position: absolute; - top: 1em; - height: 2em; - padding: 0.25em 6em 0.5em 0.5em; - -moz-box-shadow: rgba(0, 0, 0, 0.6) 0px 0px 4px 1px; - -webkit-box-shadow: rgba(0, 0, 0, 0.6) 0px 0px 4px 1px; - -o-box-shadow: rgba(0, 0, 0, 0.6) 0px 0px 4px 1px; - box-shadow: rgba(0, 0, 0, 0.6) 0px 0px 4px 1px; -} -#user-meta p { - *display: inline; -} -#user-meta p a { - top: 0.5em; - right: 0.5em; - font-size: 0.6875em; - padding: 0.5em 0.75em; - line-height: 1em; -} -#user-meta p a:hover { - text-decoration: none; - background: #444; -} - -.ie6 #user-meta, .ie7 #user-meta { - z-index: 1; -} - -.ie8 #user-meta p { - top: 5em; -} - -.shadow-wrap { - position: fixed; - bottom: 0; - width: 29em; - overflow: hidden; - padding-top: 3em; -} -.shadow-wrap ul#key-tools { - border-top: 0.25em solid #ffd000; - margin: 0; - -moz-box-shadow: 0em 0px 1em 1em white; - -webkit-box-shadow: 0em 0px 1em 1em white; - -o-box-shadow: 0em 0px 1em 1em white; - box-shadow: 0em 0px 1em 1em white; -} -.shadow-wrap ul#key-tools li { - border: none; -} -.shadow-wrap ul#key-tools li a { - font-size: 0.75em; - color: #888888; - padding: 0.5em 1.5em 0.5em 0; - text-transform: none; -} -.shadow-wrap ul#key-tools li a.abuse { - background-image: url../images/sprite.png); - background-position: right -2935px; -} -.shadow-wrap ul#key-tools li a.feed { - background-image: url../images/sprite.png); - background-position: right -3074px; -} -.shadow-wrap ul#key-tools li a.chevron { - background-image: url../images/sprite.png); - background-position: right -3225px; -} -.shadow-wrap ul#key-tools li a.hover { - background-image: url../images/sprite.png); - background-position: right -1876px; -} -.shadow-wrap ul#key-tools.singleton li { - text-align: right; -} -.shadow-wrap ul#key-tools.singleton li a { - padding-right: 3em; -} -.shadow-wrap.active { - padding: 3em 0; - position: static; -} - -.ie6 .shadow-wrap { - padding-top: 0; -} - -.big-green-banner { - top: auto; - right: -1.25em; - margin-left: -2em; - font-size: 1.375em; - padding: 1em 3em 1em 1em; - background: #00bd08 url../images/sprite.png) right -2188px no-repeat; -} -.big-green-banner:before { - right: 0; - left: auto; - top: -0.5em; - position: absolute; - border-top: 0.5em solid transparent; - border-left: 0.5em solid #4B8304; - border-bottom: none; -} - -.ie6 .big-green-banner { - background: #00bd08 url../images/ie_green_chevron.gif) right center no-repeat; -} - -.banner p { - top: -2.25em; - padding: 1em; -} -.banner p:before { - left: -0.75em; - border-left: 0.75em solid transparent; - border-bottom: 0.75em solid #888; -} -.banner p#fixed { - padding-top: 5em; - background-image: url../images/sprite.png); - background-position: -324px -326px; - background-repeat: no-repeat; -} -.banner p#fixed:before { - border-bottom: 0.75em solid #4B8304; -} - -.ie6 .banner p { - top: -1.5em; -} -.ie6 .banner p#fixed { - background-image: url../images/ie_fixed.gif); - background-position: center 0.75em; -} - -.full-width { - margin: 0 0 0em -1em; - width: 29em; -} - -/*FORMS*/ -input[type=text], -input[type=password], -input[type=email], -textarea { - width: 25em; -} - -.form-box { - max-width: 25em; -} - -/* form errors */ -div.form-error, -p.form-error { - display: block; - width: 24.7em; -} - -input.form-error, -textarea.form-error { - -moz-border-radius: 0 0 0.25em 0.25em; - -webkit-border-radius: 0 0 0.25em 0.25em; - -o-border-radius: 0 0 0.25em 0.25em; - -ms-border-radius: 0 0 0.25em 0.25em; - -khtml-border-radius: 0 0 0.25em 0.25em; - border-radius: 0 0 0.25em 0.25em; -} - -#report-a-problem-sidebar { - position: absolute; - z-index: -1; - left: 29.5em; - top: 5em; - width: 15em; - -moz-box-shadow: rgba(0, 0, 0, 0.6) 0px 0px 4px 1px; - -webkit-box-shadow: rgba(0, 0, 0, 0.6) 0px 0px 4px 1px; - -o-box-shadow: rgba(0, 0, 0, 0.6) 0px 0px 4px 1px; - box-shadow: rgba(0, 0, 0, 0.6) 0px 0px 4px 1px; -} -#report-a-problem-sidebar .sidebar-tips { - background: #eeeeee; - padding: 1em; - font-size: 0.75em; -} -#report-a-problem-sidebar .sidebar-notes { - background: #333333; - padding: 1em; - color: #ffffff; - font-size: 0.75em; -} - -.ie6 #report-a-problem-sidebar, .ie7 #report-a-problem-sidebar { - left: 29em; -} - -.no-js #report-a-problem-sidebar { - position: static; - width: auto; - -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - -o-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - box-shadow: 0 0 0 rgba(0, 0, 0, 0); -} -.no-js #report-a-problem-sidebar .sidebar-tips, -.no-js #report-a-problem-sidebar .sidebar-notes { - font-size: 1em; -} - -.general-sidebar-notes { - position: absolute; - left: 29.5em; - width: 15em; - z-index: -1; - -moz-box-shadow: rgba(0, 0, 0, 0.6) 0px 0px 4px 1px; - -webkit-box-shadow: rgba(0, 0, 0, 0.6) 0px 0px 4px 1px; - -o-box-shadow: rgba(0, 0, 0, 0.6) 0px 0px 4px 1px; - box-shadow: rgba(0, 0, 0, 0.6) 0px 0px 4px 1px; -} -.general-sidebar-notes p { - background: #eeeeee; - font-size: 0.75em; - padding: 0.75em; - margin: 0; -} -.general-sidebar-notes p.dark { - background: #333333; - color: #ffffff; -} - -.problem-header { - min-height: 19em; -} - -body.frontpage .table-cell > .container { - width: 100%; -} -body.frontpage .table-cell .content { - padding-top: 14em; - margin: 0 auto; -} -body.frontpage .nav-wrapper-2 { - height: 6em; -} -body.frontpage #site-header { - height: 9em; -} -body.frontpage #site-logo { - top: 3em; - width: 300px; - height: 60px; - background-position: -2px -108px; -} -body.frontpage #user-meta p { - top: -2em; - right: 0; -} - -body.frontpage.white #site-header { - background: #1a1a1a url../images/tile.jpg) 0 0 repeat; -} - -.ie6 body.frontpage #site-header, .ie7 body.frontpage #site-header, .ie8 body.frontpage #site-header { - height: 4em; -} -.ie6 body.frontpage #site-logo, .ie7 body.frontpage #site-logo, .ie8 body.frontpage #site-logo { - position: relative; - width: 60em; - margin: 0 auto; -} -.ie6 body.frontpage .wrapper .content, .ie7 body.frontpage .wrapper .content, .ie8 body.frontpage .wrapper .content { - padding-top: 12em; - margin-top: 1em; -} -.ie6 body.frontpage #user-meta p, .ie7 body.frontpage #user-meta p, .ie8 body.frontpage #user-meta p { - top: -1em; -} - -.ie6 body.frontpage #site-logo, .ie7 body.frontpage #site-logo { - top: -1em; -} - -.ie6 body.frontpage #site-logo { - background: url../images/ie_front_logo.gif) 0 0 no-repeat; -} - -.ie8 body.frontpage .wrapper .content { - margin-top: 5em; -} -.ie8 body.frontpage #user-meta p { - top: 3em; -} - -#front-main { - background: #ffd000; - position: absolute; - width: 100%; - left: 0; - top: 1em; -} -#front-main #front-main-container { - max-width: 57em; - margin: 0 auto; -} -#front-main h2 { - font-style: normal; - margin: 0; - color: #222; -} -#front-main #postcodeForm { - overflow: hidden; - margin-right: 0.5em; -} -#front-main #postcodeForm label { - margin: 0.5em 0; -} -#front-main #postcodeForm div { - display: block; - margin: 0 auto; - width: 20em; - overflow: hidden; -} -#front-main #postcodeForm div input#pc { - display: block; - float: left; - padding: 0.25em 0.5em; - height: 1.5em; - width: 16em; -} -#front-main #postcodeForm div input#submit { - display: block; - float: right; - width: 3em; - height: 2.3em; - padding-top: 0.2em; -} -#front-main a#geolocate_link { - background: none; - color: #222; - margin: -1em 0 0.5em 0; -} -#front-main a#geolocate_link:hover { - text-decoration: underline; - background: none; -} - -.ie6 #front-main, .ie7 #front-main { - top: 2em; - padding-top: 1em; -} - -#front-howto { - border-right: 1em solid #fff; -} -#front-howto #front_stats { - background: none; - border-top: 0.25em solid #ffd000; - padding-top: 1em; -} -#front-howto #front_stats div big { - color: #ffd000; - font-size: 3.2308em; -} - -.ie6 #front_stats div, .ie7 #front_stats div { - width: 8em; - float: left; -} - -#front-recently { - border-left: 1em solid #fff; -} - -.ie6 .tablewrapper #front-howto, .ie7 .tablewrapper #front-howto { - margin-right: 2%; -} -.ie6 .tablewrapper #front-recently, .ie7 .tablewrapper #front-recently { - margin-left: 2%; -} - -/* MEDIA QUERIES */ -@media only screen and (min-width: 48em) and (max-width: 61em) { - .container { - width: 100%; - } - - /*FORMS*/ - input[type=text], - input[type=password], - input[type=email], - textarea { - width: 95%; - } - - #main-nav { - width: auto; - float: right; - padding-left: 180px; - } - - #main-menu { - margin-top: 3em; - } - - #site-header { - height: 6em; - } - - #fms_pan_zoom { - top: 7em !important; - } - - #user-meta p { - left: 1em; - } - - body.frontpage #user-meta p { - left: auto; - } - - #map_box { - left: 32em; - width: auto; - } - - #report-a-problem-sidebar { - position: static; - width: auto; - -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - -o-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - box-shadow: 0 0 0 rgba(0, 0, 0, 0); - } - #report-a-problem-sidebar .sidebar-tips, - #report-a-problem-sidebar .sidebar-notes { - font-size: 1em; - } - - .full-width { - width: auto; - margin: 0em -1em 0 -1em; - } - - body.fullwidthpage .content, body.twothirdswidthpage .content { - width: auto; - } - - body.twothirdswidthpage .content { - width: 30em; - } - body.twothirdswidthpage .content .sticky-sidebar { - left: 32em; - top: 30em; - } - body.twothirdswidthpage .content .sticky-sidebar aside { - top: 9em; - } -} diff --git a/phonegap/www/css/mobile.css b/phonegap/www/css/mobile.css deleted file mode 100644 index 0cabbe5d5..000000000 --- a/phonegap/www/css/mobile.css +++ /dev/null @@ -1,181 +0,0 @@ -/* stop scrolling on iphone */ -#container { - width: 100%; - height: 100%; -} - -#container .container { - padding-bottom: 0; -} - -.nodisplay { - display: none; -} - -.mobile-nav-banner { - position: fixed; - background: black; -} - -.mobile-sign-in-banner { - background: none; -} - -.mobile-sign-in-banner a { - position: absolute; - left: auto; - right: 0.3em; - top: 0.8em; -} - -.mobile-info { - bottom: 0px; - width: 100%; - height: 20px; - text-align: right; - z-index: 1; -} - -.mobile-info a { - cursor: pointer; - font-size: 0.875em; - font-family: Helmet, Freesans, sans-serif; - font-weight: bold; - line-height: 1.375em; - padding: 0.7em 0.5em 0.5em 0.5em; - margin: 0; - width: auto; - height: auto; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -o-border-radius: 4px; - -ms-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - background: #333333; - background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #333333), color-stop(100%, #1a1a1a)); - background: -webkit-linear-gradient(#333333, #1a1a1a); - background: -moz-linear-gradient(#333333, #1a1a1a); - background: -o-linear-gradient(#333333, #1a1a1a); - background: -ms-linear-gradient(#333333, #1a1a1a); - background: linear-gradient(#333333, #1a1a1a); - border: 1px solid #1a1a1a; - color: white; - font-weight: normal; - font-size: 0.875em; - line-height: 1; - padding: 0.5em 0.75em; - position: absolute; - right: 0.3em; - bottom: 0.3em; -} - -.mobile-header { - margin-top: 35px; -} - -.mobile-header #site-logo { - margin-top: 35px; -} - -#front-main #postcodeForm { - padding-top: 0.5em; - padding-bottom: 0.5em; -} - -#front-main #postcodeForm label { - font-size: 0.9em -} - -#front-main a#geolocate_link { - font-size: 1.2em; - -moz-border-radius: 0.25em; - -webkit-border-radius: 0.25em; - -o-border-radius: 0.25em; - -ms-border-radius: 0.25em; - -khtml-border-radius: 0.25em; - border-radius: 0.25em; - margin-top: 0.5em; -} - -#front-howto h2 { - margin-top: 0.8em; -} - -ol.big-numbers > li { - margin-bottom: 0.8em; -} - -#multiple { - margin: auto; - margin-bottom: 1em; -} - -#multiple li { - list-style: none; - margin: auto; -} - -#nav-link { - display: none; -} - -#form_sign_in { - margin-top: 1em; -} - -#sign_out, -#sign_in { - display: none; -} - -input.green-btn, -input.green-btn:hover { - border-radius: 2px; - background: #9fde23; - border-top: #CAEF80; - border-left: #BCEF58; - border-right: #BCEF58; -} - -#loadingSpinner { - display: none; -} - -div.spinner { - position: absolute; - width: 54px; - height: 54px; - display: inline-block; -} - -div.spinner div { - width: 12%; - height: 26%; - background: #000; - position: absolute; - left: 44.5%; - top: 37%; - opacity: 0; - -webkit-animation: fade 1s linear infinite; - -webkit-border-radius: 50px; - -webkit-box-shadow: 0 0 3px rgba(0,0,0,0.2); -} - -div.spinner div.bar1 {-webkit-transform:rotate(0deg) translate(0, -142%); -webkit-animation-delay: 0s;} -div.spinner div.bar2 {-webkit-transform:rotate(30deg) translate(0, -142%); -webkit-animation-delay: -0.9167s;} -div.spinner div.bar3 {-webkit-transform:rotate(60deg) translate(0, -142%); -webkit-animation-delay: -0.833s;} -div.spinner div.bar4 {-webkit-transform:rotate(90deg) translate(0, -142%); -webkit-animation-delay: -0.75s;} -div.spinner div.bar5 {-webkit-transform:rotate(120deg) translate(0, -142%); -webkit-animation-delay: -0.667s;} -div.spinner div.bar6 {-webkit-transform:rotate(150deg) translate(0, -142%); -webkit-animation-delay: -0.5833s;} -div.spinner div.bar7 {-webkit-transform:rotate(180deg) translate(0, -142%); -webkit-animation-delay: -0.5s;} -div.spinner div.bar8 {-webkit-transform:rotate(210deg) translate(0, -142%); -webkit-animation-delay: -0.41667s;} -div.spinner div.bar9 {-webkit-transform:rotate(240deg) translate(0, -142%); -webkit-animation-delay: -0.333s;} -div.spinner div.bar10 {-webkit-transform:rotate(270deg) translate(0, -142%); -webkit-animation-delay: -0.25s;} -div.spinner div.bar11 {-webkit-transform:rotate(300deg) translate(0, -142%); -webkit-animation-delay: -0.1667s;} -div.spinner div.bar12 {-webkit-transform:rotate(330deg) translate(0, -142%); -webkit-animation-delay: -0.0833s;} - -@-webkit-keyframes fade { - from {opacity: 1;} - to {opacity: 0.25;} -} diff --git a/phonegap/www/email_sent.html b/phonegap/www/email_sent.html deleted file mode 100644 index 288b1f118..000000000 --- a/phonegap/www/email_sent.html +++ /dev/null @@ -1,60 +0,0 @@ -<!doctype html> - <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"> - - <link rel="stylesheet" href="css/base.css"> - <link rel="stylesheet" href="css/mobile.css"> - <link rel="stylesheet" href="css/layout.css" media="(min-width:48em)"> - - <meta http-equiv="content-type" content="text/html; charset=utf-8"> - <script type="text/javascript" src="js/json2.js"></script> - <script type="text/javascript" src="js/config.js"></script> - <script type="text/javascript" src="cordova-independent.js"></script> - <script type="text/javascript" src="js/jquery-1.7.0.min.js"></script> - <script type="text/javascript" src="js/mobile.js"></script> - - <title> Create a report :: FixMyStreet </title> - </head> - <body class="fullwidthpage mobile-header"> - - <div class="wrapper"> - <div class="table-cell"> - <header id="site-header" role="banner"> - <div class="container"> - <span id="site-logo"></span> - </div> - </header> - - <div id="user-meta"> - </div> - - <div class="container"> - <div class="content" role="main"> - <h1>Nearly Done! Now check your email...</h1> - - <p>The confirmation email <strong>may</strong> take a few minutes to arrive — <em>please</em> be patient.</p> - - <p>If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way.</p> - - <p>You must now click the link in the email we've just sent you — if you do not, your problem will not be posted..</p> - - <p>(Don't worry — we'll hang on to your problem report while you're checking your email.)</p> - - </div> - </div> - </div> - - <div class="big-green-banner mobile-map-banner mobile-nav-banner"> - <a href="index.html">home</a> - Confirm Report - </div> - <div class="mobile-info"> - <a href="about.html">i</a> - </div> - </div> -</body> -</html> diff --git a/phonegap/www/fonts/Museo300-Regular-webfont.eot b/phonegap/www/fonts/Museo300-Regular-webfont.eot Binary files differdeleted file mode 100755 index 15be4441c..000000000 --- a/phonegap/www/fonts/Museo300-Regular-webfont.eot +++ /dev/null diff --git a/phonegap/www/fonts/Museo300-Regular-webfont.svg b/phonegap/www/fonts/Museo300-Regular-webfont.svg deleted file mode 100755 index 71109b80b..000000000 --- a/phonegap/www/fonts/Museo300-Regular-webfont.svg +++ /dev/null @@ -1,229 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > -<svg xmlns="http://www.w3.org/2000/svg"> -<metadata> -This is a custom SVG webfont generated by Fontspring. -</metadata> -<defs> -<font id="Museo300" horiz-adv-x="1241" > -<font-face units-per-em="2048" ascent="1536" descent="-512" /> -<missing-glyph horiz-adv-x="557" /> -<glyph unicode=" " horiz-adv-x="557" /> -<glyph unicode="	" horiz-adv-x="557" /> -<glyph unicode=" " horiz-adv-x="557" /> -<glyph unicode="!" horiz-adv-x="608" d="M227 0v158h158v-158h-158zM231 1440h144l-6 -1063h-131z" /> -<glyph unicode=""" horiz-adv-x="638" d="M135 1114v346h121v-346h-121zM383 1114v346h121v-346h-121z" /> -<glyph unicode="#" horiz-adv-x="1460" d="M84 399l20 115h289l72 401h-289l19 115h290l72 410h125l-72 -410h355l71 410h125l-71 -410h286l-20 -115h-287l-70 -401h285l-18 -115h-287l-70 -399h-125l70 399h-354l-70 -399h-125l70 399h-291zM520 514h352l72 401h-354z" /> -<glyph unicode="$" horiz-adv-x="1089" d="M94 246l107 86q4 -8 14 -23.5t44 -54.5t72 -67.5t101.5 -53t132.5 -24.5q127 0 206 73.5t79 182.5q0 72 -39 128t-101.5 94t-138 72.5t-152.5 73.5t-139.5 86t-101.5 120t-39 167q0 135 100.5 233.5t266.5 118.5v195h117v-191q129 -12 232 -71.5t103 -173.5v-103h-135v68 q0 63 -70.5 106t-170.5 43q-135 0 -215 -64.5t-80 -158.5q0 -80 52 -140.5t132 -96t171 -81t171 -91.5t132 -131t52 -197q0 -150 -103 -262.5t-271 -128.5v-191h-117v191q-80 8 -151.5 38.5t-116.5 67.5t-80 74t-49 61z" /> -<glyph unicode="%" horiz-adv-x="1521" d="M127 1180q0 117 84 200.5t202.5 83.5t203.5 -84t85 -200q0 -119 -83.5 -202t-204.5 -83q-119 0 -203 83t-84 202zM139 0l1098 1440h145l-1095 -1440h-148zM248 1180q0 -72 48 -121t117.5 -49t119 49t49.5 121q0 70 -49.5 120t-119 50t-117.5 -50t-48 -120zM819 258 q0 119 84 203t203 84t204 -84t85 -203q0 -117 -85 -200t-204 -83t-203 83t-84 200zM942 260q0 -72 47 -121t117 -49t119 49t49 121q0 70 -49 120t-119 50t-117 -50t-47 -120z" /> -<glyph unicode="&" horiz-adv-x="1277" d="M94 401q0 127 68.5 233.5t191.5 141.5v4q-8 2 -21.5 8.5t-47 31t-60 57t-48 92t-21.5 131.5q0 162 115.5 263t310.5 101q35 0 76.5 -5t66.5 -11l25 -6l-41 -117q-68 14 -119 14q-125 0 -206 -68.5t-81 -178.5q0 -43 11.5 -82t41 -83t96 -70t160.5 -26h299v199h142v-199 h190v-126h-190v-211q0 -252 -126 -385.5t-347 -133.5q-213 0 -349.5 122t-136.5 304zM240 406q0 -127 92 -212t247.5 -85t243.5 95t88 294v207h-295q-184 0 -280 -80t-96 -219z" /> -<glyph unicode="'" horiz-adv-x="391" d="M135 1114v346h121v-346h-121z" /> -<glyph unicode="(" horiz-adv-x="632" d="M174 680q0 461 221 815h131q-223 -377 -223 -805q0 -473 236 -885h-129q-236 386 -236 875z" /> -<glyph unicode=")" horiz-adv-x="632" d="M94 -195q236 412 236 885q0 428 -224 805h132q221 -360 221 -815q0 -489 -236 -875h-129z" /> -<glyph unicode="*" horiz-adv-x="976" d="M94 1104l41 129l295 -109l-12 316h139l-14 -316l299 107l41 -125l-303 -88v-4l192 -246l-106 -80l-177 260h-4l-174 -258l-108 78l192 246v4z" /> -<glyph unicode="+" d="M86 522v119h473v522h125v-522h471v-119h-471v-522h-125v522h-473z" /> -<glyph unicode="," horiz-adv-x="440" d="M47 -199l117 367h149l-149 -367h-117z" /> -<glyph unicode="-" horiz-adv-x="884" d="M152 518v127h581v-127h-581z" /> -<glyph unicode="." horiz-adv-x="440" d="M141 0v164h158v-164h-158z" /> -<glyph unicode="/" horiz-adv-x="665" d="M6 -86l520 1606h129l-518 -1606h-131z" /> -<glyph unicode="0" horiz-adv-x="1232" d="M121 721q0 743 495 743q180 0 295 -102t159 -262t44 -379q0 -745 -498 -746q-495 1 -495 746zM266 721q0 -612 350.5 -612t350.5 612q0 610 -350.5 610t-350.5 -610z" /> -<glyph unicode="1" horiz-adv-x="974" d="M131 0v127h322v1057l2 80h-4q-14 -31 -72 -86l-154 -154l-90 92l326 324h135v-1313h315v-127h-780z" /> -<glyph unicode="2" horiz-adv-x="1155" d="M86 141q0 147 79 257t190.5 176.5t223 129t190.5 150.5t79 205t-81 193.5t-214 76.5q-106 0 -181 -47t-75 -108v-68h-135v106q0 66 40 116t102.5 79t128 43t124.5 14q201 0 319.5 -115.5t118.5 -287.5q0 -139 -78.5 -245.5t-190.5 -174.5t-223.5 -130t-190.5 -148.5 t-79 -194.5q0 -41 48 -41h602q45 0 45 45v96h133v-143q0 -66 -30 -95.5t-95 -29.5h-721q-72 0 -100.5 32.5t-28.5 108.5z" /> -<glyph unicode="3" horiz-adv-x="1081" d="M53 176l86 107q6 -6 17.5 -18.5t49.5 -42t79 -52.5t104.5 -41t126.5 -18q131 0 228.5 88t97.5 223q0 139 -102.5 221t-247.5 82h-101l-33 84l355 426q35 47 73 80v4q-41 -6 -116 -6h-375q-45 0 -45 -45v-97h-133v144q0 68 27.5 96.5t93.5 28.5h731v-94l-424 -498 q74 -4 146.5 -27.5t142 -71t112.5 -131t43 -194.5q0 -184 -136 -316.5t-339 -132.5q-80 0 -156.5 20.5t-129 50.5t-94.5 59.5t-60 50.5z" /> -<glyph unicode="4" horiz-adv-x="1150" d="M31 397v95l700 948h154v-916h229v-127h-229v-397h-144v397h-710zM197 518q57 6 118 6h428v588l7 139h-5q-35 -59 -73 -110l-400 -529l-75 -90v-4z" /> -<glyph unicode="5" horiz-adv-x="1165" d="M111 180l90 101q4 -6 13 -18.5t40 -41t65.5 -51.5t93 -41t122.5 -18q154 0 256 96t102 239q0 147 -107.5 242.5t-265.5 95.5q-72 0 -141.5 -19.5t-102.5 -39.5l-32 -20l-74 30l61 580q6 68 34 96.5t91 28.5h473q66 0 94.5 -30t28.5 -95v-144h-133v97q0 45 -45 45h-364 q-39 0 -45 -45l-37 -326l-13 -82h4q90 53 218 53q217 0 360 -136t143 -333q0 -195 -144 -332t-361 -137q-80 0 -154 21.5t-121 51.5t-83 59.5t-50 52.5z" /> -<glyph unicode="6" horiz-adv-x="1146" d="M88 633q0 113 22.5 227.5t72.5 224t122 193.5t179.5 135t236.5 51q70 0 136.5 -15t96.5 -30l31 -14l-53 -125q-90 51 -209 51q-143 0 -250.5 -89t-162 -219t-68.5 -284h4q49 82 149.5 128t216.5 46q197 0 323 -128t126 -328q0 -219 -129 -350.5t-324 -131.5 q-231 0 -375.5 185.5t-144.5 472.5zM242 541q0 -154 106.5 -293t257.5 -139q143 0 226 97t83 249q0 150 -89 240.5t-236 90.5q-139 0 -243.5 -77.5t-104.5 -167.5z" /> -<glyph unicode="7" horiz-adv-x="1048" d="M61 1171v144q0 66 29 95.5t94 29.5h850v-99l-712 -1341h-160l626 1180l80 133v4q-37 -4 -108 -4h-518q-45 0 -45 -45v-97h-136z" /> -<glyph unicode="8" horiz-adv-x="1167" d="M96 406q0 70 27 135t64.5 108t74.5 76t64 47l26 14v5q-8 4 -21.5 11t-47 33.5t-59 58.5t-47 84t-21.5 109q0 158 116.5 267.5t317.5 109.5t320.5 -106.5t119.5 -276.5q0 -61 -19.5 -120.5t-48 -100.5t-57 -72.5t-49.5 -46.5l-18 -16v-4q113 -57 172 -134t59 -196 q0 -170 -140.5 -293t-342.5 -123q-201 0 -345.5 117t-144.5 314zM244 412q0 -135 101 -219t241 -84q133 0 234.5 80.5t101.5 203.5q0 102 -68 158.5t-207 112.5q-135 57 -168 57q-55 0 -145 -95t-90 -214zM299 1087q0 -102 68.5 -156t207.5 -106q104 -39 130 -39 q45 0 113.5 94.5t68.5 196.5q0 115 -83 184.5t-214 69.5q-133 0 -212 -70t-79 -174z" /> -<glyph unicode="9" horiz-adv-x="1146" d="M88 983q0 219 128 350t323 131q231 0 375.5 -185t144.5 -472q0 -143 -38 -285.5t-110.5 -267.5t-198.5 -202t-286 -77q-70 0 -136.5 14.5t-96.5 30.5l-31 15l53 125q90 -51 209 -51q143 0 251.5 90t163 220t66.5 283h-4q-49 -82 -150.5 -129t-215.5 -47q-197 0 -322 128 t-125 329zM231 985q0 -150 89.5 -241t236.5 -91q139 0 243.5 78t104.5 168q0 154 -106.5 293t-257.5 139q-143 0 -226.5 -97t-83.5 -249z" /> -<glyph unicode=":" horiz-adv-x="579" d="M211 0v164h158v-164h-158zM211 866v164h158v-164h-158z" /> -<glyph unicode=";" horiz-adv-x="579" d="M111 -199l98 367h149l-131 -367h-116zM211 866v164h158v-164h-158z" /> -<glyph unicode="<" d="M141 530v103l926 414v-138l-752 -325v-4l752 -326v-137z" /> -<glyph unicode="=" d="M143 344v119h955v-119h-955zM143 700v119h955v-119h-955z" /> -<glyph unicode=">" d="M158 117v137l751 326v4l-751 325v138l925 -414v-103z" /> -<glyph unicode="?" horiz-adv-x="882" d="M80 1350q14 12 40.5 31.5t112.5 52t177 32.5q176 0 292.5 -102t116.5 -260q0 -94 -38 -170t-92 -126t-107.5 -97t-91 -109.5t-37.5 -136.5v-88h-140v92q0 90 37 164t89.5 125t105.5 99t90 109.5t37 131.5q0 100 -76 167.5t-193 67.5q-135 -2 -247 -88zM305 0v158h158 v-158h-158z" /> -<glyph unicode="@" horiz-adv-x="1513" d="M84 495.5q0 313.5 214 532.5t515 219q258 0 380 -110.5t122 -276.5v-645h145v-115h-551q-174 0 -291.5 116t-117.5 277.5t116.5 277.5t292.5 116h267q-4 102 -92.5 170.5t-260.5 68.5q-250 0 -423 -185t-173 -445q0 -264 173 -445.5t434 -181.5v-123q-317 0 -533.5 218 t-216.5 531.5zM643 495.5q0 -116.5 81 -198.5t198 -82h254v563h-250q-121 0 -202 -83t-81 -199.5z" /> -<glyph unicode="A" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186z" /> -<glyph unicode="B" d="M82 1313v127h612q172 0 280.5 -98.5t108.5 -264.5q0 -223 -184 -313v-4q111 -31 176.5 -128t65.5 -229q0 -186 -122 -294.5t-308 -108.5h-371q-66 0 -95.5 29.5t-29.5 95.5v1188h-133zM358 815h334q109 0 176.5 69.5t67.5 182.5q0 111 -66.5 178.5t-179.5 67.5h-332v-498 zM358 172q0 -45 45 -45h308q131 0 205.5 76t74.5 205t-77.5 206.5t-204.5 77.5h-351v-520z" /> -<glyph unicode="C" horiz-adv-x="1421" d="M78 731q0 311 203.5 522t506.5 211q82 0 171.5 -17t174.5 -52t139 -96.5t54 -139.5v-119h-135v80q0 94 -129 151.5t-270 57.5q-242 0 -404 -169t-162 -429t164 -440t408 -180q250 0 438 170l33 32l82 -104q-8 -10 -23.5 -25.5t-69 -55.5t-114 -70.5t-154.5 -56.5 t-194 -26q-313 0 -516 218.5t-203 537.5z" /> -<glyph unicode="D" horiz-adv-x="1464" d="M86 1313v127h578q330 0 526 -191.5t196 -527.5q0 -340 -196.5 -530.5t-525.5 -190.5h-320q-66 0 -95.5 29.5t-29.5 95.5v1188h-133zM362 172q0 -45 46 -45h241q270 0 429 154.5t159 439.5q0 283 -158.5 437.5t-429.5 154.5h-287v-1141z" /> -<glyph unicode="E" horiz-adv-x="1142" d="M86 1313v127h823q66 0 95.5 -30t29.5 -95v-144h-135v97q0 45 -45 45h-492v-525h541v-126h-541v-490q0 -45 46 -45h505q45 0 45 45v96h134v-143q0 -66 -30 -95.5t-95 -29.5h-623q-66 0 -95.5 29.5t-29.5 95.5v1188h-133z" /> -<glyph unicode="F" horiz-adv-x="1021" d="M86 1313v127h766q66 0 94.5 -30t28.5 -95v-144h-133v97q0 45 -45 45h-435v-541h523v-127h-523v-645h-143v1313h-133z" /> -<glyph unicode="G" horiz-adv-x="1495" d="M80 723q0 311 207 526t512 215q285 0 475 -151l29 -25l-84 -106q-18 16 -52 40.5t-143 65.5t-223 41q-244 0 -408 -173t-164 -433q0 -264 162 -438t408 -174q80 0 155.5 21.5t128 52t92 62.5t58.5 52l20 23v178q0 45 -45 45h-88v127h144q66 0 95.5 -30t29.5 -95v-547 h-132v109l3 61h-5q-6 -8 -19 -21.5t-58 -46t-96.5 -58.5t-132.5 -47.5t-165 -21.5q-297 0 -500.5 213t-203.5 535z" /> -<glyph unicode="H" horiz-adv-x="1550" d="M86 1313v127h152q66 0 95 -30t29 -95v-531h828v531q0 66 28.5 95.5t94.5 29.5h153v-127h-88q-45 0 -45 -45v-1268h-143v657h-828v-657h-143v1268q0 45 -45 45h-88z" /> -<glyph unicode="I" horiz-adv-x="600" d="M94 0v127h135v1186h-135v127h412v-127h-137v-1186h137v-127h-412z" /> -<glyph unicode="J" horiz-adv-x="1034" d="M49 403v58h144v-49q0 -158 76.5 -229.5t187.5 -71.5q109 0 184.5 71.5t75.5 225.5v860q0 45 -45 45h-357v127h420q66 0 95.5 -30t29.5 -95v-912q0 -217 -118.5 -322.5t-286.5 -105.5t-287 106.5t-119 321.5z" /> -<glyph unicode="K" horiz-adv-x="1208" d="M86 1313v127h152q66 0 95 -30t29 -95v-500h173q90 0 120 51l349 574h163l-370 -604q-37 -59 -74 -80v-4q35 -12 70 -82l249 -496q14 -31 37 -39t68 -8h41v-127h-76q-90 0 -127 19.5t-72 89.5l-262 526q-25 53 -131 53h-158v-688h-143v1268q0 45 -45 45h-88z" /> -<glyph unicode="L" horiz-adv-x="1085" d="M86 1313v127h152q66 0 95 -30t29 -95v-1143q0 -45 46 -45h477q45 0 45 45v96h135v-143q0 -66 -29.5 -95.5t-95.5 -29.5h-596q-66 0 -95.5 29.5t-29.5 95.5v1143q0 45 -45 45h-88z" /> -<glyph unicode="M" horiz-adv-x="1730" d="M45 0v127h76q43 0 45 45l100 1268h146l381 -838l71 -170h4q37 96 70 170l381 838h145l101 -1268q2 -45 45 -45h78v-127h-140q-66 0 -93.5 28.5t-31.5 96.5l-67 874l-6 201h-4q-39 -127 -74 -201l-342 -731h-129l-340 731l-76 205h-4q0 -127 -6 -205l-68 -874 q-4 -68 -31.5 -96.5t-93.5 -28.5h-137z" /> -<glyph unicode="N" horiz-adv-x="1556" d="M86 0v127h88q45 0 45 45v1268h131l735 -1026l117 -189h4q-10 113 -10 189v901q0 66 29.5 95.5t95.5 29.5h152v-127h-89q-45 0 -45 -45v-1268h-131l-735 1026l-119 186h-4q12 -111 12 -186v-901q0 -66 -29.5 -95.5t-94.5 -29.5h-152z" /> -<glyph unicode="O" horiz-adv-x="1619" d="M78 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5q-307 0 -520 219.5t-213 534.5zM227 729q0 -260 170 -439t414 -179q242 0 413 179t171 439q0 254 -170 427t-414 173t-414 -173t-170 -427z" /> -<glyph unicode="P" horiz-adv-x="1185" d="M86 1313v127h608q195 0 320 -119t125 -315q0 -199 -125 -320t-320 -121h-332v-565h-143v1313h-133zM362 692h314q143 0 229 84t86 230q0 143 -85 225t-228 82h-316v-621z" /> -<glyph unicode="Q" horiz-adv-x="1619" d="M78 729q0 309 212 522t517 213q311 0 524 -213t213 -522q0 -283 -180 -496l176 -176l-88 -92l-176 178q-197 -168 -469 -168q-305 0 -517 219.5t-212 534.5zM227 729q0 -260 168 -439t412 -179q205 0 356 120l13 11l-172 174l88 92l170 -176q133 170 133 397 q0 254 -169 426t-419 172q-246 0 -413 -172t-167 -426z" /> -<glyph unicode="R" horiz-adv-x="1239" d="M86 1313v127h610q182 0 298 -111.5t116 -298.5q0 -158 -82 -259t-197 -126v-4q29 -16 50 -57l206 -410q14 -31 37 -39t66 -8h29v-127h-64q-90 0 -127 19.5t-72 89.5l-206 411q-29 55 -56.5 70.5t-89.5 15.5h-242v-606h-143v1313h-133zM362 733h320q129 0 204 79t75 214 q0 133 -75 210t-202 77h-322v-580z" /> -<glyph unicode="S" horiz-adv-x="1060" d="M76 180l88 105q6 -6 17.5 -18.5t48 -43t77.5 -53.5t103.5 -42t126.5 -19q121 0 202.5 71.5t81.5 184.5q0 98 -72.5 167.5t-177 116.5t-210 97.5t-178 138.5t-72.5 211q0 154 122.5 261t317.5 107q82 0 165 -20.5t153.5 -79.5t70.5 -147v-103h-135v68q0 63 -75 106 t-177 43q-135 0 -215 -67.5t-80 -163.5q0 -59 30.5 -107.5t81 -80t114 -64.5t130 -59.5t130 -65.5t113.5 -83t81 -112.5t31 -154.5q0 -168 -120 -283t-317 -115q-82 0 -159.5 21.5t-128.5 51.5t-91 59.5t-59 52.5z" /> -<glyph unicode="T" horiz-adv-x="1269" d="M31 1171v152q0 66 25.5 91.5t90.5 25.5h975q66 0 91.5 -25.5t25.5 -91.5v-152h-133v97q0 45 -45 45h-354v-1313h-144v1313h-356q-45 0 -45 -45v-97h-131z" /> -<glyph unicode="U" horiz-adv-x="1468" d="M70 1313v127h151q66 0 95.5 -30t29.5 -95v-815q0 -180 105.5 -284.5t281.5 -104.5q178 0 283.5 105.5t105.5 287.5v811q0 66 30 95.5t95 29.5h152v-127h-88q-45 0 -45 -45v-774q0 -233 -146.5 -376t-384 -143t-385 142.5t-147.5 376.5v774q0 45 -45 45h-88z" /> -<glyph unicode="V" horiz-adv-x="1337" d="M25 1313v127h63q78 0 109.5 -22.5t58.5 -96.5l354 -969l56 -186h4q29 113 55 186l354 969q27 74 59.5 96.5t110.5 22.5h62v-127h-19q-57 0 -73 -45l-474 -1268h-153l-473 1268q-16 45 -74 45h-20z" /> -<glyph unicode="W" horiz-adv-x="1935" d="M35 1313v127h63q82 0 119 -23.5t55 -95.5l250 -993l31 -154h4q18 80 39 154l317 1106h142l288 -1106l33 -154h4q14 80 33 154l250 993q18 72 55 95.5t119 23.5h64v-127h-23q-63 0 -76 -45l-332 -1268h-170l-268 1001l-47 213h-4q-25 -119 -51 -210l-295 -1004h-170 l-330 1268q-12 45 -76 45h-24z" /> -<glyph unicode="X" horiz-adv-x="1167" d="M31 0l458 752l-311 508q-33 53 -102 53h-43v127h76q78 0 116.5 -22.5t81.5 -92.5l185 -309l92 -164h4q43 90 88 164l184 309q43 70 82 92.5t117 22.5h76v-127h-43q-70 0 -103 -53l-313 -508l461 -752h-164l-299 496l-92 157h-4q-41 -86 -86 -159l-297 -494h-164z" /> -<glyph unicode="Y" horiz-adv-x="1212" d="M20 1313v127h56q76 0 113.5 -20.5t82.5 -94.5l244 -407l88 -162h4q43 86 88 162l244 407q45 74 83 94.5t114 20.5h55v-127h-33q-63 0 -94 -53l-387 -633v-627h-143v627l-385 633q-33 53 -97 53h-33z" /> -<glyph unicode="Z" horiz-adv-x="1177" d="M39 0v100l772 1082q25 33 50.5 65.5t39.5 48.5l14 17v4q-35 -4 -104 -4h-573q-45 0 -45 -45v-97h-134v144q0 66 30 95.5t95 29.5h908v-101l-770 -1081q-25 -33 -51.5 -65.5t-41.5 -49.5l-14 -16v-4q35 4 107 4h620q45 0 45 45v96h133v-143q0 -66 -29.5 -95.5t-95.5 -29.5 h-956z" /> -<glyph unicode="[" horiz-adv-x="620" d="M207 -70v1440q0 66 29.5 95.5t95.5 29.5h151v-115h-102q-45 0 -45 -45v-1370q0 -45 45 -45h102v-115h-151q-66 0 -95.5 29.5t-29.5 95.5z" /> -<glyph unicode="\" horiz-adv-x="649" d="M10 1520h131l518 -1606h-129z" /> -<glyph unicode="]" horiz-adv-x="620" d="M137 -80h103q45 0 45 45v1370q0 45 -45 45h-103v115h152q66 0 95.5 -29.5t29.5 -95.5v-1440q0 -66 -30 -95.5t-95 -29.5h-152v115z" /> -<glyph unicode="^" d="M150 512l405 928h96l406 -928h-133l-320 758l-319 -758h-135z" /> -<glyph unicode="_" horiz-adv-x="1077" d="M10 0h1057v-119h-1057v119z" /> -<glyph unicode="`" horiz-adv-x="737" d="M190 1784h156l143 -244h-120z" /> -<glyph unicode="a" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM225 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97z" /> -<glyph unicode="b" horiz-adv-x="1196" d="M41 1319v121h145q66 0 95.5 -30t29.5 -95v-373l-4 -84h4q4 8 11.5 21.5t36 47.5t65.5 59.5t100.5 47t137.5 21.5q205 0 326.5 -149.5t121.5 -391.5t-130 -390.5t-335 -148.5q-203 0 -315 162l-23 37h-4q4 -35 4 -84v-90h-135v1274q0 45 -45 45h-86zM307 512 q0 -168 86 -291t242 -123q141 0 236.5 113t95.5 303q0 186 -91.5 300t-234.5 114q-141 0 -237.5 -104.5t-96.5 -311.5z" /> -<glyph unicode="c" horiz-adv-x="1081" d="M82 514q0 236 155.5 388.5t387.5 152.5q49 0 107.5 -11.5t118.5 -34t100 -68.5t40 -105v-93h-131v60q0 59 -79 93t-156 34q-170 0 -285 -116t-115 -300t118 -298t286 -114q186 0 317 131l15 15l65 -105q-6 -6 -16.5 -17t-49 -41t-81.5 -51.5t-113 -40t-143 -18.5 q-233 0 -387 150.5t-154 388.5z" /> -<glyph unicode="d" horiz-adv-x="1204" d="M86 516q0 242 129 390.5t334 148.5q207 0 315 -158l21 -35h4q-4 35 -4 78v334q0 45 -45 45h-86v121h145q66 0 95.5 -30t29.5 -95v-1149q0 -45 45 -45h86v-121h-143q-123 0 -123 115l4 65h-4l-11 -22q-7 -14 -36 -49t-66 -62t-101.5 -49.5t-139.5 -22.5q-205 0 -327 149.5 t-122 391.5zM229 516.5q0 -188.5 90.5 -302.5t235.5 -114q141 0 237.5 104.5t96.5 311.5q0 170 -86 292t-242 122q-141 0 -236.5 -112.5t-95.5 -301z" /> -<glyph unicode="e" horiz-adv-x="1122" d="M82 514q0 246 146.5 393.5t361.5 147.5q205 0 318.5 -136.5t113.5 -338.5l-4 -70h-791q2 -188 118 -299t282 -111q170 0 299 117l10 10l68 -104q-16 -16 -48 -41t-131.5 -66t-203.5 -41q-231 0 -385 151.5t-154 387.5zM233 621h646q-6 154 -88 235.5t-203 81.5 q-133 0 -231.5 -83.5t-123.5 -233.5z" /> -<glyph unicode="f" horiz-adv-x="624" d="M51 913v117h129v37q0 119 38 202t98.5 118.5t112.5 49t106 13.5l63 -4v-125q-18 4 -49 4q-37 0 -70 -9t-72.5 -32.5t-63.5 -80t-24 -136.5v-37h263v-117h-263v-913h-139v913h-129z" /> -<glyph unicode="g" horiz-adv-x="1185" d="M86 534.5q0 233.5 121 377t325 143.5q78 0 141.5 -18.5t99.5 -44t60.5 -51.5t32.5 -44l8 -18h5v39q0 113 116 112h144v-121h-84q-45 0 -45 -45v-839q0 -229 -142.5 -342t-353.5 -113q-176 0 -336 82l53 117q127 -72 279 -72q162 0 261 80t99 243v91l2 73h-4 q-96 -178 -323 -178q-207 0 -333 147.5t-126 381zM229 536.5q0 -184.5 92.5 -295t243.5 -110.5q137 0 222 95.5t85 308.5q0 393 -325 393q-150 0 -234 -103.5t-84 -288z" /> -<glyph unicode="h" horiz-adv-x="1239" d="M41 1319v121h145q66 0 95.5 -29t29.5 -92v-436l-4 -84h4q37 92 144.5 174t263.5 82q186 0 266 -100.5t80 -299.5v-489q0 -45 45 -45h86v-121h-145q-66 0 -95.5 29.5t-29.5 95.5v493q0 70 -7.5 118t-30 94.5t-69.5 70t-119 23.5q-131 0 -234.5 -82t-137.5 -211 q-16 -55 -17 -137v-494h-139v1274q0 45 -45 45h-86z" /> -<glyph unicode="i" horiz-adv-x="514" d="M57 909v121h146q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v739q0 45 -45 45h-86zM184 1264v176h135v-176h-135z" /> -<glyph unicode="j" horiz-adv-x="548" d="M-43 -295q18 -2 45 -2q37 0 72 9t74.5 34t63.5 82t24 139v897q0 45 -46 45h-86v121h146q66 0 95.5 -29.5t29.5 -95.5v-944q0 -121 -38 -203t-99.5 -117.5t-113.5 -49t-108 -13.5l-59 6v121zM233 1264v176h134v-176h-134z" /> -<glyph unicode="k" horiz-adv-x="1019" d="M41 1319v121h145q68 0 96.5 -27t28.5 -92v-684h107q78 0 117 49l264 344h170l-297 -377q-23 -29 -42.5 -47t-27.5 -22l-8 -4v-5q31 -14 63 -75l187 -334q14 -27 33.5 -36t60.5 -9h55v-121h-96q-78 0 -110.5 19.5t-67.5 82.5l-205 369q-25 45 -108 45h-95v-516h-139v1274 q0 45 -45 45h-86z" /> -<glyph unicode="l" horiz-adv-x="501" d="M45 1319v121h145q66 0 95.5 -30t29.5 -95v-1149q0 -45 45 -45h86v-121h-145q-66 0 -95.5 29.5t-29.5 95.5v1149q0 45 -45 45h-86z" /> -<glyph unicode="m" horiz-adv-x="1906" d="M47 909v121h143q125 0 125 -115v-47l-4 -73h4q39 106 146.5 183t226.5 77q272 0 320 -258h4q43 109 147.5 183.5t231.5 74.5q182 0 262 -100.5t80 -299.5v-489q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v496q0 145 -47 226t-176 81q-113 0 -203 -86 t-123 -205q-18 -57 -18 -150v-487h-139v621q0 68 -7.5 114.5t-28 95t-66.5 73t-115 24.5q-121 0 -211 -88t-125 -215q-16 -57 -17 -138v-487h-139v864q0 45 -45 45h-86z" /> -<glyph unicode="n" horiz-adv-x="1245" d="M47 909v121h143q125 0 125 -115v-47l-4 -73h4q37 94 142.5 177t267.5 83q186 0 266 -100.5t80 -299.5v-489q0 -45 45 -45h86v-121h-145q-66 0 -95.5 29.5t-29.5 95.5v493q0 145 -44 225.5t-179 80.5q-131 0 -235.5 -81t-139.5 -210q-16 -57 -17 -139v-494h-139v864 q0 45 -45 45h-86z" /> -<glyph unicode="o" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q227 0 385.5 -153.5t158.5 -381.5q0 -231 -158.5 -388t-383.5 -157q-227 0 -386 157t-159 388zM225 520q0 -178 117 -299t285 -121q166 0 282.5 121t116.5 299q0 174 -116.5 291t-282.5 117q-168 0 -285 -117t-117 -291z" /> -<glyph unicode="p" horiz-adv-x="1202" d="M47 909v121h141q123 0 123 -108l-2 -70h4q4 8 11.5 21.5t36 49t64.5 62.5t101.5 48.5t141.5 21.5q205 0 326.5 -149.5t121.5 -391.5t-129 -390.5t-332 -148.5q-70 0 -131 20.5t-97 49.5t-62.5 56.5t-36.5 48.5l-11 20h-4q4 -37 4 -90v-490h-139v1274q0 45 -45 45h-86z M313 512q0 -168 87 -291t241 -123q141 0 236.5 113t95.5 303q0 188 -90 301t-236 113q-141 0 -237.5 -104.5t-96.5 -311.5z" /> -<glyph unicode="q" horiz-adv-x="1204" d="M88 516q0 242 129 390.5t334 148.5q70 0 131 -20.5t98 -50.5t63.5 -58.5t37.5 -48.5l10 -21h4q-2 29 -2 68q0 106 123 106h141v-121h-86q-45 0 -45 -45v-1274h-139v494l4 90h-4q-4 -8 -11.5 -21.5t-36 -47t-65.5 -60.5t-100.5 -48.5t-136.5 -21.5q-205 0 -327 149.5 t-122 391.5zM229 516.5q0 -188.5 91.5 -302.5t236.5 -114q141 0 237.5 104.5t96.5 311.5q0 170 -86 292t-242 122q-141 0 -237.5 -112.5t-96.5 -301z" /> -<glyph unicode="r" horiz-adv-x="741" d="M47 909v121h143q125 0 125 -117v-69l-4 -78h4q39 123 124 198.5t202 75.5l55 -6v-137q-25 4 -51 4q-106 0 -185 -73.5t-114 -192.5q-29 -92 -29 -201v-434h-139v864q0 45 -45 45h-86z" /> -<glyph unicode="s" horiz-adv-x="901" d="M59 156l80 96q4 -6 13.5 -16.5t40 -38t64.5 -48t88 -37t112 -16.5q92 0 154.5 43t62.5 121q0 61 -59.5 106.5t-144.5 78t-170 69.5t-144.5 103.5t-59.5 158.5q0 135 102.5 207t264.5 72q45 0 94 -9.5t100.5 -29t85 -58t33.5 -90.5v-88h-131v49q0 51 -57.5 78t-120.5 27 q-229 0 -229 -150q0 -63 59 -108t144 -77t170 -68.5t144.5 -104.5t59.5 -162q0 -127 -102.5 -208t-257.5 -81q-227 0 -373 154z" /> -<glyph unicode="t" horiz-adv-x="686" d="M55 913v117h138v285h137v-285h258v-117h-258v-524q0 -70 17.5 -121t42 -79.5t57 -45t59 -21.5t55.5 -5l47 4v-125q-25 -4 -59 -4q-43 0 -84 6t-93.5 29.5t-90 62.5t-64.5 112.5t-27 172.5v538h-135z" /> -<glyph unicode="u" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-4q-39 -94 -144.5 -177.5t-257.5 -83.5q-180 0 -263 98.5t-83 301.5v489q0 45 -45 45h-86z " /> -<glyph unicode="v" horiz-adv-x="1060" d="M29 909v121h55q74 0 105.5 -21.5t58.5 -90.5l248 -644l34 -120h5q16 70 34 120l248 644q27 70 58.5 91t103.5 21h53v-121h-18q-55 0 -72 -47l-336 -862h-151l-336 862q-18 47 -72 47h-18z" /> -<glyph unicode="w" horiz-adv-x="1708" d="M20 909v121h72q76 0 107.5 -21.5t54.5 -93.5l211 -653l31 -110h4q16 61 32 110l252 764h140l252 -764l32 -110h4q12 59 29 110l213 653q23 72 54.5 93.5t107.5 21.5h72v-121h-29q-55 0 -72 -47l-295 -862h-153l-252 733l-31 111h-4q-14 -59 -33 -111l-250 -733h-155 l-295 862q-16 47 -72 47h-27z" /> -<glyph unicode="x" horiz-adv-x="976" d="M37 909v121h76q78 0 111.5 -20.5t80.5 -91.5l148 -230l34 -61h5q18 35 32 61l150 230q47 72 80.5 92t111.5 20h74v-121h-41q-70 0 -96 -41l-223 -331l360 -537h-164l-252 383l-32 57h-5q-16 -29 -34 -57l-252 -383h-162l358 537l-223 329q-31 43 -94 43h-43z" /> -<glyph unicode="y" horiz-adv-x="1103" d="M16 -330l66 103q0 -4 18.5 -21.5t57.5 -37t78 -19.5q121 0 190 168l61 141l-362 858q-20 47 -72 47h-20v121h63q70 0 99.5 -21.5t58.5 -90.5l264 -644l37 -110h4q14 59 35 110l254 644q27 70 57.5 91t102.5 21h63v-121h-20q-53 0 -72 -47l-444 -1077 q-41 -100 -118 -157.5t-177 -57.5q-133 0 -220 94z" /> -<glyph unicode="z" horiz-adv-x="1021" d="M80 0v90l579 723l82 94v4q-35 -4 -102 -4h-377q-45 0 -45 -45v-80h-131v123q0 66 29.5 95.5t95.5 29.5h715v-92l-578 -721l-86 -94v-4q37 4 105 4h426q45 0 45 45v80h131v-123q0 -66 -30 -95.5t-95 -29.5h-764z" /> -<glyph unicode="{" horiz-adv-x="667" d="M68 598v127q6 0 18 3t42 18.5t53.5 38t42 69.5t18.5 107v167q0 96 24.5 168t58 109t80 58.5t78 26.5t64.5 5h31v-115h-19q-27 0 -52.5 -7t-60 -30.5t-55 -79t-20.5 -139.5v-200q0 -55 -16.5 -103.5t-41 -76t-49 -47t-41.5 -25.5l-16 -8v-5q6 -2 17.5 -7t40 -24.5t50 -46 t39 -74.5t17.5 -108v-225q0 -82 21.5 -138t55 -79t59 -31t52.5 -8h19v-115q-12 -2 -31 -2q-33 0 -64.5 5.5t-78 28t-80 59t-58 108.5t-24.5 168v195q0 59 -18.5 105t-43 69.5t-50.5 38t-44 16.5z" /> -<glyph unicode="|" horiz-adv-x="583" d="M227 -322v1936h129v-1936h-129z" /> -<glyph unicode="}" horiz-adv-x="667" d="M90 -82h21q25 0 50 8t59 31t55.5 79t21.5 138v225q0 59 16.5 107.5t41 75t49 46t40.5 25.5l17 6v5q-6 2 -17.5 7t-40 26.5t-50 48t-39 74.5t-17.5 104v200q0 84 -20.5 139.5t-55.5 79t-59.5 30.5t-50.5 7h-21v115h33q31 0 62.5 -5t77.5 -27.5t80 -58.5t58.5 -107.5 t24.5 -168.5v-167q0 -174 137 -226l37 -10v-127q-6 0 -18.5 -3t-42 -18.5t-53 -38t-42 -68.5t-18.5 -105v-195q0 -96 -24.5 -168t-58.5 -108.5t-80 -59t-77.5 -28t-62.5 -5.5l-33 2v115z" /> -<glyph unicode="~" d="M137 428q0 162 69.5 239.5t190.5 77.5q61 0 110.5 -21.5t81.5 -53t61.5 -63.5t68.5 -53.5t86 -21.5q82 0 113.5 63.5t31.5 141.5h121q0 -162 -69.5 -239.5t-190.5 -77.5q-76 0 -134.5 33.5t-89 72.5t-78.5 73t-106 34q-82 0 -113.5 -63.5t-31.5 -141.5h-121z" /> -<glyph unicode="¡" horiz-adv-x="608" d="M223 872v158h158v-158h-158zM231 -410l7 1063h131l6 -1063h-144z" /> -<glyph unicode="¢" horiz-adv-x="1116" d="M113 720.5q0 231.5 108.5 390.5t302.5 181v228h117v-228q248 -29 367 -303l-131 -49q-94 221 -287 221q-162 0 -247 -123t-85 -317q0 -197 84 -318.5t248 -121.5q193 0 287 221l131 -51q-125 -281 -367 -304v-227h-117v227q-195 23 -303 182.5t-108 391z" /> -<glyph unicode="£" horiz-adv-x="1191" d="M111 0v127h129v541h-93v112h93v305q0 162 119.5 270.5t302.5 108.5q178 0 313 -110l8 -6l-88 -103q-98 86 -233 86q-129 0 -204 -72.5t-75 -181.5v-297h391v-112h-391v-541h539q45 0 45 45v96h133v-143q0 -66 -30 -95.5t-95 -29.5h-864z" /> -<glyph unicode="¥" horiz-adv-x="1243" d="M35 1313v127h49q78 0 119 -21.5t84 -93.5l243 -407l88 -160h5q43 84 88 160l245 407q41 72 83 93.5t120 21.5h47v-127h-24q-72 0 -99 -45l-266 -439v-4h205v-104h-272l-56 -94v-84h328v-107h-328v-436h-143v436h-332v107h332v84l-59 94h-281v104h215v4l-268 439 q-27 45 -99 45h-24z" /> -<glyph unicode="§" horiz-adv-x="849" d="M123 -41l72 98q72 -61 168 -61t159.5 60.5t63.5 162.5q0 35 -8 66l-134 878h123l140 -889q8 -53 8 -71q0 -143 -98.5 -236.5t-256.5 -93.5q-137 2 -237 86zM150 1135q0 143 97 236t255 93q137 -2 237 -86l-71 -96q-70 59 -166 59t-161 -58t-65 -161q0 -33 9 -63l135 -885 h-123l-139 889q-8 33 -8 72z" /> -<glyph unicode="¨" horiz-adv-x="1009" d="M322 1608v176h120v-176h-120zM629 1608v176h121v-176h-121z" /> -<glyph unicode="©" horiz-adv-x="1624" d="M84 721q0 309 212 526t511 217q305 0 519 -217t214 -526q0 -313 -213 -529.5t-520 -216.5q-301 0 -512 217.5t-211 528.5zM205 721q0 -268 174 -451.5t428 -183.5q260 0 437 183.5t177 451.5q0 266 -177 449.5t-437 183.5q-254 0 -428 -183.5t-174 -449.5zM406 717 q0 172 114.5 297t306.5 125q63 0 121 -19.5t94.5 -47.5t65.5 -56.5t41 -48.5l12 -19l-94 -63l-10 15q-6 9 -28.5 33.5t-48.5 43t-66 34t-83 15.5q-141 0 -223 -90t-82 -217t81 -217t224 -90q135 0 226 127l10 14l94 -64q-4 -8 -13 -20t-40 -45t-66.5 -58.5t-93 -46 t-121.5 -20.5q-195 0 -308 124t-113 294z" /> -<glyph unicode="ª" horiz-adv-x="847" d="M119 541v96h620v-96h-620zM123 979q0 225 389 225h27q-2 86 -35 122t-111 36q-106 0 -106 -41v-49h-109v80q0 41 45 67.5t89 33.5t83 7q143 0 199.5 -66.5t56.5 -185.5v-290q0 -18 19 -19h59v-104h-96q-84 0 -86 79v25h-4q-6 -12 -18.5 -31.5t-62.5 -52.5t-114 -33 q-92 0 -158.5 53.5t-66.5 143.5zM240 985q0 -43 32.5 -73.5t89.5 -30.5q80 0 127.5 68.5t51.5 164.5h-25q-276 0 -276 -129z" /> -<glyph unicode="«" horiz-adv-x="1069" d="M78 578l336 421h149l-336 -421l336 -420h-149zM444 578l336 421h152l-336 -421l336 -420h-152z" /> -<glyph unicode="¬" d="M143 700v119h955v-495h-125v376h-830z" /> -<glyph unicode="­" horiz-adv-x="884" d="M152 518v127h581v-127h-581z" /> -<glyph unicode="®" horiz-adv-x="1624" d="M84 721q0 309 212 526t511 217q305 0 519 -217t214 -526q0 -313 -213 -529.5t-520 -216.5q-301 0 -512 217.5t-211 528.5zM205 721q0 -268 174 -451.5t428 -183.5q260 0 437 183.5t177 451.5q0 266 -177 449.5t-437 183.5q-254 0 -428 -183.5t-174 -449.5zM492 1024v96 h358q106 0 173 -65.5t67 -171.5q0 -84 -44.5 -140.5t-105.5 -70.5v-4q23 -8 41 -43l92 -185q12 -27 55 -26h21v-92h-59q-47 0 -71 11t-44 50l-111 217q-25 45 -73 45h-111v-323h-115v702h-73zM680 735h149q66 0 104 39t38 109q0 68 -38 104.5t-104 36.5h-149v-289z" /> -<glyph unicode="¯" horiz-adv-x="944" d="M229 1608v110h504v-110h-504z" /> -<glyph unicode="ˉ" horiz-adv-x="944" d="M229 1608v110h504v-110h-504z" /> -<glyph unicode="°" horiz-adv-x="784" d="M104 1178q0 117 84 200.5t203 83.5t204 -84t85 -200q0 -119 -84 -202t-205 -83q-119 0 -203 83t-84 202zM227 1178q0 -72 47.5 -121t117 -49t118.5 49t49 121q0 70 -49 120t-118.5 50t-117 -50t-47.5 -120z" /> -<glyph unicode="±" d="M86 522v119h473v522h125v-522h471v-119h-471v-522h-125v522h-473zM123 -213h995v-119h-995v119z" /> -<glyph unicode="²" horiz-adv-x="837" d="M104 645q0 63 20.5 113.5t64.5 91.5t77 62.5t97 58.5q66 37 100.5 60.5t67 68.5t32.5 98q0 63 -44 105.5t-118 42.5q-57 0 -98 -25t-41 -57v-54h-110v80q0 80 82.5 123t166.5 43q131 0 206 -72.5t75 -185.5q0 -61 -20.5 -109.5t-68.5 -89.5t-77 -59t-96.5 -57t-100 -61.5 t-65.5 -66.5t-33 -93q0 -12 19 -13h358q12 0 12 15v71h111v-102q0 -47 -21.5 -68.5t-68.5 -21.5h-434q-51 0 -72 22.5t-21 79.5z" /> -<glyph unicode="³" horiz-adv-x="837" d="M102 674l82 80q10 -12 29.5 -32t78 -52.5t116.5 -32.5q72 0 126 50t54 126t-56.5 121t-136.5 45h-71l-21 70l197 239l47 49v4q-35 -6 -74 -6h-194q-20 0 -21 -22v-58h-111v88q0 53 20.5 75t76.5 22h452v-80l-241 -283q96 -8 174 -78.5t78 -187.5q0 -123 -89.5 -204 t-211.5 -81q-80 0 -156 37t-111 74z" /> -<glyph unicode="´" horiz-adv-x="759" d="M236 1540l143 244h156l-179 -244h-120z" /> -<glyph unicode="µ" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-6q-4 -10 -12.5 -28t-42.5 -63t-74.5 -79.5t-113.5 -62.5t-157 -28q-76 0 -133 21.5 t-76 44.5l-18 20h-4q14 -104 14 -155v-316h-129v1274q0 45 -45 45h-86z" /> -<glyph unicode="μ" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-6q-4 -10 -12.5 -28t-42.5 -63t-74.5 -79.5t-113.5 -62.5t-157 -28q-76 0 -133 21.5 t-76 44.5l-18 20h-4q14 -104 14 -155v-316h-129v1274q0 45 -45 45h-86z" /> -<glyph unicode="¶" horiz-adv-x="1175" d="M88 968.5q0 198.5 143.5 335t343.5 136.5h490v-127h-371v-1415h-116v596q-201 0 -345.5 138t-144.5 336.5zM821 -102v1292h119v-1292h-119z" /> -<glyph unicode="·" horiz-adv-x="440" d="M141 508v164h158v-164h-158z" /> -<glyph unicode="∙" horiz-adv-x="440" d="M141 508v164h158v-164h-158z" /> -<glyph unicode="¸" horiz-adv-x="845" d="M227 -311q39 -12 86 -13q104 0 104.5 70t-116.5 70l-31 -2l54 227l82 -14v-17l-25 -123q66 -10 105.5 -48t39.5 -97q0 -82 -57 -122t-141 -40l-101 10v99z" /> -<glyph unicode="¹" horiz-adv-x="837" d="M162 1231l209 209h104v-791h191v-106h-502v106h192v563l2 70h-4q-10 -20 -26 -37l-92 -90z" /> -<glyph unicode="º" horiz-adv-x="933" d="M125 1126q0 141 100.5 238.5t241.5 97.5t241.5 -97t100.5 -239q0 -145 -99.5 -243.5t-242.5 -98.5t-242.5 98.5t-99.5 243.5zM160 541v96h620v-96h-620zM238 1126q0 -102 66.5 -169.5t162.5 -67.5t162.5 67.5t66.5 169.5q0 100 -66.5 167t-162.5 67t-162.5 -67 t-66.5 -167z" /> -<glyph unicode="»" horiz-adv-x="1069" d="M135 158l336 420l-336 421h152l336 -421l-336 -420h-152zM504 158l336 420l-336 421h151l336 -421l-336 -420h-151z" /> -<glyph unicode="¼" horiz-adv-x="1822" d="M158 1231l209 209h102v-791h188v-106h-497v106h192v563l2 70h-4q-10 -20 -26 -37l-93 -90zM551 0l608 1440h127l-606 -1440h-129zM1016 240v75l426 582h123v-551h137v-106h-137v-240h-117v240h-432zM1155 344q29 2 43 2h252v313l2 80h-4q-14 -29 -33 -55l-231 -305 l-29 -33v-2z" /> -<glyph unicode="½" horiz-adv-x="1822" d="M158 1231l209 209h102v-791h188v-106h-497v106h192v563l2 70h-4q-10 -20 -26 -37l-93 -90zM528 0l609 1440h127l-607 -1440h-129zM1063 102q0 63 20.5 114.5t64.5 91.5t78 62.5t95 57.5q66 37 100.5 60.5t67.5 68.5t33 98q0 63 -44 105.5t-118 42.5q-57 0 -98 -24.5 t-41 -57.5v-51h-111v78q0 82 83 123.5t167 41.5q131 0 205.5 -72.5t74.5 -185.5q0 -61 -20.5 -109t-67.5 -88t-77.5 -60.5t-96.5 -57.5q-49 -29 -74.5 -46.5t-59.5 -46t-48 -59t-14 -67.5q0 -14 16 -15h358q12 0 13 15v72h110v-103q0 -90 -90 -90h-434q-51 0 -71.5 22.5 t-20.5 79.5z" /> -<glyph unicode="¾" horiz-adv-x="1822" d="M127 674l82 80q10 -12 29.5 -32t78 -52.5t115.5 -32.5q72 0 126 50t54 126t-56 121t-136 45h-72l-20 70l196 239l47 49v4q-35 -6 -73 -6h-195q-20 0 -20 -22v-58h-111v88q0 53 20.5 75t75.5 22h453v-80l-242 -283q96 -8 174 -78.5t78 -187.5q0 -123 -89 -204t-212 -81 q-80 0 -155.5 37t-110.5 74zM549 0l608 1440h127l-606 -1440h-129zM1016 240v75l426 582h123v-551h137v-106h-137v-240h-117v240h-432zM1155 344q29 2 43 2h252v313l2 80h-4q-14 -29 -33 -55l-231 -305l-29 -33v-2z" /> -<glyph unicode="¿" horiz-adv-x="882" d="M63 -68q0 94 38 169t91.5 126.5t107.5 98.5t92 109.5t38 135.5v82h137v-88q0 -90 -36.5 -163.5t-89 -124t-104.5 -98.5t-89 -109.5t-37 -130.5q0 -100 75.5 -168t192.5 -68q61 0 124 21.5t93 42.5l31 22l76 -102q-14 -12 -41 -32t-113 -52.5t-176 -32.5q-176 0 -293 102 t-117 260zM420 872v158h158v-158h-158z" /> -<glyph unicode="À" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186zM434 1784h156l143 -244h-121z" /> -<glyph unicode="Á" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186zM612 1540l144 244h155l-178 -244h-121z " /> -<glyph unicode="Â" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186zM432 1540l170 244h143l170 -244h-129 l-110 166h-4l-111 -166h-129z" /> -<glyph unicode="Ã" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM350 1546q0 240 191 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h108q0 -240 -190 -240 q-59 0 -104.5 37t-81 73t-74.5 36q-82 0 -82 -140h-107zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186z" /> -<glyph unicode="Ä" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186zM461 1608v176h121v-176h-121zM768 1608 v176h121v-176h-121z" /> -<glyph unicode="Å" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186zM522 1662.5q0 63.5 44 104.5t107.5 41 t107.5 -41t44 -104.5t-44 -104t-107.5 -40.5t-107.5 40.5t-44 104zM606 1663q0 -29 18.5 -48.5t49.5 -19.5q29 0 48 19.5t19 48.5q0 31 -19.5 50.5t-48 19.5t-48 -19.5t-19.5 -50.5z" /> -<glyph unicode="Æ" horiz-adv-x="1685" d="M25 127h18q57 0 74 45l487 1268h848q66 0 95.5 -30t29.5 -95v-144h-135v97q0 45 -45 45h-475v-525h524v-126h-524v-490q0 -27 13 -36t44 -9h477q45 0 45 45v96h135v-143q0 -66 -29.5 -95.5t-95.5 -29.5h-589q-80 0 -112 25.5t-32 99.5v537h-325l-205 -543 q-27 -74 -58.5 -96.5t-109.5 -22.5h-55v127zM500 788h278v525h-82z" /> -<glyph unicode="Ç" horiz-adv-x="1421" d="M78 731q0 311 203.5 522t506.5 211q82 0 171.5 -17.5t174.5 -52t139 -96t54 -139.5v-119h-135v80q0 94 -129 151.5t-270 57.5q-242 0 -404 -169t-162 -429t161 -440t405 -180q84 0 162.5 20.5t134 50t97.5 59t62 50.5l21 20l82 -102l-24 -24q-15 -15 -67.5 -55 t-110.5 -69.5t-151.5 -56.5t-191.5 -29l-19 -88q66 -10 105 -48t39 -97q0 -84 -56.5 -123t-140.5 -39l-100 10v99q39 -12 86 -13q102 0 102 70t-116 70l-29 -2l39 166q-285 27 -462 238.5t-177 512.5z" /> -<glyph unicode="È" horiz-adv-x="1142" d="M86 1313v127h823q66 0 95.5 -30t29.5 -95v-144h-135v97q0 45 -45 45h-492v-525h541v-126h-541v-490q0 -45 46 -45h505q45 0 45 45v96h134v-143q0 -66 -30 -95.5t-95 -29.5h-623q-66 0 -95.5 29.5t-29.5 95.5v1188h-133zM362 1784h156l144 -244h-121z" /> -<glyph unicode="É" horiz-adv-x="1142" d="M86 1313v127h823q66 0 95.5 -30t29.5 -95v-144h-135v97q0 45 -45 45h-492v-525h541v-126h-541v-490q0 -45 46 -45h505q45 0 45 45v96h134v-143q0 -66 -30 -95.5t-95 -29.5h-623q-66 0 -95.5 29.5t-29.5 95.5v1188h-133zM541 1540l143 244h156l-178 -244h-121z" /> -<glyph unicode="Ê" horiz-adv-x="1142" d="M86 1313v127h823q66 0 95.5 -30t29.5 -95v-144h-135v97q0 45 -45 45h-492v-525h541v-126h-541v-490q0 -45 46 -45h505q45 0 45 45v96h134v-143q0 -66 -30 -95.5t-95 -29.5h-623q-66 0 -95.5 29.5t-29.5 95.5v1188h-133zM360 1540l170 244h144l170 -244h-129l-111 166h-4 l-111 -166h-129z" /> -<glyph unicode="Ë" horiz-adv-x="1142" d="M86 1313v127h823q66 0 95.5 -30t29.5 -95v-144h-135v97q0 45 -45 45h-492v-525h541v-126h-541v-490q0 -45 46 -45h505q45 0 45 45v96h134v-143q0 -66 -30 -95.5t-95 -29.5h-623q-66 0 -95.5 29.5t-29.5 95.5v1188h-133zM389 1608v176h121v-176h-121zM696 1608v176h121 v-176h-121z" /> -<glyph unicode="Ì" horiz-adv-x="600" d="M59 1784h156l143 -244h-120zM94 0v127h135v1186h-135v127h412v-127h-137v-1186h137v-127h-412z" /> -<glyph unicode="Í" horiz-adv-x="600" d="M94 0v127h135v1186h-135v127h412v-127h-137v-1186h137v-127h-412zM238 1540l143 244h156l-179 -244h-120z" /> -<glyph unicode="Î" horiz-adv-x="600" d="M57 1540l170 244h144l170 -244h-129l-111 166h-4l-111 -166h-129zM94 0v127h135v1186h-135v127h412v-127h-137v-1186h137v-127h-412z" /> -<glyph unicode="Ï" horiz-adv-x="600" d="M86 1608v176h121v-176h-121zM94 0v127h135v1186h-135v127h412v-127h-137v-1186h137v-127h-412zM393 1608v176h121v-176h-121z" /> -<glyph unicode="Ð" horiz-adv-x="1464" d="M86 1313v127h578q330 0 526 -191.5t196 -527.5q0 -340 -196.5 -530.5t-525.5 -190.5h-320q-66 0 -95.5 29.5t-29.5 95.5v537h-102v122h102v529h-133zM362 172q0 -45 46 -45h241q270 0 429 154.5t159 439.5q0 283 -158.5 437.5t-429.5 154.5h-287v-529h336v-122h-336v-490 z" /> -<glyph unicode="Ñ" horiz-adv-x="1556" d="M86 0v127h88q45 0 45 45v1268h131l735 -1026l117 -189h4q-10 113 -10 189v901q0 66 29.5 95.5t95.5 29.5h152v-127h-89q-45 0 -45 -45v-1268h-131l-735 1026l-119 186h-4q12 -111 12 -186v-901q0 -66 -29.5 -95.5t-94.5 -29.5h-152zM477 1546q0 240 191 240q59 0 103 -37 t81 -74t74 -37q82 0 82 142h108q0 -240 -190 -240q-59 0 -104.5 37t-81 73t-74.5 36q-82 0 -82 -140h-107z" /> -<glyph unicode="Ò" horiz-adv-x="1619" d="M78 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5q-307 0 -520 219.5t-213 534.5zM227 729q0 -260 170 -439t414 -179q242 0 413 179t171 439q0 254 -170 427t-414 173t-414 -173t-170 -427zM565 1784h156l143 -244h-121z" /> -<glyph unicode="Ó" horiz-adv-x="1619" d="M78 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5q-307 0 -520 219.5t-213 534.5zM227 729q0 -260 170 -439t414 -179q242 0 413 179t171 439q0 254 -170 427t-414 173t-414 -173t-170 -427zM743 1540l144 244h155l-178 -244h-121z" /> -<glyph unicode="Ô" horiz-adv-x="1619" d="M78 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5q-307 0 -520 219.5t-213 534.5zM227 729q0 -260 170 -439t414 -179q242 0 413 179t171 439q0 254 -170 427t-414 173t-414 -173t-170 -427zM563 1540l170 244h144l170 -244h-129 l-111 166h-4l-111 -166h-129z" /> -<glyph unicode="Õ" horiz-adv-x="1619" d="M78 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5q-307 0 -520 219.5t-213 534.5zM227 729q0 -260 170 -439t414 -179q242 0 413 179t171 439q0 254 -170 427t-414 173t-414 -173t-170 -427zM481 1546q0 240 191 240q59 0 103 -37t81 -74 t74 -37q82 0 82 142h108q0 -240 -190 -240q-59 0 -104.5 37t-81 73t-74.5 36q-82 0 -82 -140h-107z" /> -<glyph unicode="Ö" horiz-adv-x="1619" d="M78 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5q-307 0 -520 219.5t-213 534.5zM227 729q0 -260 170 -439t414 -179q242 0 413 179t171 439q0 254 -170 427t-414 173t-414 -173t-170 -427zM592 1608v176h121v-176h-121zM899 1608v176 h121v-176h-121z" /> -<glyph unicode="×" d="M98 84l443 498l-443 497l84 84l439 -493l438 493l84 -84l-445 -497l445 -498l-84 -84l-438 494l-439 -494z" /> -<glyph unicode="Ø" horiz-adv-x="1626" d="M80 729q0 309 213 522t520 213q209 0 387 -110l98 137l84 -61l-96 -136q260 -223 260 -565q0 -315 -214 -534.5t-519 -219.5q-215 0 -391 115l-98 -139l-86 59l100 142q-121 104 -189.5 254.5t-68.5 322.5zM229 729q0 -283 195 -461l696 973q-143 88 -307 88 q-244 0 -414 -173t-170 -427zM504 203q145 -92 309 -92q244 0 414 179t170 439q0 272 -197 447z" /> -<glyph unicode="Ù" horiz-adv-x="1468" d="M70 1313v127h151q66 0 95.5 -30t29.5 -95v-815q0 -180 105.5 -284.5t281.5 -104.5q178 0 283.5 105.5t105.5 287.5v811q0 66 30 95.5t95 29.5h152v-127h-88q-45 0 -45 -45v-774q0 -233 -146.5 -376t-384 -143t-385 142.5t-147.5 376.5v774q0 45 -45 45h-88zM498 1784h155 l144 -244h-121z" /> -<glyph unicode="Ú" horiz-adv-x="1468" d="M70 1313v127h151q66 0 95.5 -30t29.5 -95v-815q0 -180 105.5 -284.5t281.5 -104.5q178 0 283.5 105.5t105.5 287.5v811q0 66 30 95.5t95 29.5h152v-127h-88q-45 0 -45 -45v-774q0 -233 -146.5 -376t-384 -143t-385 142.5t-147.5 376.5v774q0 45 -45 45h-88zM676 1540 l143 244h156l-178 -244h-121z" /> -<glyph unicode="Û" horiz-adv-x="1468" d="M70 1313v127h151q66 0 95.5 -30t29.5 -95v-815q0 -180 105.5 -284.5t281.5 -104.5q178 0 283.5 105.5t105.5 287.5v811q0 66 30 95.5t95 29.5h152v-127h-88q-45 0 -45 -45v-774q0 -233 -146.5 -376t-384 -143t-385 142.5t-147.5 376.5v774q0 45 -45 45h-88zM496 1540 l170 244h143l170 -244h-129l-111 166h-4l-110 -166h-129z" /> -<glyph unicode="Ü" horiz-adv-x="1468" d="M70 1313v127h151q66 0 95.5 -30t29.5 -95v-815q0 -180 105.5 -284.5t281.5 -104.5q178 0 283.5 105.5t105.5 287.5v811q0 66 30 95.5t95 29.5h152v-127h-88q-45 0 -45 -45v-774q0 -233 -146.5 -376t-384 -143t-385 142.5t-147.5 376.5v774q0 45 -45 45h-88zM524 1608v176 h121v-176h-121zM831 1608v176h121v-176h-121z" /> -<glyph unicode="Ý" horiz-adv-x="1212" d="M20 1313v127h56q76 0 113.5 -20.5t82.5 -94.5l244 -407l88 -162h4q43 86 88 162l244 407q45 74 83 94.5t114 20.5h55v-127h-33q-63 0 -94 -53l-387 -633v-627h-143v627l-385 633q-33 53 -97 53h-33zM547 1540l143 244h156l-178 -244h-121z" /> -<glyph unicode="Þ" horiz-adv-x="1196" d="M86 1313v127h152q66 0 95 -30t29 -95v-131h332q195 0 320 -119t125 -317q0 -197 -126 -318t-323 -121h-328v-309h-143v1268q0 45 -45 45h-88zM362 436h314q143 0 229 83t86 228.5t-85 227.5t-228 82h-316v-621z" /> -<glyph unicode="ß" horiz-adv-x="1142" d="M41 0v121h84q45 0 45 45v921q0 174 123 275.5t289 101.5q160 0 259 -90t99 -215q0 -68 -36 -128t-78 -95t-77.5 -79t-35.5 -85q0 -49 62.5 -103.5t137 -100.5t137 -126t62.5 -174q0 -139 -96 -216t-236 -77q-178 0 -309 111l-8 8l51 109q12 -12 34.5 -28.5t90.5 -45.5 t131 -29q86 0 143.5 43t57.5 129q0 68 -62.5 131.5t-138.5 107.5t-138.5 112.5t-62.5 144.5q0 57 36 110.5t78 89.5t78 86t36 103q0 72 -58.5 126t-163.5 54q-106 0 -186 -69.5t-80 -190.5v-952q0 -66 -29.5 -95.5t-95.5 -29.5h-143z" /> -<glyph unicode="à" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM225 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97zM293 1440h156l143 -244h-121z" /> -<glyph unicode="á" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM225 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97zM471 1196l143 244h156l-178 -244h-121z" /> -<glyph unicode="â" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM225 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97zM291 1196l170 244h143l170 -244h-129l-110 166h-5 l-110 -166h-129z" /> -<glyph unicode="ã" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM209 1202q0 240 190 240q59 0 103.5 -37t81.5 -74t73 -37q82 0 82 142h109q0 -240 -191 -240q-59 0 -104 37t-81 72.5t-75 35.5q-82 0 -82 -139h-106zM225 289q0 -78 60.5 -136.5t169.5 -58.5 q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97z" /> -<glyph unicode="ä" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM225 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97zM319 1264v176h121v-176h-121zM627 1264v176h121v-176h-121 z" /> -<glyph unicode="å" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM225 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97zM381 1318.5q0 63.5 44 104.5t107.5 41t107.5 -41 t44 -104.5t-44 -104t-107.5 -40.5t-107.5 40.5t-44 104zM465 1319q0 -29 18.5 -48.5t48.5 -19.5q29 0 48.5 19.5t19.5 48.5q0 31 -19.5 50.5t-48 19.5t-48 -19.5t-19.5 -50.5z" /> -<glyph unicode="æ" horiz-adv-x="1783" d="M82 281q0 70 23.5 124t58.5 89.5t90 61.5t105.5 39t120 20.5t113.5 8.5t107 1h68v22q0 160 -61.5 225.5t-202.5 65.5q-66 0 -133.5 -20.5t-67.5 -69.5v-66h-133v99q0 86 104.5 130t231.5 44q289 0 356 -213h4q127 213 389 213q201 0 312.5 -132t111.5 -317l-4 -92h-772 q4 -197 111.5 -305.5t273.5 -108.5q170 0 301 119l8 8l66 -104q-16 -16 -47 -41t-130.5 -66t-203.5 -41q-158 0 -276.5 76t-176.5 211h-4q-6 -23 -19 -51.5t-46 -72.5t-73 -77.5t-106.5 -59.5t-144.5 -26q-150 0 -252 81.5t-102 224.5zM225 289q0 -80 61.5 -137.5 t170.5 -57.5q139 0 226 120t87 265v35h-121q-82 0 -142.5 -6t-132 -26.5t-110.5 -69.5t-39 -123zM913 625h625q-6 152 -89 231.5t-200 79.5q-131 0 -222 -80.5t-114 -230.5z" /> -<glyph unicode="ç" horiz-adv-x="1081" d="M82 514q0 236 155.5 388.5t387.5 152.5q49 0 107.5 -11.5t118.5 -34t100 -68.5t40 -105v-93h-131v60q0 59 -79 93t-156 34q-170 0 -285 -116t-115 -300t118 -298t286 -114q186 0 317 131l15 15l65 -105q-6 -6 -16.5 -17t-49 -40t-82.5 -51.5t-114 -41t-146 -18.5l-16 -88 q66 -10 104.5 -48t38.5 -97q0 -84 -56 -123t-140 -39l-103 10v99q39 -12 86 -13q104 0 104.5 70t-116.5 70l-31 -2l39 170q-197 29 -321.5 173t-124.5 357z" /> -<glyph unicode="è" horiz-adv-x="1122" d="M82 514q0 246 146.5 393.5t361.5 147.5q205 0 318.5 -136.5t113.5 -338.5l-4 -70h-791q2 -188 118 -299t282 -111q170 0 299 117l10 10l68 -104q-16 -16 -48 -41t-131.5 -66t-203.5 -41q-231 0 -385 151.5t-154 387.5zM233 621h646q-6 154 -88 235.5t-203 81.5 q-133 0 -231.5 -83.5t-123.5 -233.5zM346 1440h156l143 -244h-121z" /> -<glyph unicode="é" horiz-adv-x="1122" d="M82 514q0 246 146.5 393.5t361.5 147.5q205 0 318.5 -136.5t113.5 -338.5l-4 -70h-791q2 -188 118 -299t282 -111q170 0 299 117l10 10l68 -104q-16 -16 -48 -41t-131.5 -66t-203.5 -41q-231 0 -385 151.5t-154 387.5zM233 621h646q-6 154 -88 235.5t-203 81.5 q-133 0 -231.5 -83.5t-123.5 -233.5zM524 1196l144 244h155l-178 -244h-121z" /> -<glyph unicode="ê" horiz-adv-x="1122" d="M82 514q0 246 146.5 393.5t361.5 147.5q205 0 318.5 -136.5t113.5 -338.5l-4 -70h-791q2 -188 118 -299t282 -111q170 0 299 117l10 10l68 -104q-16 -16 -48 -41t-131.5 -66t-203.5 -41q-231 0 -385 151.5t-154 387.5zM233 621h646q-6 154 -88 235.5t-203 81.5 q-133 0 -231.5 -83.5t-123.5 -233.5zM344 1196l170 244h143l170 -244h-129l-110 166h-4l-111 -166h-129z" /> -<glyph unicode="ë" horiz-adv-x="1122" d="M82 514q0 246 146.5 393.5t361.5 147.5q205 0 318.5 -136.5t113.5 -338.5l-4 -70h-791q2 -188 118 -299t282 -111q170 0 299 117l10 10l68 -104q-16 -16 -48 -41t-131.5 -66t-203.5 -41q-231 0 -385 151.5t-154 387.5zM233 621h646q-6 154 -88 235.5t-203 81.5 q-133 0 -231.5 -83.5t-123.5 -233.5zM373 1264v176h121v-176h-121zM680 1264v176h121v-176h-121z" /> -<glyph unicode="ì" horiz-adv-x="516" d="M6 1440h156l141 -244h-121zM59 909v121h146q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v739q0 45 -45 45h-86z" /> -<glyph unicode="í" horiz-adv-x="516" d="M59 909v121h146q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v739q0 45 -45 45h-86zM182 1196l144 244h155l-178 -244h-121z" /> -<glyph unicode="î" horiz-adv-x="516" d="M2 1196l172 244h141l172 -244h-129l-110 166h-4l-113 -166h-129zM59 909v121h146q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v739q0 45 -45 45h-86z" /> -<glyph unicode="ï" horiz-adv-x="516" d="M51 1264v176h123v-176h-123zM59 909v121h146q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v739q0 45 -45 45h-86zM309 1264v176h121v-176h-121z" /> -<glyph unicode="ð" horiz-adv-x="1157" d="M76 475q0 197 130 339t359 142q178 0 287 -102l8 -8h4q-70 199 -254 325l-360 -163l-27 98l277 129q-131 68 -291 104l41 119q236 -59 401 -158l269 121l26 -98l-198 -92q309 -242 309 -672q0 -106 -30 -206.5t-89 -186.5t-159.5 -138.5t-229.5 -52.5q-215 0 -344 149.5 t-129 350.5zM219 473q0 -152 90 -262.5t244 -110.5q176 0 268 132.5t92 299.5q0 133 -92 219.5t-241 86.5q-174 0 -267.5 -107.5t-93.5 -257.5z" /> -<glyph unicode="ñ" horiz-adv-x="1245" d="M47 909v121h143q125 0 125 -115v-47l-4 -73h4q37 94 142.5 177t267.5 83q186 0 266 -100.5t80 -299.5v-489q0 -45 45 -45h86v-121h-145q-66 0 -95.5 29.5t-29.5 95.5v493q0 145 -44 225.5t-179 80.5q-131 0 -235.5 -81t-139.5 -210q-16 -57 -17 -139v-494h-139v864 q0 45 -45 45h-86zM326 1202q0 240 190 240q59 0 103.5 -37t81 -74t73.5 -37q82 0 82 142h109q0 -240 -191 -240q-59 0 -104 37t-81 72.5t-75 35.5q-82 0 -82 -139h-106z" /> -<glyph unicode="ò" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q227 0 385.5 -153.5t158.5 -381.5q0 -231 -158.5 -388t-383.5 -157q-227 0 -386 157t-159 388zM225 520q0 -178 117 -299t285 -121q166 0 282.5 121t116.5 299q0 174 -116.5 291t-282.5 117q-168 0 -285 -117t-117 -291zM387 1440h156 l143 -244h-121z" /> -<glyph unicode="ó" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q227 0 385.5 -153.5t158.5 -381.5q0 -231 -158.5 -388t-383.5 -157q-227 0 -386 157t-159 388zM225 520q0 -178 117 -299t285 -121q166 0 282.5 121t116.5 299q0 174 -116.5 291t-282.5 117q-168 0 -285 -117t-117 -291zM565 1196 l144 244h155l-178 -244h-121z" /> -<glyph unicode="ô" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q227 0 385.5 -153.5t158.5 -381.5q0 -231 -158.5 -388t-383.5 -157q-227 0 -386 157t-159 388zM225 520q0 -178 117 -299t285 -121q166 0 282.5 121t116.5 299q0 174 -116.5 291t-282.5 117q-168 0 -285 -117t-117 -291zM385 1196 l170 244h143l170 -244h-129l-110 166h-4l-111 -166h-129z" /> -<glyph unicode="õ" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q227 0 385.5 -153.5t158.5 -381.5q0 -231 -158.5 -388t-383.5 -157q-227 0 -386 157t-159 388zM225 520q0 -178 117 -299t285 -121q166 0 282.5 121t116.5 299q0 174 -116.5 291t-282.5 117q-168 0 -285 -117t-117 -291zM303 1202 q0 240 191 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h108q0 -240 -190 -240q-59 0 -104.5 37t-81.5 72.5t-74 35.5q-82 0 -82 -139h-107z" /> -<glyph unicode="ö" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q227 0 385.5 -153.5t158.5 -381.5q0 -231 -158.5 -388t-383.5 -157q-227 0 -386 157t-159 388zM225 520q0 -178 117 -299t285 -121q166 0 282.5 121t116.5 299q0 174 -116.5 291t-282.5 117q-168 0 -285 -117t-117 -291zM414 1264v176 h121v-176h-121zM721 1264v176h121v-176h-121z" /> -<glyph unicode="÷" d="M102 522v119h1004v-119h-1004zM526 125v151h154v-151h-154zM526 887v151h154v-151h-154z" /> -<glyph unicode="ø" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q154 0 280 -76l80 113l84 -62l-80 -110q180 -158 180 -400q0 -231 -158.5 -388t-383.5 -157q-145 0 -265 66l-77 -109l-84 62l75 104q-194 162 -194 422zM225 520q0 -186 129 -311l475 663q-94 55 -202 56q-168 0 -285 -117t-117 -291z M438 150q88 -49 189 -50q166 0 282.5 121t116.5 299q0 172 -119 287z" /> -<glyph unicode="ù" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-4q-39 -94 -144.5 -177.5t-257.5 -83.5q-180 0 -263 98.5t-83 301.5v489q0 45 -45 45h-86z M365 1440h155l144 -244h-121z" /> -<glyph unicode="ú" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-4q-39 -94 -144.5 -177.5t-257.5 -83.5q-180 0 -263 98.5t-83 301.5v489q0 45 -45 45h-86z M543 1196l143 244h156l-178 -244h-121z" /> -<glyph unicode="û" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-4q-39 -94 -144.5 -177.5t-257.5 -83.5q-180 0 -263 98.5t-83 301.5v489q0 45 -45 45h-86z M362 1196l170 244h144l170 -244h-129l-111 166h-4l-110 -166h-130z" /> -<glyph unicode="ü" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-4q-39 -94 -144.5 -177.5t-257.5 -83.5q-180 0 -263 98.5t-83 301.5v489q0 45 -45 45h-86z M391 1264v176h121v-176h-121zM698 1264v176h121v-176h-121z" /> -<glyph unicode="ý" horiz-adv-x="1103" d="M16 -330l66 103q0 -4 18.5 -21.5t57.5 -37t78 -19.5q121 0 190 168l61 141l-362 858q-20 47 -72 47h-20v121h63q70 0 99.5 -21.5t58.5 -90.5l264 -644l37 -110h4q14 59 35 110l254 644q27 70 57.5 91t102.5 21h63v-121h-20q-53 0 -72 -47l-444 -1077 q-41 -100 -118 -157.5t-177 -57.5q-133 0 -220 94zM487 1196l144 244h155l-178 -244h-121z" /> -<glyph unicode="þ" horiz-adv-x="1196" d="M41 1319v121h145q66 0 95.5 -30t29.5 -95v-367l-4 -90h4q100 197 346 197q209 0 331 -148.5t122 -390.5t-122 -391.5t-331 -149.5q-74 0 -136 19.5t-99 48.5t-63.5 57.5t-36.5 46.5l-11 21h-4q4 -37 4 -90v-488h-139v1684q0 45 -45 45h-86zM307 514q0 -211 96.5 -312.5 t239.5 -101.5q145 0 234.5 114t89.5 302q0 186 -89.5 299t-234.5 113q-147 0 -241.5 -100.5t-94.5 -313.5z" /> -<glyph unicode="ÿ" horiz-adv-x="1103" d="M16 -330l66 103q0 -4 18.5 -21.5t57.5 -37t78 -19.5q121 0 190 168l61 141l-362 858q-20 47 -72 47h-20v121h63q70 0 99.5 -21.5t58.5 -90.5l264 -644l37 -110h4q14 59 35 110l254 644q27 70 57.5 91t102.5 21h63v-121h-20q-53 0 -72 -47l-444 -1077 q-41 -100 -118 -157.5t-177 -57.5q-133 0 -220 94zM336 1264v176h121v-176h-121zM643 1264v176h121v-176h-121z" /> -<glyph unicode="Œ" horiz-adv-x="1863" d="M78 721q0 313 197.5 526t496.5 213q51 0 153.5 -10t137.5 -10h565q66 0 95.5 -30t29.5 -95v-144h-133v97q0 45 -45 45h-477v-525h524v-126h-524v-535h536q45 0 45 45v96h133v-143q0 -125 -114 -125h-633q-35 0 -138.5 -10t-154.5 -10q-299 0 -496.5 213t-197.5 528z M227 721q0 -262 150.5 -433t394.5 -171q119 0 182 14v1176q-72 16 -182 16q-242 0 -393.5 -171t-151.5 -431z" /> -<glyph unicode="œ" horiz-adv-x="2068" d="M82 512q0 240 157.5 391.5t385.5 151.5q154 0 276.5 -74t190.5 -203h4q59 131 174.5 204t265.5 73q205 0 318.5 -136.5t113.5 -338.5l-4 -70h-790q8 -193 121.5 -301.5t277.5 -108.5q170 0 299 117l10 10l68 -104q-16 -16 -48 -41t-131.5 -66t-203.5 -41q-160 0 -283 75 t-186 206h-4q-66 -131 -189 -206t-280 -75q-227 0 -385 149.5t-158 387.5zM225 512q0 -182 116 -297t284 -115t283.5 117t115.5 303q0 182 -116.5 295t-282.5 113q-168 0 -284 -116t-116 -300zM1180 621h645q-8 154 -89 235.5t-202 81.5q-133 0 -231 -83.5t-123 -233.5z" /> -<glyph unicode="Ÿ" horiz-adv-x="1212" d="M20 1313v127h56q76 0 113.5 -20.5t82.5 -94.5l244 -407l88 -162h4q43 86 88 162l244 407q45 74 83 94.5t114 20.5h55v-127h-33q-63 0 -94 -53l-387 -633v-627h-143v627l-385 633q-33 53 -97 53h-33zM395 1608v176h121v-176h-121zM702 1608v176h121v-176h-121z" /> -<glyph unicode="ˆ" horiz-adv-x="962" d="M240 1540l170 244h143l170 -244h-129l-111 166h-4l-110 -166h-129z" /> -<glyph unicode="˜" horiz-adv-x="1007" d="M182 1546q0 240 191 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h108q0 -240 -190 -240q-59 0 -104.5 37t-81 73t-74.5 36q-82 0 -82 -140h-107z" /> -<glyph unicode="–" horiz-adv-x="1314" d="M145 522v119h1024v-119h-1024z" /> -<glyph unicode="—" horiz-adv-x="1724" d="M145 522v119h1434v-119h-1434z" /> -<glyph unicode="‘" horiz-adv-x="434" d="M104 1106l115 352h111l-80 -352h-146z" /> -<glyph unicode="’" horiz-adv-x="434" d="M104 1108l80 352h146l-115 -352h-111z" /> -<glyph unicode="‚" horiz-adv-x="434" d="M104 -184l80 352h146l-115 -352h-111z" /> -<glyph unicode="“" horiz-adv-x="675" d="M104 1106l115 352h111l-80 -352h-146zM346 1106l115 352h110l-79 -352h-146z" /> -<glyph unicode="”" horiz-adv-x="675" d="M104 1108l80 352h146l-115 -352h-111zM346 1108l80 352h145l-114 -352h-111z" /> -<glyph unicode="„" horiz-adv-x="675" d="M104 -184l80 352h146l-115 -352h-111zM346 -184l80 352h145l-114 -352h-111z" /> -<glyph unicode="•" horiz-adv-x="899" d="M158 596q0 121 86 207t206.5 86t205.5 -86t85 -207t-85 -207t-205.5 -86t-206.5 86t-86 207z" /> -<glyph unicode="…" horiz-adv-x="1673" d="M276 0v164h158v-164h-158zM758 0v164h157v-164h-157zM1239 0v164h158v-164h-158z" /> -<glyph unicode="‹" horiz-adv-x="702" d="M78 578l336 421h149l-336 -421l336 -420h-149z" /> -<glyph unicode="›" horiz-adv-x="702" d="M135 158l336 420l-336 421h152l336 -421l-336 -420h-152z" /> -<glyph unicode="€" horiz-adv-x="1208" d="M80 545v104h117q-4 37 -4 72l4 94h-117v105h135q61 242 249.5 393t438.5 151q49 0 96.5 -6t69.5 -12l23 -6l-33 -133q-74 23 -158 22q-195 0 -337 -111.5t-195 -297.5h620l-20 -105h-623q-8 -41 -8 -90l4 -76h596l-18 -104h-553q47 -195 193.5 -314.5t344.5 -119.5 q47 0 93 7t69 13l23 8l32 -131q-94 -33 -219 -33q-258 0 -447.5 159t-244.5 411h-131z" /> -<glyph unicode="™" horiz-adv-x="1998" d="M88 1251v95q0 53 20.5 73.5t75.5 20.5h566q55 0 75.5 -20.5t20.5 -73.5v-95h-107v62q0 20 -20 20h-195v-790h-116v790h-193q-20 0 -20 -20v-62h-107zM858 647h51q20 0 23 21l59 772h107l235 -514q18 -39 29 -84h4q10 45 29 84l235 514h107l59 -772q2 -20 23 -21h51v-104 h-88q-55 0 -74.5 19.5t-24.5 74.5l-41 514l3 59h-5l-229 -499h-94l-230 499h-4l2 -59l-41 -514q-4 -55 -23.5 -74.5t-74.5 -19.5h-88v104z" /> -<glyph unicode="" horiz-adv-x="1030" d="M0 1030h1030v-1030h-1030v1030z" /> -<glyph unicode="fi" horiz-adv-x="1118" d="M51 913v117h129v37q0 119 38 202t98.5 118.5t112.5 49t106 13.5l63 -4v-125q-20 4 -51 4q-37 0 -70 -9t-71.5 -32.5t-62.5 -80t-24 -136.5v-37h488q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-145q-66 0 -95.5 29.5t-29.5 95.5v743q0 45 -45 45h-429v-913 h-139v913h-129zM788 1264v176h136v-176h-136z" /> -<glyph unicode="fl" horiz-adv-x="1105" d="M51 913v117h129v37q0 96 26.5 169t64.5 109.5t90.5 60.5t91.5 29t82 5h260q66 0 95.5 -30t29.5 -95v-1149q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v1149q0 45 -45 45h-186q-229 0 -230 -252v-37h263v-117h-263v-913h-139v913h-129z" /> -<glyph unicode="ffi" horiz-adv-x="1722" d="M51 913v117h129v37q0 119 38 202t98.5 118.5t112.5 49t106 13.5l63 -4v-125q-20 4 -49 4q-37 0 -71 -9t-72.5 -34t-62.5 -80t-24 -137v-35h465v37q0 119 38 202t98.5 118.5t112.5 49t106 13.5l63 -4v-125q-20 4 -49 4q-37 0 -70.5 -9t-72.5 -34t-62.5 -80t-23.5 -137v-35 h487q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-145q-66 0 -95.5 29.5t-29.5 95.5v743q0 45 -45 45h-428v-913h-140v913h-465v-913h-139v913h-129zM1393 1264v176h135v-176h-135z" /> -<glyph unicode="ffl" horiz-adv-x="1708" d="M51 913v117h129v43q0 117 36 198t96.5 116.5t111.5 49t106 13.5l68 -4v-125q-23 4 -53 4q-37 0 -71 -9t-71.5 -34t-60.5 -79t-23 -132v-41h465v37q0 96 27 169t64.5 109.5t90 60.5t91.5 29t82 5h260q66 0 95.5 -30t29.5 -95v-1149q0 -45 45 -45h86v-121h-146 q-66 0 -95.5 29.5t-29.5 95.5v1149q0 45 -45 45h-186q-229 0 -229 -252v-37h262v-117h-262v-913h-140v913h-465v-913h-139v913h-129z" /> -</font> -</defs></svg>
\ No newline at end of file diff --git a/phonegap/www/fonts/Museo300-Regular-webfont.ttf b/phonegap/www/fonts/Museo300-Regular-webfont.ttf Binary files differdeleted file mode 100755 index 072e9a4e0..000000000 --- a/phonegap/www/fonts/Museo300-Regular-webfont.ttf +++ /dev/null diff --git a/phonegap/www/fonts/Museo300-Regular-webfont.woff b/phonegap/www/fonts/Museo300-Regular-webfont.woff Binary files differdeleted file mode 100755 index f8a9dff96..000000000 --- a/phonegap/www/fonts/Museo300-Regular-webfont.woff +++ /dev/null diff --git a/phonegap/www/fonts/MuseoSans_300-webfont.eot b/phonegap/www/fonts/MuseoSans_300-webfont.eot Binary files differdeleted file mode 100755 index 5287827df..000000000 --- a/phonegap/www/fonts/MuseoSans_300-webfont.eot +++ /dev/null diff --git a/phonegap/www/fonts/MuseoSans_300-webfont.svg b/phonegap/www/fonts/MuseoSans_300-webfont.svg deleted file mode 100755 index 9a04e92bc..000000000 --- a/phonegap/www/fonts/MuseoSans_300-webfont.svg +++ /dev/null @@ -1,227 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > -<svg xmlns="http://www.w3.org/2000/svg"> -<metadata> -This is a custom SVG webfont generated by Fontspring. -</metadata> -<defs> -<font id="MuseoSans300" horiz-adv-x="1064" > -<font-face units-per-em="2048" ascent="1536" descent="-512" /> -<missing-glyph horiz-adv-x="550" /> -<glyph unicode=" " horiz-adv-x="550" /> -<glyph unicode="	" horiz-adv-x="550" /> -<glyph unicode=" " horiz-adv-x="550" /> -<glyph unicode="!" horiz-adv-x="628" d="M238 0v158h157v-158h-157zM242 1440h143l-6 -1063h-131z" /> -<glyph unicode=""" horiz-adv-x="651" d="M141 1114v346h121v-346h-121zM389 1114v346h121v-346h-121z" /> -<glyph unicode="#" horiz-adv-x="1482" d="M96 399l21 115h289l71 401h-289l19 115h291l71 410h125l-71 -410h354l72 410h125l-72 -410h287l-21 -115h-287l-69 -401h284l-18 -115h-287l-69 -399h-125l69 399h-354l-70 -399h-125l70 399h-291zM532 514h353l71 401h-354z" /> -<glyph unicode="$" horiz-adv-x="1140" d="M125 160l86 108l17 -17q11 -11 49 -38t79 -47.5t104.5 -37.5t127.5 -17q123 0 205 68.5t82 180.5q0 96 -75 165t-181.5 115t-213 95t-181 135t-74.5 207q0 143 104 252t272 129v195h115v-191q201 -10 332 -129l10 -8l-70 -119q-14 14 -40.5 35t-109.5 54.5t-165 33.5 q-135 0 -219 -73.5t-84 -174.5q0 -76 53 -135t134 -94t174.5 -79t174 -89t134 -128t53.5 -191q0 -152 -102.5 -260.5t-274.5 -124.5v-191h-115v191q-115 8 -215 53t-143 86z" /> -<glyph unicode="%" horiz-adv-x="1495" d="M115 1180q0 117 84 200.5t202.5 83.5t203.5 -84t85 -200q0 -119 -84 -202t-205 -83q-119 0 -202.5 83t-83.5 202zM127 0l1098 1440h145l-1096 -1440h-147zM236 1180q0 -72 48 -121t117.5 -49t118.5 49t49 121q0 70 -49 120t-118.5 50t-117.5 -50t-48 -120zM807 258 q0 119 84 203t202.5 84t203.5 -84t85 -203q0 -117 -85 -200t-203.5 -83t-202.5 83t-84 200zM930 260q0 -72 47 -121t116.5 -49t119 49t49.5 121q0 70 -49.5 120t-119 50t-116.5 -50t-47 -120z" /> -<glyph unicode="&" horiz-adv-x="1380" d="M123 397q0 129 69.5 235.5t192.5 143.5v4q-8 2 -21.5 8.5t-48 31t-61.5 57t-48.5 92t-21.5 131.5q0 166 118 265t314 99l164 -20l-41 -119q-68 14 -118 14q-125 0 -207 -66.5t-82 -180.5q0 -43 11 -82t41 -83t96.5 -70t160.5 -26h303v203h141v-203h195v-126h-195v-211 q0 -252 -128 -385.5t-349 -133.5q-215 0 -350 120t-135 302zM268 406q0 -127 92.5 -212t247.5 -85q336 0 336 389v207h-303q-182 0 -277.5 -80t-95.5 -219z" /> -<glyph unicode="'" horiz-adv-x="403" d="M141 1114v346h121v-346h-121z" /> -<glyph unicode="(" horiz-adv-x="593" d="M164 690q0 428 231 805h129q-231 -391 -231 -805q0 -469 231 -885h-129q-231 398 -231 885z" /> -<glyph unicode=")" horiz-adv-x="591" d="M70 -195q231 412 231 885q0 414 -231 805h129q231 -377 231 -805q0 -487 -231 -885h-129z" /> -<glyph unicode="*" horiz-adv-x="964" d="M88 1104l41 129l295 -109l-12 316h139l-14 -316l299 107l41 -125l-304 -88v-4l193 -246l-107 -80l-176 260h-4l-174 -258l-108 78l192 246v4z" /> -<glyph unicode="+" horiz-adv-x="1409" d="M170 522v119h473v522h125v-522h471v-119h-471v-522h-125v522h-473z" /> -<glyph unicode="," horiz-adv-x="499" d="M74 -199l116 367h154l-151 -367h-119z" /> -<glyph unicode="-" horiz-adv-x="1007" d="M213 518v127h582v-127h-582z" /> -<glyph unicode="." horiz-adv-x="505" d="M172 0v164h162v-164h-162z" /> -<glyph unicode="/" horiz-adv-x="802" d="M84 -86l520 1606h129l-518 -1606h-131z" /> -<glyph unicode="0" horiz-adv-x="1280" d="M143 721q0 219 44 379t159 262t295 102q496 0 496 -743q0 -745 -496 -746q-498 1 -498 746zM291 721q0 -612 350 -612q348 0 348 612q0 610 -348 610q-350 0 -350 -610z" /> -<glyph unicode="1" horiz-adv-x="954" d="M115 0v127h323v1057l2 80h-4q-14 -31 -71 -86l-154 -154l-90 92l325 324h132v-1313h317v-127h-780z" /> -<glyph unicode="2" horiz-adv-x="1157" d="M123 92q0 102 41 191.5t105.5 154t143.5 122.5t157.5 111.5t143 108t105.5 125t41 148.5q0 121 -83 198.5t-216 77.5q-59 0 -113.5 -20.5t-91.5 -49t-64.5 -57.5t-39.5 -49l-12 -20l-107 71l16.5 27.5t49.5 62.5t85 80t122.5 62.5t162.5 27.5q201 0 320 -114.5 t119 -288.5q0 -98 -40 -183t-104.5 -147.5t-142.5 -119t-155 -108.5t-141.5 -106.5t-105 -123t-40.5 -146.5h751v-127h-899q-8 43 -8 92z" /> -<glyph unicode="3" horiz-adv-x="1150" d="M92 172l86 109q16 -18 47 -47t127.5 -76t194.5 -47q133 0 231.5 88t98.5 223q0 145 -105.5 226t-257.5 81h-98l-35 84l360 422l76 80v4q-41 -6 -117 -6h-540v127h841v-94l-430 -496q76 -4 149 -27.5t143.5 -70.5t114.5 -131t44 -195q0 -186 -135 -318.5t-338 -132.5 q-80 0 -156 20.5t-128 49.5t-93 57.5t-61 49.5z" /> -<glyph unicode="4" horiz-adv-x="1222" d="M70 399v93l708 948h154v-916h205v-125h-205v-399h-141v399h-721zM242 524h549v602l6 136h-4q-33 -57 -72 -109l-479 -625v-4z" /> -<glyph unicode="5" horiz-adv-x="1142" d="M111 180l90 99q4 -6 12 -17.5t39 -41.5t65.5 -51.5t91 -39.5t117.5 -18q152 0 255.5 96t103.5 241.5t-104.5 241.5t-260.5 96q-150 0 -262 -77l-90 32l78 699h696v-127h-573l-41 -369l-15 -82h4q90 55 220 56q215 0 355 -136.5t140 -332.5q0 -199 -144.5 -336.5 t-355.5 -137.5q-238 0 -393 168z" /> -<glyph unicode="6" horiz-adv-x="1218" d="M133 651q0 141 38 280.5t110.5 260.5t198.5 196.5t286 75.5q72 0 137.5 -15t95.5 -30l31 -14l-53 -125q-90 51 -209 51q-143 0 -250.5 -88t-162 -214t-66.5 -275h4q51 76 151.5 122t212.5 46q197 0 323 -130t126 -335q0 -219 -129 -350.5t-324 -131.5 q-233 0 -376.5 190.5t-143.5 485.5zM287 549q0 -156 106.5 -298t257.5 -142q143 0 226.5 97t83.5 249q0 154 -89.5 247t-236.5 93q-139 0 -243.5 -78t-104.5 -168z" /> -<glyph unicode="7" d="M78 1313v127h936v-99l-668 -1341h-147l581 1180q16 35 37 67l31 49l12 17v4q-37 -4 -108 -4h-674z" /> -<glyph unicode="8" horiz-adv-x="1232" d="M131 414q0 80 31 153.5t77 123.5t75.5 76t52.5 40q-178 117 -179 293q0 152 114 258t321 106q201 0 320.5 -102t119.5 -272q0 -92 -45 -189.5t-76 -136.5t-55 -64q209 -119 209 -309q0 -172 -136.5 -294t-341.5 -122q-203 0 -345 120t-142 319zM276 420 q0 -139 102.5 -226.5t239.5 -87.5q133 0 232.5 82t99.5 205q0 53 -25.5 96t-81 80t-101.5 60.5t-132 59.5t-127 56q-25 -14 -52.5 -37.5t-66 -64.5t-63.5 -100.5t-25 -122.5zM332 1098q0 -45 20.5 -85t45 -65.5t78.5 -56.5t86 -45.5t105.5 -45t102.5 -42.5q25 23 52.5 57.5 t62.5 112.5t35 155q0 115 -83 182.5t-214 67.5q-133 0 -212 -67.5t-79 -167.5z" /> -<glyph unicode="9" horiz-adv-x="1216" d="M113 983q0 219 128 350t322 131q233 0 376.5 -190.5t143.5 -485.5q0 -141 -37.5 -279t-110.5 -260t-199 -198t-285 -76q-70 0 -136.5 14.5t-97.5 30.5l-31 15l54 125q90 -51 209 -51q211 0 334.5 171t146.5 406h-4q-53 -76 -153.5 -122t-213.5 -46q-197 0 -321.5 130 t-124.5 335zM256 985q0 -154 89 -247t237 -93q141 0 244.5 78t103.5 168q0 156 -106.5 298t-258.5 142q-143 0 -226 -97t-83 -249z" /> -<glyph unicode=":" horiz-adv-x="600" d="M219 0v164h162v-164h-162zM219 866v164h162v-164h-162z" /> -<glyph unicode=";" horiz-adv-x="600" d="M127 -199l100 367h154l-135 -367h-119zM227 866v164h162v-164h-162z" /> -<glyph unicode="<" horiz-adv-x="1161" d="M102 530v103l926 414v-138l-752 -325v-4l752 -326v-137z" /> -<glyph unicode="=" horiz-adv-x="1400" d="M223 344v119h955v-119h-955zM223 700v119h955v-119h-955z" /> -<glyph unicode=">" horiz-adv-x="1161" d="M133 117v137l752 326v4l-752 325v138l926 -414v-103z" /> -<glyph unicode="?" horiz-adv-x="985" d="M82 1350q14 12 41 31.5t113 52t176 32.5q176 0 292.5 -102t116.5 -260q0 -94 -38 -170t-91 -126t-107.5 -97t-92 -109.5t-37.5 -136.5v-88h-140v92q0 90 37 164t89.5 124t105.5 97t90 109.5t37 134.5q0 100 -76 167.5t-192 67.5q-135 -2 -248 -88zM307 0v158h158v-158 h-158z" /> -<glyph unicode="@" horiz-adv-x="1648" d="M133 495.5q0 313.5 214 532.5t515 219q258 0 380 -110.5t122 -276.5v-645h145v-115h-551q-174 0 -291.5 116t-117.5 277.5t116.5 277.5t292.5 116h267q-4 102 -92.5 170.5t-260.5 68.5q-250 0 -423 -185t-173 -445q0 -264 173.5 -445.5t433.5 -181.5v-123 q-317 0 -533.5 218t-216.5 531.5zM692 495.5q0 -116.5 81 -198.5t198 -82h254v563h-250q-121 0 -202 -83t-81 -199.5z" /> -<glyph unicode="A" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186z" /> -<glyph unicode="B" horiz-adv-x="1282" d="M209 0v1440h491q174 0 282 -98.5t108 -264.5q0 -221 -183 -313v-4q111 -31 176.5 -128t65.5 -229q0 -186 -123 -294.5t-309 -108.5h-508zM350 127h369q131 0 206.5 76t75.5 205t-78.5 206.5t-205.5 77.5h-367v-565zM350 815h350q109 0 176.5 69.5t67.5 182.5t-65.5 179.5 t-180.5 66.5h-348v-498z" /> -<glyph unicode="C" horiz-adv-x="1490" d="M113 729q0 313 206.5 524t516.5 211q96 0 185 -19.5t146.5 -46t101.5 -54t64 -46.5l21 -20l-76 -104q-6 6 -19.5 17t-57.5 38.5t-91 48t-121 38t-149 17.5q-252 0 -416 -173t-164 -429q0 -262 165 -443.5t419 -181.5q82 0 159.5 19.5t131 48.5t95.5 57.5t60 47.5l21 20 l82 -100l-24 -24q-15 -15 -68.5 -54t-113 -67.5t-153.5 -53.5t-192 -25q-315 0 -522 217.5t-207 536.5z" /> -<glyph unicode="D" horiz-adv-x="1515" d="M209 0v1440h465q328 0 525.5 -191.5t197.5 -527.5q0 -340 -196.5 -530.5t-526.5 -190.5h-465zM350 127h309q270 0 430 154.5t160 439.5q0 283 -159.5 437.5t-430.5 154.5h-309v-1186z" /> -<glyph unicode="E" horiz-adv-x="1169" d="M209 0v1440h811v-127h-670v-525h547v-126h-547v-535h707v-127h-848z" /> -<glyph unicode="F" horiz-adv-x="1052" d="M209 0v1440h758v-127h-617v-541h529v-127h-529v-645h-141z" /> -<glyph unicode="G" horiz-adv-x="1552" d="M113 721q0 313 207.5 528t517.5 215q147 0 275 -42t181 -83l56 -43l-76 -106q-18 16 -54 39.5t-147.5 63.5t-228.5 40q-258 0 -421 -175t-163 -435q0 -266 163 -441.5t408 -175.5q125 0 238 53.5t164 106.5l51 51v244h-246v127h381v-688h-131v109l2 61h-4 q-6 -8 -19.5 -21.5t-58.5 -46t-95 -58.5t-131 -47.5t-165 -21.5q-297 0 -500.5 213.5t-203.5 532.5z" /> -<glyph unicode="H" horiz-adv-x="1536" d="M209 0v1440h141v-656h836v656h141v-1440h-141v657h-836v-657h-141z" /> -<glyph unicode="I" horiz-adv-x="559" d="M209 0v1440h141v-1440h-141z" /> -<glyph unicode="J" horiz-adv-x="1073" d="M72 403v58h141v-53q0 -154 77 -228t187 -74q109 0 185.5 72t76.5 225v910h-352v127h494v-1037q0 -217 -119 -322.5t-287 -105.5q-166 0 -284.5 106.5t-118.5 321.5z" /> -<glyph unicode="K" horiz-adv-x="1230" d="M209 0v1440h141v-625h244l387 625h162l-430 -680v-4l458 -756h-165l-412 688h-244v-688h-141z" /> -<glyph unicode="L" horiz-adv-x="1060" d="M209 0v1440h141v-1313h668v-127h-809z" /> -<glyph unicode="M" horiz-adv-x="1748" d="M164 0l115 1440h147l377 -846l69 -176h5q39 102 71 176l377 846h145l115 -1440h-141l-80 1008l-4 200h-4q-43 -127 -76 -200l-338 -740h-133l-338 740l-78 204h-4q2 -127 -4 -204l-80 -1008h-141z" /> -<glyph unicode="N" horiz-adv-x="1542" d="M209 0v1440h137l735 -1037l119 -194h4q-12 119 -12 194v1037h141v-1440h-137l-735 1036l-119 195h-4q12 -119 12 -195v-1036h-141z" /> -<glyph unicode="O" horiz-adv-x="1687" d="M111 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5t-519 219.5t-214 534.5zM258 729q0 -262 170 -442.5t416 -180.5q244 0 415 180.5t171 442.5q0 256 -171.5 430t-414.5 174q-246 0 -416 -174t-170 -430z" /> -<glyph unicode="P" horiz-adv-x="1224" d="M209 0v1440h498q197 0 320.5 -119t123.5 -315q0 -199 -124 -320t-320 -121h-357v-565h-141zM350 692h338q145 0 231.5 84t86.5 230q0 143 -85 225t-231 82h-340v-621z" /> -<glyph unicode="Q" horiz-adv-x="1710" d="M111 729q0 309 212 522t517 213q311 0 524 -213t213 -522q0 -285 -180 -496l178 -178l-86 -88l-176 178q-199 -170 -473 -170q-305 0 -517 219.5t-212 534.5zM258 729q0 -262 168 -442.5t414 -180.5q215 0 372 136l-176 180l86 88l174 -178q133 170 134 397 q0 258 -170 431t-420 173q-246 0 -414 -173t-168 -431z" /> -<glyph unicode="R" horiz-adv-x="1286" d="M209 0v1440h426q180 0 270 -39q102 -45 159.5 -142.5t57.5 -228.5q0 -145 -74.5 -249.5t-197.5 -139.5v-4q14 -18 37 -57l313 -580h-162l-325 606h-363v-606h-141zM350 733h342q131 0 208 79t77 214q0 182 -131 252q-66 35 -205 35h-291v-580z" /> -<glyph unicode="S" horiz-adv-x="1101" d="M102 160l84 108l18 -17q11 -11 49 -38t79 -47.5t104.5 -37.5t126.5 -17q123 0 205 68.5t82 180.5q0 98 -74 168t-179 114t-211.5 92t-180.5 134t-74 209q0 160 127 273.5t322 113.5q221 0 370 -125l15 -14l-70 -119q-14 14 -41 35t-108.5 54.5t-165.5 33.5 q-133 0 -218.5 -73.5t-85.5 -174.5q0 -94 74 -158.5t179.5 -107.5t212 -91t180 -138t73.5 -221q0 -166 -118.5 -278t-317.5 -112q-131 0 -244.5 46.5t-162.5 93.5z" /> -<glyph unicode="T" horiz-adv-x="1204" d="M14 1313v127h1176v-127h-516v-1313h-142v1313h-518z" /> -<glyph unicode="U" horiz-adv-x="1482" d="M190 502v938h144v-936q0 -184 110.5 -291t296.5 -107q188 0 299 108t111 294v932h141v-938q0 -238 -151.5 -382.5t-397.5 -144.5q-248 0 -400.5 144.5t-152.5 382.5z" /> -<glyph unicode="V" horiz-adv-x="1265" d="M25 1440h151l399 -1094l56 -186h4q29 113 55 186l400 1094h151l-534 -1440h-148z" /> -<glyph unicode="W" horiz-adv-x="1898" d="M80 1440h147l279 -1118l33 -154h4l4 20q4 23 12 62t16 72l304 1118h135l303 -1118q8 -33 16 -72t13 -62l4 -20h4q14 80 32 154l289 1118h148l-383 -1440h-170l-275 1014l-47 215h-4q-23 -123 -47 -215l-274 -1014h-170z" /> -<glyph unicode="X" horiz-adv-x="1212" d="M53 0l459 752l-418 688h166l252 -426l94 -166h4q41 92 86 166l254 426h168l-422 -688l461 -752h-164l-299 498l-90 159h-4q-43 -86 -88 -161l-295 -496h-164z" /> -<glyph unicode="Y" horiz-adv-x="1175" d="M31 1440h162l305 -522q43 -74 88 -173h4q43 96 88 173l305 522h160l-484 -822v-618h-143v618z" /> -<glyph unicode="Z" horiz-adv-x="1218" d="M88 0v100l743 1082q53 76 101 131v4q-35 -4 -105 -4h-700v127h981v-101l-743 -1081q-53 -78 -103 -131v-4q37 4 107 4h745v-127h-1026z" /> -<glyph unicode="[" horiz-adv-x="577" d="M219 -195v1690h277v-115h-148v-1460h148v-115h-277z" /> -<glyph unicode="\" horiz-adv-x="804" d="M70 1520h131l518 -1606h-129z" /> -<glyph unicode="]" horiz-adv-x="577" d="M82 -80h147v1460h-147v115h276v-1690h-276v115z" /> -<glyph unicode="^" horiz-adv-x="1241" d="M150 512l405 928h96l406 -928h-133l-320 758l-319 -758h-135z" /> -<glyph unicode="_" horiz-adv-x="1196" d="M70 0h1056v-119h-1056v119z" /> -<glyph unicode="`" horiz-adv-x="1032" d="M365 1784h161l142 -244h-127z" /> -<glyph unicode="a" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131z" /> -<glyph unicode="b" horiz-adv-x="1206" d="M168 0v1440h139v-500l-4 -84h4q4 8 11.5 21.5t36 47t65.5 60.5t100.5 48.5t136.5 21.5q205 0 327 -149.5t122 -391.5t-130 -390.5t-335 -148.5q-70 0 -129 20.5t-96 50.5t-63.5 59.5t-37.5 50.5l-12 20h-4q4 -35 4 -84v-92h-135zM303 512q0 -168 86 -291t242 -123 q141 0 236.5 113t95.5 303q0 188 -90.5 301t-235.5 113q-141 0 -237.5 -104.5t-96.5 -311.5z" /> -<glyph unicode="c" horiz-adv-x="1124" d="M96 514q0 236 156 388.5t385 152.5q221 0 360 -131l17 -17l-72 -104q-12 14 -36.5 34.5t-103.5 55.5t-161 35q-172 0 -286.5 -116t-114.5 -298q0 -180 116.5 -297t288.5 -117q59 0 114.5 15.5t92.5 36t66.5 42t44.5 35.5l12 17l63 -109q-6 -6 -16 -17t-49 -39t-82 -49.5 t-111.5 -39t-142.5 -17.5q-231 0 -386 150.5t-155 388.5z" /> -<glyph unicode="d" horiz-adv-x="1206" d="M100 516q0 242 129 390.5t334 148.5q207 0 316 -158l20 -37h4q-4 35 -4 78v502h139v-1440h-135v109l4 73h-4l-11 -22q-7 -14 -36 -50t-65.5 -63t-101 -49.5t-140.5 -22.5q-205 0 -327 149.5t-122 391.5zM244 516.5q0 -188.5 90 -302.5t235 -114q141 0 237.5 104.5 t96.5 311.5q0 170 -86 292t-242 122q-141 0 -236 -112.5t-95 -301z" /> -<glyph unicode="e" horiz-adv-x="1132" d="M96 514q0 246 146.5 393.5t361.5 147.5q205 0 317.5 -136.5t112.5 -338.5l-4 -72h-790q4 -190 117.5 -299t281.5 -109q172 0 305 117l8 8l64 -106q-16 -16 -48 -40t-131.5 -64t-201.5 -40q-231 0 -385 151.5t-154 387.5zM246 623h647q-6 154 -88 234.5t-205 80.5 q-135 0 -232 -82.5t-122 -232.5z" /> -<glyph unicode="f" horiz-adv-x="655" d="M86 901v117h129v49q0 119 38 202t99.5 118.5t112.5 49t106 13.5l64 -4v-125q-20 4 -49 4q-37 0 -71 -9t-74 -32.5t-63.5 -80t-23.5 -136.5v-49h264v-117h-264v-901h-139v901h-129z" /> -<glyph unicode="g" horiz-adv-x="1191" d="M100 534.5q0 233.5 121 377t326 143.5q76 0 139.5 -17.5t99 -43t60 -51t33.5 -42.5l8 -18h4q-2 12 -2 35v112h135v-1005q0 -229 -142.5 -342t-351.5 -113q-178 0 -337 82l53 115q127 -72 278 -72q162 0 261.5 80t99.5 243v95l4 73h-4q-96 -180 -326 -180 q-207 0 -333 147.5t-126 381zM244 536.5q0 -184.5 92 -295t246 -110.5q135 0 220 95.5t85 308.5q0 393 -326 393q-150 0 -233.5 -103.5t-83.5 -288z" /> -<glyph unicode="h" horiz-adv-x="1214" d="M168 0v1440h139v-557l-4 -84h4q37 92 144.5 174t265.5 82q184 0 264 -100.5t80 -299.5v-655h-139v618q0 145 -44 225.5t-180 80.5q-131 0 -235.5 -82t-138.5 -211q-16 -55 -17 -137v-494h-139z" /> -<glyph unicode="i" horiz-adv-x="475" d="M164 1266v174h145v-174h-145zM168 0v1030h139v-1030h-139z" /> -<glyph unicode="j" horiz-adv-x="475" d="M-113 -295q18 -2 45 -2q37 0 72 9t75 34t64.5 82t24.5 139v1063h139v-1069q0 -121 -38 -203t-100.5 -117.5t-113.5 -49t-106 -13.5l-62 6v121zM166 1266v174h143v-174h-143z" /> -<glyph unicode="k" horiz-adv-x="1028" d="M168 0v1440h139v-803h164l309 393h168l-358 -448v-4l393 -578h-166l-344 516h-166v-516h-139z" /> -<glyph unicode="l" horiz-adv-x="505" d="M158 244v1196h139v-1166q0 -156 115 -155l34 2v-125q-25 -4 -51 -4q-237 0 -237 252z" /> -<glyph unicode="m" horiz-adv-x="1875" d="M168 1030h137v-153l-4 -82h4q37 106 145.5 183t227.5 77q272 0 319 -258h4q43 109 147.5 183.5t231.5 74.5q182 0 262 -100.5t80 -299.5v-655h-139v621q0 145 -47 226t-176 81q-115 0 -205 -86t-121 -205q-18 -57 -18 -150v-487h-139v621q0 68 -7.5 114.5t-28 95 t-66.5 73t-116 24.5q-121 0 -212 -88t-125 -215q-14 -59 -15 -138v-487h-139v1030z" /> -<glyph unicode="n" horiz-adv-x="1214" d="M168 1030h137v-153l-4 -82h4q37 94 143.5 177t268.5 83q184 0 264 -100.5t80 -299.5v-655h-139v618q0 145 -44 225.5t-180 80.5q-131 0 -235.5 -81t-138.5 -210q-16 -57 -17 -139v-494h-139v1030z" /> -<glyph unicode="o" horiz-adv-x="1273" d="M92 520q0 227 159 381t386 154t386 -153.5t159 -381.5q0 -231 -159 -388t-386 -157t-386 157t-159 388zM236 520q0 -178 116.5 -299t284.5 -121t284.5 121t116.5 299q0 174 -116.5 291t-284.5 117t-284.5 -117t-116.5 -291z" /> -<glyph unicode="p" horiz-adv-x="1206" d="M168 -410v1440h133v-100l-4 -80h4l11 22q7 14 36 49t66 62t102.5 49.5t140.5 22.5q205 0 327 -149.5t122 -391.5t-129 -390.5t-332 -148.5q-70 0 -130 20.5t-96 49.5t-62.5 57.5t-37.5 49.5l-12 20h-4q4 -37 4 -90v-492h-139zM303 512q0 -166 88 -290t240 -124 q141 0 236.5 113t95.5 303q0 188 -90.5 301t-235.5 113q-141 0 -237.5 -104.5t-96.5 -311.5z" /> -<glyph unicode="q" horiz-adv-x="1206" d="M100 516q0 242 129 390.5t334 148.5q207 0 318 -162l20 -37h4q-2 33 -2 78v96h135v-1440h-139v496l4 90h-4q-4 -8 -11 -21.5t-36 -48t-65.5 -61.5t-100 -48.5t-137.5 -21.5q-205 0 -327 149.5t-122 391.5zM244 516.5q0 -188.5 90 -302.5t235 -114q141 0 237.5 104.5 t96.5 311.5q0 170 -86 292t-242 122q-141 0 -236 -112.5t-95 -301z" /> -<glyph unicode="r" horiz-adv-x="729" d="M168 0v1030h137v-182l-4 -82h4q39 123 124 198.5t202 75.5l55 -6v-137q-25 4 -51 4q-106 0 -185 -73.5t-114 -192.5q-29 -92 -29 -201v-434h-139z" /> -<glyph unicode="s" horiz-adv-x="907" d="M84 125l76 100q12 -14 36.5 -34.5t104.5 -55.5t166 -35q88 0 147.5 43t59.5 121q0 61 -57.5 105.5t-138.5 75t-163 66.5t-139 101.5t-57 157.5q0 133 102.5 209t249.5 76q61 0 115.5 -11.5t90.5 -28t62.5 -33.5t38.5 -28l10 -12l-63 -106q-10 10 -29.5 25.5t-86 42 t-142.5 26.5q-86 0 -145.5 -40t-59.5 -120q0 -61 57.5 -105t139.5 -74t162.5 -66t138 -101.5t57.5 -159.5q0 -127 -98 -208t-254 -81q-70 0 -135.5 15.5t-107.5 37t-74.5 44t-49.5 39.5z" /> -<glyph unicode="t" horiz-adv-x="686" d="M72 901v117h137v297h137v-297h258v-117h-258v-512q0 -70 17.5 -121t42 -79.5t57.5 -45t59.5 -21.5t55.5 -5l47 4v-125q-23 -4 -60 -4q-43 0 -84 6t-93 29.5t-90 62.5t-64.5 112.5t-26.5 172.5v526h-135z" /> -<glyph unicode="u" horiz-adv-x="1204" d="M154 375v655h139v-618q0 -145 44 -225.5t179 -80.5q170 0 275.5 127t105.5 304v493h139v-1030h-135v154l4 82h-4q-39 -94 -144.5 -177.5t-258.5 -83.5q-180 0 -262 98.5t-82 301.5z" /> -<glyph unicode="v" horiz-adv-x="993" d="M27 1030h147l287 -756l35 -122h4q16 70 37 122l284 756h146l-394 -1030h-151z" /> -<glyph unicode="w" horiz-adv-x="1640" d="M35 1030h147l250 -768l31 -110h4q14 61 31 110l254 764h137l254 -764l31 -110h4q14 59 30 110l250 768h148l-349 -1030h-151l-252 733l-33 111h-4q-14 -59 -31 -111l-251 -733h-152z" /> -<glyph unicode="x" horiz-adv-x="1005" d="M51 0l363 537l-332 493h164l221 -346l35 -59h2q18 33 35 59l221 346h164l-332 -493l362 -537h-163l-250 387l-35 57h-4h-2q-16 -31 -35 -57l-250 -387h-164z" /> -<glyph unicode="y" horiz-adv-x="1021" d="M14 -369l54 111q57 -47 122 -47q121 0 195 168l64 145l-431 1022h154l303 -751l37 -109h4q14 57 35 109l297 751h151l-507 -1245q-41 -100 -119 -157.5t-178 -57.5q-105 0 -181 61z" /> -<glyph unicode="z" horiz-adv-x="1042" d="M86 0v90l576 723l81 94v4q-35 -4 -102 -4h-530v123h821v-92l-576 -721l-84 -94v-4q37 4 105 4h575v-123h-866z" /> -<glyph unicode="{" horiz-adv-x="688" d="M109 598v127q6 0 18 3t42 18.5t53.5 38t42 69.5t18.5 107v167q0 96 24.5 168t58 109t80 58.5t78 26.5t64.5 5h30v-115h-18q-27 0 -52.5 -7t-60 -30.5t-55 -79t-20.5 -139.5v-200q0 -55 -16.5 -103.5t-41 -76t-49 -47t-41.5 -25.5l-16 -8v-5q6 -2 17 -7t40 -24.5t50.5 -46 t39 -74.5t17.5 -108v-225q0 -82 21.5 -138t55 -79t59 -31t52.5 -8h18v-115q-12 -2 -30 -2q-33 0 -64.5 5.5t-78 28t-80 59t-58 108.5t-24.5 168v195q0 59 -18.5 105t-43 69.5t-50.5 38t-44 16.5z" /> -<glyph unicode="|" horiz-adv-x="563" d="M217 -322v1936h129v-1936h-129z" /> -<glyph unicode="}" horiz-adv-x="688" d="M70 -82h20q25 0 50.5 8t59 31t55 79t21.5 138v225q0 59 16.5 107.5t41 75t49.5 46t41 25.5l16 6v5q-6 2 -17 7t-40 26.5t-50.5 48t-39 74.5t-17.5 104v200q0 84 -20 139.5t-55 79t-59.5 30.5t-51.5 7h-20v115h32q31 0 63 -5t78 -27.5t79.5 -58.5t58.5 -107.5t25 -168.5 v-167q0 -174 137 -226l37 -10v-127q-6 0 -18.5 -3t-42.5 -18.5t-53.5 -38t-41.5 -68.5t-18 -105v-195q0 -96 -25 -168t-58.5 -108.5t-79.5 -59t-78 -28t-63 -5.5l-32 2v115z" /> -<glyph unicode="~" horiz-adv-x="1232" d="M152 428q0 162 69.5 239.5t190.5 77.5q61 0 110 -21.5t81 -53t61.5 -63.5t68.5 -53.5t86 -21.5q82 0 114 63.5t32 141.5h120q0 -162 -69.5 -239.5t-190.5 -77.5q-76 0 -134 33.5t-89 72.5t-79 73t-105 34q-82 0 -114 -63.5t-32 -141.5h-120z" /> -<glyph unicode="¡" horiz-adv-x="561" d="M201 872v158h157v-158h-157zM209 -410l6 1063h131l6 -1063h-143z" /> -<glyph unicode="¢" horiz-adv-x="1171" d="M123 720.5q0 231.5 113.5 390.5t316.5 181v172h115v-172q262 -31 383 -303l-131 -49q-102 221 -304 221q-170 0 -259 -123t-89 -317q0 -197 88 -318.5t260 -121.5q203 0 304 221l131 -51q-57 -127 -154.5 -209t-228.5 -95v-174h-115v174q-203 23 -316.5 182.5t-113.5 391 z" /> -<glyph unicode="£" horiz-adv-x="1206" d="M121 0v127h129v541h-90v112h90v305q0 162 119.5 270.5t304.5 108.5q86 0 166 -29.5t116 -58.5l37 -28l-86 -103q-100 86 -233 86q-131 0 -206 -72.5t-75 -181.5v-297h393v-112h-393v-541h694v-127h-966z" /> -<glyph unicode="¥" horiz-adv-x="1230" d="M70 1440h161l293 -510q47 -82 88 -185h4q41 102 89 185l294 510h162l-360 -619h215v-104h-273l-55 -99v-79h328v-107h-328v-432h-143v432h-334v107h334v79l-58 99h-276v104h217z" /> -<glyph unicode="§" horiz-adv-x="843" d="M113 -41l71 98q72 -61 168.5 -61t159.5 60.5t63 162.5q0 35 -8 66l-133 878h123l139 -889q8 -53 9 -71q0 -143 -98.5 -236.5t-256.5 -93.5q-137 2 -237 86zM139 1135q0 143 97.5 236t255.5 93q137 -2 237 -86l-72 -96q-70 59 -166 59t-160.5 -58t-64.5 -161q0 -33 8 -63 l136 -885h-123l-140 889q-8 33 -8 72z" /> -<glyph unicode="¨" horiz-adv-x="1032" d="M299 1608v176h125v-176h-125zM608 1608v176h127v-176h-127z" /> -<glyph unicode="©" horiz-adv-x="1701" d="M123 721q0 309 212 526t511 217q305 0 519 -217t214 -526q0 -313 -213 -529.5t-520 -216.5q-301 0 -512 217.5t-211 528.5zM244 721q0 -268 174 -451.5t428 -183.5q260 0 437 183.5t177 451.5q0 266 -177 449.5t-437 183.5q-254 0 -428 -183.5t-174 -449.5zM444 717 q0 172 115 297t307 125q63 0 120.5 -19.5t94.5 -47.5t66 -56.5t41 -48.5l12 -19l-94 -63l-10 15q-6 9 -29 33.5t-48.5 43t-65.5 34t-83 15.5q-141 0 -223 -90t-82 -217t81 -217t224 -90q135 0 226 127l10 14l94 -64q-4 -8 -13 -20t-40 -45t-67 -58.5t-93 -46t-121 -20.5 q-195 0 -308.5 124t-113.5 294z" /> -<glyph unicode="ª" horiz-adv-x="874" d="M166 541v96h541v-96h-541zM170 977q0 227 391 227h27v8q0 152 -146 152q-41 0 -84 -14.5t-65 -30.5l-23 -14l-53 79q90 76 236 76q121 0 183 -64.5t62 -187.5v-413h-106v100h-4q-6 -12 -19.5 -30.5t-63.5 -50.5t-110 -32q-90 0 -157.5 51.5t-67.5 143.5zM285 987 q0 -45 33.5 -75.5t93.5 -30.5q78 0 126 66.5t48 148.5v18h-25q-276 0 -276 -127z" /> -<glyph unicode="«" horiz-adv-x="1071" d="M102 578l336 421h150l-336 -421l336 -420h-150zM469 578l336 421h151l-335 -421l335 -420h-151z" /> -<glyph unicode="¬" horiz-adv-x="1275" d="M150 700v119h954v-495h-125v376h-829z" /> -<glyph unicode="­" horiz-adv-x="884" d="M152 518v127h581v-127h-581z" /> -<glyph unicode="®" horiz-adv-x="1701" d="M123 721q0 309 212 526t511 217q305 0 519 -217t214 -526q0 -313 -213 -529.5t-520 -216.5q-301 0 -512 217.5t-211 528.5zM244 721q0 -268 174 -451.5t428 -183.5q260 0 437 183.5t177 451.5q0 266 -177 449.5t-437 183.5q-254 0 -428 -183.5t-174 -449.5zM604 1120h285 q106 0 172.5 -65.5t66.5 -171.5q0 -84 -44 -140.5t-105 -70.5v-4q8 -10 27 -45l153 -301h-127l-160 323h-153v-323h-115v798zM719 735h149q66 0 104 39t38 109q0 68 -38 104.5t-104 36.5h-149v-289z" /> -<glyph unicode="¯" horiz-adv-x="1032" d="M264 1608v112h504v-112h-504z" /> -<glyph unicode="°" horiz-adv-x="780" d="M102 1178q0 117 84 200.5t203 83.5t204 -84t85 -200q0 -119 -84 -202t-205 -83q-119 0 -203 83t-84 202zM225 1178q0 -72 47 -121t117 -49t119 49t49 121q0 70 -49 120t-119 50t-117 -50t-47 -120z" /> -<glyph unicode="±" horiz-adv-x="1409" d="M170 522v119h473v522h125v-522h471v-119h-471v-522h-125v522h-473zM207 -213h995v-119h-995v119z" /> -<glyph unicode="²" horiz-adv-x="782" d="M102 930q0 94 46.5 167.5t112 121t130 88.5t110.5 93t46 116q0 66 -47 111.5t-121 45.5q-100 0 -178 -96l-4 -4l-74 72q10 14 29.5 36.5t87 59.5t143.5 37q127 0 203 -74t76 -186q0 -84 -44.5 -149.5t-108 -108.5t-127 -82t-109.5 -92.5t-50 -116.5h455v-103h-569 q-7 35 -7 64z" /> -<glyph unicode="³" horiz-adv-x="782" d="M88 981l72 78q8 -12 25.5 -29.5t73.5 -47.5t118 -30q74 0 133 52.5t59 130t-60 125t-140 47.5h-68l-29 63l203 236l51 51v4q-39 -6 -75 -6h-316v102h539v-74l-244 -282q102 -12 178 -78t76 -188q0 -119 -88 -204t-217 -85q-55 0 -105.5 14.5t-82 33.5t-56 38.5 t-37.5 34.5z" /> -<glyph unicode="´" horiz-adv-x="1032" d="M365 1540l141 244h162l-176 -244h-127z" /> -<glyph unicode="µ" horiz-adv-x="1247" d="M182 -410v1440h140v-618q0 -145 45 -225.5t180 -80.5q168 0 273.5 128t105.5 303v493h139v-1030h-135v156l4 80h-4q-4 -10 -13.5 -28t-43 -63t-74.5 -79.5t-114 -62.5t-157 -28q-76 0 -133 21.5t-76 44.5l-18 20h-4q14 -104 14 -155v-316h-129z" /> -<glyph unicode="μ" horiz-adv-x="1247" d="M182 -410v1440h140v-618q0 -145 45 -225.5t180 -80.5q168 0 273.5 128t105.5 303v493h139v-1030h-135v156l4 80h-4q-4 -10 -13.5 -28t-43 -63t-74.5 -79.5t-114 -62.5t-157 -28q-76 0 -133 21.5t-76 44.5l-18 20h-4q14 -104 14 -155v-316h-129z" /> -<glyph unicode="¶" horiz-adv-x="1173" d="M100 968.5q0 198.5 143.5 335t344.5 136.5h489v-127h-370v-1415h-117v596q-201 0 -345.5 138t-144.5 336.5zM834 -102v1292h118v-1292h-118z" /> -<glyph unicode="·" horiz-adv-x="555" d="M199 508v164h157v-164h-157z" /> -<glyph unicode="¸" horiz-adv-x="1032" d="M367 -311q39 -12 86 -13q104 0 104 70t-117 70l-30 -2l53 227l82 -14v-17l-23 -123q63 -10 103.5 -48t40.5 -97q0 -84 -56.5 -123t-140.5 -39l-102 10v99z" /> -<glyph unicode="¹" horiz-adv-x="782" d="M150 1556l202 201h107v-788h190v-103h-497v103h194v592l2 49h-2q-8 -16 -43 -51l-82 -78z" /> -<glyph unicode="º" horiz-adv-x="970" d="M141 1126q0 141 100.5 238.5t242 97.5t241.5 -97t100 -239q0 -145 -99 -243.5t-242.5 -98.5t-243 98.5t-99.5 243.5zM176 541v96h621v-96h-621zM254 1126q0 -102 66.5 -169.5t163 -67.5t163 67.5t66.5 169.5q0 100 -66.5 167t-163 67t-163 -67t-66.5 -167z" /> -<glyph unicode="»" horiz-adv-x="1073" d="M115 158l336 420l-336 421h151l336 -421l-336 -420h-151zM483 158l336 420l-336 421h152l336 -421l-336 -420h-152z" /> -<glyph unicode="¼" horiz-adv-x="1933" d="M127 1239l203 201h106v-789h191v-102h-498v102h195v592l2 49h-2q-8 -16 -43 -51l-82 -78zM528 0l689 1440h118l-686 -1440h-121zM1147 233v78l434 580h113v-555h133v-103h-133v-233h-113v233h-434zM1286 336h295v278l6 127h-4q-33 -55 -65 -100l-232 -301v-4z" /> -<glyph unicode="½" horiz-adv-x="1929" d="M127 1239l203 201h106v-789h191v-102h-498v102h195v592l2 49h-2q-8 -16 -43 -51l-82 -78zM530 0l689 1440h118l-686 -1440h-121zM1206 63q0 94 46 168t112 121t130.5 88t110.5 93.5t46 115.5q0 66 -47.5 112t-120.5 46q-100 0 -178 -96l-5 -4l-73 71q10 14 29.5 37 t87 59.5t143.5 36.5q127 0 202.5 -73.5t75.5 -186.5q0 -84 -44 -149.5t-107.5 -108.5t-127 -82t-109.5 -92t-50 -117h455v-102h-570q-6 32 -6 63z" /> -<glyph unicode="¾" horiz-adv-x="1966" d="M96 664l72 77q8 -12 25.5 -29.5t74 -47t117.5 -29.5q74 0 133.5 52t59.5 130t-60.5 125t-140.5 47h-68l-28 64l202 235l52 51v4q-39 -6 -76 -6h-316v103h539v-74l-244 -283q102 -12 178 -77.5t76 -188.5q0 -119 -88 -204t-217 -85q-55 0 -105.5 14.5t-82 34t-56 39 t-37.5 33.5zM561 0l688 1440h119l-686 -1440h-121zM1180 233v78l434 580h112v-555h134v-103h-134v-233h-112v233h-434zM1319 336h295v278l6 127h-4q-33 -55 -66 -100l-231 -301v-4z" /> -<glyph unicode="¿" horiz-adv-x="901" d="M92 -68q0 94 38 169t91 126.5t107.5 98.5t92.5 109.5t38 135.5v82h137v-88q0 -88 -37 -160.5t-89 -124t-104.5 -99.5t-89 -109.5t-36.5 -132.5q0 -100 75.5 -168t192.5 -68q61 0 123.5 21.5t93.5 42.5l31 22l75 -102q-14 -12 -40.5 -32t-112.5 -52.5t-176 -32.5 q-176 0 -293 102t-117 260zM449 872v158h157v-158h-157z" /> -<glyph unicode="À" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186zM393 1784h162l141 -244h-127z" /> -<glyph unicode="Á" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186zM565 1540l142 244h161l-176 -244h-127z" /> -<glyph unicode="Â" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186zM383 1540l170 244h154l172 -244h-136l-110 166h-4l-111 -166h-135z" /> -<glyph unicode="Ã" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM311 1546q0 240 189 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h110q0 -240 -188 -240q-59 0 -103.5 37t-81 73t-73.5 36q-80 0 -80 -140h-113zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186z " /> -<glyph unicode="Ä" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186zM414 1608v176h125v-176h-125zM723 1608v176h127v-176h-127z" /> -<glyph unicode="Å" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186zM477 1662.5q0 63.5 45 104.5t108.5 41t109.5 -41t46 -104.5t-46 -104t-109.5 -40.5t-108.5 40.5t-45 104zM565 1663q0 -29 18.5 -48.5t47.5 -19.5 q31 0 49 19.5t18 48.5q0 31 -18 50.5t-49 19.5q-29 0 -47.5 -19.5t-18.5 -50.5z" /> -<glyph unicode="Æ" horiz-adv-x="1746" d="M20 0l592 1440h985v-127h-669v-525h547v-126h-547v-535h706v-127h-848v664h-348l-268 -664h-150zM489 786h297v527h-84z" /> -<glyph unicode="Ç" horiz-adv-x="1492" d="M115 729q0 313 206.5 524t516.5 211q96 0 185 -19.5t146.5 -46t101.5 -54t64 -46.5l21 -20l-76 -104q-6 6 -19.5 17t-57.5 38.5t-91 48t-120.5 38t-149.5 17.5q-252 0 -416 -173t-164 -429q0 -262 165 -443.5t419 -181.5q82 0 159.5 19.5t131 48.5t95.5 57.5t62 47.5 l19 20l82 -100l-23 -23q-14 -14 -65.5 -52t-108.5 -67.5t-148.5 -54.5t-185.5 -27l-16 -88q63 -10 103 -48t40 -97q0 -84 -56 -123t-140 -39l-103 10v99q39 -12 86 -13q104 0 104.5 70t-116.5 70l-31 -2l39 166q-291 25 -475 236.5t-184 512.5z" /> -<glyph unicode="È" horiz-adv-x="1169" d="M209 0v1440h811v-127h-670v-525h547v-126h-547v-535h707v-127h-848zM399 1784h162l141 -244h-127z" /> -<glyph unicode="É" horiz-adv-x="1169" d="M209 0v1440h811v-127h-670v-525h547v-126h-547v-535h707v-127h-848zM571 1540l142 244h161l-176 -244h-127z" /> -<glyph unicode="Ê" horiz-adv-x="1169" d="M209 0v1440h811v-127h-670v-525h547v-126h-547v-535h707v-127h-848zM391 1540l170 244h154l172 -244h-135l-111 166h-4l-111 -166h-135z" /> -<glyph unicode="Ë" horiz-adv-x="1169" d="M209 0v1440h811v-127h-670v-525h547v-126h-547v-535h707v-127h-848zM422 1608v176h125v-176h-125zM731 1608v176h127v-176h-127z" /> -<glyph unicode="Ì" horiz-adv-x="559" d="M43 1784h162l141 -244h-127zM209 0v1440h141v-1440h-141z" /> -<glyph unicode="Í" horiz-adv-x="559" d="M209 0v1440h141v-1440h-141zM213 1540l141 244h162l-176 -244h-127z" /> -<glyph unicode="Î" horiz-adv-x="559" d="M33 1540l170 244h153l172 -244h-135l-110 166h-4l-111 -166h-135zM209 0v1440h141v-1440h-141z" /> -<glyph unicode="Ï" horiz-adv-x="559" d="M63 1608v176h125v-176h-125zM209 0v1440h141v-1440h-141zM373 1608v176h127v-176h-127z" /> -<glyph unicode="Ð" horiz-adv-x="1544" d="M119 662v122h123v656h463q330 0 526 -191.5t196 -527.5q0 -340 -196.5 -530.5t-525.5 -190.5h-463v662h-123zM383 127h307q270 0 430 154.5t160 439.5q0 283 -159.5 437.5t-430.5 154.5h-307v-529h342v-122h-342v-535z" /> -<glyph unicode="Ñ" horiz-adv-x="1542" d="M209 0v1440h137l735 -1037l119 -194h4q-12 119 -12 194v1037h141v-1440h-137l-735 1036l-119 195h-4q12 -119 12 -195v-1036h-141zM453 1546q0 240 188 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h111q0 -240 -189 -240q-59 0 -103 37t-81 73t-74 36q-80 0 -80 -140 h-112z" /> -<glyph unicode="Ò" horiz-adv-x="1687" d="M111 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5t-519 219.5t-214 534.5zM258 729q0 -262 170 -442.5t416 -180.5q244 0 415 180.5t171 442.5q0 256 -171.5 430t-414.5 174q-246 0 -416 -174t-170 -430zM604 1784h162l141 -244h-127z " /> -<glyph unicode="Ó" horiz-adv-x="1687" d="M111 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5t-519 219.5t-214 534.5zM258 729q0 -262 170 -442.5t416 -180.5q244 0 415 180.5t171 442.5q0 256 -171.5 430t-414.5 174q-246 0 -416 -174t-170 -430zM776 1540l142 244h161 l-176 -244h-127z" /> -<glyph unicode="Ô" horiz-adv-x="1687" d="M111 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5t-519 219.5t-214 534.5zM258 729q0 -262 170 -442.5t416 -180.5q244 0 415 180.5t171 442.5q0 256 -171.5 430t-414.5 174q-246 0 -416 -174t-170 -430zM596 1540l170 244h154l172 -244 h-136l-110 166h-4l-111 -166h-135z" /> -<glyph unicode="Õ" horiz-adv-x="1687" d="M111 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5t-519 219.5t-214 534.5zM258 729q0 -262 170 -442.5t416 -180.5q244 0 415 180.5t171 442.5q0 256 -171.5 430t-414.5 174q-246 0 -416 -174t-170 -430zM524 1546q0 240 189 240 q59 0 103 -37t81 -74t74 -37q82 0 82 142h110q0 -240 -188 -240q-59 0 -103.5 37t-81 73t-73.5 36q-80 0 -80 -140h-113z" /> -<glyph unicode="Ö" horiz-adv-x="1687" d="M111 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5t-519 219.5t-214 534.5zM258 729q0 -262 170 -442.5t416 -180.5q244 0 415 180.5t171 442.5q0 256 -171.5 430t-414.5 174q-246 0 -416 -174t-170 -430zM627 1608v176h125v-176h-125z M936 1608v176h127v-176h-127z" /> -<glyph unicode="×" horiz-adv-x="1341" d="M147 84l443 498l-443 497l84 84l439 -493l438 493l84 -84l-444 -497l444 -498l-84 -84l-438 494l-439 -494z" /> -<glyph unicode="Ø" horiz-adv-x="1693" d="M115 729q0 309 213 522t520 213q207 0 387 -108l96 135l84 -61l-96 -136q123 -102 192.5 -249.5t69.5 -315.5q0 -315 -214 -534.5t-519 -219.5q-215 0 -393 115l-99 -139l-86 59l101 142q-121 104 -188.5 254.5t-67.5 322.5zM262 729q0 -279 191 -463l702 979 q-143 88 -307 88q-246 0 -416 -174t-170 -430zM535 201q143 -94 313 -95q244 0 415 180.5t171 442.5q0 274 -195 453z" /> -<glyph unicode="Ù" horiz-adv-x="1482" d="M190 502v938h144v-936q0 -184 110.5 -291t296.5 -107q188 0 299 108t111 294v932h141v-938q0 -238 -151.5 -382.5t-397.5 -144.5q-248 0 -400.5 144.5t-152.5 382.5zM504 1784h162l141 -244h-127z" /> -<glyph unicode="Ú" horiz-adv-x="1482" d="M190 502v938h144v-936q0 -184 110.5 -291t296.5 -107q188 0 299 108t111 294v932h141v-938q0 -238 -151.5 -382.5t-397.5 -144.5q-248 0 -400.5 144.5t-152.5 382.5zM676 1540l141 244h162l-176 -244h-127z" /> -<glyph unicode="Û" horiz-adv-x="1482" d="M190 502v938h144v-936q0 -184 110.5 -291t296.5 -107q188 0 299 108t111 294v932h141v-938q0 -238 -151.5 -382.5t-397.5 -144.5q-248 0 -400.5 144.5t-152.5 382.5zM494 1540l170 244h153l172 -244h-135l-111 166h-4l-110 -166h-135z" /> -<glyph unicode="Ü" horiz-adv-x="1482" d="M190 502v938h144v-936q0 -184 110.5 -291t296.5 -107q188 0 299 108t111 294v932h141v-938q0 -238 -151.5 -382.5t-397.5 -144.5q-248 0 -400.5 144.5t-152.5 382.5zM524 1608v176h125v-176h-125zM834 1608v176h127v-176h-127z" /> -<glyph unicode="Ý" horiz-adv-x="1175" d="M31 1440h162l305 -522q43 -74 88 -173h4q43 96 88 173l305 522h160l-484 -822v-618h-143v618zM520 1540l142 244h161l-176 -244h-127z" /> -<glyph unicode="Þ" horiz-adv-x="1226" d="M209 0v1440h141v-256h357q195 0 319.5 -119t124.5 -317q0 -197 -126 -318t-323 -121h-352v-309h-141zM350 436h338q145 0 230.5 83t85.5 228.5t-84 227.5t-230 82h-340v-621z" /> -<glyph unicode="ß" horiz-adv-x="1173" d="M168 0v1087q0 174 123 275.5t289 101.5q160 0 259 -90t99 -215q0 -72 -36 -134t-78 -99t-77.5 -82t-35.5 -88q0 -45 62.5 -97.5t137 -96.5t137 -119.5t62.5 -163.5q0 -139 -96 -216t-236 -77q-86 0 -161.5 16t-108.5 33l-33 16v133q123 -74 293 -73q84 0 142.5 44 t58.5 128q0 63 -62.5 123.5t-138.5 101.5t-138.5 106.5t-62.5 137.5q0 59 36 114.5t78 92t78 90t36 108.5q0 72 -58.5 126t-163.5 54q-106 0 -186 -69.5t-80 -190.5v-1077h-139z" /> -<glyph unicode="à" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131zM291 1440h162l141 -244h-127z" /> -<glyph unicode="á" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131zM461 1196l141 244h162l-176 -244h-127z" /> -<glyph unicode="â" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131zM283 1196l170 244h153l172 -244h-135l-111 166h-4l-110 -166h-135z" /> -<glyph unicode="ã" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM211 1202q0 240 188 240q59 0 103.5 -37t81.5 -74t73 -37q82 0 82 142h111q0 -240 -189 -240q-59 0 -103 37t-81 72.5t-74 35.5q-80 0 -79 -139h-113zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59 q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131z" /> -<glyph unicode="ä" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131zM313 1264v176h125v-176h-125zM623 1264v176h127v-176h-127z" /> -<glyph unicode="å" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131zM375 1318.5q0 63.5 45 104.5t108.5 41t109.5 -41t46 -104.5t-46 -104t-109.5 -40.5t-108.5 40.5t-45 104z M463 1319q0 -29 18.5 -48.5t46.5 -19.5q31 0 49.5 19.5t18.5 48.5q0 31 -18.5 50.5t-49.5 19.5q-29 0 -47 -19.5t-18 -50.5z" /> -<glyph unicode="æ" horiz-adv-x="1781" d="M84 281q0 70 23.5 125t58.5 90.5t91 62.5t105.5 40t119 20.5t113.5 8.5t107 1h68v35q0 266 -262 266q-154 0 -281 -94l-4 -5l-63 105q14 12 42.5 32.5t121 53.5t192.5 33q281 0 348 -213h4q127 213 389 213q199 0 312.5 -134.5t113.5 -328.5l-4 -78h-774 q4 -199 110.5 -306.5t274.5 -107.5q82 0 160 32t115 63l37 30l63 -106q-16 -16 -47 -40t-130 -64t-204 -40q-158 0 -276.5 76t-176.5 211h-4q-6 -23 -19 -51.5t-46 -72.5t-73 -77.5t-106.5 -59.5t-144.5 -26q-150 0 -252 81.5t-102 224.5zM227 289q0 -80 61.5 -137.5 t170.5 -57.5q139 0 226 120t87 265v35h-121q-82 0 -142 -6t-132 -26.5t-111 -69.5t-39 -123zM913 629h629q-6 152 -89 229.5t-202 77.5q-133 0 -223 -78.5t-115 -228.5z" /> -<glyph unicode="ç" horiz-adv-x="1126" d="M98 514q0 236 156 388.5t385 152.5q221 0 360 -131l17 -17l-72 -104q-12 14 -36.5 34.5t-103.5 55.5t-161 35q-172 0 -286.5 -116t-114.5 -298q0 -180 116.5 -297t288.5 -117q59 0 114.5 15.5t92.5 36t66.5 42t42.5 35.5l14 17l63 -109q-14 -16 -43.5 -42.5t-129 -70.5 t-210.5 -49l-16 -88q63 -10 103 -48t40 -97q0 -84 -56 -123t-140 -39l-103 10v99q39 -12 86 -13q104 0 104.5 70t-116.5 70l-31 -2l39 166q-207 23 -338 170t-131 364z" /> -<glyph unicode="è" horiz-adv-x="1132" d="M96 514q0 246 146.5 393.5t361.5 147.5q205 0 317.5 -136.5t112.5 -338.5l-4 -72h-790q4 -190 117.5 -299t281.5 -109q172 0 305 117l8 8l64 -106q-16 -16 -48 -40t-131.5 -64t-201.5 -40q-231 0 -385 151.5t-154 387.5zM246 623h647q-6 154 -88 234.5t-205 80.5 q-135 0 -232 -82.5t-122 -232.5zM369 1440h161l142 -244h-127z" /> -<glyph unicode="é" horiz-adv-x="1132" d="M96 514q0 246 146.5 393.5t361.5 147.5q205 0 317.5 -136.5t112.5 -338.5l-4 -72h-790q4 -190 117.5 -299t281.5 -109q172 0 305 117l8 8l64 -106q-16 -16 -48 -40t-131.5 -64t-201.5 -40q-231 0 -385 151.5t-154 387.5zM246 623h647q-6 154 -88 234.5t-205 80.5 q-135 0 -232 -82.5t-122 -232.5zM539 1196l141 244h162l-176 -244h-127z" /> -<glyph unicode="ê" horiz-adv-x="1132" d="M96 514q0 246 146.5 393.5t361.5 147.5q205 0 317.5 -136.5t112.5 -338.5l-4 -72h-790q4 -190 117.5 -299t281.5 -109q172 0 305 117l8 8l64 -106q-16 -16 -48 -40t-131.5 -64t-201.5 -40q-231 0 -385 151.5t-154 387.5zM246 623h647q-6 154 -88 234.5t-205 80.5 q-135 0 -232 -82.5t-122 -232.5zM358 1196l170 244h154l172 -244h-135l-111 166h-4l-110 -166h-136z" /> -<glyph unicode="ë" horiz-adv-x="1132" d="M96 514q0 246 146.5 393.5t361.5 147.5q205 0 317.5 -136.5t112.5 -338.5l-4 -72h-790q4 -190 117.5 -299t281.5 -109q172 0 305 117l8 8l64 -106q-16 -16 -48 -40t-131.5 -64t-201.5 -40q-231 0 -385 151.5t-154 387.5zM246 623h647q-6 154 -88 234.5t-205 80.5 q-135 0 -232 -82.5t-122 -232.5zM389 1264v176h125v-176h-125zM698 1264v176h127v-176h-127z" /> -<glyph unicode="ì" horiz-adv-x="475" d="M0 1440h162l141 -244h-127zM168 0v1030h139v-1030h-139z" /> -<glyph unicode="í" horiz-adv-x="475" d="M168 0v1030h139v-1030h-139zM172 1196l141 244h162l-176 -244h-127z" /> -<glyph unicode="î" horiz-adv-x="475" d="M-8 1196l170 244h153l172 -244h-135l-110 166h-4l-111 -166h-135zM168 0v1030h139v-1030h-139z" /> -<glyph unicode="ï" horiz-adv-x="475" d="M23 1264v176h124v-176h-124zM168 0v1030h139v-1030h-139zM332 1264v176h127v-176h-127z" /> -<glyph unicode="ð" horiz-adv-x="1204" d="M100 475q0 197 130 339t360 142q178 0 287 -102l8 -8h4q-70 199 -254 325l-361 -163l-26 98l276 129q-131 68 -291 104l41 119q236 -59 402 -158l268 121l27 -98l-199 -92q309 -242 309 -672q0 -106 -29.5 -206.5t-89 -186.5t-160 -138.5t-229.5 -52.5q-215 0 -344 149.5 t-129 350.5zM244 473q0 -152 90 -262.5t244 -110.5q176 0 268 132.5t92 299.5q0 133 -92 219.5t-242 86.5q-174 0 -267 -107.5t-93 -257.5z" /> -<glyph unicode="ñ" horiz-adv-x="1214" d="M168 1030h137v-153l-4 -82h4q37 94 143.5 177t268.5 83q184 0 264 -100.5t80 -299.5v-655h-139v618q0 145 -44 225.5t-180 80.5q-131 0 -235.5 -81t-138.5 -210q-16 -57 -17 -139v-494h-139v1030zM317 1202q0 240 189 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h110 q0 -240 -188 -240q-59 0 -103 37t-81 72.5t-74 35.5q-80 0 -80 -139h-113z" /> -<glyph unicode="ò" horiz-adv-x="1273" d="M92 520q0 227 159 381t386 154t386 -153.5t159 -381.5q0 -231 -159 -388t-386 -157t-386 157t-159 388zM236 520q0 -178 116.5 -299t284.5 -121t284.5 121t116.5 299q0 174 -116.5 291t-284.5 117t-284.5 -117t-116.5 -291zM399 1440h162l141 -244h-127z" /> -<glyph unicode="ó" horiz-adv-x="1273" d="M92 520q0 227 159 381t386 154t386 -153.5t159 -381.5q0 -231 -159 -388t-386 -157t-386 157t-159 388zM236 520q0 -178 116.5 -299t284.5 -121t284.5 121t116.5 299q0 174 -116.5 291t-284.5 117t-284.5 -117t-116.5 -291zM571 1196l142 244h161l-176 -244h-127z" /> -<glyph unicode="ô" horiz-adv-x="1273" d="M92 520q0 227 159 381t386 154t386 -153.5t159 -381.5q0 -231 -159 -388t-386 -157t-386 157t-159 388zM236 520q0 -178 116.5 -299t284.5 -121t284.5 121t116.5 299q0 174 -116.5 291t-284.5 117t-284.5 -117t-116.5 -291zM389 1196l170 244h154l172 -244h-135l-111 166 h-4l-111 -166h-135z" /> -<glyph unicode="õ" horiz-adv-x="1273" d="M92 520q0 227 159 381t386 154t386 -153.5t159 -381.5q0 -231 -159 -388t-386 -157t-386 157t-159 388zM236 520q0 -178 116.5 -299t284.5 -121t284.5 121t116.5 299q0 174 -116.5 291t-284.5 117t-284.5 -117t-116.5 -291zM317 1202q0 240 189 240q59 0 103 -37t81 -74 t74 -37q82 0 82 142h110q0 -240 -188 -240q-59 0 -103 37t-81 72.5t-74 35.5q-80 0 -80 -139h-113z" /> -<glyph unicode="ö" horiz-adv-x="1273" d="M92 520q0 227 159 381t386 154t386 -153.5t159 -381.5q0 -231 -159 -388t-386 -157t-386 157t-159 388zM236 520q0 -178 116.5 -299t284.5 -121t284.5 121t116.5 299q0 174 -116.5 291t-284.5 117t-284.5 -117t-116.5 -291zM420 1264v176h125v-176h-125zM729 1264v176 h127v-176h-127z" /> -<glyph unicode="÷" horiz-adv-x="1323" d="M160 522v119h1003v-119h-1003zM584 125v151h153v-151h-153zM584 887v151h153v-151h-153z" /> -<glyph unicode="ø" horiz-adv-x="1277" d="M94 520q0 227 159 381t386 154q150 0 279 -74l79 111l84 -62l-77 -110q180 -158 180 -400q0 -231 -159 -388t-386 -157q-139 0 -264 66l-78 -109l-84 62l76 104q-195 162 -195 422zM238 520q0 -188 129 -311l475 663q-94 55 -203 56q-168 0 -284.5 -117t-116.5 -291z M451 147q84 -47 188 -47q168 0 284.5 121t116.5 299q0 172 -116 289z" /> -<glyph unicode="ù" horiz-adv-x="1204" d="M154 375v655h139v-618q0 -145 44 -225.5t179 -80.5q170 0 275.5 127t105.5 304v493h139v-1030h-135v154l4 82h-4q-39 -94 -144.5 -177.5t-258.5 -83.5q-180 0 -262 98.5t-82 301.5zM358 1440h162l142 -244h-127z" /> -<glyph unicode="ú" horiz-adv-x="1204" d="M154 375v655h139v-618q0 -145 44 -225.5t179 -80.5q170 0 275.5 127t105.5 304v493h139v-1030h-135v154l4 82h-4q-39 -94 -144.5 -177.5t-258.5 -83.5q-180 0 -262 98.5t-82 301.5zM528 1196l142 244h161l-176 -244h-127z" /> -<glyph unicode="û" horiz-adv-x="1204" d="M154 375v655h139v-618q0 -145 44 -225.5t179 -80.5q170 0 275.5 127t105.5 304v493h139v-1030h-135v154l4 82h-4q-39 -94 -144.5 -177.5t-258.5 -83.5q-180 0 -262 98.5t-82 301.5zM348 1196l170 244h154l172 -244h-135l-111 166h-4l-111 -166h-135z" /> -<glyph unicode="ü" horiz-adv-x="1204" d="M154 375v655h139v-618q0 -145 44 -225.5t179 -80.5q170 0 275.5 127t105.5 304v493h139v-1030h-135v154l4 82h-4q-39 -94 -144.5 -177.5t-258.5 -83.5q-180 0 -262 98.5t-82 301.5zM379 1264v176h125v-176h-125zM688 1264v176h127v-176h-127z" /> -<glyph unicode="ý" horiz-adv-x="1021" d="M14 -369l54 111q57 -47 122 -47q121 0 195 168l64 145l-431 1022h154l303 -751l37 -109h4q14 57 35 109l297 751h151l-507 -1245q-41 -100 -119 -157.5t-178 -57.5q-105 0 -181 61zM446 1196l142 244h162l-177 -244h-127z" /> -<glyph unicode="þ" horiz-adv-x="1206" d="M168 -410v1850h139v-498l-2 -84h4l13 19q12 18 26 38.5t44 46t65 45t87 34t111 14.5q207 0 329 -149.5t122 -389.5q0 -242 -129 -391.5t-332 -149.5q-70 0 -131 20.5t-97 49.5t-62.5 57.5t-37.5 49.5l-10 20h-4q4 -37 4 -90v-492h-139zM303 514q0 -174 89 -294t241 -120 q141 0 235.5 114t94.5 302q0 184 -90.5 298t-233.5 114q-145 0 -240.5 -102.5t-95.5 -311.5z" /> -<glyph unicode="ÿ" horiz-adv-x="1021" d="M14 -369l54 111q57 -47 122 -47q121 0 195 168l64 145l-431 1022h154l303 -751l37 -109h4q14 57 35 109l297 751h151l-507 -1245q-41 -100 -119 -157.5t-178 -57.5q-105 0 -181 61zM297 1264v176h125v-176h-125zM606 1264v176h127v-176h-127z" /> -<glyph unicode="Œ" horiz-adv-x="1951" d="M113 721q0 313 207.5 526t525.5 213q45 0 129 -10t115 -10h710v-127h-667v-525h544v-126h-544v-535h704v-127h-745q-29 0 -115 -10t-131 -10q-317 0 -525 213t-208 528zM260 721q0 -262 163 -437t423 -175l143 14v1192q-66 16 -143 16q-260 0 -423 -174t-163 -436z" /> -<glyph unicode="œ" horiz-adv-x="2074" d="M94 512q0 240 158 391.5t383 151.5q154 0 275.5 -74t189.5 -203h4q59 131 175 204t265 73q205 0 318.5 -136.5t113.5 -338.5l-4 -72h-790q8 -195 121.5 -301.5t277.5 -106.5q84 0 162 32t112 63l37 30l66 -106q-16 -16 -48 -40t-131.5 -64t-203.5 -40q-160 0 -283 75 t-186 206h-4q-66 -131 -188.5 -206t-278.5 -75q-225 0 -383 149.5t-158 387.5zM238 512q0 -182 115.5 -297t283.5 -115t283.5 117t115.5 303q0 182 -116.5 295t-282.5 113q-168 0 -283.5 -116t-115.5 -300zM1188 623h645q-6 154 -87 234.5t-204 80.5q-135 0 -232 -82.5 t-122 -232.5z" /> -<glyph unicode="Ÿ" horiz-adv-x="1175" d="M31 1440h162l305 -522q43 -74 88 -173h4q43 96 88 173l305 522h160l-484 -822v-618h-143v618zM360 1608v176h125v-176h-125zM670 1608v176h127v-176h-127z" /> -<glyph unicode="ˆ" horiz-adv-x="1032" d="M268 1540l170 244h154l172 -244h-135l-111 166h-4l-111 -166h-135z" /> -<glyph unicode="˜" horiz-adv-x="1032" d="M197 1546q0 240 188 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h111q0 -240 -189 -240q-59 0 -103 37t-81 73t-74 36q-80 0 -80 -140h-112z" /> -<glyph unicode="–" horiz-adv-x="1449" d="M213 522v119h1024v-119h-1024z" /> -<glyph unicode="—" horiz-adv-x="1859" d="M213 522v119h1434v-119h-1434z" /> -<glyph unicode="‘" horiz-adv-x="440" d="M115 1106l116 352h111l-80 -352h-147z" /> -<glyph unicode="’" horiz-adv-x="428" d="M117 1108l80 352h147l-115 -352h-112z" /> -<glyph unicode="‚" horiz-adv-x="487" d="M104 -184l80 352h146l-115 -352h-111z" /> -<glyph unicode="“" horiz-adv-x="686" d="M115 1106l116 352h111l-80 -352h-147zM360 1106l115 352h113l-80 -352h-148z" /> -<glyph unicode="”" horiz-adv-x="673" d="M117 1108l80 352h147l-115 -352h-112zM362 1108l80 352h148l-115 -352h-113z" /> -<glyph unicode="„" horiz-adv-x="729" d="M104 -184l80 352h146l-115 -352h-111zM346 -184l80 352h145l-114 -352h-111z" /> -<glyph unicode="•" horiz-adv-x="821" d="M119 596q0 121 86 207t206.5 86t205.5 -86t85 -207t-85 -207t-205.5 -86t-206.5 86t-86 207z" /> -<glyph unicode="…" horiz-adv-x="1464" d="M172 0v164h158v-164h-158zM653 0v164h158v-164h-158zM1135 0v164h157v-164h-157z" /> -<glyph unicode="‹" horiz-adv-x="702" d="M102 578l336 421h150l-336 -421l336 -420h-150z" /> -<glyph unicode="›" horiz-adv-x="704" d="M115 158l336 420l-336 421h151l336 -421l-336 -420h-151z" /> -<glyph unicode="€" horiz-adv-x="1208" d="M84 545v104h113q-12 72 0 166h-113v105h131q61 242 249.5 393t438.5 151l195 -24l-35 -133q-76 23 -162 22q-195 0 -338 -112.5t-196 -296.5h626l-20 -105h-629q-12 -78 -2 -166h600l-20 -104h-557q49 -195 195.5 -314.5t344.5 -119.5q45 0 91 7t69 13l22 8l33 -133 q-94 -31 -217 -31q-258 0 -447.5 159t-244.5 411h-127z" /> -<glyph unicode="™" horiz-adv-x="1908" d="M55 1333v107h758v-107h-321v-790h-117v790h-320zM887 543l71 897h107l235 -514q18 -39 29 -84h4q10 45 29 84l235 514h107l70 -897h-113l-51 608l2 59h-4l-230 -499h-94l-229 499h-4l2 -59l-52 -608h-114z" /> -<glyph unicode="" horiz-adv-x="1030" d="M0 1030h1030v-1030h-1030v1030z" /> -<glyph unicode="fi" horiz-adv-x="1130" d="M86 913v117h129v37q0 119 38 202t99.5 118.5t112.5 49t106 13.5l64 -4v-125q-20 4 -49 4q-37 0 -71 -9t-74 -32.5t-63.5 -80t-23.5 -136.5v-37h609v-1030h-140v913h-469v-913h-139v913h-129zM819 1266v174h146v-174h-146z" /> -<glyph unicode="fl" horiz-adv-x="1161" d="M86 901v117h129v49q0 119 38 202t99.5 118.5t112.5 49t106 13.5l64 -4v-125q-20 4 -49 4q-37 0 -71 -9t-74 -32.5t-63.5 -80t-23.5 -136.5v-49h264v-117h-264v-901h-139v901h-129zM813 244v1196h139v-1166q0 -156 115 -155l35 2v-125q-25 -4 -51 -4q-238 0 -238 252z" /> -<glyph unicode="ffi" horiz-adv-x="1785" d="M86 913v117h129v37q0 119 38 202t99.5 118.5t112.5 49t106 13.5l64 -4v-125q-20 4 -49 4q-37 0 -71 -9t-74 -32.5t-63.5 -80t-23.5 -136.5v-37h516v37q0 119 38 202t99.5 118.5t112.5 49t107 13.5l63 -4v-125q-20 4 -49 4q-37 0 -70.5 -9t-73.5 -32.5t-63.5 -80 t-23.5 -136.5v-37h608v-1030h-139v913h-469v-913h-140v913h-516v-913h-139v913h-129zM1475 1266v174h145v-174h-145z" /> -<glyph unicode="ffl" horiz-adv-x="1816" d="M86 913v117h129v37q0 119 38 202t99.5 118.5t112.5 49t106 13.5l64 -4v-125q-20 4 -49 4q-37 0 -71 -9t-74 -32.5t-63.5 -80t-23.5 -136.5v-37h516v37q0 119 38 202t99.5 118.5t112.5 49t107 13.5l63 -4v-125q-20 4 -49 4q-37 0 -70.5 -9t-73.5 -32.5t-63.5 -80 t-23.5 -136.5v-37h264v-117h-264v-913h-140v913h-516v-913h-139v913h-129zM1468 244v1196h140v-1166q0 -156 114 -155l35 2v-125q-25 -4 -51 -4q-238 0 -238 252z" /> -</font> -</defs></svg>
\ No newline at end of file diff --git a/phonegap/www/fonts/MuseoSans_300-webfont.ttf b/phonegap/www/fonts/MuseoSans_300-webfont.ttf Binary files differdeleted file mode 100755 index 0a4444b76..000000000 --- a/phonegap/www/fonts/MuseoSans_300-webfont.ttf +++ /dev/null diff --git a/phonegap/www/fonts/MuseoSans_300-webfont.woff b/phonegap/www/fonts/MuseoSans_300-webfont.woff Binary files differdeleted file mode 100755 index 22110a14e..000000000 --- a/phonegap/www/fonts/MuseoSans_300-webfont.woff +++ /dev/null diff --git a/phonegap/www/fonts/MuseoSans_300_Italic-webfont.eot b/phonegap/www/fonts/MuseoSans_300_Italic-webfont.eot Binary files differdeleted file mode 100755 index 3a35076a1..000000000 --- a/phonegap/www/fonts/MuseoSans_300_Italic-webfont.eot +++ /dev/null diff --git a/phonegap/www/fonts/MuseoSans_300_Italic-webfont.svg b/phonegap/www/fonts/MuseoSans_300_Italic-webfont.svg deleted file mode 100755 index b848d3756..000000000 --- a/phonegap/www/fonts/MuseoSans_300_Italic-webfont.svg +++ /dev/null @@ -1,227 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > -<svg xmlns="http://www.w3.org/2000/svg"> -<metadata> -This is a custom SVG webfont generated by Fontspring. -</metadata> -<defs> -<font id="MuseoSans300Italic" horiz-adv-x="1255" > -<font-face units-per-em="2048" ascent="1536" descent="-512" /> -<missing-glyph horiz-adv-x="555" /> -<glyph unicode=" " horiz-adv-x="555" /> -<glyph unicode="	" horiz-adv-x="555" /> -<glyph unicode=" " horiz-adv-x="555" /> -<glyph unicode="!" horiz-adv-x="632" d="M117 0l33 162h161l-32 -162h-162zM205 377l201 1063h145l-215 -1063h-131z" /> -<glyph unicode=""" horiz-adv-x="647" d="M236 1114l67 346h119l-66 -346h-120zM485 1114l66 346h121l-68 -346h-119z" /> -<glyph unicode="#" horiz-adv-x="1480" d="M53 399l43 115h287l149 401h-286l41 115h286l152 410h129l-152 -410h355l151 410h127l-151 -410h284l-41 -115h-284l-150 -401h283l-41 -115h-285l-147 -399h-129l149 399h-354l-147 -399h-129l149 399h-289zM512 514h352l150 401h-355z" /> -<glyph unicode="$" horiz-adv-x="1142" d="M41 160l96 100q4 -6 14.5 -16.5t43 -36t70.5 -45t98.5 -35.5t125.5 -16q135 0 238.5 82.5t103.5 212.5q0 80 -61 140t-149.5 102t-175.5 88t-148 123t-61 181q0 160 132 284t324 138l39 191h115l-37 -193q94 -10 172 -44t109 -62l30 -29l-84 -108q-12 12 -35.5 30.5 t-101.5 50t-162 31.5q-150 0 -253 -90t-103 -199q0 -72 61.5 -127t149.5 -97t175 -90t148.5 -129t61.5 -191q0 -168 -131 -294t-328 -137l-35 -186h-114l34 193q-111 12 -200.5 56t-124.5 83z" /> -<glyph unicode="%" horiz-adv-x="1505" d="M18 0l1360 1440h160l-1364 -1440h-156zM221 1147q0 121 102.5 219t231.5 98q113 0 182.5 -69.5t69.5 -180.5q0 -125 -101.5 -222t-230.5 -97q-117 0 -185.5 68.5t-68.5 183.5zM344 1145q0 -57 39 -96t100 -39q80 0 140.5 61.5t60.5 142.5q0 57 -38 96.5t-99 39.5 q-80 0 -141.5 -62.5t-61.5 -142.5zM741 227q0 121 102.5 219.5t231.5 98.5q115 0 183.5 -69.5t68.5 -180.5q0 -125 -101.5 -222.5t-230.5 -97.5q-115 0 -184.5 68.5t-69.5 183.5zM864 225q0 -59 39 -97t101 -38q80 0 140 60.5t60 142.5q0 59 -38 98t-99 39 q-78 0 -140.5 -62.5t-62.5 -142.5z" /> -<glyph unicode="&" horiz-adv-x="1378" d="M76 342q0 145 97 270t249 164v4q-6 2 -16.5 7.5t-35 24.5t-44 45t-36 73t-16.5 104q0 188 140.5 309t349.5 121l176 -26l-57 -113q-68 14 -119 14q-141 0 -242.5 -85t-101.5 -222q0 -201 266 -201h303l41 203h139l-39 -203h195l-25 -126h-194l-43 -211 q-104 -518 -553 -519q-205 0 -319.5 100.5t-114.5 266.5zM223 346q0 -104 77 -170.5t212 -66.5q334 0 412 389l41 207h-303q-182 0 -310.5 -94.5t-128.5 -264.5z" /> -<glyph unicode="'" horiz-adv-x="401" d="M236 1114l67 346h121l-66 -346h-122z" /> -<glyph unicode="(" horiz-adv-x="587" d="M143 350q0 637 418 1145h135q-424 -535 -424 -1149q0 -289 97 -541h-125q-101 258 -101 545z" /> -<glyph unicode=")" horiz-adv-x="589" d="M-94 -195q424 535 424 1149q0 289 -97 541h125q100 -258 101 -545q0 -637 -418 -1145h-135z" /> -<glyph unicode="*" horiz-adv-x="956" d="M178 1108l64 125l274 -109l49 316h140l-76 -316l319 107l19 -129l-324 -90v-4l141 -242l-114 -78l-127 260h-4l-226 -258l-100 80l242 250v4z" /> -<glyph unicode="+" horiz-adv-x="1390" d="M143 522l23 119h471l104 522h125l-102 -522h471l-23 -119h-471l-102 -522h-125l102 522h-473z" /> -<glyph unicode="," horiz-adv-x="507" d="M-78 -199l191 367h157l-223 -367h-125z" /> -<glyph unicode="-" horiz-adv-x="999" d="M190 518l23 127h582l-25 -127h-580z" /> -<glyph unicode="." horiz-adv-x="497" d="M51 0l33 170h166l-33 -170h-166z" /> -<glyph unicode="/" horiz-adv-x="804" d="M-53 -86l831 1606h140l-832 -1606h-139z" /> -<glyph unicode="0" horiz-adv-x="1290" d="M137 440q0 119 20.5 249t69.5 270.5t121 251t186.5 182t253.5 71.5q406 0 406 -467q0 -119 -19.5 -249t-68.5 -270t-121 -249.5t-186.5 -181.5t-255.5 -72q-406 0 -406 465zM285 440q0 -332 262 -331q106 0 194 62t143.5 158.5t93.5 218.5t53.5 234.5t15.5 212.5 q0 336 -263 336q-125 0 -226 -88t-157.5 -226t-86 -287t-29.5 -290z" /> -<glyph unicode="1" horiz-adv-x="954" d="M4 0l23 127h323l203 1042l18 80h-4q-20 -29 -90 -86l-178 -147l-78 100l393 324h134l-259 -1313h318l-25 -127h-778z" /> -<glyph unicode="2" horiz-adv-x="1161" d="M18 0q2 123 56.5 227.5t137.5 179t182.5 141t198.5 127t181 122t133 140.5t51 169q0 102 -66.5 162.5t-184.5 60.5q-59 0 -119 -20.5t-102 -48t-75.5 -56t-50.5 -49.5l-16 -20l-100 79q8 10 22.5 26.5t62.5 59.5t100 77t132 60.5t160 26.5q182 0 285.5 -95t103.5 -253 q0 -141 -86 -259t-213 -201t-256 -158.5t-232.5 -171t-125.5 -199.5h745l-24 -127h-900z" /> -<glyph unicode="3" horiz-adv-x="1159" d="M8 172l96 98q4 -6 13.5 -17t41 -39t69.5 -48.5t99.5 -37.5t129.5 -17q150 0 269.5 108.5t119.5 263.5q0 119 -87 182.5t-222 63.5h-107l-18 84l440 422l90 80v4q-41 -6 -117 -6h-530l24 127h842l-18 -94l-525 -498q47 -2 94.5 -13.5t99.5 -39t91 -66.5t64.5 -102.5 t25.5 -141.5q0 -205 -159.5 -357.5t-376.5 -152.5q-88 0 -166 20.5t-127 49.5t-86 57.5t-53 49.5z" /> -<glyph unicode="4" horiz-adv-x="1226" d="M33 399l18 93l879 948h166l-178 -916h204l-24 -125h-205l-78 -399h-141l78 399h-719zM240 524h536l117 602l33 136h-4l-13 -17q-12 -16 -34.5 -43.5t-43.5 -48.5z" /> -<glyph unicode="5" horiz-adv-x="1157" d="M31 180l102 92q4 -6 11.5 -17t34 -39t58 -49.5t87 -38.5t118.5 -17q164 0 295 118.5t131 286.5q0 119 -86 194.5t-223 75.5q-152 0 -276 -77l-88 32l213 699h700l-25 -127h-571l-115 -365l-28 -82h4q94 51 217 52q190 0 308 -112t118 -286q0 -225 -173 -385t-401 -160 q-252 0 -385 166z" /> -<glyph unicode="6" horiz-adv-x="1228" d="M127 494q0 106 31.5 233t97.5 258t157 237.5t222 174t278 67.5q78 0 146.5 -15t99.5 -30l31 -14l-72 -119q-84 45 -203 45q-211 0 -368.5 -171t-224.5 -406h4q66 78 168 123t208 45q178 0 283 -103.5t105 -275.5q0 -217 -147.5 -392.5t-379.5 -175.5q-203 0 -319.5 141.5 t-116.5 377.5zM274 467q0 -141 77 -249.5t210 -108.5q162 0 273.5 125.5t111.5 304.5q0 119 -71.5 187.5t-200.5 68.5q-137 0 -268.5 -95.5t-131.5 -232.5z" /> -<glyph unicode="7" horiz-adv-x="1071" d="M66 0l813 1180q25 35 50 67.5t40 48.5l14 17v4q-37 -4 -109 -4h-661l25 127h936l-19 -99l-930 -1341h-159z" /> -<glyph unicode="8" horiz-adv-x="1247" d="M90 356q0 94 44 180.5t109.5 145.5t105.5 88t69 43q-135 100 -135 244q0 160 136 283.5t353 123.5q188 0 292.5 -86t104.5 -235q0 -76 -33.5 -156t-86 -143.5t-84 -95t-60.5 -56.5q162 -104 162 -260q0 -190 -161 -323.5t-382 -133.5q-190 0 -312 102.5t-122 278.5z M240 360q0 -117 83 -185.5t203 -68.5q152 0 272 91.5t120 232.5q0 45 -22 83t-68 70.5t-84.5 54t-110.5 55.5t-107 52q-37 -20 -75.5 -47.5t-91 -77t-86 -118t-33.5 -142.5zM430 1057q0 -37 16.5 -71t37 -57.5t65.5 -51t72.5 -41t88 -42t85.5 -40.5q229 190 229 381 q0 92 -69.5 145t-186.5 53q-145 0 -241.5 -81.5t-96.5 -194.5z" /> -<glyph unicode="9" horiz-adv-x="1228" d="M82 35l72 119q86 -45 204 -45q143 0 268.5 88t203 214t120.5 275h-4q-61 -74 -163.5 -121t-211.5 -47q-180 0 -284.5 102.5t-104.5 276.5q0 217 148.5 392t380.5 175q203 0 318.5 -141t115.5 -377q0 -106 -32 -233t-97.5 -258t-156.5 -237.5t-222 -174.5t-279 -68 q-78 0 -146.5 14.5t-98.5 30.5zM326 901q0 -119 71.5 -187.5t196.5 -68.5q137 0 271 95.5t134 232.5q0 141 -77.5 249.5t-208.5 108.5q-162 0 -274.5 -126t-112.5 -304z" /> -<glyph unicode=":" horiz-adv-x="600" d="M98 0l33 170h166l-33 -170h-166zM266 860l33 170h166l-33 -170h-166z" /> -<glyph unicode=";" horiz-adv-x="608" d="M-41 -199l188 367h160l-223 -367h-125zM279 860l32 170h166l-33 -170h-165z" /> -<glyph unicode="<" horiz-adv-x="1206" d="M94 530v103l926 414v-138l-752 -325v-4l752 -326v-137z" /> -<glyph unicode="=" horiz-adv-x="1406" d="M215 344v119h954v-119h-954zM215 700v119h954v-119h-954z" /> -<glyph unicode=">" horiz-adv-x="1181" d="M150 117v137l751 326v4l-751 325v138l925 -414v-103z" /> -<glyph unicode="?" horiz-adv-x="976" d="M180 0l33 162h160l-33 -162h-160zM213 1358q16 12 47 30.5t120 48t173 29.5q162 0 260 -86t98 -225q0 -100 -45 -183t-112.5 -140.5t-137 -109.5t-127 -117.5t-71.5 -139.5l-19 -88h-137l19 92q18 94 75.5 173t124 132t131 105.5t107.5 118t43 143.5q0 84 -60.5 138 t-162.5 54q-66 0 -132.5 -21.5t-99.5 -43.5l-35 -23z" /> -<glyph unicode="@" horiz-adv-x="1624" d="M96 358q0 231 125 438.5t327 329t421 121.5q236 0 342 -89t106 -234q0 -27 -8 -80l-123 -629h146l-23 -115h-530q-162 0 -260.5 95.5t-98.5 240.5q0 174 142.5 312.5t330.5 138.5h285q4 25 4 39q0 88 -77 144t-230 56q-291 0 -513 -231t-222 -533q0 -217 136 -356 t363 -139l-22 -121q-268 0 -444.5 174t-176.5 438zM664 438q0 -96 63.5 -159.5t167.5 -63.5h254l108 563h-249q-135 0 -239.5 -103.5t-104.5 -236.5z" /> -<glyph unicode="A" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186z" /> -<glyph unicode="B" horiz-adv-x="1284" d="M90 0l281 1440h463q104 0 172 -27q182 -72 182 -276q0 -131 -68.5 -230.5t-181.5 -146.5v-4q82 -29 130 -103.5t48 -179.5q0 -152 -79 -265.5t-206 -168.5q-92 -39 -204 -39h-537zM256 127h369q86 0 149 29q88 41 141.5 125t53.5 192q0 102 -63.5 160.5t-172.5 58.5h-366 zM391 815h348q123 0 212 88t89 221q0 88 -53 138.5t-151 50.5h-349z" /> -<glyph unicode="C" horiz-adv-x="1488" d="M121 594q0 233 119.5 435t317.5 318.5t417 116.5q297 0 477 -155l31 -31l-90 -100q-6 6 -17.5 16t-50.5 36.5t-83 47t-115.5 37t-147.5 16.5q-287 0 -499 -218t-212 -515q0 -215 130 -352t347 -137q129 0 255 48t188 95l61 47l70 -111q-10 -8 -28.5 -22t-78 -51t-123 -66 t-158.5 -51.5t-190 -22.5q-285 0 -452.5 172.5t-167.5 446.5z" /> -<glyph unicode="D" horiz-adv-x="1511" d="M90 0l281 1440h436q293 0 459 -146.5t166 -412.5q0 -369 -241 -625t-611 -256h-490zM254 127h309q311 0 516 214t205 531q0 211 -130 326t-359 115h-308z" /> -<glyph unicode="E" horiz-adv-x="1163" d="M90 0l281 1440h811l-27 -127h-668l-102 -525h547l-25 -126h-545l-106 -535h705l-23 -127h-848z" /> -<glyph unicode="F" horiz-adv-x="1056" d="M90 0l281 1440h757l-24 -127h-617l-104 -541h528l-24 -127h-529l-127 -645h-141z" /> -<glyph unicode="G" horiz-adv-x="1550" d="M119 578q0 236 118.5 440.5t318.5 325t425 120.5q152 0 276.5 -42t176.5 -83l49 -41l-90 -102q-6 6 -17.5 15.5t-50.5 32t-83 41t-114.5 32.5t-144.5 14q-293 0 -505 -223t-212 -524q0 -213 129 -344t338 -131q80 0 161 22.5t139.5 56t104.5 66.5t70 55l23 23l47 229 h-246l25 127h379l-133 -688h-132l23 111l14 61h-4q-8 -8 -22.5 -21.5t-64.5 -47t-103 -59.5t-134 -47.5t-163 -21.5q-264 0 -431 168.5t-167 434.5z" /> -<glyph unicode="H" horiz-adv-x="1536" d="M90 0l281 1440h141l-127 -656h834l129 656h141l-281 -1440h-143l129 657h-834l-129 -657h-141z" /> -<glyph unicode="I" horiz-adv-x="559" d="M90 0l281 1440h141l-281 -1440h-141z" /> -<glyph unicode="J" horiz-adv-x="1060" d="M14 301q0 51 11 107l10 53h141l-8 -51q-10 -51 -10 -88q0 -213 213 -213q68 0 129 25.5t115.5 95t74.5 173.5l174 910h-350l25 127h491l-203 -1051q-41 -213 -170 -313.5t-288 -100.5q-152 0 -253.5 81t-101.5 245z" /> -<glyph unicode="K" horiz-adv-x="1228" d="M90 0l281 1440h141l-121 -625h234l518 625h168l-572 -686v-4l314 -750h-154l-283 688h-249l-136 -688h-141z" /> -<glyph unicode="L" horiz-adv-x="1044" d="M90 0l281 1440h141l-256 -1313h668l-27 -127h-807z" /> -<glyph unicode="M" horiz-adv-x="1746" d="M43 0l395 1440h144l211 -846l36 -176h5q57 100 104 176l543 846h149l-166 -1440h-139l119 1008q4 35 11 85t13.5 82.5t8.5 32.5h-4q-66 -127 -115 -200l-481 -740h-134l-196 740l-39 204h-4q-20 -127 -41 -204l-279 -1008h-141z" /> -<glyph unicode="N" horiz-adv-x="1529" d="M90 0l281 1440h127l532 -1037q37 -72 80 -194h4q10 119 25 194l202 1037h142l-281 -1440h-127l-532 1036l-82 195h-4q-10 -119 -25 -195l-201 -1036h-141z" /> -<glyph unicode="O" horiz-adv-x="1683" d="M119 598q0 227 124 429t323.5 319.5t416.5 117.5q279 0 453 -170t174 -436q0 -231 -125 -437t-326 -326t-416 -120q-279 0 -451.5 174.5t-172.5 448.5zM264 602q0 -217 134 -355t347 -138q272 0 494.5 222t222.5 521q0 211 -134 345t-347 134q-276 0 -496.5 -217 t-220.5 -512z" /> -<glyph unicode="P" horiz-adv-x="1228" d="M90 0l281 1440h471q141 0 227 -49q170 -92 170 -304q0 -164 -86 -292.5t-223 -188.5q-100 -41 -209 -41h-379l-111 -565h-141zM367 692h340q94 0 167 33q98 45 158 137t60 219q0 111 -70 171.5t-197 60.5h-338z" /> -<glyph unicode="Q" horiz-adv-x="1708" d="M119 598q0 227 124 429t324.5 319.5t417.5 117.5q279 0 452 -170t173 -436q0 -365 -285 -633l139 -174l-94 -84l-139 178q-225 -170 -486 -170q-279 0 -452.5 174.5t-173.5 448.5zM266 602q0 -217 134.5 -355t344.5 -138q215 0 402 141l-143 182l94 84l143 -186 q221 225 221 522q0 211 -133 345t-346 134q-276 0 -496.5 -217t-220.5 -512z" /> -<glyph unicode="R" horiz-adv-x="1282" d="M90 0l281 1440h473q125 0 200 -39q170 -82 170 -291q0 -170 -101 -301t-263 -168v-4q10 -18 24 -59l205 -578h-151l-211 606h-367l-117 -606h-143zM375 733h334q152 0 256 101.5t104 261.5q0 102 -64.5 159.5t-177.5 57.5h-340z" /> -<glyph unicode="S" horiz-adv-x="1101" d="M20 160l95 100q4 -6 14 -16.5t43 -36t71 -45t98 -35.5t126 -16q135 0 238.5 82.5t103.5 212.5q0 80 -61.5 140t-149.5 102t-175 88t-148.5 123t-61.5 181q0 170 147.5 297t354.5 127q117 0 212 -34.5t134 -69.5l37 -35l-84 -108q-12 12 -36 30.5t-100.5 50t-160.5 31.5 q-152 0 -255.5 -89t-103.5 -200q0 -72 61.5 -127t148.5 -97t175 -90t149.5 -129t61.5 -191q0 -174 -140 -302.5t-347 -128.5q-258 0 -420 156z" /> -<glyph unicode="T" horiz-adv-x="1191" d="M143 1313l23 127h1173l-22 -127h-518l-254 -1313h-144l256 1313h-514z" /> -<glyph unicode="U" horiz-adv-x="1476" d="M156 393q0 55 12 117l182 930h142l-183 -934q-10 -49 -10 -96q0 -143 90 -222t252 -79q186 0 317.5 107.5t167.5 293.5l183 930h143l-188 -948q-47 -240 -215 -378.5t-410 -138.5q-219 0 -351 111.5t-132 306.5z" /> -<glyph unicode="V" horiz-adv-x="1259" d="M178 1440h146l184 -1094q12 -74 18 -186h4l15 28q14 31 36.5 79t41.5 79l612 1094h160l-813 -1440h-154z" /> -<glyph unicode="W" horiz-adv-x="1908" d="M236 1440h145l63 -1118l2 -154h5q33 80 67 154l537 1118h141l72 -1118l4 -154h4q31 82 61 154l498 1118h156l-654 -1440h-172l-69 1014l-4 215h-5q-51 -121 -94 -213l-491 -1016h-168z" /> -<glyph unicode="X" horiz-adv-x="1198" d="M-66 0l605 758l-285 682h154l170 -422l63 -164h4q57 86 117 162l340 424h170l-561 -697l319 -743h-151l-207 492l-60 159h-4q-55 -82 -114 -155l-396 -496h-164z" /> -<glyph unicode="Y" horiz-adv-x="1155" d="M176 1440h152l202 -522l58 -173h4q59 94 119 170l405 525h172l-649 -826l-121 -614h-141l123 618z" /> -<glyph unicode="Z" horiz-adv-x="1210" d="M-35 0l21 100l942 1082q68 78 127 131v4q-33 -4 -105 -4h-690l27 127h979l-21 -101l-944 -1081q-68 -78 -127 -131v-4q35 4 105 4h737l-25 -127h-1026z" /> -<glyph unicode="[" horiz-adv-x="581" d="M59 -195l330 1690h277l-23 -115h-149l-281 -1460h147l-22 -115h-279z" /> -<glyph unicode="\" horiz-adv-x="790" d="M242 1520h125l206 -1606h-124z" /> -<glyph unicode="]" horiz-adv-x="569" d="M-82 -195l23 115h149l283 1460h-150l23 115h278l-327 -1690h-279z" /> -<glyph unicode="^" horiz-adv-x="1241" d="M31 512l405 928h96l406 -928h-133l-320 758l-319 -758h-135z" /> -<glyph unicode="_" horiz-adv-x="1187" d="M-76 -119l23 119h1057l-23 -119h-1057z" /> -<glyph unicode="`" horiz-adv-x="1032" d="M281 1784h151l96 -244h-118z" /> -<glyph unicode="a" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268z" /> -<glyph unicode="b" horiz-adv-x="1210" d="M51 0l279 1440h139l-96 -498l-27 -94h4q55 92 157.5 149.5t215.5 57.5q180 0 279.5 -110.5t99.5 -303.5q0 -287 -169 -476.5t-392 -189.5q-117 0 -204 55.5t-120 155.5h-4q0 -43 -10 -92l-19 -94h-133zM274 391q0 -127 64.5 -209t193.5 -82q162 0 294 147.5t132 383.5 q0 139 -69.5 218t-190.5 79q-182 0 -303 -164t-121 -373z" /> -<glyph unicode="c" horiz-adv-x="1124" d="M68 414q0 272 191.5 456.5t440.5 184.5q115 0 208 -37t128 -74l37 -37l-84 -94q-10 12 -31.5 31.5t-95.5 51.5t-155 32q-193 0 -344.5 -145.5t-151.5 -356.5q0 -145 93 -235.5t243 -90.5q188 0 346 133l14 13l43 -117q-6 -6 -18 -16.5t-54 -37t-86 -47t-113 -37 t-138 -16.5q-211 0 -342 121t-131 318z" /> -<glyph unicode="d" horiz-adv-x="1210" d="M70 389q0 287 169 476.5t396 189.5q113 0 199 -52.5t118 -152.5h4q0 43 9 86l98 504h139l-278 -1440h-136l21 109l22 81h-4q-55 -90 -154.5 -152.5t-219.5 -62.5q-184 0 -283.5 110.5t-99.5 303.5zM213 397q0 -139 69.5 -218t192.5 -79q182 0 302 167t120 370 q0 127 -64.5 209t-191.5 82q-162 0 -295 -147.5t-133 -383.5z" /> -<glyph unicode="e" horiz-adv-x="1132" d="M70 410q0 258 172 451.5t426 193.5q186 0 281 -102.5t95 -270.5q0 -35 -8 -79t-16 -71l-6 -24h-791q-8 -41 -8 -88q0 -139 86 -229.5t244 -90.5q82 0 166 32t127 63l43 30l45 -114q-18 -14 -52 -37t-135.5 -61t-197.5 -38q-211 0 -341 120t-130 315zM250 623h645 q6 35 6 71q0 119 -64.5 181.5t-168.5 62.5q-133 0 -249 -84t-169 -231z" /> -<glyph unicode="f" horiz-adv-x="661" d="M102 0l177 903h-129l22 119h129l10 53q23 117 75 198t118.5 115.5t119 48t103.5 13.5l76 -4l-27 -125q-18 4 -47 4t-56.5 -4t-63.5 -20.5t-65.5 -43t-56 -75.5t-38.5 -115l-11 -45h264l-22 -119h-262l-176 -903h-140z" /> -<glyph unicode="g" horiz-adv-x="1193" d="M10 -344l68 106q115 -68 270 -67q158 0 272.5 81t149.5 242l21 95l22 82h-4q-127 -188 -342 -189q-182 0 -286.5 111.5t-104.5 298.5q0 152 60.5 294t187.5 243.5t292 101.5q117 0 207 -43t121 -140h4q-2 23 2 46l23 112h135l-199 -1018q-45 -229 -197.5 -335.5 t-353.5 -106.5q-188 0 -348 86zM219 424q0 -137 70.5 -215t200 -78t223.5 90t135 211t41 246q0 250 -262 250q-186 0 -297 -152.5t-111 -351.5z" /> -<glyph unicode="h" horiz-adv-x="1216" d="M49 0l281 1440h139l-107 -557l-24 -92h4q49 94 173 179t278 85q141 0 216.5 -67.5t75.5 -199.5q0 -55 -16 -137l-125 -651h-139l119 616q16 94 16 138q0 84 -47 127t-129 43q-170 0 -308.5 -132.5t-174.5 -314.5l-93 -477h-139z" /> -<glyph unicode="i" horiz-adv-x="475" d="M49 0l201 1030h139l-201 -1030h-139zM289 1266l37 174h149l-35 -174h-151z" /> -<glyph unicode="j" horiz-adv-x="475" d="M-309 -416l24 121q16 -2 45 -2q37 0 73 9t80 34t80 82t52 139l205 1063h139l-207 -1067q-23 -121 -74 -204t-115.5 -118.5t-115.5 -49t-104 -13.5zM289 1266l35 174h149l-33 -174h-151z" /> -<glyph unicode="k" horiz-adv-x="1026" d="M49 0l283 1440h139l-158 -803h160l385 393h176l-448 -455v-4l280 -571h-153l-246 514h-176l-103 -514h-139z" /> -<glyph unicode="l" horiz-adv-x="505" d="M80 182q0 35 8 74l231 1184h140l-228 -1166q-6 -33 -6 -63q0 -41 16.5 -62.5t35 -25.5t45.5 -4l30 2l-26 -125q-23 -4 -47 -4q-78 0 -138.5 42t-60.5 148z" /> -<glyph unicode="m" horiz-adv-x="1875" d="M51 0l199 1030h137l-29 -151q-4 -20 -11 -43t-11 -37l-4 -13h4q59 113 178 191t248 78q137 0 200.5 -65.5t69.5 -192.5h4q61 111 178 184.5t244 73.5q141 0 214 -68.5t73 -200.5q0 -57 -16 -139l-125 -647h-140l119 608q16 78 16 142q0 178 -178 178 q-156 0 -275.5 -136.5t-152.5 -304.5l-96 -487h-139l119 608q16 78 16 146q0 174 -170 174q-154 0 -280 -135.5t-158 -307.5l-95 -485h-139z" /> -<glyph unicode="n" horiz-adv-x="1216" d="M49 0l201 1030h135l-27 -147l-26 -97h4q49 96 174 182.5t281 86.5q141 0 217.5 -67.5t76.5 -199.5q0 -55 -16 -137l-127 -651h-139l119 616q16 76 16 138q0 170 -176 170q-170 0 -307.5 -132.5t-173.5 -314.5l-93 -477h-139z" /> -<glyph unicode="o" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q209 0 340 -125t131 -320q0 -260 -194.5 -447.5t-437.5 -187.5q-209 0 -340 126t-131 325zM211 430q0 -145 91 -237.5t239 -92.5q186 0 336.5 148.5t150.5 355.5q0 143 -92 233.5t-238 90.5q-188 0 -337.5 -146.5t-149.5 -351.5z " /> -<glyph unicode="p" horiz-adv-x="1210" d="M-29 -410l279 1440h133l-18 -100l-25 -88h4q59 92 156.5 152.5t220.5 60.5q180 0 280.5 -110.5t100.5 -303.5q0 -287 -168 -476.5t-389 -189.5q-117 0 -203 52.5t-121 154.5h-4q-2 -45 -12 -98l-96 -494h-138zM274 397q0 -129 66 -213t192 -84q162 0 294 147.5t132 383.5 q0 139 -68.5 218t-191.5 79q-180 0 -302 -165t-122 -366z" /> -<glyph unicode="q" horiz-adv-x="1210" d="M70 387q0 289 170 478.5t397 189.5q117 0 201 -53.5t116 -153.5h4q2 33 11 78l20 104h133l-278 -1440h-139l96 496l26 98h-4q-53 -88 -149 -148.5t-221 -60.5q-182 0 -282.5 111t-100.5 301zM213 397q0 -137 70.5 -217t191.5 -80q182 0 303 167t121 370q0 127 -64.5 209 t-191.5 82q-164 0 -297 -147.5t-133 -383.5z" /> -<glyph unicode="r" horiz-adv-x="729" d="M51 0l199 1030h137l-37 -182l-24 -90h4q57 121 156.5 201.5t220.5 80.5q37 0 61 -6l-27 -137q-29 4 -51 4q-154 0 -271.5 -163t-154.5 -353l-74 -385h-139z" /> -<glyph unicode="s" horiz-adv-x="905" d="M-6 125l84 92q12 -12 33.5 -31.5t97.5 -52.5t162 -33q94 0 168.5 50.5t74.5 138.5q0 51 -48 90t-116.5 67.5t-137 62.5t-117 93.5t-48.5 138.5q0 145 115 229.5t264 84.5q98 0 177 -28t110 -56l31 -29l-78 -98q-8 10 -25.5 24.5t-80 38t-136.5 23.5q-92 0 -165.5 -46 t-73.5 -139q0 -61 73.5 -109t160.5 -79t161 -99.5t74 -168.5q0 -135 -113 -224.5t-268 -89.5q-72 0 -137.5 15.5t-107.5 37t-73.5 44t-46.5 39.5z" /> -<glyph unicode="t" horiz-adv-x="681" d="M127 903l23 119h137l57 293h137l-59 -293h260l-23 -119h-258l-98 -510q-10 -57 -10 -92q0 -184 176 -184l59 4l-24 -125q-25 -4 -53 -4q-299 0 -299 291q0 41 10 112l100 508h-135z" /> -<glyph unicode="u" horiz-adv-x="1206" d="M94 242q0 55 17 137l125 651h139l-119 -612q-14 -74 -14 -142q0 -82 40 -126t140 -44q166 0 299 137.5t168 313.5l92 473h139l-200 -1030h-138l29 147l27 97h-4q-53 -98 -173 -183.5t-278 -85.5q-127 0 -208 65t-81 202z" /> -<glyph unicode="v" horiz-adv-x="978" d="M96 1030h140l135 -760l12 -125h4q33 72 64 125l430 760h151l-594 -1030h-147z" /> -<glyph unicode="w" horiz-adv-x="1642" d="M115 1030h139l100 -772l8 -111h5q29 59 55 111l399 768h140l104 -768l10 -111h4q25 57 51 111l402 772h149l-546 -1030h-152l-111 739l-10 111h-4q-27 -61 -53 -111l-391 -739h-152z" /> -<glyph unicode="x" horiz-adv-x="1001" d="M-63 0l471 543l-250 487h155l162 -342l25 -61h2q23 31 45 57l289 346h168l-435 -500l269 -530h-150l-186 383l-27 59h-4q-16 -27 -39 -55l-330 -387h-165z" /> -<glyph unicode="y" horiz-adv-x="1021" d="M-184 -369l69 105q43 -41 115 -41q125 0 229 166l93 149l-234 1020h145l160 -770l19 -108h2q29 57 57 106l447 772h157l-753 -1249q-125 -211 -318 -211q-114 0 -188 61z" /> -<glyph unicode="z" horiz-adv-x="1034" d="M-33 0l17 90l706 723l98 94v4q-33 -4 -98 -4h-524l24 123h820l-19 -92l-708 -721l-101 -94v-4q35 4 103 4h567l-23 -123h-862z" /> -<glyph unicode="{" horiz-adv-x="686" d="M102 598l25 127q8 0 20.5 3t45 18.5t59.5 38t54.5 69.5t39.5 107l35 174q72 360 375 360h30l-20 -115h-18q-25 0 -50.5 -7t-65.5 -28.5t-74 -79t-50 -141.5l-41 -206q-12 -59 -38 -107.5t-55.5 -74t-57 -43t-46.5 -23.5l-18 -6v-5q12 -6 32.5 -19t53.5 -66.5t33 -120.5 q0 -27 -6 -60l-43 -219q-10 -57 -11 -90q0 -72 32 -112t60.5 -47t59.5 -7h18l-22 -115q-12 -2 -33 -2q-31 0 -64.5 9.5t-77.5 33t-73 80t-29 137.5q0 49 13 115l36 189q6 33 7 61q0 70 -34 113t-69 51z" /> -<glyph unicode="|" horiz-adv-x="630" d="M256 -322v1936h129v-1936h-129z" /> -<glyph unicode="}" horiz-adv-x="679" d="M-90 -197l22 115h19q27 0 52.5 7t64 28.5t71.5 78t49 142.5l45 229q18 98 72.5 163t100.5 81l43 17v4q-12 6 -33 19t-53.5 64.5t-32.5 116.5q0 25 6 60l39 196q10 57 10 90q0 72 -31.5 112t-60.5 47t-60 7h-18l23 115q14 2 32 2q31 0 65 -9t78 -32.5t72.5 -80 t28.5 -138.5q0 -49 -12 -115l-33 -164q-6 -37 -6 -63q0 -70 33.5 -113t68.5 -51l33 -8l-25 -127q-6 0 -18 -3t-45 -17.5t-60.5 -38t-55 -69.5t-40.5 -108l-39 -196q-72 -362 -374 -363z" /> -<glyph unicode="~" horiz-adv-x="1206" d="M131 428q0 162 69.5 239.5t190.5 77.5q61 0 110.5 -21.5t81 -53t61.5 -63.5t69 -53.5t86 -21.5q82 0 113.5 63.5t31.5 141.5h121q0 -162 -69.5 -239.5t-190.5 -77.5q-76 0 -134.5 33.5t-89 72.5t-78.5 73t-106 34q-82 0 -113.5 -63.5t-31.5 -141.5h-121z" /> -<glyph unicode="¡" horiz-adv-x="557" d="M8 -410l215 1063h131l-202 -1063h-144zM248 868l33 162h161l-34 -162h-160z" /> -<glyph unicode="¢" horiz-adv-x="1173" d="M129 586q0 258 156.5 473t398.5 233l35 172h115l-33 -176q213 -33 299 -231l22 -68l-131 -49q-2 8 -6 23.5t-22.5 53.5t-45 67.5t-78 53t-116.5 23.5q-199 0 -324 -171t-125 -408q0 -139 70 -220t209 -81q186 0 324 180l26 39l127 -54q-6 -12 -18.5 -31.5t-55.5 -68.5 t-92 -89t-127 -73.5t-159 -40.5l-33 -170h-115l33 177q-154 25 -244 139.5t-90 296.5z" /> -<glyph unicode="£" horiz-adv-x="1187" d="M2 0l25 127h127l104 541h-90l22 112h89l63 318q31 156 164 261t309 105q184 0 305 -112l10 -11l-98 -92q-8 8 -25.5 22.5t-75 37t-118.5 22.5q-131 0 -220 -72.5t-110 -181.5l-59 -297h393l-22 -112h-392l-106 -541h694l-24 -127h-965z" /> -<glyph unicode="¥" horiz-adv-x="1224" d="M170 432l18 105h334l19 79l-39 101h-277l21 104h217l-238 619h154l192 -512q31 -80 60 -183h4q55 100 119 183l393 512h170l-479 -619h215l-21 -104h-274l-74 -101l-18 -79h329l-18 -105h-330l-86 -432h-143l86 432h-334z" /> -<glyph unicode="§" horiz-adv-x="849" d="M-8 -37l84 88q57 -55 155 -55q123 0 196 80t77 200l39 887h123l-39 -897q-6 -164 -113.5 -278.5t-282.5 -114.5q-68 0 -128 22.5t-87 45.5zM201 174l37 897q6 164 113.5 278.5t283.5 114.5q68 0 128 -22.5t85 -44.5l26 -23l-83 -88q-59 55 -158 55q-121 0 -194.5 -79.5 t-78.5 -202.5l-36 -885h-123z" /> -<glyph unicode="¨" horiz-adv-x="1032" d="M176 1608l35 176h125l-33 -176h-127zM485 1608l35 176h127l-35 -176h-127z" /> -<glyph unicode="©" horiz-adv-x="1722" d="M152 721q0 309 211.5 526t510.5 217q305 0 519.5 -217t214.5 -526q0 -313 -213 -529.5t-521 -216.5q-301 0 -511.5 217.5t-210.5 528.5zM272 721q0 -268 174.5 -451.5t427.5 -183.5q260 0 437.5 183.5t177.5 451.5q0 266 -177 449.5t-438 183.5q-254 0 -428 -183.5 t-174 -449.5zM473 717q0 172 114.5 297t307.5 125q63 0 120.5 -19.5t94.5 -47.5t65.5 -56.5t41.5 -48.5l12 -19l-94 -63l-11 15q-6 9 -28.5 33.5t-48 43t-65.5 34t-83 15.5q-141 0 -223 -90t-82 -217t81 -217t224 -90q135 0 225 127l11 14l94 -64q-4 -8 -13.5 -20t-40 -45 t-66.5 -58.5t-93.5 -46t-120.5 -20.5q-195 0 -308.5 124t-113.5 294z" /> -<glyph unicode="ª" horiz-adv-x="870" d="M150 541l18 96h539l-19 -96h-538zM233 952q0 57 24 102.5t64.5 71t85 43t98.5 24.5t87 9t70 2h36q8 35 9 53q0 106 -119 107q-41 0 -88 -14.5t-74 -28.5l-25 -14l-39 84q102 70 242 69q215 0 215 -190q0 -33 -12 -90l-76 -385h-108l20 100h-4q-4 -4 -9 -12.5t-26.5 -27.5 t-44 -33.5t-59.5 -27t-74 -12.5q-74 0 -133.5 44t-59.5 126zM352 965q0 -37 28 -60.5t79 -23.5q76 0 141.5 73.5t77.5 141.5l4 18h-27q-303 1 -303 -149z" /> -<glyph unicode="«" horiz-adv-x="1062" d="M90 582l393 417h160l-407 -428l258 -413h-140zM451 582l421 417h162l-440 -428l260 -413h-141z" /> -<glyph unicode="¬" horiz-adv-x="1306" d="M166 700v119h954v-495h-125v376h-829z" /> -<glyph unicode="­" horiz-adv-x="884" d="M20 518l23 127h582l-25 -127h-580z" /> -<glyph unicode="®" horiz-adv-x="1722" d="M152 721q0 309 211.5 526t510.5 217q305 0 519.5 -217t214.5 -526q0 -313 -213 -529.5t-521 -216.5q-301 0 -511.5 217.5t-210.5 528.5zM272 721q0 -268 174.5 -451.5t427.5 -183.5q260 0 437.5 183.5t177.5 451.5q0 266 -177 449.5t-438 183.5q-254 0 -428 -183.5 t-174 -449.5zM633 1120h285q106 0 172.5 -65.5t66.5 -171.5q0 -84 -44 -140.5t-105 -70.5v-4q8 -10 26 -45l154 -301h-127l-160 323h-153v-323h-115v798zM748 735h149q66 0 103.5 39t37.5 109q0 68 -37.5 104.5t-103.5 36.5h-149v-289z" /> -<glyph unicode="¯" horiz-adv-x="1032" d="M147 1608l21 112h506l-21 -112h-506z" /> -<glyph unicode="°" horiz-adv-x="778" d="M205 1141q0 125 101.5 223t228.5 98q111 0 182 -70.5t71 -177.5q0 -125 -102 -223t-227 -98q-113 0 -183.5 69.5t-70.5 178.5zM326 1145q0 -59 38.5 -98t102.5 -39q78 0 139.5 61t61.5 141q0 59 -39 98.5t-101 39.5q-78 0 -140 -61.5t-62 -141.5z" /> -<glyph unicode="±" horiz-adv-x="1437" d="M158 522v119h473v522h125v-522h471v-119h-471v-522h-125v522h-473zM195 -213h995v-119h-995v119z" /> -<glyph unicode="²" horiz-adv-x="782" d="M0 866q2 113 62.5 200t143.5 141.5t166 101.5t140 106.5t57 130.5q0 55 -38.5 91t-102.5 36q-49 0 -99 -25.5t-77 -50.5l-27 -24l-65 78q12 14 36.5 35.5t96.5 56.5t141 35q117 0 184.5 -61.5t67.5 -162.5q0 -90 -49 -160.5t-124 -117.5t-150.5 -89t-139 -97.5 t-82.5 -120.5h449l-21 -103h-569z" /> -<glyph unicode="³" horiz-adv-x="782" d="M16 981l78 72q8 -10 24.5 -27.5t74 -45.5t120.5 -28q86 0 152.5 61.5t66.5 151.5q0 66 -51 104t-121 38h-67l-19 63l248 236l62 51v4q-39 -6 -76 -6h-311l18 102h539l-15 -74l-299 -284q78 -10 143.5 -66.5t65.5 -163.5q0 -127 -98 -225t-240 -98q-170 0 -284 123z" /> -<glyph unicode="´" horiz-adv-x="1032" d="M223 1540l191 244h172l-228 -244h-135z" /> -<glyph unicode="µ" horiz-adv-x="1245" d="M-16 -410l278 1440h139l-118 -612q-16 -86 -17 -142q0 -170 183 -170q166 0 299 137.5t167 313.5l91 473h139l-199 -1030h-137l29 147l26 97h-4q-55 -98 -174 -183.5t-276 -85.5q-150 0 -213 88h-4q-8 -106 -19 -157l-63 -316h-127z" /> -<glyph unicode="μ" horiz-adv-x="1245" d="M-16 -410l278 1440h139l-118 -612q-16 -86 -17 -142q0 -170 183 -170q166 0 299 137.5t167 313.5l91 473h139l-199 -1030h-137l29 147l26 97h-4q-55 -98 -174 -183.5t-276 -85.5q-150 0 -213 88h-4q-8 -106 -19 -157l-63 -316h-127z" /> -<glyph unicode="¶" horiz-adv-x="1173" d="M160 903q0 215 174 376t389 161h512l-23 -127h-370l-275 -1415h-118l114 596q-162 0 -282.5 117.5t-120.5 291.5zM694 -102l250 1292h117l-250 -1292h-117z" /> -<glyph unicode="·" horiz-adv-x="559" d="M174 504l33 170h164l-31 -170h-166z" /> -<glyph unicode="¸" horiz-adv-x="1032" d="M201 -408l20 95q35 -10 82 -11q119 0 119 80q0 59 -105 60l-30 -2l98 227l78 -14l-2 -17l-47 -123q49 -8 83.5 -42.5t34.5 -90.5q0 -86 -67.5 -130t-153.5 -44z" /> -<glyph unicode="¹" horiz-adv-x="782" d="M53 866l21 103h192l113 583l14 50h-4q-10 -16 -49 -50l-96 -77l-60 81l244 201h107l-154 -788h188l-18 -103h-498z" /> -<glyph unicode="º" horiz-adv-x="966" d="M160 541l18 96h621l-19 -96h-620zM233 1067q0 160 122 277.5t274 117.5q131 0 214 -79.5t83 -200.5q0 -164 -122 -281t-276 -117q-131 0 -213 79t-82 204zM346 1075q0 -84 51.5 -135t134.5 -51q109 0 195 84t86 203q0 82 -52 133t-136 51q-109 0 -194 -84t-85 -201z" /> -<glyph unicode="»" horiz-adv-x="1062" d="M16 158l439 428l-260 413h141l264 -424l-422 -417h-162zM406 158l409 428l-260 413h141l265 -424l-394 -417h-161z" /> -<glyph unicode="¼" horiz-adv-x="1933" d="M113 549l20 102h193l112 584l15 49h-4q-10 -16 -50 -49l-96 -78l-59 82l243 201h107l-154 -789h189l-19 -102h-497zM406 0l966 1440h127l-964 -1440h-129zM1069 233l14 78l545 580h119l-109 -555h134l-19 -103h-133l-47 -233h-113l45 233h-436zM1235 336h291l53 278 q4 25 13.5 56.5t13.5 50.5l6 20h-4q-43 -55 -86 -100l-287 -301v-4z" /> -<glyph unicode="½" horiz-adv-x="1906" d="M113 549l20 102h193l112 584l15 49h-4q-10 -16 -50 -49l-96 -78l-59 82l243 201h107l-154 -789h189l-19 -102h-497zM408 0l966 1440h127l-964 -1440h-129zM1090 0q2 113 62 200t143 141t166 101t140.5 106.5t57.5 131.5q0 55 -39 91t-102 36q-49 0 -99.5 -24.5 t-77.5 -49.5l-26 -26l-66 77q12 14 37 36t96.5 56.5t141.5 34.5q117 0 184.5 -61.5t67.5 -161.5q0 -90 -49.5 -160.5t-124 -118t-150.5 -89t-139.5 -97t-81.5 -121.5h448l-20 -102h-569z" /> -<glyph unicode="¾" horiz-adv-x="1959" d="M98 664l78 71q8 -10 24.5 -27.5t74 -45t120.5 -27.5q86 0 152.5 61.5t66.5 151.5q0 66 -51 103.5t-121 37.5h-67l-19 64l248 235l62 51v4q-39 -6 -76 -6h-311l18 103h539l-15 -74l-299 -285q78 -10 143.5 -66.5t65.5 -162.5q0 -127 -98 -225.5t-240 -98.5 q-170 0 -284 123zM432 0l967 1440h127l-965 -1440h-129zM1096 233l14 78l545 580h119l-109 -555h133l-18 -103h-133l-48 -233h-112l45 233h-436zM1262 336h290l54 278q4 25 13 56.5t15 50.5l4 20h-4q-43 -55 -86 -100l-286 -301v-4z" /> -<glyph unicode="¿" horiz-adv-x="899" d="M-43 -119q0 100 45 183t112.5 140.5t137.5 110t126 118t73 138.5l18 82h137l-18 -88q-20 -94 -77.5 -172t-124.5 -131t-130 -105.5t-106.5 -118t-43.5 -142.5q0 -84 60.5 -138.5t163.5 -54.5q66 0 132 21.5t99 42.5l35 22l59 -113q-16 -12 -46.5 -29.5t-120 -47 t-173.5 -29.5q-162 0 -260 85t-98 226zM496 868l32 162h160l-33 -162h-159z" /> -<glyph unicode="À" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186zM623 1784h151l96 -244h-118z" /> -<glyph unicode="Á" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186zM741 1540l191 244h172l-227 -244h-136z" /> -<glyph unicode="Â" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186zM559 1540l219 244h154l123 -244h-129l-78 166h-4l-144 -166h-141z" /> -<glyph unicode="Ã" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186zM510 1546q45 240 217 240q45 0 79 -22.5t51 -51.5t42 -51.5t53 -22.5q78 0 105 142h110q-47 -240 -219 -240q-55 0 -93 37t-67.5 73t-64.5 36 q-41 0 -66.5 -43.5t-35.5 -96.5h-111z" /> -<glyph unicode="Ä" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186zM610 1608l35 176h125l-33 -176h-127zM920 1608l34 176h127l-34 -176h-127z" /> -<glyph unicode="Å" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186zM680 1645q0 68 52 115.5t120 47.5q66 0 103.5 -33.5t37.5 -95.5q0 -66 -53 -113.5t-118.5 -47.5t-103.5 34t-38 93zM768 1647q0 -51 55 -52 q35 0 58.5 25t23.5 59q0 23 -15.5 38.5t-39.5 15.5q-33 0 -57.5 -24.5t-24.5 -61.5z" /> -<glyph unicode="Æ" horiz-adv-x="1755" d="M-92 0l870 1440h996l-25 -127h-670l-102 -525h547l-25 -126h-547l-104 -535h706l-24 -127h-848l129 664h-346l-397 -664h-160zM539 786h295l104 527h-82z" /> -<glyph unicode="Ç" horiz-adv-x="1492" d="M125 594q0 233 120 435t317.5 318.5t416.5 116.5q297 0 477 -155l31 -31l-90 -100q-6 6 -17.5 16t-50.5 36.5t-83 47t-115.5 37t-147.5 16.5q-287 0 -499 -218t-212 -515q0 -215 130 -352t348 -137q129 0 254.5 48t187.5 95l61 47l70 -111q-10 -8 -28.5 -22t-78 -51 t-123 -66t-158.5 -51.5t-190 -22.5h-4l-32 -88q49 -8 83.5 -42.5t34.5 -90.5q0 -86 -67.5 -130t-153.5 -44l-110 12l20 95q35 -10 82 -11q119 0 119 80q0 59 -105 60l-30 -2l71 168q-246 27 -387 194.5t-141 417.5z" /> -<glyph unicode="È" horiz-adv-x="1163" d="M90 0l281 1440h811l-27 -127h-668l-102 -525h547l-25 -126h-545l-106 -535h705l-23 -127h-848zM627 1784h151l96 -244h-118z" /> -<glyph unicode="É" horiz-adv-x="1163" d="M90 0l281 1440h811l-27 -127h-668l-102 -525h547l-25 -126h-545l-106 -535h705l-23 -127h-848zM748 1540l190 244h172l-227 -244h-135z" /> -<glyph unicode="Ê" horiz-adv-x="1163" d="M90 0l281 1440h811l-27 -127h-668l-102 -525h547l-25 -126h-545l-106 -535h705l-23 -127h-848zM565 1540l219 244h154l123 -244h-129l-78 166h-4l-143 -166h-142z" /> -<glyph unicode="Ë" horiz-adv-x="1163" d="M90 0l281 1440h811l-27 -127h-668l-102 -525h547l-25 -126h-545l-106 -535h705l-23 -127h-848zM616 1608l35 176h125l-33 -176h-127zM926 1608l35 176h126l-34 -176h-127z" /> -<glyph unicode="Ì" horiz-adv-x="559" d="M90 0l281 1440h141l-281 -1440h-141zM272 1784h152l96 -244h-119z" /> -<glyph unicode="Í" horiz-adv-x="559" d="M90 0l281 1440h141l-281 -1440h-141zM389 1540l191 244h172l-228 -244h-135z" /> -<glyph unicode="Î" horiz-adv-x="559" d="M90 0l281 1440h141l-281 -1440h-141zM209 1540l219 244h154l123 -244h-130l-77 166h-4l-144 -166h-141z" /> -<glyph unicode="Ï" horiz-adv-x="559" d="M90 0l281 1440h141l-281 -1440h-141zM260 1608l35 176h125l-33 -176h-127zM569 1608l35 176h127l-35 -176h-127z" /> -<glyph unicode="Ð" horiz-adv-x="1540" d="M117 0l129 662h-121l25 122h120l129 656h437q293 0 458.5 -146.5t165.5 -412.5q0 -369 -240.5 -625t-613.5 -256h-489zM283 127h309q311 0 516 214t205 531q0 211 -130 326t-360 115h-307l-104 -529h344l-25 -122h-344z" /> -<glyph unicode="Ñ" horiz-adv-x="1529" d="M90 0l281 1440h127l532 -1037q37 -72 80 -194h4q10 119 25 194l202 1037h142l-281 -1440h-127l-532 1036l-82 195h-4q-10 -119 -25 -195l-201 -1036h-141zM641 1546q45 240 217 240q45 0 79 -22.5t51.5 -51.5t42 -51.5t52.5 -22.5q78 0 105 142h110q-47 -240 -219 -240 q-55 0 -93 37t-67.5 73t-64.5 36q-41 0 -66.5 -43.5t-35.5 -96.5h-111z" /> -<glyph unicode="Ò" horiz-adv-x="1683" d="M119 598q0 227 124 429t323.5 319.5t416.5 117.5q279 0 453 -170t174 -436q0 -231 -125 -437t-326 -326t-416 -120q-279 0 -451.5 174.5t-172.5 448.5zM264 602q0 -217 134 -355t347 -138q272 0 494.5 222t222.5 521q0 211 -134 345t-347 134q-276 0 -496.5 -217 t-220.5 -512zM827 1784h152l96 -244h-119z" /> -<glyph unicode="Ó" horiz-adv-x="1683" d="M119 598q0 227 124 429t323.5 319.5t416.5 117.5q279 0 453 -170t174 -436q0 -231 -125 -437t-326 -326t-416 -120q-279 0 -451.5 174.5t-172.5 448.5zM264 602q0 -217 134 -355t347 -138q272 0 494.5 222t222.5 521q0 211 -134 345t-347 134q-276 0 -496.5 -217 t-220.5 -512zM946 1540l191 244h172l-228 -244h-135z" /> -<glyph unicode="Ô" horiz-adv-x="1683" d="M119 598q0 227 124 429t323.5 319.5t416.5 117.5q279 0 453 -170t174 -436q0 -231 -125 -437t-326 -326t-416 -120q-279 0 -451.5 174.5t-172.5 448.5zM264 602q0 -217 134 -355t347 -138q272 0 494.5 222t222.5 521q0 211 -134 345t-347 134q-276 0 -496.5 -217 t-220.5 -512zM764 1540l219 244h154l123 -244h-130l-77 166h-4l-144 -166h-141z" /> -<glyph unicode="Õ" horiz-adv-x="1683" d="M119 598q0 227 124 429t323.5 319.5t416.5 117.5q279 0 453 -170t174 -436q0 -231 -125 -437t-326 -326t-416 -120q-279 0 -451.5 174.5t-172.5 448.5zM264 602q0 -217 134 -355t347 -138q272 0 494.5 222t222.5 521q0 211 -134 345t-347 134q-276 0 -496.5 -217 t-220.5 -512zM715 1546q45 240 217 240q45 0 78.5 -22.5t51 -51.5t42 -51.5t53.5 -22.5q78 0 105 142h110q-47 -240 -219 -240q-55 0 -93 37t-67.5 73t-64.5 36q-41 0 -66.5 -43.5t-36.5 -96.5h-110z" /> -<glyph unicode="Ö" horiz-adv-x="1683" d="M119 598q0 227 124 429t323.5 319.5t416.5 117.5q279 0 453 -170t174 -436q0 -231 -125 -437t-326 -326t-416 -120q-279 0 -451.5 174.5t-172.5 448.5zM264 602q0 -217 134 -355t347 -138q272 0 494.5 222t222.5 521q0 211 -134 345t-347 134q-276 0 -496.5 -217 t-220.5 -512zM815 1608l35 176h125l-33 -176h-127zM1124 1608l35 176h127l-35 -176h-127z" /> -<glyph unicode="×" horiz-adv-x="1421" d="M184 84l443 498l-443 497l84 84l439 -493l438 493l84 -84l-445 -497l445 -498l-84 -84l-438 494l-439 -494z" /> -<glyph unicode="Ø" horiz-adv-x="1689" d="M121 598q0 227 124 429t324.5 319.5t417.5 117.5q223 0 383 -114l129 141l78 -66l-129 -141q164 -168 164 -426q0 -231 -125 -437t-324.5 -326t-414.5 -120q-227 0 -392 119l-131 -143l-80 63l136 148q-160 172 -160 436zM268 602q0 -197 113 -332l893 975 q-121 86 -289 86q-276 0 -496.5 -217t-220.5 -512zM453 201q125 -92 295 -92q274 0 495 222t221 521q0 190 -114 326z" /> -<glyph unicode="Ù" horiz-adv-x="1476" d="M156 393q0 55 12 117l182 930h142l-183 -934q-10 -49 -10 -96q0 -143 90 -222t252 -79q186 0 317.5 107.5t167.5 293.5l183 930h143l-188 -948q-47 -240 -215 -378.5t-410 -138.5q-219 0 -351 111.5t-132 306.5zM727 1784h152l96 -244h-119z" /> -<glyph unicode="Ú" horiz-adv-x="1476" d="M156 393q0 55 12 117l182 930h142l-183 -934q-10 -49 -10 -96q0 -143 90 -222t252 -79q186 0 317.5 107.5t167.5 293.5l183 930h143l-188 -948q-47 -240 -215 -378.5t-410 -138.5q-219 0 -351 111.5t-132 306.5zM846 1540l190 244h172l-227 -244h-135z" /> -<glyph unicode="Û" horiz-adv-x="1476" d="M156 393q0 55 12 117l182 930h142l-183 -934q-10 -49 -10 -96q0 -143 90 -222t252 -79q186 0 317.5 107.5t167.5 293.5l183 930h143l-188 -948q-47 -240 -215 -378.5t-410 -138.5q-219 0 -351 111.5t-132 306.5zM664 1540l219 244h153l123 -244h-129l-78 166h-4 l-143 -166h-141z" /> -<glyph unicode="Ü" horiz-adv-x="1476" d="M156 393q0 55 12 117l182 930h142l-183 -934q-10 -49 -10 -96q0 -143 90 -222t252 -79q186 0 317.5 107.5t167.5 293.5l183 930h143l-188 -948q-47 -240 -215 -378.5t-410 -138.5q-219 0 -351 111.5t-132 306.5zM715 1608l35 176h124l-32 -176h-127zM1024 1608l35 176 h127l-35 -176h-127z" /> -<glyph unicode="Ý" horiz-adv-x="1155" d="M176 1440h152l202 -522l58 -173h4q59 94 119 170l405 525h172l-649 -826l-121 -614h-141l123 618zM676 1540l190 244h172l-227 -244h-135z" /> -<glyph unicode="Þ" horiz-adv-x="1230" d="M90 0l283 1440h141l-51 -256h332q141 0 227 -49q168 -90 168 -304q0 -164 -86 -292.5t-221 -188.5q-94 -41 -211 -41h-377l-62 -309h-143zM317 436h340q94 0 168 33q98 43 157.5 135t59.5 221q0 109 -69.5 170.5t-194.5 61.5h-340z" /> -<glyph unicode="ß" horiz-adv-x="1175" d="M51 0l213 1104q33 166 167 263t290 97q154 0 243 -75.5t89 -192.5q0 -68 -33 -126t-78 -98t-91 -76t-79 -75t-33 -80q0 -43 49.5 -92t107.5 -90t107.5 -108.5t49.5 -141.5q0 -133 -111 -228t-258 -95q-88 0 -167 16t-114 33l-34 16l26 129q111 -70 281 -69q88 0 160.5 51 t72.5 145q0 57 -49 113.5t-108.5 95.5t-108.5 97.5t-49 119.5q0 70 49 133.5t107.5 104.5t107.5 98t49 117q0 61 -49 106t-139 45q-109 0 -202 -69.5t-116 -190.5l-211 -1077h-139z" /> -<glyph unicode="à" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268zM449 1440h151l96 -244h-118z" /> -<glyph unicode="á" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268zM569 1196l191 244h172l-227 -244h-136z" /> -<glyph unicode="â" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268zM385 1196l219 244h154l123 -244h-129l-78 166h-4l-144 -166h-141z" /> -<glyph unicode="ã" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268zM336 1202q45 240 217 240q45 0 79 -22.5t51 -51.5t42 -51.5t53 -22.5q78 0 105 142h110q-47 -240 -219 -240 q-55 0 -93 37t-67.5 72.5t-64.5 35.5q-41 0 -66.5 -43t-36.5 -96h-110z" /> -<glyph unicode="ä" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268zM436 1264l35 176h125l-33 -176h-127zM745 1264l35 176h127l-35 -176h-127z" /> -<glyph unicode="å" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268zM506 1300q0 68 52 116t120 48q66 0 103.5 -33.5t37.5 -95.5q0 -66 -53 -114t-118.5 -47.5t-103.5 34t-38 92.5 zM594 1303q0 -51 55 -52q35 0 58.5 24.5t23.5 59.5q0 23 -15.5 38.5t-39.5 15.5q-33 0 -57.5 -24.5t-24.5 -61.5z" /> -<glyph unicode="æ" horiz-adv-x="1781" d="M16 236q0 393 689 393h67q14 74 14 116q0 184 -217 185q-152 -2 -301 -99l-45 117q18 12 50 29.5t126.5 47.5t184.5 30q279 0 317 -199h4q160 199 412 199q184 0 280.5 -101.5t96.5 -273.5l-29 -166h-776q-8 -41 -8 -88q0 -158 81.5 -242t229.5 -84q84 0 168 32t127 63 l43 30l45 -114q-18 -14 -53 -37t-135.5 -61t-196.5 -38q-164 0 -276.5 76t-147.5 205h-4q-12 -29 -41 -67.5t-80 -91t-134 -87.5t-179 -35q-133 0 -222.5 69t-89.5 192zM160 252q0 -68 50 -113t146 -45q137 0 244 117t143 262l11 41h-121q-473 0 -473 -262zM918 629h628 q4 45 4 67q0 121 -66.5 181.5t-168.5 60.5q-131 0 -237.5 -81t-159.5 -228z" /> -<glyph unicode="ç" horiz-adv-x="1128" d="M72 414q0 272 191.5 456.5t441.5 184.5q115 0 208 -37t127 -74l37 -37l-84 -94q-10 12 -31.5 31.5t-95 51.5t-155.5 32q-193 0 -344.5 -145.5t-151.5 -356.5q0 -145 93 -235.5t243 -90.5q188 0 346 133l14 13l43 -117q-6 -6 -18 -16.5t-54 -37t-86 -47t-113 -37 t-138 -16.5h-10l-33 -88q49 -8 84 -42.5t35 -90.5q0 -86 -68 -130t-154 -44l-110 12l20 95q35 -10 82 -11q119 0 119 80q0 59 -104 60l-31 -2l71 170q-172 27 -273 141.5t-101 288.5z" /> -<glyph unicode="è" horiz-adv-x="1132" d="M70 410q0 258 172 451.5t426 193.5q186 0 281 -102.5t95 -270.5q0 -35 -8 -79t-16 -71l-6 -24h-791q-8 -41 -8 -88q0 -139 86 -229.5t244 -90.5q82 0 166 32t127 63l43 30l45 -114q-18 -14 -52 -37t-135.5 -61t-197.5 -38q-211 0 -341 120t-130 315zM250 623h645 q6 35 6 71q0 119 -64.5 181.5t-168.5 62.5q-133 0 -249 -84t-169 -231zM526 1440h152l96 -244h-119z" /> -<glyph unicode="é" horiz-adv-x="1132" d="M70 410q0 258 172 451.5t426 193.5q186 0 281 -102.5t95 -270.5q0 -35 -8 -79t-16 -71l-6 -24h-791q-8 -41 -8 -88q0 -139 86 -229.5t244 -90.5q82 0 166 32t127 63l43 30l45 -114q-18 -14 -52 -37t-135.5 -61t-197.5 -38q-211 0 -341 120t-130 315zM250 623h645 q6 35 6 71q0 119 -64.5 181.5t-168.5 62.5q-133 0 -249 -84t-169 -231zM645 1196l191 244h172l-228 -244h-135z" /> -<glyph unicode="ê" horiz-adv-x="1132" d="M70 410q0 258 172 451.5t426 193.5q186 0 281 -102.5t95 -270.5q0 -35 -8 -79t-16 -71l-6 -24h-791q-8 -41 -8 -88q0 -139 86 -229.5t244 -90.5q82 0 166 32t127 63l43 30l45 -114q-18 -14 -52 -37t-135.5 -61t-197.5 -38q-211 0 -341 120t-130 315zM250 623h645 q6 35 6 71q0 119 -64.5 181.5t-168.5 62.5q-133 0 -249 -84t-169 -231zM463 1196l219 244h154l122 -244h-129l-77 166h-4l-144 -166h-141z" /> -<glyph unicode="ë" horiz-adv-x="1132" d="M70 410q0 258 172 451.5t426 193.5q186 0 281 -102.5t95 -270.5q0 -35 -8 -79t-16 -71l-6 -24h-791q-8 -41 -8 -88q0 -139 86 -229.5t244 -90.5q82 0 166 32t127 63l43 30l45 -114q-18 -14 -52 -37t-135.5 -61t-197.5 -38q-211 0 -341 120t-130 315zM250 623h645 q6 35 6 71q0 119 -64.5 181.5t-168.5 62.5q-133 0 -249 -84t-169 -231zM514 1264l35 176h125l-33 -176h-127zM823 1264l35 176h127l-35 -176h-127z" /> -<glyph unicode="ì" horiz-adv-x="475" d="M51 0l199 1030h139l-199 -1030h-139zM162 1440h151l97 -244h-119z" /> -<glyph unicode="í" horiz-adv-x="475" d="M51 0l199 1030h139l-199 -1030h-139zM283 1196l190 244h172l-227 -244h-135z" /> -<glyph unicode="î" horiz-adv-x="475" d="M51 0l199 1030h139l-199 -1030h-139zM98 1196l219 244h154l123 -244h-129l-78 166h-4l-143 -166h-142z" /> -<glyph unicode="ï" horiz-adv-x="475" d="M51 0l199 1030h139l-199 -1030h-139zM152 1264l34 176h125l-32 -176h-127zM461 1264l35 176h127l-35 -176h-127z" /> -<glyph unicode="ð" horiz-adv-x="1208" d="M66 383q0 221 160.5 397t418.5 176q184 0 283 -108l8 -10h4q-35 203 -192 333l-394 -161l-8 100l309 127q-117 70 -274 113l57 108q211 -55 361 -162l303 127l10 -100l-229 -94q209 -199 209 -506q0 -115 -36 -239t-105.5 -240.5t-192.5 -192.5t-277 -76q-199 0 -307 117 t-108 291zM209 387q0 -123 70.5 -205t201.5 -82q190 0 319.5 163t129.5 333q0 109 -76 175.5t-207 66.5q-180 0 -309 -133.5t-129 -317.5z" /> -<glyph unicode="ñ" horiz-adv-x="1216" d="M49 0l201 1030h135l-27 -147l-26 -97h4q49 96 174 182.5t281 86.5q141 0 217.5 -67.5t76.5 -199.5q0 -55 -16 -137l-127 -651h-139l119 616q16 76 16 138q0 170 -176 170q-170 0 -307.5 -132.5t-173.5 -314.5l-93 -477h-139zM444 1202q45 240 217 240q45 0 79 -22.5 t51.5 -51.5t42 -51.5t53.5 -22.5q78 0 104 142h111q-47 -240 -219 -240q-55 0 -93 37t-68 72.5t-65 35.5q-41 0 -66.5 -43t-35.5 -96h-111z" /> -<glyph unicode="ò" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q209 0 340 -125t131 -320q0 -260 -194.5 -447.5t-437.5 -187.5q-209 0 -340 126t-131 325zM211 430q0 -145 91 -237.5t239 -92.5q186 0 336.5 148.5t150.5 355.5q0 143 -92 233.5t-238 90.5q-188 0 -337.5 -146.5t-149.5 -351.5z M559 1440h152l96 -244h-119z" /> -<glyph unicode="ó" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q209 0 340 -125t131 -320q0 -260 -194.5 -447.5t-437.5 -187.5q-209 0 -340 126t-131 325zM211 430q0 -145 91 -237.5t239 -92.5q186 0 336.5 148.5t150.5 355.5q0 143 -92 233.5t-238 90.5q-188 0 -337.5 -146.5t-149.5 -351.5z M680 1196l190 244h172l-227 -244h-135z" /> -<glyph unicode="ô" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q209 0 340 -125t131 -320q0 -260 -194.5 -447.5t-437.5 -187.5q-209 0 -340 126t-131 325zM211 430q0 -145 91 -237.5t239 -92.5q186 0 336.5 148.5t150.5 355.5q0 143 -92 233.5t-238 90.5q-188 0 -337.5 -146.5t-149.5 -351.5z M498 1196l219 244h153l123 -244h-129l-78 166h-4l-143 -166h-141z" /> -<glyph unicode="õ" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q209 0 340 -125t131 -320q0 -260 -194.5 -447.5t-437.5 -187.5q-209 0 -340 126t-131 325zM211 430q0 -145 91 -237.5t239 -92.5q186 0 336.5 148.5t150.5 355.5q0 143 -92 233.5t-238 90.5q-188 0 -337.5 -146.5t-149.5 -351.5z M446 1202q45 240 218 240q45 0 78.5 -22.5t51 -51.5t42 -51.5t53.5 -22.5q78 0 104 142h111q-47 -240 -219 -240q-55 0 -93 37t-68 72.5t-65 35.5q-41 0 -66.5 -43t-35.5 -96h-111z" /> -<glyph unicode="ö" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q209 0 340 -125t131 -320q0 -260 -194.5 -447.5t-437.5 -187.5q-209 0 -340 126t-131 325zM211 430q0 -145 91 -237.5t239 -92.5q186 0 336.5 148.5t150.5 355.5q0 143 -92 233.5t-238 90.5q-188 0 -337.5 -146.5t-149.5 -351.5z M549 1264l35 176h125l-33 -176h-127zM858 1264l35 176h127l-35 -176h-127z" /> -<glyph unicode="÷" horiz-adv-x="1316" d="M150 522v119h1003v-119h-1003zM573 125v151h154v-151h-154zM573 887v151h154v-151h-154z" /> -<glyph unicode="ø" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q162 0 283 -80l107 117l77 -68l-106 -117q111 -121 110 -297q0 -260 -194.5 -447.5t-437.5 -187.5q-154 0 -269 70l-104 -113l-78 66l100 111q-120 124 -120 317zM211 430q0 -129 72 -217l606 661q-84 53 -191 54 q-188 0 -337.5 -146.5t-149.5 -351.5zM362 145q78 -45 179 -45q186 0 336.5 148.5t150.5 355.5q0 117 -63 199z" /> -<glyph unicode="ù" horiz-adv-x="1206" d="M94 242q0 55 17 137l125 651h139l-119 -612q-14 -74 -14 -142q0 -82 40 -126t140 -44q166 0 299 137.5t168 313.5l92 473h139l-200 -1030h-138l29 147l27 97h-4q-53 -98 -173 -183.5t-278 -85.5q-127 0 -208 65t-81 202zM518 1440h152l96 -244h-119z" /> -<glyph unicode="ú" horiz-adv-x="1206" d="M94 242q0 55 17 137l125 651h139l-119 -612q-14 -74 -14 -142q0 -82 40 -126t140 -44q166 0 299 137.5t168 313.5l92 473h139l-200 -1030h-138l29 147l27 97h-4q-53 -98 -173 -183.5t-278 -85.5q-127 0 -208 65t-81 202zM639 1196l190 244h172l-227 -244h-135z" /> -<glyph unicode="û" horiz-adv-x="1206" d="M94 242q0 55 17 137l125 651h139l-119 -612q-14 -74 -14 -142q0 -82 40 -126t140 -44q166 0 299 137.5t168 313.5l92 473h139l-200 -1030h-138l29 147l27 97h-4q-53 -98 -173 -183.5t-278 -85.5q-127 0 -208 65t-81 202zM455 1196l219 244h153l123 -244h-129l-78 166h-4 l-143 -166h-141z" /> -<glyph unicode="ü" horiz-adv-x="1206" d="M94 242q0 55 17 137l125 651h139l-119 -612q-14 -74 -14 -142q0 -82 40 -126t140 -44q166 0 299 137.5t168 313.5l92 473h139l-200 -1030h-138l29 147l27 97h-4q-53 -98 -173 -183.5t-278 -85.5q-127 0 -208 65t-81 202zM508 1264l35 176h125l-33 -176h-127zM817 1264 l35 176h127l-35 -176h-127z" /> -<glyph unicode="ý" horiz-adv-x="1021" d="M-184 -369l69 105q43 -41 115 -41q125 0 229 166l93 149l-234 1020h145l160 -770l19 -108h2q29 57 57 106l447 772h157l-753 -1249q-125 -211 -318 -211q-114 0 -188 61zM547 1196l190 244h172l-227 -244h-135z" /> -<glyph unicode="þ" horiz-adv-x="1212" d="M-29 -410l359 1850h137l-96 -504l-23 -86h4q55 86 151.5 145.5t219.5 59.5q180 0 280.5 -110.5t100.5 -303.5q0 -285 -168 -475.5t-389 -190.5q-115 0 -202 53.5t-122 153.5h-4q-2 -45 -12 -98l-96 -494h-140zM276 397q0 -129 66 -213t193 -84q162 0 292.5 147.5 t130.5 383.5q0 139 -68.5 218t-189.5 79q-180 0 -302 -165t-122 -366z" /> -<glyph unicode="ÿ" horiz-adv-x="1021" d="M-184 -369l69 105q43 -41 115 -41q125 0 229 166l93 149l-234 1020h145l160 -770l19 -108h2q29 57 57 106l447 772h157l-753 -1249q-125 -211 -318 -211q-114 0 -188 61zM416 1264l35 176h124l-32 -176h-127zM725 1264l35 176h127l-35 -176h-127z" /> -<glyph unicode="Œ" horiz-adv-x="1943" d="M121 588q0 231 118.5 433t317.5 320.5t422 118.5q51 0 144.5 -10t127.5 -10h711l-25 -127h-667l-103 -525h547l-26 -126h-547l-103 -535h705l-25 -127h-723q-29 0 -116.5 -10t-130.5 -10q-285 0 -456 170t-171 438zM266 582q0 -209 130 -340t354 -131q35 0 71.5 4t55.5 8 l20 4l229 1186q-63 16 -141 16q-293 0 -506 -221t-213 -526z" /> -<glyph unicode="œ" horiz-adv-x="2074" d="M68 426q0 258 192.5 443.5t439.5 185.5q156 0 267.5 -76t158.5 -203h4q80 127 206 203t276 76q184 0 279.5 -102.5t95.5 -270.5q0 -35 -8.5 -79t-16.5 -71l-6 -24h-789q-8 -41 -8 -88q0 -141 87 -230.5t241 -89.5q82 0 166 32t127 63l43 30l45 -114q-18 -14 -52 -37 t-135.5 -61t-197.5 -38q-162 0 -275.5 74t-156.5 207h-4q-88 -129 -224.5 -205t-281.5 -76q-209 0 -341 126t-132 325zM211 430q0 -145 92 -237.5t238 -92.5q186 0 337.5 148.5t151.5 355.5q0 143 -92 233.5t-238 90.5q-190 0 -339.5 -146.5t-149.5 -351.5zM1194 623h643 q6 35 6 71q0 119 -63.5 181.5t-169.5 62.5q-133 0 -248 -84t-168 -231z" /> -<glyph unicode="Ÿ" horiz-adv-x="1155" d="M176 1440h152l202 -522l58 -173h4q59 94 119 170l405 525h172l-649 -826l-121 -614h-141l123 618zM545 1608l35 176h125l-33 -176h-127zM854 1608l35 176h127l-35 -176h-127z" /> -<glyph unicode="ˆ" horiz-adv-x="1032" d="M125 1540l219 244h154l123 -244h-129l-78 166h-4l-144 -166h-141z" /> -<glyph unicode="˜" horiz-adv-x="1032" d="M74 1546q45 240 217 240q45 0 78.5 -22.5t51 -51.5t42 -51.5t53.5 -22.5q78 0 105 142h110q-47 -240 -219 -240q-55 0 -93 37t-67.5 73t-64.5 36q-41 0 -66.5 -43.5t-36.5 -96.5h-110z" /> -<glyph unicode="–" horiz-adv-x="1441" d="M193 522l22 119h1022l-20 -119h-1024z" /> -<glyph unicode="—" horiz-adv-x="1851" d="M193 522l22 119h1432l-21 -119h-1433z" /> -<glyph unicode="‘" horiz-adv-x="440" d="M205 1108l182 350h117l-146 -350h-153z" /> -<glyph unicode="’" horiz-adv-x="432" d="M211 1108l147 350h152l-182 -350h-117z" /> -<glyph unicode="‚" horiz-adv-x="495" d="M-43 -184l145 352h154l-182 -352h-117z" /> -<glyph unicode="“" horiz-adv-x="684" d="M205 1108l182 350h117l-146 -350h-153zM451 1108l182 350h117l-148 -350h-151z" /> -<glyph unicode="”" horiz-adv-x="677" d="M211 1108l147 350h152l-182 -350h-117zM457 1108l145 350h154l-183 -350h-116z" /> -<glyph unicode="„" horiz-adv-x="741" d="M-43 -184l147 352h152l-182 -352h-117zM203 -184l145 352h154l-183 -352h-116z" /> -<glyph unicode="•" horiz-adv-x="823" d="M115 596q0 121 86 207t206.5 86t205.5 -86t85 -207t-85 -207t-205.5 -86t-206.5 86t-86 207z" /> -<glyph unicode="…" horiz-adv-x="1458" d="M51 0l33 170h164l-33 -170h-164zM532 0l33 170h164l-33 -170h-164zM1014 0l33 170h163l-32 -170h-164z" /> -<glyph unicode="‹" horiz-adv-x="688" d="M90 582l393 417h160l-407 -428l258 -413h-140z" /> -<glyph unicode="›" horiz-adv-x="686" d="M31 158l407 428l-258 413h139l265 -424l-394 -417h-159z" /> -<glyph unicode="€" horiz-adv-x="1200" d="M68 545l18 104h113q6 84 30 166h-108l18 105h125q102 240 316.5 392t459.5 152l213 -28l-57 -127q-72 20 -158 20q-193 0 -360.5 -113.5t-255.5 -295.5h627l-41 -105h-629q-27 -92 -33 -166h598l-39 -104h-555q12 -190 129 -312t326 -122q45 0 92 7t72 13l24 8l6 -135 q-88 -29 -200 -29q-262 0 -426 158t-174 412h-131z" /> -<glyph unicode="™" horiz-adv-x="2027" d="M184 1333v107h758v-107h-321v-790h-117v790h-320zM1016 543l71 897h107l236 -514q18 -39 28 -84h4q10 45 29 84l235 514h107l70 -897h-113l-51 608l2 59h-4l-230 -499h-94l-229 499h-4l2 -59l-52 -608h-114z" /> -<glyph unicode="" horiz-adv-x="1030" d="M0 1030h1030v-1030h-1030v1030z" /> -<glyph unicode="fi" horiz-adv-x="1136" d="M102 0l179 911h-129l22 119h129l8 43q23 119 75 200t118.5 115.5t119 48t103.5 13.5l76 -4l-27 -125q-18 4 -47 4t-56.5 -4t-63.5 -20.5t-65.5 -43t-56 -75.5t-38.5 -115l-9 -37h611l-201 -1030h-139l176 911h-467l-178 -911h-140zM950 1266l37 174h150l-35 -174h-152z " /> -<glyph unicode="fl" horiz-adv-x="1167" d="M102 0l177 903h-129l22 119h129l10 53q23 117 75 198t118.5 115.5t119 48t103.5 13.5l76 -4l-27 -125q-18 4 -47 4t-56.5 -4t-63.5 -20.5t-65.5 -43t-56 -75.5t-38.5 -115l-11 -45h264l-22 -119h-262l-176 -903h-140zM741 182q0 35 9 74l231 1184h139l-227 -1166 q-6 -33 -6 -63q0 -41 16.5 -62.5t34.5 -25.5t45 -4l31 2l-27 -125q-23 -4 -47 -4q-78 0 -138.5 42t-60.5 148z" /> -<glyph unicode="ffi" horiz-adv-x="1798" d="M102 0l179 911h-129l22 119h129l8 43q23 119 75 200t118.5 115.5t119 48t103.5 13.5l76 -4l-27 -125q-18 4 -47 4t-56.5 -4t-63.5 -20.5t-65.5 -43t-56 -75.5t-38.5 -115l-9 -37h525l8 43q23 119 75 200t118.5 115.5t118.5 48t104 13.5l75 -4l-26 -125q-18 4 -47 4 t-56.5 -4t-63.5 -20.5t-65.5 -43t-56.5 -75.5t-39 -115l-8 -37h610l-201 -1030h-139l176 911h-467l-178 -911h-139l178 911h-522l-178 -911h-140zM1612 1266l37 174h149l-35 -174h-151z" /> -<glyph unicode="ffl" horiz-adv-x="1828" d="M102 0l179 911h-129l22 119h129l8 43q23 119 75 200t118.5 115.5t119 48t103.5 13.5l76 -4l-27 -125q-18 4 -47 4t-56.5 -4t-63.5 -20.5t-65.5 -43t-56 -75.5t-38.5 -115l-9 -37h523l8 43q23 119 75 200t118.5 115.5t118.5 47.5q51 14 103 14l76 -4l-26 -125q-18 4 -47 4 t-56.5 -4t-63.5 -20.5t-65.5 -43t-56.5 -75.5t-39 -115l-8 -37h264l-23 -119h-262l-178 -911h-139l178 911h-520l-178 -911h-140zM1403 182q0 35 8 74l232 1184h139l-228 -1166q-6 -33 -6 -63q0 -41 16.5 -62.5t35 -25.5t45.5 -4l30 2l-26 -125q-23 -4 -47 -4 q-78 0 -138.5 42t-60.5 148z" /> -</font> -</defs></svg>
\ No newline at end of file diff --git a/phonegap/www/fonts/MuseoSans_300_Italic-webfont.ttf b/phonegap/www/fonts/MuseoSans_300_Italic-webfont.ttf Binary files differdeleted file mode 100755 index 58241a2e9..000000000 --- a/phonegap/www/fonts/MuseoSans_300_Italic-webfont.ttf +++ /dev/null diff --git a/phonegap/www/fonts/MuseoSans_300_Italic-webfont.woff b/phonegap/www/fonts/MuseoSans_300_Italic-webfont.woff Binary files differdeleted file mode 100755 index 95c94194f..000000000 --- a/phonegap/www/fonts/MuseoSans_300_Italic-webfont.woff +++ /dev/null diff --git a/phonegap/www/fonts/MuseoSans_500-webfont.eot b/phonegap/www/fonts/MuseoSans_500-webfont.eot Binary files differdeleted file mode 100755 index 2731833c7..000000000 --- a/phonegap/www/fonts/MuseoSans_500-webfont.eot +++ /dev/null diff --git a/phonegap/www/fonts/MuseoSans_500-webfont.svg b/phonegap/www/fonts/MuseoSans_500-webfont.svg deleted file mode 100755 index dd240b802..000000000 --- a/phonegap/www/fonts/MuseoSans_500-webfont.svg +++ /dev/null @@ -1,227 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > -<svg xmlns="http://www.w3.org/2000/svg"> -<metadata> -This is a custom SVG webfont generated by Fontspring. -</metadata> -<defs> -<font id="MuseoSans500" horiz-adv-x="1681" > -<font-face units-per-em="2048" ascent="1536" descent="-512" /> -<missing-glyph horiz-adv-x="526" /> -<glyph unicode=" " horiz-adv-x="526" /> -<glyph unicode="	" horiz-adv-x="526" /> -<glyph unicode=" " horiz-adv-x="526" /> -<glyph unicode="!" horiz-adv-x="651" d="M223 1446h205l-12 -1049h-178zM225 0v199h203v-199h-203z" /> -<glyph unicode=""" horiz-adv-x="700" d="M129 1085v385h156v-385h-156zM416 1085v385h155v-385h-155z" /> -<glyph unicode="#" horiz-adv-x="1470" d="M90 391l25 152h268l59 344h-264l25 149h266l72 410h166l-72 -410h317l72 410h166l-72 -410h268l-26 -149h-266l-62 -344h266l-26 -152h-264l-70 -391h-166l68 391h-318l-67 -391h-166l67 391h-266zM549 543h317l62 344h-318z" /> -<glyph unicode="$" horiz-adv-x="1159" d="M111 166l114 153q6 -6 17.5 -16t50.5 -37.5t79 -48t101.5 -37t120.5 -16.5q106 0 178 57.5t72 155.5q0 82 -73 142.5t-177.5 104.5t-208.5 95t-177 139t-73 209q0 150 105.5 261.5t275.5 135.5v193h146v-191q102 -8 189 -42.5t124 -67.5l37 -31l-92 -168q-14 14 -42 34.5 t-111 55.5t-165 35q-115 0 -188.5 -61.5t-73.5 -149.5q0 -57 39 -103t101.5 -79t138 -63.5t151.5 -68.5t138.5 -85t101.5 -121t39 -168q0 -158 -104.5 -270.5t-282.5 -132.5v-189h-146v189q-231 23 -389 170z" /> -<glyph unicode="%" horiz-adv-x="1558" d="M98 1167q0 125 90.5 214t219.5 89t220 -89t91 -214t-91 -214t-220 -89t-219.5 88t-90.5 215zM129 0l1106 1446h192l-1105 -1446h-193zM256 1167q0 -66 44 -108.5t107.5 -42.5t107.5 43t44 108q0 63 -44 108.5t-107.5 45.5t-107.5 -45.5t-44 -108.5zM840 279q0 125 91 214 t220 89q127 0 219 -89.5t92 -214t-92 -214t-219 -89.5q-131 0 -221 88.5t-90 215.5zM999 279q0 -66 43 -109t109 -43q63 0 107.5 44t44.5 107.5t-44.5 108.5t-108 45t-107.5 -45t-44 -108z" /> -<glyph unicode="&" horiz-adv-x="1400" d="M111 406q0 123 68.5 227t185.5 143v4q-8 2 -20.5 8.5t-45.5 31t-58.5 57t-46 92t-20.5 129.5q0 176 124 274t320 98q35 0 79 -6t71 -10l27 -6l-52 -162q-59 12 -108 12q-111 0 -183.5 -59t-72.5 -162q0 -39 11 -74.5t38 -72.5t82 -58.5t135 -21.5h268v197h199v-197h193 v-176h-193v-193q0 -240 -133 -373t-367 -133q-223 0 -362 123.5t-139 307.5zM317 416q0 -106 82 -180t213 -74q143 0 222 81t79 246v185h-276q-154 0 -237 -67.5t-83 -190.5z" /> -<glyph unicode="'" horiz-adv-x="415" d="M129 1085v385h158v-385h-158z" /> -<glyph unicode="(" horiz-adv-x="618" d="M150 696q0 430 237 809h174q-231 -387 -231 -811q0 -469 231 -889h-174q-237 395 -237 891z" /> -<glyph unicode=")" horiz-adv-x="618" d="M57 -195q231 420 232 889q0 424 -232 811h174q238 -379 238 -809q0 -496 -238 -891h-174z" /> -<glyph unicode="*" horiz-adv-x="956" d="M74 1085l53 172l272 -102l-14 291h186l-16 -291l274 102l56 -172l-281 -75v-4l180 -226l-145 -106l-158 241h-4l-160 -241l-147 106l182 226v4z" /> -<glyph unicode="+" horiz-adv-x="1398" d="M158 504v160h458v503h168v-503h457v-160h-457v-504h-168v504h-458z" /> -<glyph unicode="," horiz-adv-x="522" d="M55 -207l127 422h203l-172 -422h-158z" /> -<glyph unicode="-" horiz-adv-x="966" d="M184 496v176h598v-176h-598z" /> -<glyph unicode="." horiz-adv-x="520" d="M156 0v211h209v-211h-209z" /> -<glyph unicode="/" horiz-adv-x="827" d="M74 -86l520 1610h176l-520 -1610h-176z" /> -<glyph unicode="0" horiz-adv-x="1280" d="M129 725q0 745 510 745q512 0 512 -745q0 -750 -512 -750q-510 0 -510 750zM336 725q0 -563 303 -563q305 0 305 563q0 559 -305 559q-303 0 -303 -559z" /> -<glyph unicode="1" horiz-adv-x="1001" d="M104 1110l347 336h180v-1270h315v-176h-831v176h319v934l2 90h-4q-16 -33 -70 -84l-135 -133z" /> -<glyph unicode="2" horiz-adv-x="1171" d="M113 111q0 121 52 224t131 170.5t171 135.5t171 122t131 127t52 150q0 106 -72.5 173t-187.5 67q-53 0 -103 -19.5t-83 -46t-58.5 -53t-37.5 -47.5l-11 -18l-149 100q6 10 16 29.5t50 66.5t88.5 83t129 65.5t172.5 29.5q201 0 329 -114.5t128 -300.5q0 -96 -38 -180 t-99 -144.5t-135 -116t-147.5 -104.5t-135 -98.5t-100.5 -109.5t-39 -126h717v-176h-932q-10 66 -10 111z" /> -<glyph unicode="3" horiz-adv-x="1161" d="M82 172l111 154q16 -18 44.5 -44t121 -70t184.5 -44q123 0 209 74.5t86 189.5q0 127 -96.5 196.5t-239.5 69.5h-101l-47 109l316 371l90 94v4q-43 -6 -123 -6h-490v176h865v-129l-394 -453q168 -18 296 -124.5t128 -299t-137 -329t-354 -136.5q-82 0 -161 20.5t-132 49.5 t-95 57.5t-61 49.5z" /> -<glyph unicode="4" horiz-adv-x="1241" d="M63 387v127l668 932h232v-887h196v-172h-196v-387h-199v387h-701zM287 559h477v526l8 144h-4q-33 -68 -72 -119l-409 -547v-4z" /> -<glyph unicode="5" horiz-adv-x="1153" d="M98 176l113 148q4 -6 13 -16.5t40 -38t64.5 -48t88 -37t111.5 -16.5q131 0 224.5 82t93.5 211t-94.5 213t-235.5 84q-63 0 -123.5 -18.5t-89.5 -34.5l-31 -19l-116 43l71 717h729v-176h-553l-34 -305l-11 -76h4q80 45 187 45q223 0 363.5 -136t140.5 -335 q0 -209 -146.5 -348.5t-365.5 -139.5q-248 0 -414 168z" /> -<glyph unicode="6" horiz-adv-x="1226" d="M121 657q0 143 40 283.5t116.5 261.5t204.5 194.5t290 73.5q76 0 145.5 -14t102.5 -31l33 -14l-66 -174q-92 47 -207 47q-186 0 -296.5 -142.5t-137.5 -342.5h4q45 61 134 99t186 38q203 0 329.5 -136t126.5 -341q0 -213 -131 -348.5t-333 -135.5q-236 0 -388.5 188.5 t-152.5 493.5zM334 561q0 -147 96 -273t229 -126q121 0 194 84t73 213q0 135 -81 220t-216 85q-121 0 -208 -61.5t-87 -141.5z" /> -<glyph unicode="7" horiz-adv-x="1083" d="M72 1270v176h966v-139l-653 -1307h-209l563 1139q18 37 39 69.5t33 48.5l12 15v4q-33 -6 -106 -6h-645z" /> -<glyph unicode="8" horiz-adv-x="1243" d="M117 418q0 76 28.5 146.5t74.5 120.5t74 74.5t54 43.5q-162 117 -162 289q0 156 117 267t334 111q203 0 329 -105t126 -282q0 -186 -172 -376q197 -121 196 -308q0 -174 -138 -299t-357.5 -125t-361.5 124t-142 319zM324 430q0 -121 88 -196.5t209 -75.5 q117 0 201.5 69.5t84.5 178.5q0 37 -18.5 70.5t-43 57t-71.5 51t-83 44t-97.5 44t-95.5 44.5q-174 -121 -174 -287zM387 1087q0 -29 10.5 -55t21.5 -46.5t39.5 -43t47 -35t59.5 -33t61.5 -29.5t71 -29.5t68.5 -29.5q127 127 127 285q0 98 -71.5 157.5t-186.5 59.5 q-117 0 -182.5 -57.5t-65.5 -143.5z" /> -<glyph unicode="9" horiz-adv-x="1226" d="M100 987q0 213 131 348t334 135q233 0 387 -188t154 -494q0 -143 -40 -283t-117 -261t-205 -195t-289 -74q-76 0 -146.5 14.5t-103.5 30.5l-31 15l66 176q92 -49 206 -49q186 0 297 142t138 343h-4q-43 -61 -133.5 -98t-186.5 -37q-203 0 -330 135t-127 340zM301 987 q0 -135 80 -220t217 -85q121 0 208 62.5t87 140.5q0 147 -96.5 273t-229.5 126q-123 0 -194.5 -84t-71.5 -213z" /> -<glyph unicode=":" horiz-adv-x="598" d="M195 0v211h208v-211h-208zM195 825v211h208v-211h-208z" /> -<glyph unicode=";" horiz-adv-x="600" d="M96 -207l109 422h205l-154 -422h-160zM207 825v211h209v-211h-209z" /> -<glyph unicode="<" horiz-adv-x="1142" d="M68 516v135l954 426v-182l-733 -309v-4l733 -310v-182z" /> -<glyph unicode="=" horiz-adv-x="1370" d="M197 309v160h977v-160h-977zM197 696v160h977v-160h-977z" /> -<glyph unicode=">" horiz-adv-x="1142" d="M121 90v182l731 310v4l-731 309v182l954 -426v-135z" /> -<glyph unicode="?" horiz-adv-x="1001" d="M66 1343q14 14 42.5 36t123 59t192.5 37q178 0 303 -104.5t125 -270.5q0 -94 -37 -169t-90 -125t-107.5 -96t-91.5 -103.5t-37 -125.5v-84h-194v97q0 86 36 156.5t87 119.5t102 94t87 101.5t36 119.5q0 86 -66.5 144.5t-166.5 58.5q-57 0 -115.5 -21.5t-89.5 -41.5 l-29 -23zM291 0v199h203v-199h-203z" /> -<glyph unicode="@" d="M121 493.5q0 317.5 217 537.5t530 220q276 0 404.5 -117.5t128.5 -297.5v-580h147v-150h-559q-186 0 -305 114t-119 274q0 158 118 270.5t306 112.5h221q-4 92 -91 151t-240 59q-236 0 -398 -175t-162 -418q0 -248 163 -418t419 -170v-162q-340 0 -560 216t-220 533.5z M766 496q0 -100 67.5 -170t170.5 -70h206v483h-202q-106 0 -174 -70.5t-68 -172.5z" /> -<glyph unicode="A" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM422 584h438l-160 458l-55 205h-4q-33 -131 -57 -205z" /> -<glyph unicode="B" horiz-adv-x="1298" d="M197 0v1446h505q186 0 303 -98.5t117 -270.5q0 -104 -48 -186t-132 -125v-4q111 -33 174.5 -129t63.5 -221q0 -197 -132.5 -304.5t-332.5 -107.5h-518zM399 176h326q115 0 181.5 66.5t66.5 179.5q0 111 -68.5 179.5t-181.5 68.5h-324v-494zM399 838h303q96 0 154.5 61.5 t58.5 157.5t-57 154.5t-160 58.5h-299v-432z" /> -<glyph unicode="C" horiz-adv-x="1478" d="M98 731q0 315 210 527t526 212q98 0 188 -19t148.5 -47t103.5 -56.5t65 -49.5l21 -18l-100 -152q-18 18 -53.5 44t-145 70t-219.5 44q-238 0 -386.5 -158.5t-148.5 -394.5q0 -238 150.5 -404.5t386.5 -166.5q121 0 232.5 47t162.5 94l51 47l109 -145q-8 -10 -23.5 -25.5 t-70 -54.5t-115 -69.5t-155.5 -55.5t-197 -25q-322 0 -531 217t-209 539z" /> -<glyph unicode="D" horiz-adv-x="1515" d="M197 0v1446h479q336 0 534.5 -191.5t198.5 -529.5q0 -340 -198.5 -532.5t-534.5 -192.5h-479zM399 176h263q248 0 393 143.5t145 405.5q0 260 -145.5 402.5t-392.5 142.5h-263v-1094z" /> -<glyph unicode="E" horiz-adv-x="1173" d="M197 0v1446h839v-176h-637v-453h519v-176h-519v-465h672v-176h-874z" /> -<glyph unicode="F" horiz-adv-x="1067" d="M197 0v1446h796v-176h-594v-475h506v-177h-506v-618h-202z" /> -<glyph unicode="G" horiz-adv-x="1556" d="M100 725q0 315 211 530t527 215q96 0 186 -18t149.5 -43t104.5 -50.5t65 -43.5l21 -19l-102 -151q-18 16 -52 39.5t-140.5 62.5t-215.5 39q-248 0 -396.5 -158.5t-148.5 -398.5q0 -250 151.5 -408.5t381.5 -158.5q111 0 213 45t149 90l47 45v209h-235v176h420v-727h-179 v90l3 62h-5l-18 -19q-12 -12 -55 -43t-90.5 -53.5t-124 -42t-156.5 -19.5q-297 0 -504 212t-207 538z" /> -<glyph unicode="H" horiz-adv-x="1548" d="M197 0v1446h202v-635h750v635h203v-1446h-203v635h-750v-635h-202z" /> -<glyph unicode="I" horiz-adv-x="595" d="M197 0v1446h202v-1446h-202z" /> -<glyph unicode="J" horiz-adv-x="1099" d="M61 487h201v-61q0 -137 66.5 -200.5t163 -63.5t161 61.5t64.5 194.5v852h-365v176h568v-1030q0 -219 -127 -330t-303.5 -111t-302.5 112t-126 329v71z" /> -<glyph unicode="K" horiz-adv-x="1275" d="M197 0v1446h202v-608h215l365 608h223l-420 -686v-4l447 -756h-230l-385 664h-215v-664h-202z" /> -<glyph unicode="L" horiz-adv-x="1083" d="M197 0v1446h202v-1270h648v-176h-850z" /> -<glyph unicode="M" horiz-adv-x="1773" d="M152 0l116 1446h213l332 -782l72 -195h4q39 115 72 195l331 782h213l117 -1446h-201l-71 911l-2 213h-5q-43 -133 -77 -213l-289 -651h-180l-287 651q-33 78 -78 217h-4q2 -129 -4 -217l-70 -911h-202z" /> -<glyph unicode="N" horiz-adv-x="1550" d="M197 0v1446h200l643 -940q25 -35 54.5 -87t48.5 -87l18 -35h4q-14 129 -14 209v940h203v-1446h-199l-645 938q-53 80 -121 211h-4q14 -129 14 -211v-938h-202z" /> -<glyph unicode="O" d="M98 733q0 311 215 524t528.5 213t527.5 -213t214 -524q0 -319 -214 -538.5t-527.5 -219.5t-528.5 219.5t-215 538.5zM307 733q0 -242 155.5 -406.5t379 -164.5t378 165t154.5 406q0 236 -154.5 394.5t-378 158.5t-379 -158.5t-155.5 -394.5z" /> -<glyph unicode="P" horiz-adv-x="1243" d="M197 0v1446h528q201 0 328 -124t127 -329t-128 -331.5t-327 -126.5h-326v-535h-202zM399 711h293q131 0 206 75.5t75 206.5q0 129 -75 203t-204 74h-295v-559z" /> -<glyph unicode="Q" horiz-adv-x="1705" d="M100 731q0 313 214 526t528 213q315 0 529 -213t214 -526q0 -270 -170 -477l172 -164l-119 -127l-168 168q-195 -156 -458 -156q-313 0 -527.5 219.5t-214.5 536.5zM309 731q0 -242 153.5 -405.5t379.5 -163.5q180 0 313 106l-170 166l119 127l166 -168q106 147 106 338 q0 238 -153.5 396.5t-380.5 158.5q-225 0 -379 -158.5t-154 -396.5z" /> -<glyph unicode="R" horiz-adv-x="1312" d="M197 0v1446h442q182 0 270 -33q113 -41 178.5 -145.5t65.5 -245.5q0 -139 -70.5 -245.5t-189.5 -145.5v-4q16 -18 43 -66l307 -561h-229l-305 575h-310v-575h-202zM399 752h291q119 0 187.5 70.5t68.5 191.5q0 160 -115 223q-61 33 -198 33h-234v-518z" /> -<glyph unicode="S" horiz-adv-x="1118" d="M86 166l115 153q6 -6 17 -16t50 -37.5t79 -48t101.5 -37t120.5 -16.5q106 0 178 57.5t72 155.5q0 63 -39 112.5t-100.5 84t-136 66.5t-149.5 68.5t-136 82t-100 116t-39 160.5q0 170 132 286.5t335 116.5q119 0 221 -36.5t145 -73.5l43 -35l-92 -168q-14 14 -41.5 34.5 t-110.5 55.5t-165 35q-113 0 -187.5 -61.5t-74.5 -149.5q0 -82 71.5 -139.5t175 -98t207 -90t175 -140.5t71.5 -220q0 -174 -125 -291t-334 -117q-86 0 -167 19.5t-135 47.5t-96 56.5t-61 48.5z" /> -<glyph unicode="T" horiz-adv-x="1214" d="M10 1270v176h1194v-176h-495v-1270h-203v1270h-496z" /> -<glyph unicode="U" horiz-adv-x="1490" d="M176 512v934h203v-934q0 -164 98 -257t266 -93q170 0 269.5 93t99.5 261v930h203v-934q0 -240 -158 -388.5t-411.5 -148.5t-411.5 148.5t-158 388.5z" /> -<glyph unicode="V" horiz-adv-x="1294" d="M12 1446h219l359 -1022l55 -199h4q29 121 56 199l362 1022h215l-532 -1446h-203z" /> -<glyph unicode="W" horiz-adv-x="1941" d="M68 1446h208l256 -1061q18 -78 27 -154h4q10 74 31 154l283 1061h180l282 -1061l31 -154h4q6 76 27 154l266 1061h209l-379 -1446h-235l-250 938q-25 92 -43 205h-4q-18 -113 -43 -205l-250 -938h-236z" /> -<glyph unicode="X" horiz-adv-x="1253" d="M45 0l457 745l-428 701h233l228 -391l92 -172h4q41 92 88 172l227 391h234l-428 -701l456 -745h-229l-262 444l-92 166h-4q-39 -86 -86 -166l-263 -444h-227z" /> -<glyph unicode="Y" horiz-adv-x="1204" d="M16 1446h230l268 -475l88 -183h4q43 100 88 183l264 475h230l-483 -834v-612h-203v612z" /> -<glyph unicode="Z" horiz-adv-x="1243" d="M84 0v135l696 1004q25 37 50.5 69.5t39.5 48.5l15 15v4q-39 -6 -109 -6h-655v176h1016v-133l-697 -1006q-25 -35 -51.5 -67.5t-40.5 -46.5l-12 -17v-4q39 4 108 4h701v-176h-1061z" /> -<glyph unicode="[" horiz-adv-x="616" d="M207 -195v1700h338v-149h-164v-1399h164v-152h-338z" /> -<glyph unicode="\" horiz-adv-x="827" d="M57 1524h176l521 -1610h-176z" /> -<glyph unicode="]" horiz-adv-x="618" d="M72 -43h166v1399h-166v149h340v-1700h-340v152z" /> -<glyph unicode="^" horiz-adv-x="1255" d="M141 506l410 940h129l407 -940h-178l-295 721l-292 -721h-181z" /> -<glyph unicode="_" horiz-adv-x="1216" d="M57 0h1102v-160h-1102v160z" /> -<glyph unicode="`" horiz-adv-x="1021" d="M330 1806h213l149 -260h-168z" /> -<glyph unicode="a" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197z" /> -<glyph unicode="b" horiz-adv-x="1228" d="M156 0v1446h198v-473l-4 -88h4q4 6 11.5 18t36 43t62.5 53.5t94 42t128 19.5q207 0 331 -149.5t124 -393.5t-132 -393.5t-339 -149.5q-66 0 -123.5 18.5t-92 45.5t-61 52.5t-37.5 43.5l-12 19h-4q4 -33 4 -78v-76h-188zM348 514q0 -150 77 -259.5t216 -109.5 q127 0 213 99.5t86 271.5q0 168 -81 269.5t-212 101.5q-127 0 -213 -93.5t-86 -279.5z" /> -<glyph unicode="c" horiz-adv-x="1120" d="M82 518q0 231 156.5 387t398.5 156q115 0 212 -38t138 -77l39 -37l-94 -139q-12 12 -36 32.5t-98.5 53.5t-152.5 33q-156 0 -258 -104.5t-102 -264.5t103.5 -266.5t262.5 -106.5q86 0 166 35t117 70l37 35l80 -146l-18 -17q-11 -11 -50 -40t-84 -50.5t-115.5 -40 t-146.5 -18.5q-244 0 -399.5 153.5t-155.5 389.5z" /> -<glyph unicode="d" horiz-adv-x="1230" d="M88 518q0 246 131 394.5t338 148.5q68 0 125 -16.5t91 -41t59.5 -49t35.5 -41.5l9 -16h4q-4 31 -4 70v479h198v-1446h-188v98l2 70h-4q-4 -8 -11.5 -20.5t-35 -46t-63.5 -59.5t-97.5 -46.5t-132.5 -20.5q-209 0 -333 149.5t-124 393.5zM291 518q0 -168 81 -269.5 t212 -101.5q127 0 213 93.5t86 279.5q0 150 -77 259.5t-216 109.5q-127 0 -213 -99.5t-86 -271.5z" /> -<glyph unicode="e" horiz-adv-x="1136" d="M84 518q0 244 146.5 393.5t371.5 149.5q211 0 330 -137.5t119 -348.5l-7 -86h-755q8 -164 109.5 -253t246.5 -89q164 0 299 115l8 6l82 -145q-16 -16 -49 -41t-137.5 -66t-214.5 -41q-242 0 -395.5 155t-153.5 388zM295 639h553q-4 129 -75 196.5t-175 67.5 q-117 0 -200 -69.5t-103 -194.5z" /> -<glyph unicode="f" horiz-adv-x="688" d="M82 862v160h129v49q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5t-59 -67.5t-22.5 -115v-45h245v-160h-245v-862h-197v862h-129z" /> -<glyph unicode="g" horiz-adv-x="1214" d="M88 542.5q0 229.5 121 374t332 144.5q213 0 311 -131l14 -23h4q-2 14 -2 33v96h191v-993q0 -123 -44 -217t-120 -148.5t-166 -81t-192 -26.5q-186 0 -355 86l66 156q129 -70 284 -70q147 0 237.5 70.5t90.5 220.5v76l2 65h-4q-96 -162 -307 -162t-337 150.5t-126 380z M289 547q0 -164 81 -263.5t220 -99.5q121 0 197.5 84t76.5 273q0 348 -293 348q-133 0 -207.5 -91t-74.5 -251z" /> -<glyph unicode="h" horiz-adv-x="1234" d="M156 1446h198v-531l-4 -86h4q41 90 141.5 161t241.5 71q356 0 357 -397v-664h-199v618q0 125 -41 193t-155.5 68t-205 -72t-122.5 -184q-16 -55 -17 -138v-485h-198v1446z" /> -<glyph unicode="i" horiz-adv-x="509" d="M154 1243v203h200v-203h-200zM156 0v1036h198v-1036h-198z" /> -<glyph unicode="j" horiz-adv-x="507" d="M-113 -248q18 -2 45 -2q35 0 68 8.5t71 28.5t61.5 69.5t23.5 120.5v1059h196v-1071q0 -121 -42 -205t-109.5 -119.5t-125 -49t-118.5 -13.5l-70 4v170zM154 1243v203h200v-203h-200z" /> -<glyph unicode="k" horiz-adv-x="1077" d="M156 0v1446h198v-791h146l282 381h226l-344 -456v-5l383 -575h-232l-311 487h-150v-487h-198z" /> -<glyph unicode="l" horiz-adv-x="542" d="M143 283v1163h199v-1129q0 -86 28.5 -116.5t82.5 -30.5l34 2v-176q-31 -4 -65 -4q-279 0 -279 291z" /> -<glyph unicode="m" horiz-adv-x="1871" d="M156 1036h192v-137l-4 -76h4q39 96 139.5 167t217.5 71q258 0 311 -236h4q45 98 146.5 167t222.5 69q342 0 342 -397v-664h-199v621q0 125 -38 192.5t-146 67.5q-104 0 -183.5 -76t-107.5 -189q-14 -59 -15 -143v-473h-198v621q0 123 -36 191.5t-144.5 68.5t-187.5 -78 t-109 -195q-12 -49 -13 -135v-473h-198v1036z" /> -<glyph unicode="n" horiz-adv-x="1234" d="M156 1036h192v-137l-4 -76h4q41 88 139.5 163t249.5 75q356 0 357 -397v-664h-199v618q0 125 -41 193t-156 68q-117 0 -206 -71t-121 -183q-16 -55 -17 -140v-485h-198v1036z" /> -<glyph unicode="o" horiz-adv-x="1277" d="M80 520.5q0 233.5 161.5 387t397 153.5t397.5 -153.5t162 -387t-163 -389.5t-396 -156t-396 156t-163 389.5zM283 520q0 -160 104.5 -266.5t251.5 -106.5q150 0 253 105.5t103 267.5q0 160 -103.5 264.5t-252.5 104.5q-147 0 -251.5 -104.5t-104.5 -264.5z" /> -<glyph unicode="p" horiz-adv-x="1228" d="M156 1036h182v-88l-4 -76h4q4 8 11 20.5t37 45.5t65.5 57.5t98 45t136.5 20.5q207 0 331 -149.5t124 -393.5t-132 -393.5t-337 -149.5q-63 0 -119.5 17.5t-91.5 43t-60.5 50.5t-35.5 41l-11 18h-4q4 -37 4 -90v-465h-198v1446zM348 514q0 -150 79 -259.5t214 -109.5 q127 0 213 99.5t86 271.5q0 168 -81 269.5t-212 101.5q-127 0 -213 -93.5t-86 -279.5z" /> -<glyph unicode="q" horiz-adv-x="1230" d="M88 518q0 246 131 394.5t338 148.5q68 0 126 -18.5t93 -43t61.5 -50t36.5 -44.5l11 -18h4q-2 31 -2 71v78h188v-1446h-198v473l4 91h-4q-4 -8 -11.5 -19.5t-35 -42.5t-62.5 -54.5t-94.5 -43t-128.5 -19.5q-209 0 -333 149.5t-124 393.5zM291 518q0 -168 81 -269.5 t212 -101.5q127 0 213 93.5t86 279.5q0 150 -77 259.5t-216 109.5q-127 0 -213 -99.5t-86 -271.5z" /> -<glyph unicode="r" horiz-adv-x="768" d="M156 0v1036h192v-180l-4 -78h4q37 119 124 195t204 76l51 -5v-196q-27 6 -57 6q-96 0 -176 -65.5t-115 -178.5q-25 -80 -25 -186v-424h-198z" /> -<glyph unicode="s" horiz-adv-x="917" d="M72 127l96 141q12 -14 36.5 -33.5t102.5 -53.5t158 -34q70 0 121 35t51 94q0 51 -55.5 90.5t-133 69t-155.5 65.5t-133.5 103.5t-55.5 161.5q0 137 106.5 216t268.5 79q100 0 184.5 -28.5t116.5 -57.5l33 -29l-80 -149q-10 10 -29.5 25.5t-86 41t-140.5 25.5 q-72 0 -121 -32t-49 -95q0 -51 55.5 -88t133 -66.5t155.5 -65.5t133.5 -103.5t55.5 -162.5q0 -131 -103.5 -216t-271.5 -85q-113 0 -211 38t-139 77z" /> -<glyph unicode="t" horiz-adv-x="733" d="M63 862v160h142v299h192v-299h250v-160h-250v-461q0 -59 16.5 -103t40 -68.5t55.5 -39t57.5 -18.5t51.5 -4l48 4v-176q-29 -4 -70 -4q-49 0 -94 6t-102.5 30.5t-99.5 64.5t-71.5 114t-29.5 172v483h-136z" /> -<glyph unicode="u" horiz-adv-x="1224" d="M141 373v663h199v-618q0 -125 40 -191.5t155 -66.5q152 0 243.5 114.5t91.5 276.5v485h199v-1036h-192v137l4 76h-4q-39 -90 -140.5 -164t-240.5 -74q-355 1 -355 398z" /> -<glyph unicode="v" horiz-adv-x="1028" d="M14 1036h211l252 -700q8 -25 16.5 -60.5t14.5 -58.5l4 -22h4l4 22q6 23 15.5 58.5t17.5 60.5l252 700h209l-383 -1036h-230z" /> -<glyph unicode="w" horiz-adv-x="1667" d="M35 1036h211l215 -727q6 -23 13 -51.5t9 -44.5l4 -14h5q10 57 26 110l225 725h183l223 -725l29 -110h4q8 57 24 110l217 727h209l-334 -1036h-219l-215 666l-28 112h-5q-12 -59 -28 -112l-213 -666h-221z" /> -<glyph unicode="x" horiz-adv-x="1040" d="M45 0l352 532l-334 504h228l192 -315l35 -62h4q18 35 35 62l193 315h227l-334 -504l352 -532h-225l-217 346l-31 57h-4q-16 -33 -31 -57l-217 -346h-225z" /> -<glyph unicode="y" horiz-adv-x="1044" d="M4 1036h223l260 -678l39 -125h4q16 70 35 123l252 680h215l-485 -1222q-47 -117 -136 -180.5t-200 -63.5q-51 0 -101.5 16.5t-74.5 32.5l-25 14l70 152q57 -43 121 -43q123 0 186 152l51 118z" /> -<glyph unicode="z" horiz-adv-x="1058" d="M80 0v115l522 655l86 96v4q-33 -4 -100 -4h-486v170h854v-114l-522 -658l-88 -94v-4q35 4 103 4h526v-170h-895z" /> -<glyph unicode="{" horiz-adv-x="716" d="M100 578v176q6 0 18.5 2t42 16t53.5 36.5t42 68t18 104.5v172q0 92 26 160.5t61.5 104.5t86 58.5t86 27.5t72.5 5l47 -2v-151h-28q-27 0 -50.5 -7.5t-55.5 -26.5t-51 -65.5t-19 -115.5v-211q0 -57 -17.5 -104.5t-42 -75t-48.5 -47t-42 -27.5l-16 -6v-4q6 -2 17 -6.5 t40 -25t50.5 -47t39.5 -74.5q19 -47 19 -107v-236q0 -70 19 -116t51 -65.5t55.5 -26.5t50.5 -7h28v-152q-18 -4 -47 -4q-37 0 -72.5 5.5t-86 28t-86 58t-61.5 105.5t-26 162v196q0 59 -18 103.5t-43 66t-50.5 34.5t-43.5 15z" /> -<glyph unicode="|" horiz-adv-x="579" d="M203 -326v1948h174v-1948h-174z" /> -<glyph unicode="}" horiz-adv-x="716" d="M63 -45h29q27 0 50.5 7t55 26.5t51 65.5t19.5 116v235q0 94 42 159t83 83l41 19v4q-6 2 -17 7t-40 25.5t-50.5 47t-40 74.5t-18.5 106v211q0 70 -19.5 116t-51 65t-55 26.5t-50.5 7.5h-29v151q18 2 48 2q37 0 72.5 -5t85.5 -27.5t86 -58.5t61.5 -104.5t25.5 -160.5v-172 q0 -172 138 -219l36 -8v-176q-6 0 -18 -2.5t-42 -16.5t-53.5 -35.5t-42 -65.5t-18.5 -104v-196q0 -92 -25.5 -162t-61.5 -105.5t-86 -58t-86 -28t-72 -5.5l-48 4v152z" /> -<glyph unicode="~" horiz-adv-x="1245" d="M137 418q0 174 75 260t212 86q72 0 130 -32t89 -68.5t76 -68.5t96 -32q74 0 105.5 57.5t31.5 135.5h162q0 -346 -285 -346q-72 0 -130 30.5t-88.5 68.5t-77 68.5t-97.5 30.5q-72 0 -104.5 -57t-32.5 -133h-162z" /> -<glyph unicode="¡" horiz-adv-x="591" d="M193 -410l14 1049h178l12 -1049h-204zM193 838v198h202v-198h-202z" /> -<glyph unicode="¢" horiz-adv-x="1179" d="M109 723q0 227 116.5 388t315.5 187v172h145v-172q133 -20 232.5 -103t152.5 -214l-180 -70q-90 203 -273 203q-143 0 -225 -109.5t-82 -281.5q0 -176 80 -282.5t227 -106.5q184 0 273 203l180 -72q-55 -125 -152.5 -213t-232.5 -102v-177h-145v177q-199 27 -315.5 187.5 t-116.5 385.5z" /> -<glyph unicode="£" horiz-adv-x="1210" d="M115 0v176h125v477h-90v144h90v278q0 170 126 282.5t318 112.5q186 0 332 -120l10 -11l-117 -141q-98 88 -223 88q-111 0 -176.5 -62.5t-65.5 -156.5v-270h377v-144h-377v-477h666v-176h-995z" /> -<glyph unicode="¥" horiz-adv-x="1243" d="M57 1446h232l241 -451l88 -209h5q43 113 88 209l243 451h232l-340 -606h209v-129h-277l-55 -99v-75h332v-129h-332v-408h-205v408h-334v129h334v75l-55 99h-279v129h211z" /> -<glyph unicode="§" horiz-adv-x="905" d="M98 -23l90 138q84 -76 199 -76q94 0 155.5 56.5t61.5 158.5q0 41 -12 92l-135 770h161l144 -799q10 -55 10 -92q0 -156 -104.5 -254t-280.5 -98q-80 0 -151.5 26.5t-104.5 51.5zM129 1120q0 154 104.5 252t282.5 98q78 0 150.5 -26.5t105.5 -50.5l33 -27l-94 -131 q-82 70 -195 70q-96 0 -157.5 -53.5t-61.5 -153.5q0 -37 12 -82l140 -789h-164l-144 799q-12 47 -12 94z" /> -<glyph unicode="¨" horiz-adv-x="1021" d="M258 1599v207h164v-207h-164zM600 1599v207h164v-207h-164z" /> -<glyph unicode="©" d="M111 723q0 311 212 529t515 218q305 0 519 -218t214 -529t-214 -529.5t-519 -218.5q-303 0 -515 218.5t-212 529.5zM260 723q0 -256 167 -432t411 -176q248 0 415.5 176t167.5 432t-168 432t-415 176q-244 0 -411 -176t-167 -432zM449 721q0 168 111.5 288.5t291.5 120.5 q195 0 311 -165l23 -37l-125 -68q-8 14 -23.5 36t-67.5 57.5t-112 35.5q-117 0 -185.5 -79t-68.5 -189q0 -115 67.5 -191.5t186.5 -76.5q59 0 110.5 32.5t71.5 63.5l21 33l125 -68q-4 -8 -12.5 -21.5t-38 -49t-64.5 -62.5t-94 -48.5t-125 -21.5q-180 0 -291.5 120 t-111.5 290z" /> -<glyph unicode="ª" horiz-adv-x="864" d="M150 543v116h563v-116h-563zM152 981q0 225 385 225h20v13q0 129 -131 129q-39 0 -82 -14.5t-65 -28.5l-23 -15l-59 101q92 76 247 75q127 0 194 -66.5t67 -191.5v-411h-140v94h-4q-6 -12 -19.5 -30.5t-61.5 -48.5t-107 -30q-88 0 -154.5 53.5t-66.5 145.5zM299 991 q0 -37 27.5 -62.5t76.5 -25.5q68 0 111 56.5t43 125.5v17h-25q-233 0 -233 -111z" /> -<glyph unicode="«" horiz-adv-x="1138" d="M90 578l336 421h199l-336 -421l336 -420h-199zM502 578l336 421h198l-336 -421l336 -420h-198z" /> -<glyph unicode="¬" horiz-adv-x="1257" d="M123 696v160h977v-547h-166v387h-811z" /> -<glyph unicode="­" horiz-adv-x="882" d="M143 496v176h598v-176h-598z" /> -<glyph unicode="®" d="M111 723q0 311 212 529t515 218q305 0 519 -218t214 -529t-214 -529.5t-519 -218.5q-303 0 -515 218.5t-212 529.5zM260 723q0 -256 167 -432t411 -176q248 0 415.5 176t167.5 432t-168 432t-415 176q-244 0 -411 -176t-167 -432zM588 340v772h297q111 0 177 -64.5 t66 -170.5q0 -82 -43 -136.5t-98 -68.5v-4q8 -8 27 -43l147 -285h-160l-143 299h-125v-299h-145zM733 745h123q57 0 91 35t34 97q0 59 -34 91.5t-91 32.5h-123v-256z" /> -<glyph unicode="¯" horiz-adv-x="1021" d="M250 1606v143h522v-143h-522z" /> -<glyph unicode="°" horiz-adv-x="796" d="M88 1167q0 125 90 214t219 89t220.5 -89t91.5 -214t-91.5 -214t-220.5 -89t-219 88t-90 215zM246 1167.5q0 -63.5 44 -107.5t107.5 -44t107.5 44t44 107.5t-44 108.5t-107.5 45t-107.5 -45t-44 -108.5z" /> -<glyph unicode="±" horiz-adv-x="1394" d="M156 504v160h458v503h168v-503h457v-160h-457v-504h-168v504h-458zM188 -195h1018v-159h-1018v159z" /> -<glyph unicode="²" horiz-adv-x="796" d="M96 940q0 96 45 171t108.5 121t127 86t108.5 87t45 102q0 57 -42 95t-105 38q-96 -4 -172 -98l-100 92l11 16.5t32.5 35t56.5 44t79 36t101 16.5q127 0 211 -75t84 -194q0 -82 -42 -147.5t-103.5 -107t-123 -78.5t-105.5 -81t-48 -98h436v-135h-598q0 8 -2 23.5t-3 28 t-1 22.5z" /> -<glyph unicode="³" horiz-adv-x="796" d="M82 981l86 109q8 -12 24.5 -29t70.5 -45.5t114 -28.5q68 0 119 45t51 111q0 68 -54.5 106.5t-127.5 38.5h-70l-33 78l182 211l50 49v4q-39 -6 -74 -6h-289v137h555v-98l-223 -258q102 -14 170.5 -81t68.5 -181q0 -121 -91 -209t-228 -88q-92 0 -167 33.5t-105 66.5z" /> -<glyph unicode="´" horiz-adv-x="1021" d="M330 1546l149 260h213l-196 -260h-166z" /> -<glyph unicode="µ" horiz-adv-x="1267" d="M170 -410v1446h199v-618q0 -125 40 -191.5t152 -66.5q154 0 246 114.5t92 276.5v485h199v-1036h-193v141l4 72h-6q-4 -10 -12 -25.5t-40 -56.5t-72 -72.5t-108.5 -57.5t-148.5 -26q-131 2 -186 64h-4q14 -100 14 -160v-289h-176z" /> -<glyph unicode="μ" horiz-adv-x="1267" d="M170 -410v1446h199v-618q0 -125 40 -191.5t152 -66.5q154 0 246 114.5t92 276.5v485h199v-1036h-193v141l4 72h-6q-4 -10 -12 -25.5t-40 -56.5t-72 -72.5t-108.5 -57.5t-148.5 -26q-131 2 -186 64h-4q14 -100 14 -160v-289h-176z" /> -<glyph unicode="¶" horiz-adv-x="1208" d="M88 970.5q0 200.5 142.5 338t340.5 137.5h557v-176h-401v-1372h-154v596q-199 0 -342 138t-143 338.5zM854 -102v1255h152v-1255h-152z" /> -<glyph unicode="·" horiz-adv-x="563" d="M180 489v211h203v-211h-203z" /> -<glyph unicode="¸" horiz-adv-x="1021" d="M350 -291q41 -14 86 -14q98 0 98.5 63.5t-108.5 63.5l-37 -2l60 227l100 -20v-17l-25 -112q66 -8 107 -47t41 -103q0 -88 -60.5 -130t-148.5 -42l-113 14v119z" /> -<glyph unicode="¹" horiz-adv-x="796" d="M133 1550l217 211h139v-760h187v-135h-531v135h191v510l4 54h-4q-8 -18 -37 -45l-72 -70z" /> -<glyph unicode="º" horiz-adv-x="956" d="M127 1130q0 145 101.5 241.5t246.5 96.5q147 0 249.5 -96t102.5 -242q0 -150 -101 -247t-248.5 -97t-249 97t-101.5 247zM160 543v116h639v-116h-639zM274 1130q0 -92 58.5 -152t144.5 -60q84 0 142.5 60t58.5 152q0 90 -58.5 148.5t-142.5 58.5q-86 0 -144.5 -58.5 t-58.5 -148.5z" /> -<glyph unicode="»" horiz-adv-x="1140" d="M102 158l336 420l-336 421h199l336 -421l-336 -420h-199zM516 158l336 420l-336 421h199l336 -421l-336 -420h-199z" /> -<glyph unicode="¼" horiz-adv-x="1980" d="M109 1235l217 211h139v-760h186v-135h-530v135h190v510l4 53h-4q-8 -18 -37 -45l-71 -69zM535 0l688 1446h153l-688 -1446h-153zM1167 219v103l412 573h166v-541h125v-135h-125v-219h-152v219h-426zM1335 354h258v252l6 119h-4q-29 -55 -59 -98l-201 -269v-4z" /> -<glyph unicode="½" horiz-adv-x="1968" d="M109 1235l217 211h139v-760h186v-135h-530v135h190v510l4 53h-4q-8 -18 -37 -45l-71 -69zM539 0l688 1446h153l-688 -1446h-153zM1229 74q0 96 45 170.5t108.5 121t127 86.5t108.5 87t45 102q0 57 -42 95t-105 38q-96 -4 -173 -98l-100 92q4 6 11.5 16.5t33 35t56 44 t78.5 35.5t102 16q127 0 211 -74.5t84 -193.5q0 -82 -42 -147.5t-103.5 -107.5t-123 -79t-105.5 -81t-48 -97h436v-135h-598q0 8 -2 23.5t-3 28t-1 22.5z" /> -<glyph unicode="¾" horiz-adv-x="2004" d="M82 666l86 108q8 -12 24.5 -28.5t70.5 -45t114 -28.5q68 0 119 45t51 110q0 68 -54.5 107t-127.5 39h-70l-33 78l182 211l50 49v4q-39 -6 -74 -6h-289v137h555v-98l-223 -258q102 -14 170.5 -81t68.5 -182q0 -121 -91 -209t-228 -88q-92 0 -167 34t-105 67zM559 0 l688 1446h154l-688 -1446h-154zM1192 219v103l412 573h165v-541h125v-135h-125v-219h-151v219h-426zM1360 354h258v252l6 119h-4q-29 -55 -59 -98l-201 -269v-4z" /> -<glyph unicode="¿" horiz-adv-x="921" d="M80 -57q0 94 37 168.5t90 125t107.5 96.5t91 104.5t36.5 125.5v76h193v-88q0 -86 -36 -157.5t-86 -120t-101.5 -93.5t-87 -101t-35.5 -120q0 -86 66.5 -145.5t166.5 -59.5q57 0 115.5 22.5t87.5 43.5l31 22l108 -141q-6 -6 -16 -14.5t-45 -31t-74 -39.5t-98.5 -31.5 t-122.5 -14.5q-178 0 -303 103.5t-125 269.5zM438 838v198h203v-198h-203z" /> -<glyph unicode="À" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM369 1806h213l149 -260h-168zM422 584h438l-160 458l-55 205h-4q-33 -131 -57 -205z" /> -<glyph unicode="Á" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM422 584h438l-160 458l-55 205h-4q-33 -131 -57 -205zM553 1546l149 260h213l-196 -260h-166z" /> -<glyph unicode="Â" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM358 1546l181 260h206l181 -260h-174l-109 164h-4l-107 -164h-174zM422 584h438l-160 458l-55 205h-4q-33 -131 -57 -205z" /> -<glyph unicode="Ã" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM299 1548q0 260 209 260q59 0 104 -34.5t82 -69.5t72 -35q41 0 60.5 40t19.5 93h143q0 -260 -209 -260q-59 0 -104 35t-82 69.5t-72 34.5q-80 0 -80 -133h-143zM422 584h438l-160 458l-55 205h-4 q-33 -131 -57 -205z" /> -<glyph unicode="Ä" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM391 1599v207h164v-207h-164zM422 584h438l-160 458l-55 205h-4q-33 -131 -57 -205zM733 1599v207h164v-207h-164z" /> -<glyph unicode="Å" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM422 584h438l-160 458l-55 205h-4q-33 -131 -57 -205zM469 1673q0 70 51 112t123 42t123 -42t51 -112q0 -68 -51 -109.5t-123 -41.5t-123 41.5t-51 109.5zM575 1673q0 -29 18.5 -48t49.5 -19 q29 0 48.5 19.5t19.5 47.5q0 33 -19.5 52.5t-48.5 19.5q-31 0 -49.5 -19.5t-18.5 -52.5z" /> -<glyph unicode="Æ" horiz-adv-x="1798" d="M8 0l598 1446h1057v-176h-639v-453h520v-176h-520v-465h674v-176h-875v643h-346l-258 -643h-211zM545 811h278v459h-94z" /> -<glyph unicode="Ç" horiz-adv-x="1482" d="M102 731q0 315 210 527t526 212q98 0 188 -19t148.5 -47t103.5 -56.5t65 -49.5l21 -18l-100 -152q-18 18 -53 44t-145 70t-220 44q-238 0 -386.5 -158.5t-148.5 -394.5q0 -238 150.5 -404.5t386.5 -166.5q121 0 232.5 47t162.5 94l51 47l109 -145q-8 -8 -22.5 -23.5 t-65.5 -52.5t-108.5 -66.5t-147.5 -56t-187 -31.5l-16 -77q66 -8 107 -47t41 -103q0 -88 -60.5 -130t-148.5 -42l-113 14v119q41 -14 86 -14q98 0 98 63.5t-108 63.5l-37 -2l41 160q-291 27 -475.5 238.5t-184.5 512.5z" /> -<glyph unicode="È" horiz-adv-x="1173" d="M197 0v1446h839v-176h-637v-453h519v-176h-519v-465h672v-176h-874zM365 1806h213l149 -260h-168z" /> -<glyph unicode="É" horiz-adv-x="1173" d="M197 0v1446h839v-176h-637v-453h519v-176h-519v-465h672v-176h-874zM551 1546l149 260h213l-196 -260h-166z" /> -<glyph unicode="Ê" horiz-adv-x="1173" d="M197 0v1446h839v-176h-637v-453h519v-176h-519v-465h672v-176h-874zM356 1546l181 260h206l181 -260h-174l-109 164h-4l-107 -164h-174z" /> -<glyph unicode="Ë" horiz-adv-x="1173" d="M197 0v1446h839v-176h-637v-453h519v-176h-519v-465h672v-176h-874zM387 1599v207h164v-207h-164zM729 1599v207h164v-207h-164z" /> -<glyph unicode="Ì" horiz-adv-x="595" d="M25 1806h213l149 -260h-168zM197 0v1446h202v-1446h-202z" /> -<glyph unicode="Í" horiz-adv-x="595" d="M197 0v1446h202v-1446h-202zM211 1546l149 260h213l-196 -260h-166z" /> -<glyph unicode="Î" horiz-adv-x="595" d="M14 1546l181 260h206l181 -260h-174l-109 164h-4l-107 -164h-174zM197 0v1446h202v-1446h-202z" /> -<glyph unicode="Ï" horiz-adv-x="595" d="M47 1599v207h164v-207h-164zM197 0v1446h202v-1446h-202zM389 1599v207h164v-207h-164z" /> -<glyph unicode="Ð" horiz-adv-x="1554" d="M115 639v168h121v639h479q336 0 534.5 -191.5t198.5 -529.5q0 -340 -198.5 -532.5t-534.5 -192.5h-479v639h-121zM438 176h262q248 0 393.5 143.5t145.5 405.5q0 260 -145.5 402.5t-393.5 142.5h-262v-463h305v-168h-305v-463z" /> -<glyph unicode="Ñ" horiz-adv-x="1550" d="M197 0v1446h200l643 -940q25 -35 54.5 -87t48.5 -87l18 -35h4q-14 129 -14 209v940h203v-1446h-199l-645 938q-53 80 -121 211h-4q14 -129 14 -211v-938h-202zM430 1548q0 260 209 260q59 0 104 -34.5t82 -69.5t72 -35q41 0 60.5 40t19.5 93h143q0 -260 -209 -260 q-59 0 -104 35t-82 69.5t-72 34.5q-80 0 -80 -133h-143z" /> -<glyph unicode="Ò" d="M98 733q0 311 215 524t528.5 213t527.5 -213t214 -524q0 -319 -214 -538.5t-527.5 -219.5t-528.5 219.5t-215 538.5zM307 733q0 -242 155.5 -406.5t379 -164.5t378 165t154.5 406q0 236 -154.5 394.5t-378 158.5t-379 -158.5t-155.5 -394.5zM567 1806h213l150 -260h-168z " /> -<glyph unicode="Ó" d="M98 733q0 311 215 524t528.5 213t527.5 -213t214 -524q0 -319 -214 -538.5t-527.5 -219.5t-528.5 219.5t-215 538.5zM307 733q0 -242 155.5 -406.5t379 -164.5t378 165t154.5 406q0 236 -154.5 394.5t-378 158.5t-379 -158.5t-155.5 -394.5zM754 1546l149 260h213 l-196 -260h-166z" /> -<glyph unicode="Ô" d="M98 733q0 311 215 524t528.5 213t527.5 -213t214 -524q0 -319 -214 -538.5t-527.5 -219.5t-528.5 219.5t-215 538.5zM307 733q0 -242 155.5 -406.5t379 -164.5t378 165t154.5 406q0 236 -154.5 394.5t-378 158.5t-379 -158.5t-155.5 -394.5zM557 1546l180 260h207 l180 -260h-174l-108 164h-4l-107 -164h-174z" /> -<glyph unicode="Õ" d="M98 733q0 311 215 524t528.5 213t527.5 -213t214 -524q0 -319 -214 -538.5t-527.5 -219.5t-528.5 219.5t-215 538.5zM307 733q0 -242 155.5 -406.5t379 -164.5t378 165t154.5 406q0 236 -154.5 394.5t-378 158.5t-379 -158.5t-155.5 -394.5zM498 1548q0 260 209 260 q59 0 104 -34.5t82 -69.5t72 -35q41 0 60 40t19 93h144q0 -260 -209 -260q-59 0 -104.5 35t-82 69.5t-71.5 34.5q-80 0 -80 -133h-143z" /> -<glyph unicode="Ö" d="M98 733q0 311 215 524t528.5 213t527.5 -213t214 -524q0 -319 -214 -538.5t-527.5 -219.5t-528.5 219.5t-215 538.5zM307 733q0 -242 155.5 -406.5t379 -164.5t378 165t154.5 406q0 236 -154.5 394.5t-378 158.5t-379 -158.5t-155.5 -394.5zM590 1599v207h164v-207h-164z M932 1599v207h164v-207h-164z" /> -<glyph unicode="×" horiz-adv-x="1320" d="M129 113l422 471l-422 471l113 112l417 -467l420 467l113 -112l-424 -471l424 -471l-113 -113l-420 465l-417 -465z" /> -<glyph unicode="Ø" horiz-adv-x="1687" d="M102 733q0 311 215 524t529 213q205 0 379 -100l94 129l100 -69l-94 -132q123 -102 192.5 -248.5t69.5 -316.5q0 -319 -214 -538.5t-527 -219.5q-217 0 -393 109l-97 -135l-102 69l100 142q-119 104 -185.5 252.5t-66.5 320.5zM311 733q0 -246 160 -411l641 890 q-121 74 -266 74q-223 0 -379 -158.5t-156 -394.5zM567 242q125 -80 279 -80q223 0 377.5 165t154.5 406q0 248 -168 406z" /> -<glyph unicode="Ù" horiz-adv-x="1490" d="M176 512v934h203v-934q0 -164 98 -257t266 -93q170 0 269.5 93t99.5 261v930h203v-934q0 -240 -158 -388.5t-411.5 -148.5t-411.5 148.5t-158 388.5zM471 1806h213l150 -260h-168z" /> -<glyph unicode="Ú" horiz-adv-x="1490" d="M176 512v934h203v-934q0 -164 98 -257t266 -93q170 0 269.5 93t99.5 261v930h203v-934q0 -240 -158 -388.5t-411.5 -148.5t-411.5 148.5t-158 388.5zM655 1546l150 260h213l-197 -260h-166z" /> -<glyph unicode="Û" horiz-adv-x="1490" d="M176 512v934h203v-934q0 -164 98 -257t266 -93q170 0 269.5 93t99.5 261v930h203v-934q0 -240 -158 -388.5t-411.5 -148.5t-411.5 148.5t-158 388.5zM461 1546l180 260h207l180 -260h-174l-109 164h-4l-106 -164h-174z" /> -<glyph unicode="Ü" horiz-adv-x="1490" d="M176 512v934h203v-934q0 -164 98 -257t266 -93q170 0 269.5 93t99.5 261v930h203v-934q0 -240 -158 -388.5t-411.5 -148.5t-411.5 148.5t-158 388.5zM494 1599v207h163v-207h-163zM836 1599v207h163v-207h-163z" /> -<glyph unicode="Ý" horiz-adv-x="1204" d="M16 1446h230l268 -475l88 -183h4q43 100 88 183l264 475h230l-483 -834v-612h-203v612zM514 1546l150 260h213l-197 -260h-166z" /> -<glyph unicode="Þ" horiz-adv-x="1243" d="M197 1446h200v-246h328q201 0 327 -124t126 -328.5t-127 -331.5t-328 -127h-326v-289h-200v1446zM397 465h295q131 0 206 75.5t75 207.5q0 129 -75 202.5t-204 73.5h-297v-559z" /> -<glyph unicode="ß" horiz-adv-x="1204" d="M156 0v1085q0 180 131 282.5t311 102.5q168 0 278.5 -95t110.5 -234q0 -68 -31.5 -126.5t-70.5 -93t-71 -77.5t-32 -84q0 -35 38 -72t92.5 -73.5t107.5 -78.5t91 -104.5t38 -134.5q0 -147 -102.5 -229t-247.5 -82q-84 0 -157 14t-103 29l-31 16v176q115 -63 266 -63 q74 0 123 36.5t49 110.5q0 55 -57.5 109.5t-126 94.5t-125.5 105.5t-57 139.5q0 57 32.5 110.5t70.5 89t70.5 86t32.5 99.5q0 66 -51 112.5t-143 46.5q-98 0 -168 -59t-70 -168v-1071h-198z" /> -<glyph unicode="à" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M264 1446h213l150 -260h-168zM272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197z" /> -<glyph unicode="á" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197zM446 1186l150 260h213l-197 -260h-166z" /> -<glyph unicode="â" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M252 1186l180 260h207l180 -260h-174l-108 164h-5l-106 -164h-174zM272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197z" /> -<glyph unicode="ã" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M193 1188q0 260 208 260q59 0 104.5 -35t82.5 -69.5t71 -34.5q41 0 60.5 40t19.5 93h144q0 -260 -209 -260q-59 0 -104.5 34.5t-82 69.5t-71.5 35q-80 0 -80 -133h-143zM272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197z" /> -<glyph unicode="ä" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197zM285 1239v207h164v-207h-164zM627 1239v207h164v-207h-164z" /> -<glyph unicode="å" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197zM362 1313q0 70 51.5 111.5t123 41.5t123 -42t51.5 -111q0 -68 -51.5 -110t-123 -42t-123 42t-51.5 110zM469 1313q0 -29 18.5 -48.5t49.5 -19.5q29 0 48 19.5t19 48.5 q0 33 -19.5 52t-47.5 19q-31 0 -49.5 -19t-18.5 -52z" /> -<glyph unicode="æ" horiz-adv-x="1769" d="M74 291q0 92 45 160.5t109.5 104.5t155.5 58.5t160.5 27.5t147.5 5h51v19q0 227 -233 227q-70 0 -140.5 -24.5t-107.5 -49.5l-37 -26l-80 145q6 4 17.5 13.5t48.5 29.5t78 36.5t105.5 30t129.5 13.5q260 0 344 -182h4q123 182 379 182q203 0 317.5 -142.5t114.5 -361.5 l-4 -59h-743q8 -170 103.5 -260.5t240.5 -90.5q80 0 156.5 30t113.5 61l37 28l82 -143q-16 -16 -49 -41t-137.5 -66t-212.5 -41q-154 0 -268.5 69t-178.5 192h-4q-10 -29 -32.5 -65t-67.5 -84t-121 -80t-170 -32q-150 0 -252 85.5t-102 230.5zM276 301q0 -70 50.5 -118 t144.5 -48q121 0 197.5 103.5t76.5 228.5v31h-96q-373 0 -373 -197zM944 647h539q-4 125 -74 190.5t-172 65.5q-117 0 -195 -64.5t-98 -191.5z" /> -<glyph unicode="ç" horiz-adv-x="1122" d="M84 518q0 231 156.5 387t398.5 156q115 0 212 -38t136 -77l41 -37l-94 -139q-12 12 -36 32.5t-98.5 53.5t-152.5 33q-156 0 -258 -104.5t-102 -264.5t103.5 -266.5t262.5 -106.5q86 0 166 35t117 70l37 35l80 -146l-17 -16q-10 -10 -47 -38t-79 -49.5t-108.5 -41 t-137.5 -21.5l-17 -77q66 -8 107 -47t41 -103q0 -88 -60.5 -130t-148.5 -42l-113 14v119q41 -14 86 -14q98 0 98 63.5t-108 63.5l-37 -2l41 162q-209 29 -339 176t-130 360z" /> -<glyph unicode="è" horiz-adv-x="1136" d="M84 518q0 244 146.5 393.5t371.5 149.5q211 0 330 -137.5t119 -348.5l-7 -86h-755q8 -164 109.5 -253t246.5 -89q164 0 299 115l8 6l82 -145q-16 -16 -49 -41t-137.5 -66t-214.5 -41q-242 0 -395.5 155t-153.5 388zM295 639h553q-4 129 -75 196.5t-175 67.5 q-117 0 -200 -69.5t-103 -194.5zM330 1446h213l149 -260h-168z" /> -<glyph unicode="é" horiz-adv-x="1136" d="M84 518q0 244 146.5 393.5t371.5 149.5q211 0 330 -137.5t119 -348.5l-7 -86h-755q8 -164 109.5 -253t246.5 -89q164 0 299 115l8 6l82 -145q-16 -16 -49 -41t-137.5 -66t-214.5 -41q-242 0 -395.5 155t-153.5 388zM295 639h553q-4 129 -75 196.5t-175 67.5 q-117 0 -200 -69.5t-103 -194.5zM514 1186l150 260h213l-197 -260h-166z" /> -<glyph unicode="ê" horiz-adv-x="1136" d="M84 518q0 244 146.5 393.5t371.5 149.5q211 0 330 -137.5t119 -348.5l-7 -86h-755q8 -164 109.5 -253t246.5 -89q164 0 299 115l8 6l82 -145q-16 -16 -49 -41t-137.5 -66t-214.5 -41q-242 0 -395.5 155t-153.5 388zM295 639h553q-4 129 -75 196.5t-175 67.5 q-117 0 -200 -69.5t-103 -194.5zM317 1186l181 260h207l180 -260h-174l-109 164h-4l-106 -164h-175z" /> -<glyph unicode="ë" horiz-adv-x="1136" d="M84 518q0 244 146.5 393.5t371.5 149.5q211 0 330 -137.5t119 -348.5l-7 -86h-755q8 -164 109.5 -253t246.5 -89q164 0 299 115l8 6l82 -145q-16 -16 -49 -41t-137.5 -66t-214.5 -41q-242 0 -395.5 155t-153.5 388zM295 639h553q-4 129 -75 196.5t-175 67.5 q-117 0 -200 -69.5t-103 -194.5zM350 1239v207h164v-207h-164zM692 1239v207h164v-207h-164z" /> -<glyph unicode="ì" horiz-adv-x="509" d="M-18 1446h213l149 -260h-168zM156 0v1036h198v-1036h-198z" /> -<glyph unicode="í" horiz-adv-x="509" d="M156 0v1036h198v-1036h-198zM168 1186l149 260h213l-196 -260h-166z" /> -<glyph unicode="î" horiz-adv-x="509" d="M-27 1186l181 260h206l181 -260h-174l-109 164h-4l-107 -164h-174zM156 0v1036h198v-1036h-198z" /> -<glyph unicode="ï" horiz-adv-x="509" d="M4 1239v207h164v-207h-164zM156 0v1036h198v-1036h-198zM346 1239v207h164v-207h-164z" /> -<glyph unicode="ð" horiz-adv-x="1206" d="M88 481q0 193 130 333t355 140q158 -2 252 -86h4q-61 164 -223 273l-370 -164l-21 127l254 113q-125 63 -264 94l55 162q238 -53 424 -164l285 125l18 -125l-188 -86q295 -246 295 -660q0 -109 -30 -209t-89.5 -187t-163.5 -139.5t-238 -52.5q-223 0 -354 150.5 t-131 355.5zM289 477q0 -135 76.5 -232.5t212.5 -97.5q80 0 142 34t98 91.5t54.5 122t18.5 133.5q0 117 -79 192t-210 75q-150 0 -231.5 -93.5t-81.5 -224.5z" /> -<glyph unicode="ñ" horiz-adv-x="1234" d="M156 1036h192v-137l-4 -76h4q41 88 139.5 163t249.5 75q356 0 357 -397v-664h-199v618q0 125 -41 193t-156 68q-117 0 -206 -71t-121 -183q-16 -55 -17 -140v-485h-198v1036zM297 1188q0 260 209 260q59 0 104 -35t82 -69.5t72 -34.5q41 0 60.5 40t19.5 93h143 q0 -260 -209 -260q-59 0 -104 34.5t-82 69.5t-72 35q-80 0 -80 -133h-143z" /> -<glyph unicode="ò" horiz-adv-x="1277" d="M80 520.5q0 233.5 161.5 387t397 153.5t397.5 -153.5t162 -387t-163 -389.5t-396 -156t-396 156t-163 389.5zM283 520q0 -160 104.5 -266.5t251.5 -106.5q150 0 253 105.5t103 267.5q0 160 -103.5 264.5t-252.5 104.5q-147 0 -251.5 -104.5t-104.5 -264.5zM365 1446h213 l149 -260h-168z" /> -<glyph unicode="ó" horiz-adv-x="1277" d="M80 520.5q0 233.5 161.5 387t397 153.5t397.5 -153.5t162 -387t-163 -389.5t-396 -156t-396 156t-163 389.5zM283 520q0 -160 104.5 -266.5t251.5 -106.5q150 0 253 105.5t103 267.5q0 160 -103.5 264.5t-252.5 104.5q-147 0 -251.5 -104.5t-104.5 -264.5zM551 1186 l149 260h213l-196 -260h-166z" /> -<glyph unicode="ô" horiz-adv-x="1277" d="M80 520.5q0 233.5 161.5 387t397 153.5t397.5 -153.5t162 -387t-163 -389.5t-396 -156t-396 156t-163 389.5zM283 520q0 -160 104.5 -266.5t251.5 -106.5q150 0 253 105.5t103 267.5q0 160 -103.5 264.5t-252.5 104.5q-147 0 -251.5 -104.5t-104.5 -264.5zM356 1186 l181 260h206l181 -260h-174l-109 164h-4l-107 -164h-174z" /> -<glyph unicode="õ" horiz-adv-x="1277" d="M80 520.5q0 233.5 161.5 387t397 153.5t397.5 -153.5t162 -387t-163 -389.5t-396 -156t-396 156t-163 389.5zM283 520q0 -160 104.5 -266.5t251.5 -106.5q150 0 253 105.5t103 267.5q0 160 -103.5 264.5t-252.5 104.5q-147 0 -251.5 -104.5t-104.5 -264.5zM295 1188 q0 260 209 260q59 0 104 -35t82 -69.5t72 -34.5q41 0 60.5 40t19.5 93h143q0 -260 -209 -260q-59 0 -104 34.5t-82 69.5t-72 35q-80 0 -80 -133h-143z" /> -<glyph unicode="ö" horiz-adv-x="1277" d="M80 520.5q0 233.5 161.5 387t397 153.5t397.5 -153.5t162 -387t-163 -389.5t-396 -156t-396 156t-163 389.5zM283 520q0 -160 104.5 -266.5t251.5 -106.5q150 0 253 105.5t103 267.5q0 160 -103.5 264.5t-252.5 104.5q-147 0 -251.5 -104.5t-104.5 -264.5zM387 1239v207 h164v-207h-164zM729 1239v207h164v-207h-164z" /> -<glyph unicode="÷" horiz-adv-x="1300" d="M133 504v160h1034v-160h-1034zM553 90v186h192v-186h-192zM553 891v186h192v-186h-192z" /> -<glyph unicode="ø" horiz-adv-x="1277" d="M80 520q0 233 161.5 387t397.5 154q147 0 276 -68l82 113l97 -70l-80 -110q184 -158 184 -406q0 -233 -163 -389t-396 -156q-137 0 -262 60l-80 -113l-98 72l75 106q-194 158 -194 420zM283 520q0 -160 102 -266l426 592q-82 43 -172 43q-147 0 -251.5 -104.5 t-104.5 -264.5zM483 182q74 -35 156 -35q150 0 253 105.5t103 267.5q0 147 -92 250z" /> -<glyph unicode="ù" horiz-adv-x="1224" d="M141 373v663h199v-618q0 -125 40 -191.5t155 -66.5q152 0 243.5 114.5t91.5 276.5v485h199v-1036h-192v137l4 76h-4q-39 -90 -140.5 -164t-240.5 -74q-355 1 -355 398zM332 1446h213l149 -260h-168z" /> -<glyph unicode="ú" horiz-adv-x="1224" d="M141 373v663h199v-618q0 -125 40 -191.5t155 -66.5q152 0 243.5 114.5t91.5 276.5v485h199v-1036h-192v137l4 76h-4q-39 -90 -140.5 -164t-240.5 -74q-355 1 -355 398zM516 1186l150 260h213l-197 -260h-166z" /> -<glyph unicode="û" horiz-adv-x="1224" d="M141 373v663h199v-618q0 -125 40 -191.5t155 -66.5q152 0 243.5 114.5t91.5 276.5v485h199v-1036h-192v137l4 76h-4q-39 -90 -140.5 -164t-240.5 -74q-355 1 -355 398zM322 1186l180 260h207l180 -260h-174l-109 164h-4l-106 -164h-174z" /> -<glyph unicode="ü" horiz-adv-x="1224" d="M141 373v663h199v-618q0 -125 40 -191.5t155 -66.5q152 0 243.5 114.5t91.5 276.5v485h199v-1036h-192v137l4 76h-4q-39 -90 -140.5 -164t-240.5 -74q-355 1 -355 398zM354 1239v207h164v-207h-164zM696 1239v207h164v-207h-164z" /> -<glyph unicode="ý" horiz-adv-x="1044" d="M4 1036h223l260 -678l39 -125h4q16 70 35 123l252 680h215l-485 -1222q-47 -117 -136 -180.5t-200 -63.5q-51 0 -101.5 16.5t-74.5 32.5l-25 14l70 152q57 -43 121 -43q123 0 186 152l51 118zM440 1186l150 260h213l-197 -260h-166z" /> -<glyph unicode="þ" horiz-adv-x="1228" d="M156 -410v1856h198v-471l-2 -86h4q2 2 18.5 22.5t30 36t43 38t60.5 37.5t77 26.5t97 11.5q209 0 335 -151.5t126 -391t-130 -391.5t-337 -152q-66 0 -124 17.5t-93 43t-59.5 50.5t-34.5 41l-11 18h-4q4 -37 4 -90v-465h-198zM348 516q0 -162 81 -265.5t216 -103.5 q127 0 211 102.5t84 268.5q0 164 -80 267.5t-211 103.5q-129 0 -215 -92.5t-86 -280.5z" /> -<glyph unicode="ÿ" horiz-adv-x="1044" d="M4 1036h223l260 -678l39 -125h4q16 70 35 123l252 680h215l-485 -1222q-47 -117 -136 -180.5t-200 -63.5q-51 0 -101.5 16.5t-74.5 32.5l-25 14l70 152q57 -43 121 -43q123 0 186 152l51 118zM276 1239v207h164v-207h-164zM618 1239v207h164v-207h-164z" /> -<glyph unicode="Œ" horiz-adv-x="1966" d="M98 725q0 313 214 526t534 213q53 0 136 -9t116 -9h733v-176h-639v-453h520v-176h-520v-465h676v-176h-768q-33 0 -117 -9t-137 -9q-317 0 -532.5 214t-215.5 529zM307 725q0 -242 151.5 -404.5t387.5 -162.5q37 0 72.5 3t54.5 7l18 4v1102q-63 16 -145 16 q-236 0 -387.5 -162.5t-151.5 -402.5z" /> -<glyph unicode="œ" horiz-adv-x="2048" d="M82 516q0 240 160.5 392.5t392.5 152.5q301 0 448 -246h4q131 246 426 246q211 0 330 -137.5t119 -348.5l-6 -86h-756q12 -164 112.5 -253t243.5 -89q164 0 299 115l9 6l82 -145q-16 -16 -49 -41t-137.5 -66t-215.5 -41q-313 0 -452 252h-5q-145 -252 -452 -252 q-231 0 -392 150.5t-161 390.5zM285 516q0 -164 102 -266.5t251.5 -102.5t253 103.5t103.5 271.5q0 162 -104.5 264.5t-251.5 102.5t-250.5 -103.5t-103.5 -269.5zM1206 639h553q-4 127 -73.5 195.5t-174.5 68.5q-119 0 -202 -69.5t-103 -194.5z" /> -<glyph unicode="Ÿ" horiz-adv-x="1204" d="M16 1446h230l268 -475l88 -183h4q43 100 88 183l264 475h230l-483 -834v-612h-203v612zM344 1599v207h164v-207h-164zM686 1599v207h164v-207h-164z" /> -<glyph unicode="ˆ" horiz-adv-x="1021" d="M227 1546l181 260h206l181 -260h-174l-109 164h-4l-107 -164h-174z" /> -<glyph unicode="˜" horiz-adv-x="1021" d="M166 1548q0 260 209 260q59 0 104 -34.5t82 -69.5t72 -35q41 0 60.5 40t19.5 93h143q0 -260 -209 -260q-59 0 -104 35t-82 69.5t-72 34.5q-80 0 -80 -133h-143z" /> -<glyph unicode="–" horiz-adv-x="1445" d="M184 504v160h1078v-160h-1078z" /> -<glyph unicode="—" horiz-adv-x="1855" d="M184 504v160h1487v-160h-1487z" /> -<glyph unicode="‘" horiz-adv-x="464" d="M100 1069l136 399h145l-88 -399h-193z" /> -<glyph unicode="’" horiz-adv-x="448" d="M104 1071l89 399h192l-133 -399h-148z" /> -<glyph unicode="‚" horiz-adv-x="499" d="M86 -184l88 399h186l-133 -399h-141z" /> -<glyph unicode="“" horiz-adv-x="755" d="M100 1069l136 399h147l-88 -399h-195zM389 1069l135 399h148l-88 -399h-195z" /> -<glyph unicode="”" horiz-adv-x="737" d="M104 1071l89 399h194l-135 -399h-148zM393 1071l88 399h195l-133 -399h-150z" /> -<glyph unicode="„" horiz-adv-x="784" d="M86 -184l88 399h186l-133 -399h-141zM369 -184l88 399h188l-133 -399h-143z" /> -<glyph unicode="•" horiz-adv-x="841" d="M104 596q0 133 93.5 225t224.5 92t223 -93t92 -224t-92 -224t-223 -93t-224.5 92t-93.5 225z" /> -<glyph unicode="…" horiz-adv-x="1576" d="M156 0v211h202v-211h-202zM686 0v211h205v-211h-205zM1219 0v211h202v-211h-202z" /> -<glyph unicode="‹" horiz-adv-x="727" d="M90 578l336 421h199l-336 -421l336 -420h-199z" /> -<glyph unicode="›" horiz-adv-x="727" d="M102 158l336 420l-336 421h199l336 -421l-336 -420h-199z" /> -<glyph unicode="€" horiz-adv-x="1210" d="M78 528v129h112q-8 82 0 148h-112v131h137q61 236 251.5 385t440.5 149q51 0 102.5 -6t77.5 -12l27 -6l-49 -186q-76 23 -162 22q-170 0 -296 -94t-177 -252h576l-27 -131h-578q-12 -68 -2 -148h553l-26 -129h-492q47 -162 177 -261t300 -99q45 0 92.5 6t69.5 14l25 7 l39 -185q-98 -35 -230 -35q-258 0 -447.5 153t-246.5 400h-135z" /> -<glyph unicode="™" horiz-adv-x="1925" d="M47 1309v137h778v-137h-311v-764h-156v764h-311zM891 545l72 901h141l213 -471l29 -86h4q12 49 26 86l213 471h144l69 -901h-153l-43 538l2 62h-4l-195 -434h-125l-194 434h-5l2 -62l-43 -538h-153z" /> -<glyph unicode="" horiz-adv-x="1035" d="M0 1035h1035v-1035h-1035v1035z" /> -<glyph unicode="fi" horiz-adv-x="1198" d="M82 877v159h129v35q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5t-59 -67.5t-22.5 -115v-31h634v-1036h-198v877h-436v-877h-197v877h-129zM842 1243v203h200v-203h-200z" /> -<glyph unicode="fl" horiz-adv-x="1230" d="M82 862v160h129v49q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5t-59 -67.5t-22.5 -115v-45h245v-160h-245v-862h-197v862h-129zM831 283v1163h199v-1129q0 -86 28.5 -116.5t82.5 -30.5l35 2v-176q-31 -4 -66 -4 q-279 0 -279 291z" /> -<glyph unicode="ffi" horiz-adv-x="1886" d="M82 877v159h129v35q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5t-59 -67.5t-22.5 -115v-31h491v35q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5 t-59 -67.5t-22.5 -115v-31h635v-1036h-199v877h-436v-877h-197v877h-491v-877h-197v877h-129zM1530 1243v203h201v-203h-201z" /> -<glyph unicode="ffl" horiz-adv-x="1918" d="M82 877v159h129v35q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5t-59 -67.5t-22.5 -115v-31h491v35q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5 t-59 -67.5t-22.5 -115v-31h245v-159h-245v-877h-197v877h-491v-877h-197v877h-129zM1520 283v1163h198v-1129q0 -86 29 -116.5t82 -30.5l35 2v-176q-31 -4 -66 -4q-278 0 -278 291z" /> -</font> -</defs></svg>
\ No newline at end of file diff --git a/phonegap/www/fonts/MuseoSans_500-webfont.ttf b/phonegap/www/fonts/MuseoSans_500-webfont.ttf Binary files differdeleted file mode 100755 index d23f991ce..000000000 --- a/phonegap/www/fonts/MuseoSans_500-webfont.ttf +++ /dev/null diff --git a/phonegap/www/fonts/MuseoSans_500-webfont.woff b/phonegap/www/fonts/MuseoSans_500-webfont.woff Binary files differdeleted file mode 100755 index c1f85a061..000000000 --- a/phonegap/www/fonts/MuseoSans_500-webfont.woff +++ /dev/null diff --git a/phonegap/www/fonts/MuseoSans_500_Italic-webfont.eot b/phonegap/www/fonts/MuseoSans_500_Italic-webfont.eot Binary files differdeleted file mode 100755 index e60c7e02e..000000000 --- a/phonegap/www/fonts/MuseoSans_500_Italic-webfont.eot +++ /dev/null diff --git a/phonegap/www/fonts/MuseoSans_500_Italic-webfont.svg b/phonegap/www/fonts/MuseoSans_500_Italic-webfont.svg deleted file mode 100755 index 28df57c2f..000000000 --- a/phonegap/www/fonts/MuseoSans_500_Italic-webfont.svg +++ /dev/null @@ -1,227 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > -<svg xmlns="http://www.w3.org/2000/svg"> -<metadata> -This is a custom SVG webfont generated by Fontspring. -</metadata> -<defs> -<font id="MuseoSans500Italic" horiz-adv-x="1073" > -<font-face units-per-em="2048" ascent="1536" descent="-512" /> -<missing-glyph horiz-adv-x="526" /> -<glyph unicode=" " horiz-adv-x="526" /> -<glyph unicode="	" horiz-adv-x="526" /> -<glyph unicode=" " horiz-adv-x="526" /> -<glyph unicode="!" horiz-adv-x="643" d="M100 0l41 201h205l-39 -201h-207zM190 397l191 1049h207l-219 -1049h-179z" /> -<glyph unicode=""" horiz-adv-x="694" d="M217 1085l74 385h155l-73 -385h-156zM504 1085l76 385h155l-76 -385h-155z" /> -<glyph unicode="#" horiz-adv-x="1462" d="M43 391l53 152h264l129 344h-262l56 149h260l151 410h170l-151 -410h319l152 410h170l-152 -410h262l-55 -149h-262l-129 -344h262l-55 -152h-262l-144 -391h-170l144 391h-318l-143 -391h-170l143 391h-262zM530 543h318l129 344h-318z" /> -<glyph unicode="$" horiz-adv-x="1159" d="M27 166l129 143q14 -16 40.5 -40.5t118 -64.5t191.5 -40q115 0 206 68.5t91 181.5q0 70 -60.5 124t-145.5 96t-171 90t-146.5 128t-60.5 186q0 168 135 291t330 139l37 189h143l-37 -193q201 -25 316 -135l6 -6l-115 -149q-12 12 -36.5 30.5t-103.5 48t-163 29.5 q-125 0 -216 -73.5t-91 -170.5q0 -63 60.5 -114.5t146.5 -93.5t171 -90t145.5 -132t60.5 -194q0 -172 -134.5 -299t-334.5 -138l-37 -186h-144l35 193q-221 31 -354 168z" /> -<glyph unicode="%" horiz-adv-x="1570" d="M25 0l1366 1446h202l-1366 -1446h-202zM199 1133q0 129 109.5 233t246.5 104q123 0 199.5 -75.5t76.5 -194.5q0 -131 -109.5 -233.5t-246.5 -102.5q-125 0 -200.5 74t-75.5 195zM360 1137q0 -53 35 -87t94 -34q72 0 126.5 53t54.5 127q0 55 -36 90t-93 35 q-70 0 -125.5 -55t-55.5 -129zM784 244q0 129 108.5 233.5t246.5 104.5q123 0 199.5 -76t76.5 -195q0 -131 -109.5 -233.5t-244.5 -102.5q-125 0 -201 74t-76 195zM944 248q0 -53 36 -87t95 -34q70 0 125 54.5t55 125.5q0 55 -35.5 90t-93.5 35q-70 0 -126 -56t-56 -128z " /> -<glyph unicode="&" horiz-adv-x="1394" d="M63 356q0 139 96.5 260t243.5 162v4q-6 2 -15 7.5t-33.5 25t-43 44t-34 70.5t-15.5 101q0 201 147.5 320.5t356.5 119.5q43 0 91 -7t73 -13l26 -8l-79 -156q-57 12 -107 12q-123 0 -214 -74.5t-91 -197.5q0 -176 227 -176h269l38 197h199l-37 -197h191l-35 -176h-191 l-39 -193q-100 -506 -565 -506q-215 0 -337 105.5t-122 275.5zM276 369q0 -92 67 -149.5t183 -57.5q299 0 365 327l37 185h-277q-154 0 -264.5 -79t-110.5 -226z" /> -<glyph unicode="'" horiz-adv-x="409" d="M217 1085l74 385h160l-76 -385h-158z" /> -<glyph unicode="(" horiz-adv-x="612" d="M131 354q0 655 424 1151h180q-426 -532 -426 -1155q0 -287 94 -545h-165q-107 268 -107 549z" /> -<glyph unicode=")" horiz-adv-x="614" d="M-109 -195q426 537 426 1156q0 287 -94 544h166q106 -264 107 -549q0 -651 -424 -1151h-181z" /> -<glyph unicode="*" horiz-adv-x="948" d="M160 1090l88 167l252 -102l41 291h186l-74 -291l295 102l25 -174l-301 -79l-2 -5l135 -221l-156 -106l-117 243h-4l-204 -241l-134 108l228 230v4z" /> -<glyph unicode="+" horiz-adv-x="1376" d="M127 504l31 160h456l101 503h168l-101 -503h457l-29 -160h-456l-99 -504h-168l99 504h-459z" /> -<glyph unicode="," horiz-adv-x="528" d="M-100 -207l209 422h210l-258 -422h-161z" /> -<glyph unicode="-" horiz-adv-x="956" d="M156 496l32 176h598l-32 -176h-598z" /> -<glyph unicode="." horiz-adv-x="512" d="M35 0l41 215h213l-41 -215h-213z" /> -<glyph unicode="/" horiz-adv-x="825" d="M-68 -86l832 1610h188l-833 -1610h-187z" /> -<glyph unicode="0" horiz-adv-x="1288" d="M123 453q0 119 20.5 248.5t69.5 269t122 249t188.5 180t256.5 70.5q428 0 428 -477q0 -119 -20.5 -249t-69.5 -269t-121.5 -248.5t-188.5 -180.5t-259 -71q-426 1 -426 478zM332 457q0 -295 225 -295q92 0 169 58.5t126 148.5t83 202.5t48 217t14 196.5q0 299 -223 299 q-111 0 -200 -83t-139 -213t-76.5 -267t-26.5 -264z" /> -<glyph unicode="1" horiz-adv-x="995" d="M2 0l31 176h319l180 918l19 88h-4q-23 -33 -84 -84l-158 -129l-106 139l417 338h183l-248 -1270h313l-33 -176h-829z" /> -<glyph unicode="2" horiz-adv-x="1171" d="M10 0q2 129 52.5 237.5t130 185.5t176 143.5t192.5 125t175 115.5t128 129t49 151q0 88 -59 140.5t-158 52.5q-55 0 -109.5 -19.5t-92 -46t-68.5 -53t-45 -47.5l-16 -18l-144 112q8 10 22.5 27.5t64.5 64t104.5 80t137.5 62t169 28.5q184 0 297.5 -99t113.5 -263 q0 -139 -81.5 -255t-201.5 -197t-243 -151.5t-220 -154.5t-118 -174h707l-33 -176h-930z" /> -<glyph unicode="3" horiz-adv-x="1159" d="M-8 172l127 141q4 -6 12 -15t40 -34.5t66.5 -45t94 -35t123.5 -15.5q137 0 243.5 92t106.5 223q0 106 -82 160.5t-211 54.5h-104l-25 109l379 371l108 94v4q-43 -6 -122 -6h-478l35 176h864l-26 -129l-477 -459q57 -6 113.5 -27.5t110.5 -62.5t88 -112.5t34 -163.5 q0 -207 -160 -362t-393 -155q-92 0 -173 20.5t-132.5 49.5t-90 57.5t-55.5 49.5z" /> -<glyph unicode="4" horiz-adv-x="1243" d="M20 387l25 127l832 932h249l-174 -887h197l-33 -172h-196l-76 -387h-199l74 387h-699zM295 559h459l102 526l35 144h-4q-47 -66 -94 -119l-498 -549v-2z" /> -<glyph unicode="5" horiz-adv-x="1159" d="M16 176l131 137q4 -6 11.5 -15t35 -34.5t59.5 -45t85 -35t113 -15.5q143 0 258.5 101.5t115.5 248.5q0 106 -76.5 173t-201.5 67q-66 0 -130.5 -18.5t-97.5 -34.5l-30 -19l-115 45l213 715h735l-35 -176h-555l-92 -301l-24 -76h4q82 41 186 41q188 0 309 -114.5 t121 -291.5q0 -229 -175 -391t-408 -162q-264 0 -408 164z" /> -<glyph unicode="6" horiz-adv-x="1228" d="M113 504q0 143 54 307t150.5 313.5t253 247.5t340.5 98q84 0 158 -15t107 -30l30 -16l-92 -166q-86 41 -201 41q-186 0 -325 -142.5t-205 -342.5h4q55 61 145.5 99t178.5 38q184 0 289.5 -109.5t105.5 -287.5q0 -215 -149.5 -389.5t-381.5 -174.5q-211 0 -336.5 142.5 t-125.5 386.5zM317 485q0 -131 71 -227t185 -96q139 0 234.5 108.5t95.5 261.5q0 106 -64.5 169t-183.5 63q-121 0 -229.5 -81t-108.5 -198z" /> -<glyph unicode="7" horiz-adv-x="1085" d="M39 0l784 1139q59 84 111 133v4q-33 -6 -105 -6h-632l34 176h967l-27 -139l-907 -1307h-225z" /> -<glyph unicode="8" horiz-adv-x="1249" d="M76 369q0 86 40 166.5t102.5 139t100 88.5t70.5 48q-123 102 -123 240q0 166 138.5 292.5t363.5 126.5q195 0 306.5 -90t111.5 -250q0 -72 -32 -147.5t-81 -136t-80.5 -93t-58.5 -55.5q154 -106 153 -260q0 -188 -160.5 -325.5t-391.5 -137.5q-209 0 -334 107t-125 287z M289 379q0 -100 71.5 -160.5t178.5 -60.5q133 0 236.5 77.5t103.5 200.5q0 39 -17.5 71t-60.5 63.5t-72 48t-100 52.5l-97 48q-33 -18 -67.5 -45t-77.5 -71t-70.5 -102.5t-27.5 -121.5zM471 1053q0 -29 9 -54.5t30.5 -49t39 -40t54.5 -37t56.5 -31t64.5 -32t61 -29.5 q193 166 193 336q0 80 -58.5 126t-160.5 46q-127 0 -208 -68.5t-81 -166.5z" /> -<glyph unicode="9" horiz-adv-x="1230" d="M66 37l92 166q88 -41 202 -41q186 0 324.5 142t204.5 343h-4q-45 -55 -135.5 -95t-186.5 -40q-186 0 -290.5 108.5t-104.5 286.5q0 215 150.5 389t381.5 174q211 0 336 -142t125 -386q0 -113 -32.5 -242t-101.5 -257t-161 -232.5t-224 -170t-280 -65.5q-185 1 -296 62z M369 913q0 -104 64.5 -167.5t180.5 -63.5q121 0 230.5 82t109.5 199q0 131 -69.5 226t-186.5 95q-139 0 -234 -108.5t-95 -262.5z" /> -<glyph unicode=":" horiz-adv-x="595" d="M72 0l41 215h215l-43 -215h-213zM231 821l43 215h213l-41 -215h-215z" /> -<glyph unicode=";" horiz-adv-x="606" d="M-74 -207l209 422h211l-256 -422h-164zM252 821l41 215h209l-41 -215h-209z" /> -<glyph unicode="<" horiz-adv-x="1171" d="M59 516v135l955 426v-182l-733 -309v-4l733 -310v-182z" /> -<glyph unicode="=" horiz-adv-x="1376" d="M190 309v160h977v-160h-977zM190 696v160h977v-160h-977z" /> -<glyph unicode=">" horiz-adv-x="1165" d="M141 90v182l731 310v4l-731 309v182l955 -426v-135z" /> -<glyph unicode="?" horiz-adv-x="989" d="M168 0l41 201h205l-39 -201h-207zM199 1356q18 12 51 32.5t128 53.5t185 33q166 0 273.5 -89.5t107.5 -238.5q0 -100 -45 -184t-111.5 -140.5t-135 -105.5t-124 -109.5t-67.5 -126.5l-19 -84h-192l18 97q18 90 72.5 165.5t119 126t127 99.5t104.5 108.5t42 128.5 q0 74 -53 120t-143 46q-131 -2 -250 -86z" /> -<glyph unicode="@" horiz-adv-x="1658" d="M84 358q0 176 73.5 341t195.5 286t285 193.5t333 72.5q252 0 364.5 -95t112.5 -255q0 -49 -12 -110l-103 -535h146l-29 -150h-537q-174 0 -275 95.5t-101 240.5q0 170 140 302.5t343 132.5h242q4 20 4 32q0 80 -77 129t-216 49q-274 0 -482 -220t-208 -498 q0 -205 129 -336t352 -131l-31 -158q-283 0 -466 174t-183 440zM737 446q0 -84 54.5 -137t144.5 -53h205l94 483h-201q-121 0 -209 -88t-88 -205z" /> -<glyph unicode="A" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205z" /> -<glyph unicode="B" horiz-adv-x="1302" d="M78 0l282 1446h465q125 0 197 -27q92 -35 143.5 -109.5t51.5 -179.5q0 -123 -67 -221t-177 -145v-4q84 -31 131 -106.5t47 -178.5q0 -156 -84 -270.5t-221 -167.5q-94 -37 -213 -37h-555zM315 176h326q78 0 135 29q76 37 121 109.5t45 164.5q0 88 -54 139.5t-153 51.5 h-323zM442 838h306q111 0 186.5 77.5t75.5 192.5q0 76 -46 119t-135 43h-301z" /> -<glyph unicode="C" horiz-adv-x="1480" d="M111 602q0 231 118.5 433t316 318.5t421.5 116.5q102 0 193 -19t148.5 -48t100.5 -57.5t61 -47.5l19 -20l-121 -139q-16 16 -47 40.5t-133.5 64.5t-214.5 40q-270 0 -462 -201.5t-192 -470.5q0 -197 118 -323.5t323 -126.5q236 0 452 164l29 22l88 -160q-10 -8 -28.5 -22 t-78 -51t-123 -66t-159.5 -51.5t-190 -22.5q-293 0 -466 174t-173 453z" /> -<glyph unicode="D" horiz-adv-x="1513" d="M80 0l280 1446h447q299 0 469 -147.5t170 -415.5q0 -242 -107.5 -442.5t-304 -320.5t-442.5 -120h-512zM315 176h263q289 0 475 197.5t186 492.5q0 195 -119 299.5t-327 104.5h-265z" /> -<glyph unicode="E" horiz-adv-x="1171" d="M78 0l284 1446h838l-35 -176h-637l-88 -453h518l-34 -176h-518l-91 -465h672l-33 -176h-876z" /> -<glyph unicode="F" horiz-adv-x="1069" d="M78 0l282 1446h795l-35 -176h-594l-92 -475h504l-33 -177h-506l-120 -618h-201z" /> -<glyph unicode="G" horiz-adv-x="1556" d="M111 590q0 358 258 619t610 261q299 0 489 -147l29 -25l-123 -141q-6 6 -17 14.5t-49 30t-80 38.5t-108.5 30.5t-136.5 13.5q-281 0 -471 -205t-190 -479q0 -201 119.5 -319.5t312.5 -118.5q219 0 422 168l26 22l39 199h-233l32 176h420l-141 -727h-176l16 90l15 62h-5 q-6 -6 -19 -18.5t-58 -43.5t-94.5 -53.5t-125 -42t-153.5 -19.5q-260 0 -434 170.5t-174 444.5z" /> -<glyph unicode="H" horiz-adv-x="1546" d="M78 0l282 1446h201l-125 -637h752l125 637h200l-282 -1446h-201l123 635h-752l-122 -635h-201z" /> -<glyph unicode="I" horiz-adv-x="595" d="M78 0l282 1446h201l-280 -1446h-203z" /> -<glyph unicode="J" horiz-adv-x="1089" d="M10 317q0 55 10 107l13 63h200l-10 -59q-8 -53 -8 -82q0 -184 182 -184q94 0 171 62.5t104 193.5l166 852h-363l35 176h563l-203 -1047q-29 -145 -105.5 -243.5t-169.5 -139.5t-202 -41q-164 0 -273.5 87t-109.5 255z" /> -<glyph unicode="K" horiz-adv-x="1275" d="M78 0l282 1446h201l-119 -608h207l492 608h235l-565 -694v-4l299 -748h-215l-258 664h-229l-129 -664h-201z" /> -<glyph unicode="L" horiz-adv-x="1071" d="M78 0l282 1446h203l-248 -1270h648l-37 -176h-848z" /> -<glyph unicode="M" horiz-adv-x="1771" d="M31 0l395 1446h211l180 -782l33 -195h4q61 113 111 195l485 782h217l-166 -1446h-198l108 911q10 88 37 213h-4q-70 -135 -119 -213l-414 -651h-182l-162 651l-37 217h-4q-18 -129 -43 -217l-250 -911h-202z" /> -<glyph unicode="N" horiz-adv-x="1536" d="M78 0l282 1446h187l463 -940q37 -76 77 -209h5q10 129 26 209l182 940h203l-282 -1446h-187l-463 938q-39 80 -79 211h-5q-10 -129 -26 -211l-182 -938h-201z" /> -<glyph unicode="O" horiz-adv-x="1677" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q289 0 467 -172t178 -442q0 -231 -125 -437t-324.5 -325t-414.5 -119q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 123 -326.5t316 -125.5q250 0 451.5 203.5t201.5 480.5q0 195 -122 316.5t-316 121.5 q-252 0 -453 -199t-201 -471z" /> -<glyph unicode="P" horiz-adv-x="1245" d="M78 0l282 1446h496q137 0 225 -47q86 -45 134.5 -129t48.5 -193q0 -170 -87 -304t-229 -195q-100 -43 -215 -43h-348l-104 -535h-203zM418 711h295q88 0 153 32q86 41 137.5 125t51.5 195q0 98 -60.5 152.5t-173.5 54.5h-293z" /> -<glyph unicode="Q" horiz-adv-x="1699" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q287 0 465 -172t178 -442q0 -350 -268 -614l133 -160l-129 -119l-136 170q-209 -158 -462 -158q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 122 -326.5t317 -125.5q178 0 342 114l-140 170l129 119l138 -174 q182 199 182 455q0 195 -122 316.5t-314 121.5q-252 0 -453 -199t-201 -471z" /> -<glyph unicode="R" horiz-adv-x="1306" d="M78 0l282 1446h492q125 0 205 -37q184 -86 184 -303q0 -164 -94 -298t-254 -179v-4q10 -20 27 -66l200 -559h-215l-198 575h-316l-110 -575h-203zM426 752h285q135 0 228 90t93 235q0 90 -57 141.5t-158 51.5h-291z" /> -<glyph unicode="S" horiz-adv-x="1120" d="M6 166l127 143q4 -6 14.5 -15t44 -35t71.5 -45t98.5 -34.5t123.5 -15.5q115 0 205 68.5t90 181.5q0 70 -60.5 124t-145.5 96t-170 90t-145 128t-60 186q0 180 151.5 306t362.5 126q127 0 230.5 -36.5t143.5 -73.5l41 -37l-114 -149q-12 12 -37 30.5t-103.5 48 t-162.5 29.5q-125 0 -217.5 -73.5t-92.5 -170.5q0 -63 60.5 -114.5t146.5 -93.5t172 -90t146.5 -132t60.5 -194q0 -178 -145.5 -308.5t-360.5 -130.5q-272 0 -444 160z" /> -<glyph unicode="T" horiz-adv-x="1206" d="M131 1270l33 176h1194l-33 -176h-498l-245 -1270h-203l248 1270h-496z" /> -<glyph unicode="U" horiz-adv-x="1488" d="M147 403q0 55 13 117l180 926h201l-181 -932q-8 -39 -8 -86q0 -127 80 -196.5t225 -69.5q168 0 285 94t150 262l182 928h201l-185 -944q-47 -242 -219 -384.5t-418 -142.5q-225 0 -365.5 113.5t-140.5 314.5z" /> -<glyph unicode="V" horiz-adv-x="1290" d="M166 1446h211l160 -1022q12 -78 16 -199h4q53 121 94 199l559 1022h228l-809 -1446h-217z" /> -<glyph unicode="W" horiz-adv-x="1951" d="M225 1446h207l53 -1061v-154h4q27 74 64 154l500 1061h184l63 -1061v-154h5q27 78 59 154l461 1061h221l-651 -1446h-238l-63 938v205h-4q-43 -111 -86 -203l-449 -940h-233z" /> -<glyph unicode="X" horiz-adv-x="1239" d="M-74 0l598 754l-291 692h220l153 -385l62 -172h4q55 88 119 168l303 389h239l-571 -709l317 -737h-215l-182 438l-59 166h-5q-55 -82 -116 -162l-346 -442h-230z" /> -<glyph unicode="Y" horiz-adv-x="1185" d="M164 1446h217l174 -475q29 -80 53 -183h4q61 98 123 181l355 477h243l-651 -840l-119 -606h-201l121 612z" /> -<glyph unicode="Z" horiz-adv-x="1232" d="M-37 0l27 135l874 1004q33 37 66 69l49 49l16 15v4q-37 -6 -106 -6h-643l35 176h1013l-26 -133l-877 -1006q-33 -37 -65.5 -69.5t-49.5 -47.5l-16 -14v-4q37 4 107 4h686l-33 -176h-1057z" /> -<glyph unicode="[" horiz-adv-x="612" d="M43 -195l332 1700h340l-31 -149h-166l-270 -1399h166l-31 -152h-340z" /> -<glyph unicode="\" horiz-adv-x="806" d="M229 1524h168l207 -1610h-168z" /> -<glyph unicode="]" horiz-adv-x="602" d="M-94 -195l31 152h163l271 1399h-164l29 149h339l-329 -1700h-340z" /> -<glyph unicode="^" horiz-adv-x="1255" d="M23 506l409 940h129l408 -940h-178l-295 721l-293 -721h-180z" /> -<glyph unicode="_" horiz-adv-x="1204" d="M-96 -160l28 160h1102l-30 -160h-1100z" /> -<glyph unicode="`" horiz-adv-x="1021" d="M248 1806h205l96 -260h-158z" /> -<glyph unicode="a" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228z" /> -<glyph unicode="b" horiz-adv-x="1226" d="M35 0l280 1446h199l-90 -469l-27 -94h4q55 80 149.5 129t194.5 49q184 0 287 -115t103 -311q0 -285 -171 -472.5t-397 -187.5q-109 0 -193.5 49.5t-121.5 139.5h-4q0 -39 -8 -84l-17 -80h-188zM317 410q0 -115 58.5 -189t173.5 -74q145 0 264 131.5t119 342.5 q0 125 -62.5 195.5t-171.5 70.5q-158 0 -269.5 -143.5t-111.5 -333.5z" /> -<glyph unicode="c" horiz-adv-x="1118" d="M53 426q0 262 190.5 448.5t448.5 186.5q236 0 373 -131l18 -19l-110 -129q-10 12 -31.5 29.5t-92.5 47.5t-147 30q-178 0 -312 -132t-134 -317q0 -131 83 -212t220 -81q86 0 173 35t132 70l43 35l56 -158q-18 -16 -53.5 -42t-146 -69t-222.5 -43q-223 0 -355.5 125 t-132.5 326z" /> -<glyph unicode="d" horiz-adv-x="1228" d="M55 399q0 287 171 474.5t403 187.5q100 0 184 -44t119 -130h4q0 39 8 76l94 483h199l-281 -1446h-190l20 98l19 76h-4q-57 -86 -149.5 -142.5t-205.5 -56.5q-184 0 -287.5 113.5t-103.5 310.5zM258 414q0 -125 63.5 -196t172.5 -71q158 0 268 146.5t110 331.5 q0 115 -58 188.5t-173 73.5q-145 0 -264 -131t-119 -342z" /> -<glyph unicode="e" horiz-adv-x="1128" d="M55 418q0 262 173 452.5t429 190.5q195 0 295.5 -104.5t100.5 -278.5q0 -37 -8.5 -84t-16.5 -76l-8 -29h-756q-6 -31 -6 -61q0 -121 78 -201t217 -80q80 0 162 31t125 60l43 30l57 -157q-18 -14 -53 -37t-139.5 -61t-202.5 -38q-223 0 -356.5 123t-133.5 320zM297 639 h553q4 23 4 55q0 100 -55.5 154.5t-145.5 54.5q-115 0 -212 -71.5t-144 -192.5z" /> -<glyph unicode="f" horiz-adv-x="686" d="M92 0l168 864h-129l31 162h129l10 49q18 96 60 169t89.5 112t107.5 63.5t104.5 30.5t87.5 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-9 -41h244l-31 -162h-243l-168 -864h-199z" /> -<glyph unicode="g" horiz-adv-x="1210" d="M-2 -338l86 148q113 -68 276 -68q145 0 250 71.5t133 219.5l17 76l18 71h-2q-123 -168 -319 -168q-186 0 -291 116t-105 304q0 150 61.5 291t189.5 239.5t296 98.5q248 0 316 -164h4q0 23 4 43l18 96h189l-195 -1007q-47 -238 -206.5 -348.5t-366.5 -110.5t-373 92z M264 446q0 -123 62.5 -192.5t179.5 -69.5q166 0 261 151.5t95 330.5q0 223 -237 223q-164 0 -262.5 -133.5t-98.5 -309.5z" /> -<glyph unicode="h" horiz-adv-x="1230" d="M35 0l280 1446h199l-102 -531l-23 -92h4q49 88 164 163t254 75q143 0 224 -68.5t81 -206.5q0 -55 -16 -131l-127 -655h-199l119 612q14 76 14 117q0 150 -153 150q-152 0 -275 -120t-153 -286l-93 -473h-198z" /> -<glyph unicode="i" horiz-adv-x="507" d="M35 0l203 1036h198l-203 -1036h-198zM274 1243l39 203h205l-41 -203h-203z" /> -<glyph unicode="j" horiz-adv-x="507" d="M-311 -418l32 170q18 -2 46 -2q35 0 68.5 8.5t76.5 28.5t74.5 69.5t46.5 120.5l205 1059h198l-209 -1069q-18 -98 -60 -173t-88 -114.5t-105.5 -64.5t-102.5 -31t-88 -6zM274 1243l39 203h205l-39 -203h-205z" /> -<glyph unicode="k" d="M35 0l282 1446h199l-156 -789h142l358 379h240l-443 -465v-4l269 -567h-215l-219 485h-164l-95 -485h-198z" /> -<glyph unicode="l" horiz-adv-x="540" d="M72 209q0 33 10 88l223 1149h199l-215 -1114q-10 -47 -10 -78q0 -84 92 -84l32 2l-36 -176q-29 -4 -60 -4q-98 0 -166.5 49t-68.5 168z" /> -<glyph unicode="m" horiz-adv-x="1867" d="M37 0l201 1036h194l-26 -133l-25 -86h4q57 100 167 172t230 72q250 0 273 -236h4q61 100 171.5 168t231.5 68q141 0 216 -68.5t75 -206.5q0 -57 -16 -139l-125 -647h-199l121 616q12 68 12 113q0 152 -147 152q-137 0 -244.5 -124t-138.5 -284l-92 -473h-197l119 616 q12 68 12 117q0 147 -143 148q-135 0 -246 -124t-141 -286l-92 -471h-199z" /> -<glyph unicode="n" horiz-adv-x="1232" d="M37 0l201 1036h194l-22 -121l-29 -98h4q49 90 168 167t260 77q143 0 223 -68.5t80 -206.5q0 -49 -14 -131l-127 -655h-199l119 612q14 76 14 117q0 150 -153.5 150t-275.5 -119t-154 -287l-90 -473h-199z" /> -<glyph unicode="o" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q217 0 354.5 -126t137.5 -327q0 -262 -195.5 -447.5t-443.5 -185.5q-219 0 -356.5 127t-137.5 330zM256 440q0 -131 82 -212t211 -81q166 0 300 132.5t134 318.5q0 129 -82 210t-209 81q-170 0 -303 -131.5t-133 -317.5z" /> -<glyph unicode="p" horiz-adv-x="1226" d="M-43 -410l281 1446h184l-16 -88l-23 -82h4q57 86 150.5 140.5t210.5 54.5q184 0 286.5 -115t102.5 -311q0 -285 -170 -472.5t-394 -187.5q-106 0 -189 46.5t-120 134.5h-4q-4 -43 -14 -97l-90 -469h-199zM319 414q0 -117 59.5 -192t172.5 -75q145 0 264 131.5t119 342.5 q0 125 -62.5 195.5t-171.5 70.5q-156 0 -268.5 -144.5t-112.5 -328.5z" /> -<glyph unicode="q" horiz-adv-x="1228" d="M55 397q0 287 171 475.5t403 188.5q233 0 309 -180h4q2 31 10 71l15 84h190l-280 -1446h-199l90 473l27 97h-4q-49 -76 -139.5 -130.5t-207.5 -54.5q-184 0 -286.5 113.5t-102.5 308.5zM258 414q0 -125 63.5 -196t172.5 -71q158 0 268 146.5t110 331.5q0 115 -58 188.5 t-173 73.5q-145 0 -264 -131t-119 -342z" /> -<glyph unicode="r" horiz-adv-x="765" d="M37 0l201 1036h192l-37 -180l-20 -84h2q55 117 156.5 197t218.5 80q37 0 61 -5l-39 -196q-23 6 -55 6q-137 0 -255 -144.5t-155 -332.5l-71 -377h-199z" /> -<glyph unicode="s" horiz-adv-x="909" d="M-23 125l109 131q12 -12 33.5 -30.5t96.5 -50.5t157 -32q80 0 144.5 41t64.5 113q0 43 -47.5 77t-114 62.5t-133 63.5t-113.5 96t-47 145q0 145 120 232.5t277 87.5q205 0 330 -107l8 -8l-98 -137q-8 10 -25.5 23.5t-80 37t-136.5 23.5q-78 0 -142.5 -38t-64.5 -112 q0 -43 47.5 -76.5t115 -62.5t134 -63.5t113.5 -97t47 -146.5q0 -141 -115.5 -231.5t-283.5 -90.5q-72 0 -139.5 15.5t-111.5 37t-78 44t-50 39.5z" /> -<glyph unicode="t" horiz-adv-x="722" d="M111 864l30 162h140l59 295h192l-59 -295h250l-31 -162h-250l-86 -452q-8 -41 -8 -82q0 -162 170 -162l60 4l-35 -176q-33 -4 -66 -4q-334 0 -334 303q0 45 13 104l90 465h-135z" /> -<glyph unicode="u" horiz-adv-x="1220" d="M80 250q0 49 14 131l127 655h199l-119 -610q-12 -68 -12 -119q0 -72 35.5 -109.5t119.5 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-194l24 121l27 98h-4q-53 -92 -166 -168t-254 -76q-133 0 -217 67t-84 208z" /> -<glyph unicode="v" horiz-adv-x="1009" d="M86 1036h197l112 -704l11 -142h4q35 84 65 142l387 704h213l-586 -1036h-219z" /> -<glyph unicode="w" horiz-adv-x="1658" d="M115 1036h198l74 -731l4 -110h4q25 59 49 110l365 729h184l80 -729l6 -110h4q20 57 47 110l361 731h213l-535 -1036h-219l-86 670l-6 110h-4q-25 -57 -51 -110l-342 -670h-215z" /> -<glyph unicode="x" horiz-adv-x="1032" d="M-76 0l465 539l-250 497h213l144 -309l22 -65h4q23 35 43 61l254 313h236l-439 -512l261 -524h-209l-160 340l-25 61h-4q-18 -33 -39 -57l-282 -344h-234z" /> -<glyph unicode="y" horiz-adv-x="1042" d="M-188 -362l92 141q43 -37 112 -37q129 0 220 149l75 123l-237 1022h207l139 -700l16 -123h2q31 68 60 119l389 704h223l-727 -1226q-143 -240 -358 -240q-125 0 -213 68z" /> -<glyph unicode="z" horiz-adv-x="1046" d="M-41 0l21 115l641 655l102 96v4q-31 -4 -98 -4h-478l33 170h852l-20 -114l-643 -658l-105 -94v-4q33 4 101 4h516l-33 -170h-889z" /> -<glyph unicode="{" horiz-adv-x="714" d="M90 578l35 176q6 0 18.5 2t45 16t60 36.5t54.5 68t39 104.5l37 184q68 344 399 344q10 0 21.5 -1t17.5 -1h8l-30 -151h-27q-176 0 -219 -215l-45 -226q-33 -170 -185 -235l-32 -12v-4l13 -6.5t29.5 -22t37 -40t30 -60t13.5 -82.5q0 -27 -7 -60l-45 -223q-8 -41 -8 -72 q0 -143 146 -143h28l-30 -152q-20 -4 -50 -4q-27 0 -55.5 5.5t-69 21.5t-71.5 44t-52.5 78t-21.5 118q0 49 12 104l35 184q6 35 6 60q0 127 -114 159z" /> -<glyph unicode="|" horiz-adv-x="651" d="M244 -326v1948h174v-1948h-174z" /> -<glyph unicode="}" horiz-adv-x="706" d="M-100 -197l28 152h27q180 0 221 215l47 244q12 59 39 107t56.5 74t57 43t46.5 24l18 6v4q-14 6 -33.5 18t-53.5 64.5t-34 122.5q0 29 7 61l39 203q8 35 8 71q0 143 -146 144h-26l28 151q23 4 49.5 4t55 -5t69.5 -21.5t72 -44t53.5 -77.5t22.5 -118q0 -31 -12 -104 l-31 -164q-6 -35 -6 -59q0 -68 33.5 -109t66.5 -47l35 -8l-33 -176q-8 0 -20.5 -2.5t-45 -16.5t-59 -36.5t-54.5 -67.5t-40 -105l-39 -205q-66 -346 -401 -346z" /> -<glyph unicode="~" horiz-adv-x="1210" d="M113 418q0 174 74.5 260t211.5 86q72 0 130.5 -32t89 -68.5t75.5 -68.5t97 -32q74 0 105.5 57.5t31.5 135.5h162q0 -346 -285 -346q-72 0 -130.5 30.5t-89 68.5t-76.5 68.5t-97 30.5q-72 0 -105 -57t-33 -133h-161z" /> -<glyph unicode="¡" horiz-adv-x="585" d="M-8 -410l219 1049h178l-190 -1049h-207zM231 836l41 200h207l-41 -200h-207z" /> -<glyph unicode="¢" horiz-adv-x="1181" d="M117 602q0 172 73.5 327.5t202.5 256t283 114.5l33 170h145l-35 -178q78 -14 139.5 -51t93 -80t53 -85t28.5 -68l6 -27l-181 -68q-2 8 -5 21.5t-19 48.5t-40 61.5t-70 48t-105 21.5q-170 0 -283.5 -150.5t-113.5 -361.5q0 -125 62 -196.5t183 -71.5q90 0 170 50t115 99 l33 49l176 -73q-6 -12 -18.5 -31.5t-56.5 -71t-94 -92.5t-130 -76.5t-166 -42.5l-33 -172h-145l35 181q-154 31 -245 148.5t-91 299.5z" /> -<glyph unicode="£" horiz-adv-x="1193" d="M-6 0l35 176h121l92 477h-90l28 144h90l58 293q31 164 169 272t320 108q197 0 328 -124l12 -15l-133 -127q-8 8 -25.5 22.5t-73 37t-112.5 22.5q-111 0 -188.5 -62.5t-96.5 -156.5l-53 -270h379l-29 -144h-379l-92 -477h668l-35 -176h-993z" /> -<glyph unicode="¥" horiz-adv-x="1239" d="M139 408l25 129h334l16 75l-37 99h-278l24 129h211l-221 606h221l154 -451q33 -94 55 -209h4q57 113 125 207l328 453h241l-456 -606h209l-27 -129h-276l-72 -99l-17 -75h332l-24 -129h-332l-80 -408h-205l80 408h-334z" /> -<glyph unicode="§" horiz-adv-x="894" d="M-23 -16l109 120q70 -63 186 -63q123 0 191.5 80t71.5 207l14 788h162l-15 -797q-4 -186 -116.5 -316t-309.5 -130q-170 0 -286 104zM207 227l14 799q4 186 116 315t310 129q170 0 287 -104l6 -6l-109 -119q-70 63 -184 64q-125 0 -193.5 -81t-70.5 -208l-14 -789h-162z " /> -<glyph unicode="¨" horiz-adv-x="1021" d="M131 1599l41 207h164l-41 -207h-164zM475 1599l39 207h164l-41 -207h-162z" /> -<glyph unicode="©" horiz-adv-x="1697" d="M137 723q0 311 212 529t515 218q305 0 519 -218t214 -529t-214 -529.5t-519 -218.5q-303 0 -515 218.5t-212 529.5zM287 723q0 -256 167 -432t410 -176q248 0 416 176t168 432t-168 432t-416 176q-244 0 -410.5 -176t-166.5 -432zM475 721q0 168 111.5 288.5t292.5 120.5 q195 0 311 -165l22 -37l-125 -68q-8 14 -23 36t-67.5 57.5t-111.5 35.5q-117 0 -185.5 -79t-68.5 -189q0 -115 67.5 -191.5t186.5 -76.5q59 0 110.5 32.5t71.5 63.5l20 33l125 -68q-4 -8 -12 -21.5t-37.5 -49t-64.5 -62.5t-94.5 -48.5t-124.5 -21.5q-180 0 -292 120 t-112 290z" /> -<glyph unicode="ª" horiz-adv-x="856" d="M131 543l23 116h563l-25 -116h-561zM213 956q0 250 420 250h35q6 35 6 51q0 90 -109 91q-41 0 -87 -14.5t-72 -26.5l-25 -15l-41 105q106 70 258 69q223 0 223 -198q0 -39 -10 -86l-76 -385h-139l18 94h-4q-8 -12 -24.5 -30.5t-69.5 -48.5t-113 -30q-76 0 -133 46 t-57 128zM367 973q0 -31 22.5 -50.5t65.5 -19.5q66 0 121 60.5t67 119.5l4 19h-24q-256 0 -256 -129z" /> -<glyph unicode="«" horiz-adv-x="1134" d="M76 582l391 417h209l-410 -430l262 -411h-188zM483 582l424 417h213l-446 -430l262 -411h-188z" /> -<glyph unicode="¬" horiz-adv-x="1290" d="M143 696v160h977v-547h-166v387h-811z" /> -<glyph unicode="­" horiz-adv-x="882" d="M6 496l33 176h598l-33 -176h-598z" /> -<glyph unicode="®" horiz-adv-x="1697" d="M137 723q0 311 212 529t515 218q305 0 519 -218t214 -529t-214 -529.5t-519 -218.5q-303 0 -515 218.5t-212 529.5zM287 723q0 -256 167 -432t410 -176q248 0 416 176t168 432t-168 432t-416 176q-244 0 -410.5 -176t-166.5 -432zM614 340v772h297q111 0 177.5 -64.5 t66.5 -170.5q0 -82 -43 -136.5t-98 -68.5v-4q8 -8 26 -43l148 -285h-160l-143 299h-125v-299h-146zM760 745h123q57 0 91 35t34 97q0 59 -34 91.5t-91 32.5h-123v-256z" /> -<glyph unicode="¯" horiz-adv-x="1021" d="M131 1606l27 143h520l-27 -143h-520z" /> -<glyph unicode="°" horiz-adv-x="792" d="M186 1130q0 133 107.5 236.5t241.5 103.5q123 0 201.5 -75.5t78.5 -190.5q0 -135 -108.5 -237.5t-239.5 -102.5q-123 0 -202 74.5t-79 191.5zM346 1139q0 -55 35 -89t94 -34q70 0 125 53t55 125q0 55 -35.5 91t-93.5 36q-72 0 -126 -55t-54 -127z" /> -<glyph unicode="±" horiz-adv-x="1433" d="M145 504v160h459v503h168v-503h457v-160h-457v-504h-168v504h-459zM178 -195h1018v-159h-1018v159z" /> -<glyph unicode="²" horiz-adv-x="796" d="M-8 866q2 119 60.5 209t139 143.5t161.5 98.5t137.5 99t56.5 118q0 47 -34 76.5t-89 29.5q-45 0 -93 -24.5t-73 -48.5l-27 -25l-90 100q14 16 40 39t102.5 62t150.5 39q121 0 197 -64.5t76 -171.5q0 -88 -48.5 -157.5t-119 -115.5t-143 -85t-133 -86t-77.5 -101h430 l-26 -135h-598z" /> -<glyph unicode="³" horiz-adv-x="796" d="M8 981l96 100q8 -10 23.5 -25.5t71 -42t116.5 -26.5q78 0 135.5 52.5t57.5 127.5q0 55 -46 88t-110 33h-69l-25 78l221 211l60 49v4q-39 -6 -74 -6h-283l25 137h557l-19 -98l-274 -258q76 -14 135.5 -73.5t59.5 -162.5q0 -127 -101.5 -225t-251.5 -98q-88 0 -164.5 33.5 t-107.5 66.5z" /> -<glyph unicode="´" horiz-adv-x="1021" d="M186 1546l201 260h223l-245 -260h-179z" /> -<glyph unicode="µ" horiz-adv-x="1265" d="M-29 -410l281 1446h199l-119 -610q-12 -68 -13 -119q0 -72 36 -109.5t120 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-195l25 121l27 98h-5q-53 -92 -165.5 -168t-253.5 -76q-125 0 -185 68h-4q-6 -104 -18 -164l-58 -289h-176z" /> -<glyph unicode="μ" horiz-adv-x="1265" d="M-29 -410l281 1446h199l-119 -610q-12 -68 -13 -119q0 -72 36 -109.5t120 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-195l25 121l27 98h-5q-53 -92 -165.5 -168t-253.5 -76q-125 0 -185 68h-4q-6 -104 -18 -164l-58 -289h-176z" /> -<glyph unicode="¶" horiz-adv-x="1210" d="M147 909q0 215 173.5 376t388.5 161h581l-33 -176h-403l-266 -1372h-154l115 596q-162 0 -282 119.5t-120 295.5zM715 -102l241 1255h154l-244 -1255h-151z" /> -<glyph unicode="·" horiz-adv-x="552" d="M147 485l41 215h207l-41 -215h-207z" /> -<glyph unicode="¸" horiz-adv-x="1021" d="M184 -410l23 117q39 -12 84 -12t77.5 17.5t32.5 56.5q0 53 -96 53l-37 -2l103 227l96 -20l-2 -17l-47 -112q51 -8 87 -42t36 -92q0 -94 -73 -141t-163 -47q-33 0 -62.5 3t-43.5 7z" /> -<glyph unicode="¹" horiz-adv-x="796" d="M43 866l25 135h190l96 500l17 53h-4q-12 -16 -45 -45l-82 -65l-78 106l260 211h137l-147 -760h188l-27 -135h-530z" /> -<glyph unicode="º" horiz-adv-x="950" d="M141 543l23 116h641l-23 -116h-641zM217 1071q0 164 124 280.5t280 116.5q135 0 221 -79.5t86 -206.5q0 -164 -124 -280t-282 -116q-133 0 -219 80t-86 205zM367 1083q0 -76 46 -120.5t119 -44.5q94 0 170 74.5t76 181.5q0 72 -46 117.5t-118 45.5q-96 0 -171.5 -75 t-75.5 -179z" /> -<glyph unicode="»" horiz-adv-x="1134" d="M2 158l447 430l-263 411h189l264 -424l-426 -417h-211zM446 158l410 430l-262 411h188l265 -424l-392 -417h-209z" /> -<glyph unicode="¼" horiz-adv-x="1966" d="M104 551l25 135h190l97 500l16 53h-4q-12 -16 -45 -45l-82 -66l-78 107l260 211h138l-148 -760h189l-27 -135h-531zM410 0l966 1446h164l-967 -1446h-163zM1087 219l19 103l516 573h176l-106 -541h127l-25 -135h-127l-43 -219h-151l43 219h-429zM1290 354h250l49 252 l31 119h-4q-37 -55 -78 -98l-248 -269v-4z" /> -<glyph unicode="½" horiz-adv-x="1947" d="M104 551l25 135h190l97 500l16 53h-4q-12 -16 -45 -45l-82 -66l-78 107l260 211h138l-148 -760h189l-27 -135h-531zM414 0l966 1446h164l-966 -1446h-164zM1112 0q2 119 60.5 209t139.5 143t161.5 98.5t137 99.5t56.5 118q0 47 -34 76.5t-89 29.5q-45 0 -93 -24.5 t-75 -49.5l-24 -24l-90 100q14 16 39.5 39t102.5 61.5t150 38.5q121 0 197 -64.5t76 -170.5q0 -88 -48 -157.5t-119 -116t-143.5 -85t-133 -86t-76.5 -100.5h430l-27 -135h-598z" /> -<glyph unicode="¾" horiz-adv-x="1984" d="M84 666l96 100q8 -10 23.5 -25.5t71 -42t116.5 -26.5q78 0 135.5 52t57.5 128q0 55 -46 88t-110 33h-70l-24 78l221 211l59 49v4q-39 -6 -73 -6h-283l25 137h557l-19 -98l-274 -258q76 -14 135 -74t59 -162q0 -127 -101 -225.5t-251 -98.5q-88 0 -165 34t-109 67zM428 0 l967 1446h164l-967 -1446h-164zM1106 219l18 103l516 573h177l-107 -541h127l-25 -135h-126l-44 -219h-151l43 219h-428zM1309 354h250l49 252l30 119h-4q-37 -55 -78 -98l-247 -269v-4z" /> -<glyph unicode="¿" horiz-adv-x="923" d="M-51 -102q0 100 45 183t111.5 139t135 106.5t124 111t67.5 125.5l17 76h194l-18 -88q-18 -90 -72.5 -166t-120 -127t-127 -99t-103.5 -107.5t-42 -129.5q0 -74 53 -121t143 -47q59 0 122 22.5t95 43.5l33 22l88 -153q-18 -12 -51 -33t-128 -53.5t-185 -32.5 q-166 0 -273.5 89t-107.5 239zM477 836l41 200h205l-39 -200h-207z" /> -<glyph unicode="À" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205zM598 1806h205l96 -260h-158z" /> -<glyph unicode="Á" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205zM733 1546l201 260h223l-246 -260h-178z" /> -<glyph unicode="Â" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205zM537 1546l231 260h207l129 -260h-168l-74 164h-4l-139 -164h-182z" /> -<glyph unicode="Ã" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205zM498 1548q49 260 243 260q55 0 94.5 -34.5t68 -69.5t61.5 -35q78 0 100 133h145q-51 -260 -243 -260q-53 0 -92 35t-70 69.5t-64 34.5 q-72 0 -98 -133h-145z" /> -<glyph unicode="Ä" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205zM588 1599l41 207h164l-41 -207h-164zM932 1599l39 207h164l-41 -207h-162z" /> -<glyph unicode="Å" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205zM678 1655q0 76 59.5 124t132.5 48q72 0 116 -36t44 -99q0 -74 -60.5 -122t-133.5 -48q-70 0 -114 35t-44 98zM784 1657q0 -51 58 -51 q33 0 57.5 24.5t24.5 59.5q0 25 -15.5 40t-42.5 15q-33 0 -57.5 -25.5t-24.5 -62.5z" /> -<glyph unicode="Æ" horiz-adv-x="1816" d="M-102 0l874 1446h1075l-35 -176h-638l-89 -453h519l-35 -176h-518l-90 -465h671l-35 -176h-872l125 643h-344l-383 -643h-225zM606 811h277l88 459h-92z" /> -<glyph unicode="Ç" horiz-adv-x="1484" d="M115 602q0 231 118.5 433t316.5 318.5t421 116.5q102 0 193 -19t148.5 -48t100.5 -57.5t62 -47.5l18 -20l-121 -139q-16 16 -47 40.5t-133 64.5t-215 40q-270 0 -461.5 -201.5t-191.5 -470.5q0 -197 117.5 -323.5t322.5 -126.5q236 0 453 164l28 22l88 -160 q-10 -8 -28.5 -22t-78 -51t-123 -66t-159.5 -51.5t-190 -22.5h-2l-33 -77q51 -8 87 -42t36 -92q0 -94 -73 -141t-163 -47q-33 0 -62.5 3t-43.5 7l-15 4l23 117q39 -12 84 -12t77.5 17.5t32.5 56.5q0 53 -96 53l-37 -2l74 164q-246 33 -387 200.5t-141 417.5z" /> -<glyph unicode="È" horiz-adv-x="1171" d="M78 0l284 1446h838l-35 -176h-637l-88 -453h518l-34 -176h-518l-91 -465h672l-33 -176h-876zM592 1806h205l96 -260h-158z" /> -<glyph unicode="É" horiz-adv-x="1171" d="M78 0l284 1446h838l-35 -176h-637l-88 -453h518l-34 -176h-518l-91 -465h672l-33 -176h-876zM727 1546l201 260h223l-246 -260h-178z" /> -<glyph unicode="Ê" horiz-adv-x="1171" d="M78 0l284 1446h838l-35 -176h-637l-88 -453h518l-34 -176h-518l-91 -465h672l-33 -176h-876zM530 1546l232 260h207l129 -260h-168l-74 164h-4l-139 -164h-183z" /> -<glyph unicode="Ë" horiz-adv-x="1171" d="M78 0l284 1446h838l-35 -176h-637l-88 -453h518l-34 -176h-518l-91 -465h672l-33 -176h-876zM580 1599l41 207h163l-41 -207h-163zM924 1599l39 207h163l-41 -207h-161z" /> -<glyph unicode="Ì" horiz-adv-x="595" d="M78 0l282 1446h201l-280 -1446h-203zM252 1806h205l96 -260h-158z" /> -<glyph unicode="Í" horiz-adv-x="595" d="M78 0l282 1446h201l-280 -1446h-203zM385 1546l201 260h223l-246 -260h-178z" /> -<glyph unicode="Î" horiz-adv-x="595" d="M78 0l282 1446h201l-280 -1446h-203zM190 1546l232 260h207l129 -260h-168l-74 164h-4l-139 -164h-183z" /> -<glyph unicode="Ï" horiz-adv-x="595" d="M78 0l282 1446h201l-280 -1446h-203zM242 1599l41 207h163l-40 -207h-164zM586 1599l39 207h163l-40 -207h-162z" /> -<glyph unicode="Ð" horiz-adv-x="1550" d="M115 0l123 639h-119l33 168h118l125 639h447q299 0 469 -147.5t170 -415.5q0 -242 -107.5 -442.5t-304.5 -320.5t-442 -120h-512zM348 176h264q287 0 473.5 197.5t186.5 492.5q0 195 -119 299.5t-328 104.5h-262l-92 -463h309l-32 -168h-310z" /> -<glyph unicode="Ñ" horiz-adv-x="1536" d="M78 0l282 1446h187l463 -940q37 -76 77 -209h5q10 129 26 209l182 940h203l-282 -1446h-187l-463 938q-39 80 -79 211h-5q-10 -129 -26 -211l-182 -938h-201zM618 1548q49 260 244 260q55 0 94 -34.5t68 -69.5t61 -35q78 0 101 133h145q-51 -260 -244 -260q-53 0 -92 35 t-69.5 69.5t-63.5 34.5q-72 0 -98 -133h-146z" /> -<glyph unicode="Ò" horiz-adv-x="1677" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q289 0 467 -172t178 -442q0 -231 -125 -437t-324.5 -325t-414.5 -119q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 123 -326.5t316 -125.5q250 0 451.5 203.5t201.5 480.5q0 195 -122 316.5t-316 121.5 q-252 0 -453 -199t-201 -471zM786 1806h205l96 -260h-157z" /> -<glyph unicode="Ó" horiz-adv-x="1677" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q289 0 467 -172t178 -442q0 -231 -125 -437t-324.5 -325t-414.5 -119q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 123 -326.5t316 -125.5q250 0 451.5 203.5t201.5 480.5q0 195 -122 316.5t-316 121.5 q-252 0 -453 -199t-201 -471zM922 1546l200 260h224l-246 -260h-178z" /> -<glyph unicode="Ô" horiz-adv-x="1677" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q289 0 467 -172t178 -442q0 -231 -125 -437t-324.5 -325t-414.5 -119q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 123 -326.5t316 -125.5q250 0 451.5 203.5t201.5 480.5q0 195 -122 316.5t-316 121.5 q-252 0 -453 -199t-201 -471zM725 1546l231 260h207l129 -260h-168l-73 164h-4l-140 -164h-182z" /> -<glyph unicode="Õ" horiz-adv-x="1677" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q289 0 467 -172t178 -442q0 -231 -125 -437t-324.5 -325t-414.5 -119q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 123 -326.5t316 -125.5q250 0 451.5 203.5t201.5 480.5q0 195 -122 316.5t-316 121.5 q-252 0 -453 -199t-201 -471zM686 1548q49 260 244 260q55 0 94 -34.5t67.5 -69.5t61.5 -35q78 0 100 133h146q-51 -260 -244 -260q-53 0 -92 35t-69.5 69.5t-63.5 34.5q-72 0 -99 -133h-145z" /> -<glyph unicode="Ö" horiz-adv-x="1677" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q289 0 467 -172t178 -442q0 -231 -125 -437t-324.5 -325t-414.5 -119q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 123 -326.5t316 -125.5q250 0 451.5 203.5t201.5 480.5q0 195 -122 316.5t-316 121.5 q-252 0 -453 -199t-201 -471zM776 1599l41 207h164l-41 -207h-164zM1120 1599l39 207h164l-41 -207h-162z" /> -<glyph unicode="×" horiz-adv-x="1409" d="M170 113l422 471l-422 471l113 112l417 -467l420 467l113 -112l-424 -471l424 -471l-113 -113l-420 465l-417 -465z" /> -<glyph unicode="Ø" horiz-adv-x="1681" d="M113 606q0 227 122.5 429t322.5 318.5t417 116.5q221 0 385 -108l127 137l94 -78l-127 -137q164 -170 164 -428q0 -231 -124 -437t-323.5 -325t-414.5 -119q-229 0 -398 119l-133 -145l-94 76l137 149q-155 172 -155 432zM319 614q0 -172 89 -288l817 886 q-111 72 -252 72q-252 0 -453 -199t-201 -471zM496 242q109 -80 262 -80q248 0 449.5 203.5t201.5 480.5q0 168 -94 284z" /> -<glyph unicode="Ù" horiz-adv-x="1488" d="M147 403q0 55 13 117l180 926h201l-181 -932q-8 -39 -8 -86q0 -127 80 -196.5t225 -69.5q168 0 285 94t150 262l182 928h201l-185 -944q-47 -242 -219 -384.5t-418 -142.5q-225 0 -365.5 113.5t-140.5 314.5zM696 1806h205l96 -260h-157z" /> -<glyph unicode="Ú" horiz-adv-x="1488" d="M147 403q0 55 13 117l180 926h201l-181 -932q-8 -39 -8 -86q0 -127 80 -196.5t225 -69.5q168 0 285 94t150 262l182 928h201l-185 -944q-47 -242 -219 -384.5t-418 -142.5q-225 0 -365.5 113.5t-140.5 314.5zM831 1546l201 260h223l-245 -260h-179z" /> -<glyph unicode="Û" horiz-adv-x="1488" d="M147 403q0 55 13 117l180 926h201l-181 -932q-8 -39 -8 -86q0 -127 80 -196.5t225 -69.5q168 0 285 94t150 262l182 928h201l-185 -944q-47 -242 -219 -384.5t-418 -142.5q-225 0 -365.5 113.5t-140.5 314.5zM635 1546l231 260h207l129 -260h-168l-73 164h-5l-139 -164 h-182z" /> -<glyph unicode="Ü" horiz-adv-x="1488" d="M147 403q0 55 13 117l180 926h201l-181 -932q-8 -39 -8 -86q0 -127 80 -196.5t225 -69.5q168 0 285 94t150 262l182 928h201l-185 -944q-47 -242 -219 -384.5t-418 -142.5q-225 0 -365.5 113.5t-140.5 314.5zM684 1599l41 207h164l-41 -207h-164zM1028 1599l39 207h164 l-41 -207h-162z" /> -<glyph unicode="Ý" horiz-adv-x="1185" d="M164 1446h217l174 -475q29 -80 53 -183h4q61 98 123 181l355 477h243l-651 -840l-119 -606h-201l121 612zM670 1546l200 260h224l-246 -260h-178z" /> -<glyph unicode="Þ" horiz-adv-x="1247" d="M78 0l282 1446h203l-49 -246h295q135 0 227 -47q180 -94 181 -322q0 -170 -87.5 -304t-228.5 -195q-102 -43 -215 -43h-348l-57 -289h-203zM371 465h295q88 0 153 33q86 41 137.5 124t51.5 195q0 98 -60.5 152.5t-171.5 54.5h-297z" /> -<glyph unicode="ß" horiz-adv-x="1200" d="M37 0l213 1102q33 172 174 270t309 98q164 0 263.5 -80.5t99.5 -207.5q0 -82 -45 -151.5t-98.5 -107.5t-98.5 -86.5t-45 -91.5q0 -41 44 -89t97.5 -87t97.5 -104.5t44 -136.5q0 -141 -118 -241.5t-272 -100.5q-86 0 -161.5 14t-108.5 29l-33 16l35 172q100 -59 254 -59 q76 0 138.5 43t62.5 127q0 43 -30 84t-72 75.5t-82.5 69.5t-70.5 81t-30 95q0 70 45 132.5t99.5 102.5t99.5 92t45 103q0 57 -43 96t-125 39q-98 0 -178 -59t-103 -168l-208 -1071h-199z" /> -<glyph unicode="à" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228zM410 1446h204l97 -260h-158z" /> -<glyph unicode="á" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228zM545 1186l200 260h224l-246 -260h-178z" /> -<glyph unicode="â" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228zM348 1186l232 260h206l129 -260h-167l-74 164h-4l-140 -164h-182z" /> -<glyph unicode="ã" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228zM309 1188q49 260 244 260q55 0 94 -35t67.5 -69.5t61.5 -34.5q78 0 101 133h145 q-51 -260 -244 -260q-53 0 -92 34.5t-69.5 69.5t-63.5 35q-72 0 -98 -133h-146z" /> -<glyph unicode="ä" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228zM397 1239l41 207h164l-41 -207h-164zM741 1239l39 207h164l-41 -207h-162z" /> -<glyph unicode="å" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228zM487 1294q0 76 59.5 124t133.5 48q72 0 116 -35.5t44 -99.5q0 -74 -60.5 -122t-134.5 -48 q-70 0 -114 35t-44 98zM594 1296q0 -51 57 -51q33 0 57.5 24.5t24.5 59.5q0 25 -15.5 40t-41.5 15q-33 0 -57.5 -25.5t-24.5 -62.5z" /> -<glyph unicode="æ" horiz-adv-x="1761" d="M2 238q0 121 63.5 204.5t172 124.5t217 57.5t233.5 16.5h53q10 66 11 88q0 164 -193 164q-147 -2 -303 -98l-53 157q20 12 54 30.5t135.5 48.5t195.5 30q248 0 311 -174h4q154 174 385 174q195 0 296.5 -103.5t101.5 -281.5q0 -35 -7.5 -80t-15.5 -74l-8 -28h-746 q-6 -37 -6 -68q0 -125 74 -202t209 -77q80 0 162 31t125 60l43 30l57 -157q-18 -14 -53 -37t-139.5 -61t-202.5 -38q-160 0 -272.5 69t-155.5 187h-5q-12 -27 -38.5 -61.5t-76.5 -82.5t-131 -80t-175 -32q-137 0 -229.5 70t-92.5 193zM205 270q0 -59 43 -97t123 -38 q119 0 214 102.5t124 227.5l6 27h-94q-416 -1 -416 -222zM946 643h537q4 33 4 53q0 100 -56.5 153.5t-144.5 53.5q-115 0 -205 -68.5t-135 -191.5z" /> -<glyph unicode="ç" horiz-adv-x="1120" d="M55 426q0 262 190.5 448.5t448.5 186.5q236 0 373 -131l18 -19l-110 -129q-10 12 -31.5 29.5t-92.5 47.5t-146 30q-178 0 -312.5 -132t-134.5 -317q0 -131 83 -212t220 -81q86 0 173 35t130 70l45 35l56 -158q-18 -16 -53 -42t-146 -69t-223 -43h-4l-33 -77q51 -8 87 -42 t36 -92q0 -94 -73 -141t-163 -47q-33 0 -62.5 3t-43.5 7l-15 4l23 117q39 -12 84 -12t77.5 17.5t32.5 56.5q0 53 -96 53l-37 -2l74 166q-174 29 -274.5 147.5t-100.5 292.5z" /> -<glyph unicode="è" horiz-adv-x="1128" d="M55 418q0 262 173 452.5t429 190.5q195 0 295.5 -104.5t100.5 -278.5q0 -37 -8.5 -84t-16.5 -76l-8 -29h-756q-6 -31 -6 -61q0 -121 78 -201t217 -80q80 0 162 31t125 60l43 30l57 -157q-18 -14 -53 -37t-139.5 -61t-202.5 -38q-223 0 -356.5 123t-133.5 320zM297 639 h553q4 23 4 55q0 100 -55.5 154.5t-145.5 54.5q-115 0 -212 -71.5t-144 -192.5zM479 1446h205l96 -260h-157z" /> -<glyph unicode="é" horiz-adv-x="1128" d="M55 418q0 262 173 452.5t429 190.5q195 0 295.5 -104.5t100.5 -278.5q0 -37 -8.5 -84t-16.5 -76l-8 -29h-756q-6 -31 -6 -61q0 -121 78 -201t217 -80q80 0 162 31t125 60l43 30l57 -157q-18 -14 -53 -37t-139.5 -61t-202.5 -38q-223 0 -356.5 123t-133.5 320zM297 639 h553q4 23 4 55q0 100 -55.5 154.5t-145.5 54.5q-115 0 -212 -71.5t-144 -192.5zM614 1186l201 260h223l-245 -260h-179z" /> -<glyph unicode="ê" horiz-adv-x="1128" d="M55 418q0 262 173 452.5t429 190.5q195 0 295.5 -104.5t100.5 -278.5q0 -37 -8.5 -84t-16.5 -76l-8 -29h-756q-6 -31 -6 -61q0 -121 78 -201t217 -80q80 0 162 31t125 60l43 30l57 -157q-18 -14 -53 -37t-139.5 -61t-202.5 -38q-223 0 -356.5 123t-133.5 320zM297 639 h553q4 23 4 55q0 100 -55.5 154.5t-145.5 54.5q-115 0 -212 -71.5t-144 -192.5zM418 1186l231 260h207l129 -260h-168l-74 164h-4l-139 -164h-182z" /> -<glyph unicode="ë" horiz-adv-x="1128" d="M55 418q0 262 173 452.5t429 190.5q195 0 295.5 -104.5t100.5 -278.5q0 -37 -8.5 -84t-16.5 -76l-8 -29h-756q-6 -31 -6 -61q0 -121 78 -201t217 -80q80 0 162 31t125 60l43 30l57 -157q-18 -14 -53 -37t-139.5 -61t-202.5 -38q-223 0 -356.5 123t-133.5 320zM297 639 h553q4 23 4 55q0 100 -55.5 154.5t-145.5 54.5q-115 0 -212 -71.5t-144 -192.5zM469 1239l41 207h164l-41 -207h-164zM813 1239l39 207h164l-41 -207h-162z" /> -<glyph unicode="ì" horiz-adv-x="507" d="M37 0l201 1036h198l-200 -1036h-199zM137 1446h205l96 -260h-157z" /> -<glyph unicode="í" horiz-adv-x="507" d="M37 0l201 1036h198l-200 -1036h-199zM272 1186l201 260h223l-245 -260h-179z" /> -<glyph unicode="î" horiz-adv-x="507" d="M37 0l201 1036h198l-200 -1036h-199zM76 1186l231 260h207l129 -260h-168l-74 164h-4l-139 -164h-182z" /> -<glyph unicode="ï" horiz-adv-x="507" d="M37 0l201 1036h198l-200 -1036h-199zM125 1239l41 207h164l-41 -207h-164zM469 1239l39 207h164l-41 -207h-162z" /> -<glyph unicode="ð" horiz-adv-x="1202" d="M51 391q0 217 161 390t417 173q76 0 139 -23.5t88 -45.5l27 -25h4q-35 164 -174 283l-406 -162l4 129l285 115q-111 63 -250 100l82 148q217 -55 373 -166l325 131l-2 -129l-221 -88q199 -203 199 -502q0 -90 -21.5 -187.5t-69.5 -198t-117 -179t-175.5 -129 t-231.5 -50.5q-209 0 -322.5 119t-113.5 297zM254 395q0 -109 60.5 -178.5t174.5 -69.5q166 0 279 141.5t113 295.5q0 94 -65.5 152.5t-178.5 58.5q-162 0 -272.5 -119t-110.5 -281z" /> -<glyph unicode="ñ" horiz-adv-x="1232" d="M37 0l201 1036h194l-22 -121l-29 -98h4q49 90 168 167t260 77q143 0 223 -68.5t80 -206.5q0 -49 -14 -131l-127 -655h-199l119 612q14 76 14 117q0 150 -153.5 150t-275.5 -119t-154 -287l-90 -473h-199zM422 1188q49 260 244 260q55 0 94 -35t67.5 -69.5t61.5 -34.5 q78 0 100 133h146q-51 -260 -244 -260q-53 0 -92 34.5t-70 69.5t-63 35q-72 0 -99 -133h-145z" /> -<glyph unicode="ò" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q217 0 354.5 -126t137.5 -327q0 -262 -195.5 -447.5t-443.5 -185.5q-219 0 -356.5 127t-137.5 330zM256 440q0 -131 82 -212t211 -81q166 0 300 132.5t134 318.5q0 129 -82 210t-209 81q-170 0 -303 -131.5t-133 -317.5zM520 1446 h205l96 -260h-157z" /> -<glyph unicode="ó" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q217 0 354.5 -126t137.5 -327q0 -262 -195.5 -447.5t-443.5 -185.5q-219 0 -356.5 127t-137.5 330zM256 440q0 -131 82 -212t211 -81q166 0 300 132.5t134 318.5q0 129 -82 210t-209 81q-170 0 -303 -131.5t-133 -317.5zM655 1186 l201 260h223l-245 -260h-179z" /> -<glyph unicode="ô" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q217 0 354.5 -126t137.5 -327q0 -262 -195.5 -447.5t-443.5 -185.5q-219 0 -356.5 127t-137.5 330zM256 440q0 -131 82 -212t211 -81q166 0 300 132.5t134 318.5q0 129 -82 210t-209 81q-170 0 -303 -131.5t-133 -317.5zM459 1186 l231 260h207l129 -260h-168l-74 164h-4l-139 -164h-182z" /> -<glyph unicode="õ" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q217 0 354.5 -126t137.5 -327q0 -262 -195.5 -447.5t-443.5 -185.5q-219 0 -356.5 127t-137.5 330zM256 440q0 -131 82 -212t211 -81q166 0 300 132.5t134 318.5q0 129 -82 210t-209 81q-170 0 -303 -131.5t-133 -317.5zM418 1188 q49 260 244 260q55 0 94 -35t67.5 -69.5t61.5 -34.5q78 0 100 133h145q-51 -260 -243 -260q-53 0 -92 34.5t-70 69.5t-63 35q-72 0 -99 -133h-145z" /> -<glyph unicode="ö" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q217 0 354.5 -126t137.5 -327q0 -262 -195.5 -447.5t-443.5 -185.5q-219 0 -356.5 127t-137.5 330zM256 440q0 -131 82 -212t211 -81q166 0 300 132.5t134 318.5q0 129 -82 210t-209 81q-170 0 -303 -131.5t-133 -317.5zM508 1239 l41 207h164l-41 -207h-164zM852 1239l39 207h164l-41 -207h-162z" /> -<glyph unicode="÷" horiz-adv-x="1292" d="M123 504v160h1034v-160h-1034zM543 90v186h192v-186h-192zM543 891v186h192v-186h-192z" /> -<glyph unicode="ø" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q164 0 287 -76l111 121l92 -76l-111 -121q113 -123 113 -301q0 -262 -195.5 -447.5t-443.5 -185.5q-152 0 -275 68l-110 -121l-90 78l106 115q-125 124 -125 317zM256 440q0 -109 55 -182l541 588q-74 43 -160 43 q-170 0 -303 -131.5t-133 -317.5zM401 182q63 -35 148 -35q166 0 300 132.5t134 318.5q0 92 -45 166z" /> -<glyph unicode="ù" horiz-adv-x="1220" d="M80 250q0 49 14 131l127 655h199l-119 -610q-12 -68 -12 -119q0 -72 35.5 -109.5t119.5 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-194l24 121l27 98h-4q-53 -92 -166 -168t-254 -76q-133 0 -217 67t-84 208zM483 1446h205l96 -260h-157z" /> -<glyph unicode="ú" horiz-adv-x="1220" d="M80 250q0 49 14 131l127 655h199l-119 -610q-12 -68 -12 -119q0 -72 35.5 -109.5t119.5 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-194l24 121l27 98h-4q-53 -92 -166 -168t-254 -76q-133 0 -217 67t-84 208zM618 1186l201 260h223l-245 -260h-179z" /> -<glyph unicode="û" horiz-adv-x="1220" d="M80 250q0 49 14 131l127 655h199l-119 -610q-12 -68 -12 -119q0 -72 35.5 -109.5t119.5 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-194l24 121l27 98h-4q-53 -92 -166 -168t-254 -76q-133 0 -217 67t-84 208zM422 1186l231 260h207l129 -260h-168l-73 164 h-5l-139 -164h-182z" /> -<glyph unicode="ü" horiz-adv-x="1220" d="M80 250q0 49 14 131l127 655h199l-119 -610q-12 -68 -12 -119q0 -72 35.5 -109.5t119.5 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-194l24 121l27 98h-4q-53 -92 -166 -168t-254 -76q-133 0 -217 67t-84 208zM473 1239l41 207h164l-41 -207h-164z M817 1239l39 207h164l-41 -207h-162z" /> -<glyph unicode="ý" horiz-adv-x="1042" d="M-188 -362l92 141q43 -37 112 -37q129 0 220 149l75 123l-237 1022h207l139 -700l16 -123h2q31 68 60 119l389 704h223l-727 -1226q-143 -240 -358 -240q-125 0 -213 68zM532 1186l201 260h223l-245 -260h-179z" /> -<glyph unicode="þ" horiz-adv-x="1226" d="M-43 -410l358 1856h197l-94 -481l-21 -82h4q55 78 146.5 128t200.5 50q182 0 284.5 -115t102.5 -311q0 -285 -170 -472.5t-394 -187.5q-102 0 -187 46.5t-122 134.5h-4q-2 -43 -12 -97l-92 -469h-197zM319 414q0 -117 58.5 -192t173.5 -75q145 0 263 131.5t118 342.5 q0 125 -62.5 195.5t-171.5 70.5q-156 0 -267.5 -144.5t-111.5 -328.5z" /> -<glyph unicode="ÿ" horiz-adv-x="1042" d="M-188 -362l92 141q43 -37 112 -37q129 0 220 149l75 123l-237 1022h207l139 -700l16 -123h2q31 68 60 119l389 704h223l-727 -1226q-143 -240 -358 -240q-125 0 -213 68zM387 1239l41 207h164l-41 -207h-164zM731 1239l39 207h164l-41 -207h-162z" /> -<glyph unicode="Œ" horiz-adv-x="1964" d="M109 598q0 229 120.5 431t319.5 318.5t422 116.5q63 0 156.5 -9t132.5 -9h735l-35 -176h-639l-88 -453h518l-35 -176h-518l-90 -465h674l-35 -176h-743q-31 0 -116 -9t-138 -9q-289 0 -465 173t-176 443zM315 598q0 -193 121 -314.5t324 -121.5q37 0 73.5 4t55.5 8l18 4 l211 1092q-59 14 -141 14q-268 0 -465 -202.5t-197 -483.5z" /> -<glyph unicode="œ" horiz-adv-x="2039" d="M53 432q0 260 194.5 444.5t444.5 184.5q145 0 254 -65.5t162 -180.5h4q80 115 199 180.5t258 65.5q195 0 295 -104.5t100 -278.5q0 -37 -8 -84t-17 -76l-8 -29h-753q-6 -35 -7 -63q0 -127 82 -203t213 -76q78 0 161 31t126 60l43 30l55 -157q-18 -14 -53 -37t-139.5 -61 t-202.5 -38q-154 0 -264.5 67t-161.5 185h-4q-88 -117 -216 -184.5t-265 -67.5q-219 0 -355.5 127t-136.5 330zM256 440q0 -131 81 -212t210 -81q166 0 300 132.5t134 318.5q0 129 -81 210t-210 81q-168 0 -301 -131.5t-133 -317.5zM1210 639h551q6 27 6 55q0 100 -55 154.5 t-145 54.5q-117 0 -213.5 -70.5t-143.5 -193.5z" /> -<glyph unicode="Ÿ" horiz-adv-x="1185" d="M164 1446h217l174 -475q29 -80 53 -183h4q61 98 123 181l355 477h243l-651 -840l-119 -606h-201l121 612zM522 1599l41 207h164l-41 -207h-164zM866 1599l39 207h164l-41 -207h-162z" /> -<glyph unicode="ˆ" horiz-adv-x="1021" d="M82 1546l231 260h207l129 -260h-168l-73 164h-5l-139 -164h-182z" /> -<glyph unicode="˜" horiz-adv-x="1021" d="M39 1548q49 260 244 260q55 0 94 -34.5t67.5 -69.5t61.5 -35q78 0 100 133h146q-51 -260 -244 -260q-53 0 -92 35t-70 69.5t-63 34.5q-72 0 -99 -133h-145z" /> -<glyph unicode="–" horiz-adv-x="1435" d="M158 504l30 160h1078l-31 -160h-1077z" /> -<glyph unicode="—" horiz-adv-x="1845" d="M158 504l30 160h1487l-30 -160h-1487z" /> -<glyph unicode="‘" horiz-adv-x="464" d="M182 1071l211 397h154l-164 -397h-201z" /> -<glyph unicode="’" horiz-adv-x="452" d="M188 1071l164 397h201l-211 -397h-154z" /> -<glyph unicode="‚" horiz-adv-x="509" d="M-66 -184l164 399h201l-211 -399h-154z" /> -<glyph unicode="“" horiz-adv-x="753" d="M182 1071l211 397h154l-164 -397h-201zM471 1071l211 397h154l-164 -397h-201z" /> -<glyph unicode="”" horiz-adv-x="741" d="M188 1071l166 397h199l-209 -397h-156zM477 1071l166 397h199l-209 -397h-156z" /> -<glyph unicode="„" horiz-adv-x="798" d="M-66 -184l164 399h201l-209 -399h-156zM223 -184l166 399h199l-209 -399h-156z" /> -<glyph unicode="•" horiz-adv-x="837" d="M98 596q0 133 92.5 225t225.5 92q131 0 223 -93t92 -224t-92 -224t-223 -93q-133 0 -225.5 92t-92.5 225z" /> -<glyph unicode="…" horiz-adv-x="1568" d="M35 0l41 215h209l-43 -215h-207zM565 0l43 215h207l-41 -215h-209zM1098 0l41 215h209l-43 -215h-207z" /> -<glyph unicode="‹" horiz-adv-x="708" d="M76 582l391 417h209l-410 -430l262 -411h-188z" /> -<glyph unicode="›" horiz-adv-x="708" d="M18 158l410 430l-260 411h188l265 -424l-394 -417h-209z" /> -<glyph unicode="€" horiz-adv-x="1202" d="M57 528l25 129h113q6 76 24 148h-108l24 131h127q102 236 314 385t456 149q61 0 120.5 -8t88.5 -16l29 -8l-82 -176q-72 20 -158 20q-168 0 -315.5 -95t-229.5 -251h578l-51 -131h-580q-23 -76 -29 -148h551l-49 -129h-489q18 -160 121.5 -260t281.5 -100q47 0 95.5 6 t72.5 14l25 7l4 -189q-92 -31 -207 -31q-258 0 -424 152t-186 401h-142z" /> -<glyph unicode="™" horiz-adv-x="2041" d="M176 1309v137h778v-137h-311v-764h-156v764h-311zM1020 545l72 901h141l213 -471l29 -86h4q12 49 26 86l213 471h144l69 -901h-153l-43 538l2 62h-4l-195 -434h-125l-194 434h-5l3 -62l-43 -538h-154z" /> -<glyph unicode="" horiz-adv-x="1035" d="M0 1035h1035v-1035h-1035v1035z" /> -<glyph unicode="fi" horiz-adv-x="1193" d="M92 0l170 874h-129l31 162h129l8 39q18 96 60 169t89.5 112t107.5 63.5t104.5 30.5t87.5 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-6 -31h630l-202 -1036h-199l170 874h-430l-170 -874h-199zM961 1243l38 203h205l-41 -203h-202z" /> -<glyph unicode="fl" horiz-adv-x="1226" d="M92 0l168 864h-129l31 162h129l10 49q18 96 60 169t89.5 112t107.5 63.5t104.5 30.5t87.5 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-9 -41h244l-31 -162h-243l-168 -864h-199zM758 209q0 33 10 88l223 1149h199l-215 -1114q-10 -47 -10 -78q0 -84 92 -84l33 2 l-37 -176q-29 -4 -60 -4q-98 0 -166.5 49t-68.5 168z" /> -<glyph unicode="ffi" horiz-adv-x="1880" d="M92 0l170 874h-129l31 162h129l8 39q18 96 60 169t89.5 112t107.5 63.5t104.5 30.5t87.5 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-6 -31h487l8 39q18 96 60.5 169t89.5 112t107.5 63.5t104.5 30.5t87 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-6 -31h630 l-202 -1036h-199l170 874h-430l-170 -874h-199l170 874h-487l-170 -874h-199zM1647 1243l39 203h204l-41 -203h-202z" /> -<glyph unicode="ffl" horiz-adv-x="1912" d="M92 0l170 874h-129l31 162h129l8 39q18 96 60 169t89.5 112t107.5 63.5t104.5 30.5t87.5 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-6 -31h487l8 39q18 96 60.5 169t89.5 112t107.5 63.5t104.5 30.5t87 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-6 -31h243 l-30 -162h-244l-170 -874h-199l170 874h-487l-170 -874h-199zM1444 209q0 33 10 88l223 1149h199l-215 -1114q-10 -47 -10 -78q0 -84 92 -84l33 2l-37 -176q-29 -4 -60 -4q-98 0 -166.5 49t-68.5 168z" /> -</font> -</defs></svg>
\ No newline at end of file diff --git a/phonegap/www/fonts/MuseoSans_500_Italic-webfont.ttf b/phonegap/www/fonts/MuseoSans_500_Italic-webfont.ttf Binary files differdeleted file mode 100755 index 445af3ac1..000000000 --- a/phonegap/www/fonts/MuseoSans_500_Italic-webfont.ttf +++ /dev/null diff --git a/phonegap/www/fonts/MuseoSans_500_Italic-webfont.woff b/phonegap/www/fonts/MuseoSans_500_Italic-webfont.woff Binary files differdeleted file mode 100755 index 453194a98..000000000 --- a/phonegap/www/fonts/MuseoSans_500_Italic-webfont.woff +++ /dev/null diff --git a/phonegap/www/i/arrow-east.gif b/phonegap/www/i/arrow-east.gif Binary files differdeleted file mode 100644 index 132bd9346..000000000 --- a/phonegap/www/i/arrow-east.gif +++ /dev/null diff --git a/phonegap/www/i/arrow-north.gif b/phonegap/www/i/arrow-north.gif Binary files differdeleted file mode 100644 index 2e0422f52..000000000 --- a/phonegap/www/i/arrow-north.gif +++ /dev/null diff --git a/phonegap/www/i/arrow-northeast.gif b/phonegap/www/i/arrow-northeast.gif Binary files differdeleted file mode 100644 index 08546cc25..000000000 --- a/phonegap/www/i/arrow-northeast.gif +++ /dev/null diff --git a/phonegap/www/i/arrow-northwest.gif b/phonegap/www/i/arrow-northwest.gif Binary files differdeleted file mode 100644 index d682da8d2..000000000 --- a/phonegap/www/i/arrow-northwest.gif +++ /dev/null diff --git a/phonegap/www/i/arrow-south.gif b/phonegap/www/i/arrow-south.gif Binary files differdeleted file mode 100644 index 1c3f281f8..000000000 --- a/phonegap/www/i/arrow-south.gif +++ /dev/null diff --git a/phonegap/www/i/arrow-southeast.gif b/phonegap/www/i/arrow-southeast.gif Binary files differdeleted file mode 100644 index 11af4752d..000000000 --- a/phonegap/www/i/arrow-southeast.gif +++ /dev/null diff --git a/phonegap/www/i/arrow-southwest.gif b/phonegap/www/i/arrow-southwest.gif Binary files differdeleted file mode 100644 index 41e483150..000000000 --- a/phonegap/www/i/arrow-southwest.gif +++ /dev/null diff --git a/phonegap/www/i/arrow-west.gif b/phonegap/www/i/arrow-west.gif Binary files differdeleted file mode 100644 index 12a335b12..000000000 --- a/phonegap/www/i/arrow-west.gif +++ /dev/null diff --git a/phonegap/www/i/email.png b/phonegap/www/i/email.png Binary files differdeleted file mode 100644 index 030eafde6..000000000 --- a/phonegap/www/i/email.png +++ /dev/null diff --git a/phonegap/www/i/flower.gif b/phonegap/www/i/flower.gif Binary files differdeleted file mode 100644 index 7e8f22a77..000000000 --- a/phonegap/www/i/flower.gif +++ /dev/null diff --git a/phonegap/www/i/grey.gif b/phonegap/www/i/grey.gif Binary files differdeleted file mode 100644 index 98eee7d12..000000000 --- a/phonegap/www/i/grey.gif +++ /dev/null diff --git a/phonegap/www/i/moj.png b/phonegap/www/i/moj.png Binary files differdeleted file mode 100644 index 2f9adb986..000000000 --- a/phonegap/www/i/moj.png +++ /dev/null diff --git a/phonegap/www/i/mysociety-dark.png b/phonegap/www/i/mysociety-dark.png Binary files differdeleted file mode 100644 index 2bf260495..000000000 --- a/phonegap/www/i/mysociety-dark.png +++ /dev/null diff --git a/phonegap/www/i/mysociety-on-white.gif b/phonegap/www/i/mysociety-on-white.gif Binary files differdeleted file mode 100644 index 0f8a10296..000000000 --- a/phonegap/www/i/mysociety-on-white.gif +++ /dev/null diff --git a/phonegap/www/i/new.png b/phonegap/www/i/new.png Binary files differdeleted file mode 100644 index 5889d8256..000000000 --- a/phonegap/www/i/new.png +++ /dev/null diff --git a/phonegap/www/i/pin-green.png b/phonegap/www/i/pin-green.png Binary files differdeleted file mode 100644 index 8b64d5160..000000000 --- a/phonegap/www/i/pin-green.png +++ /dev/null diff --git a/phonegap/www/i/pin-red.png b/phonegap/www/i/pin-red.png Binary files differdeleted file mode 100644 index 9b754e42e..000000000 --- a/phonegap/www/i/pin-red.png +++ /dev/null diff --git a/phonegap/www/i/pin-yellow-big.png b/phonegap/www/i/pin-yellow-big.png Binary files differdeleted file mode 100644 index 59ed29dbd..000000000 --- a/phonegap/www/i/pin-yellow-big.png +++ /dev/null diff --git a/phonegap/www/i/pin-yellow.png b/phonegap/www/i/pin-yellow.png Binary files differdeleted file mode 100644 index f9359b0b3..000000000 --- a/phonegap/www/i/pin-yellow.png +++ /dev/null diff --git a/phonegap/www/i/rose.gif b/phonegap/www/i/rose.gif Binary files differdeleted file mode 100644 index cceaaad7b..000000000 --- a/phonegap/www/i/rose.gif +++ /dev/null diff --git a/phonegap/www/i/zoomin.gif b/phonegap/www/i/zoomin.gif Binary files differdeleted file mode 100644 index 32ced670b..000000000 --- a/phonegap/www/i/zoomin.gif +++ /dev/null diff --git a/phonegap/www/i/zoomout.gif b/phonegap/www/i/zoomout.gif Binary files differdeleted file mode 100644 index 8de898bb2..000000000 --- a/phonegap/www/i/zoomout.gif +++ /dev/null diff --git a/phonegap/www/images/ie_fixed.gif b/phonegap/www/images/ie_fixed.gif Binary files differdeleted file mode 100644 index 438bd6894..000000000 --- a/phonegap/www/images/ie_fixed.gif +++ /dev/null diff --git a/phonegap/www/images/ie_front_logo.gif b/phonegap/www/images/ie_front_logo.gif Binary files differdeleted file mode 100644 index 34277ea74..000000000 --- a/phonegap/www/images/ie_front_logo.gif +++ /dev/null diff --git a/phonegap/www/images/ie_green_chevron.gif b/phonegap/www/images/ie_green_chevron.gif Binary files differdeleted file mode 100644 index 341ac1eeb..000000000 --- a/phonegap/www/images/ie_green_chevron.gif +++ /dev/null diff --git a/phonegap/www/images/ie_key_tools_sprite.gif b/phonegap/www/images/ie_key_tools_sprite.gif Binary files differdeleted file mode 100644 index aed0bafa3..000000000 --- a/phonegap/www/images/ie_key_tools_sprite.gif +++ /dev/null diff --git a/phonegap/www/images/ie_key_tools_sprite_dark.gif b/phonegap/www/images/ie_key_tools_sprite_dark.gif Binary files differdeleted file mode 100644 index 0b2fd5741..000000000 --- a/phonegap/www/images/ie_key_tools_sprite_dark.gif +++ /dev/null diff --git a/phonegap/www/images/ie_logo.gif b/phonegap/www/images/ie_logo.gif Binary files differdeleted file mode 100644 index 17c9f59b8..000000000 --- a/phonegap/www/images/ie_logo.gif +++ /dev/null diff --git a/phonegap/www/images/ie_mobileapps.gif b/phonegap/www/images/ie_mobileapps.gif Binary files differdeleted file mode 100644 index 604efc101..000000000 --- a/phonegap/www/images/ie_mobileapps.gif +++ /dev/null diff --git a/phonegap/www/images/ie_mysoc_logo.gif b/phonegap/www/images/ie_mysoc_logo.gif Binary files differdeleted file mode 100644 index 8df76b210..000000000 --- a/phonegap/www/images/ie_mysoc_logo.gif +++ /dev/null diff --git a/phonegap/www/images/ie_sub_map_links_sprite.gif b/phonegap/www/images/ie_sub_map_links_sprite.gif Binary files differdeleted file mode 100644 index 1afd136e7..000000000 --- a/phonegap/www/images/ie_sub_map_links_sprite.gif +++ /dev/null diff --git a/phonegap/www/images/spinner-black-333.gif b/phonegap/www/images/spinner-black-333.gif Binary files differdeleted file mode 100644 index 63b3a9d08..000000000 --- a/phonegap/www/images/spinner-black-333.gif +++ /dev/null diff --git a/phonegap/www/images/spinner-black.gif b/phonegap/www/images/spinner-black.gif Binary files differdeleted file mode 100644 index 763c98d35..000000000 --- a/phonegap/www/images/spinner-black.gif +++ /dev/null diff --git a/phonegap/www/images/spinner-yellow.gif b/phonegap/www/images/spinner-yellow.gif Binary files differdeleted file mode 100644 index 56eed1541..000000000 --- a/phonegap/www/images/spinner-yellow.gif +++ /dev/null diff --git a/phonegap/www/images/sprite.png b/phonegap/www/images/sprite.png Binary files differdeleted file mode 100644 index 61c27b32a..000000000 --- a/phonegap/www/images/sprite.png +++ /dev/null diff --git a/phonegap/www/images/tile.jpg b/phonegap/www/images/tile.jpg Binary files differdeleted file mode 100644 index b412774e4..000000000 --- a/phonegap/www/images/tile.jpg +++ /dev/null diff --git a/phonegap/www/index.html b/phonegap/www/index.html deleted file mode 100644 index 40787ac37..000000000 --- a/phonegap/www/index.html +++ /dev/null @@ -1,112 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <title></title> - - <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" /> - <meta charset="utf-8"> - - <link rel="stylesheet" href="css/base.css"> - <link rel="stylesheet" href="css/mobile.css"> - - <script type="text/javascript" src="js/jquery-1.7.0.min.js"></script> - <script type="text/javascript" src="cordova-independent.js"></script> - - <script type="text/javascript" src="js/json2.js"></script> - <script type="text/javascript" src="js/config.js"></script> - <script src="js/jquery.validate.min.js" type="text/javascript" charset="utf-8"></script> - - <script type="text/javascript" src="js/geo.min.js"></script> - <script type="text/javascript" src="js/fixmystreet.js"></script> - <script type="text/javascript" src="js/mobile.js"></script> - - <script type="text/javascript"> - validation_strings = { - update: 'Please enter a message', - title: 'Please enter a subject', - detail: 'Please enter some details', - name: { - required: 'Please enter your name', - validName: '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' - }, - category: 'Please choose a category', - rznvy: { - required: 'Please enter your email', - email: 'Please enter a valid email' - }, - email: { - required: 'Please enter your email', - email: 'Please enter a valid email' - } - }; - </script> - </head> - <body id="container" class="frontpage fullwidthpage" ontouchmove="touchmove(event);"> - - <div class="wrapper"> - <div class="table-cell"> - <header id="site-header" role="banner"> - <div class="container"> - <span id="site-logo"></span> - </div> - </header> - - <div id="user-meta" class="hidden"></div> - - <div class="container"> - <div class="content" role="main"> - <div id="front-main"> - <div id="front-main-container"> - <form action="" method="get" name="postcodeForm" id="postcodeForm"> - <label for="pc">Enter a nearby GB postcode, or street name and area:</label> - <div> - <input type="text" name="pc" value="" id="pc" size="10" maxlength="200" placeholder="e.g. ‘B2 4QA’ or ‘Tib St, Manchester’"> - <input type="submit" value="Go" id="submit"> - </div> - </form> - </div> - </div> - - <div class="tablewrapper"> - <div id="front-howto"> - <h2>How to report a problem</h2> - - <ol class="big-numbers"> - <li>Enter a nearby GB postcode, or street name and area</li> - <li>Locate the problem on a map of the area</li> - <li>Enter details of the problem</li> - <li>We send it to the council on your behalf</li> - </ol> - </div> - - </div> - </div><!-- .content role=main --> - </div><!-- .container --> - </div><!-- .table-cell --> - - <div class="mobile-info"> - <a href="about.html">i</a> - </div> - - <div class="big-green-banner mobile-map-banner mobile-sign-in-banner"> - <a id="account" href="account.html">Account</a> - </div> - </div> <!-- .wrapper --> - - <div class="spinner" id="loadingSpinner"> - <div class="bar1"></div> - <div class="bar2"></div> - <div class="bar3"></div> - <div class="bar4"></div> - <div class="bar5"></div> - <div class="bar6"></div> - <div class="bar7"></div> - <div class="bar8"></div> - <div class="bar9"></div> - <div class="bar10"></div> - <div class="bar11"></div> - <div class="bar12"></div> - </div> - </body> -</html> -</html> diff --git a/phonegap/www/js/OpenLayers.Projection.OrdnanceSurvey.js b/phonegap/www/js/OpenLayers.Projection.OrdnanceSurvey.js deleted file mode 100644 index bb596d3bf..000000000 --- a/phonegap/www/js/OpenLayers.Projection.OrdnanceSurvey.js +++ /dev/null @@ -1,489 +0,0 @@ -/** - * OpenLayers OSGB Grid Projection Transformations - * - * Conversion to OpenLayers by Thomas Wood (grand.edgemaster@gmail.com) - * - * this program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * this program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * --------------------------------------------------------------------------- - * - * PLEASE DO NOT HOTLINK THIS, save this onto your own server - * - I cannot guarantee this file will remain here forever. - * - * --------------------------------------------------------------------------- - * - * Credits: - * Based from the geotools js library by Paul Dixon - * GeoTools javascript coordinate transformations - * http://files.dixo.net/geotools.html - * - * Portions of this file copyright (c)2005 Paul Dixon (paul@elphin.com) - * - * The algorithm used by the script for WGS84-OSGB36 conversions is derived - * from an OSGB spreadsheet (www.gps.gov.uk) with permission. This has been - * adapted into Perl by Ian Harris, and into PHP by Barry Hunter. Conversion - * accuracy is in the order of 7m for 90% of Great Britain, and should be - * be similar to the conversion made by a typical GPSr - * - */ - -OpenLayers.Projection.OS = { - - /** - * Method: projectForwardBritish - * Given an object with x and y properties in EPSG:4326, modify the x,y - * properties on the object to be the OSGB36 (transverse mercator) - * projected coordinates. - * - * Parameters: - * point - {Object} An object with x and y properties. - * - * Returns: - * {Object} The point, with the x and y properties transformed to spherical - * mercator. - */ - projectForwardBritish: function(point) { - var x1 = OpenLayers.Projection.OS.Lat_Long_H_to_X(point.y,point.x,0,6378137.00,6356752.313); - var y1 = OpenLayers.Projection.OS.Lat_Long_H_to_Y(point.y,point.x,0,6378137.00,6356752.313); - var z1 = OpenLayers.Projection.OS.Lat_H_to_Z (point.y, 0,6378137.00,6356752.313); - - var x2 = OpenLayers.Projection.OS.Helmert_X(x1,y1,z1,-446.448,-0.2470,-0.8421,20.4894); - var y2 = OpenLayers.Projection.OS.Helmert_Y(x1,y1,z1, 125.157,-0.1502,-0.8421,20.4894); - var z2 = OpenLayers.Projection.OS.Helmert_Z(x1,y1,z1,-542.060,-0.1502,-0.2470,20.4894); - - var lat2 = OpenLayers.Projection.OS.XYZ_to_Lat (x2,y2,z2,6377563.396,6356256.910); - var lon2 = OpenLayers.Projection.OS.XYZ_to_Long(x2,y2); - - point.x = OpenLayers.Projection.OS.Lat_Long_to_East (lat2,lon2,6377563.396,6356256.910,400000,0.999601272,49.00000,-2.00000); - point.y = OpenLayers.Projection.OS.Lat_Long_to_North(lat2,lon2,6377563.396,6356256.910,400000,-100000,0.999601272,49.00000,-2.00000); - - return point; - }, - - /** - * Method: projectInverseBritish - * Given an object with x and y properties in OSGB36 (transverse mercator), - * modify the x,y properties on the object to be the unprojected coordinates. - * - * Parameters: - * point - {Object} An object with x and y properties. - * - * Returns: - * {Object} The point, with the x and y properties transformed from - * OSGB36 to unprojected coordinates.. - */ - projectInverseBritish: function(point) { - var lat1 = OpenLayers.Projection.OS.E_N_to_Lat (point.x,point.y,6377563.396,6356256.910,400000,-100000,0.999601272,49.00000,-2.00000); - var lon1 = OpenLayers.Projection.OS.E_N_to_Long(point.x,point.y,6377563.396,6356256.910,400000,-100000,0.999601272,49.00000,-2.00000); - - var x1 = OpenLayers.Projection.OS.Lat_Long_H_to_X(lat1,lon1,0,6377563.396,6356256.910); - var y1 = OpenLayers.Projection.OS.Lat_Long_H_to_Y(lat1,lon1,0,6377563.396,6356256.910); - var z1 = OpenLayers.Projection.OS.Lat_H_to_Z (lat1, 0,6377563.396,6356256.910); - - var x2 = OpenLayers.Projection.OS.Helmert_X(x1,y1,z1,446.448 ,0.2470,0.8421,-20.4894); - var y2 = OpenLayers.Projection.OS.Helmert_Y(x1,y1,z1,-125.157,0.1502,0.8421,-20.4894); - var z2 = OpenLayers.Projection.OS.Helmert_Z(x1,y1,z1,542.060 ,0.1502,0.2470,-20.4894); - - var lat = OpenLayers.Projection.OS.XYZ_to_Lat(x2,y2,z2,6378137.000,6356752.313); - var lon = OpenLayers.Projection.OS.XYZ_to_Long(x2,y2); - - point.x = lon; - point.y = lat; - return point; - }, - - goog2osgb: function(point) { - return OpenLayers.Projection.OS.projectForwardBritish(OpenLayers.Layer.SphericalMercator.projectInverse(point)); - }, - - osgb2goog: function(point) { - return OpenLayers.Layer.SphericalMercator.projectForward(OpenLayers.Projection.OS.projectInverseBritish(point)); - }, - - /***** - * Mathematical functions - *****/ - E_N_to_Lat: function(East, North, a, b, e0, n0, f0, PHI0, LAM0) { - //Un-project Transverse Mercator eastings and northings back to latitude. - //eastings (East) and northings (North) in meters; _ - //ellipsoid axis dimensions (a & b) in meters; _ - //eastings (e0) and northings (n0) of false origin in meters; _ - //central meridian scale factor (f0) and _ - //latitude (PHI0) and longitude (LAM0) of false origin in decimal degrees. - - //Convert angle measures to radians - var Pi = 3.14159265358979; - var RadPHI0 = PHI0 * (Pi / 180); - var RadLAM0 = LAM0 * (Pi / 180); - - //Compute af0, bf0, e squared (e2), n and Et - var af0 = a * f0; - var bf0 = b * f0; - var e2 = (Math.pow(af0,2) - Math.pow(bf0,2)) / Math.pow(af0,2); - var n = (af0 - bf0) / (af0 + bf0); - var Et = East - e0; - - //Compute initial value for latitude (PHI) in radians - var PHId = OpenLayers.Projection.OS.InitialLat(North, n0, af0, RadPHI0, n, bf0); - - //Compute nu, rho and eta2 using value for PHId - var nu = af0 / (Math.sqrt(1 - (e2 * ( Math.pow(Math.sin(PHId),2))))); - var rho = (nu * (1 - e2)) / (1 - (e2 * Math.pow(Math.sin(PHId),2))); - var eta2 = (nu / rho) - 1; - - //Compute Latitude - var VII = (Math.tan(PHId)) / (2 * rho * nu); - var VIII = ((Math.tan(PHId)) / (24 * rho * Math.pow(nu,3))) * (5 + (3 * (Math.pow(Math.tan(PHId),2))) + eta2 - (9 * eta2 * (Math.pow(Math.tan(PHId),2)))); - var IX = ((Math.tan(PHId)) / (720 * rho * Math.pow(nu,5))) * (61 + (90 * ((Math.tan(PHId)) ^ 2)) + (45 * (Math.pow(Math.tan(PHId),4)))); - - var E_N_to_Lat = (180 / Pi) * (PHId - (Math.pow(Et,2) * VII) + (Math.pow(Et,4) * VIII) - ((Et ^ 6) * IX)); - - return (E_N_to_Lat); - }, - - E_N_to_Long: function(East, North, a, b, e0, n0, f0, PHI0, LAM0) { - //Un-project Transverse Mercator eastings and northings back to longitude. - //eastings (East) and northings (North) in meters; _ - //ellipsoid axis dimensions (a & b) in meters; _ - //eastings (e0) and northings (n0) of false origin in meters; _ - //central meridian scale factor (f0) and _ - //latitude (PHI0) and longitude (LAM0) of false origin in decimal degrees. - - //Convert angle measures to radians - var Pi = 3.14159265358979; - var RadPHI0 = PHI0 * (Pi / 180); - var RadLAM0 = LAM0 * (Pi / 180); - - //Compute af0, bf0, e squared (e2), n and Et - var af0 = a * f0; - var bf0 = b * f0; - var e2 = (Math.pow(af0,2) - Math.pow(bf0,2)) / Math.pow(af0,2); - var n = (af0 - bf0) / (af0 + bf0); - var Et = East - e0; - - //Compute initial value for latitude (PHI) in radians - var PHId = OpenLayers.Projection.OS.InitialLat(North, n0, af0, RadPHI0, n, bf0); - - //Compute nu, rho and eta2 using value for PHId - var nu = af0 / (Math.sqrt(1 - (e2 * (Math.pow(Math.sin(PHId),2))))); - var rho = (nu * (1 - e2)) / (1 - (e2 * Math.pow(Math.sin(PHId),2))); - var eta2 = (nu / rho) - 1; - - //Compute Longitude - var X = (Math.pow(Math.cos(PHId),-1)) / nu; - var XI = ((Math.pow(Math.cos(PHId),-1)) / (6 * Math.pow(nu,3))) * ((nu / rho) + (2 * (Math.pow(Math.tan(PHId),2)))); - var XII = ((Math.pow(Math.cos(PHId),-1)) / (120 * Math.pow(nu,5))) * (5 + (28 * (Math.pow(Math.tan(PHId),2))) + (24 * (Math.pow(Math.tan(PHId),4)))); - var XIIA = ((Math.pow(Math.cos(PHId),-1)) / (5040 * Math.pow(nu,7))) * (61 + (662 * (Math.pow(Math.tan(PHId),2))) + (1320 * (Math.pow(Math.tan(PHId),4))) + (720 * (Math.pow(Math.tan(PHId),6)))); - - var E_N_to_Long = (180 / Pi) * (RadLAM0 + (Et * X) - (Math.pow(Et,3) * XI) + (Math.pow(Et,5) * XII) - (Math.pow(Et,7) * XIIA)); - - return E_N_to_Long; - }, - - InitialLat: function(North, n0, afo, PHI0, n, bfo) { - //Compute initial value for Latitude (PHI) IN RADIANS. - //northing of point (North) and northing of false origin (n0) in meters; _ - //semi major axis multiplied by central meridian scale factor (af0) in meters; _ - //latitude of false origin (PHI0) IN RADIANS; _ - //n (computed from a, b and f0) and _ - //ellipsoid semi major axis multiplied by central meridian scale factor (bf0) in meters. - - //First PHI value (PHI1) - var PHI1 = ((North - n0) / afo) + PHI0; - - //Calculate M - var M = OpenLayers.Projection.OS.Marc(bfo, n, PHI0, PHI1); - - //Calculate new PHI value (PHI2) - var PHI2 = ((North - n0 - M) / afo) + PHI1; - - //Iterate to get final value for InitialLat - while (Math.abs(North - n0 - M) > 0.00001) - { - PHI2 = ((North - n0 - M) / afo) + PHI1; - M = OpenLayers.Projection.OS.Marc(bfo, n, PHI0, PHI2); - PHI1 = PHI2; - } - return PHI2; - }, - - Lat_Long_H_to_X: function(PHI, LAM, H, a, b) { - // Convert geodetic coords lat (PHI), long (LAM) and height (H) to cartesian X coordinate. - // Input: - _ - // Latitude (PHI)& Longitude (LAM) both in decimal degrees; _ - // Ellipsoidal height (H) and ellipsoid axis dimensions (a & b) all in meters. - - // Convert angle measures to radians - var Pi = 3.14159265358979; - var RadPHI = PHI * (Pi / 180); - var RadLAM = LAM * (Pi / 180); - - // Compute eccentricity squared and nu - var e2 = (Math.pow(a,2) - Math.pow(b,2)) / Math.pow(a,2); - var V = a / (Math.sqrt(1 - (e2 * ( Math.pow(Math.sin(RadPHI),2))))); - - // Compute X - return (V + H) * (Math.cos(RadPHI)) * (Math.cos(RadLAM)); - }, - - - Lat_Long_H_to_Y: function(PHI, LAM, H, a, b) { - // Convert geodetic coords lat (PHI), long (LAM) and height (H) to cartesian Y coordinate. - // Input: - _ - // Latitude (PHI)& Longitude (LAM) both in decimal degrees; _ - // Ellipsoidal height (H) and ellipsoid axis dimensions (a & b) all in meters. - - // Convert angle measures to radians - var Pi = 3.14159265358979; - var RadPHI = PHI * (Pi / 180); - var RadLAM = LAM * (Pi / 180); - - // Compute eccentricity squared and nu - var e2 = (Math.pow(a,2) - Math.pow(b,2)) / Math.pow(a,2); - var V = a / (Math.sqrt(1 - (e2 * ( Math.pow(Math.sin(RadPHI),2))) )); - - // Compute Y - return (V + H) * (Math.cos(RadPHI)) * (Math.sin(RadLAM)); - }, - - - Lat_H_to_Z: function(PHI, H, a, b) { - // Convert geodetic coord components latitude (PHI) and height (H) to cartesian Z coordinate. - // Input: - _ - // Latitude (PHI) decimal degrees; _ - // Ellipsoidal height (H) and ellipsoid axis dimensions (a & b) all in meters. - - // Convert angle measures to radians - var Pi = 3.14159265358979; - var RadPHI = PHI * (Pi / 180); - - // Compute eccentricity squared and nu - var e2 = (Math.pow(a,2) - Math.pow(b,2)) / Math.pow(a,2); - var V = a / (Math.sqrt(1 - (e2 * ( Math.pow(Math.sin(RadPHI),2)) ))); - - // Compute X - return ((V * (1 - e2)) + H) * (Math.sin(RadPHI)); - }, - - - Helmert_X: function(X,Y,Z,DX,Y_Rot,Z_Rot,s) { - - // (X, Y, Z, DX, Y_Rot, Z_Rot, s) - // Computed Helmert transformed X coordinate. - // Input: - _ - // cartesian XYZ coords (X,Y,Z), X translation (DX) all in meters ; _ - // Y and Z rotations in seconds of arc (Y_Rot, Z_Rot) and scale in ppm (s). - - // Convert rotations to radians and ppm scale to a factor - var Pi = 3.14159265358979; - var sfactor = s * 0.000001; - - var RadY_Rot = (Y_Rot / 3600) * (Pi / 180); - - var RadZ_Rot = (Z_Rot / 3600) * (Pi / 180); - - //Compute transformed X coord - return (X + (X * sfactor) - (Y * RadZ_Rot) + (Z * RadY_Rot) + DX); - }, - - - Helmert_Y: function(X,Y,Z,DY,X_Rot,Z_Rot,s) { - // Computed Helmert transformed Y coordinate. - // Input: - _ - // cartesian XYZ coords (X,Y,Z), Y translation (DY) all in meters ; _ - // X and Z rotations in seconds of arc (X_Rot, Z_Rot) and scale in ppm (s). - - // Convert rotations to radians and ppm scale to a factor - var Pi = 3.14159265358979; - var sfactor = s * 0.000001; - var RadX_Rot = (X_Rot / 3600) * (Pi / 180); - var RadZ_Rot = (Z_Rot / 3600) * (Pi / 180); - - // Compute transformed Y coord - return (X * RadZ_Rot) + Y + (Y * sfactor) - (Z * RadX_Rot) + DY; - }, - - - - Helmert_Z: function(X, Y, Z, DZ, X_Rot, Y_Rot, s) { - // Computed Helmert transformed Z coordinate. - // Input: - _ - // cartesian XYZ coords (X,Y,Z), Z translation (DZ) all in meters ; _ - // X and Y rotations in seconds of arc (X_Rot, Y_Rot) and scale in ppm (s). - // - // Convert rotations to radians and ppm scale to a factor - var Pi = 3.14159265358979; - var sfactor = s * 0.000001; - var RadX_Rot = (X_Rot / 3600) * (Pi / 180); - var RadY_Rot = (Y_Rot / 3600) * (Pi / 180); - - // Compute transformed Z coord - return (-1 * X * RadY_Rot) + (Y * RadX_Rot) + Z + (Z * sfactor) + DZ; - } , - - XYZ_to_Lat: function(X, Y, Z, a, b) { - // Convert XYZ to Latitude (PHI) in Dec Degrees. - // Input: - _ - // XYZ cartesian coords (X,Y,Z) and ellipsoid axis dimensions (a & b), all in meters. - - // this FUNCTION REQUIRES THE "Iterate_XYZ_to_Lat" FUNCTION - // this FUNCTION IS CALLED BY THE "XYZ_to_H" FUNCTION - - var RootXYSqr = Math.sqrt(Math.pow(X,2) + Math.pow(Y,2)); - var e2 = (Math.pow(a,2) - Math.pow(b,2)) / Math.pow(a,2); - var PHI1 = Math.atan2(Z , (RootXYSqr * (1 - e2)) ); - - var PHI = OpenLayers.Projection.OS.Iterate_XYZ_to_Lat(a, e2, PHI1, Z, RootXYSqr); - - var Pi = 3.14159265358979; - - return PHI * (180 / Pi); - }, - - - Iterate_XYZ_to_Lat: function(a, e2, PHI1, Z, RootXYSqr) { - // Iteratively computes Latitude (PHI). - // Input: - _ - // ellipsoid semi major axis (a) in meters; _ - // eta squared (e2); _ - // estimated value for latitude (PHI1) in radians; _ - // cartesian Z coordinate (Z) in meters; _ - // RootXYSqr computed from X & Y in meters. - - // this FUNCTION IS CALLED BY THE "XYZ_to_PHI" FUNCTION - // this FUNCTION IS ALSO USED ON IT'S OWN IN THE _ - // "Projection and Transformation Calculations.xls" SPREADSHEET - - - var V = a / (Math.sqrt(1 - (e2 * Math.pow(Math.sin(PHI1),2)))); - var PHI2 = Math.atan2((Z + (e2 * V * (Math.sin(PHI1)))) , RootXYSqr); - - while (Math.abs(PHI1 - PHI2) > 0.000000001) { - PHI1 = PHI2; - V = a / (Math.sqrt(1 - (e2 * Math.pow(Math.sin(PHI1),2)))); - PHI2 = Math.atan2((Z + (e2 * V * (Math.sin(PHI1)))) , RootXYSqr); - } - - return PHI2; - }, - - - XYZ_to_Long: function (X, Y) { - // Convert XYZ to Longitude (LAM) in Dec Degrees. - // Input: - _ - // X and Y cartesian coords in meters. - - var Pi = 3.14159265358979; - return Math.atan2(Y , X) * (180 / Pi); - }, - - Marc: function (bf0, n, PHI0, PHI) { - //Compute meridional arc. - //Input: - _ - // ellipsoid semi major axis multiplied by central meridian scale factor (bf0) in meters; _ - // n (computed from a, b and f0); _ - // lat of false origin (PHI0) and initial or final latitude of point (PHI) IN RADIANS. - - //this FUNCTION IS CALLED BY THE - _ - // "Lat_Long_to_North" and "InitialLat" FUNCTIONS - // this FUNCTION IS ALSO USED ON IT'S OWN IN THE "Projection and Transformation Calculations.xls" SPREADSHEET - - return bf0 * (((1 + n + ((5 / 4) * Math.pow(n,2)) + ((5 / 4) * Math.pow(n,3))) * (PHI - PHI0)) - (((3 * n) + (3 * Math.pow(n,2)) + ((21 / 8) * Math.pow(n,3))) * (Math.sin(PHI - PHI0)) * (Math.cos(PHI + PHI0))) + ((((15 / 8 - ) * Math.pow(n,2)) + ((15 / 8) * Math.pow(n,3))) * (Math.sin(2 * (PHI - PHI0))) * (Math.cos(2 * (PHI + PHI0)))) - (((35 / 24) * Math.pow(n,3)) * (Math.sin(3 * (PHI - PHI0))) * (Math.cos(3 * (PHI + PHI0))))); - }, - - Lat_Long_to_East: function (PHI, LAM, a, b, e0, f0, PHI0, LAM0) { - //Project Latitude and longitude to Transverse Mercator eastings. - //Input: - _ - // Latitude (PHI) and Longitude (LAM) in decimal degrees; _ - // ellipsoid axis dimensions (a & b) in meters; _ - // eastings of false origin (e0) in meters; _ - // central meridian scale factor (f0); _ - // latitude (PHI0) and longitude (LAM0) of false origin in decimal degrees. - - // Convert angle measures to radians - var Pi = 3.14159265358979; - var RadPHI = PHI * (Pi / 180); - var RadLAM = LAM * (Pi / 180); - var RadPHI0 = PHI0 * (Pi / 180); - var RadLAM0 = LAM0 * (Pi / 180); - - var af0 = a * f0; - var bf0 = b * f0; - var e2 = (Math.pow(af0,2) - Math.pow(bf0,2)) / Math.pow(af0,2); - var n = (af0 - bf0) / (af0 + bf0); - var nu = af0 / (Math.sqrt(1 - (e2 * Math.pow(Math.sin(RadPHI),2) ))); - var rho = (nu * (1 - e2)) / (1 - (e2 * Math.pow(Math.sin(RadPHI),2) )); - var eta2 = (nu / rho) - 1; - var p = RadLAM - RadLAM0; - - var IV = nu * (Math.cos(RadPHI)); - var V = (nu / 6) * ( Math.pow(Math.cos(RadPHI),3)) * ((nu / rho) - (Math.pow(Math.tan(RadPHI),2))); - var VI = (nu / 120) * (Math.pow(Math.cos(RadPHI),5)) * (5 - (18 * (Math.pow(Math.tan(RadPHI),2))) + (Math.pow(Math.tan(RadPHI),4)) + (14 * eta2) - (58 * (Math.pow(Math.tan(RadPHI),2)) * eta2)); - - return e0 + (p * IV) + (Math.pow(p,3) * V) + (Math.pow(p,5) * VI); - }, - - Lat_Long_to_North: function (PHI, LAM, a, b, e0, n0, f0, PHI0, LAM0) { - // Project Latitude and longitude to Transverse Mercator northings - // Input: - _ - // Latitude (PHI) and Longitude (LAM) in decimal degrees; _ - // ellipsoid axis dimensions (a & b) in meters; _ - // eastings (e0) and northings (n0) of false origin in meters; _ - // central meridian scale factor (f0); _ - // latitude (PHI0) and longitude (LAM0) of false origin in decimal degrees. - - // REQUIRES THE "Marc" FUNCTION - - // Convert angle measures to radians - var Pi = 3.14159265358979; - var RadPHI = PHI * (Pi / 180); - var RadLAM = LAM * (Pi / 180); - var RadPHI0 = PHI0 * (Pi / 180); - var RadLAM0 = LAM0 * (Pi / 180); - - var af0 = a * f0; - var bf0 = b * f0; - var e2 = (Math.pow(af0,2) - Math.pow(bf0,2)) / Math.pow(af0,2); - var n = (af0 - bf0) / (af0 + bf0); - var nu = af0 / (Math.sqrt(1 - (e2 * Math.pow(Math.sin(RadPHI),2)))); - var rho = (nu * (1 - e2)) / (1 - (e2 * Math.pow(Math.sin(RadPHI),2))); - var eta2 = (nu / rho) - 1; - var p = RadLAM - RadLAM0; - var M = OpenLayers.Projection.OS.Marc(bf0, n, RadPHI0, RadPHI); - - var I = M + n0; - var II = (nu / 2) * (Math.sin(RadPHI)) * (Math.cos(RadPHI)); - var III = ((nu / 24) * (Math.sin(RadPHI)) * (Math.pow(Math.cos(RadPHI),3))) * (5 - (Math.pow(Math.tan(RadPHI),2)) + (9 * eta2)); - var IIIA = ((nu / 720) * (Math.sin(RadPHI)) * (Math.pow(Math.cos(RadPHI),5))) * (61 - (58 * (Math.pow(Math.tan(RadPHI),2))) + (Math.pow(Math.tan(RadPHI),4))); - - return I + (Math.pow(p,2) * II) + (Math.pow(p,4) * III) + (Math.pow(p,6) * IIIA); - } - -}; - -/** - * Note: Two transforms declared - * Transforms from EPSG:4326 to EPSG:27700 and from EPSG:27700 to EPSG:4326 - * are set by this class. - */ -OpenLayers.Projection.addTransform("EPSG:4326", "EPSG:27700", - OpenLayers.Projection.OS.projectForwardBritish); -OpenLayers.Projection.addTransform("EPSG:27700", "EPSG:4326", - OpenLayers.Projection.OS.projectInverseBritish); -OpenLayers.Projection.addTransform("EPSG:900913", "EPSG:27700", - OpenLayers.Projection.OS.goog2osgb); -OpenLayers.Projection.addTransform("EPSG:27700", "EPSG:900913", - OpenLayers.Projection.OS.osgb2goog); diff --git a/phonegap/www/js/OpenLayers.fixmystreet.js b/phonegap/www/js/OpenLayers.fixmystreet.js deleted file mode 100644 index a3466a1a9..000000000 --- a/phonegap/www/js/OpenLayers.fixmystreet.js +++ /dev/null @@ -1,1269 +0,0 @@ -/* - - 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. - - Includes compressed code under the following licenses: - - (For uncompressed versions of the code used please see the - OpenLayers SVN repository: <http://openlayers.org/>) - -*/ - -/* 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) - * - * 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.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&¢er!=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"}); diff --git a/phonegap/www/js/config.js-example b/phonegap/www/js/config.js-example deleted file mode 100644 index c81c2c381..000000000 --- a/phonegap/www/js/config.js-example +++ /dev/null @@ -1,5 +0,0 @@ -var CONFIG = { - FMS_URL: '', - MAPIT_URL: '', - BING_API_KEY: '' -}; diff --git a/phonegap/www/js/fixmystreet.js b/phonegap/www/js/fixmystreet.js deleted file mode 100644 index ce7921488..000000000 --- a/phonegap/www/js/fixmystreet.js +++ /dev/null @@ -1,572 +0,0 @@ -/* - * fixmystreet.js - * FixMyStreet JavaScript - */ - -function form_category_onchange() { - var cat = $('#form_category'); - var args = { - category: cat.val() - }; - - if ( typeof fixmystreet !== 'undefined' ) { - args.latitude = fixmystreet.latitude; - args.longitude = fixmystreet.longitude; - } else { - args.latitude = $('input[name="latitude"]').val(); - args.longitude = $('input[name="longitude"]').val(); - } - - $.getJSON( CONFIG.FMS_URL + 'report/new/category_extras', args, function(data) { - if ( data.category_extra ) { - if ( $('#category_meta').size() ) { - $('#category_meta').html( data.category_extra); - } else { - $('#form_category_row').after( data.category_extra ); - } - } else { - $('#category_meta').empty(); - } - }); -} - -/* - * general height fixing function - * - * elem1: element to check against - * elem2: target element - * offset: this will be added (if present) to the final value, useful for height errors - */ -function heightFix(elem1, elem2, offset){ - var h1 = $(elem1).height(), - h2 = $(elem2).height(); - if(offset === undefined){ - offset = 0; - } - if(h1 > h2){ - $(elem2).css({'min-height':h1+offset}); - } -} - - -/* - * very simple tab function - * - * elem: trigger element, must have an href attribute (so probably needs to be an <a>) - */ -function tabs(elem, indirect) { - var href = elem.attr('href'); - //stupid IE sometimes adds the full uri into the href attr, so trim - var start = href.indexOf('#'), - target = href.slice(start, href.length); - - if (indirect) { - elem = $(target + '_tab'); - } - - if(!$(target).hasClass('open')) - { - //toggle class on nav - $('.tab-nav .active').removeClass('active'); - elem.addClass('active'); - - //hide / show the right tab - $('.tab.open').hide().removeClass('open'); - $(target).show().addClass('open'); - } -} - - -$(function(){ - var $html = $('html'); - - $html.removeClass('no-js').addClass('js'); - - - // Preload the new report pin - document.createElement('img').src = '../i/pin-green.png'; - - var last_type; - $(window).resize(function(){ - var type = $('#site-header').css('borderTopWidth'); - if (type == '4px') { type = 'mobile'; } - else if (type == '0px') { type = 'desktop'; } - else { return; } - if (last_type == type) { return; } - if (type == 'mobile') { - $html.addClass('mobile'); - $('#map_box').prependTo('.content').css({ - zIndex: '', position: '', - top: '', left: '', right: '', bottom: '', - width: '', height: '10em', - margin: '' - }); - if (typeof fixmystreet !== 'undefined') { - fixmystreet.state_map = ''; // XXX - } - if (typeof fixmystreet !== 'undefined' && fixmystreet.page == 'around') { - // Immediately go full screen map if on around page - $('#site-header').hide(); - $('#map_box').prependTo('.wrapper').css({ - position: 'absolute', - top: 0, left: 0, right: 0, bottom: 0, - height: 'auto', - margin: 0 - }); - $('#fms_pan_zoom').css({ top: '2.75em !important' }); - $('.big-green-banner') - .addClass('mobile-map-banner') - .appendTo('#map_box') - .text('Place pin on map') - .prepend('<a href="index.html">home</a>'); - } - $('span.report-a-problem-btn').on('click.reportBtn', function(){ - $('html, body').animate({scrollTop:0}, 500); - }).css({ cursor:'pointer' }).on('hover.reportBtn', function(){ - $(this).toggleClass('hover'); - }); - } else { - // Make map full screen on non-mobile sizes. - $html.removeClass('mobile'); - var map_pos = 'fixed', map_height = '100%'; - if ($html.hasClass('ie6')) { - map_pos = 'absolute'; - map_height = $(window).height(); - } - $('#map_box').prependTo('.wrapper').css({ - zIndex: 0, position: map_pos, - top: 0, left: 0, right: 0, bottom: 0, - width: '100%', height: map_height, - margin: 0 - }); - if (typeof fixmystreet !== 'undefined') { - fixmystreet.state_map = 'full'; - } - if (typeof fixmystreet !== 'undefined' && fixmystreet.page == 'around') { - // Remove full-screen-ness - $('#site-header').show(); - $('#fms_pan_zoom').css({ top: '4.75em !important' }); - $('.big-green-banner') - .removeClass('mobile-map-banner') - .prependTo('#side') - .text('Click map to report a problem'); - } - $('span.report-a-problem-btn').css({ cursor:'' }).off('.reportBtn'); - } - last_type = type; - }); - - //add mobile class if small screen - $(window).resize(); - - $('#pc').focus(); - - $('input[type=submit]').removeAttr('disabled'); - /* - $('#mapForm').submit(function() { - if (this.submit_problem) { - $('input[type=submit]', this).prop("disabled", true); - } - return true; - }); - */ - - if (!$('#been_fixed_no').prop('checked') && !$('#been_fixed_unknown').prop('checked')) { - $('#another_qn').hide(); - } - $('#been_fixed_no').click(function() { - $('#another_qn').show('fast'); - }); - $('#been_fixed_unknown').click(function() { - $('#another_qn').show('fast'); - }); - $('#been_fixed_yes').click(function() { - $('#another_qn').hide('fast'); - }); - - // FIXME - needs to use translated string - jQuery.validator.addMethod('validCategory', function(value, element) { - return this.optional(element) || value != '-- Pick a category --'; }, validation_strings.category ); - - jQuery.validator.addMethod('validName', function(value, element) { - var validNamePat = /\ba\s*n+on+((y|o)mo?u?s)?(ly)?\b/i; - return this.optional(element) || value.length > 5 && value.match( /\S/ ) && !value.match( validNamePat ); }, validation_strings.category ); - - var form_submitted = 0; - var submitted = false; - - $("form.validate").validate({ - rules: { - title: { required: true }, - detail: { required: true }, - email: { required: true }, - update: { required: true }, - rznvy: { required: true } - }, - messages: validation_strings, - onkeyup: false, - onfocusout: false, - errorElement: 'div', - errorClass: 'form-error', - // we do this to stop things jumping around on blur - success: function (err) { if ( form_submitted ) { err.addClass('label-valid').removeClass('label-valid-hidden').html( ' ' ); } else { err.addClass('label-valid-hidden'); } }, - errorPlacement: function( error, element ) { - element.before( error ); - }, - submitHandler: function(form) { - if (form.submit_problem) { - $('input[type=submit]', form).prop("disabled", true); - } - - // this needs to be disabled otherwise it submits the form normally rather than - // over AJAX. This comment is to make this more likely to happen when updating - // this code. - //form.submit(); - }, - // make sure we can see the error message when we focus on invalid elements - showErrors: function( errorMap, errorList ) { - if ( submitted && errorList.length ) { - $(window).scrollTop( $(errorList[0].element).offset().top - 120 ); - } - this.defaultShowErrors(); - submitted = false; - }, - invalidHandler: function(form, validator) { submitted = true; } - }); - - $('input[type=submit]').click( function(e) { form_submitted = 1; } ); - - /* set correct required status depending on what we submit - * NB: need to add things to form_category as the JS updating - * of this we do after a map click removes them */ - $('#submit_sign_in').click( function(e) { - $('#form_category').addClass('required validCategory').removeClass('valid'); - $('#form_name').removeClass(); - } ); - - $('#submit_register').click( function(e) { - $('#form_category').addClass('required validCategory').removeClass('valid'); - $('#form_name').addClass('required validName'); - } ); - - $('#problem_submit > input[type="submit"]').click( function(e) { - $('#form_category').addClass('required validCategory').removeClass('valid'); - $('#form_name').addClass('required validName'); - } ); - - $('#update_post').click( function(e) { - $('#form_name').addClass('required').removeClass('valid'); - } ); - - $('#form_category').change( form_category_onchange ); - - // Geolocation - if (geo_position_js.init()) { - $('#postcodeForm').after('<a href="#" id="geolocate_link">… or locate me automatically</a>'); - $('#geolocate_link').click(getPosition); - } - - /* - * Report a problem page - */ - //desktop - if ($('#report-a-problem-sidebar').is(':visible')) { - heightFix('#report-a-problem-sidebar', '.content', 26); - } - - //show/hide notes on mobile - $('.mobile #report-a-problem-sidebar').after('<a href="#" class="rap-notes-trigger button-right">How to send successful reports</a>').hide(); - $('.rap-notes-trigger').click(function(e){ - e.preventDefault(); - //check if we've already moved the notes - if($('.rap-notes').length > 0){ - //if we have, show and hide .content - $('.content').hide(); - $('.rap-notes').show(); - }else{ - //if not, move them and show, hiding .content - $('.content').after('<div class="content rap-notes"></div>').hide(); - $('#report-a-problem-sidebar').appendTo('.rap-notes').show().after('<a href="#" class="rap-notes-close button-left">Back</a>'); - } - $('html, body').scrollTop($('#report-a-problem-sidebar').offset().top); - location.hash = 'rap-notes'; - }); - $('.mobile').on('click', '.rap-notes-close', function(e){ - e.preventDefault(); - //hide notes, show .content - $('.content').show(); - $('.rap-notes').hide(); - $('html, body').scrollTop($('#mob_ok').offset().top); - location.hash = 'report'; - }); - - //move 'skip this step' link on mobile - $('.mobile #skip-this-step').hide(); - $('.mobile #skip-this-step a').addClass('chevron').wrap('<li>').appendTo('#key-tools'); - - /* - * Tabs - */ - //make initial tab active - $('.tab-nav a').first().addClass('active'); - $('.tab').first().addClass('open'); - - //hide other tabs - $('.tab').not('.open').hide(); - - //set up click event - $(".tab-nav").on('click', 'a', function(e){ - e.preventDefault(); - tabs($(this)); - }); - $('.tab_link').click(function(e) { - e.preventDefault(); - tabs($(this), 1); - }); - - /* - * Skip to nav on mobile - */ - $('.mobile').on('click', '#nav-link', function(e){ - e.preventDefault(); - var offset = $('#main-nav').offset().top; - $('html, body').animate({scrollTop:offset}, 1000); - }); - - - /* - * Show stuff on input focus - */ - $('.form-focus-hidden').hide(); - $('.form-focus-trigger').on('focus', function(){ - $('.form-focus-hidden').fadeIn(500); - }); - - /* - * Show on click - pretty generic - */ - $('.hideshow-trigger').on('click', function(e){ - e.preventDefault(); - var href = $(this).attr('href'), - //stupid IE sometimes adds the full uri into the href attr, so trim - start = href.indexOf('#'), - target = href.slice(start, href.length); - - $(target).removeClass('hidden-js'); - - $(this).hide(); - }); - - /* - * nicetable - on mobile shift 'name' col to be a row - */ - $('.mobile .nicetable th.title').remove(); - $('.mobile .nicetable td.title').each(function(i){ - $(this).attr('colspan', 5).insertBefore($(this).parent('tr')).wrap('<tr class="heading" />'); - }); - // $('.mobile .nicetable tr.heading > td.title').css({'min-width':'300px'}); - // $('.mobile .nicetable tr > td.data').css({'max-width':'12%'}); - - /* - * Map controls prettiness - */ - //add links container (if its not there) - if($('#sub_map_links').length === 0){ - $('<p id="sub_map_links" />').insertAfter($('#map')); - } - -// A sliding drawer from the bottom of the page, small version -// that doesn't change the main content at all. -$.fn.small_drawer = function(id) { - this.toggle(function(){ - var $this = $(this), d = $('#' + id); - if (!$this.addClass('hover').data('setup')) { - d.hide().removeClass('hidden-js').css({ - padding: '1em', - background: '#fff' - }); - $this.data('setup', true); - } - d.slideDown(); - }, function(e){ - var $this = $(this), d = $('#' + id); - $this.removeClass('hover'); - d.slideUp(); - }); -}; - -// A sliding drawer from the bottom of the page, large version -$.fn.drawer = function(id, ajax) { - // IE7 positions the fixed tool bar 1em to the left unless it comes after - // the full-width section, ho-hum. Move it to where it would be after an - // open/close anyway - if ($('html.ie7').length) { - var $sw = $('.shadow-wrap'), $content = $('.content[role="main"]'); - $sw.appendTo($content); - } - this.toggle(function(){ - var $this = $(this), d = $('#' + id), $content = $('.content[role="main"]'); - if (!$this.addClass('hover').data('setup')) { - // make a drawer div with an innerDiv - if (!d.length) { - d = $('<div id="' + id + '">'); - } - var innerDiv = $('<div>'); - d.wrapInner(innerDiv); - - // if ajax, load it with a spinner - if (ajax) { - var href = $this.attr('href') + ';ajax=1'; - $this.prepend(' <img class="spinner" src="/cobrands/fixmystreet/images/spinner-black-333.gif" style="margin-right:2em;">'); - innerDiv.load(href, function(){ - $('.spinner').remove(); - }); - } - - // Tall drawer - put after .content for scrolling to work okay. - // position over the top of the main .content in precisely the right location - d.insertAfter($content).addClass('content').css({ - position: 'absolute', - zIndex: '1100', - marginTop: $('html.ie6, html.ie7').length ? '-3em' : 0, // IE6/7 otherwise include the 3em padding and stay too low - left: 0, - top: $(window).height() - $content.offset().top - }).removeClass('hidden-js').find('h2').css({ marginTop: 0 }); - $this.data('setup', true); - } - - //do the animation - $('.shadow-wrap').prependTo(d).addClass('static'); - d.show().animate({top:'3em'}, 1000, function(){ - $content.fadeOut(function() { - d.css({ position: 'relative' }); - }); - }); - }, function(e){ - var $this = $(this), d = $('#' + id), $sw = $('.shadow-wrap'), - $content = $('.content[role="main"]'), - tot_height = $(window).height() - d.offset().top; - $this.removeClass('hover'); - d.css({ position: 'absolute' }).animate({ top: tot_height }, 1000, function(){ - d.hide(); - $sw.appendTo($content).removeClass('static'); - }); - $content.show(); - }); -}; - - if ($('html.mobile').length) { - $('#council_wards').hide().removeClass('hidden-js').find('h2').hide(); - $('#key-tool-wards').click(function(e){ - e.preventDefault(); - $('#council_wards').slideToggle('800', function(){ - $('#key-tool-wards').toggleClass('active'); - }); - }); - } else { - $('#key-tool-wards').drawer('council_wards', false); - $('#key-tool-around-updates').drawer('updates_ajax', true); - } - $('#key-tool-report-updates').small_drawer('report-updates-data'); - - // Go directly to RSS feed if RSS button clicked on alert page - // (due to not wanting around form to submit, though good thing anyway) - $('.container').on('click', '#alert_rss_button', function(e){ - e.preventDefault(); - var feed = $('input[name=feed][type=radio]:checked').nextAll('a').attr('href'); - window.location.href = feed; - }); - $('.container').on('click', '#alert_email_button', function(e){ - e.preventDefault(); - var form = $('<form/>').attr({ method:'post', action:"/alert/subscribe" }); - form.append($('<input name="alert" value="Subscribe me to an email alert" type="hidden" />')); - $('#alerts input[type=text], #alerts input[type=hidden], #alerts input[type=radio]:checked').each(function() { - var $v = $(this); - $('<input/>').attr({ name:$v.attr('name'), value:$v.val(), type:'hidden' }).appendTo(form); - }); - form.submit(); - }); - - //add permalink on desktop, force hide on mobile - $('#sub_map_links').append('<a href="#" id="map_permalink">Permalink</a>'); - if($('.mobile').length){ - $('#map_permalink').hide(); - $('#key-tools a.feed').appendTo('#sub_map_links'); - $('#key-tools li:empty').remove(); - $('#report-updates-data').insertAfter($('#map_box')); - } - //add open/close toggle button on desk - $('#sub_map_links').prepend('<span id="map_links_toggle"> </span>'); - - //set up map_links_toggle click event - $('#map_links_toggle').on('click', function(){ - var maplinks_width = $('#sub_map_links').width(); - - if($(this).hasClass('closed')){ - $(this).removeClass('closed'); - $('#sub_map_links').animate({'right':'0'}, 1200); - }else{ - $(this).addClass('closed'); - $('#sub_map_links').animate({'right':-maplinks_width}, 1200); - } - }); - - - /* - * Add close buttons for .promo's - */ - if($('.promo').length){ - $('.promo').append('<a href="#" class="close-promo">x</a>'); - } - //only close its own parent - $('.promo').on('click', '.close-promo', function(e){ - e.preventDefault(); - $(this).parent('.promo').animate({ - 'height':0, - 'margin-bottom':0, - 'padding-top':0, - 'padding-bottom':0 - },{ - duration:500, - queue:false - }).fadeOut(500); - }); - - - - /* - * Fancybox fullscreen images - */ - if (typeof $.fancybox == 'function') { - $('a[rel=fancy]').fancybox({ - 'overlayColor': '#000000' - }); - } - - /* - * heightfix the desktop .content div - * - * this must be kept near the end so that the - * rendered height is used after any page manipulation (such as tabs) - */ - if (!$('html.mobile').length) { - if (!($('body').hasClass('frontpage'))){ - heightFix(window, '.content', -176); - } - } - -}); - -/* -XXX Disabled because jerky on Android and makes map URL bar height too small on iPhone. -// Hide URL bar -$(window).load(function(){ - window.setTimeout(function(){ - var s = window.pageYOffset || document.compatMode === "CSS1Compat" && document.documentElement.scrollTop || document.body.scrollTop || 0; - if (s < 20 && !location.hash) { - window.scrollTo(0, 1); - } - }, 0); -}); -*/ - diff --git a/phonegap/www/js/geo.min.js b/phonegap/www/js/geo.min.js deleted file mode 100644 index 4f44b30ca..000000000 --- a/phonegap/www/js/geo.min.js +++ /dev/null @@ -1,85 +0,0 @@ -// geo-location-javascript v0.4.8 http://code.google.com/p/geo-location-javascript/ Copyright (c) 2009 Stan Wiechers. Licensed under the MIT licenses. - -var bb_success;var bb_error;var bb_blackberryTimeout_id=-1;function handleBlackBerryLocationTimeout() -{if(bb_blackberryTimeout_id!=-1) -{bb_error({message:"Timeout error",code:3});}} -function handleBlackBerryLocation() -{clearTimeout(bb_blackberryTimeout_id);bb_blackberryTimeout_id=-1;if(bb_success&&bb_error) -{if(blackberry.location.latitude==0&&blackberry.location.longitude==0) -{bb_error({message:"Position unavailable",code:2});} -else -{var timestamp=null;if(blackberry.location.timestamp) -{timestamp=new Date(blackberry.location.timestamp);} -bb_success({timestamp:timestamp,coords:{latitude:blackberry.location.latitude,longitude:blackberry.location.longitude}});} -bb_success=null;bb_error=null;}} -var geo_position_js=function(){var pub={};var provider=null;var u="undefined";pub.showMap=function(latitude,longitude) -{if(typeof(blackberry)!=u) -{blackberry.launch.newMap({"latitude":latitude*100000,"longitude":-longitude*100000});} -else -{window.location="http://maps.google.com/maps?q=loc:"+latitude+","+longitude;}} -pub.getCurrentPosition=function(success,error,opts) -{provider.getCurrentPosition(success,error,opts);} -pub.init=function() -{try -{if(typeof(geo_position_js_simulator)!=u) -{provider=geo_position_js_simulator;} -else if(typeof(bondi)!=u&&typeof(bondi.geolocation)!=u) -{provider=bondi.geolocation;} -else if(typeof(navigator.geolocation)!=u) -{provider=navigator.geolocation;pub.getCurrentPosition=function(success,error,opts) -{function _success(p) -{if(typeof(p.latitude)!=u) -{success({timestamp:p.timestamp,coords:{latitude:p.latitude,longitude:p.longitude}});} -else -{success(p);}} -provider.getCurrentPosition(_success,error,opts);}} -else if(typeof(window.blackberry)!=u&&blackberry.location.GPSSupported) -{if(typeof(blackberry.location.setAidMode)==u) -{return false;} -blackberry.location.setAidMode(2);pub.getCurrentPosition=function(success,error,opts) -{bb_success=success;bb_error=error;if(opts['timeout']) -{bb_blackberryTimeout_id=setTimeout("handleBlackBerryLocationTimeout()",opts['timeout']);} -else -{bb_blackberryTimeout_id=setTimeout("handleBlackBerryLocationTimeout()",60000);} -blackberry.location.onLocationUpdate("handleBlackBerryLocation()");blackberry.location.refreshLocation();} -provider=blackberry.location;} -else if(typeof(window.google)!="undefined"&&typeof(google.gears)!="undefined") -{provider=google.gears.factory.create('beta.geolocation');pub.getCurrentPosition=function(successCallback,errorCallback,options) -{function _successCallback(p) -{if(typeof(p.latitude)!="undefined") -{successCallback({timestamp:p.timestamp,coords:{latitude:p.latitude,longitude:p.longitude}});} -else -{successCallback(p);}} -provider.getCurrentPosition(_successCallback,errorCallback,options);}} -else if(typeof(Mojo)!=u&&typeof(Mojo.Service.Request)!="Mojo.Service.Request") -{provider=true;pub.getCurrentPosition=function(success,error,opts) -{parameters={};if(opts) -{if(opts.enableHighAccuracy&&opts.enableHighAccuracy==true) -{parameters.accuracy=1;} -if(opts.maximumAge) -{parameters.maximumAge=opts.maximumAge;} -if(opts.responseTime) -{if(opts.responseTime<5) -{parameters.responseTime=1;} -else if(opts.responseTime<20) -{parameters.responseTime=2;} -else -{parameters.timeout=3;}}} -r=new Mojo.Service.Request('palm://com.palm.location',{method:"getCurrentPosition",parameters:parameters,onSuccess:function(p){success({timestamp:p.timestamp,coords:{latitude:p.latitude,longitude:p.longitude,heading:p.heading}});},onFailure:function(e){if(e.errorCode==1) -{error({code:3,message:"Timeout"});} -else if(e.errorCode==2) -{error({code:2,message:"Position unavailable"});} -else -{error({code:0,message:"Unknown Error: webOS-code"+errorCode});}}});}} -else if(typeof(device)!=u&&typeof(device.getServiceObject)!=u) -{provider=device.getServiceObject("Service.Location","ILocation");pub.getCurrentPosition=function(success,error,opts) -{function callback(transId,eventCode,result){if(eventCode==4) -{error({message:"Position unavailable",code:2});} -else -{success({timestamp:null,coords:{latitude:result.ReturnValue.Latitude,longitude:result.ReturnValue.Longitude,altitude:result.ReturnValue.Altitude,heading:result.ReturnValue.Heading}});}} -var criteria=new Object();criteria.LocationInformationClass="BasicLocationInformation";provider.ILocation.GetLocation(criteria,callback);}}} -catch(e){if(typeof(console)!=u) -{console.log(e);} -return false;} -return provider!=null;} -return pub;}();
\ No newline at end of file diff --git a/phonegap/www/js/jquery-1.7.0.min.js b/phonegap/www/js/jquery-1.7.0.min.js deleted file mode 100644 index 3ca5e0f5d..000000000 --- a/phonegap/www/js/jquery-1.7.0.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.7 jquery.com | jquery.org/license */ -(function(a,b){function cA(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cx(a){if(!cm[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cn||(cn=c.createElement("iframe"),cn.frameBorder=cn.width=cn.height=0),b.appendChild(cn);if(!co||!cn.createElement)co=(cn.contentWindow||cn.contentDocument).document,co.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),co.close();d=co.createElement(a),co.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cn)}cm[a]=e}return cm[a]}function cw(a,b){var c={};f.each(cs.concat.apply([],cs.slice(0,b)),function(){c[this]=a});return c}function cv(){ct=b}function cu(){setTimeout(cv,0);return ct=f.now()}function cl(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ck(){try{return new a.XMLHttpRequest}catch(b){}}function ce(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cd(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function cc(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bG.test(a)?d(a,e):cc(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)cc(a+"["+e+"]",b[e],c,d);else d(a,b)}function cb(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function ca(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bV,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=ca(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=ca(a,c,d,e,"*",g));return l}function b_(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bR),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bE(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bz:bA;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bB(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function br(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bi,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bq(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bp(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bp)}function bp(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bo(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bn(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bm(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bl(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function X(a){var b=Y.split(" "),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function W(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(R.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(){return!0}function M(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.add(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;B.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return a!=null&&m.test(a)&&!isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?"":H.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(I)return I.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(arguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){J["[object "+b+"]"]=b.toLowerCase()}),A=e.uaMatch(z),A.browser&&(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener("DOMContentLoaded",C,!1),e.ready()}:c.attachEvent&&(C=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",C),e.ready())}),typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return e});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){return i.done.apply(i,arguments).fail.apply(i,arguments)},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/><nav></nav>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,unknownElems:!!a.getElementsByTagName("nav").length,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",enctype:!!c.createElement("form").enctype,submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.lastChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-999px",top:"-999px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;f(function(){var a,b,d,e,g,h,i=1,j="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",l="visibility:hidden;border:0;",n="style='"+j+"border:5px solid #000;padding:0;'",p="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>";m=c.getElementsByTagName("body")[0];!m||(a=c.createElement("div"),a.style.cssText=l+"width:0;height:0;position:static;top:0;margin-top:"+i+"px",m.insertBefore(a,m.firstChild),o=c.createElement("div"),o.style.cssText=j+l,o.innerHTML=p,a.appendChild(o),b=o.firstChild,d=b.firstChild,g=b.nextSibling.firstChild.firstChild,h={doesNotAddBorder:d.offsetTop!==5,doesAddBorderForTableAndCells:g.offsetTop===5},d.style.position="fixed",d.style.top="20px",h.fixedPosition=d.offsetTop===20||d.offsetTop===15,d.style.position=d.style.top="",b.style.overflow="hidden",b.style.position="relative",h.subtractsBorderForOverflowNotVisible=d.offsetTop===-5,h.doesNotIncludeMarginInBodyOffset=m.offsetTop!==i,m.removeChild(a),o=a=null,f.extend(k,h))}),o.innerHTML="",n.removeChild(o),o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[f.expando]:a[f.expando]&&f.expando,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[f.expando]=n=++f.uuid:n=f.expando),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[f.expando]:f.expando;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)?b=b:b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" "));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];if(!arguments.length){if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}return b}e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!a||j===3||j===8||j===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g},removeAttr:function(a,b){var c,d,e,g,h=0;if(a.nodeType===1){d=(b||"").split(p),g=d.length;for(;h<g;h++)e=d[h].toLowerCase(),c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1)}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return b;h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/\.(.*)$/,A=/^(?:textarea|input|select)$/i,B=/\./g,C=/ /g,D=/[^\w\s.|`]/g,E=/^([^\.]*)?(?:\.(.+))?$/,F=/\bhover(\.\S+)?/,G=/^key/,H=/^(?:mouse|contextmenu)|click/,I=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,J=function(a){var b=I.exec(a);b&& -(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},K=function(a,b){return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||a.id===b[2])&&(!b[3]||b[3].test(a.className))},L=function(a){return f.event.special.hover?a:a.replace(F,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=L(c).split(" ");for(k=0;k<c.length;k++){l=E.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,namespace:n.join(".")},p),g&&(o.quick=J(g),!o.quick&&f.expr.match.POS.test(g)&&(o.isPositional=!0)),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d){var e=f.hasData(a)&&f._data(a),g,h,i,j,k,l,m,n,o,p,q;if(!!e&&!!(m=e.events)){b=L(b||"").split(" ");for(g=0;g<b.length;g++){h=E.exec(b[g])||[],i=h[1],j=h[2];if(!i){j=j?"."+j:"";for(l in m)f.event.remove(a,l+j,c,d);return}n=f.event.special[i]||{},i=(d?n.delegateType:n.bindType)||i,p=m[i]||[],k=p.length,j=j?new RegExp("(^|\\.)"+j.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;if(c||j||d||n.remove)for(l=0;l<p.length;l++){q=p[l];if(!c||c.guid===q.guid)if(!j||j.test(q.namespace))if(!d||d===q.selector||d==="**"&&q.selector)p.splice(l--,1),q.selector&&p.delegateCount--,n.remove&&n.remove.call(a,q)}else p.length=0;p.length===0&&k!==p.length&&((!n.teardown||n.teardown.call(a,j)===!1)&&f.removeEvent(a,i,e.handle),delete m[i])}f.isEmptyObject(m)&&(o=e.handle,o&&(o.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"",(g||!e)&&c.preventDefault();if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,n=null;for(m=e.parentNode;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length;l++){m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d);if(c.isPropagationStopped())break}c.type=h,c.isDefaultPrevented()||(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=(f.event.special[c.type]||{}).handle,j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click"))for(m=c.target;m!=this;m=m.parentNode||this){o={},q=[];for(k=0;k<e;k++)r=d[k],s=r.selector,t=o[s],r.isPositional?t=(t||(o[s]=f(s))).index(m)>=0:t===b&&(t=o[s]=r.quick?K(m,r.quick):f(m).is(s)),t&&q.push(r);q.length&&j.push({elem:m,matches:q})}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){p=j[k],c.currentTarget=p.elem;for(l=0;l<p.matches.length&&!c.isImmediatePropagationStopped();l++){r=p.matches[l];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=(i||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement wheelDelta".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},focus:{delegateType:"focusin",noBubble:!0},blur:{delegateType:"focusout",noBubble:!0},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?N:M):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=N;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=N;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=N,this.stopPropagation()},isDefaultPrevented:M,isPropagationStopped:M,isImmediatePropagationStopped:M},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]=f.event.special[b]={delegateType:b,bindType:b,handle:function(a){var b=this,c=a.relatedTarget,d=a.handleObj,e=d.selector,g,h;if(!c||d.origType===a.type||c!==b&&!f.contains(b,c))g=a.type,a.type=d.origType,h=d.handler.apply(this,arguments),a.type=g;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(A.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;A.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return A.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=M;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=M);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),G.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),H.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw"Syntax error, unrecognized expression: "+a};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var O=/Until$/,P=/^(?:parents|prevUntil|prevAll)/,Q=/,/,R=/^.[^:#\[\.,]*$/,S=Array.prototype.slice,T=f.expr.match.POS,U={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(W(this,a,!1),"not",a)},filter:function(a){return this.pushStack(W(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?T.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y="abbr article aside audio canvas datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",Z=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,_=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,ba=/<([\w:]+)/,bb=/<tbody/i,bc=/<|&#?\w+;/,bd=/<(?:script|style)/i,be=/<(?:script|object|embed|option|style)/i,bf=new RegExp("<(?:"+Y.replace(" ","|")+")","i"),bg=/checked\s*(?:[^=]|=\s*.checked.)/i,bh=/\/(java|ecma)script/i,bi=/^\s*<!(?:\[CDATA\[|\-\-)/,bj={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bk=X(c);bj.optgroup=bj.option,bj.tbody=bj.tfoot=bj.colgroup=bj.caption=bj.thead,bj.th=bj.td,f.support.htmlSerialize||(bj._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after" -,arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Z,""):null;if(typeof a=="string"&&!bd.test(a)&&(f.support.leadingWhitespace||!$.test(a))&&!bj[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(_,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bg.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bl(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,br)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!be.test(j)&&(f.support.checkClone||!bg.test(j))&&!f.support.unknownElems&&bf.test(j)&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bn(a,d),e=bo(a),g=bo(d);for(h=0;e[h];++h)g[h]&&bn(e[h],g[h])}if(b){bm(a,d);if(c){e=bo(a),g=bo(d);for(h=0;e[h];++h)bm(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bc.test(k))k=b.createTextNode(k);else{k=k.replace(_,"<$1></$2>");var l=(ba.exec(k)||["",""])[1].toLowerCase(),m=bj[l]||bj._default,n=m[0],o=b.createElement("div");b===c?bk.appendChild(o):X(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=bb.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&$.test(k)&&o.insertBefore(b.createTextNode($.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bq(k[i]);else bq(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bh.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bs=/alpha\([^)]*\)/i,bt=/opacity=([^)]*)/,bu=/([A-Z]|^ms)/g,bv=/^-?\d+(?:px)?$/i,bw=/^-?\d/,bx=/^([\-+])=([\-+.\de]+)/,by={position:"absolute",visibility:"hidden",display:"block"},bz=["Left","Right"],bA=["Top","Bottom"],bB,bC,bD;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bB(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bx.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bB)return bB(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bE(a,b,d);f.swap(a,by,function(){e=bE(a,b,d)});return e}},set:function(a,b){if(!bv.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bt.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bs,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bs.test(g)?g.replace(bs,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bB(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bC=function(a,c){var d,e,g;c=c.replace(bu,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bD=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bv.test(f)&&bw.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bB=bC||bD,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bF=/%20/g,bG=/\[\]$/,bH=/\r?\n/g,bI=/#.*$/,bJ=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bK=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bL=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bM=/^(?:GET|HEAD)$/,bN=/^\/\//,bO=/\?/,bP=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bQ=/^(?:select|textarea)/i,bR=/\s+/,bS=/([?&])_=[^&]*/,bT=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bU=f.fn.load,bV={},bW={},bX,bY,bZ=["*/"]+["*"];try{bX=e.href}catch(b$){bX=c.createElement("a"),bX.href="",bX=bX.href}bY=bT.exec(bX.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bU)return bU.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bP,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bQ.test(this.nodeName)||bK.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bH,"\r\n")}}):{name:b.name,value:c.replace(bH,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?cb(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),cb(a,b);return a},ajaxSettings:{url:bX,isLocal:bL.test(bY[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bZ},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:b_(bV),ajaxTransport:b_(bW),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cd(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=ce(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bJ.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bI,"").replace(bN,bY[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bR),d.crossDomain==null&&(r=bT.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bY[1]&&r[2]==bY[2]&&(r[3]||(r[1]==="http:"?80:443))==(bY[3]||(bY[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),ca(bV,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bM.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bO.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bS,"$1_="+x);d.url=y+(y===d.url?(bO.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bZ+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=ca(bW,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)cc(g,a[g],c,e);return d.join("&").replace(bF,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cf=f.now(),cg=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cf++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cg.test(b.url)||e&&cg.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cg,l),b.url===j&&(e&&(k=k.replace(cg,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ch=a.ActiveXObject?function(){for(var a in cj)cj[a](0,1)}:!1,ci=0,cj;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ck()||cl()}:ck,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ch&&delete cj[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++ci,ch&&(cj||(cj={},f(a).unload(ch)),cj[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cm={},cn,co,cp=/^(?:toggle|show|hide)$/,cq=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cr,cs=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],ct;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cw("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cx(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cw("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cw("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cx(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cp.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=cq.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cw("show",1),slideUp:cw("hide",1),slideToggle:cw("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=ct||cu(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cr&&(cr=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=ct||cu(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cr),cr=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now))}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cy=/^t(?:able|d|h)$/i,cz=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cA(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cy.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cz.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cz.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cA(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cA(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window);
\ No newline at end of file diff --git a/phonegap/www/js/jquery.ba-hashchange.min.js b/phonegap/www/js/jquery.ba-hashchange.min.js deleted file mode 100644 index 3c607bae3..000000000 --- a/phonegap/www/js/jquery.ba-hashchange.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - * jQuery hashchange event - v1.3 - 7/21/2010 - * http://benalman.com/projects/jquery-hashchange-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ -(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain="'+t+'"<\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this);
\ No newline at end of file diff --git a/phonegap/www/js/jquery.validate.js b/phonegap/www/js/jquery.validate.js deleted file mode 100644 index b7ed45b4a..000000000 --- a/phonegap/www/js/jquery.validate.js +++ /dev/null @@ -1,1188 +0,0 @@ -/** - * jQuery Validation Plugin 1.9.0 - * - * http://bassistance.de/jquery-plugins/jquery-plugin-validation/ - * http://docs.jquery.com/Plugins/Validation - * - * Copyright (c) 2006 - 2011 Jörn Zaefferer - * - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - */ - -(function($) { - -$.extend($.fn, { - // http://docs.jquery.com/Plugins/Validation/validate - validate: function( options ) { - - // if nothing is selected, return nothing; can't chain anyway - if (!this.length) { - options && options.debug && window.console && console.warn( "nothing selected, can't validate, returning nothing" ); - return; - } - - // check if a validator for this form was already created - var validator = $.data(this[0], 'validator'); - if ( validator ) { - return validator; - } - - // Add novalidate tag if HTML5. - this.attr('novalidate', 'novalidate'); - - validator = new $.validator( options, this[0] ); - $.data(this[0], 'validator', validator); - - if ( validator.settings.onsubmit ) { - - var inputsAndButtons = this.find("input, button"); - - // allow suppresing validation by adding a cancel class to the submit button - inputsAndButtons.filter(".cancel").click(function () { - validator.cancelSubmit = true; - }); - - // when a submitHandler is used, capture the submitting button - if (validator.settings.submitHandler) { - inputsAndButtons.filter(":submit").click(function () { - validator.submitButton = this; - }); - } - - // validate the form on submit - this.submit( function( event ) { - if ( validator.settings.debug ) - // prevent form submit to be able to see console output - event.preventDefault(); - - function handle() { - if ( validator.settings.submitHandler ) { - if (validator.submitButton) { - // insert a hidden input as a replacement for the missing submit button - var hidden = $("<input type='hidden'/>").attr("name", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm); - } - validator.settings.submitHandler.call( validator, validator.currentForm ); - if (validator.submitButton) { - // and clean up afterwards; thanks to no-block-scope, hidden can be referenced - hidden.remove(); - } - return false; - } - return true; - } - - // prevent submit for invalid forms or custom submit handlers - if ( validator.cancelSubmit ) { - validator.cancelSubmit = false; - return handle(); - } - if ( validator.form() ) { - if ( validator.pendingRequest ) { - validator.formSubmitted = true; - return false; - } - return handle(); - } else { - validator.focusInvalid(); - return false; - } - }); - } - - return validator; - }, - // http://docs.jquery.com/Plugins/Validation/valid - valid: function() { - if ( $(this[0]).is('form')) { - return this.validate().form(); - } else { - var valid = true; - var validator = $(this[0].form).validate(); - this.each(function() { - valid &= validator.element(this); - }); - return valid; - } - }, - // attributes: space seperated list of attributes to retrieve and remove - removeAttrs: function(attributes) { - var result = {}, - $element = this; - $.each(attributes.split(/\s/), function(index, value) { - result[value] = $element.attr(value); - $element.removeAttr(value); - }); - return result; - }, - // http://docs.jquery.com/Plugins/Validation/rules - rules: function(command, argument) { - var element = this[0]; - - if (command) { - var settings = $.data(element.form, 'validator').settings; - var staticRules = settings.rules; - var existingRules = $.validator.staticRules(element); - switch(command) { - case "add": - $.extend(existingRules, $.validator.normalizeRule(argument)); - staticRules[element.name] = existingRules; - if (argument.messages) - settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages ); - break; - case "remove": - if (!argument) { - delete staticRules[element.name]; - return existingRules; - } - var filtered = {}; - $.each(argument.split(/\s/), function(index, method) { - filtered[method] = existingRules[method]; - delete existingRules[method]; - }); - return filtered; - } - } - - var data = $.validator.normalizeRules( - $.extend( - {}, - $.validator.metadataRules(element), - $.validator.classRules(element), - $.validator.attributeRules(element), - $.validator.staticRules(element) - ), element); - - // make sure required is at front - if (data.required) { - var param = data.required; - delete data.required; - data = $.extend({required: param}, data); - } - - return data; - } -}); - -// Custom selectors -$.extend($.expr[":"], { - // http://docs.jquery.com/Plugins/Validation/blank - blank: function(a) {return !$.trim("" + a.value);}, - // http://docs.jquery.com/Plugins/Validation/filled - filled: function(a) {return !!$.trim("" + a.value);}, - // http://docs.jquery.com/Plugins/Validation/unchecked - unchecked: function(a) {return !a.checked;} -}); - -// constructor for validator -$.validator = function( options, form ) { - this.settings = $.extend( true, {}, $.validator.defaults, options ); - this.currentForm = form; - this.init(); -}; - -$.validator.format = function(source, params) { - if ( arguments.length == 1 ) - return function() { - var args = $.makeArray(arguments); - args.unshift(source); - return $.validator.format.apply( this, args ); - }; - if ( arguments.length > 2 && params.constructor != Array ) { - params = $.makeArray(arguments).slice(1); - } - if ( params.constructor != Array ) { - params = [ params ]; - } - $.each(params, function(i, n) { - source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n); - }); - return source; -}; - -$.extend($.validator, { - - defaults: { - messages: {}, - groups: {}, - rules: {}, - errorClass: "error", - validClass: "valid", - errorElement: "label", - focusInvalid: true, - errorContainer: $( [] ), - errorLabelContainer: $( [] ), - onsubmit: true, - ignore: ":hidden", - ignoreTitle: false, - onfocusin: function(element, event) { - this.lastActive = element; - - // hide error label and remove error class on focus if enabled - if ( this.settings.focusCleanup && !this.blockFocusCleanup ) { - this.settings.unhighlight && this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass ); - this.addWrapper(this.errorsFor(element)).hide(); - } - }, - onfocusout: function(element, event) { - if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) { - this.element(element); - } - }, - onkeyup: function(element, event) { - if ( element.name in this.submitted || element == this.lastElement ) { - this.element(element); - } - }, - onclick: function(element, event) { - // click on selects, radiobuttons and checkboxes - if ( element.name in this.submitted ) - this.element(element); - // or option elements, check parent select in that case - else if (element.parentNode.name in this.submitted) - this.element(element.parentNode); - }, - highlight: function(element, errorClass, validClass) { - if (element.type === 'radio') { - this.findByName(element.name).addClass(errorClass).removeClass(validClass); - } else { - $(element).addClass(errorClass).removeClass(validClass); - } - }, - unhighlight: function(element, errorClass, validClass) { - if (element.type === 'radio') { - this.findByName(element.name).removeClass(errorClass).addClass(validClass); - } else { - $(element).removeClass(errorClass).addClass(validClass); - } - } - }, - - // http://docs.jquery.com/Plugins/Validation/Validator/setDefaults - setDefaults: function(settings) { - $.extend( $.validator.defaults, settings ); - }, - - messages: { - required: "This field is required.", - remote: "Please fix this field.", - email: "Please enter a valid email address.", - url: "Please enter a valid URL.", - date: "Please enter a valid date.", - dateISO: "Please enter a valid date (ISO).", - number: "Please enter a valid number.", - digits: "Please enter only digits.", - creditcard: "Please enter a valid credit card number.", - equalTo: "Please enter the same value again.", - accept: "Please enter a value with a valid extension.", - maxlength: $.validator.format("Please enter no more than {0} characters."), - minlength: $.validator.format("Please enter at least {0} characters."), - rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."), - range: $.validator.format("Please enter a value between {0} and {1}."), - max: $.validator.format("Please enter a value less than or equal to {0}."), - min: $.validator.format("Please enter a value greater than or equal to {0}.") - }, - - autoCreateRanges: false, - - prototype: { - - init: function() { - this.labelContainer = $(this.settings.errorLabelContainer); - this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm); - this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer ); - this.submitted = {}; - this.valueCache = {}; - this.pendingRequest = 0; - this.pending = {}; - this.invalid = {}; - this.reset(); - - var groups = (this.groups = {}); - $.each(this.settings.groups, function(key, value) { - $.each(value.split(/\s/), function(index, name) { - groups[name] = key; - }); - }); - var rules = this.settings.rules; - $.each(rules, function(key, value) { - rules[key] = $.validator.normalizeRule(value); - }); - - function delegate(event) { - var validator = $.data(this[0].form, "validator"), - eventType = "on" + event.type.replace(/^validate/, ""); - validator.settings[eventType] && validator.settings[eventType].call(validator, this[0], event); - } - $(this.currentForm) - .validateDelegate("[type='text'], [type='password'], [type='file'], select, textarea, " + - "[type='number'], [type='search'] ,[type='tel'], [type='url'], " + - "[type='email'], [type='datetime'], [type='date'], [type='month'], " + - "[type='week'], [type='time'], [type='datetime-local'], " + - "[type='range'], [type='color'] ", - "focusin focusout keyup", delegate) - .validateDelegate("[type='radio'], [type='checkbox'], select, option", "click", delegate); - - if (this.settings.invalidHandler) - $(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler); - }, - - // http://docs.jquery.com/Plugins/Validation/Validator/form - form: function() { - this.checkForm(); - $.extend(this.submitted, this.errorMap); - this.invalid = $.extend({}, this.errorMap); - if (!this.valid()) - $(this.currentForm).triggerHandler("invalid-form", [this]); - this.showErrors(); - return this.valid(); - }, - - checkForm: function() { - this.prepareForm(); - for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) { - this.check( elements[i] ); - } - return this.valid(); - }, - - // http://docs.jquery.com/Plugins/Validation/Validator/element - element: function( element ) { - element = this.validationTargetFor( this.clean( element ) ); - this.lastElement = element; - this.prepareElement( element ); - this.currentElements = $(element); - var result = this.check( element ); - if ( result ) { - delete this.invalid[element.name]; - } else { - this.invalid[element.name] = true; - } - if ( !this.numberOfInvalids() ) { - // Hide error containers on last error - this.toHide = this.toHide.add( this.containers ); - } - this.showErrors(); - return result; - }, - - // http://docs.jquery.com/Plugins/Validation/Validator/showErrors - showErrors: function(errors) { - if(errors) { - // add items to error list and map - $.extend( this.errorMap, errors ); - this.errorList = []; - for ( var name in errors ) { - this.errorList.push({ - message: errors[name], - element: this.findByName(name)[0] - }); - } - // remove items from success list - this.successList = $.grep( this.successList, function(element) { - return !(element.name in errors); - }); - } - this.settings.showErrors - ? this.settings.showErrors.call( this, this.errorMap, this.errorList ) - : this.defaultShowErrors(); - }, - - // http://docs.jquery.com/Plugins/Validation/Validator/resetForm - resetForm: function() { - if ( $.fn.resetForm ) - $( this.currentForm ).resetForm(); - this.submitted = {}; - this.lastElement = null; - this.prepareForm(); - this.hideErrors(); - this.elements().removeClass( this.settings.errorClass ); - }, - - numberOfInvalids: function() { - return this.objectLength(this.invalid); - }, - - objectLength: function( obj ) { - var count = 0; - for ( var i in obj ) - count++; - return count; - }, - - hideErrors: function() { - this.addWrapper( this.toHide ).hide(); - }, - - valid: function() { - return this.size() == 0; - }, - - size: function() { - return this.errorList.length; - }, - - focusInvalid: function() { - if( this.settings.focusInvalid ) { - try { - $(this.findLastActive() || this.errorList.length && this.errorList[0].element || []) - .filter(":visible") - .focus() - // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find - .trigger("focusin"); - } catch(e) { - // ignore IE throwing errors when focusing hidden elements - } - } - }, - - findLastActive: function() { - var lastActive = this.lastActive; - return lastActive && $.grep(this.errorList, function(n) { - return n.element.name == lastActive.name; - }).length == 1 && lastActive; - }, - - elements: function() { - var validator = this, - rulesCache = {}; - - // select all valid inputs inside the form (no submit or reset buttons) - return $(this.currentForm) - .find("input, select, textarea") - .not(":submit, :reset, :image, [disabled]") - .not( this.settings.ignore ) - .filter(function() { - !this.name && validator.settings.debug && window.console && console.error( "%o has no name assigned", this); - - // select only the first element for each name, and only those with rules specified - if ( this.name in rulesCache || !validator.objectLength($(this).rules()) ) - return false; - - rulesCache[this.name] = true; - return true; - }); - }, - - clean: function( selector ) { - return $( selector )[0]; - }, - - errors: function() { - return $( this.settings.errorElement + "." + this.settings.errorClass, this.errorContext ); - }, - - reset: function() { - this.successList = []; - this.errorList = []; - this.errorMap = {}; - this.toShow = $([]); - this.toHide = $([]); - this.currentElements = $([]); - }, - - prepareForm: function() { - this.reset(); - this.toHide = this.errors().add( this.containers ); - }, - - prepareElement: function( element ) { - this.reset(); - this.toHide = this.errorsFor(element); - }, - - check: function( element ) { - element = this.validationTargetFor( this.clean( element ) ); - - var rules = $(element).rules(); - var dependencyMismatch = false; - for (var method in rules ) { - var rule = { method: method, parameters: rules[method] }; - try { - var result = $.validator.methods[method].call( this, element.value.replace(/\r/g, ""), element, rule.parameters ); - - // if a method indicates that the field is optional and therefore valid, - // don't mark it as valid when there are no other rules - if ( result == "dependency-mismatch" ) { - dependencyMismatch = true; - continue; - } - dependencyMismatch = false; - - if ( result == "pending" ) { - this.toHide = this.toHide.not( this.errorsFor(element) ); - return; - } - - if( !result ) { - this.formatAndAdd( element, rule ); - return false; - } - } catch(e) { - this.settings.debug && window.console && console.log("exception occured when checking element " + element.id - + ", check the '" + rule.method + "' method", e); - throw e; - } - } - if (dependencyMismatch) - return; - if ( this.objectLength(rules) ) - this.successList.push(element); - return true; - }, - - // return the custom message for the given element and validation method - // specified in the element's "messages" metadata - customMetaMessage: function(element, method) { - if (!$.metadata) - return; - - var meta = this.settings.meta - ? $(element).metadata()[this.settings.meta] - : $(element).metadata(); - - return meta && meta.messages && meta.messages[method]; - }, - - // return the custom message for the given element name and validation method - customMessage: function( name, method ) { - var m = this.settings.messages[name]; - return m && (m.constructor == String - ? m - : m[method]); - }, - - // return the first defined argument, allowing empty strings - findDefined: function() { - for(var i = 0; i < arguments.length; i++) { - if (arguments[i] !== undefined) - return arguments[i]; - } - return undefined; - }, - - defaultMessage: function( element, method) { - return this.findDefined( - this.customMessage( element.name, method ), - this.customMetaMessage( element, method ), - // title is never undefined, so handle empty string as undefined - !this.settings.ignoreTitle && element.title || undefined, - $.validator.messages[method], - "<strong>Warning: No message defined for " + element.name + "</strong>" - ); - }, - - formatAndAdd: function( element, rule ) { - var message = this.defaultMessage( element, rule.method ), - theregex = /\$?\{(\d+)\}/g; - if ( typeof message == "function" ) { - message = message.call(this, rule.parameters, element); - } else if (theregex.test(message)) { - message = jQuery.format(message.replace(theregex, '{$1}'), rule.parameters); - } - this.errorList.push({ - message: message, - element: element - }); - - this.errorMap[element.name] = message; - this.submitted[element.name] = message; - }, - - addWrapper: function(toToggle) { - if ( this.settings.wrapper ) - toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) ); - return toToggle; - }, - - defaultShowErrors: function() { - for ( var i = 0; this.errorList[i]; i++ ) { - var error = this.errorList[i]; - this.settings.highlight && this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass ); - this.showLabel( error.element, error.message ); - } - if( this.errorList.length ) { - this.toShow = this.toShow.add( this.containers ); - } - if (this.settings.success) { - for ( var i = 0; this.successList[i]; i++ ) { - this.showLabel( this.successList[i] ); - } - } - if (this.settings.unhighlight) { - for ( var i = 0, elements = this.validElements(); elements[i]; i++ ) { - this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass ); - } - } - this.toHide = this.toHide.not( this.toShow ); - this.hideErrors(); - this.addWrapper( this.toShow ).show(); - }, - - validElements: function() { - return this.currentElements.not(this.invalidElements()); - }, - - invalidElements: function() { - return $(this.errorList).map(function() { - return this.element; - }); - }, - - showLabel: function(element, message) { - var label = this.errorsFor( element ); - if ( label.length ) { - // refresh error/success class - label.removeClass( this.settings.validClass ).addClass( this.settings.errorClass ); - - // check if we have a generated label, replace the message then - label.attr("generated") && label.html(message); - } else { - // create label - label = $("<" + this.settings.errorElement + "/>") - .attr({"for": this.idOrName(element), generated: true}) - .addClass(this.settings.errorClass) - .html(message || ""); - if ( this.settings.wrapper ) { - // make sure the element is visible, even in IE - // actually showing the wrapped element is handled elsewhere - label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent(); - } - if ( !this.labelContainer.append(label).length ) - this.settings.errorPlacement - ? this.settings.errorPlacement(label, $(element) ) - : label.insertAfter(element); - } - if ( !message && this.settings.success ) { - label.text(""); - typeof this.settings.success == "string" - ? label.addClass( this.settings.success ) - : this.settings.success( label ); - } - this.toShow = this.toShow.add(label); - }, - - errorsFor: function(element) { - var name = this.idOrName(element); - return this.errors().filter(function() { - return $(this).attr('for') == name; - }); - }, - - idOrName: function(element) { - return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name); - }, - - validationTargetFor: function(element) { - // if radio/checkbox, validate first element in group instead - if (this.checkable(element)) { - element = this.findByName( element.name ).not(this.settings.ignore)[0]; - } - return element; - }, - - checkable: function( element ) { - return /radio|checkbox/i.test(element.type); - }, - - findByName: function( name ) { - // select by name and filter by form for performance over form.find("[name=...]") - var form = this.currentForm; - return $(document.getElementsByName(name)).map(function(index, element) { - return element.form == form && element.name == name && element || null; - }); - }, - - getLength: function(value, element) { - switch( element.nodeName.toLowerCase() ) { - case 'select': - return $("option:selected", element).length; - case 'input': - if( this.checkable( element) ) - return this.findByName(element.name).filter(':checked').length; - } - return value.length; - }, - - depend: function(param, element) { - return this.dependTypes[typeof param] - ? this.dependTypes[typeof param](param, element) - : true; - }, - - dependTypes: { - "boolean": function(param, element) { - return param; - }, - "string": function(param, element) { - return !!$(param, element.form).length; - }, - "function": function(param, element) { - return param(element); - } - }, - - optional: function(element) { - return !$.validator.methods.required.call(this, $.trim(element.value), element) && "dependency-mismatch"; - }, - - startRequest: function(element) { - if (!this.pending[element.name]) { - this.pendingRequest++; - this.pending[element.name] = true; - } - }, - - stopRequest: function(element, valid) { - this.pendingRequest--; - // sometimes synchronization fails, make sure pendingRequest is never < 0 - if (this.pendingRequest < 0) - this.pendingRequest = 0; - delete this.pending[element.name]; - if ( valid && this.pendingRequest == 0 && this.formSubmitted && this.form() ) { - $(this.currentForm).submit(); - this.formSubmitted = false; - } else if (!valid && this.pendingRequest == 0 && this.formSubmitted) { - $(this.currentForm).triggerHandler("invalid-form", [this]); - this.formSubmitted = false; - } - }, - - previousValue: function(element) { - return $.data(element, "previousValue") || $.data(element, "previousValue", { - old: null, - valid: true, - message: this.defaultMessage( element, "remote" ) - }); - } - - }, - - classRuleSettings: { - required: {required: true}, - email: {email: true}, - url: {url: true}, - date: {date: true}, - dateISO: {dateISO: true}, - dateDE: {dateDE: true}, - number: {number: true}, - numberDE: {numberDE: true}, - digits: {digits: true}, - creditcard: {creditcard: true} - }, - - addClassRules: function(className, rules) { - className.constructor == String ? - this.classRuleSettings[className] = rules : - $.extend(this.classRuleSettings, className); - }, - - classRules: function(element) { - var rules = {}; - var classes = $(element).attr('class'); - classes && $.each(classes.split(' '), function() { - if (this in $.validator.classRuleSettings) { - $.extend(rules, $.validator.classRuleSettings[this]); - } - }); - return rules; - }, - - attributeRules: function(element) { - var rules = {}; - var $element = $(element); - - for (var method in $.validator.methods) { - var value; - // If .prop exists (jQuery >= 1.6), use it to get true/false for required - if (method === 'required' && typeof $.fn.prop === 'function') { - value = $element.prop(method); - } else { - value = $element.attr(method); - } - if (value) { - rules[method] = value; - } else if ($element[0].getAttribute("type") === method) { - rules[method] = true; - } - } - - // maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs - if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) { - delete rules.maxlength; - } - - return rules; - }, - - metadataRules: function(element) { - if (!$.metadata) return {}; - - var meta = $.data(element.form, 'validator').settings.meta; - return meta ? - $(element).metadata()[meta] : - $(element).metadata(); - }, - - staticRules: function(element) { - var rules = {}; - var validator = $.data(element.form, 'validator'); - if (validator.settings.rules) { - rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {}; - } - return rules; - }, - - normalizeRules: function(rules, element) { - // handle dependency check - $.each(rules, function(prop, val) { - // ignore rule when param is explicitly false, eg. required:false - if (val === false) { - delete rules[prop]; - return; - } - if (val.param || val.depends) { - var keepRule = true; - switch (typeof val.depends) { - case "string": - keepRule = !!$(val.depends, element.form).length; - break; - case "function": - keepRule = val.depends.call(element, element); - break; - } - if (keepRule) { - rules[prop] = val.param !== undefined ? val.param : true; - } else { - delete rules[prop]; - } - } - }); - - // evaluate parameters - $.each(rules, function(rule, parameter) { - rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter; - }); - - // clean number parameters - $.each(['minlength', 'maxlength', 'min', 'max'], function() { - if (rules[this]) { - rules[this] = Number(rules[this]); - } - }); - $.each(['rangelength', 'range'], function() { - if (rules[this]) { - rules[this] = [Number(rules[this][0]), Number(rules[this][1])]; - } - }); - - if ($.validator.autoCreateRanges) { - // auto-create ranges - if (rules.min && rules.max) { - rules.range = [rules.min, rules.max]; - delete rules.min; - delete rules.max; - } - if (rules.minlength && rules.maxlength) { - rules.rangelength = [rules.minlength, rules.maxlength]; - delete rules.minlength; - delete rules.maxlength; - } - } - - // To support custom messages in metadata ignore rule methods titled "messages" - if (rules.messages) { - delete rules.messages; - } - - return rules; - }, - - // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true} - normalizeRule: function(data) { - if( typeof data == "string" ) { - var transformed = {}; - $.each(data.split(/\s/), function() { - transformed[this] = true; - }); - data = transformed; - } - return data; - }, - - // http://docs.jquery.com/Plugins/Validation/Validator/addMethod - addMethod: function(name, method, message) { - $.validator.methods[name] = method; - $.validator.messages[name] = message != undefined ? message : $.validator.messages[name]; - if (method.length < 3) { - $.validator.addClassRules(name, $.validator.normalizeRule(name)); - } - }, - - methods: { - - // http://docs.jquery.com/Plugins/Validation/Methods/required - required: function(value, element, param) { - // check if dependency is met - if ( !this.depend(param, element) ) - return "dependency-mismatch"; - switch( element.nodeName.toLowerCase() ) { - case 'select': - // could be an array for select-multiple or a string, both are fine this way - var val = $(element).val(); - return val && val.length > 0; - case 'input': - if ( this.checkable(element) ) - return this.getLength(value, element) > 0; - default: - return $.trim(value).length > 0; - } - }, - - // http://docs.jquery.com/Plugins/Validation/Methods/remote - remote: function(value, element, param) { - if ( this.optional(element) ) - return "dependency-mismatch"; - - var previous = this.previousValue(element); - if (!this.settings.messages[element.name] ) - this.settings.messages[element.name] = {}; - previous.originalMessage = this.settings.messages[element.name].remote; - this.settings.messages[element.name].remote = previous.message; - - param = typeof param == "string" && {url:param} || param; - - if ( this.pending[element.name] ) { - return "pending"; - } - if ( previous.old === value ) { - return previous.valid; - } - - previous.old = value; - var validator = this; - this.startRequest(element); - var data = {}; - data[element.name] = value; - $.ajax($.extend(true, { - url: param, - mode: "abort", - port: "validate" + element.name, - dataType: "json", - data: data, - success: function(response) { - validator.settings.messages[element.name].remote = previous.originalMessage; - var valid = response === true; - if ( valid ) { - var submitted = validator.formSubmitted; - validator.prepareElement(element); - validator.formSubmitted = submitted; - validator.successList.push(element); - validator.showErrors(); - } else { - var errors = {}; - var message = response || validator.defaultMessage( element, "remote" ); - errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message; - validator.showErrors(errors); - } - previous.valid = valid; - validator.stopRequest(element, valid); - } - }, param)); - return "pending"; - }, - - // http://docs.jquery.com/Plugins/Validation/Methods/minlength - minlength: function(value, element, param) { - return this.optional(element) || this.getLength($.trim(value), element) >= param; - }, - - // http://docs.jquery.com/Plugins/Validation/Methods/maxlength - maxlength: function(value, element, param) { - return this.optional(element) || this.getLength($.trim(value), element) <= param; - }, - - // http://docs.jquery.com/Plugins/Validation/Methods/rangelength - rangelength: function(value, element, param) { - var length = this.getLength($.trim(value), element); - return this.optional(element) || ( length >= param[0] && length <= param[1] ); - }, - - // http://docs.jquery.com/Plugins/Validation/Methods/min - min: function( value, element, param ) { - return this.optional(element) || value >= param; - }, - - // http://docs.jquery.com/Plugins/Validation/Methods/max - max: function( value, element, param ) { - return this.optional(element) || value <= param; - }, - - // http://docs.jquery.com/Plugins/Validation/Methods/range - range: function( value, element, param ) { - return this.optional(element) || ( value >= param[0] && value <= param[1] ); - }, - - // http://docs.jquery.com/Plugins/Validation/Methods/email - email: function(value, element) { - // contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/ - return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(value); - }, - - // http://docs.jquery.com/Plugins/Validation/Methods/url - url: function(value, element) { - // contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/ - return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value); - }, - - // http://docs.jquery.com/Plugins/Validation/Methods/date - date: function(value, element) { - return this.optional(element) || !/Invalid|NaN/.test(new Date(value)); - }, - - // http://docs.jquery.com/Plugins/Validation/Methods/dateISO - dateISO: function(value, element) { - return this.optional(element) || /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value); - }, - - // http://docs.jquery.com/Plugins/Validation/Methods/number - number: function(value, element) { - return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value); - }, - - // http://docs.jquery.com/Plugins/Validation/Methods/digits - digits: function(value, element) { - return this.optional(element) || /^\d+$/.test(value); - }, - - // http://docs.jquery.com/Plugins/Validation/Methods/creditcard - // based on http://en.wikipedia.org/wiki/Luhn - creditcard: function(value, element) { - if ( this.optional(element) ) - return "dependency-mismatch"; - // accept only spaces, digits and dashes - if (/[^0-9 -]+/.test(value)) - return false; - var nCheck = 0, - nDigit = 0, - bEven = false; - - value = value.replace(/\D/g, ""); - - for (var n = value.length - 1; n >= 0; n--) { - var cDigit = value.charAt(n); - var nDigit = parseInt(cDigit, 10); - if (bEven) { - if ((nDigit *= 2) > 9) - nDigit -= 9; - } - nCheck += nDigit; - bEven = !bEven; - } - - return (nCheck % 10) == 0; - }, - - // http://docs.jquery.com/Plugins/Validation/Methods/accept - accept: function(value, element, param) { - param = typeof param == "string" ? param.replace(/,/g, '|') : "png|jpe?g|gif"; - return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i")); - }, - - // http://docs.jquery.com/Plugins/Validation/Methods/equalTo - equalTo: function(value, element, param) { - // bind to the blur event of the target in order to revalidate whenever the target field is updated - // TODO find a way to bind the event just once, avoiding the unbind-rebind overhead - var target = $(param).unbind(".validate-equalTo").bind("blur.validate-equalTo", function() { - $(element).valid(); - }); - return value == target.val(); - } - - } - -}); - -// deprecated, use $.validator.format instead -$.format = $.validator.format; - -})(jQuery); - -// ajax mode: abort -// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]}); -// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort() -;(function($) { - var pendingRequests = {}; - // Use a prefilter if available (1.5+) - if ( $.ajaxPrefilter ) { - $.ajaxPrefilter(function(settings, _, xhr) { - var port = settings.port; - if (settings.mode == "abort") { - if ( pendingRequests[port] ) { - pendingRequests[port].abort(); - } - pendingRequests[port] = xhr; - } - }); - } else { - // Proxy ajax - var ajax = $.ajax; - $.ajax = function(settings) { - var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode, - port = ( "port" in settings ? settings : $.ajaxSettings ).port; - if (mode == "abort") { - if ( pendingRequests[port] ) { - pendingRequests[port].abort(); - } - return (pendingRequests[port] = ajax.apply(this, arguments)); - } - return ajax.apply(this, arguments); - }; - } -})(jQuery); - -// provides cross-browser focusin and focusout events -// IE has native support, in other browsers, use event caputuring (neither bubbles) - -// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation -// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target -;(function($) { - // only implement if not provided by jQuery core (since 1.4) - // TODO verify if jQuery 1.4's implementation is compatible with older jQuery special-event APIs - if (!jQuery.event.special.focusin && !jQuery.event.special.focusout && document.addEventListener) { - $.each({ - focus: 'focusin', - blur: 'focusout' - }, function( original, fix ){ - $.event.special[fix] = { - setup:function() { - this.addEventListener( original, handler, true ); - }, - teardown:function() { - this.removeEventListener( original, handler, true ); - }, - handler: function(e) { - arguments[0] = $.event.fix(e); - arguments[0].type = fix; - return $.event.handle.apply(this, arguments); - } - }; - function handler(e) { - e = $.event.fix(e); - e.type = fix; - return $.event.handle.call(this, e); - } - }); - }; - $.extend($.fn, { - validateDelegate: function(delegate, type, handler) { - return this.bind(type, function(event) { - var target = $(event.target); - if (target.is(delegate)) { - return handler.apply(target, arguments); - } - }); - } - }); -})(jQuery); diff --git a/phonegap/www/js/jquery.validate.min.js b/phonegap/www/js/jquery.validate.min.js deleted file mode 100644 index edd645255..000000000 --- a/phonegap/www/js/jquery.validate.min.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * jQuery Validation Plugin 1.9.0 - * - * http://bassistance.de/jquery-plugins/jquery-plugin-validation/ - * http://docs.jquery.com/Plugins/Validation - * - * Copyright (c) 2006 - 2011 Jörn Zaefferer - * - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - */ -(function(c){c.extend(c.fn,{validate:function(a){if(this.length){var b=c.data(this[0],"validator");if(b)return b;this.attr("novalidate","novalidate");b=new c.validator(a,this[0]);c.data(this[0],"validator",b);if(b.settings.onsubmit){a=this.find("input, button");a.filter(".cancel").click(function(){b.cancelSubmit=true});b.settings.submitHandler&&a.filter(":submit").click(function(){b.submitButton=this});this.submit(function(d){function e(){if(b.settings.submitHandler){if(b.submitButton)var f=c("<input type='hidden'/>").attr("name", -b.submitButton.name).val(b.submitButton.value).appendTo(b.currentForm);b.settings.submitHandler.call(b,b.currentForm);b.submitButton&&f.remove();return false}return true}b.settings.debug&&d.preventDefault();if(b.cancelSubmit){b.cancelSubmit=false;return e()}if(b.form()){if(b.pendingRequest){b.formSubmitted=true;return false}return e()}else{b.focusInvalid();return false}})}return b}else a&&a.debug&&window.console&&console.warn("nothing selected, can't validate, returning nothing")},valid:function(){if(c(this[0]).is("form"))return this.validate().form(); -else{var a=true,b=c(this[0].form).validate();this.each(function(){a&=b.element(this)});return a}},removeAttrs:function(a){var b={},d=this;c.each(a.split(/\s/),function(e,f){b[f]=d.attr(f);d.removeAttr(f)});return b},rules:function(a,b){var d=this[0];if(a){var e=c.data(d.form,"validator").settings,f=e.rules,g=c.validator.staticRules(d);switch(a){case "add":c.extend(g,c.validator.normalizeRule(b));f[d.name]=g;if(b.messages)e.messages[d.name]=c.extend(e.messages[d.name],b.messages);break;case "remove":if(!b){delete f[d.name]; -return g}var h={};c.each(b.split(/\s/),function(j,i){h[i]=g[i];delete g[i]});return h}}d=c.validator.normalizeRules(c.extend({},c.validator.metadataRules(d),c.validator.classRules(d),c.validator.attributeRules(d),c.validator.staticRules(d)),d);if(d.required){e=d.required;delete d.required;d=c.extend({required:e},d)}return d}});c.extend(c.expr[":"],{blank:function(a){return!c.trim(""+a.value)},filled:function(a){return!!c.trim(""+a.value)},unchecked:function(a){return!a.checked}});c.validator=function(a, -b){this.settings=c.extend(true,{},c.validator.defaults,a);this.currentForm=b;this.init()};c.validator.format=function(a,b){if(arguments.length==1)return function(){var d=c.makeArray(arguments);d.unshift(a);return c.validator.format.apply(this,d)};if(arguments.length>2&&b.constructor!=Array)b=c.makeArray(arguments).slice(1);if(b.constructor!=Array)b=[b];c.each(b,function(d,e){a=a.replace(RegExp("\\{"+d+"\\}","g"),e)});return a};c.extend(c.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error", -validClass:"valid",errorElement:"label",focusInvalid:true,errorContainer:c([]),errorLabelContainer:c([]),onsubmit:true,ignore:":hidden",ignoreTitle:false,onfocusin:function(a){this.lastActive=a;if(this.settings.focusCleanup&&!this.blockFocusCleanup){this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass);this.addWrapper(this.errorsFor(a)).hide()}},onfocusout:function(a){if(!this.checkable(a)&&(a.name in this.submitted||!this.optional(a)))this.element(a)}, -onkeyup:function(a){if(a.name in this.submitted||a==this.lastElement)this.element(a)},onclick:function(a){if(a.name in this.submitted)this.element(a);else a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(a,b,d){a.type==="radio"?this.findByName(a.name).addClass(b).removeClass(d):c(a).addClass(b).removeClass(d)},unhighlight:function(a,b,d){a.type==="radio"?this.findByName(a.name).removeClass(b).addClass(d):c(a).removeClass(b).addClass(d)}},setDefaults:function(a){c.extend(c.validator.defaults, -a)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",accept:"Please enter a value with a valid extension.",maxlength:c.validator.format("Please enter no more than {0} characters."), -minlength:c.validator.format("Please enter at least {0} characters."),rangelength:c.validator.format("Please enter a value between {0} and {1} characters long."),range:c.validator.format("Please enter a value between {0} and {1}."),max:c.validator.format("Please enter a value less than or equal to {0}."),min:c.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:false,prototype:{init:function(){function a(e){var f=c.data(this[0].form,"validator"),g="on"+e.type.replace(/^validate/, -"");f.settings[g]&&f.settings[g].call(f,this[0],e)}this.labelContainer=c(this.settings.errorLabelContainer);this.errorContext=this.labelContainer.length&&this.labelContainer||c(this.currentForm);this.containers=c(this.settings.errorContainer).add(this.settings.errorLabelContainer);this.submitted={};this.valueCache={};this.pendingRequest=0;this.pending={};this.invalid={};this.reset();var b=this.groups={};c.each(this.settings.groups,function(e,f){c.each(f.split(/\s/),function(g,h){b[h]=e})});var d= -this.settings.rules;c.each(d,function(e,f){d[e]=c.validator.normalizeRule(f)});c(this.currentForm).validateDelegate("[type='text'], [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'] ","focusin focusout keyup",a).validateDelegate("[type='radio'], [type='checkbox'], select, option","click", -a);this.settings.invalidHandler&&c(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler)},form:function(){this.checkForm();c.extend(this.submitted,this.errorMap);this.invalid=c.extend({},this.errorMap);this.valid()||c(this.currentForm).triggerHandler("invalid-form",[this]);this.showErrors();return this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(a){this.lastElement= -a=this.validationTargetFor(this.clean(a));this.prepareElement(a);this.currentElements=c(a);var b=this.check(a);if(b)delete this.invalid[a.name];else this.invalid[a.name]=true;if(!this.numberOfInvalids())this.toHide=this.toHide.add(this.containers);this.showErrors();return b},showErrors:function(a){if(a){c.extend(this.errorMap,a);this.errorList=[];for(var b in a)this.errorList.push({message:a[b],element:this.findByName(b)[0]});this.successList=c.grep(this.successList,function(d){return!(d.name in a)})}this.settings.showErrors? -this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){c.fn.resetForm&&c(this.currentForm).resetForm();this.submitted={};this.lastElement=null;this.prepareForm();this.hideErrors();this.elements().removeClass(this.settings.errorClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b=0,d;for(d in a)b++;return b},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return this.size()== -0},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{c(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(a){}},findLastActive:function(){var a=this.lastActive;return a&&c.grep(this.errorList,function(b){return b.element.name==a.name}).length==1&&a},elements:function(){var a=this,b={};return c(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){!this.name&& -a.settings.debug&&window.console&&console.error("%o has no name assigned",this);if(this.name in b||!a.objectLength(c(this).rules()))return false;return b[this.name]=true})},clean:function(a){return c(a)[0]},errors:function(){return c(this.settings.errorElement+"."+this.settings.errorClass,this.errorContext)},reset:function(){this.successList=[];this.errorList=[];this.errorMap={};this.toShow=c([]);this.toHide=c([]);this.currentElements=c([])},prepareForm:function(){this.reset();this.toHide=this.errors().add(this.containers)}, -prepareElement:function(a){this.reset();this.toHide=this.errorsFor(a)},check:function(a){a=this.validationTargetFor(this.clean(a));var b=c(a).rules(),d=false,e;for(e in b){var f={method:e,parameters:b[e]};try{var g=c.validator.methods[e].call(this,a.value.replace(/\r/g,""),a,f.parameters);if(g=="dependency-mismatch")d=true;else{d=false;if(g=="pending"){this.toHide=this.toHide.not(this.errorsFor(a));return}if(!g){this.formatAndAdd(a,f);return false}}}catch(h){this.settings.debug&&window.console&&console.log("exception occured when checking element "+ -a.id+", check the '"+f.method+"' method",h);throw h;}}if(!d){this.objectLength(b)&&this.successList.push(a);return true}},customMetaMessage:function(a,b){if(c.metadata){var d=this.settings.meta?c(a).metadata()[this.settings.meta]:c(a).metadata();return d&&d.messages&&d.messages[b]}},customMessage:function(a,b){var d=this.settings.messages[a];return d&&(d.constructor==String?d:d[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(arguments[a]!==undefined)return arguments[a]},defaultMessage:function(a, -b){return this.findDefined(this.customMessage(a.name,b),this.customMetaMessage(a,b),!this.settings.ignoreTitle&&a.title||undefined,c.validator.messages[b],"<strong>Warning: No message defined for "+a.name+"</strong>")},formatAndAdd:function(a,b){var d=this.defaultMessage(a,b.method),e=/\$?\{(\d+)\}/g;if(typeof d=="function")d=d.call(this,b.parameters,a);else if(e.test(d))d=jQuery.format(d.replace(e,"{$1}"),b.parameters);this.errorList.push({message:d,element:a});this.errorMap[a.name]=d;this.submitted[a.name]= -d},addWrapper:function(a){if(this.settings.wrapper)a=a.add(a.parent(this.settings.wrapper));return a},defaultShowErrors:function(){for(var a=0;this.errorList[a];a++){var b=this.errorList[a];this.settings.highlight&&this.settings.highlight.call(this,b.element,this.settings.errorClass,this.settings.validClass);this.showLabel(b.element,b.message)}if(this.errorList.length)this.toShow=this.toShow.add(this.containers);if(this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]); -if(this.settings.unhighlight){a=0;for(b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass)}this.toHide=this.toHide.not(this.toShow);this.hideErrors();this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return c(this.errorList).map(function(){return this.element})},showLabel:function(a,b){var d=this.errorsFor(a);if(d.length){d.removeClass(this.settings.validClass).addClass(this.settings.errorClass); -d.attr("generated")&&d.html(b)}else{d=c("<"+this.settings.errorElement+"/>").attr({"for":this.idOrName(a),generated:true}).addClass(this.settings.errorClass).html(b||"");if(this.settings.wrapper)d=d.hide().show().wrap("<"+this.settings.wrapper+"/>").parent();this.labelContainer.append(d).length||(this.settings.errorPlacement?this.settings.errorPlacement(d,c(a)):d.insertAfter(a))}if(!b&&this.settings.success){d.text("");typeof this.settings.success=="string"?d.addClass(this.settings.success):this.settings.success(d)}this.toShow= -this.toShow.add(d)},errorsFor:function(a){var b=this.idOrName(a);return this.errors().filter(function(){return c(this).attr("for")==b})},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(a){if(this.checkable(a))a=this.findByName(a.name).not(this.settings.ignore)[0];return a},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(a){var b=this.currentForm;return c(document.getElementsByName(a)).map(function(d, -e){return e.form==b&&e.name==a&&e||null})},getLength:function(a,b){switch(b.nodeName.toLowerCase()){case "select":return c("option:selected",b).length;case "input":if(this.checkable(b))return this.findByName(b.name).filter(":checked").length}return a.length},depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):true},dependTypes:{"boolean":function(a){return a},string:function(a,b){return!!c(a,b.form).length},"function":function(a,b){return a(b)}},optional:function(a){return!c.validator.methods.required.call(this, -c.trim(a.value),a)&&"dependency-mismatch"},startRequest:function(a){if(!this.pending[a.name]){this.pendingRequest++;this.pending[a.name]=true}},stopRequest:function(a,b){this.pendingRequest--;if(this.pendingRequest<0)this.pendingRequest=0;delete this.pending[a.name];if(b&&this.pendingRequest==0&&this.formSubmitted&&this.form()){c(this.currentForm).submit();this.formSubmitted=false}else if(!b&&this.pendingRequest==0&&this.formSubmitted){c(this.currentForm).triggerHandler("invalid-form",[this]);this.formSubmitted= -false}},previousValue:function(a){return c.data(a,"previousValue")||c.data(a,"previousValue",{old:null,valid:true,message:this.defaultMessage(a,"remote")})}},classRuleSettings:{required:{required:true},email:{email:true},url:{url:true},date:{date:true},dateISO:{dateISO:true},dateDE:{dateDE:true},number:{number:true},numberDE:{numberDE:true},digits:{digits:true},creditcard:{creditcard:true}},addClassRules:function(a,b){a.constructor==String?this.classRuleSettings[a]=b:c.extend(this.classRuleSettings, -a)},classRules:function(a){var b={};(a=c(a).attr("class"))&&c.each(a.split(" "),function(){this in c.validator.classRuleSettings&&c.extend(b,c.validator.classRuleSettings[this])});return b},attributeRules:function(a){var b={};a=c(a);for(var d in c.validator.methods){var e;if(e=d==="required"&&typeof c.fn.prop==="function"?a.prop(d):a.attr(d))b[d]=e;else if(a[0].getAttribute("type")===d)b[d]=true}b.maxlength&&/-1|2147483647|524288/.test(b.maxlength)&&delete b.maxlength;return b},metadataRules:function(a){if(!c.metadata)return{}; -var b=c.data(a.form,"validator").settings.meta;return b?c(a).metadata()[b]:c(a).metadata()},staticRules:function(a){var b={},d=c.data(a.form,"validator");if(d.settings.rules)b=c.validator.normalizeRule(d.settings.rules[a.name])||{};return b},normalizeRules:function(a,b){c.each(a,function(d,e){if(e===false)delete a[d];else if(e.param||e.depends){var f=true;switch(typeof e.depends){case "string":f=!!c(e.depends,b.form).length;break;case "function":f=e.depends.call(b,b)}if(f)a[d]=e.param!==undefined? -e.param:true;else delete a[d]}});c.each(a,function(d,e){a[d]=c.isFunction(e)?e(b):e});c.each(["minlength","maxlength","min","max"],function(){if(a[this])a[this]=Number(a[this])});c.each(["rangelength","range"],function(){if(a[this])a[this]=[Number(a[this][0]),Number(a[this][1])]});if(c.validator.autoCreateRanges){if(a.min&&a.max){a.range=[a.min,a.max];delete a.min;delete a.max}if(a.minlength&&a.maxlength){a.rangelength=[a.minlength,a.maxlength];delete a.minlength;delete a.maxlength}}a.messages&&delete a.messages; -return a},normalizeRule:function(a){if(typeof a=="string"){var b={};c.each(a.split(/\s/),function(){b[this]=true});a=b}return a},addMethod:function(a,b,d){c.validator.methods[a]=b;c.validator.messages[a]=d!=undefined?d:c.validator.messages[a];b.length<3&&c.validator.addClassRules(a,c.validator.normalizeRule(a))},methods:{required:function(a,b,d){if(!this.depend(d,b))return"dependency-mismatch";switch(b.nodeName.toLowerCase()){case "select":return(a=c(b).val())&&a.length>0;case "input":if(this.checkable(b))return this.getLength(a, -b)>0;default:return c.trim(a).length>0}},remote:function(a,b,d){if(this.optional(b))return"dependency-mismatch";var e=this.previousValue(b);this.settings.messages[b.name]||(this.settings.messages[b.name]={});e.originalMessage=this.settings.messages[b.name].remote;this.settings.messages[b.name].remote=e.message;d=typeof d=="string"&&{url:d}||d;if(this.pending[b.name])return"pending";if(e.old===a)return e.valid;e.old=a;var f=this;this.startRequest(b);var g={};g[b.name]=a;c.ajax(c.extend(true,{url:d, -mode:"abort",port:"validate"+b.name,dataType:"json",data:g,success:function(h){f.settings.messages[b.name].remote=e.originalMessage;var j=h===true;if(j){var i=f.formSubmitted;f.prepareElement(b);f.formSubmitted=i;f.successList.push(b);f.showErrors()}else{i={};h=h||f.defaultMessage(b,"remote");i[b.name]=e.message=c.isFunction(h)?h(a):h;f.showErrors(i)}e.valid=j;f.stopRequest(b,j)}},d));return"pending"},minlength:function(a,b,d){return this.optional(b)||this.getLength(c.trim(a),b)>=d},maxlength:function(a, -b,d){return this.optional(b)||this.getLength(c.trim(a),b)<=d},rangelength:function(a,b,d){a=this.getLength(c.trim(a),b);return this.optional(b)||a>=d[0]&&a<=d[1]},min:function(a,b,d){return this.optional(b)||a>=d},max:function(a,b,d){return this.optional(b)||a<=d},range:function(a,b,d){return this.optional(b)||a>=d[0]&&a<=d[1]},email:function(a,b){return this.optional(b)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(a)}, -url:function(a,b){return this.optional(b)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(a)}, -date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a))},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},creditcard:function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9 -]+/.test(a))return false;var d=0,e=0,f=false;a=a.replace(/\D/g,"");for(var g=a.length-1;g>= -0;g--){e=a.charAt(g);e=parseInt(e,10);if(f)if((e*=2)>9)e-=9;d+=e;f=!f}return d%10==0},accept:function(a,b,d){d=typeof d=="string"?d.replace(/,/g,"|"):"png|jpe?g|gif";return this.optional(b)||a.match(RegExp(".("+d+")$","i"))},equalTo:function(a,b,d){d=c(d).unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){c(b).valid()});return a==d.val()}}});c.format=c.validator.format})(jQuery); -(function(c){var a={};if(c.ajaxPrefilter)c.ajaxPrefilter(function(d,e,f){e=d.port;if(d.mode=="abort"){a[e]&&a[e].abort();a[e]=f}});else{var b=c.ajax;c.ajax=function(d){var e=("port"in d?d:c.ajaxSettings).port;if(("mode"in d?d:c.ajaxSettings).mode=="abort"){a[e]&&a[e].abort();return a[e]=b.apply(this,arguments)}return b.apply(this,arguments)}}})(jQuery); -(function(c){!jQuery.event.special.focusin&&!jQuery.event.special.focusout&&document.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.handle.call(this,e)}c.event.special[b]={setup:function(){this.addEventListener(a,d,true)},teardown:function(){this.removeEventListener(a,d,true)},handler:function(e){arguments[0]=c.event.fix(e);arguments[0].type=b;return c.event.handle.apply(this,arguments)}}});c.extend(c.fn,{validateDelegate:function(a, -b,d){return this.bind(b,function(e){var f=c(e.target);if(f.is(a))return d.apply(f,arguments)})}})})(jQuery); diff --git a/phonegap/www/js/json2.js b/phonegap/www/js/json2.js deleted file mode 100644 index 3b0c872d1..000000000 --- a/phonegap/www/js/json2.js +++ /dev/null @@ -1,487 +0,0 @@ -/* - json2.js - 2011-10-19 - - Public Domain. - - NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. - - See http://www.JSON.org/js.html - - - This code should be minified before deployment. - See http://javascript.crockford.com/jsmin.html - - USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO - NOT CONTROL. - - - This file creates a global JSON object containing two methods: stringify - and parse. - - JSON.stringify(value, replacer, space) - value any JavaScript value, usually an object or array. - - replacer an optional parameter that determines how object - values are stringified for objects. It can be a - function or an array of strings. - - space an optional parameter that specifies the indentation - of nested structures. If it is omitted, the text will - be packed without extra whitespace. If it is a number, - it will specify the number of spaces to indent at each - level. If it is a string (such as '\t' or ' '), - it contains the characters used to indent at each level. - - This method produces a JSON text from a JavaScript value. - - When an object value is found, if the object contains a toJSON - method, its toJSON method will be called and the result will be - stringified. A toJSON method does not serialize: it returns the - value represented by the name/value pair that should be serialized, - or undefined if nothing should be serialized. The toJSON method - will be passed the key associated with the value, and this will be - bound to the value - - For example, this would serialize Dates as ISO strings. - - Date.prototype.toJSON = function (key) { - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - return this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z'; - }; - - You can provide an optional replacer method. It will be passed the - key and value of each member, with this bound to the containing - object. The value that is returned from your method will be - serialized. If your method returns undefined, then the member will - be excluded from the serialization. - - If the replacer parameter is an array of strings, then it will be - used to select the members to be serialized. It filters the results - such that only members with keys listed in the replacer array are - stringified. - - Values that do not have JSON representations, such as undefined or - functions, will not be serialized. Such values in objects will be - dropped; in arrays they will be replaced with null. You can use - a replacer function to replace those with JSON values. - JSON.stringify(undefined) returns undefined. - - The optional space parameter produces a stringification of the - value that is filled with line breaks and indentation to make it - easier to read. - - If the space parameter is a non-empty string, then that string will - be used for indentation. If the space parameter is a number, then - the indentation will be that many spaces. - - Example: - - text = JSON.stringify(['e', {pluribus: 'unum'}]); - // text is '["e",{"pluribus":"unum"}]' - - - text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t'); - // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]' - - text = JSON.stringify([new Date()], function (key, value) { - return this[key] instanceof Date ? - 'Date(' + this[key] + ')' : value; - }); - // text is '["Date(---current time---)"]' - - - JSON.parse(text, reviver) - This method parses a JSON text to produce an object or array. - It can throw a SyntaxError exception. - - The optional reviver parameter is a function that can filter and - transform the results. It receives each of the keys and values, - and its return value is used instead of the original value. - If it returns what it received, then the structure is not modified. - If it returns undefined then the member is deleted. - - Example: - - // Parse the text. Values that look like ISO date strings will - // be converted to Date objects. - - myData = JSON.parse(text, function (key, value) { - var a; - if (typeof value === 'string') { - a = -/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); - if (a) { - return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], - +a[5], +a[6])); - } - } - return value; - }); - - myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) { - var d; - if (typeof value === 'string' && - value.slice(0, 5) === 'Date(' && - value.slice(-1) === ')') { - d = new Date(value.slice(5, -1)); - if (d) { - return d; - } - } - return value; - }); - - - This is a reference implementation. You are free to copy, modify, or - redistribute. -*/ - -/*jslint evil: true, regexp: true */ - -/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, - call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, - getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, - lastIndex, length, parse, prototype, push, replace, slice, stringify, - test, toJSON, toString, valueOf -*/ - - -// Create a JSON object only if one does not already exist. We create the -// methods in a closure to avoid creating global variables. - -var JSON; -if (!JSON) { - JSON = {}; -} - -(function () { - 'use strict'; - - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - if (typeof Date.prototype.toJSON !== 'function') { - - Date.prototype.toJSON = function (key) { - - return isFinite(this.valueOf()) - ? this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z' - : null; - }; - - String.prototype.toJSON = - Number.prototype.toJSON = - Boolean.prototype.toJSON = function (key) { - return this.valueOf(); - }; - } - - var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, - indent, - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }, - rep; - - - function quote(string) { - -// If the string contains no control characters, no quote characters, and no -// backslash characters, then we can safely slap some quotes around it. -// Otherwise we must also replace the offending characters with safe escape -// sequences. - - escapable.lastIndex = 0; - return escapable.test(string) ? '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' - ? c - : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : '"' + string + '"'; - } - - - function str(key, holder) { - -// Produce a string from holder[key]. - - var i, // The loop counter. - k, // The member key. - v, // The member value. - length, - mind = gap, - partial, - value = holder[key]; - -// If the value has a toJSON method, call it to obtain a replacement value. - - if (value && typeof value === 'object' && - typeof value.toJSON === 'function') { - value = value.toJSON(key); - } - -// If we were called with a replacer function, then call the replacer to -// obtain a replacement value. - - if (typeof rep === 'function') { - value = rep.call(holder, key, value); - } - -// What happens next depends on the value's type. - - switch (typeof value) { - case 'string': - return quote(value); - - case 'number': - -// JSON numbers must be finite. Encode non-finite numbers as null. - - return isFinite(value) ? String(value) : 'null'; - - case 'boolean': - case 'null': - -// If the value is a boolean or null, convert it to a string. Note: -// typeof null does not produce 'null'. The case is included here in -// the remote chance that this gets fixed someday. - - return String(value); - -// If the type is 'object', we might be dealing with an object or an array or -// null. - - case 'object': - -// Due to a specification blunder in ECMAScript, typeof null is 'object', -// so watch out for that case. - - if (!value) { - return 'null'; - } - -// Make an array to hold the partial results of stringifying this object value. - - gap += indent; - partial = []; - -// Is the value an array? - - if (Object.prototype.toString.apply(value) === '[object Array]') { - -// The value is an array. Stringify every element. Use null as a placeholder -// for non-JSON values. - - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } - -// Join all of the elements together, separated with commas, and wrap them in -// brackets. - - v = partial.length === 0 - ? '[]' - : gap - ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' - : '[' + partial.join(',') + ']'; - gap = mind; - return v; - } - -// If the replacer is an array, use it to select the members to be stringified. - - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - if (typeof rep[i] === 'string') { - k = rep[i]; - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } else { - -// Otherwise, iterate through all of the keys in the object. - - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - -// Join all of the member texts together, separated with commas, -// and wrap them in braces. - - v = partial.length === 0 - ? '{}' - : gap - ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' - : '{' + partial.join(',') + '}'; - gap = mind; - return v; - } - } - -// If the JSON object does not yet have a stringify method, give it one. - - if (typeof JSON.stringify !== 'function') { - JSON.stringify = function (value, replacer, space) { - -// The stringify method takes a value and an optional replacer, and an optional -// space parameter, and returns a JSON text. The replacer can be a function -// that can replace values, or an array of strings that will select the keys. -// A default replacer method can be provided. Use of the space parameter can -// produce text that is more easily readable. - - var i; - gap = ''; - indent = ''; - -// If the space parameter is a number, make an indent string containing that -// many spaces. - - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; - } - -// If the space parameter is a string, it will be used as the indent string. - - } else if (typeof space === 'string') { - indent = space; - } - -// If there is a replacer, it must be a function or an array. -// Otherwise, throw an error. - - rep = replacer; - if (replacer && typeof replacer !== 'function' && - (typeof replacer !== 'object' || - typeof replacer.length !== 'number')) { - throw new Error('JSON.stringify'); - } - -// Make a fake root object containing our value under the key of ''. -// Return the result of stringifying the value. - - return str('', {'': value}); - }; - } - - -// If the JSON object does not yet have a parse method, give it one. - - if (typeof JSON.parse !== 'function') { - JSON.parse = function (text, reviver) { - -// The parse method takes a text and an optional reviver function, and returns -// a JavaScript value if the text is a valid JSON text. - - var j; - - function walk(holder, key) { - -// The walk method is used to recursively walk the resulting structure so -// that modifications can be made. - - var k, v, value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - } - - -// Parsing happens in four stages. In the first stage, we replace certain -// Unicode characters with escape sequences. JavaScript handles many characters -// incorrectly, either silently deleting them, or treating them as line endings. - - text = String(text); - cx.lastIndex = 0; - if (cx.test(text)) { - text = text.replace(cx, function (a) { - return '\\u' + - ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }); - } - -// In the second stage, we run the text against regular expressions that look -// for non-JSON patterns. We are especially concerned with '()' and 'new' -// because they can cause invocation, and '=' because it can cause mutation. -// But just to be safe, we want to reject all unexpected forms. - -// We split the second stage into 4 regexp operations in order to work around -// crippling inefficiencies in IE's and Safari's regexp engines. First we -// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we -// replace all simple value tokens with ']' characters. Third, we delete all -// open brackets that follow a colon or comma or that begin the text. Finally, -// we look to see that the remaining characters are only whitespace or ']' or -// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. - - if (/^[\],:{}\s]*$/ - .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') - .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') - .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { - -// In the third stage we use the eval function to compile the text into a -// JavaScript structure. The '{' operator is subject to a syntactic ambiguity -// in JavaScript: it can begin a block or an object literal. We wrap the text -// in parens to eliminate the ambiguity. - - j = eval('(' + text + ')'); - -// In the optional fourth stage, we recursively walk the new structure, passing -// each name/value pair to a reviver function for possible transformation. - - return typeof reviver === 'function' - ? walk({'': j}, '') - : j; - } - -// If the text is not JSON parseable, then a SyntaxError is thrown. - - throw new SyntaxError('JSON.parse'); - }; - } -}()); diff --git a/phonegap/www/js/map-OpenLayers.js b/phonegap/www/js/map-OpenLayers.js deleted file mode 100644 index c46284987..000000000 --- a/phonegap/www/js/map-OpenLayers.js +++ /dev/null @@ -1,522 +0,0 @@ -// This function might be passed either an OpenLayers.LonLat (so has -// lon and lat) or an OpenLayers.Geometry.Point (so has x and y) -function fixmystreet_update_pin(lonlat) { - lonlat.transform( - fixmystreet.map.getProjectionObject(), - new OpenLayers.Projection("EPSG:4326") - ); - document.getElementById('fixmystreet.latitude').value = lonlat.lat || lonlat.y; - document.getElementById('fixmystreet.longitude').value = lonlat.lon || lonlat.x; -} - -function fixmystreet_activate_drag() { - fixmystreet.drag = new OpenLayers.Control.DragFeature( fixmystreet.markers, { - onComplete: function(feature, e) { - fixmystreet_update_pin( feature.geometry.clone() ); - } - } ); - fixmystreet.map.addControl( fixmystreet.drag ); - fixmystreet.drag.activate(); -} - -function fms_markers_list(pins, transform) { - var markers = []; - for (var i=0; i<pins.length; i++) { - var pin = pins[i]; - var loc = new OpenLayers.Geometry.Point(pin[1], pin[0]); - if (transform) { - // The Strategy does this for us, so don't do it in that case. - loc.transform( - new OpenLayers.Projection("EPSG:4326"), - fixmystreet.map.getProjectionObject() - ); - } - var marker = new OpenLayers.Feature.Vector(loc, { - colour: pin[2], - size: pin[5] || 'normal', - id: pin[3], - title: pin[4] || '' - }); - markers.push( marker ); - } - return markers; -} - -function fixmystreet_onload() { - if ( fixmystreet.area ) { - var area = new OpenLayers.Layer.Vector("KML", { - strategies: [ new OpenLayers.Strategy.Fixed() ], - protocol: new OpenLayers.Protocol.HTTP({ - url: CONFIG.FMS_URL + "/mapit/area/" + fixmystreet.area + ".kml?simplify_tolerance=0.0001", - format: new OpenLayers.Format.KML() - }) - }); - fixmystreet.map.addLayer(area); - area.events.register('loadend', null, function(a,b,c) { - var bounds = area.getDataExtent(); - if (bounds) { - var center = bounds.getCenterLonLat(); - fixmystreet.map.setCenter(center, fixmystreet.map.getZoomForExtent(bounds), false, true); - } - }); - } - - var pin_layer_style_map = new OpenLayers.StyleMap({ - 'default': new OpenLayers.Style({ - graphicTitle: "${title}", - graphicOpacity: 1, - graphicZIndex: 11, - backgroundGraphicZIndex: 10 - }) - }); - pin_layer_style_map.addUniqueValueRules('default', 'size', { - 'normal': { - externalGraphic: "i/pin-${colour}.png", - graphicWidth: 48, - graphicHeight: 64, - graphicXOffset: -24, - graphicYOffset: -64, - backgroundGraphic: "i/pin-shadow.png", - backgroundWidth: 60, - backgroundHeight: 30, - backgroundXOffset: -7, - backgroundYOffset: -30 - }, - 'big': { - externalGraphic: "i/pin-${colour}-big.png", - graphicWidth: 78, - graphicHeight: 105, - graphicXOffset: -39, - graphicYOffset: -105, - backgroundGraphic: "i/pin-shadow-big.png", - backgroundWidth: 88, - backgroundHeight: 40, - backgroundXOffset: -10, - backgroundYOffset: -35 - } - }); - var pin_layer_options = { - rendererOptions: { - yOrdering: true - }, - styleMap: pin_layer_style_map - }; - if (fixmystreet.page == 'around') { - fixmystreet.bbox_strategy = new OpenLayers.Strategy.BBOX({ ratio: 1 }); - pin_layer_options.strategies = [ fixmystreet.bbox_strategy ]; - pin_layer_options.protocol = new OpenLayers.Protocol.HTTP({ - url: CONFIG.FMS_URL + '/ajax', - params: fixmystreet.all_pins ? { all_pins: 1 } : { }, - format: new OpenLayers.Format.FixMyStreet() - }); - } - fixmystreet.markers = new OpenLayers.Layer.Vector("Pins", pin_layer_options); - fixmystreet.markers.events.register( 'loadend', fixmystreet.markers, function(evt) { - if (fixmystreet.map.popups.length) fixmystreet.map.removePopup(fixmystreet.map.popups[0]); - }); - - var markers = fms_markers_list( fixmystreet.pins, true ); - fixmystreet.markers.addFeatures( markers ); - if (fixmystreet.page == 'around' || fixmystreet.page == 'reports' || fixmystreet.page == 'my') { - fixmystreet.select_feature = new OpenLayers.Control.SelectFeature( fixmystreet.markers ); - var selectedFeature; - function onPopupClose(evt) { - fixmystreet.select_feature.unselect(selectedFeature); - OpenLayers.Event.stop(evt); - } - fixmystreet.markers.events.register( 'featureunselected', fixmystreet.markers, function(evt) { - var feature = evt.feature, popup = feature.popup; - fixmystreet.map.removePopup(popup); - popup.destroy(); - feature.popup = null; - }); - fixmystreet.markers.events.register( 'featureselected', fixmystreet.markers, function(evt) { - var feature = evt.feature; - selectedFeature = feature; - var popup = new OpenLayers.Popup.FramedCloud("popup", - feature.geometry.getBounds().getCenterLonLat(), - null, - feature.attributes.title + "<br><a href=" + CONFIG.FMS_URL + "/report/" + feature.attributes.id + ">More details</a>", - { size: new OpenLayers.Size(0,0), offset: new OpenLayers.Pixel(0,-40) }, - true, onPopupClose); - feature.popup = popup; - fixmystreet.map.addPopup(popup); - }); - fixmystreet.map.addControl( fixmystreet.select_feature ); - fixmystreet.select_feature.activate(); - } else if (fixmystreet.page == 'new') { - fixmystreet_activate_drag(); - } - fixmystreet.map.addLayer(fixmystreet.markers); - - if ( fixmystreet.zoomToBounds ) { - var bounds = fixmystreet.markers.getDataExtent(); - if (bounds) { fixmystreet.map.zoomToExtent( bounds ); } - } - - $('#hide_pins_link').click(function(e) { - e.preventDefault(); - var showhide = [ - 'Show pins', 'Hide pins', - 'Dangos pinnau', 'Cuddio pinnau', - "Vis nåler", "Gjem nåler" - ]; - for (var i=0; i<showhide.length; i+=2) { - if (this.innerHTML == showhide[i]) { - fixmystreet.markers.setVisibility(true); - fixmystreet.select_feature.activate(); - this.innerHTML = showhide[i+1]; - } else if (this.innerHTML == showhide[i+1]) { - fixmystreet.markers.setVisibility(false); - fixmystreet.select_feature.deactivate(); - this.innerHTML = showhide[i]; - } - } - }); - - $('#all_pins_link').click(function(e) { - e.preventDefault(); - fixmystreet.markers.setVisibility(true); - var texts = [ - 'en', 'Show old', 'Hide old', - 'nb', 'Inkluder utdaterte problemer', 'Skjul utdaterte rapporter', - 'cy', 'Cynnwys hen adroddiadau', 'Cuddio hen adroddiadau' - ]; - for (var i=0; i<texts.length; i+=3) { - if (this.innerHTML == texts[i+1]) { - this.innerHTML = texts[i+2]; - fixmystreet.markers.protocol.options.params = { all_pins: 1 }; - fixmystreet.markers.refresh( { force: true } ); - lang = texts[i]; - } else if (this.innerHTML == texts[i+2]) { - this.innerHTML = texts[i+1]; - fixmystreet.markers.protocol.options.params = { }; - fixmystreet.markers.refresh( { force: true } ); - lang = texts[i]; - } - } - if (lang == 'cy') { - document.getElementById('hide_pins_link').innerHTML = 'Cuddio pinnau'; - } else if (lang == 'nb') { - document.getElementById('hide_pins_link').innerHTML = 'Gjem nåler'; - } else { - document.getElementById('hide_pins_link').innerHTML = 'Hide pins'; - } - }); - -} - -$(function(){ - - set_map_config(); - - fixmystreet.map = new OpenLayers.Map("map", { - controls: fixmystreet.controls, - displayProjection: new OpenLayers.Projection("EPSG:4326") - }); - - if ($('html').hasClass('mobile') && fixmystreet.page == 'around') { - $('#fms_pan_zoom').css({ top: '2.75em !important' }); - } - - fixmystreet.layer_options = OpenLayers.Util.extend({ - zoomOffset: fixmystreet.zoomOffset, - transitionEffect: 'resize', - numZoomLevels: fixmystreet.numZoomLevels - }, fixmystreet.layer_options); - var layer = new fixmystreet.map_type("", fixmystreet.layer_options); - fixmystreet.map.addLayer(layer); - - if (!fixmystreet.map.getCenter()) { - var centre = new OpenLayers.LonLat( fixmystreet.longitude, fixmystreet.latitude ); - centre.transform( - new OpenLayers.Projection("EPSG:4326"), - fixmystreet.map.getProjectionObject() - ); - fixmystreet.map.setCenter(centre, fixmystreet.zoom || 3); - } - - 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'), - q = ( $content.offset().left + $content.width() ) / 2; - // 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 }); - } - }); - } - - if (document.getElementById('mapForm')) { - var click = new OpenLayers.Control.Click(); - fixmystreet.map.addControl(click); - click.activate(); - } - - $(window).hashchange(function(){ - if (location.hash == '#report' && $('.rap-notes').is(':visible')) { - $('.rap-notes-close').click(); - return; - } - - if (location.hash && location.hash != '#') { - return; - } - - // Okay, back to around view. - fixmystreet.bbox_strategy.activate(); - fixmystreet.markers.refresh( { force: true } ); - if ( fixmystreet.state_pins_were_hidden ) { - // If we had pins hidden when we clicked map (which had to show the pin layer as I'm doing it in one layer), hide them again. - $('#hide_pins_link').click(); - } - fixmystreet.drag.deactivate(); - $('#side-form').hide(); - $('#side').show(); - $('#sub_map_links').show(); - //only on mobile - $('#mob_sub_map_links').remove(); - $('.mobile-map-banner').text('Place pin on map') - .prepend('<a href="index.html">home</a>'); - fixmystreet.page = 'around'; - }); - - // Vector layers must be added onload as IE sucks - if ($.browser.msie) { - $(window).load(fixmystreet_onload); - } else { - fixmystreet_onload(); - } -}); - -/* Overridding the buttonDown function of PanZoom so that it does - 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) { - 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.zoomTo(0); - break; - } - - OpenLayers.Event.stop(evt); - } -}); - -/* Overriding Permalink so that it can pass the correct zoom to OSM */ -OpenLayers.Control.PermalinkFMS = OpenLayers.Class(OpenLayers.Control.Permalink, { - 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(null, this.map.getZoom()+fixmystreet.zoomOffset)); - // Could use mlat/mlon here as well if we are on a page with a marker - if (this.anchor && !this.element) { - window.location.href = href; - } - else { - this.element.href = href; - } - } -}); - -/* Pan data handler */ -OpenLayers.Format.FixMyStreet = OpenLayers.Class(OpenLayers.Format.JSON, { - read: function(json, filter) { - if (typeof json == 'string') { - obj = OpenLayers.Format.JSON.prototype.read.apply(this, [json, filter]); - } else { - obj = json; - } - var current, current_near; - if (typeof(obj.current) != 'undefined' && (current = document.getElementById('current'))) { - current.innerHTML = obj.current; - } - if (typeof(obj.current_near) != 'undefined' && (current_near = document.getElementById('current_near'))) { - current_near.innerHTML = obj.current_near; - } - var markers = fms_markers_list( obj.pins, false ); - return markers; - }, - CLASS_NAME: "OpenLayers.Format.FixMyStreet" -}); - -/* Click handler */ -OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, { - defaultHandlerOptions: { - 'single': true, - 'double': false, - 'pixelTolerance': 0, - 'stopSingle': false, - 'stopDouble': false - }, - - initialize: function(options) { - this.handlerOptions = OpenLayers.Util.extend( - {}, this.defaultHandlerOptions); - OpenLayers.Control.prototype.initialize.apply( - this, arguments - ); - this.handler = new OpenLayers.Handler.Click( - this, { - 'click': this.trigger - }, this.handlerOptions); - }, - - trigger: function(e) { - if (typeof fixmystreet.nav_control != 'undefined') { - fixmystreet.nav_control.disableZoomWheel(); - } - var lonlat = fixmystreet.map.getLonLatFromViewPortPx(e.xy); - if (fixmystreet.page == 'new') { - /* Already have a pin */ - fixmystreet.markers.features[0].move(lonlat); - } else { - var markers = fms_markers_list( [ [ lonlat.lat, lonlat.lon, 'green' ] ], false ); - fixmystreet.bbox_strategy.deactivate(); - fixmystreet.markers.removeAllFeatures(); - fixmystreet.markers.addFeatures( markers ); - fixmystreet_activate_drag(); - } - fixmystreet_update_pin(lonlat); - // check to see if markers are visible. We click the - // link so that it updates the text in case they go - // back - if ( ! fixmystreet.markers.getVisibility() ) { - fixmystreet.state_pins_were_hidden = true; - $('#hide_pins_link').click(); - } - if (fixmystreet.page == 'new') { - return; - } - $.getJSON( CONFIG.FMS_URL + 'report/new/ajax', { - latitude: $('#fixmystreet\\.latitude').val(), - longitude: $('#fixmystreet\\.longitude').val() - }, function(data) { - if (data.error) { - // XXX If they then click back and click somewhere in the area, this error will still show. - $('#side-form').html('<h1>Reporting a problem</h1><p>' + data.error + '</p>'); - return; - } - $('#councils_text').html(data.councils_text); - $('#form_category_row').html(data.category); - }); - - $('#side-form, #site-logo').show(); - fixmystreet.map.updateSize(); // might have done, and otherwise Firefox gets confused. - /* For some reason on IOS5 if you use the jQuery show method it - * doesn't display the JS validation error messages unless you do this - * or you cause a screen redraw by changing the phone orientation. - * NB: This has to happen after the call to show() */ - if ( navigator.userAgent.match(/like Mac OS X/i)) { - document.getElementById('side-form').style.display = 'block'; - } - $('#side').hide(); - if (typeof heightFix !== 'undefined') { - heightFix('#report-a-problem-sidebar', '.content', 26); - } - - // If we clicked the map somewhere inconvenient - var sidebar = $('#report-a-problem-sidebar'); - if (sidebar.css('position') == 'absolute') { - var w = sidebar.width(), h = sidebar.height(), - o = sidebar.offset(), - $map_box = $('#map_box'), bo = $map_box.offset(); - // e.xy is relative to top left of map, which might not be top left of page - e.xy.x += bo.left; - e.xy.y += bo.top; - if (e.xy.y <= o.top || (e.xy.x >= o.left && e.xy.x <= o.left + w + 24 && e.xy.y >= o.top && e.xy.y <= o.top + h + 64)) { - // top of the page, pin hidden by header; - // or underneath where the new sidebar will appear - lonlat.transform( - new OpenLayers.Projection("EPSG:4326"), - fixmystreet.map.getProjectionObject() - ); - var p = fixmystreet.map.getViewPortPxFromLonLat(lonlat); - p.x -= ( o.left + w ) / 2; - lonlat = fixmystreet.map.getLonLatFromViewPortPx(p); - fixmystreet.map.panTo(lonlat); - } - } - - $('#sub_map_links').hide(); - if ($('html').hasClass('mobile')) { - var $map_box = $('#map_box'), - width = $map_box.width(), - height = $map_box.height(); - $map_box.append( - '<p id="mob_sub_map_links">' + - '<a href="#" id="try_again">Try again</a>' + - '<a href="#ok" id="mob_ok">OK</a>' + - '</p>' - ).css({ position: 'relative', width: width, height: height, marginBottom: '1em' }); - // Making it relative here makes it much easier to do the scrolling later - - $('.mobile-map-banner').text('Right place?').prepend('<a href="index.html">home</a>'); - - // mobile user clicks 'ok' on map - $('#mob_ok').toggle(function(){ - //scroll the height of the map box instead of the offset - //of the #side-form or whatever as we will probably want - //to do this on other pages where #side-form might not be - $('html, body').animate({ scrollTop: height-60 }, 1000, function(){ - $('#mob_sub_map_links').addClass('map_complete'); - $('#mob_ok').text('MAP'); - }); - }, function(){ - $('html, body').animate({ scrollTop: 0 }, 1000, function(){ - $('#mob_sub_map_links').removeClass('map_complete'); - $('#mob_ok').text('OK'); - }); - }); - } - - fixmystreet.page = 'new'; - location.hash = 'report'; - } -}); - diff --git a/phonegap/www/js/map-OpenStreetMap.js b/phonegap/www/js/map-OpenStreetMap.js deleted file mode 100644 index 50f159635..000000000 --- a/phonegap/www/js/map-OpenStreetMap.js +++ /dev/null @@ -1,140 +0,0 @@ -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.LayerSwitcher(), - new OpenLayers.Control.Navigation(), - new OpenLayers.Control.Permalink(permalink_id), - new OpenLayers.Control.PermalinkFMS('osm_link', 'http://www.openstreetmap.org/'), - new OpenLayers.Control.PanZoomFMS({id: 'fms_pan_zoom' }) - ]; -} - -// 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: - * - <OpenLayers.Layer.OSM> - */ -OpenLayers.Layer.OSM.Mapnik = OpenLayers.Class(OpenLayers.Layer.OSM, { - /** - * Constructor: OpenLayers.Layer.OSM.Mapnik - * - * Parameters: - * name - {String} - * options - {Object} Hashtable of extra options to tag onto the layer - */ - initialize: function(name, options) { - var 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" - ]; - 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), - numZoomLevels: 19, - buffer: 0 - }, options); - var newArguments = [name, url, options]; - OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments); - }, - - CLASS_NAME: "OpenLayers.Layer.OSM.Mapnik" -}); - -/** - * Class: OpenLayers.Layer.OSM.Osmarender - * - * Inherits from: - * - <OpenLayers.Layer.OSM> - */ -OpenLayers.Layer.OSM.Osmarender = OpenLayers.Class(OpenLayers.Layer.OSM, { - /** - * Constructor: OpenLayers.Layer.OSM.Osmarender - * - * Parameters: - * name - {String} - * options - {Object} Hashtable of extra options to tag onto the layer - */ - initialize: function(name, options) { - var url = [ - "http://a.tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png", - "http://b.tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png", - "http://c.tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png" - ]; - options = OpenLayers.Util.extend({ numZoomLevels: 18, buffer: 0 }, options); - var newArguments = [name, url, options]; - OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments); - }, - - CLASS_NAME: "OpenLayers.Layer.OSM.Osmarender" -}); - -/** - * Class: OpenLayers.Layer.OSM.CycleMap - * - * Inherits from: - * - <OpenLayers.Layer.OSM> - */ -OpenLayers.Layer.OSM.CycleMap = OpenLayers.Class(OpenLayers.Layer.OSM, { - /** - * Constructor: OpenLayers.Layer.OSM.CycleMap - * - * Parameters: - * name - {String} - * options - {Object} Hashtable of extra options to tag onto the layer - */ - initialize: function(name, options) { - var url = [ - "http://a.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png", - "http://b.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png", - "http://c.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png" - ]; - 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), - numZoomLevels: 19, - buffer: 0 - }, options); - var newArguments = [name, url, options]; - OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments); - }, - - CLASS_NAME: "OpenLayers.Layer.OSM.CycleMap" -}); diff --git a/phonegap/www/js/map-bing-ol.js b/phonegap/www/js/map-bing-ol.js deleted file mode 100644 index 9e9354df3..000000000 --- a/phonegap/www/js/map-bing-ol.js +++ /dev/null @@ -1,122 +0,0 @@ -function set_map_config(perm) { - var permalink_id; - if ($('#map_permalink').length) { - permalink_id = 'map_permalink'; - } - - var nav_opts = { zoomWheelEnabled: false }; - //if (fixmystreet.page == 'around' && $('html').hasClass('mobile')) { - nav_opts = {}; - //} - fixmystreet.nav_control = new OpenLayers.Control.Navigation(nav_opts); - - fixmystreet.controls = [ - new OpenLayers.Control.Attribution(), - new OpenLayers.Control.ArgParser(), - fixmystreet.nav_control, - new OpenLayers.Control.Permalink(permalink_id), - new OpenLayers.Control.PanZoomFMS({id: 'fms_pan_zoom' }) - ]; - fixmystreet.map_type = OpenLayers.Layer.Bing; -} - -OpenLayers.Layer.Bing = OpenLayers.Class(OpenLayers.Layer.XYZ, { - attributionTemplate: '${logo}${copyrights}', - - setMap: function() { - OpenLayers.Layer.XYZ.prototype.setMap.apply(this, arguments); - this.updateAttribution(); - this.map.events.register("moveend", this, this.updateAttribution); - }, - - updateAttribution: function() { - var z = this.map.getZoom() + this.zoomOffset; - var copyrights; - var logo = ''; - if (z >= 16) { - copyrights = 'Contains Ordnance Survey data © Crown copyright and database right 2010'; - } else { - logo = '<a href="http://www.bing.com/maps/"><img border=0 src="http://dev.virtualearth.net/Branding/logo_powered_by.png"></a>'; - copyrights = '© 2011 <a href="http://www.bing.com/maps/">Microsoft</a>. © AND, Navteq, Ordnance Survey'; - } - this.attribution = OpenLayers.String.format(this.attributionTemplate, { - logo: logo, - copyrights: copyrights - }); - if (this.map) { - this.map.events.triggerEvent("changelayer", { - layer: this, - property: "attribution" - }); - } - }, - - initialize: function(name, options) { - 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), - numZoomLevels: 18, - transitionEffect: "resize", - sphericalMercator: true, - buffer: 0 - //attribution: "© Microsoft / OS 2010" - }, options); - var newArguments = [name, url, options]; - OpenLayers.Layer.XYZ.prototype.initialize.apply(this, newArguments); - }, - - get_quadkey: function(x, y, level) { - var key = ''; - for (var i = level; i > 0; i--) { - var digit = 0; - var mask = 1 << (i - 1); - if ((x & mask) !== 0) { - digit++; - } - if ((y & mask) !== 0) { - digit += 2; - } - key += digit; - } - return key; - }, - - getURL: 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 url; - if (z >= 16) { - url = [ - "http://tilma.mysociety.org/sv/${z}/${x}/${y}.png", - "http://a.tilma.mysociety.org/sv/${z}/${x}/${y}.png", - "http://b.tilma.mysociety.org/sv/${z}/${x}/${y}.png", - "http://c.tilma.mysociety.org/sv/${z}/${x}/${y}.png" - ]; - } else { - var type = ''; - if (z > 10) { type = '&productSet=mmOS'; } - url = [ - "http://ecn.t0.tiles.virtualearth.net/tiles/r${id}.png?g=701" + type, - "http://ecn.t1.tiles.virtualearth.net/tiles/r${id}.png?g=701" + type, - "http://ecn.t2.tiles.virtualearth.net/tiles/r${id}.png?g=701" + type, - "http://ecn.t3.tiles.virtualearth.net/tiles/r${id}.png?g=701" + type - ]; - } - var s = '' + x + y + z; - url = this.selectUrl(s, url); - - var id = this.get_quadkey(x, y, z); - var path = OpenLayers.String.format(url, {'id': id, 'x': x, 'y': y, 'z': z}); - return path; - }, - - CLASS_NAME: "OpenLayers.Layer.Bing" -}); diff --git a/phonegap/www/js/map-bing.js b/phonegap/www/js/map-bing.js deleted file mode 100644 index 715a8efc9..000000000 --- a/phonegap/www/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/phonegap/www/js/map-google.js b/phonegap/www/js/map-google.js deleted file mode 100644 index 7da21ba09..000000000 --- a/phonegap/www/js/map-google.js +++ /dev/null @@ -1,22 +0,0 @@ -$(function(){ - var centre = new google.maps.LatLng( fixmystreet.latitude, fixmystreet.longitude ); - var map = new google.maps.Map(document.getElementById("map"), { - mapTypeId: google.maps.MapTypeId.ROADMAP, - center: centre, - zoom: 16, - disableDefaultUI: true, - navigationControl: true, - navigationControlOptions: { - style: google.maps.NavigationControlStyle.SMALL - }, - mapTypeControl: true, - mapTypeControlOptions: { - style: google.maps.MapTypeControlStyle.DROPDOWN_MENU - } - }); - - google.maps.event.addListener(map, "zoom_changed", function() { - if (map.getZoom() < 13) { map.setZoom(13); } - if (map.getZoom() > 17) { map.setZoom(17); } - }); -}); diff --git a/phonegap/www/js/map-streetview.js b/phonegap/www/js/map-streetview.js deleted file mode 100644 index b1ba3664d..000000000 --- a/phonegap/www/js/map-streetview.js +++ /dev/null @@ -1,76 +0,0 @@ -function set_map_config(perm) { - fixmystreet.controls = [ - new OpenLayers.Control.ArgParser(), - //new OpenLayers.Control.LayerSwitcher(), - new OpenLayers.Control.Navigation(), - new OpenLayers.Control.Permalink(), - new OpenLayers.Control.PanZoomFMS() - ]; - fixmystreet.map_type = OpenLayers.Layer.StreetView; -} - -// 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 - * - * Inherits from: - * - <OpenLayers.Layer.XYZ> - */ -OpenLayers.Layer.StreetView = OpenLayers.Class(OpenLayers.Layer.XYZ, { - attribution: 'Map contains Ordnance Survey data © Crown copyright and database right 2010.', - - /** - * Constructor: OpenLayers.Layer.StreetView - * - * Parameters: - * name - {String} - * url - {String} - * options - {Object} Hashtable of extra options to tag onto the layer - */ - initialize: function(name, options) { - var url = [ - "http://a.os.openstreetmap.org/sv/${z}/${x}/${y}.png", - "http://b.os.openstreetmap.org/sv/${z}/${x}/${y}.png", - "http://c.os.openstreetmap.org/sv/${z}/${x}/${y}.png" - ]; - 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), - numZoomLevels: 18, - transitionEffect: "resize", - sphericalMercator: true, - attribution: "Contains Ordnance Survey data © Crown copyright and database right 2010" - }, options); - var newArguments = [name, url, options]; - OpenLayers.Layer.XYZ.prototype.initialize.apply(this, newArguments); - }, - - CLASS_NAME: "OpenLayers.Layer.StreetView" -}); diff --git a/phonegap/www/js/mobile.js b/phonegap/www/js/mobile.js deleted file mode 100644 index c44501d97..000000000 --- a/phonegap/www/js/mobile.js +++ /dev/null @@ -1,489 +0,0 @@ -function touchmove(e) { - e.preventDefault(); -} - -function loadingSpinner(method){ - if (method == "on") { - //Adjust to screen size - var pHeight = window.innerHeight; - var pWidth = window.innerWidth; - var sH = parseInt($('#loadingSpinner').css('height'),10); - var sW = parseInt($('#loadingSpinner').css('width'),10); - $('#loadingSpinner').css('top',(pHeight-sH)/2+$('body').scrollTop()); - $('#loadingSpinner').css('left',(pWidth-sW)/2); - $('#loadingSpinner').css('z-index',1000); - //Show - $('#loadingSpinner').show(); - } else if (method == 'off'){ - $('#loadingSpinner').hide(); - } -} - -function showBusy( title, msg ) { - if ( navigator && navigator.notification && typeof navigator.notification.activityStart !== "undefined") { - navigator.notification.activityStart( title, msg ); - } else { - loadingSpinner('on'); - } -} - -function hideBusy() { - if ( navigator && navigator.notification && navigator.notification.activityStop) { - navigator.notification.activityStop(); - } else { - loadingSpinner('off'); - } -} - -function show_around( lat, long ) { - pc = $('#pc').val(); - localStorage.latitude = lat; - localStorage.longitude = long; - localStorage.pc = pc; - hideBusy(); - window.location='around.html'; - return false; -} - -function valid_postcode(pc) { - var out_pattern = '[A-PR-UWYZ]([0-9]{1,2}|([A-HIK-Y][0-9](|[0-9]|[ABEHMNPRVWXY]))|[0-9][A-HJKSTUW])'; - var in_pattern = '[0-9][ABD-HJLNP-UW-Z]{2}'; - var full_pattern = '^' + out_pattern + in_pattern + '$'; - var postcode_regex = new RegExp(full_pattern); - - pc = pc.toUpperCase().replace(/\s+/, ''); - if ( postcode_regex.test(pc) ) { - return true; - } - - return false; -} - -function checkConnection() { - var networkState = navigator.network.connection.type; - if ( networkState == Connection.NONE || networkState == Connection.UNKNOWN ) { - $('#main').hide(); - $('#noconnection').show(); - } -} - -function use_lat_long( lat, long ) { - show_around( lat, long ); -} - -function location_error( msg ) { - hideBusy(); - if ( msg === '' ) { - $('#location_error').remove(); - return; - } - - alert(msg); - - if ( !$('#location_error') ) { - $('#postcodeForm').after('<p id="location_error"></p>'); - } - - $('#location_error').text( msg ); -} - -function lookup_string(q) { - q = q.toLowerCase(); - q = q.replace(/[^\-&\w ']/, ' '); - q = q.replace(/\s+/, ' '); - - if (!q) { - hideBusy(); - location_error("Please enter location"); - return false; - } - - var url = "http://dev.virtualearth.net/REST/v1/Locations?q=" + escape(q); - url += '&c=en-GB&key=' + CONFIG.BING_API_KEY; - var x = jQuery.get( url, function(data, status) { - if ( status == 'success' ) { - var valid_locations = 0; - var latitude = 0; - var longitude = 0; - var multiple = []; - - for ( i = 0; i < data.resourceSets[0].resources.length; i++ ) { - var details = data.resourceSets[0].resources[i]; - if ( details.address.countryRegion != 'United Kingdom' ) { continue; } - var address = details.name; - - latitude = details.point.coordinates[0]; - longitude = details.point.coordinates[1]; - latitude = latitude.toPrecision(6); - longitude = longitude.toPrecision(6); - - multiple.push( { 'address': address, 'latitude': latitude, 'longitude': longitude } ); - valid_locations += 1; - } - - if ( valid_locations == 1 ) { - show_around( latitude, longitude ); - } else if ( valid_locations === 0 ) { - location_error('Location not found'); - $('#pc').select(); - } else { - location_error(''); - $('#multiple').remove(); - var multiple_html = '<ul id="multiple"><li>Multiple locations found, please select one:'; - for ( i = 0; i < multiple.length; i++ ) { - multiple_html += '<li><a href="#" onclick="use_lat_long( ' + multiple[i].latitude + ',' + multiple[i].longitude +')">' + multiple[i].address + '</a></li>'; - } - multiple_html += '</ul>'; - $('#front-howto').hide(); - $('#postcodeForm').after( multiple_html ); - } - } else { - location_error("Could not find your location"); - } - hideBusy(); - }); - return false; -} - -function locate() { - $("#multiple").remove(); - var pc = $('#pc').val(); - - if (!pc) { - location_error( "Please enter your location" ); - return false; - } - - showBusy('Locating', 'Looking up location'); - - if ( valid_postcode( pc ) ) { - jQuery.get( CONFIG.MAPIT_URL + 'postcode/' + pc + '.json', function(data, status) { - if ( status == 'success' ) { - //activityStop(); - show_around( data.wgs84_lat, data.wgs84_lon ); - } else { - activityStop(); - alert('Could not locate postcode'); - } - }); - } else { - lookup_string(pc); - } - return false; -} - -function foundLocation(myLocation) { - var lat = myLocation.coords.latitude; - var long = myLocation.coords.longitude; - - show_around( lat, long ); -} - -function notFoundLocation() { location_error( 'Could not find location' ); } - -function getPosition() { - showBusy( 'Locating', 'Looking up location' ); - - navigator.geolocation.getCurrentPosition(foundLocation, notFoundLocation); -} - - -function takePhotoSuccess(imageURI) { - $('#form_photo').val(imageURI); - $('#photo').attr('src', imageURI ); - $('#add_photo').hide(); - $('#display_photo').show(); -} - -function delPhoto() { - $('#form_photo').val(''); - $('#photo').attr('src', '' ); - $('#display_photo').hide(); - $('#add_photo').show(); -} - -function takePhotoFail(message) { - alert('There was a problem taking your photo'); - console.log('error taking picture: ' + message); -} - -function takePhoto(type) { - navigator.camera.getPicture(takePhotoSuccess, takePhotoFail, { quality: 50, destinationType: Camera.DestinationType.FILE_URI, sourceType: type }); -} - -function check_name( name, msg ) { - $('#email_label').hide(); - $('#form_email').hide(); - $('#now_submit').hide(); - $('#have_password').hide(); - $('#form_sign_in_yes').hide(); - $('#let_me_confirm').hide(); - $('#password_register').hide(); - $('#password_surround').hide(); - $('#providing_password').hide(); - $('#form_name').val( name ); - if ( msg ) { - $('#form_name').focus(); - $('#form_name').before('<div class="form-error">' + msg + '</div>' ); - } -} - -function fileUploadSuccess(r) { - if ( r.response ) { - var data; - try { - data = JSON.parse( decodeURIComponent(r.response) ); - } - catch(err) { - data = {}; - } - if ( data.success ) { - if ( data.report ) { - localStorage.report = data.report; - hideBusy(); - window.location = 'report_created.html'; - } else { - hideBusy(); - window.location = 'email_sent.html'; - } - } else { - if ( data.check_name ) { - check_name( data.check_name, data.errors.name ); - } else { - alert('Could not submit report'); - } - $('input[type=submit]').prop("disabled", false); - } - } else { - hideBusy(); - alert('Could not submit report'); - $('input[type=submit]').prop("disabled", false); - } -} - -function fileUploadFail() { - hideBusy(); - alert('Could not submit report'); - $('input[type=submit]').prop("disabled", false); -} - - -var submit_clicked = null; - -function postReport(e) { - e.preventDefault(); - - // the .stopImmediatePropogation call in invalidHandler should render this - // redundant but it doesn't seem to work so belt and braces :( - if ( !$('#mapForm').valid() ) { return; } - - var params = { - service: 'iphone', - title: $('#form_title').val(), - detail: $('#form_detail').val(), - may_show_name: $('#form_may_show_name').attr('checked') ? 1 : 0, - category: $('#form_category').val(), - lat: $('#fixmystreet\\.latitude').val(), - lon: $('#fixmystreet\\.longitude').val(), - phone: $('#form_phone').val(), - pc: $('#pc').val() - }; - - if ( localStorage.username && localStorage.password && localStorage.name ) { - params.name = localStorage.name; - params.email = localStorage.username; - params.password_sign_in = localStorage.password; - params.submit_sign_in = 1; - } else { - params.name = $('#form_name').val(); - params.email = $('#form_email').val(); - params.password_sign_in = $('#password_sign_in').val(); - - if ( submit_clicked.attr('id') == 'submit_sign_in' ) { - params.submit_sign_in = 1; - } else { - params.submit_register = 1; - } - } - - showBusy( 'Sending Report', 'Please wait while your report is sent' ); - if ( $('#form_photo').val() !== '' ) { - fileURI = $('#form_photo').val(); - - var options = new FileUploadOptions(); - options.fileKey="photo"; - options.fileName=fileURI.substr(fileURI.lastIndexOf('/')+1); - options.mimeType="image/jpeg"; - options.params = params; - options.chunkedMode = false; - - var ft = new FileTransfer(); - ft.upload(fileURI, CONFIG.FMS_URL + "report/new/mobile", fileUploadSuccess, fileUploadFail, options); - } else { - jQuery.ajax( { - url: CONFIG.FMS_URL + "report/new/mobile", - type: 'POST', - data: params, - timeout: 30000, - success: function(data) { - if ( data.success ) { - localStorage.pc = null; - localStorage.lat = null; - localStorage.long = null; - if ( data.report ) { - localStorage.report = data.report; - hideBusy(); - window.location = 'report_created.html'; - } else { - hideBusy(); - window.location = 'email_sent.html'; - } - if ( !localStorage.name && $('#password_sign_in').val() ) { - localStorage.name = $('#form_name').val(); - localStorage.username = $('#form_email').val(); - localStorage.password = $('#password_sign_in').val(); - } - } else { - if ( data.check_name ) { - check_name( data.check_name, data.errors.name ); - } - $('input[type=submit]').prop("disabled", false); - hideBusy(); - } - }, - error: function (data, status, errorThrown ) { - hideBusy(); - alert( 'There was a problem submitting your report, please try again (' + status + '): ' + JSON.stringify(data), function(){}, 'Submit report' ); - $('input[type=submit]').prop("disabled", false); - } - } ); - } - return false; -} - -function sign_in() { - showBusy( 'Signing In', 'Please wait while you are signed in' ); - $('#form_email').blur(); - $('#password_sign_in').blur(); - jQuery.ajax( { - url: CONFIG.FMS_URL + "auth/ajax/sign_in", - type: 'POST', - data: { - email: $('#form_email').val(), - password_sign_in: $('#password_sign_in').val(), - remember_me: 1 - }, - success: function(data) { - console.log(data); - if ( data.name ) { - localStorage.name = data.name; - localStorage.username = $('#form_email').val(); - localStorage.password = $('#password_sign_in').val(); - hideBusy(); - $('#user-meta').html('<p>You are signed in as ' + localStorage.username + '.</p>'); - $('#form_sign_in_only').hide(); - $('#forget_button').show(); - $('#form_email').val(''); - $('#password_sign_in').val(''); - } else { - hideBusy(); - $('#form_email').before('<div class="form-error">There was a problem with your email/password combination.</div>'); - } - } - } ); - -} - -function display_signed_out_msg() { - if ( localStorage.signed_out == 1 ) { - $('#user-meta').html('<p>You’ve been signed out.</p>'); - $('#form_sign_in_only').show(); - localStorage.signed_out = null; - } - if ( localStorage.name ) { - $('#user-meta').html('<p>You are signed in as ' + localStorage.username + '.</p>'); - $('#form_sign_in_only').hide(); - $('#forget_button').show(); - } else { - $('#forget_button').hide(); - $('#form_sign_in_only').show(); - } -} - -function sign_out() { - jQuery.ajax( { - url: CONFIG.FMS_URL + "auth/ajax/sign_out?" + new Date().getTime(), - type: 'GET', - success: function(data) { - if ( data.signed_out ) { - localStorage.signed_out = 1; - localStorage.name = null; - hideBusy(); - document.location = 'sign_in.html'; - } - } - } ); -} - -function sign_out_around() { - jQuery.ajax( { - url: CONFIG.FMS_URL + "auth/ajax/sign_out?" + new Date().getTime(), - type: 'GET', - success: function(data) { - $('#user-meta').html(''); - $('#email_label').show(); - $('#form_email').show(); - $('#now_submit').show(); - $('#have_password').show(); - $('#form_sign_in_yes').show(); - $('#let_me_confirm').show(); - $('#password_register').show(); - $('#password_surround').show(); - $('#providing_password').show(); - $('#form_name').val( '' ); - $('.form-focus-hidden').hide(); - } - } ); -} - -function account() { - $('.mobile-sign-in-banner').show(); - $('#account').show(); - if ( localStorage.name ) { - if ( $('body').hasClass('signed-in-page') ) { - $('#user-meta').html('<p>Hi ' + localStorage.name + '</p>'); - } - - if ( $('#form_sign_in').length ) { - check_name( localStorage.name ); - $('.form-focus-hidden').show(); - } - } -} - -function forget() { - delete localStorage.name; - delete localStorage.username; - delete localStorage.password; - localStorage.signed_out = 1; - display_signed_out_msg(); -} - -function onDeviceReady() { - var location = document.location + ''; - if ( location.indexOf('no_connection.html') < 0 && ( - navigator.network.connection.type == Connection.NONE || - navigator.network.connection.type == Connection.UNKNOWN ) ) { - document.location = 'no_connection.html'; - } - $('#postcodeForm').submit(locate); - $('#mapForm').submit(postReport); - $('#signInForm').submit(sign_in); - $('#ffo').click(getPosition); - $('#forget').click(forget); - $('#mapForm :input[type=submit]').on('click', function() { submit_clicked = $(this); }); - account(); - hideBusy(); -} - -document.addEventListener("deviceready", onDeviceReady, false); diff --git a/phonegap/www/js/southampton.js b/phonegap/www/js/southampton.js deleted file mode 100644 index e7af4fcaf..000000000 --- a/phonegap/www/js/southampton.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - * southampton.js - * FixMyStreet JavaScript for Southampton - */ - - -$(function(){ - - $('[placeholder]').focus(function(){ - var input = $(this); - if (input.val() == input.attr('placeholder')) { - input.val(''); - input.removeClass('placeholder'); - input.css({ 'color': '#000000' }); - } - }).blur(function(){ - var input = $(this); - if (input.val() === '' || input.val() == input.attr('placeholder')) { - input.css({ 'color': '#999999' }); - input.val(input.attr('placeholder')); - } - }).blur(); - - $('#form_category').change(function(){ - var category = $(this).val(); - if ('Potholes' == category) { - if (!$('#potholes_extra').length) { - var qns = '<div id="potholes_extra" style="margin:0; display:none;">' + - '<div class="form-field"><label for="form_size">Size:</label>' + - '<select name="detail_size"><option>-- Please select --<option>Unknown' + - '<option>Small: No larger than a dinner plate (up to 30cm/12inches)' + - '<option>Medium: No larger than a dustbin lid (up to 60cm/24inches)' + - '<option>Large: Larger than a dustbin lid (over 60cm/24inches)' + - '</select></div>' + - '<div class="form-field"><label for="form_depth">Depth:</label>' + - '<select name="detail_depth"><option>-- Please select --<option>Unknown' + - '<option>No deeper than a golf ball (up to 4cm/1.5inches)' + - '<option>No deeper than a tennis ball (up to 6.5cm/2.5inches)' + - '<option>Deeper than a tennis ball' + - '</select></div></div>'; - $('#form_title').closest('div.form-field').after(qns); - } - $('#potholes_extra').show('fast'); - } else { - $('#potholes_extra').hide('fast'); - } - }).change(); - -}); - diff --git a/phonegap/www/jslib/OpenLayers-2.10/OpenLayers.js b/phonegap/www/jslib/OpenLayers-2.10/OpenLayers.js deleted file mode 100644 index 43e67e819..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/OpenLayers.js +++ /dev/null @@ -1,2553 +0,0 @@ -/* - - OpenLayers.js -- OpenLayers Map Viewer Library - - Copyright 2005-2010 OpenLayers Contributors, released under the Clear BSD - license. Please see http://svn.openlayers.org/trunk/openlayers/license.txt - for the full text of the license. - - Includes compressed code under the following licenses: - - (For uncompressed versions of the code used please see the - OpenLayers SVN repository: <http://openlayers.org/>) - -*/ - -/* 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 portions of Rico <http://openrico.org/> -* -* Copyright 2005 Sabre Airline Solutions -* -* Licensed under the Apache License, Version 2.0 (the "License"); you -* may not use this file except in compliance with the License. You -* may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -* implied. See the License for the specific language governing -* permissions and limitations under the License. -* -**/ - -/** - * 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 - */ - -/** - * Contains portions of Gears <http://code.google.com/apis/gears/> - * - * Copyright 2007, Google Inc. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of Google Inc. nor the names of its contributors may be - * used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO - * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * Sets up google.gears.*, which is *the only* supported way to access Gears. - * - * Circumvent this file at your own risk! - * - * In the future, Gears may automatically define google.gears.* without this - * file. Gears may use these objects to transparently fix bugs and compatibility - * issues. Applications that use the code below will continue to work seamlessly - * when that happens. - */ -var OpenLayers={singleFile:true};(function(){var singleFile=(typeof OpenLayers=="object"&&OpenLayers.singleFile);var scriptLocation;window.OpenLayers={_scriptName:(!singleFile)?"lib/OpenLayers.js":"OpenLayers.js",_getScriptLocation:function(){if(scriptLocation!=undefined){return scriptLocation;} -scriptLocation="";var isOL=new RegExp("(^|(.*?\\/))("+OpenLayers._scriptName+")(\\?|$)");var scripts=document.getElementsByTagName('script');for(var i=0,len=scripts.length;i<len;i++){var src=scripts[i].getAttribute('src');if(src){var match=src.match(isOL);if(match){scriptLocation=match[1];break;}}} -return scriptLocation;}};if(!singleFile){var jsfiles=new Array("OpenLayers/Util.js","OpenLayers/BaseTypes.js","OpenLayers/BaseTypes/Class.js","OpenLayers/BaseTypes/Bounds.js","OpenLayers/BaseTypes/Element.js","OpenLayers/BaseTypes/LonLat.js","OpenLayers/BaseTypes/Pixel.js","OpenLayers/BaseTypes/Size.js","OpenLayers/Console.js","OpenLayers/Tween.js","Rico/Corner.js","Rico/Color.js","OpenLayers/Ajax.js","OpenLayers/Events.js","OpenLayers/Request.js","OpenLayers/Request/XMLHttpRequest.js","OpenLayers/Projection.js","OpenLayers/Map.js","OpenLayers/Layer.js","OpenLayers/Icon.js","OpenLayers/Marker.js","OpenLayers/Marker/Box.js","OpenLayers/Popup.js","OpenLayers/Tile.js","OpenLayers/Tile/Image.js","OpenLayers/Tile/Image/IFrame.js","OpenLayers/Tile/WFS.js","OpenLayers/Layer/Image.js","OpenLayers/Layer/SphericalMercator.js","OpenLayers/Layer/EventPane.js","OpenLayers/Layer/FixedZoomLevels.js","OpenLayers/Layer/Google.js","OpenLayers/Layer/Google/v3.js","OpenLayers/Layer/VirtualEarth.js","OpenLayers/Layer/Yahoo.js","OpenLayers/Layer/HTTPRequest.js","OpenLayers/Layer/Grid.js","OpenLayers/Layer/MapGuide.js","OpenLayers/Layer/MapServer.js","OpenLayers/Layer/MapServer/Untiled.js","OpenLayers/Layer/KaMap.js","OpenLayers/Layer/KaMapCache.js","OpenLayers/Layer/MultiMap.js","OpenLayers/Layer/Markers.js","OpenLayers/Layer/Text.js","OpenLayers/Layer/WorldWind.js","OpenLayers/Layer/ArcGIS93Rest.js","OpenLayers/Layer/WMS.js","OpenLayers/Layer/WMS/Untiled.js","OpenLayers/Layer/WMS/Post.js","OpenLayers/Layer/WMTS.js","OpenLayers/Layer/ArcIMS.js","OpenLayers/Layer/GeoRSS.js","OpenLayers/Layer/Boxes.js","OpenLayers/Layer/XYZ.js","OpenLayers/Layer/TMS.js","OpenLayers/Layer/TileCache.js","OpenLayers/Layer/Zoomify.js","OpenLayers/Popup/Anchored.js","OpenLayers/Popup/AnchoredBubble.js","OpenLayers/Popup/Framed.js","OpenLayers/Popup/FramedCloud.js","OpenLayers/Feature.js","OpenLayers/Feature/Vector.js","OpenLayers/Feature/WFS.js","OpenLayers/Handler.js","OpenLayers/Handler/Click.js","OpenLayers/Handler/Hover.js","OpenLayers/Handler/Point.js","OpenLayers/Handler/Path.js","OpenLayers/Handler/Polygon.js","OpenLayers/Handler/Feature.js","OpenLayers/Handler/Drag.js","OpenLayers/Handler/RegularPolygon.js","OpenLayers/Handler/Box.js","OpenLayers/Handler/MouseWheel.js","OpenLayers/Handler/Keyboard.js","OpenLayers/Control.js","OpenLayers/Control/Attribution.js","OpenLayers/Control/Button.js","OpenLayers/Control/ZoomBox.js","OpenLayers/Control/ZoomToMaxExtent.js","OpenLayers/Control/DragPan.js","OpenLayers/Control/Navigation.js","OpenLayers/Control/MouseDefaults.js","OpenLayers/Control/MousePosition.js","OpenLayers/Control/OverviewMap.js","OpenLayers/Control/KeyboardDefaults.js","OpenLayers/Control/PanZoom.js","OpenLayers/Control/PanZoomBar.js","OpenLayers/Control/ArgParser.js","OpenLayers/Control/Permalink.js","OpenLayers/Control/Scale.js","OpenLayers/Control/ScaleLine.js","OpenLayers/Control/Snapping.js","OpenLayers/Control/Split.js","OpenLayers/Control/LayerSwitcher.js","OpenLayers/Control/DrawFeature.js","OpenLayers/Control/DragFeature.js","OpenLayers/Control/ModifyFeature.js","OpenLayers/Control/Panel.js","OpenLayers/Control/SelectFeature.js","OpenLayers/Control/NavigationHistory.js","OpenLayers/Control/Measure.js","OpenLayers/Control/WMSGetFeatureInfo.js","OpenLayers/Control/WMTSGetFeatureInfo.js","OpenLayers/Control/Graticule.js","OpenLayers/Control/TransformFeature.js","OpenLayers/Control/SLDSelect.js","OpenLayers/Geometry.js","OpenLayers/Geometry/Rectangle.js","OpenLayers/Geometry/Collection.js","OpenLayers/Geometry/Point.js","OpenLayers/Geometry/MultiPoint.js","OpenLayers/Geometry/Curve.js","OpenLayers/Geometry/LineString.js","OpenLayers/Geometry/LinearRing.js","OpenLayers/Geometry/Polygon.js","OpenLayers/Geometry/MultiLineString.js","OpenLayers/Geometry/MultiPolygon.js","OpenLayers/Geometry/Surface.js","OpenLayers/Renderer.js","OpenLayers/Renderer/Elements.js","OpenLayers/Renderer/SVG.js","OpenLayers/Renderer/Canvas.js","OpenLayers/Renderer/VML.js","OpenLayers/Layer/Vector.js","OpenLayers/Layer/Vector/RootContainer.js","OpenLayers/Strategy.js","OpenLayers/Strategy/Filter.js","OpenLayers/Strategy/Fixed.js","OpenLayers/Strategy/Cluster.js","OpenLayers/Strategy/Paging.js","OpenLayers/Strategy/BBOX.js","OpenLayers/Strategy/Save.js","OpenLayers/Strategy/Refresh.js","OpenLayers/Filter.js","OpenLayers/Filter/FeatureId.js","OpenLayers/Filter/Logical.js","OpenLayers/Filter/Comparison.js","OpenLayers/Filter/Spatial.js","OpenLayers/Protocol.js","OpenLayers/Protocol/HTTP.js","OpenLayers/Protocol/SQL.js","OpenLayers/Protocol/SQL/Gears.js","OpenLayers/Protocol/WFS.js","OpenLayers/Protocol/WFS/v1.js","OpenLayers/Protocol/WFS/v1_0_0.js","OpenLayers/Protocol/WFS/v1_1_0.js","OpenLayers/Protocol/SOS.js","OpenLayers/Protocol/SOS/v1_0_0.js","OpenLayers/Layer/PointTrack.js","OpenLayers/Layer/GML.js","OpenLayers/Style.js","OpenLayers/Style2.js","OpenLayers/StyleMap.js","OpenLayers/Rule.js","OpenLayers/Format.js","OpenLayers/Format/XML.js","OpenLayers/Format/Context.js","OpenLayers/Format/ArcXML.js","OpenLayers/Format/ArcXML/Features.js","OpenLayers/Format/GML.js","OpenLayers/Format/GML/Base.js","OpenLayers/Format/GML/v2.js","OpenLayers/Format/GML/v3.js","OpenLayers/Format/Atom.js","OpenLayers/Format/KML.js","OpenLayers/Format/GeoRSS.js","OpenLayers/Format/WFS.js","OpenLayers/Format/WFSCapabilities.js","OpenLayers/Format/WFSCapabilities/v1.js","OpenLayers/Format/WFSCapabilities/v1_0_0.js","OpenLayers/Format/WFSCapabilities/v1_1_0.js","OpenLayers/Format/WFSDescribeFeatureType.js","OpenLayers/Format/WMSDescribeLayer.js","OpenLayers/Format/WMSDescribeLayer/v1_1.js","OpenLayers/Format/WKT.js","OpenLayers/Format/OSM.js","OpenLayers/Format/GPX.js","OpenLayers/Format/Filter.js","OpenLayers/Format/Filter/v1.js","OpenLayers/Format/Filter/v1_0_0.js","OpenLayers/Format/Filter/v1_1_0.js","OpenLayers/Format/SLD.js","OpenLayers/Format/SLD/v1.js","OpenLayers/Format/SLD/v1_0_0.js","OpenLayers/Format/OWSCommon/v1.js","OpenLayers/Format/OWSCommon/v1_0_0.js","OpenLayers/Format/OWSCommon/v1_1_0.js","OpenLayers/Format/CSWGetDomain.js","OpenLayers/Format/CSWGetDomain/v2_0_2.js","OpenLayers/Format/CSWGetRecords.js","OpenLayers/Format/CSWGetRecords/v2_0_2.js","OpenLayers/Format/WFST.js","OpenLayers/Format/WFST/v1.js","OpenLayers/Format/WFST/v1_0_0.js","OpenLayers/Format/WFST/v1_1_0.js","OpenLayers/Format/Text.js","OpenLayers/Format/JSON.js","OpenLayers/Format/GeoJSON.js","OpenLayers/Format/WMC.js","OpenLayers/Format/WMC/v1.js","OpenLayers/Format/WMC/v1_0_0.js","OpenLayers/Format/WMC/v1_1_0.js","OpenLayers/Format/WMSCapabilities.js","OpenLayers/Format/WMSCapabilities/v1.js","OpenLayers/Format/WMSCapabilities/v1_1.js","OpenLayers/Format/WMSCapabilities/v1_1_0.js","OpenLayers/Format/WMSCapabilities/v1_1_1.js","OpenLayers/Format/WMSCapabilities/v1_3.js","OpenLayers/Format/WMSCapabilities/v1_3_0.js","OpenLayers/Format/WMSGetFeatureInfo.js","OpenLayers/Format/SOSCapabilities.js","OpenLayers/Format/SOSCapabilities/v1_0_0.js","OpenLayers/Format/SOSGetObservation.js","OpenLayers/Format/SOSGetFeatureOfInterest.js","OpenLayers/Format/OWSContext.js","OpenLayers/Format/OWSContext/v0_3_1.js","OpenLayers/Format/WMTSCapabilities.js","OpenLayers/Format/WMTSCapabilities/v1_0_0.js","OpenLayers/Layer/WFS.js","OpenLayers/Control/GetFeature.js","OpenLayers/Control/MouseToolbar.js","OpenLayers/Control/NavToolbar.js","OpenLayers/Control/PanPanel.js","OpenLayers/Control/Pan.js","OpenLayers/Control/ZoomIn.js","OpenLayers/Control/ZoomOut.js","OpenLayers/Control/ZoomPanel.js","OpenLayers/Control/EditingToolbar.js","OpenLayers/Symbolizer.js","OpenLayers/Symbolizer/Point.js","OpenLayers/Symbolizer/Line.js","OpenLayers/Symbolizer/Polygon.js","OpenLayers/Symbolizer/Text.js","OpenLayers/Symbolizer/Raster.js","OpenLayers/Lang.js","OpenLayers/Lang/en.js");var agent=navigator.userAgent;var docWrite=(agent.match("MSIE")||agent.match("Safari"));if(docWrite){var allScriptTags=new Array(jsfiles.length);} -var host=OpenLayers._getScriptLocation()+"lib/";for(var i=0,len=jsfiles.length;i<len;i++){if(docWrite){allScriptTags[i]="<script src='"+host+jsfiles[i]+"'></script>";}else{var s=document.createElement("script");s.src=host+jsfiles[i];var h=document.getElementsByTagName("head").length?document.getElementsByTagName("head")[0]:document.body;h.appendChild(s);}} -if(docWrite){document.write(allScriptTags.join(""));}}})();OpenLayers.VERSION_NUMBER="OpenLayers 2.10 -- $Revision: 10721 $";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;}};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.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 elapsed=Date.parse(str);if(!isNaN(elapsed)){date=new Date(elapsed);}else{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}))?)))?$/);var date;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])||0;var offset=-1000*(60*(hoursOffset*60)+minutesOffset*60);date=new Date(date.getTime()+offset);}}}else{date=new Date("invalid");}} -return date;}};OpenLayers.Class=function(){var Class=function(){if(arguments&&arguments[0]!=OpenLayers.Class.isPrototype){this.initialize.apply(this,arguments);}};var extended={};var parent,initialize,Type;for(var i=0,len=arguments.length;i<len;++i){Type=arguments[i];if(typeof Type=="function"){if(i==0&&len>1){initialize=Type.prototype.initialize;Type.prototype.initialize=function(){};extended=new Type();if(initialize===undefined){delete Type.prototype.initialize;}else{Type.prototype.initialize=initialize;}} -parent=Type.prototype;}else{parent=Type;} -OpenLayers.Util.extend(extended,parent);} -Class.prototype=extended;return Class;};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(){var superClass=arguments[0];var proto=new superClass(OpenLayers.Class.isPrototype);for(var i=1,len=arguments.length;i<len;i++){if(typeof arguments[i]=="function"){var mixin=arguments[i];arguments[i]=new mixin(OpenLayers.Class.isPrototype);} -OpenLayers.Util.extend(proto,arguments[i]);} -return proto;};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);};if(typeof window.$==="undefined"){window.$=OpenLayers.Util.getElement;} -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.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&&urls instanceof Array&&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.getNodes=function(p,tagName){var nodes=OpenLayers.Util.Try(function(){return OpenLayers.Util._getNodes(p.documentElement.childNodes,tagName);},function(){return OpenLayers.Util._getNodes(p.childNodes,tagName);});return nodes;};OpenLayers.Util._getNodes=function(nodes,tagName){var retArray=[];for(var i=0,len=nodes.length;i<len;i++){if(nodes[i].nodeName==tagName){retArray.push(nodes[i]);}} -return retArray;};OpenLayers.Util.getTagText=function(parent,item,index){var result=OpenLayers.Util.getNodes(parent,item);if(result&&(result.length>0)) -{if(!index){index=0;} -if(result[index].childNodes.length>1){return result.childNodes[1].nodeValue;} -else if(result[index].childNodes.length==1){return result[index].firstChild.nodeValue;}}else{return"";}};OpenLayers.Util.getXmlNodeValue=function(node){var val=null;OpenLayers.Util.Try(function(){val=node.text;if(!val){val=node.textContent;} -if(!val){val=node.firstChild.nodeValue;}},function(){val=node.textContent;});return val;};OpenLayers.Util.mouseLeft=function(evt,div){var target=(evt.relatedTarget)?evt.relatedTarget:evt.toElement;while(target!=div&&target!=null){target=target.parentNode;} -return(target!=div);};OpenLayers.Util.DEFAULT_PRECISION=14;OpenLayers.Util.toFloat=function(number,precision){if(precision==null){precision=OpenLayers.Util.DEFAULT_PRECISION;} -var number;if(precision==0){number=parseFloat(number);}else{number=parseFloat(parseFloat(number).toPrecision(precision));} -return number;};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||window.location.href;var paramsString="";if(OpenLayers.String.contains(url,'?')){var start=url.indexOf('?')+1;var end=OpenLayers.String.contains(url,"#")?url.indexOf('#'):url.length;paramsString=url.substring(start,end);} -var parameters={};var pairs=paramsString.split(/[&;]/);for(var i=0,len=pairs.length;i<len;++i){var keyValue=pairs[i].split('=');if(keyValue[0]){var key=decodeURIComponent(keyValue[0]);var value=keyValue[1]||'';value=decodeURIComponent(value.replace(/\+/g," ")).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 valueT=0,valueL=0;var element=forElement;var child=forElement;while(element){if(element==document.body){if(OpenLayers.Element.getStyle(child,'position')=='absolute'){break;}} -valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;child=element;try{element=element.offsetParent;}catch(e){OpenLayers.Console.error(OpenLayers.i18n("pagePositionFailed",{'elemId':element.id}));break;}} -element=forElement;while(element){valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0;element=element.parentNode;} -return[valueL,valueT];};OpenLayers.Util.isEquivalentUrl=function(url1,url2,options){options=options||{};OpenLayers.Util.applyDefaults(options,{ignoreCase:true,ignorePort80:true,ignoreHash:true});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.Util.getBrowserName=function(){var browserName="";var ua=navigator.userAgent.toLowerCase();if(ua.indexOf("opera")!=-1){browserName="opera";}else if(ua.indexOf("msie")!=-1){browserName="msie";}else if(ua.indexOf("safari")!=-1){browserName="safari";}else if(ua.indexOf("mozilla")!=-1){if(ua.indexOf("firefox")!=-1){browserName="firefox";}else{browserName="mozilla";}} -return browserName;};OpenLayers.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';} -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(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.Rico=new Object();OpenLayers.Rico.Corner={round:function(e,options){e=OpenLayers.Util.getElement(e);this._setOptions(options);var color=this.options.color;if(this.options.color=="fromElement"){color=this._background(e);} -var bgColor=this.options.bgColor;if(this.options.bgColor=="fromParent"){bgColor=this._background(e.offsetParent);} -this._roundCornersImpl(e,color,bgColor);},changeColor:function(theDiv,newColor){theDiv.style.backgroundColor=newColor;var spanElements=theDiv.parentNode.getElementsByTagName("span");for(var currIdx=0;currIdx<spanElements.length;currIdx++){spanElements[currIdx].style.backgroundColor=newColor;}},changeOpacity:function(theDiv,newOpacity){var mozillaOpacity=newOpacity;var ieOpacity='alpha(opacity='+newOpacity*100+')';theDiv.style.opacity=mozillaOpacity;theDiv.style.filter=ieOpacity;var spanElements=theDiv.parentNode.getElementsByTagName("span");for(var currIdx=0;currIdx<spanElements.length;currIdx++){spanElements[currIdx].style.opacity=mozillaOpacity;spanElements[currIdx].style.filter=ieOpacity;}},reRound:function(theDiv,options){var topRico=theDiv.parentNode.childNodes[0];var bottomRico=theDiv.parentNode.childNodes[2];theDiv.parentNode.removeChild(topRico);theDiv.parentNode.removeChild(bottomRico);this.round(theDiv.parentNode,options);},_roundCornersImpl:function(e,color,bgColor){if(this.options.border){this._renderBorder(e,bgColor);} -if(this._isTopRounded()){this._roundTopCorners(e,color,bgColor);} -if(this._isBottomRounded()){this._roundBottomCorners(e,color,bgColor);}},_renderBorder:function(el,bgColor){var borderValue="1px solid "+this._borderColor(bgColor);var borderL="border-left: "+borderValue;var borderR="border-right: "+borderValue;var style="style='"+borderL+";"+borderR+"'";el.innerHTML="<div "+style+">"+el.innerHTML+"</div>";},_roundTopCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=0;i<this.options.numSlices;i++){corner.appendChild(this._createCornerSlice(color,bgColor,i,"top"));} -el.style.paddingTop=0;el.insertBefore(corner,el.firstChild);},_roundBottomCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=(this.options.numSlices-1);i>=0;i--){corner.appendChild(this._createCornerSlice(color,bgColor,i,"bottom"));} -el.style.paddingBottom=0;el.appendChild(corner);},_createCorner:function(bgColor){var corner=document.createElement("div");corner.style.backgroundColor=(this._isTransparent()?"transparent":bgColor);return corner;},_createCornerSlice:function(color,bgColor,n,position){var slice=document.createElement("span");var inStyle=slice.style;inStyle.backgroundColor=color;inStyle.display="block";inStyle.height="1px";inStyle.overflow="hidden";inStyle.fontSize="1px";var borderColor=this._borderColor(color,bgColor);if(this.options.border&&n==0){inStyle.borderTopStyle="solid";inStyle.borderTopWidth="1px";inStyle.borderLeftWidth="0px";inStyle.borderRightWidth="0px";inStyle.borderBottomWidth="0px";inStyle.height="0px";inStyle.borderColor=borderColor;} -else if(borderColor){inStyle.borderColor=borderColor;inStyle.borderStyle="solid";inStyle.borderWidth="0px 1px";} -if(!this.options.compact&&(n==(this.options.numSlices-1))){inStyle.height="2px";} -this._setMargin(slice,n,position);this._setBorder(slice,n,position);return slice;},_setOptions:function(options){this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:true,border:false,compact:false};OpenLayers.Util.extend(this.options,options||{});this.options.numSlices=this.options.compact?2:4;if(this._isTransparent()){this.options.blend=false;}},_whichSideTop:function(){if(this._hasString(this.options.corners,"all","top")){return"";} -if(this.options.corners.indexOf("tl")>=0&&this.options.corners.indexOf("tr")>=0){return"";} -if(this.options.corners.indexOf("tl")>=0){return"left";}else if(this.options.corners.indexOf("tr")>=0){return"right";} -return"";},_whichSideBottom:function(){if(this._hasString(this.options.corners,"all","bottom")){return"";} -if(this.options.corners.indexOf("bl")>=0&&this.options.corners.indexOf("br")>=0){return"";} -if(this.options.corners.indexOf("bl")>=0){return"left";}else if(this.options.corners.indexOf("br")>=0){return"right";} -return"";},_borderColor:function(color,bgColor){if(color=="transparent"){return bgColor;}else if(this.options.border){return this.options.border;}else if(this.options.blend){return this._blend(bgColor,color);}else{return"";}},_setMargin:function(el,n,corners){var marginSize=this._marginSize(n);var whichSide=corners=="top"?this._whichSideTop():this._whichSideBottom();if(whichSide=="left"){el.style.marginLeft=marginSize+"px";el.style.marginRight="0px";} -else if(whichSide=="right"){el.style.marginRight=marginSize+"px";el.style.marginLeft="0px";} -else{el.style.marginLeft=marginSize+"px";el.style.marginRight=marginSize+"px";}},_setBorder:function(el,n,corners){var borderSize=this._borderSize(n);var whichSide=corners=="top"?this._whichSideTop():this._whichSideBottom();if(whichSide=="left"){el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth="0px";} -else if(whichSide=="right"){el.style.borderRightWidth=borderSize+"px";el.style.borderLeftWidth="0px";} -else{el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth=borderSize+"px";} -if(this.options.border!=false){el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth=borderSize+"px";}},_marginSize:function(n){if(this._isTransparent()){return 0;} -var marginSizes=[5,3,2,1];var blendedMarginSizes=[3,2,1,0];var compactMarginSizes=[2,1];var smBlendedMarginSizes=[1,0];if(this.options.compact&&this.options.blend){return smBlendedMarginSizes[n];}else if(this.options.compact){return compactMarginSizes[n];}else if(this.options.blend){return blendedMarginSizes[n];}else{return marginSizes[n];}},_borderSize:function(n){var transparentBorderSizes=[5,3,2,1];var blendedBorderSizes=[2,1,1,1];var compactBorderSizes=[1,0];var actualBorderSizes=[0,2,0,0];if(this.options.compact&&(this.options.blend||this._isTransparent())){return 1;}else if(this.options.compact){return compactBorderSizes[n];}else if(this.options.blend){return blendedBorderSizes[n];}else if(this.options.border){return actualBorderSizes[n];}else if(this._isTransparent()){return transparentBorderSizes[n];} -return 0;},_hasString:function(str){for(var i=1;i<arguments.length;i++)if(str.indexOf(arguments[i])>=0){return true;}return false;},_blend:function(c1,c2){var cc1=OpenLayers.Rico.Color.createFromHex(c1);cc1.blend(OpenLayers.Rico.Color.createFromHex(c2));return cc1;},_background:function(el){try{return OpenLayers.Rico.Color.createColorFromBackground(el).asHex();}catch(err){return"#ffffff";}},_isTransparent:function(){return this.options.color=="transparent";},_isTopRounded:function(){return this._hasString(this.options.corners,"all","top","tl","tr");},_isBottomRounded:function(){return this._hasString(this.options.corners,"all","bottom","bl","br");},_hasSingleTextChild:function(el){return el.childNodes.length==1&&el.childNodes[0].nodeType==3;}};(function(){if(window.google&&google.gears){return;} -var factory=null;if(typeof GearsFactory!='undefined'){factory=new GearsFactory();}else{try{factory=new ActiveXObject('Gears.Factory');if(factory.getBuildInfo().indexOf('ie_mobile')!=-1){factory.privateSetGlobalObject(this);}}catch(e){if((typeof navigator.mimeTypes!='undefined')&&navigator.mimeTypes["application/x-googlegears"]){factory=document.createElement("object");factory.style.display="none";factory.width=0;factory.height=0;factory.type="application/x-googlegears";document.documentElement.appendChild(factory);}}} -if(!factory){return;} -if(!window.google){google={};} -if(!google.gears){google.gears={factory:factory};}})();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(){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(){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.Size=OpenLayers.Class({w:0.0,h:0.0,initialize:function(w,h){this.w=parseFloat(w);this.h=parseFloat(h);},toString:function(){return("w="+this.w+",h="+this.h);},clone:function(){return new OpenLayers.Size(this.w,this.h);},equals:function(sz){var equals=false;if(sz!=null){equals=((this.w==sz.w&&this.h==sz.h)||(isNaN(this.w)&&isNaN(this.h)&&isNaN(sz.w)&&isNaN(sz.h)));} -return equals;},CLASS_NAME:"OpenLayers.Size"});OpenLayers.Console={log:function(){},debug:function(){},info:function(){},warn:function(){},error:function(){},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.Icon=OpenLayers.Class({url:null,size:null,offset:null,calculateOffset:null,imageDiv:null,px:null,initialize:function(url,size,offset,calculateOffset){this.url=url;this.size=(size)?size:new OpenLayers.Size(20,20);this.offset=offset?offset:new OpenLayers.Pixel(-(this.size.w/2),-(this.size.h/2));this.calculateOffset=calculateOffset;var id=OpenLayers.Util.createUniqueID("OL_Icon_");this.imageDiv=OpenLayers.Util.createAlphaImageDiv(id);},destroy:function(){this.erase();OpenLayers.Event.stopObservingElement(this.imageDiv.firstChild);this.imageDiv.innerHTML="";this.imageDiv=null;},clone:function(){return new OpenLayers.Icon(this.url,this.size,this.offset,this.calculateOffset);},setSize:function(size){if(size!=null){this.size=size;} -this.draw();},setUrl:function(url){if(url!=null){this.url=url;} -this.draw();},draw:function(px){OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,null,this.size,this.url,"absolute");this.moveTo(px);return this.imageDiv;},erase:function(){if(this.imageDiv!=null&&this.imageDiv.parentNode!=null){OpenLayers.Element.remove(this.imageDiv);}},setOpacity:function(opacity){OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,null,null,null,null,null,null,opacity);},moveTo:function(px){if(px!=null){this.px=px;} -if(this.imageDiv!=null){if(this.px==null){this.display(false);}else{if(this.calculateOffset){this.offset=this.calculateOffset(this.size);} -var offsetPx=this.px.offset(this.offset);OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,offsetPx);}}},display:function(display){this.imageDiv.style.display=(display)?"":"none";},isDrawn:function(){var isDrawn=(this.imageDiv&&this.imageDiv.parentNode&&(this.imageDiv.parentNode.nodeType!=11));return isDrawn;},CLASS_NAME:"OpenLayers.Icon"});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.Util.getBrowserName()=='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(){OpenLayers.Element.show(this.div);if(this.panMapIfOutOfView){this.panIntoView();}},hide:function(){OpenLayers.Element.hide(this.div);},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.Util.getBrowserName()=="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,"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);this.events.on({"mousedown":this.onmousedown,"mousemove":this.onmousemove,"mouseup":this.onmouseup,"click":this.onclick,"mouseout":this.onmouseout,"dblclick":this.ondblclick,scope:this});},onmousedown:function(evt){this.mousedown=true;OpenLayers.Event.stop(evt,true);},onmousemove:function(evt){if(this.mousedown){OpenLayers.Event.stop(evt,true);}},onmouseup:function(evt){if(this.mousedown){this.mousedown=false;OpenLayers.Event.stop(evt,true);}},onclick:function(evt){OpenLayers.Event.stop(evt,true);},onmouseout:function(evt){this.mousedown=false;},ondblclick:function(evt){OpenLayers.Event.stop(evt,true);},CLASS_NAME:"OpenLayers.Popup"});OpenLayers.Popup.WIDTH=200;OpenLayers.Popup.HEIGHT=200;OpenLayers.Popup.COLOR="white";OpenLayers.Popup.OPACITY=1;OpenLayers.Popup.BORDER="0px";OpenLayers.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,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.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);},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){xOffset=isNaN(style.labelXOffset)?0:style.labelXOffset;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(!(features instanceof Array)){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.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.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.Rico.Color=OpenLayers.Class({initialize:function(red,green,blue){this.rgb={r:red,g:green,b:blue};},setRed:function(r){this.rgb.r=r;},setGreen:function(g){this.rgb.g=g;},setBlue:function(b){this.rgb.b=b;},setHue:function(h){var hsb=this.asHSB();hsb.h=h;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,hsb.b);},setSaturation:function(s){var hsb=this.asHSB();hsb.s=s;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,hsb.b);},setBrightness:function(b){var hsb=this.asHSB();hsb.b=b;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,hsb.b);},darken:function(percent){var hsb=this.asHSB();this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,Math.max(hsb.b-percent,0));},brighten:function(percent){var hsb=this.asHSB();this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,Math.min(hsb.b+percent,1));},blend:function(other){this.rgb.r=Math.floor((this.rgb.r+other.rgb.r)/2);this.rgb.g=Math.floor((this.rgb.g+other.rgb.g)/2);this.rgb.b=Math.floor((this.rgb.b+other.rgb.b)/2);},isBright:function(){var hsb=this.asHSB();return this.asHSB().b>0.5;},isDark:function(){return!this.isBright();},asRGB:function(){return"rgb("+this.rgb.r+","+this.rgb.g+","+this.rgb.b+")";},asHex:function(){return"#"+this.rgb.r.toColorPart()+this.rgb.g.toColorPart()+this.rgb.b.toColorPart();},asHSB:function(){return OpenLayers.Rico.Color.RGBtoHSB(this.rgb.r,this.rgb.g,this.rgb.b);},toString:function(){return this.asHex();}});OpenLayers.Rico.Color.createFromHex=function(hexCode){if(hexCode.length==4){var shortHexCode=hexCode;var hexCode='#';for(var i=1;i<4;i++){hexCode+=(shortHexCode.charAt(i)+ -shortHexCode.charAt(i));}} -if(hexCode.indexOf('#')==0){hexCode=hexCode.substring(1);} -var red=hexCode.substring(0,2);var green=hexCode.substring(2,4);var blue=hexCode.substring(4,6);return new OpenLayers.Rico.Color(parseInt(red,16),parseInt(green,16),parseInt(blue,16));};OpenLayers.Rico.Color.createColorFromBackground=function(elem){var actualColor=RicoUtil.getElementsComputedStyle(OpenLayers.Util.getElement(elem),"backgroundColor","background-color");if(actualColor=="transparent"&&elem.parentNode){return OpenLayers.Rico.Color.createColorFromBackground(elem.parentNode);} -if(actualColor==null){return new OpenLayers.Rico.Color(255,255,255);} -if(actualColor.indexOf("rgb(")==0){var colors=actualColor.substring(4,actualColor.length-1);var colorArray=colors.split(",");return new OpenLayers.Rico.Color(parseInt(colorArray[0]),parseInt(colorArray[1]),parseInt(colorArray[2]));} -else if(actualColor.indexOf("#")==0){return OpenLayers.Rico.Color.createFromHex(actualColor);} -else{return new OpenLayers.Rico.Color(255,255,255);}};OpenLayers.Rico.Color.HSBtoRGB=function(hue,saturation,brightness){var red=0;var green=0;var blue=0;if(saturation==0){red=parseInt(brightness*255.0+0.5);green=red;blue=red;} -else{var h=(hue-Math.floor(hue))*6.0;var f=h-Math.floor(h);var p=brightness*(1.0-saturation);var q=brightness*(1.0-saturation*f);var t=brightness*(1.0-(saturation*(1.0-f)));switch(parseInt(h)){case 0:red=(brightness*255.0+0.5);green=(t*255.0+0.5);blue=(p*255.0+0.5);break;case 1:red=(q*255.0+0.5);green=(brightness*255.0+0.5);blue=(p*255.0+0.5);break;case 2:red=(p*255.0+0.5);green=(brightness*255.0+0.5);blue=(t*255.0+0.5);break;case 3:red=(p*255.0+0.5);green=(q*255.0+0.5);blue=(brightness*255.0+0.5);break;case 4:red=(t*255.0+0.5);green=(p*255.0+0.5);blue=(brightness*255.0+0.5);break;case 5:red=(brightness*255.0+0.5);green=(p*255.0+0.5);blue=(q*255.0+0.5);break;}} -return{r:parseInt(red),g:parseInt(green),b:parseInt(blue)};};OpenLayers.Rico.Color.RGBtoHSB=function(r,g,b){var hue;var saturation;var brightness;var cmax=(r>g)?r:g;if(b>cmax){cmax=b;} -var cmin=(r<g)?r:g;if(b<cmin){cmin=b;} -brightness=cmax/255.0;if(cmax!=0){saturation=(cmax-cmin)/cmax;}else{saturation=0;} -if(saturation==0){hue=0;}else{var redc=(cmax-r)/(cmax-cmin);var greenc=(cmax-g)/(cmax-cmin);var bluec=(cmax-b)/(cmax-cmin);if(r==cmax){hue=bluec-greenc;}else if(g==cmax){hue=2.0+redc-bluec;}else{hue=4.0+greenc-redc;} -hue=hue/6.0;if(hue<0){hue=hue+1.0;}} -return{h:hue,s:saturation,b:brightness};};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("left-bottom=("+this.left+","+this.bottom+")" -+" right-top=("+this.right+","+this.top+")");},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){var bounds=str.split(",");return OpenLayers.Bounds.fromArray(bounds);};OpenLayers.Bounds.fromArray=function(bbox){return new OpenLayers.Bounds(parseFloat(bbox[0]),parseFloat(bbox[1]),parseFloat(bbox[2]),parseFloat(bbox[3]));};OpenLayers.Bounds.fromSize=function(size){return new OpenLayers.Bounds(0,size.h,size.w,0);};OpenLayers.Bounds.oppositeQuadrant=function(quadrant){var opp="";opp+=(quadrant.charAt(0)=='t')?'b':'t';opp+=(quadrant.charAt(1)=='l')?'r':'l';return opp;};OpenLayers.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.Pixel=OpenLayers.Class({x:0.0,y:0.0,initialize:function(x,y){this.x=parseFloat(x);this.y=parseFloat(y);},toString:function(){return("x="+this.x+",y="+this.y);},clone:function(){return new OpenLayers.Pixel(this.x,this.y);},equals:function(px){var equals=false;if(px!=null){equals=((this.x==px.x&&this.y==px.y)||(isNaN(this.x)&&isNaN(this.y)&&isNaN(px.x)&&isNaN(px.y)));} -return equals;},add:function(x,y){if((x==null)||(y==null)){var msg=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.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;}},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.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.Util.getBrowserName()=="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[key];if(!message){message=key;} -if(context){message=OpenLayers.String.format(message,context);} -return message;}};OpenLayers.i18n=OpenLayers.Lang.translate;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):this.anchor.size.h;var left=(this.relativePosition.charAt(1)=='l');newPx.x+=(left)?-(size.w+this.anchor.size.w):this.anchor.size.w;return newPx;},CLASS_NAME:"OpenLayers.Popup.Anchored"});OpenLayers.Protocol.SOS=function(options){options=OpenLayers.Util.applyDefaults(options,OpenLayers.Protocol.SOS.DEFAULTS);var cls=OpenLayers.Protocol.SOS["v"+options.version.replace(/\./g,"_")];if(!cls){throw"Unsupported SOS version: "+options.version;} -return new cls(options);};OpenLayers.Protocol.SOS.DEFAULTS={"version":"1.0.0"};OpenLayers.Protocol.SQL=OpenLayers.Class(OpenLayers.Protocol,{databaseName:'ol',tableName:"ol_vector_features",postReadFiltering:true,initialize:function(options){OpenLayers.Protocol.prototype.initialize.apply(this,[options]);},destroy:function(){OpenLayers.Protocol.prototype.destroy.apply(this);},supported:function(){return false;},evaluateFilter:function(feature,filter){return filter&&this.postReadFiltering?filter.evaluate(feature):true;},CLASS_NAME:"OpenLayers.Protocol.SQL"});OpenLayers.Protocol.WFS=function(options){options=OpenLayers.Util.applyDefaults(options,OpenLayers.Protocol.WFS.DEFAULTS);var cls=OpenLayers.Protocol.WFS["v"+options.version.replace(/\./g,"_")];if(!cls){throw"Unsupported WFS version: "+options.version;} -return new cls(options);};OpenLayers.Protocol.WFS.fromWMSLayer=function(layer,options){var typeName,featurePrefix;var param=layer.params["LAYERS"];var parts=(param instanceof Array?param[0]:param).split(":");if(parts.length>1){featurePrefix=parts[0];} -typeName=parts.pop();var protocolOptions={url:layer.url,featureType:typeName,featurePrefix:featurePrefix,srsName:layer.projection&&layer.projection.getCode()||layer.map&&layer.map.getProjectionObject().getCode(),version:"1.1.0"};return new OpenLayers.Protocol.WFS(OpenLayers.Util.applyDefaults(options,protocolOptions));};OpenLayers.Protocol.WFS.DEFAULTS={"version":"1.0.0"};OpenLayers.Renderer.Canvas=OpenLayers.Class(OpenLayers.Renderer,{canvas:null,features:null,initialize:function(containerID){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={};},eraseGeometry:function(geometry,featureId){this.eraseFeatures(this.features[featureId][0]);},supported:function(){var canvas=document.createElement("canvas");return!!canvas.getContext;},setExtent:function(extent){this.extent=extent.clone();this.resolution=null;this.redraw();},setSize:function(size){this.size=size.clone();this.root.style.width=size.w+"px";this.root.style.height=size.h+"px";this.root.width=size.w;this.root.height=size.h;this.resolution=null;},drawFeature:function(feature,style){style=style||feature.style;style=this.applyDefaultSymbolizer(style);this.features[feature.id]=[feature,style];this.redraw();},drawGeometry:function(geometry,style){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);} -return;} -switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":this.drawPoint(geometry,style);break;case"OpenLayers.Geometry.LineString":this.drawLineString(geometry,style);break;case"OpenLayers.Geometry.LinearRing":this.drawLinearRing(geometry,style);break;case"OpenLayers.Geometry.Polygon":this.drawPolygon(geometry,style);break;default:break;}},drawExternalGraphic:function(pt,style){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 context={img:img,x:(pt[0]+xOffset),y:(pt[1]+yOffset),width:width,height:height,opacity:style.graphicOpacity||style.fillOpacity,canvas:this.canvas};img.onload=OpenLayers.Function.bind(function(){this.canvas.globalAlpha=this.opacity;this.canvas.drawImage(this.img,this.x,this.y,this.width,this.height);},context);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;}},drawPoint:function(geometry,style){if(style.graphic!==false){var pt=this.getLocalXY(geometry);if(style.externalGraphic){this.drawExternalGraphic(pt,style);}else{if(style.fill!==false){this.setCanvasStyle("fill",style);this.canvas.beginPath();this.canvas.arc(pt[0],pt[1],style.pointRadius,0,Math.PI*2,true);this.canvas.fill();} -if(style.stroke!==false){this.setCanvasStyle("stroke",style);this.canvas.beginPath();this.canvas.arc(pt[0],pt[1],style.pointRadius,0,Math.PI*2,true);this.canvas.stroke();this.setCanvasStyle("reset");}}}},drawLineString:function(geometry,style){if(style.stroke!==false){this.setCanvasStyle("stroke",style);this.canvas.beginPath();var start=this.getLocalXY(geometry.components[0]);this.canvas.moveTo(start[0],start[1]);for(var i=1;i<geometry.components.length;i++){var pt=this.getLocalXY(geometry.components[i]);this.canvas.lineTo(pt[0],pt[1]);} -this.canvas.stroke();} -this.setCanvasStyle("reset");},drawLinearRing:function(geometry,style){if(style.fill!==false){this.setCanvasStyle("fill",style);this.canvas.beginPath();var start=this.getLocalXY(geometry.components[0]);this.canvas.moveTo(start[0],start[1]);for(var i=1;i<geometry.components.length-1;i++){var pt=this.getLocalXY(geometry.components[i]);this.canvas.lineTo(pt[0],pt[1]);} -this.canvas.fill();} -if(style.stroke!==false){this.setCanvasStyle("stroke",style);this.canvas.beginPath();var start=this.getLocalXY(geometry.components[0]);this.canvas.moveTo(start[0],start[1]);for(var i=1;i<geometry.components.length;i++){var pt=this.getLocalXY(geometry.components[i]);this.canvas.lineTo(pt[0],pt[1]);} -this.canvas.stroke();} -this.setCanvasStyle("reset");},drawPolygon:function(geometry,style){this.drawLinearRing(geometry.components[0],style);for(var i=1;i<geometry.components.length;i++){this.drawLinearRing(geometry.components[i],{fillOpacity:0,strokeWidth:0,strokeOpacity:0,strokeColor:'#000000',fillColor:'#000000'});}},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.fontWeight+" "+style.fontSize+" "+style.fontFamily;if(this.canvas.fillText){var labelAlign=OpenLayers.Renderer.Canvas.LABEL_ALIGN[style.labelAlign[0]]||"center";this.canvas.font=fontStyle;this.canvas.textAlign=labelAlign;this.canvas.fillText(style.label,pt[0],pt[1]);}else if(this.canvas.mozDrawText){this.canvas.mozTextStyle=fontStyle;var len=this.canvas.mozMeasureText(style.label);switch(style.labelAlign[0]){case"l":break;case"r":pt[0]-=len;break;case"c":default:pt[0]-=len/2;} -this.canvas.translate(pt[0],pt[1]);this.canvas.mozDrawText(style.label);this.canvas.translate(-1*pt[0],-1*pt[1]);} -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(){this.canvas.clearRect(0,0,this.root.width,this.root.height);this.features={};},getFeatureIdFromEvent:function(evt){var loc=this.map.getLonLatFromPixel(evt.xy);var resolution=this.getResolution();var bounds=new OpenLayers.Bounds(loc.lon-resolution*5,loc.lat-resolution*5,loc.lon+resolution*5,loc.lat+resolution*5);var geom=bounds.toGeometry();for(var feat in this.features){if(!this.features.hasOwnProperty(feat)){continue;} -if(this.features[feat][0].geometry.intersects(geom)){return feat;}} -return null;},eraseFeatures:function(features){if(!(features instanceof Array)){features=[features];} -for(var i=0;i<features.length;++i){delete this.features[features[i].id];} -this.redraw();},redraw:function(){if(!this.locked){this.canvas.clearRect(0,0,this.root.width,this.root.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];if(!feature.geometry){continue;} -this.drawGeometry(feature.geometry,style);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"};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.order=[];this.indices={};this.maxZIndex=0;},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;if(style.display!="none"){if(style.backgroundGraphic){this.redrawBackgroundNode(geometry.id,geometry,style,featureId);} -rendered=this.redrawNode(geometry.id,geometry,style,featureId);} -if(rendered==false){var node=document.getElementById(geometry.id);if(node){if(node._style.backgroundGraphic){node.parentNode.removeChild(document.getElementById(geometry.id+this.BACKGROUND_ID_SUFFIX));} -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.Strategy.Cluster=OpenLayers.Class(OpenLayers.Strategy,{distance:20,threshold:null,features:null,clusters:null,clustering:false,resolution:null,initialize:function(options){OpenLayers.Strategy.prototype.initialize.apply(this,[options]);},activate:function(){var activated=OpenLayers.Strategy.prototype.activate.call(this);if(activated){this.layer.events.on({"beforefeaturesadded":this.cacheFeatures,"moveend":this.cluster,scope:this});} -return activated;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){this.clearCache();this.layer.events.un({"beforefeaturesadded":this.cacheFeatures,"moveend":this.cluster,scope:this});} -return deactivated;},cacheFeatures:function(event){var propagate=true;if(!this.clustering){this.clearCache();this.features=event.features;this.cluster();propagate=false;} -return propagate;},clearCache:function(){this.features=null;},cluster:function(event){if((!event||event.zoomChanged)&&this.features){var resolution=this.layer.map.getResolution();if(resolution!=this.resolution||!this.clustersExist()){this.resolution=resolution;var clusters=[];var feature,clustered,cluster;for(var i=0;i<this.features.length;++i){feature=this.features[i];if(feature.geometry){clustered=false;for(var j=clusters.length-1;j>=0;--j){cluster=clusters[j];if(this.shouldCluster(cluster,feature)){this.addToCluster(cluster,feature);clustered=true;break;}} -if(!clustered){clusters.push(this.createCluster(this.features[i]));}}} -this.layer.removeAllFeatures();if(clusters.length>0){if(this.threshold>1){var clone=clusters.slice();clusters=[];var candidate;for(var i=0,len=clone.length;i<len;++i){candidate=clone[i];if(candidate.attributes.count<this.threshold){Array.prototype.push.apply(clusters,candidate.cluster);}else{clusters.push(candidate);}}} -this.clustering=true;this.layer.addFeatures(clusters);this.clustering=false;} -this.clusters=clusters;}}},clustersExist:function(){var exist=false;if(this.clusters&&this.clusters.length>0&&this.clusters.length==this.layer.features.length){exist=true;for(var i=0;i<this.clusters.length;++i){if(this.clusters[i]!=this.layer.features[i]){exist=false;break;}}} -return exist;},shouldCluster:function(cluster,feature){var cc=cluster.geometry.getBounds().getCenterLonLat();var fc=feature.geometry.getBounds().getCenterLonLat();var distance=(Math.sqrt(Math.pow((cc.lon-fc.lon),2)+Math.pow((cc.lat-fc.lat),2))/this.resolution);return(distance<=this.distance);},addToCluster:function(cluster,feature){cluster.cluster.push(feature);cluster.attributes.count+=1;},createCluster:function(feature){var center=feature.geometry.getBounds().getCenterLonLat();var cluster=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(center.lon,center.lat),{count:1});cluster.cluster=[feature];return cluster;},CLASS_NAME:"OpenLayers.Strategy.Cluster"});OpenLayers.Strategy.Fixed=OpenLayers.Class(OpenLayers.Strategy,{preload:false,initialize:function(options){OpenLayers.Strategy.prototype.initialize.apply(this,[options]);},destroy:function(){OpenLayers.Strategy.prototype.destroy.apply(this,arguments);},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){this.layer.events.triggerEvent("loadstart");this.layer.protocol.read(OpenLayers.Util.applyDefaults({callback:this.merge,filter:this.layer.filter,scope:this},options));this.layer.events.un({"visibilitychanged":this.load,scope:this});},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.layer.events.triggerEvent("loadend");},CLASS_NAME:"OpenLayers.Strategy.Fixed"});OpenLayers.Strategy.Paging=OpenLayers.Class(OpenLayers.Strategy,{features:null,length:10,num:null,paging:false,initialize:function(options){OpenLayers.Strategy.prototype.initialize.apply(this,[options]);},activate:function(){var activated=OpenLayers.Strategy.prototype.activate.call(this);if(activated){this.layer.events.on({"beforefeaturesadded":this.cacheFeatures,scope:this});} -return activated;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){this.clearCache();this.layer.events.un({"beforefeaturesadded":this.cacheFeatures,scope:this});} -return deactivated;},cacheFeatures:function(event){if(!this.paging){this.clearCache();this.features=event.features;this.pageNext(event);}},clearCache:function(){if(this.features){for(var i=0;i<this.features.length;++i){this.features[i].destroy();}} -this.features=null;this.num=null;},pageCount:function(){var numFeatures=this.features?this.features.length:0;return Math.ceil(numFeatures/this.length);},pageNum:function(){return this.num;},pageLength:function(newLength){if(newLength&&newLength>0){this.length=newLength;} -return this.length;},pageNext:function(event){var changed=false;if(this.features){if(this.num===null){this.num=-1;} -var start=(this.num+1)*this.length;changed=this.page(start,event);} -return changed;},pagePrevious:function(){var changed=false;if(this.features){if(this.num===null){this.num=this.pageCount();} -var start=(this.num-1)*this.length;changed=this.page(start);} -return changed;},page:function(start,event){var changed=false;if(this.features){if(start>=0&&start<this.features.length){var num=Math.floor(start/this.length);if(num!=this.num){this.paging=true;var features=this.features.slice(start,start+this.length);this.layer.removeFeatures(this.layer.features);this.num=num;if(event&&event.features){event.features=features;}else{this.layer.addFeatures(features);} -this.paging=false;changed=true;}}} -return changed;},CLASS_NAME:"OpenLayers.Strategy.Paging"});OpenLayers.Strategy.Refresh=OpenLayers.Class(OpenLayers.Strategy,{force:false,interval:0,timer:null,initialize:function(options){OpenLayers.Strategy.prototype.initialize.apply(this,[options]);},activate:function(){var activated=OpenLayers.Strategy.prototype.activate.call(this);if(activated){if(this.layer.visibility===true){this.start();} -this.layer.events.on({"visibilitychanged":this.reset,scope:this});} -return activated;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){this.stop();} -return deactivated;},reset:function(){if(this.layer.visibility===true){this.start();}else{this.stop();}},start:function(){if(this.interval&&typeof this.interval==="number"&&this.interval>0){this.timer=window.setInterval(OpenLayers.Function.bind(this.refresh,this),this.interval);}},refresh:function(){if(this.layer&&this.layer.refresh&&typeof this.layer.refresh=="function"){this.layer.refresh({force:this.force});}},stop:function(){if(this.timer!==null){window.clearInterval(this.timer);this.timer=null;}},CLASS_NAME:"OpenLayers.Strategy.Refresh"});OpenLayers.Strategy.Save=OpenLayers.Class(OpenLayers.Strategy,{EVENT_TYPES:["start","success","fail"],events:null,auto:false,timer:null,initialize:function(options){OpenLayers.Strategy.prototype.initialize.apply(this,[options]);this.events=new OpenLayers.Events(this,null,this.EVENT_TYPES);},activate:function(){var activated=OpenLayers.Strategy.prototype.activate.call(this);if(activated){if(this.auto){if(typeof this.auto==="number"){this.timer=window.setInterval(OpenLayers.Function.bind(this.save,this),this.auto*1000);}else{this.layer.events.on({"featureadded":this.triggerSave,"afterfeaturemodified":this.triggerSave,scope:this});}}} -return activated;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){if(this.auto){if(typeof this.auto==="number"){window.clearInterval(this.timer);}else{this.layer.events.un({"featureadded":this.triggerSave,"afterfeaturemodified":this.triggerSave,scope:this});}}} -return deactivated;},triggerSave:function(event){var feature=event.feature;if(feature.state===OpenLayers.State.INSERT||feature.state===OpenLayers.State.UPDATE||feature.state===OpenLayers.State.DELETE){this.save([event.feature]);}},save:function(features){if(!features){features=this.layer.features;} -this.events.triggerEvent("start",{features:features});var remote=this.layer.projection;var local=this.layer.map.getProjectionObject();if(!local.equals(remote)){var len=features.length;var clones=new Array(len);var orig,clone;for(var i=0;i<len;++i){orig=features[i];clone=orig.clone();clone.fid=orig.fid;clone.state=orig.state;if(orig.url){clone.url=orig.url;} -clone._original=orig;clone.geometry.transform(local,remote);clones[i]=clone;} -features=clones;} -this.layer.protocol.commit(features,{callback:this.onCommit,scope:this});},onCommit:function(response){var evt={"response":response};if(response.success()){var features=response.reqFeatures;var state,feature;var destroys=[];var insertIds=response.insertIds||[];var j=0;for(var i=0,len=features.length;i<len;++i){feature=features[i];feature=feature._original||feature;state=feature.state;if(state){if(state==OpenLayers.State.DELETE){destroys.push(feature);}else if(state==OpenLayers.State.INSERT){feature.fid=insertIds[j];++j;} -feature.state=null;}} -if(destroys.length>0){this.layer.destroyFeatures(destroys);} -this.events.triggerEvent("success",evt);}else{this.events.triggerEvent("fail",evt);}},CLASS_NAME:"OpenLayers.Strategy.Save"});OpenLayers.Symbolizer.Line=OpenLayers.Class(OpenLayers.Symbolizer,{strokeColor:null,strokeOpacity:null,strokeWidth:null,strokeLinecap:null,strokeDashstyle:null,initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Line"});OpenLayers.Symbolizer.Point=OpenLayers.Class(OpenLayers.Symbolizer,{strokeColor:null,strokeOpacity:null,strokeWidth:null,strokeLinecap:null,strokeDashstyle:null,fillColor:null,fillOpacity:null,pointRadius:null,externalGraphic:null,graphicWidth:null,graphicHeight:null,graphicOpacity:null,graphicXOffset:null,graphicYOffset:null,rotation:null,graphicName:null,initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Point"});OpenLayers.Symbolizer.Polygon=OpenLayers.Class(OpenLayers.Symbolizer,{strokeColor:null,strokeOpacity:null,strokeWidth:null,strokeLinecap:null,strokeDashstyle:null,fillColor:null,fillOpacity:null,initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Polygon"});OpenLayers.Symbolizer.Raster=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Raster"});OpenLayers.Symbolizer.Text=OpenLayers.Class(OpenLayers.Symbolizer,{label:null,fontFamily:null,fontSize:null,fontWeight:null,fontStyle:null,initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Text"});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.Control.ArgParser=OpenLayers.Class(OpenLayers.Control,{center:null,zoom:null,layers:null,displayProjection:null,initialize:function(options){OpenLayers.Control.prototype.initialize.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!=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=OpenLayers.Util.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.Attribution=OpenLayers.Class(OpenLayers.Control,{separator:", ",initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,arguments);},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.Control.Button=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){},CLASS_NAME:"OpenLayers.Control.Button"});OpenLayers.Control.Graticule=OpenLayers.Class(OpenLayers.Control,{autoActivate:true,intervals:[45,30,20,10,5,2,1,0.5,0.2,0.1,0.05,0.01,0.005,0.002,0.001],displayInLayerSwitcher:true,visible:true,numPoints:50,targetSize:200,layerName:null,labelled:true,labelFormat:'dm',lineSymbolizer:{strokeColor:"#333",strokeWidth:1,strokeOpacity:0.5},labelSymbolizer:{},gratLayer:null,initialize:function(options){options=options||{};options.layerName=options.layerName||OpenLayers.i18n("graticule");OpenLayers.Control.prototype.initialize.apply(this,[options]);this.labelSymbolizer.stroke=false;this.labelSymbolizer.fill=false;this.labelSymbolizer.label="${label}";this.labelSymbolizer.labelAlign="${labelAlign}";this.labelSymbolizer.labelXOffset="${xOffset}";this.labelSymbolizer.labelYOffset="${yOffset}";},destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments);if(this.gratLayer){this.gratLayer.destroy();this.gratLayer=null;}},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.gratLayer){var gratStyle=new OpenLayers.Style({},{rules:[new OpenLayers.Rule({'symbolizer':{"Point":this.labelSymbolizer,"Line":this.lineSymbolizer}})]});this.gratLayer=new OpenLayers.Layer.Vector(this.layerName,{styleMap:new OpenLayers.StyleMap({'default':gratStyle}),visibility:this.visible,displayInLayerSwitcher:this.displayInLayerSwitcher});} -return this.div;},activate:function(){if(OpenLayers.Control.prototype.activate.apply(this,arguments)){this.map.addLayer(this.gratLayer);this.map.events.register('moveend',this,this.update);this.update();return true;}else{return false;}},deactivate:function(){if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){this.map.events.unregister('moveend',this,this.update);this.map.removeLayer(this.gratLayer);return true;}else{return false;}},update:function(){var mapBounds=this.map.getExtent();if(!mapBounds){return;} -this.gratLayer.destroyFeatures();var llProj=new OpenLayers.Projection("EPSG:4326");var mapProj=this.map.getProjectionObject();var mapRes=this.map.getResolution();if(mapProj.proj&&mapProj.proj.projName=="longlat"){this.numPoints=1;} -var mapCenter=this.map.getCenter();var mapCenterLL=new OpenLayers.Pixel(mapCenter.lon,mapCenter.lat);OpenLayers.Projection.transform(mapCenterLL,mapProj,llProj);var testSq=this.targetSize*mapRes;testSq*=testSq;var llInterval;for(var i=0;i<this.intervals.length;++i){llInterval=this.intervals[i];var delta=llInterval/2;var p1=mapCenterLL.offset(new OpenLayers.Pixel(-delta,-delta));var p2=mapCenterLL.offset(new OpenLayers.Pixel(delta,delta));OpenLayers.Projection.transform(p1,llProj,mapProj);OpenLayers.Projection.transform(p2,llProj,mapProj);var distSq=(p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y);if(distSq<=testSq){break;}} -mapCenterLL.x=Math.floor(mapCenterLL.x/llInterval)*llInterval;mapCenterLL.y=Math.floor(mapCenterLL.y/llInterval)*llInterval;var iter=0;var centerLonPoints=[mapCenterLL.clone()];var newPoint=mapCenterLL.clone();var mapXY;do{newPoint=newPoint.offset(new OpenLayers.Pixel(0,llInterval));mapXY=OpenLayers.Projection.transform(newPoint.clone(),llProj,mapProj);centerLonPoints.unshift(newPoint);}while(mapBounds.containsPixel(mapXY)&&++iter<1000);newPoint=mapCenterLL.clone();do{newPoint=newPoint.offset(new OpenLayers.Pixel(0,-llInterval));mapXY=OpenLayers.Projection.transform(newPoint.clone(),llProj,mapProj);centerLonPoints.push(newPoint);}while(mapBounds.containsPixel(mapXY)&&++iter<1000);iter=0;var centerLatPoints=[mapCenterLL.clone()];newPoint=mapCenterLL.clone();do{newPoint=newPoint.offset(new OpenLayers.Pixel(-llInterval,0));mapXY=OpenLayers.Projection.transform(newPoint.clone(),llProj,mapProj);centerLatPoints.unshift(newPoint);}while(mapBounds.containsPixel(mapXY)&&++iter<1000);newPoint=mapCenterLL.clone();do{newPoint=newPoint.offset(new OpenLayers.Pixel(llInterval,0));mapXY=OpenLayers.Projection.transform(newPoint.clone(),llProj,mapProj);centerLatPoints.push(newPoint);}while(mapBounds.containsPixel(mapXY)&&++iter<1000);var lines=[];for(var i=0;i<centerLatPoints.length;++i){var lon=centerLatPoints[i].x;var pointList=[];var labelPoint=null;var latEnd=Math.min(centerLonPoints[0].y,90);var latStart=Math.max(centerLonPoints[centerLonPoints.length-1].y,-90);var latDelta=(latEnd-latStart)/this.numPoints;var lat=latStart;for(var j=0;j<=this.numPoints;++j){var gridPoint=new OpenLayers.Geometry.Point(lon,lat);gridPoint.transform(llProj,mapProj);pointList.push(gridPoint);lat+=latDelta;if(gridPoint.y>=mapBounds.bottom&&!labelPoint){labelPoint=gridPoint;}} -if(this.labelled){var labelPos=new OpenLayers.Geometry.Point(labelPoint.x,mapBounds.bottom);var labelAttrs={value:lon,label:this.labelled?OpenLayers.Util.getFormattedLonLat(lon,"lon",this.labelFormat):"",labelAlign:"cb",xOffset:0,yOffset:2};this.gratLayer.addFeatures(new OpenLayers.Feature.Vector(labelPos,labelAttrs));} -var geom=new OpenLayers.Geometry.LineString(pointList);lines.push(new OpenLayers.Feature.Vector(geom));} -for(var j=0;j<centerLonPoints.length;++j){lat=centerLonPoints[j].y;if(lat<-90||lat>90){continue;} -var pointList=[];var lonStart=centerLatPoints[0].x;var lonEnd=centerLatPoints[centerLatPoints.length-1].x;var lonDelta=(lonEnd-lonStart)/this.numPoints;var lon=lonStart;var labelPoint=null;for(var i=0;i<=this.numPoints;++i){var gridPoint=new OpenLayers.Geometry.Point(lon,lat);gridPoint.transform(llProj,mapProj);pointList.push(gridPoint);lon+=lonDelta;if(gridPoint.x<mapBounds.right){labelPoint=gridPoint;}} -if(this.labelled){var labelPos=new OpenLayers.Geometry.Point(mapBounds.right,labelPoint.y);var labelAttrs={value:lat,label:this.labelled?OpenLayers.Util.getFormattedLonLat(lat,"lat",this.labelFormat):"",labelAlign:"rb",xOffset:-2,yOffset:2};this.gratLayer.addFeatures(new OpenLayers.Feature.Vector(labelPos,labelAttrs));} -var geom=new OpenLayers.Geometry.LineString(pointList);lines.push(new OpenLayers.Feature.Vector(geom));} -this.gratLayer.addFeatures(lines);},CLASS_NAME:"OpenLayers.Control.Graticule"});OpenLayers.Control.LayerSwitcher=OpenLayers.Class(OpenLayers.Control,{roundedCorner:true,roundedCornerColor:"darkblue",layerStates:null,layersDiv:null,baseLayersDiv:null,baseLayers:null,dataLbl:null,dataLayersDiv:null,dataLayers:null,minimizeDiv:null,maximizeDiv:null,ascending:true,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.layerStates=[];},destroy:function(){OpenLayers.Event.stopObservingElement(this.div);OpenLayers.Event.stopObservingElement(this.minimizeDiv);OpenLayers.Event.stopObservingElement(this.maximizeDiv);this.clearLayersArray("base");this.clearLayersArray("data");this.map.events.un({"addlayer":this.redraw,"changelayer":this.redraw,"removelayer":this.redraw,"changebaselayer":this.redraw,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments);},setMap:function(map){OpenLayers.Control.prototype.setMap.apply(this,arguments);this.map.events.on({"addlayer":this.redraw,"changelayer":this.redraw,"removelayer":this.redraw,"changebaselayer":this.redraw,scope:this});},draw:function(){OpenLayers.Control.prototype.draw.apply(this);this.loadContents();if(!this.outsideViewport){this.minimizeControl();} -this.redraw();return this.div;},clearLayersArray:function(layersType){var layers=this[layersType+"Layers"];if(layers){for(var i=0,len=layers.length;i<len;i++){var layer=layers[i];OpenLayers.Event.stopObservingElement(layer.inputElem);OpenLayers.Event.stopObservingElement(layer.labelSpan);}} -this[layersType+"LayersDiv"].innerHTML="";this[layersType+"Layers"]=[];},checkRedraw:function(){var redraw=false;if(!this.layerStates.length||(this.map.layers.length!=this.layerStates.length)){redraw=true;}else{for(var i=0,len=this.layerStates.length;i<len;i++){var layerState=this.layerStates[i];var layer=this.map.layers[i];if((layerState.name!=layer.name)||(layerState.inRange!=layer.inRange)||(layerState.id!=layer.id)||(layerState.visibility!=layer.visibility)){redraw=true;break;}}} -return redraw;},redraw:function(){if(!this.checkRedraw()){return this.div;} -this.clearLayersArray("base");this.clearLayersArray("data");var containsOverlays=false;var containsBaseLayers=false;var len=this.map.layers.length;this.layerStates=new Array(len);for(var i=0;i<len;i++){var layer=this.map.layers[i];this.layerStates[i]={'name':layer.name,'visibility':layer.visibility,'inRange':layer.inRange,'id':layer.id};} -var layers=this.map.layers.slice();if(!this.ascending){layers.reverse();} -for(var i=0,len=layers.length;i<len;i++){var layer=layers[i];var baseLayer=layer.isBaseLayer;if(layer.displayInLayerSwitcher){if(baseLayer){containsBaseLayers=true;}else{containsOverlays=true;} -var checked=(baseLayer)?(layer==this.map.baseLayer):layer.getVisibility();var inputElem=document.createElement("input");inputElem.id=this.id+"_input_"+layer.name;inputElem.name=(baseLayer)?this.id+"_baseLayers":layer.name;inputElem.type=(baseLayer)?"radio":"checkbox";inputElem.value=layer.name;inputElem.checked=checked;inputElem.defaultChecked=checked;if(!baseLayer&&!layer.inRange){inputElem.disabled=true;} -var context={'inputElem':inputElem,'layer':layer,'layerSwitcher':this};OpenLayers.Event.observe(inputElem,"mouseup",OpenLayers.Function.bindAsEventListener(this.onInputClick,context));var labelSpan=document.createElement("span");OpenLayers.Element.addClass(labelSpan,"labelSpan") -if(!baseLayer&&!layer.inRange){labelSpan.style.color="gray";} -labelSpan.innerHTML=layer.name;labelSpan.style.verticalAlign=(baseLayer)?"bottom":"baseline";OpenLayers.Event.observe(labelSpan,"click",OpenLayers.Function.bindAsEventListener(this.onInputClick,context));var br=document.createElement("br");var groupArray=(baseLayer)?this.baseLayers:this.dataLayers;groupArray.push({'layer':layer,'inputElem':inputElem,'labelSpan':labelSpan});var groupDiv=(baseLayer)?this.baseLayersDiv:this.dataLayersDiv;groupDiv.appendChild(inputElem);groupDiv.appendChild(labelSpan);groupDiv.appendChild(br);}} -this.dataLbl.style.display=(containsOverlays)?"":"none";this.baseLbl.style.display=(containsBaseLayers)?"":"none";return this.div;},onInputClick:function(e){if(!this.inputElem.disabled){if(this.inputElem.type=="radio"){this.inputElem.checked=true;this.layer.map.setBaseLayer(this.layer);}else{this.inputElem.checked=!this.inputElem.checked;this.layerSwitcher.updateMap();}} -OpenLayers.Event.stop(e);},onLayerClick:function(e){this.updateMap();},updateMap:function(){for(var i=0,len=this.baseLayers.length;i<len;i++){var layerEntry=this.baseLayers[i];if(layerEntry.inputElem.checked){this.map.setBaseLayer(layerEntry.layer,false);}} -for(var i=0,len=this.dataLayers.length;i<len;i++){var layerEntry=this.dataLayers[i];layerEntry.layer.setVisibility(layerEntry.inputElem.checked);}},maximizeControl:function(e){this.div.style.width="";this.div.style.height="";this.showControls(false);if(e!=null){OpenLayers.Event.stop(e);}},minimizeControl:function(e){this.div.style.width="0px";this.div.style.height="0px";this.showControls(true);if(e!=null){OpenLayers.Event.stop(e);}},showControls:function(minimize){this.maximizeDiv.style.display=minimize?"":"none";this.minimizeDiv.style.display=minimize?"none":"";this.layersDiv.style.display=minimize?"none":"";},loadContents:function(){OpenLayers.Event.observe(this.div,"mouseup",OpenLayers.Function.bindAsEventListener(this.mouseUp,this));OpenLayers.Event.observe(this.div,"click",this.ignoreEvent);OpenLayers.Event.observe(this.div,"mousedown",OpenLayers.Function.bindAsEventListener(this.mouseDown,this));OpenLayers.Event.observe(this.div,"dblclick",this.ignoreEvent);this.layersDiv=document.createElement("div");this.layersDiv.id=this.id+"_layersDiv";OpenLayers.Element.addClass(this.layersDiv,"layersDiv");this.baseLbl=document.createElement("div");this.baseLbl.innerHTML=OpenLayers.i18n("baseLayer");OpenLayers.Element.addClass(this.baseLbl,"baseLbl");this.baseLayersDiv=document.createElement("div");OpenLayers.Element.addClass(this.baseLayersDiv,"baseLayersDiv");this.dataLbl=document.createElement("div");this.dataLbl.innerHTML=OpenLayers.i18n("overlays");OpenLayers.Element.addClass(this.dataLbl,"dataLbl");this.dataLayersDiv=document.createElement("div");OpenLayers.Element.addClass(this.dataLayersDiv,"dataLayersDiv");if(this.ascending){this.layersDiv.appendChild(this.baseLbl);this.layersDiv.appendChild(this.baseLayersDiv);this.layersDiv.appendChild(this.dataLbl);this.layersDiv.appendChild(this.dataLayersDiv);}else{this.layersDiv.appendChild(this.dataLbl);this.layersDiv.appendChild(this.dataLayersDiv);this.layersDiv.appendChild(this.baseLbl);this.layersDiv.appendChild(this.baseLayersDiv);} -this.div.appendChild(this.layersDiv);if(this.roundedCorner){OpenLayers.Rico.Corner.round(this.div,{corners:"tl bl",bgColor:"transparent",color:this.roundedCornerColor,blend:false});OpenLayers.Rico.Corner.changeOpacity(this.layersDiv,0.75);} -var imgLocation=OpenLayers.Util.getImagesLocation();var sz=new OpenLayers.Size(18,18);var img=imgLocation+'layer-switcher-maximize.png';this.maximizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MaximizeDiv",null,sz,img,"absolute");OpenLayers.Element.addClass(this.maximizeDiv,"maximizeDiv");this.maximizeDiv.style.display="none";OpenLayers.Event.observe(this.maximizeDiv,"click",OpenLayers.Function.bindAsEventListener(this.maximizeControl,this));this.div.appendChild(this.maximizeDiv);var img=imgLocation+'layer-switcher-minimize.png';var sz=new OpenLayers.Size(18,18);this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MinimizeDiv",null,sz,img,"absolute");OpenLayers.Element.addClass(this.minimizeDiv,"minimizeDiv");this.minimizeDiv.style.display="none";OpenLayers.Event.observe(this.minimizeDiv,"click",OpenLayers.Function.bindAsEventListener(this.minimizeControl,this));this.div.appendChild(this.minimizeDiv);},ignoreEvent:function(evt){OpenLayers.Event.stop(evt);},mouseDown:function(evt){this.isMouseDown=true;this.ignoreEvent(evt);},mouseUp:function(evt){if(this.isMouseDown){this.isMouseDown=false;this.ignoreEvent(evt);}},CLASS_NAME:"OpenLayers.Control.LayerSwitcher"});OpenLayers.Control.MouseDefaults=OpenLayers.Class(OpenLayers.Control,{performedDrag:false,wheelObserver:null,initialize:function(){OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){if(this.handler){this.handler.destroy();} -this.handler=null;this.map.events.un({"click":this.defaultClick,"dblclick":this.defaultDblClick,"mousedown":this.defaultMouseDown,"mouseup":this.defaultMouseUp,"mousemove":this.defaultMouseMove,"mouseout":this.defaultMouseOut,scope:this});OpenLayers.Event.stopObserving(window,"DOMMouseScroll",this.wheelObserver);OpenLayers.Event.stopObserving(window,"mousewheel",this.wheelObserver);OpenLayers.Event.stopObserving(document,"mousewheel",this.wheelObserver);this.wheelObserver=null;OpenLayers.Control.prototype.destroy.apply(this,arguments);},draw:function(){this.map.events.on({"click":this.defaultClick,"dblclick":this.defaultDblClick,"mousedown":this.defaultMouseDown,"mouseup":this.defaultMouseUp,"mousemove":this.defaultMouseMove,"mouseout":this.defaultMouseOut,scope:this});this.registerWheelEvents();},registerWheelEvents:function(){this.wheelObserver=OpenLayers.Function.bindAsEventListener(this.onWheelEvent,this);OpenLayers.Event.observe(window,"DOMMouseScroll",this.wheelObserver);OpenLayers.Event.observe(window,"mousewheel",this.wheelObserver);OpenLayers.Event.observe(document,"mousewheel",this.wheelObserver);},defaultClick:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} -var notAfterDrag=!this.performedDrag;this.performedDrag=false;return notAfterDrag;},defaultDblClick:function(evt){var newCenter=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(newCenter,this.map.zoom+1);OpenLayers.Event.stop(evt);return false;},defaultMouseDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} -this.mouseDragStart=evt.xy.clone();this.performedDrag=false;if(evt.shiftKey){this.map.div.style.cursor="crosshair";this.zoomBox=OpenLayers.Util.createDiv('zoomBox',this.mouseDragStart,null,null,"absolute","2px solid red");this.zoomBox.style.backgroundColor="white";this.zoomBox.style.filter="alpha(opacity=50)";this.zoomBox.style.opacity="0.50";this.zoomBox.style.fontSize="1px";this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.viewPortDiv.appendChild(this.zoomBox);} -document.onselectstart=OpenLayers.Function.False;OpenLayers.Event.stop(evt);},defaultMouseMove:function(evt){this.mousePosition=evt.xy.clone();if(this.mouseDragStart!=null){if(this.zoomBox){var deltaX=Math.abs(this.mouseDragStart.x-evt.xy.x);var deltaY=Math.abs(this.mouseDragStart.y-evt.xy.y);this.zoomBox.style.width=Math.max(1,deltaX)+"px";this.zoomBox.style.height=Math.max(1,deltaY)+"px";if(evt.xy.x<this.mouseDragStart.x){this.zoomBox.style.left=evt.xy.x+"px";} -if(evt.xy.y<this.mouseDragStart.y){this.zoomBox.style.top=evt.xy.y+"px";}}else{var deltaX=this.mouseDragStart.x-evt.xy.x;var deltaY=this.mouseDragStart.y-evt.xy.y;var size=this.map.getSize();var newXY=new OpenLayers.Pixel(size.w/2+deltaX,size.h/2+deltaY);var newCenter=this.map.getLonLatFromViewPortPx(newXY);this.map.setCenter(newCenter,null,true);this.mouseDragStart=evt.xy.clone();this.map.div.style.cursor="move";} -this.performedDrag=true;}},defaultMouseUp:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} -if(this.zoomBox){this.zoomBoxEnd(evt);}else{if(this.performedDrag){this.map.setCenter(this.map.center);}} -document.onselectstart=null;this.mouseDragStart=null;this.map.div.style.cursor="";},defaultMouseOut:function(evt){if(this.mouseDragStart!=null&&OpenLayers.Util.mouseLeft(evt,this.map.div)){if(this.zoomBox){this.removeZoomBox();} -this.mouseDragStart=null;}},defaultWheelUp:function(evt){if(this.map.getZoom()<=this.map.getNumZoomLevels()){this.map.setCenter(this.map.getLonLatFromPixel(evt.xy),this.map.getZoom()+1);}},defaultWheelDown:function(evt){if(this.map.getZoom()>0){this.map.setCenter(this.map.getLonLatFromPixel(evt.xy),this.map.getZoom()-1);}},zoomBoxEnd:function(evt){if(this.mouseDragStart!=null){if(Math.abs(this.mouseDragStart.x-evt.xy.x)>5||Math.abs(this.mouseDragStart.y-evt.xy.y)>5){var start=this.map.getLonLatFromViewPortPx(this.mouseDragStart);var end=this.map.getLonLatFromViewPortPx(evt.xy);var top=Math.max(start.lat,end.lat);var bottom=Math.min(start.lat,end.lat);var left=Math.min(start.lon,end.lon);var right=Math.max(start.lon,end.lon);var bounds=new OpenLayers.Bounds(left,bottom,right,top);this.map.zoomToExtent(bounds);}else{var end=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(new OpenLayers.LonLat((end.lon),(end.lat)),this.map.getZoom()+1);} -this.removeZoomBox();}},removeZoomBox:function(){this.map.viewPortDiv.removeChild(this.zoomBox);this.zoomBox=null;},onWheelEvent:function(e){var inMap=false;var elem=OpenLayers.Event.element(e);while(elem!=null){if(this.map&&elem==this.map.div){inMap=true;break;} -elem=elem.parentNode;} -if(inMap){var delta=0;if(!e){e=window.event;} -if(e.wheelDelta){delta=e.wheelDelta/120;if(window.opera&&window.opera.version()<9.2){delta=-delta;}}else if(e.detail){delta=-e.detail/3;} -if(delta){e.xy=this.mousePosition;if(delta<0){this.defaultWheelDown(e);}else{this.defaultWheelUp(e);}} -OpenLayers.Event.stop(e);}},CLASS_NAME:"OpenLayers.Control.MouseDefaults"});OpenLayers.Control.MousePosition=OpenLayers.Class(OpenLayers.Control,{autoActivate:true,element:null,prefix:'',separator:', ',suffix:'',numDigits:5,granularity:10,emptyString:null,lastXy:null,displayProjection:null,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments);},activate:function(){if(OpenLayers.Control.prototype.activate.apply(this,arguments)){this.map.events.register('mousemove',this,this.redraw);this.map.events.register('mouseout',this,this.reset);this.redraw();return true;}else{return false;}},deactivate:function(){if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){this.map.events.unregister('mousemove',this,this.redraw);this.map.events.unregister('mouseout',this,this.reset);this.element.innerHTML="";return true;}else{return false;}},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.element){this.div.left="";this.div.top="";this.element=this.div;} -return this.div;},redraw:function(evt){var lonLat;if(evt==null){this.reset();return;}else{if(this.lastXy==null||Math.abs(evt.xy.x-this.lastXy.x)>this.granularity||Math.abs(evt.xy.y-this.lastXy.y)>this.granularity) -{this.lastXy=evt.xy;return;} -lonLat=this.map.getLonLatFromPixel(evt.xy);if(!lonLat){return;} -if(this.displayProjection){lonLat.transform(this.map.getProjectionObject(),this.displayProjection);} -this.lastXy=evt.xy;} -var newHtml=this.formatOutput(lonLat);if(newHtml!=this.element.innerHTML){this.element.innerHTML=newHtml;}},reset:function(evt){if(this.emptyString!=null){this.element.innerHTML=this.emptyString;}},formatOutput:function(lonLat){var digits=parseInt(this.numDigits);var newHtml=this.prefix+ -lonLat.lon.toFixed(digits)+ -this.separator+ -lonLat.lat.toFixed(digits)+ -this.suffix;return newHtml;},CLASS_NAME:"OpenLayers.Control.MousePosition"});OpenLayers.Control.Pan=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,direction:null,type:OpenLayers.Control.TYPE_BUTTON,initialize:function(direction,options){this.direction=direction;this.CLASS_NAME+=this.direction;OpenLayers.Control.prototype.initialize.apply(this,[options]);},trigger:function(){switch(this.direction){case OpenLayers.Control.Pan.NORTH:this.map.pan(0,-this.slideFactor);break;case OpenLayers.Control.Pan.SOUTH:this.map.pan(0,this.slideFactor);break;case OpenLayers.Control.Pan.WEST:this.map.pan(-this.slideFactor,0);break;case OpenLayers.Control.Pan.EAST:this.map.pan(this.slideFactor,0);break;}},CLASS_NAME:"OpenLayers.Control.Pan"});OpenLayers.Control.Pan.NORTH="North";OpenLayers.Control.Pan.SOUTH="South";OpenLayers.Control.Pan.EAST="East";OpenLayers.Control.Pan.WEST="West";OpenLayers.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(){OpenLayers.Control.prototype.destroy.apply(this,arguments);this.removeButtons();this.buttons=null;this.position=null;},draw:function(px){OpenLayers.Control.prototype.draw.apply(this,arguments);px=this.position;this.buttons=[];var sz=new OpenLayers.Size(18,18);var centered=new OpenLayers.Pixel(px.x+sz.w/2,px.y);this._addButton("panup","north-mini.png",centered,sz);px.y=centered.y+sz.h;this._addButton("panleft","west-mini.png",px,sz);this._addButton("panright","east-mini.png",px.add(sz.w,0),sz);this._addButton("pandown","south-mini.png",centered.add(0,sz.h*2),sz);this._addButton("zoomin","zoom-plus-mini.png",centered.add(0,sz.h*3+5),sz);this._addButton("zoomworld","zoom-world-mini.png",centered.add(0,sz.h*4+5),sz);this._addButton("zoomout","zoom-minus-mini.png",centered.add(0,sz.h*5+5),sz);return this.div;},_addButton:function(id,img,xy,sz){var imgLocation=OpenLayers.Util.getImagesLocation()+img;var btn=OpenLayers.Util.createAlphaImageDiv(this.id+"_"+id,xy,sz,imgLocation,"absolute");this.div.appendChild(btn);OpenLayers.Event.observe(btn,"mousedown",OpenLayers.Function.bindAsEventListener(this.buttonDown,btn));OpenLayers.Event.observe(btn,"dblclick",OpenLayers.Function.bindAsEventListener(this.doubleClick,btn));OpenLayers.Event.observe(btn,"click",OpenLayers.Function.bindAsEventListener(this.doubleClick,btn));btn.action=id;btn.map=this.map;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.Control.Panel=OpenLayers.Class(OpenLayers.Control,{controls:null,autoActivate:true,defaultControl:null,saveState:false,activeState:null,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.controls=[];this.activeState={};},destroy:function(){OpenLayers.Control.prototype.destroy.apply(this,arguments);for(var i=this.controls.length-1;i>=0;i--){if(this.controls[i].events){this.controls[i].events.un({"activate":this.redraw,"deactivate":this.redraw,scope:this});} -OpenLayers.Event.stopObservingElement(this.controls[i].panel_div);this.controls[i].panel_div=null;} -this.activeState=null;},activate:function(){if(OpenLayers.Control.prototype.activate.apply(this,arguments)){var control;for(var i=0,len=this.controls.length;i<len;i++){control=this.controls[i];if(control===this.defaultControl||(this.saveState&&this.activeState[control.id])){control.activate();}} -if(this.saveState===true){this.defaultControl=null;} -this.redraw();return true;}else{return false;}},deactivate:function(){if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){var control;for(var i=0,len=this.controls.length;i<len;i++){control=this.controls[i];this.activeState[control.id]=control.deactivate();} -return true;}else{return false;}},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.addControlsToMap(this.controls);return this.div;},redraw:function(){if(this.div.children.length>0){for(var l=this.div.children.length,i=l-1;i>=0;i--){this.div.removeChild(this.div.children[i]);}} -this.div.innerHTML="";if(this.active){for(var i=0,len=this.controls.length;i<len;i++){var element=this.controls[i].panel_div;if(this.controls[i].active){element.className=this.controls[i].displayClass+"ItemActive";}else{element.className=this.controls[i].displayClass+"ItemInactive";} -this.div.appendChild(element);}}},activateControl:function(control){if(!this.active){return false;} -if(control.type==OpenLayers.Control.TYPE_BUTTON){control.trigger();this.redraw();return;} -if(control.type==OpenLayers.Control.TYPE_TOGGLE){if(control.active){control.deactivate();}else{control.activate();} -this.redraw();return;} -var c;for(var i=0,len=this.controls.length;i<len;i++){c=this.controls[i];if(c!=control&&(c.type===OpenLayers.Control.TYPE_TOOL||c.type==null)){c.deactivate();}} -control.activate();},addControls:function(controls){if(!(controls instanceof Array)){controls=[controls];} -this.controls=this.controls.concat(controls);for(var i=0,len=controls.length;i<len;i++){var element=document.createElement("div");controls[i].panel_div=element;if(controls[i].title!=""){controls[i].panel_div.title=controls[i].title;} -OpenLayers.Event.observe(controls[i].panel_div,"click",OpenLayers.Function.bind(this.onClick,this,controls[i]));OpenLayers.Event.observe(controls[i].panel_div,"dblclick",OpenLayers.Function.bind(this.onDoubleClick,this,controls[i]));OpenLayers.Event.observe(controls[i].panel_div,"mousedown",OpenLayers.Function.bindAsEventListener(OpenLayers.Event.stop));} -if(this.map){this.addControlsToMap(controls);this.redraw();}},addControlsToMap:function(controls){var control;for(var i=0,len=controls.length;i<len;i++){control=controls[i];if(control.autoActivate===true){control.autoActivate=false;this.map.addControl(control);control.autoActivate=true;}else{this.map.addControl(control);control.deactivate();} -control.events.on({"activate":this.redraw,"deactivate":this.redraw,scope:this});}},onClick:function(ctrl,evt){OpenLayers.Event.stop(evt?evt:window.event);this.activateControl(ctrl);},onDoubleClick:function(ctrl,evt){OpenLayers.Event.stop(evt?evt:window.event);},getControlsBy:function(property,match){var test=(typeof match.test=="function");var found=OpenLayers.Array.filter(this.controls,function(item){return item[property]==match||(test&&match.test(item[property]));});return found;},getControlsByName:function(match){return this.getControlsBy("name",match);},getControlsByClass:function(match){return this.getControlsBy("CLASS_NAME",match);},CLASS_NAME:"OpenLayers.Control.Panel"});OpenLayers.Control.Scale=OpenLayers.Class(OpenLayers.Control,{element:null,geodesic:false,initialize:function(element,options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.element=OpenLayers.Util.getElement(element);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.element){this.element=document.createElement("div");this.div.appendChild(this.element);} -this.map.events.register('moveend',this,this.updateScale);this.updateScale();return this.div;},updateScale:function(){var scale;if(this.geodesic===true){var units=this.map.getUnits();if(!units){return;} -var inches=OpenLayers.INCHES_PER_UNIT;scale=(this.map.getGeodesicPixelSize().w||0.000001)*inches["km"]*OpenLayers.DOTS_PER_INCH;}else{scale=this.map.getScale();} -if(!scale){return;} -if(scale>=9500&&scale<=950000){scale=Math.round(scale/1000)+"K";}else if(scale>=950000){scale=Math.round(scale/1000000)+"M";}else{scale=Math.round(scale);} -this.element.innerHTML=OpenLayers.i18n("scale",{'scaleDenom':scale});},CLASS_NAME:"OpenLayers.Control.Scale"});OpenLayers.Control.ScaleLine=OpenLayers.Class(OpenLayers.Control,{maxWidth:100,topOutUnits:"km",topInUnits:"m",bottomOutUnits:"mi",bottomInUnits:"ft",eTop:null,eBottom:null,geodesic:false,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,[options]);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.eTop){this.eTop=document.createElement("div");this.eTop.className=this.displayClass+"Top";var theLen=this.topInUnits.length;this.div.appendChild(this.eTop);if((this.topOutUnits=="")||(this.topInUnits=="")){this.eTop.style.visibility="hidden";}else{this.eTop.style.visibility="visible";} -this.eBottom=document.createElement("div");this.eBottom.className=this.displayClass+"Bottom";this.div.appendChild(this.eBottom);if((this.bottomOutUnits=="")||(this.bottomInUnits=="")){this.eBottom.style.visibility="hidden";}else{this.eBottom.style.visibility="visible";}} -this.map.events.register('moveend',this,this.update);this.update();return this.div;},getBarLen:function(maxLen){var digits=parseInt(Math.log(maxLen)/Math.log(10));var pow10=Math.pow(10,digits);var firstChar=parseInt(maxLen/pow10);var barLen;if(firstChar>5){barLen=5;}else if(firstChar>2){barLen=2;}else{barLen=1;} -return barLen*pow10;},update:function(){var res=this.map.getResolution();if(!res){return;} -var curMapUnits=this.map.getUnits();var inches=OpenLayers.INCHES_PER_UNIT;var maxSizeData=this.maxWidth*res*inches[curMapUnits];var geodesicRatio=1;if(this.geodesic===true){var maxSizeGeodesic=(this.map.getGeodesicPixelSize().w||0.000001)*this.maxWidth;var maxSizeKilometers=maxSizeData/inches["km"];geodesicRatio=maxSizeGeodesic/maxSizeKilometers;maxSizeData*=geodesicRatio;} -var topUnits;var bottomUnits;if(maxSizeData>100000){topUnits=this.topOutUnits;bottomUnits=this.bottomOutUnits;}else{topUnits=this.topInUnits;bottomUnits=this.bottomInUnits;} -var topMax=maxSizeData/inches[topUnits];var bottomMax=maxSizeData/inches[bottomUnits];var topRounded=this.getBarLen(topMax);var bottomRounded=this.getBarLen(bottomMax);topMax=topRounded/inches[curMapUnits]*inches[topUnits];bottomMax=bottomRounded/inches[curMapUnits]*inches[bottomUnits];var topPx=topMax/res/geodesicRatio;var bottomPx=bottomMax/res/geodesicRatio;if(this.eBottom.style.visibility=="visible"){this.eBottom.style.width=Math.round(bottomPx)+"px";this.eBottom.innerHTML=bottomRounded+" "+bottomUnits;} -if(this.eTop.style.visibility=="visible"){this.eTop.style.width=Math.round(topPx)+"px";this.eTop.innerHTML=topRounded+" "+topUnits;}},CLASS_NAME:"OpenLayers.Control.ScaleLine"});OpenLayers.Control.ZoomIn=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){this.map.zoomIn();},CLASS_NAME:"OpenLayers.Control.ZoomIn"});OpenLayers.Control.ZoomOut=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){this.map.zoomOut();},CLASS_NAME:"OpenLayers.Control.ZoomOut"});OpenLayers.Control.ZoomToMaxExtent=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){if(this.map){this.map.zoomToMaxExtent();}},CLASS_NAME:"OpenLayers.Control.ZoomToMaxExtent"});OpenLayers.Event={observers:false,KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,element:function(event){return event.target||event.srcElement;},isLeftClick:function(event){return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));},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"],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;} -if(evt==null){evt={};} -evt.object=this.object;evt.element=this.element;if(!evt.type){evt.type=type;} -var listeners=listeners.slice(),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){if(this.includeXY){evt.xy=this.getMousePosition(evt);} -this.triggerEvent(evt.type,evt);},clearMouseCache:function(){this.element.scrolls=null;this.element.lefttop=null;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){this.element.scrolls=[(document.documentElement.scrollLeft||document.body.scrollLeft),(document.documentElement.scrollTop||document.body.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);this.element.offsets[0]+=this.element.scrolls[0];this.element.offsets[1]+=this.element.scrolls[1];} -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.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.Lang["ar"]=OpenLayers.Util.applyDefaults({'permalink':"وصلة دائمة",'baseLayer':"الطبقة الاساسية",'readNotImplemented':"القراءة غير محققة.",'writeNotImplemented':"الكتابة غير محققة",'errorLoadingGML':"خطأ عند تحميل الملف جي ام ال ${url}",'scale':"النسبة = 1 : ${scaleDenom}",'W':"غ",'E':"شر",'N':"شم",'S':"ج"});OpenLayers.Lang["be-tarask"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Неапрацаваны вынік запыту ${statusText}",'permalink':"Сталая спасылка",'overlays':"Слаі",'baseLayer':"Базавы слой",'sameProjection':"Аглядная мапа працуе толькі калі яна мае тую ж праекцыю, што і асноўная мапа",'readNotImplemented':"Функцыянальнасьць чытаньня ня створаная.",'writeNotImplemented':"Функцыянальнасьць запісу ня створаная.",'noFID':"Немагчыма абнавіць магчымасьць, для якога не існуе FID.",'errorLoadingGML':"Памылка загрузкі файла GML ${url}",'browserNotSupported':"Ваш браўзэр не падтрымлівае вэктарную графіку. У цяперашні момант падтрымліваюцца: ${renderers}",'componentShouldBe':"addFeatures : кампанэнт павінен быць ${geomType}",'getFeatureError':"getFeatureFromEvent выкліканы для слоя бяз рэндэру. Звычайна гэта азначае, што Вы зьнішчылі слой, але пакінулі зьвязаны зь ім апрацоўшчык.",'minZoomLevelError':"Уласьцівасьць minZoomLevel прызначана толькі для выкарыстаньня са слаямі вытворнымі ад FixedZoomLevels. Тое, што гэты wfs-слой правяраецца на minZoomLevel — рэха прошлага. Але мы ня можам выдаліць гэтую магчымасьць, таму што ад яе залежаць некаторыя заснаваныя на OL дастасаваньні. Тым ня менш, праверка minZoomLevel будзе выдаленая ў вэрсіі 3.0. Калі ласка, выкарыстоўваеце замест яе ўстаноўкі мінімальнага/максымальнага памераў, як апісана тут: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS-транзакцыя: ПОСЬПЕХ ${response}",'commitFailed':"WFS-транзакцыя: ПАМЫЛКА ${response}",'googleWarning':"Не атрымалася загрузіць слой Google. \x3cbr\x3e\x3cbr\x3eКаб пазбавіцца гэтага паведамленьня, выберыце новы базавы слой у сьпісе ў верхнім правым куце.\x3cbr\x3e\x3cbr\x3e Хутчэй за ўсё, прычына ў тым, што скрыпт бібліятэкі Google Maps ня быў уключаныя альбо не ўтрымлівае слушны API-ключ для Вашага сайта.\x3cbr\x3e\x3cbr\x3eРаспрацоўшчыкам: Для таго, каб даведацца як зрабіць так, каб усё працавала, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eнацісьніце тут\x3c/a\x3e",'getLayerWarning':"Немагчыма загрузіць слой ${layerType}.\x3cbr\x3e\x3cbr\x3eКаб пазбавіцца гэтага паведамленьня, выберыце новы базавы слой у сьпісе ў верхнім правым куце.\x3cbr\x3e\x3cbr\x3eХутчэй за ўсё, прычына ў тым, што скрыпт бібліятэкі ${layerLib} ня быў слушна ўключаны.\x3cbr\x3e\x3cbr\x3eРаспрацоўшчыкам: Для таго, каб даведацца як зрабіць так, каб усё працавала, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eнацісьніце тут\x3c/a\x3e",'scale':"Маштаб = 1 : ${scaleDenom}",'W':"З",'E':"У",'N':"Пн",'S':"Пд",'layerAlreadyAdded':"Вы паспрабавалі дадаць слой ${layerName} на мапу, але ён ужо дададзены",'reprojectDeprecated':"Вы выкарыстоўваеце ўстаноўку \'reproject\' для слоя ${layerName}. Гэтая ўстаноўка зьяўляецца састарэлай: яна выкарыстоўвалася для падтрымкі паказу зьвестак на камэрцыйных базавых мапах, але гэта функцыя цяпер рэалізаваная ў убудаванай падтрымцы сфэрычнай праекцыі Мэркатара. Дадатковая інфармацыя ёсьць на http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Гэты мэтад састарэлы і будзе выдалены ў вэрсіі 3.0. Калі ласка, замест яго выкарыстоўвайце ${newMethod}.",'boundsAddError':"Вам неабходна падаць абодва значэньні x і y для функцыі складаньня.",'lonlatAddError':"Вам неабходна падаць абодва значэньні lon і lat для функцыі складаньня.",'pixelAddError':"Вам неабходна падаць абодва значэньні x і y для функцыі складаньня.",'unsupportedGeometryType':"Тып геамэтрыі не падтрымліваецца: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition failed: верагодна элемэнт з ідэнтыфікатарам ${elemId} займае няслушнае месца.",'filterEvaluateNotImplemented':"evaluate не рэалізаваны для гэтага тыпу фільтру."});OpenLayers.Lang["bg"]=OpenLayers.Util.applyDefaults({'permalink':"Постоянна препратка",'baseLayer':"Основен слой",'errorLoadingGML':"Грешка при зареждане на GML файл ${url}",'scale':"Мащаб = 1 : ${scaleDenom}",'layerAlreadyAdded':"Опитахте да добавите слой ${layerName} в картата, но той вече е добавен",'methodDeprecated':"Този метод е остарял и ще бъде премахват в 3.0. Вместо него използвайте ${newMethod}."});OpenLayers.Lang["br"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Distro evel reked anveret ${statusText}",'permalink':"Peurliamm",'overlays':"Gwiskadoù",'baseLayer':"Gwiskad diazez",'sameProjection':"Ne\'z ar gartenn lec\'hiañ en-dro nemet pa vez heñvel ar banndres anezhi ha hini ar gartenn bennañ",'readNotImplemented':"N\'eo ket emplementet al lenn.",'writeNotImplemented':"N\'eo ket emplementet ar skrivañ.",'noFID':"N\'haller ket hizivaat un elfenn ma n\'eus ket a niverenn-anaout (FID) eviti.",'errorLoadingGML':"Fazi e-ser kargañ ar restr GML ${url}",'browserNotSupported':"N\'eo ket skoret an daskor vektorel gant ho merdeer. Setu aze an daskorerioù skoret evit ar poent :\n${renderers}",'componentShouldBe':"addFeatures : bez\' e tlefe ar parzh besañ eus ar seurt ${geomType}",'getFeatureError':"Galvet eo bet getFeatureFromEvent called war ur gwiskad hep daskorer. Kement-se a dalvez ez eus bet freuzet ur gwiskad hag hoc\'h eus miret un embreger bennak stag outañ.",'minZoomLevelError':"Ne zleer implijout ar perzh minZoomLevel nemet evit gwiskadoù FixedZoomLevels-descendent. Ar fed ma wiria ar gwiskad WHS-se hag-eñ ez eus eus minZoomLevel zo un aspadenn gozh. Koulskoude n\'omp ket evit e ziverkañ kuit da derriñ arloadoù diazezet war OL a c\'hallfe bezañ stag outañ. Setu perak eo dispredet -- Lamet kuit e vo ar gwiriañ minZoomLevel a-is er stumm 3.0. Ober gant an arventennoù bihanañ/brasañ evel deskrivet amañ e plas : http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Treuzgread WFS : MAT EO ${response}",'commitFailed':"Treuzgread WFS Transaction: C\'HWITET ${response}",'googleWarning':"N\'eus ket bet gallet kargañ ar gwiskad Google ent reizh.\x3cbr\x3e\x3cbr\x3eEvit en em zizober eus ar c\'hemenn-mañ, dibabit ur BaseLayer nevez en diuzer gwiskadoù er c\'horn dehoù el laez.\x3cbr\x3e\x3cbr\x3eSur a-walc\'h eo peogwir n\'eo ket bet ensoc\'het levraoueg Google Maps pe neuze ne glot ket an alc\'hwez API gant ho lec\'hienn.\x3cbr\x3e\x3cbr\x3eDiorroerien : Evit reizhañ an dra-se, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eclick here\x3c/a\x3e",'getLayerWarning':"N\'haller ket kargañ ar gwiskad ${layerType} ent reizh.\x3cbr\x3e\x3cbr\x3eEvit en em zizober eus ar c\'hemenn-mañ, dibabit ur BaseLayer nevez en diuzer gwiskadoù er c\'horn dehoù el laez.\x3cbr\x3e\x3cbr\x3eSur a-walc\'h eo peogwir n\'eo ket bet ensoc\'het mat al levraoueg ${layerLib}.\x3cbr\x3e\x3cbr\x3eDiorroerien : Evit gouzout penaos reizhañ an dra-se, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eclick here\x3c/a\x3e",'scale':"Skeul = 1 : ${scaleDenom}",'W':"K",'E':"R",'N':"N",'S':"S",'layerAlreadyAdded':"Klasket hoc\'h eus ouzhpennañ ar gwiskad : ${layerName} d\'ar gartenn, met ouzhpennet e oa bet c\'hoazh",'reprojectDeprecated':"Emaoc\'h oc\'h implijout an dibarzh \'reproject\' war ar gwiskad ${layerName}. Dispredet eo an dibarzh-mañ : bet eo hag e talveze da ziskwel roadennoù war-c\'horre kartennoù diazez kenwerzhel, un dra hag a c\'haller ober bremañ gant an arc\'hwel dre skor banndres boullek Mercator. Muioc\'h a ditouroù a c\'haller da gaout war http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Dispredet eo an daore-se ha tennet e vo kuit eus ar stumm 3.0. Grit gant ${newMethod} e plas.",'boundsAddError':"Rekis eo tremen an div dalvoudenn x ha y d\'an arc\'hwel add.",'lonlatAddError':"Rekis eo tremen an div dalvoudenn hedred ha ledred d\'an arc\'hwel add.",'pixelAddError':"Rekis eo tremen an div dalvoudenn x ha y d\'an arc\'hwel add.",'unsupportedGeometryType':"Seurt mentoniezh anskoret : ${geomType}",'pagePositionFailed':"C\'hwitet eo OpenLayers.Util.pagePosition : marteze emañ lec\'hiet fall an elfenn id ${elemId}.",'filterEvaluateNotImplemented':"N\'eo ket bet emplementet ar priziañ evit seurt siloù c\'hoazh."});OpenLayers.Lang["el"]=OpenLayers.Util.applyDefaults({'scale':"Κλίμακα ~ 1 : ${scaleDenom}"});OpenLayers.Lang.en={'unhandledRequest':"Unhandled request return ${statusText}",'permalink':"Permalink",'overlays':"Overlays",'baseLayer':"Base Layer",'sameProjection':"The overview map only works when it is in the same projection as the main map",'readNotImplemented':"Read not implemented.",'writeNotImplemented':"Write not implemented.",'noFID':"Can't update a feature for which there is no FID.",'errorLoadingGML':"Error in loading GML file ${url}",'browserNotSupported':"Your browser does not support vector rendering. Currently supported renderers are:\n${renderers}",'componentShouldBe':"addFeatures : component should be an ${geomType}",'getFeatureError':"getFeatureFromEvent called on layer with no renderer. This usually means you "+"destroyed a layer, but not some handler which is associated with it.",'minZoomLevelError':"The minZoomLevel property is only intended for use "+"with the FixedZoomLevels-descendent layers. That this "+"wfs layer checks for minZoomLevel is a relic of the"+"past. We cannot, however, remove it without possibly "+"breaking OL based applications that may depend on it."+" Therefore we are deprecating it -- the minZoomLevel "+"check below will be removed at 3.0. Please instead "+"use min/max resolution setting as described here: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS Transaction: SUCCESS ${response}",'commitFailed':"WFS Transaction: FAILED ${response}",'googleWarning':"The Google Layer was unable to load correctly.<br><br>"+"To get rid of this message, select a new BaseLayer "+"in the layer switcher in the upper-right corner.<br><br>"+"Most likely, this is because the Google Maps library "+"script was either not included, or does not contain the "+"correct API key for your site.<br><br>"+"Developers: For help getting this working correctly, "+"<a href='http://trac.openlayers.org/wiki/Google' "+"target='_blank'>click here</a>",'getLayerWarning':"The ${layerType} Layer was unable to load correctly.<br><br>"+"To get rid of this message, select a new BaseLayer "+"in the layer switcher in the upper-right corner.<br><br>"+"Most likely, this is because the ${layerLib} library "+"script was not correctly included.<br><br>"+"Developers: For help getting this working correctly, "+"<a href='http://trac.openlayers.org/wiki/${layerLib}' "+"target='_blank'>click here</a>",'scale':"Scale = 1 : ${scaleDenom}",'W':'W','E':'E','N':'N','S':'S','graticule':'Graticule','layerAlreadyAdded':"You tried to add the layer: ${layerName} to the map, but it has already been added",'reprojectDeprecated':"You are using the 'reproject' option "+"on the ${layerName} layer. This option is deprecated: "+"its use was designed to support displaying data over commercial "+"basemaps, but that functionality should now be achieved by using "+"Spherical Mercator support. More information is available from "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"This method has been deprecated and will be removed in 3.0. "+"Please use ${newMethod} instead.",'boundsAddError':"You must pass both x and y values to the add function.",'lonlatAddError':"You must pass both lon and lat values to the add function.",'pixelAddError':"You must pass both x and y values to the add function.",'unsupportedGeometryType':"Unsupported geometry type: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition failed: element with id ${elemId} may be misplaced.",'filterEvaluateNotImplemented':"evaluate is not implemented for this filter type.",'end':''};OpenLayers.Lang["fi"]=OpenLayers.Util.applyDefaults({'permalink':"Ikilinkki",'overlays':"Kerrokset",'baseLayer':"Peruskerros",'sameProjection':"Yleiskuvakarttaa voi käyttää vain, kun sillä on sama projektio kuin pääkartalla.",'W':"L",'E':"I",'N':"P",'S':"E"});OpenLayers.Lang["fur"]=OpenLayers.Util.applyDefaults({'permalink':"Leam Permanent",'overlays':"Livei parsore",'baseLayer':"Livel di base",'browserNotSupported':"Il to sgarfadôr nol supuarte la renderizazion vetoriâl. Al moment a son supuartâts:\n${renderers}",'scale':"Scjale = 1 : ${scaleDenom}",'W':"O",'E':"E",'N':"N",'S':"S"});OpenLayers.Lang["gl"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Solicitude non xerada; a resposta foi: ${statusText}",'permalink':"Ligazón permanente",'overlays':"Capas superpostas",'baseLayer':"Capa base",'sameProjection':"A vista xeral do mapa só funciona cando está na mesma proxección có mapa principal",'readNotImplemented':"Lectura non implementada.",'writeNotImplemented':"Escritura non implementada.",'noFID':"Non se pode actualizar a funcionalidade para a que non hai FID.",'errorLoadingGML':"Erro ao cargar o ficheiro GML ${url}",'browserNotSupported':"O seu navegador non soporta a renderización de vectores. Os renderizadores soportados actualmente son:\n${renderers}",'componentShouldBe':"addFeatures: o compoñente debera ser de tipo ${geomType}",'getFeatureError':"getFeatureFromEvent ten sido chamado a unha capa sen renderizador. Isto normalmente significa que destruíu unha capa, mais non o executador que está asociado con ela.",'minZoomLevelError':"A propiedade minZoomLevel é só para uso conxuntamente coas capas FixedZoomLevels-descendent. O feito de que esa capa wfs verifique o minZoomLevel é unha reliquia do pasado. Non podemos, con todo, eliminala sen a posibilidade de non romper as aplicacións baseadas en OL que poidan depender dela. Por iso a estamos deixando obsoleta (a comprobación minZoomLevel de embaixo será eliminada na versión 3.0). Por favor, no canto diso use o axuste de resolución mín/máx tal e como está descrito aquí: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transacción WFS: ÉXITO ${response}",'commitFailed':"Transacción WFS: FALLIDA ${response}",'googleWarning':"A capa do Google non puido cargarse correctamente.\x3cbr\x3e\x3cbr\x3ePara evitar esta mensaxe, escolla unha nova capa base no seleccionador de capas na marxe superior dereita.\x3cbr\x3e\x3cbr\x3eProbablemente, isto acontece porque a escritura da libraría do Google Maps ou ben non foi incluída ou ben non contén a clave API correcta para o seu sitio.\x3cbr\x3e\x3cbr\x3eDesenvolvedores: para axudar a facer funcionar isto correctamente, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3epremede aquí\x3c/a\x3e",'getLayerWarning':"A capa ${layerType} foi incapaz de cargarse correctamente.\x3cbr\x3e\x3cbr\x3ePara evitar esta mensaxe, escolla unha nova capa base no seleccionador de capas na marxe superior dereita.\x3cbr\x3e\x3cbr\x3eProbablemente, isto acontece porque a escritura da libraría ${layerLib} non foi ben incluída.\x3cbr\x3e\x3cbr\x3eDesenvolvedores: para axudar a facer funcionar isto correctamente, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3epremede aquí\x3c/a\x3e",'scale':"Escala = 1 : ${scaleDenom}",'W':"O",'E':"L",'N':"N",'S':"S",'layerAlreadyAdded':"Intentou engadir a capa: ${layerName} ao mapa, pero xa fora engadida",'reprojectDeprecated':"Está usando a opción \"reproject\" na capa ${layerName}. Esta opción está obsoleta: o seu uso foi deseñado para a visualización de datos sobre mapas base comerciais, pero esta funcionalidade debera agora ser obtida utilizando a proxección Spherical Mercator. Hai dispoñible máis información en http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Este método está obsoleto e será eliminado na versión 3.0. Por favor, no canto deste use ${newMethod}.",'boundsAddError':"Debe achegar os valores x e y á función add.",'lonlatAddError':"Debe achegar tanto o valor lon coma o lat á función add.",'pixelAddError':"Debe achegar os valores x e y á función add.",'unsupportedGeometryType':"Tipo xeométrico non soportado: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition fallou: o elemento con id ${elemId} pode non estar na súa posición.",'filterEvaluateNotImplemented':"avaliar non está implementado para este tipo de filtro."});OpenLayers.Lang["gsw"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Nit behandleti Aafrogsruckmäldig ${statusText}",'permalink':"Permalink",'overlays':"Iberlagerige",'baseLayer':"Grundcharte",'sameProjection':"D Ibersichts-Charte funktioniert nume, wänn si di glych Projäktion brucht wie d Hauptcharte",'readNotImplemented':"Läse nit implementiert.",'writeNotImplemented':"Schrybe nit implementiert.",'noFID':"E Feature, wu s kei FID derfir git, cha nit aktualisiert wäre.",'errorLoadingGML':"Fähler bim Lade vu dr GML-Datei ${url}",'browserNotSupported':"Dyy Browser unterstitzt kei Vektordarstellig. Aktuäll unterstitzti Renderer:\n${renderers}",'componentShouldBe':"addFeatures : Komponänt sott dr Typ ${geomType} syy",'getFeatureError':"getFeatureFromEvent isch uf eme Layer ohni Renderer ufgruefe wore. Des heisst normalerwys, ass Du e Layer kaputt gmacht hesch, aber nit dr Handler, wu derzue ghert.",'minZoomLevelError':"D minZoomLevel-Eigeschaft isch nume dänk fir d Layer, wu vu dr FixedZoomLevels abstamme. Ass dää wfs-Layer minZoomLevel prieft, scih e Relikt us dr Vergangeheit. Mir chenne s aber nit ändere ohni OL_basierti Aawändige villicht kaputt gehn, wu dervu abhänge. Us däm Grund het die Funktion d Eigeschaft \'deprecated\' iberchuu. D minZoomLevel-Priefig unte wird in dr Version 3.0 usegnuu. Bitte verwänd statt däm e min/max-Uflesig wie s do bschriben isch: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS-Transaktion: ERFOLGRYCH ${response}",'commitFailed':"WFS-Transaktion: FÄHLGSCHLAA ${response}",'googleWarning':"Dr Google-Layer het nit korräkt chenne glade wäre.\x3cbr\x3e\x3cbr\x3eGo die Mäldig nimi z kriege, wehl e andere Hintergrundlayer us em LayerSwitcher im rächte obere Ecke.\x3cbr\x3e\x3cbr\x3eDää Fähler git s seli hyfig, wel s Skript vu dr Google-Maps-Bibliothek nit yybunde woren isch oder wel s kei giltige API-Schlissel fir Dyy URL din het.\x3cbr\x3e\x3cbr\x3eEntwickler: Fir Hilf zum korräkte Yybinde vum Google-Layer \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3edoo drucke\x3c/a\x3e",'getLayerWarning':"Dr ${layerType}-Layer het nit korräkt chenne glade wäre.\x3cbr\x3e\x3cbr\x3eGo die Mäldig nimi z kriege, wehl e andere Hintergrundlayer us em LayerSwitcher im rächte obere Ecke.\x3cbr\x3e\x3cbr\x3eDää Fähler git s seli hyfig, wel s Skript vu dr \'${layerLib}\'-Bibliothek nit yybunde woren isch oder wel s kei giltige API-Schlissel fir Dyy URL din het.\x3cbr\x3e\x3cbr\x3eEntwickler: Fir Hilf zum korräkte Yybinde vu Layer \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3edoo drucke\x3c/a\x3e",'scale':"Maßstab = 1 : ${scaleDenom}",'W':"W",'E':"O",'N':"N",'S':"S",'layerAlreadyAdded':"Du hesch versuecht dää Layer in d Charte yyzfiege: ${layerName}, aber är isch schoi yygfiegt",'reprojectDeprecated':"Du bruchsch d \'reproject\'-Option bim ${layerName}-Layer. Die Option isch nimi giltig: si isch aagleit wore go Date iber kommerziälli Grundcharte lege, aber des sott mer jetz mache mit dr Unterstitzig vu Spherical Mercator. Meh Informatione git s uf http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Die Methode isch veraltet un wird us dr Version 3.0 usegnuu. Bitte verwäbnd statt däm ${newMethod}.",'boundsAddError':"Du muesch e x-Wärt un e y-Wärt yygee bi dr Zuefieg-Funktion",'lonlatAddError':"Du meusch e Lengi- un e Breiti-Grad yygee bi dr Zuefieg-Funktion.",'pixelAddError':"Du muesch x- un y-Wärt aagee bi dr Zuefieg-Funktion.",'unsupportedGeometryType':"Nit unterstitze Geometrii-Typ: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition fählgschlaa: Elemänt mit ID ${elemId} isch villicht falsch gsetzt.",'filterEvaluateNotImplemented':"evaluiere isch nit implemäntiert in däm Filtertyp."});OpenLayers.Lang["hr"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Nepodržani zahtjev ${statusText}",'permalink':"Permalink",'overlays':"Overlays",'baseLayer':"Osnovna karta",'sameProjection':"Pregledna karta radi jedino kao je u istoj projekciji kao i glava karta",'readNotImplemented':"Čitanje nije implementirano.",'writeNotImplemented':"Pisanje nije implementirano.",'noFID':"Ne mogu ažurirati značajku za koju ne postoji FID.",'errorLoadingGML':"Greška u učitavanju GML datoteke ${url}",'browserNotSupported':"Vaš preglednik ne podržava vektorsko renderiranje. Trenutno podržani rendereri su: ${renderers}",'componentShouldBe':"addFeatures : komponenta bi trebala biti ${geomType}",'getFeatureError':"getFeatureFromEvent je pozvao Layer bez renderera. Ovo obično znači da ste uništiili Layer, a ne neki Handler koji je povezan s njim.",'commitSuccess':"WFS Transakcija: USPJEŠNA ${response}",'commitFailed':"WFS Transakcija: NEUSPJEŠNA ${response}",'scale':"Mjerilo = 1 : ${scaleDenom}",'layerAlreadyAdded':"Pokušali ste dodati layer: ${layerName} na kartu, ali je već dodan",'methodDeprecated':"Ova metoda nije odobrena i biti će maknuta u 3.0. Koristite ${newMethod}.",'boundsAddError':"Morate dati obje vrijednosti , x i y da bi dodali funkciju.",'lonlatAddError':"Morate dati obje vrijednosti , (lon i lat) da bi dodali funkciju.",'pixelAddError':"Morate dati obje vrijednosti , x i y da bi dodali funkciju.",'unsupportedGeometryType':"Nepodržani tip geometrije: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition nije uspjelo: element sa id ${elemId} može biti krivo smješten."});OpenLayers.Lang["hsb"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Wotmołwa njewobdźěłaneho naprašowanja ${statusText}",'permalink':"Trajny wotkaz",'overlays':"Naworštowanja",'baseLayer':"Zakładna runina",'sameProjection':"Přehladowa karta jenož funguje, hdyž je w samsnej projekciji kaž hłowna karta",'readNotImplemented':"Čitanje njeimplementowane.",'writeNotImplemented':"Pisanje njeimplementowane.",'noFID':"Funkcija, za kotruž FID njeje, njeda so aktualizować.",'errorLoadingGML':"Zmylk při začitowanju dataje ${url}",'browserNotSupported':"Twój wobhladowak wektorowe rysowanje njepodpěruje. Tuchwilu podpěrowane rysowaki su:\n${renderers}",'componentShouldBe':"addFeatures: komponenta měła ${geomType} być",'getFeatureError':"getFeatureFromEvent bu na woršće bjez rysowak zawołany. To zwjetša woznamjenja, zo sy worštu zničił, ale nic wobdźěłak, kotryž je z njej zwjazany.",'minZoomLevelError':"Kajkosć minZoomLevel je jenož za wužiwanje z worštami myslena, kotrež wot FixedZoomLevels pochadźeja. Zo tuta woršta wfs za minZoomLevel přepruwuje, je relikt zańdźenosće. Njemóžemy wšak ju wotstronić, bjeztoho zo aplikacije, kotrež na OpenLayers bazěruja a snano tutu kajkosć wužiwaja, hižo njefunguja. Tohodla smy ju jako zestarjenu woznamjenili -- přepruwowanje za minZoomLevel budu so we wersiji 3.0 wotstronjeć. Prošu wužij město toho nastajenje min/max, kaž je tu wopisane: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS-Transakcija: WUSPĚŠNA ${response}",'commitFailed':"WFS-Transakcija: NJEPORADŹENA ${response}",'googleWarning':"Woršta Google njemóžeše so korektnje začitać.\x3cbr\x3e\x3cbr\x3eZo by tutu zdźělenku wotbył, wubjer nowy BaseLayer z wuběra worštow horjeka naprawo.\x3cbr\x3e\x3cbr\x3eNajskerje so to stawa, dokelž skript biblioteki Google Maps pak njebu zapřijaty pak njewobsahuje korektny kluč API za twoje sydło.\x3cbr\x3e\x3cbr\x3eWuwiwarjo: Za pomoc ke korektnemu fungowanju worštow\n\x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3etu kliknyć\x3c/a\x3e",'getLayerWarning':"Woršta ${layerType} njemóžeše so korektnje začitać.\x3cbr\x3e\x3cbr\x3eZo by tutu zdźělenku wotbył, wubjer nowy BaseLayer z wuběra worštow horjeka naprawo.\x3cbr\x3e\x3cbr\x3eNajskerje so to stawa, dokelž skript biblioteki ${layerLib} njebu korektnje zapřijaty.\x3cbr\x3e\x3cbr\x3eWuwiwarjo: Za pomoc ke korektnemu fungowanju worštow\n\x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3etu kliknyć\x3c/a\x3e",'scale':"Měritko = 1 : ${scaleDenom}",'W':"Z",'E':"W",'N':"S",'S':"J",'layerAlreadyAdded':"Sy spytał runinu ${layerName} karće dodać, ale je so hižo dodała",'reprojectDeprecated':"Wužiwaš opciju \"reproject\" wořšty ${layerName}. Tuta opcija je zestarjena: jeje wužiwanje bě myslene, zo by zwobraznjenje datow nad komercielnymi bazowymi kartami podpěrało, ale funkcionalnosć měła so nětko z pomocu Sperical Mercator docpěć. Dalše informacije steja na http://trac.openlayers.org/wiki/SphericalMercator k dispoziciji.",'methodDeprecated':"Tuta metoda je so njeschwaliła a budźe so w 3.0 wotstronjeć. Prošu wužij ${newMethod} město toho.",'boundsAddError':"Dyrbiš hódnotu x kaž tež y funkciji \"add\" přepodać.",'lonlatAddError':"Dyrbiš hódnotu lon kaž tež lat funkciji \"add\" přepodać.",'pixelAddError':"Dyrbiš hódnotu x kaž tež y funkciji \"add\" přepodać.",'unsupportedGeometryType':"Njepodpěrowany geometrijowy typ: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition je so njeporadźił: element z id ${elemId} bu snano wopak zaměstnjeny.",'filterEvaluateNotImplemented':"wuhódnoćenje njeje za tutón filtrowy typ implementowany."});OpenLayers.Lang["hu"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Nem kezelt kérés visszatérése ${statusText}",'permalink':"Permalink",'overlays':"Rávetítések",'baseLayer':"Alapréteg",'sameProjection':"Az áttekintő térkép csak abban az esetben működik, ha ugyanazon a vetületen van, mint a fő térkép.",'readNotImplemented':"Olvasás nincs végrehajtva.",'writeNotImplemented':"Írás nincs végrehajtva.",'noFID':"Nem frissíthető olyan jellemző, amely nem rendelkezik FID-del.",'errorLoadingGML':"Hiba GML-fájl betöltésekor ${url}",'browserNotSupported':"A böngészője nem támogatja a vektoros renderelést. A jelenleg támogatott renderelők:\n${renderers}",'componentShouldBe':"addFeatures : az összetevőnek ilyen típusúnak kell lennie: ${geomType}",'getFeatureError':"getFeatureFromEvent réteget hívott meg renderelő nélkül. Ez rendszerint azt jelenti, hogy megsemmisített egy fóliát, de néhány ahhoz társított kezelőt nem.",'minZoomLevelError':"A minZoomLevel tulajdonságot csak a következővel való használatra szánták: FixedZoomLevels-leszármazott fóliák. Ez azt jelenti, hogy a minZoomLevel wfs fólia jelölőnégyzetei már a múlté. Mi azonban nem távolíthatjuk el annak a veszélye nélkül, hogy az esetlegesen ettől függő OL alapú alkalmazásokat tönkretennénk. Ezért ezt érvénytelenítjük -- a minZoomLevel az alul levő jelölőnégyzet a 3.0-s verzióból el lesz távolítva. Kérjük, helyette használja a min/max felbontás beállítást, amelyről az alábbi helyen talál leírást: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS tranzakció: SIKERES ${response}",'commitFailed':"WFS tranzakció: SIKERTELEN ${response}",'googleWarning':"A Google fólia betöltése sikertelen.\x3cbr\x3e\x3cbr\x3eAhhoz, hogy ez az üzenet eltűnjön, válasszon egy új BaseLayer fóliát a jobb felső sarokban található fóliakapcsoló segítségével.\x3cbr\x3e\x3cbr\x3eNagy valószínűséggel ez azért van, mert a Google Maps könyvtár parancsfájlja nem található, vagy nem tartalmazza az Ön oldalához tartozó megfelelő API-kulcsot.\x3cbr\x3e\x3cbr\x3eFejlesztőknek: A helyes működtetésre vonatkozó segítség az alábbi helyen érhető el, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3ekattintson ide\x3c/a\x3e",'getLayerWarning':"A(z) ${layerType} fólia nem töltődött be helyesen.\x3cbr\x3e\x3cbr\x3eAhhoz, hogy ez az üzenet eltűnjön, válasszon egy új BaseLayer fóliát a jobb felső sarokban található fóliakapcsoló segítségével.\x3cbr\x3e\x3cbr\x3eNagy valószínűséggel ez azért van, mert a(z) ${layerLib} könyvtár parancsfájlja helytelen.\x3cbr\x3e\x3cbr\x3eFejlesztőknek: A helyes működtetésre vonatkozó segítség az alábbi helyen érhető el, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3ekattintson ide\x3c/a\x3e",'scale':"Lépték = 1 : ${scaleDenom}",'W':"Ny",'E':"K",'N':"É",'S':"D",'layerAlreadyAdded':"Megpróbálta hozzáadni a(z) ${layerName} fóliát a térképhez, de az már hozzá van adva",'reprojectDeprecated':"Ön a \'reproject\' beállítást használja a(z) ${layerName} fólián. Ez a beállítás érvénytelen: használata az üzleti alaptérképek fölötti adatok megjelenítésének támogatására szolgált, de ezt a funkció ezentúl a Gömbi Mercator használatával érhető el. További információ az alábbi helyen érhető el: http://trac.openlayers.org/wiki/SphericalMercator",'methodDeprecated':"Ez a módszer érvénytelenítve lett és a 3.0-s verzióból el lesz távolítva. Használja a(z) ${newMethod} módszert helyette.",'boundsAddError':"Az x és y értékeknek egyaránt meg kell felelnie, hogy a funkciót hozzáadhassa.",'lonlatAddError':"A hossz. és szél. értékeknek egyaránt meg kell felelnie, hogy a funkciót hozzáadhassa.",'pixelAddError':"Az x és y értékeknek egyaránt meg kell felelnie, hogy a funkciót hozzáadhassa.",'unsupportedGeometryType':"Nem támogatott geometriatípus: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition sikertelen: lehetséges, hogy a(z) ${elemId} azonosítójú elem téves helyre került.",'filterEvaluateNotImplemented':"ennél a szűrőtípusnál kiértékelés nem hajtódik végre."});OpenLayers.Lang["ia"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Le responsa a un requesta non esseva maneate: ${statusText}",'permalink':"Permaligamine",'overlays':"Superpositiones",'baseLayer':"Strato de base",'sameProjection':"Le mini-carta functiona solmente si illo es in le mesme projection que le carta principal",'readNotImplemented':"Lectura non implementate.",'writeNotImplemented':"Scriptura non implementate.",'noFID':"Non pote actualisar un elemento sin FID.",'errorLoadingGML':"Error al cargamento del file GML ${url}",'browserNotSupported':"Tu navigator non supporta le rendition de vectores. Le renditores actualmente supportate es:\n${renderers}",'componentShouldBe':"addFeatures: le componente debe esser del typo ${geomType}",'getFeatureError':"getFeatureFromEvent ha essite appellate in un strato sin renditor. Isto significa generalmente que tu ha destruite un strato, ma lassava un gestor associate con illo.",'minZoomLevelError':"Le proprietate minZoomLevel es solmente pro uso con le stratos descendente de FixedZoomLevels. Le facto que iste strato WFS verifica minZoomLevel es un reliquia del passato. Nonobstante, si nos lo remove immediatemente, nos pote rumper applicationes a base de OL que depende de illo. Ergo nos lo declara obsolete; le verification de minZoomLevel in basso essera removite in version 3.0. Per favor usa in su loco le configuration de resolutiones min/max como describite a: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transaction WFS: SUCCESSO ${response}",'commitFailed':"Transaction WFS: FALLEVA ${response}",'googleWarning':"Le strato Google non poteva esser cargate correctemente.\x3cbr\x3e\x3cbr\x3ePro disfacer te de iste message, selige un nove BaseLayer in le selector de strato in alto a dextra.\x3cbr\x3e\x3cbr\x3eMulto probabilemente, isto es proque le script del libreria de Google Maps non esseva includite o non contine le clave API correcte pro tu sito.\x3cbr\x3e\x3cbr\x3eDisveloppatores: Pro adjuta de corriger isto, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eclicca hic\x3c/a",'getLayerWarning':"Le strato ${layerType} non poteva esser cargate correctemente.\x3cbr\x3e\x3cbr\x3ePro disfacer te de iste message, selige un nove BaseLayer in le selector de strato in alto a dextra.\x3cbr\x3e\x3cbr\x3eMulto probabilemente, isto es proque le script del libreria de ${layerLib} non esseva correctemente includite.\x3cbr\x3e\x3cbr\x3eDisveloppatores: Pro adjuta de corriger isto, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eclicca hic\x3c/a\x3e",'scale':"Scala = 1 : ${scaleDenom}",'W':"W",'E':"E",'N':"N",'S':"S",'layerAlreadyAdded':"Tu tentava adder le strato: ${layerName} al carta, ma illo es ja presente",'reprojectDeprecated':"Tu usa le option \'reproject\' in le strato ${layerName} layer. Iste option es obsolescente: illo esseva pro poter monstrar datos super cartas de base commercial, ma iste functionalitate pote ora esser attingite con le uso de Spherical Mercator. Ulterior information es disponibile a http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Iste methodo ha essite declarate obsolescente e essera removite in version 3.0. Per favor usa ${newMethod} in su loco.",'boundsAddError':"Tu debe passar le duo valores x e y al function add.",'lonlatAddError':"Tu debe passar le duo valores lon e lat al function add.",'pixelAddError':"Tu debe passar le duo valores x e y al function add.",'unsupportedGeometryType':"Typo de geometria non supportate: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition falleva: le elemento con id ${elemId} pote esser mal placiate.",'filterEvaluateNotImplemented':"\"evaluate\" non es implementate pro iste typo de filtro."});OpenLayers.Lang["id"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Permintaan yang tak tertangani menghasilkan ${statusText}",'permalink':"Pranala permanen",'overlays':"Hamparan",'baseLayer':"Lapisan Dasar",'sameProjection':"Peta tinjauan hanya bekerja bila dalam proyeksi yang sama dengan peta utama",'readNotImplemented':"Membaca tidak diterapkan.",'writeNotImplemented':"Menyimpan tidak diterapkan.",'noFID':"Tidak dapat memperbarui fitur yang tidak memiliki FID.",'errorLoadingGML':"Kesalahan dalam memuat berkas GML ${url}",'browserNotSupported':"Peramban Anda tidak mendukung penggambaran vektor. Penggambar yang didukung saat ini adalah:\n${renderers}",'componentShouldBe':"addFeatures : komponen harus berupa ${geomType}",'getFeatureError':"getFeatureFromEvent diterapkan pada lapisan tanpa penggambar. Ini biasanya berarti Anda menghapus sebuah lapisan, tetapi tidak menghapus penangan yang terkait dengannya.",'minZoomLevelError':"Properti minZoomLevel hanya ditujukan bekerja dengan lapisan FixedZoomLevels-descendent. Pengecekan minZoomLevel oleh lapisan wfs adalah peninggalan masa lalu. Kami tidak dapat menghapusnya tanpa kemungkinan merusak aplikasi berbasis OL yang mungkin bergantung padanya. Karenanya, kami menganggapnya tidak berlaku -- Cek minZoomLevel di bawah ini akan dihapus pada 3.0. Silakan gunakan penyetelan resolusi min/maks seperti dijabarkan di sini: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS Transaksi: BERHASIL ${respon}",'commitFailed':"WFS Transaksi: GAGAL ${respon}",'googleWarning':"Lapisan Google tidak dapat dimuat dengan benar.\x3cbr\x3e\x3cbr\x3eUntuk menghilangkan pesan ini, pilih suatu BaseLayer baru melalui penukar lapisan (layer switcher) di ujung kanan atas.\x3cbr\x3e\x3cbr\x3eKemungkinan besar ini karena pustaka skrip Google Maps tidak disertakan atau tidak mengandung kunci API yang tepat untuk situs Anda.\x3cbr\x3e\x3cbr\x3ePengembang: Untuk bantuan mengatasi masalah ini, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eklik di sini\x3c/a\x3e",'getLayerWarning':"Lapisan ${layerType} tidak dapat dimuat dengan benar.\x3cbr\x3e\x3cbr\x3eUntuk menghilangkan pesan ini, pilih suatu BaseLayer baru melalui penukar lapisan (layer switcher) di ujung kanan atas.\x3cbr\x3e\x3cbr\x3eKemungkinan besar ini karena pustaka skrip Google Maps tidak disertakan dengan benar.\x3cbr\x3e\x3cbr\x3ePengembang: Untuk bantuan mengatasi masalah ini, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eklik di sini\x3c/a\x3e",'scale':"Sekala = 1 : ${scaleDenom}",'W':"B",'E':"T",'N':"U",'S':"S",'layerAlreadyAdded':"Anda mencoba menambahkan lapisan: ${layerName} ke dalam peta, tapi lapisan itu telah ditambahkan",'reprojectDeprecated':"Anda menggunakan opsi \'reproject\' pada lapisan ${layerName}. Opsi ini telah ditinggalkan: penggunaannya dirancang untuk mendukung tampilan data melalui peta dasar komersial, tapi fungsionalitas tersebut saat ini harus dilakukan dengan menggunakan dukungan Spherical Mercator. Informasi lebih lanjut tersedia di http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Metode ini telah usang dan akan dihapus di 3.0. Sebaliknya, harap gunakan ${newMethod}.",'boundsAddError':"Anda harus memberikan kedua nilai x dan y ke fungsi penambah.",'lonlatAddError':"Anda harus memberikan kedua nilai lon dan lat ke fungsi penambah.",'pixelAddError':"Anda harus memberikan kedua nilai x dan y ke fungsi penambah.",'unsupportedGeometryType':"Tipe geometri tak didukung: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition gagal: elemen dengan id ${elemId} mungkin salah tempat.",'filterEvaluateNotImplemented':"evaluasi tidak tersedia untuk tipe filter ini."});OpenLayers.Lang["io"]=OpenLayers.Util.applyDefaults({'scale':"Skalo = 1 : ${scaleDenom}"});OpenLayers.Lang["is"]=OpenLayers.Util.applyDefaults({'permalink':"Varanlegur tengill",'overlays':"Þekjur",'baseLayer':"Grunnlag",'sameProjection':"Yfirlitskortið virkar aðeins ef það er í sömu vörpun og aðalkortið",'readNotImplemented':"Skrifun er óútfærð.",'writeNotImplemented':"Lestur er óútfærður.",'errorLoadingGML':"Villa kom upp við að hlaða inn GML skránni ${url}",'scale':"Skali = 1 : ${scaleDenom}",'layerAlreadyAdded':"Þú reyndir að bæta laginu ${layerName} á kortið en það er þegar búið að bæta því við",'methodDeprecated':"Þetta fall hefur verið úrelt og verður fjarlægt í 3.0. Notaðu ${newMethod} í staðin."});OpenLayers.Lang["ja"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"未処理の要求は ${statusText} を返します",'permalink':"パーマリンク",'overlays':"オーバーレイ",'baseLayer':"基底レイヤー",'sameProjection':"概観地図はメインの地図と同じ投影法をとる場合のみ機能します",'readNotImplemented':"読み込みは実装されていません。",'writeNotImplemented':"書き込みは実装されていません。",'noFID':"FID のない地物は更新できません。",'errorLoadingGML':"GML ファイル ${url} の読み込みエラー",'browserNotSupported':"あなたのブラウザはベクターグラフィックスの描写に対応していません。現時点で対応しているソフトウェアは以下のものです。\n${renderers}",'componentShouldBe':"addFeatures: 要素は ${geomType} であるべきです",'getFeatureError':"getFeatureFromEvent がレンダラーのないレイヤーから呼ばれました。通常、これはあなたがレイヤーを、それに関連づけられたいくつかのハンドラを除いて、破壊してしまったことを意味します。",'minZoomLevelError':"minZoomLevel プロパティは FixedZoomLevels を継承するレイヤーでの使用のみを想定しています。この minZoomLevel に対する WFS レイヤーの検査は歴史的なものです。しかしながら、この検査を除去するとそれに依存する OpenLayers ベースのアプリケーションを破壊してしまう可能性があります。よって廃止が予定されており、この minZoomLevel 検査はバージョン3.0で除去されます。代わりに、http://trac.openlayers.org/wiki/SettingZoomLevels で解説されている、最小および最大解像度設定を使用してください。",'commitSuccess':"WFS トランザクション: 成功 ${response}",'commitFailed':"WFS トランザクション: 失敗 ${response}",'googleWarning':"Google レイヤーが正しく読み込みを行えませんでした。\x3cbr\x3e\x3cbr\x3eこのメッセージを消すには、右上の隅にあるレイヤー切り替え部分で新しい基底レイヤーを選んでください。\x3cbr\x3e\x3cbr\x3eおそらく、これは Google マップ用ライブラリのスクリプトが組み込まれていないか、あなたのサイトに対応する正しい API キーが設定されていないためです。\x3cbr\x3e\x3cbr\x3e開発者の方へ: 正しい動作をさせるために\x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eこちらのウィキ\x3c/a\x3eを参照してください。",'getLayerWarning':"${layerType} レイヤーが正しく読み込みを行えませんでした。\x3cbr\x3e\x3cbr\x3eこのメッセージを消すには、右上の隅にあるレイヤー切り替え部分で新しい基底レイヤーを選んでください。\x3cbr\x3e\x3cbr\x3eおそらく、これは ${layerLib} ライブラリのスクリプトが正しく組み込まれていないためです。\x3cbr\x3e\x3cbr\x3e開発者の方へ: 正しい動作をさせるために\x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eこちらのウィキ\x3c/a\x3eを参照してください。",'scale':"縮尺 = 1 : ${scaleDenom}",'W':"西",'E':"東",'N':"北",'S':"南",'layerAlreadyAdded':"あなたは「${layerName}」を地図に追加しようと試みましたが、そのレイヤーは既に追加されています",'reprojectDeprecated':"あなたは「${layerName}」レイヤーで reproject オプションを使っています。このオプションは商用の基底地図上に情報を表示する目的で設計されましたが、現在ではその機能は Spherical Mercator サポートを利用して実現されており、このオプションの使用は非推奨です。追加の情報は http://trac.openlayers.org/wiki/SphericalMercator で入手できます。",'methodDeprecated':"このメソッドは廃止が予定されており、バージョン3.0で除去されます。代わりに ${newMethod} を使用してください。",'boundsAddError':"x と y 両方の値を add 関数に渡さなければなりません。",'lonlatAddError':"lon と lat 両方の値を add 関数に渡さなければなりません。",'pixelAddError':"x と y の値両方を add 関数に渡さなければなりません。",'unsupportedGeometryType':"未対応の形状型: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition が失敗しました: id ${elemId} をもつ要素が誤った位置にある可能性があります。",'filterEvaluateNotImplemented':"このフィルター型について evaluate は実装されていません。"});OpenLayers.Lang["km"]=OpenLayers.Util.applyDefaults({'permalink':"តំណភ្ជាប់អចិន្ត្រៃយ៍",'baseLayer':"ស្រទាប់បាត",'errorLoadingGML':"កំហុសកំឡុងពេលផ្ទុកឯកសារ GML ${url}",'scale':"មាត្រដ្ឋាន = ១ ៖ ${scaleDenom}"});OpenLayers.Lang["ksh"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Met dä Antwoot op en Aanfrooch ham_mer nix aanjefange: ${statusText}",'permalink':"Lengk op Duuer",'overlays':"Drövver jelaat",'baseLayer':"Jrund-Nivoh",'sameProjection':"De Övverseeschs_Kaat deiht et bloß, wann se de sälve Projäxjuhn bruche deiht, wi de Houp_Kaat",'readNotImplemented':"„\x3ccode lang=\"en\"\x3eread\x3c/code\x3e“ is em Projramm nit fürjesinn.",'writeNotImplemented':"„\x3ccode lang=\"en\"\x3ewrite\x3c/code\x3e“ is em Projramm nit fürjesinn.",'noFID':"En Saach, woh kein \x3ci lang=\"en\"\x3eFID\x3c/i\x3e för doh es, löht sesch nit ändere.",'errorLoadingGML':"Fähler beim \x3ci lang=\"en\"\x3eGML\x3c/i\x3e-Datei-Laade vun \x3ccode\x3e${url}\x3c/code\x3e",'browserNotSupported':"Dinge Brauser kann kein Väktore ußjävve. De Zoote Ußjaabe, di em Momang jon, sen:\n${renderers}",'componentShouldBe':"\x3ccode lang=\"en\"\x3eaddFeatures\x3c/code\x3e: dä Aandeil sullt vun dä Zoot „\x3ccode lang=\"en\"\x3e${geomType}\x3c/code\x3e“ sin.",'getFeatureError':"\x3ccode lang=\"en\"\x3egetFeatureFromEvent\x3c/code\x3e es vun enem Nivoh opjeroofe woode, woh et kei Projramm zom Ußjävve jit. Dat bedügg för jewöhnlesch, dat De e Nivoh kapott jemaat häs, ävver nit e Projramm för domet ömzejonn, wat domet verbonge es.",'minZoomLevelError':"De Eijeschaff „\x3ccode lang=\"en\"\x3eminZoomLevel\x3c/code\x3e“ es bloß doför jedaach, dat mer se met dä Nivvohß bruch, di vun \x3ccode lang=\"en\"\x3eFixedZoomLevels\x3c/code\x3e affhange don. Dat dat \x3ci lang=\"en\"\x3eWFS\x3c/i\x3e-Nivvoh övverhoup de Eijeschaff „\x3ccode lang=\"en\"\x3eminZoomLevel\x3c/code\x3e“ pröhfe deiht, es noch övveresch vun fröhjer. Mer künne dat ävver jez nit fott lohße, oohne dat mer Jevaa loufe, dat Aanwendunge vun OpenLayers nit mieh loufe, di sesch doh velleijsch noch drop am verlohße sin. Dröm sare mer, dat mer et nit mieh han welle, un de „\x3ccode lang=\"en\"\x3eminZoomLevel\x3c/code\x3e“-Eijeschaff weed hee vun de Version 3.0 af nit mieh jeprööf wäde. Nemm doför de Enstellung för de hühßte un de kleinßte Oplöhsung, esu wi et en http://trac.openlayers.org/wiki/SettingZoomLevels opjeschrevve es.",'commitSuccess':"Dä \x3ci lang=\"en\"\x3eWFS\x3c/i\x3e-Vörjang es joot jeloufe: ${response}",'commitFailed':"Dä \x3ci lang=\"en\"\x3eWFS\x3c/i\x3e-Vörjang es scheif jejange: ${response}",'googleWarning':"Dat Nivvoh \x3ccode lang=\"en\"\x3eGoogle\x3c/code\x3e kunnt nit reschtesch jelaade wääde.\x3cbr /\x3e\x3cbr /\x3eÖm hee di Nohreesch loß ze krijje, donn en ander Jrund-Nivvoh ußsöhke, rähß bovve en de Äk.\x3cbr /\x3e\x3cbr /\x3eWascheinlesch es dat wiel dat \x3ci lang=\"en\"\x3eGoogle-Maps\x3c/i\x3e-Skrepp entweeder nit reschtesch enjebonge wood, udder nit dä reschtejje \x3ci lang=\"en\"\x3eAPI\x3c/i\x3e-Schlößel för Ding Web-ßait scheke deiht.\x3cbr /\x3e\x3cbr /\x3eFör Projrammierer jidd_et Hölp do_drövver, \x3ca href=\"http://trac.openlayers.org/wiki/Google\" target=\"_blank\"\x3ewi mer dat aan et Loufe brengk\x3c/a\x3e.",'getLayerWarning':"Dat Nivvoh \x3ccode\x3e${layerType}\x3c/code\x3e kunnt nit reschtesch jelaade wääde.\x3cbr /\x3e\x3cbr /\x3eÖm hee di Nohreesch loß ze krijje, donn en ander Jrund-Nivvoh ußsöhkre, rähß bovve en de Äk.\x3cbr /\x3e\x3cbr /\x3eWascheinlesch es dat, wiel dat Skrepp \x3ccode\x3e${layerLib}\x3c/code\x3e nit reschtesch enjebonge wood.\x3cbr /\x3e\x3cbr /\x3eFör Projrammierer jidd_Et Hölp do_drövver, \x3ca href=\"http://trac.openlayers.org/wiki/${layerLib}\" target=\"_blank\"\x3ewi mer dat aan et Loufe brengk\x3c/a\x3e.",'scale':"Mohßshtaab = 1 : ${scaleDenom}",'W':"W",'E':"O",'N':"N",'S':"S",'layerAlreadyAdded':"Do häß versöhk, dat Nivvoh \x3ccode\x3e${layerName}\x3c/code\x3e en di Kaat eren ze bränge, et wohr ävver ald do dren.",'reprojectDeprecated':"Do bruchs de Ußwahl \x3ccode\x3ereproject\x3c/code\x3e op däm Nivvoh \x3ccode\x3e${layerName}\x3c/code\x3e. Di Ußwahl es nit mieh jähn jesinn. Se wohr doför jedaach, öm Date op jeschääfsmäßesch eruß jejovve Kaate bovve drop ze moole, wat ävver enzwesche besser met dä Öngershtözung för de ßfääresche Mäkaator Beldscher jeiht. Doh kanns De mieh drövver fenge op dä Sigg: http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Hee di Metood es nim_mih aktoäll un et weed se en dä Version 3.0 nit mieh jävve. Nemm \x3ccode\x3e${newMethod}\x3c/code\x3e doföör.",'boundsAddError':"Do moß beeds vun de \x3ccode\x3ex\x3c/code\x3e un \x3ccode\x3ey\x3c/code\x3e Wääte aan de Fungkßjohn \x3ccode\x3eadd\x3c/code\x3e jävve.",'lonlatAddError':"Do moß beeds \x3ccode\x3elon\x3c/code\x3e un \x3ccode\x3elat\x3c/code\x3e aan de Fungkßjohn \x3ccode\x3eadd\x3c/code\x3e jävve.",'pixelAddError':"Do moß beeds \x3ccode\x3ex\x3c/code\x3e un \x3ccode\x3ey\x3c/code\x3e aan de Fungkßjohn \x3ccode\x3eadd\x3c/code\x3e jävve.",'unsupportedGeometryType':"De Zoot Jommetrii dom_mer nit ongershtöze: \x3ccode\x3e${geomType}\x3c/code\x3e",'pagePositionFailed':"\x3ccode lang=\"en\"\x3eOpenLayers.Util.pagePosition\x3c/code\x3e es donevve jejange: dat Denge met dä Kännong \x3ccode\x3e${elemId}\x3c/code\x3e künnt am verkeehte Plaz sin.",'filterEvaluateNotImplemented':"„\x3ccode lang=\"en\"\x3eevaluate\x3c/code\x3e“ es för di Zoot Fellter nit enjereschdt."});OpenLayers.Lang["nds"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Unbehannelt Trüchmellels för de Anfraag ${statusText}",'permalink':"Permalink",'overlays':"Overlays",'baseLayer':"Achtergrundkoort",'sameProjection':"De Översichtskoort geiht blot, wenn de sülve Projekschoon as bi de Hööftkoort bruukt warrt",'readNotImplemented':"Lesen is nich inricht.",'writeNotImplemented':"Schrieven is nich inricht.",'noFID':"En Feature, dat keen FID hett, kann nich aktuell maakt warrn.",'errorLoadingGML':"Fehler bi’t Laden vun de GML-Datei ${url}",'browserNotSupported':"Dien Browser ünnerstütt keen Vektorbiller. Ünnerstütt Renderers:\n${renderers}",'componentShouldBe':"addFeatures : Kumponent schull man den Typ ${geomType} hebben",'getFeatureError':"getFeatureFromEvent is von en Laag ahn Render opropen worrn. Dat bedüüdt normalerwies, dat en Laag wegmaakt worrn is, aver nich de Handler, de dor op verwiest.",'commitSuccess':"WFS-Transakschoon: hett klappt ${response}",'commitFailed':"WFS-Transakschoon: hett nich klappt ${response}",'scale':"Skaal = 1 : ${scaleDenom}",'layerAlreadyAdded':"Du versöchst de Laag „${layerName}“ to de Koort totofögen, man de is al toföögt",'methodDeprecated':"Disse Methood is oold un schall dat in 3.0 nich mehr geven. Bruuk dor man beter ${newMethod} för.",'boundsAddError':"De Weert x un y, de mööt all beid an de add-Funkschoon övergeven warrn.",'lonlatAddError':"De Weert lon un lat, de mööt all beid an de add-Funkschoon övergeven warrn.",'pixelAddError':"De Weert x un y, de mööt all beid an de add-Funkschoon övergeven warrn.",'unsupportedGeometryType':"Nich ünnerstütt Geometrie-Typ: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition güng nich: Element mit de Id ${elemId} is villicht an’n verkehrten Platz."});OpenLayers.Lang["nn"]=OpenLayers.Util.applyDefaults({'scale':"Skala = 1 : ${scaleDenom}",'layerAlreadyAdded':"Du freista å leggja til laget «${layerName}» på kartet, men det har alt vorte lagt til.",'boundsAddError':"Du er nøydd til å gje både ein x- og ein y-verdi til «add»-funksjonen.",'lonlatAddError':"Du er nøydd til å gje både lon- og lat-verdiar til «add»-funksjonen.",'pixelAddError':"Du er nøydd til å gje både ein x- og ein y-verdi til «add»-funksjonen."});OpenLayers.Lang["oc"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Requèsta pas gerida, retorna ${statusText}",'permalink':"Permaligam",'overlays':"Calques",'baseLayer':"Calc de basa",'sameProjection':"La carta de situacion fonciona pas que quora sa projeccion es la meteissa que la de la carta principala",'readNotImplemented':"Lectura pas implementada.",'writeNotImplemented':"Escritura pas implementada.",'noFID':"Impossible de metre a jorn un objècte sens identificant (fid).",'errorLoadingGML':"Error al cargament del fichièr GML ${url}",'browserNotSupported':"Vòstre navegidor supòrta pas lo rendut vectorial. Los renderers actualament suportats son : \n${renderers}",'componentShouldBe':"addFeatures : lo compausant deuriá èsser de tipe ${geomType}",'getFeatureError':"getFeatureFromEvent es estat apelat sus un calc sens renderer. Aquò significa generalament qu\'avètz destruch aqueste jaç, mas qu\'avètz conservat un handler que li èra associat.",'minZoomLevelError':"La proprietat minZoomLevel deu èsser utilizada solament per de jaces FixedZoomLevels-descendent. Lo fach qu\'aqueste jaç WFS verifique la preséncia de minZoomLevel es una relica del passat. Çaquelà, la podèm suprimir sens copar d\'aplicacions que ne poirián dependre. Es per aquò que la depreciam -- la verificacion del minZoomLevel serà suprimida en version 3.0. A la plaça, mercés d\'utilizar los paramètres de resolucions min/max tal coma descrich sus : http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transaccion WFS : SUCCES ${response}",'commitFailed':"Transaccion WFS : FRACAS ${response}",'googleWarning':"Lo jaç Google es pas estat en mesura de se cargar corrèctament.\x3cbr\x3e\x3cbr\x3ePer suprimir aqueste messatge, causissètz una BaseLayer novèla dins lo selector de jaç en naut a drecha.\x3cbr\x3e\x3cbr\x3eAquò es possiblament causat par la non-inclusion de la librariá Google Maps, o alara perque que la clau de l\'API correspond pas a vòstre site.\x3cbr\x3e\x3cbr\x3eDesvolopaires : per saber cossí corregir aquò, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eclicatz aicí\x3c/a\x3e",'getLayerWarning':"Lo jaç ${layerType} es pas en mesura de se cargar corrèctament.\x3cbr\x3e\x3cbr\x3ePer suprimir aqueste messatge, causissètz una BaseLayer novèla dins lo selector de jaç en naut a drecha.\x3cbr\x3e\x3cbr\x3eAquò es possiblament causat per la non-inclusion de la librariá ${layerLib}.\x3cbr\x3e\x3cbr\x3eDesvolopaires : per saber cossí corregir aquí, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eclicatz aicí\x3c/a\x3e",'scale':"Escala ~ 1 : ${scaleDenom}",'W':"O",'E':"È",'N':"N",'S':"S",'layerAlreadyAdded':"Avètz ensajat d\'apondre a la carta lo calc : ${layerName}, mas ja es present",'reprojectDeprecated':"Utilizatz l\'opcion \'reproject\' sul jaç ${layerName}. Aquesta opcion es despreciada : Son usatge permetiá d\'afichar de donadas al dessús de jaces raster comercials. Aquesta foncionalitat ara es suportada en utilizant lo supòrt de la projeccion Mercator Esferica. Mai d\'informacion es disponibla sus http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Aqueste metòde es despreciada, e serà suprimida a la version 3.0. Mercés d\'utilizar ${newMethod} a la plaça.",'boundsAddError':"Vos cal passar las doas valors x e y a la foncion add.",'lonlatAddError':"Vos cal passar las doas valors lon e lat a la foncion add.",'pixelAddError':"Vos cal passar las doas valors x e y a la foncion add.",'unsupportedGeometryType':"Tipe de geometria pas suportat : ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition a fracassat : l\'element d\'id ${elemId} poiriá èsser mal posicionat.",'filterEvaluateNotImplemented':"evaluar es pas encara estat implementat per aqueste tipe de filtre."});OpenLayers.Lang["pt"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Servidor devolveu erro não contemplado ${statusText}",'permalink':"Ligação permanente",'overlays':"Sobreposições",'baseLayer':"Camada Base",'sameProjection':"O mapa panorâmico só funciona quando está na mesma projeção que o mapa principal",'readNotImplemented':"Leitura não implementada.",'writeNotImplemented':"Escrita não implementada.",'noFID':"Não é possível atualizar um elemento para a qual não há FID.",'errorLoadingGML':"Erro ao carregar ficheiro GML ${url}",'browserNotSupported':"O seu navegador não suporta renderização vetorial. Actualmente os renderizadores suportados são:\n${renderers}",'componentShouldBe':"addFeatures: componente deve ser um(a) ${geomType}",'getFeatureError':"getFeatureFromEvent foi chamado numa camada sem renderizador. Isto normalmente significa que destruiu uma camada, mas não um manipulador \'\'(handler)\'\' que lhe está associado.",'minZoomLevelError':"A propriedade minZoomLevel só deve ser usada com as camadas descendentes da FixedZoomLevels. A verificação da propriedade por esta camada wfs é uma relíquia do passado. No entanto, não podemos removê-la sem correr o risco de afectar aplicações OL que dependam dela. Portanto, estamos a torná-la obsoleta -- a verificação minZoomLevel será removida na versão 3.0. Em vez dela, por favor, use as opções de resolução min/max descritas aqui: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transacção WFS: SUCESSO ${response}",'commitFailed':"Transacção WFS: FALHOU ${response}",'googleWarning':"A Camada Google não foi correctamente carregada.\x3cbr\x3e\x3cbr\x3ePara deixar de receber esta mensagem, seleccione uma nova Camada-Base no \'\'switcher\'\' de camadas no canto superior direito.\x3cbr\x3e\x3cbr\x3eProvavelmente, isto acontece porque o \'\'script\'\' da biblioteca do Google Maps não foi incluído ou não contém a chave API correcta para o seu sítio.\x3cbr\x3e\x3cbr\x3eProgramadores: Para ajuda sobre como solucionar o problema \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eclique aqui\x3c/a\x3e .",'getLayerWarning':"A camada ${layerType} não foi correctamente carregada.\x3cbr\x3e\x3cbr\x3ePara desactivar esta mensagem, seleccione uma nova Camada-Base no \'\'switcher\'\' de camadas no canto superior direito.\x3cbr\x3e\x3cbr\x3eProvavelmente, isto acontece porque o \'\'script\'\' da biblioteca ${layerLib} não foi incluído correctamente.\x3cbr\x3e\x3cbr\x3eProgramadores: Para ajuda sobre como solucionar o problema \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eclique aqui\x3c/a\x3e .",'scale':"Escala = 1 : ${scaleDenom}",'W':"O",'E':"E",'N':"N",'S':"S",'layerAlreadyAdded':"Você tentou adicionar a camada: ${layerName} ao mapa, mas ela já tinha sido adicionada antes",'reprojectDeprecated':"Está usando a opção \'reproject\' na camada ${layerName}. Esta opção é obsoleta: foi concebida para permitir a apresentação de dados sobre mapas-base comerciais, mas esta funcionalidade é agora suportada pelo Mercator Esférico. Mais informação está disponível em http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Este método foi declarado obsoleto e será removido na versão 3.0. Por favor, use ${newMethod} em vez disso.",'boundsAddError':"Você deve passar tanto o valor x como o y à função de adição.",'lonlatAddError':"Você deve passar tanto o valor lon como o lat à função de adição.",'pixelAddError':"Você deve passar tanto o valor x como o y à função de adição.",'unsupportedGeometryType':"Tipo de geometria não suportado: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition falhou: o elemento com o id ${elemId} poderá estar mal-posicionado.",'filterEvaluateNotImplemented':"avaliar não está implementado para este tipo de filtro."});OpenLayers.Lang["ru"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Необработанный запрос вернул ${statusText}",'permalink':"Постоянная ссылка",'overlays':"Слои",'baseLayer':"Основной слой",'sameProjection':"Обзорная карта работает только тогда, когда имеет ту же проекцию, что и основная",'readNotImplemented':"Чтение не реализовано.",'writeNotImplemented':"Запись не реализована.",'noFID':"Невозможно обновить объект, для которого нет FID.",'errorLoadingGML':"Ошибка при загрузке файла GML ${url}",'browserNotSupported':"Ваш браузер не поддерживает векторную графику. На данный момент поддерживаются:\n${renderers}",'componentShouldBe':"addFeatures: компонент должен быть ${geomType}",'getFeatureError':"getFeatureFromEvent вызван для слоя без рендерера. Обычно это говорит о том, что вы уничтожили слой, но оставили связанный с ним обработчик.",'minZoomLevelError':"Свойство minZoomLevel предназначено только для использования со слоями, являющимися потомками FixedZoomLevels. То, что этот WFS-слой проверяется на minZoomLevel — реликт прошлого. Однако мы не можем удалить эту функцию, так как, возможно, от неё зависят некоторые основанные на OpenLayers приложения. Функция объявлена устаревшей — проверка minZoomLevel будет удалена в 3.0. Пожалуйста, используйте вместо неё настройку мин/макс разрешения, описанную здесь: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Транзакция WFS: УСПЕШНО ${response}",'commitFailed':"Транзакция WFS: ОШИБКА ${response}",'googleWarning':"Слой Google не удалось нормально загрузить.\x3cbr\x3e\x3cbr\x3eЧтобы избавиться от этого сообщения, выбите другой основной слой в переключателе в правом верхнем углу.\x3cbr\x3e\x3cbr\x3eСкорее всего, причина в том, что библиотека Google Maps не была включена или не содержит корректного API-ключа для вашего сайта.\x3cbr\x3e\x3cbr\x3eРазработчикам: чтобы узнать, как сделать, чтобы всё заработало, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eщёлкните тут\x3c/a\x3e",'getLayerWarning':"Слой ${layerType} не удалось нормально загрузить. \x3cbr\x3e\x3cbr\x3eЧтобы избавиться от этого сообщения, выбите другой основной слой в переключателе в правом верхнем углу.\x3cbr\x3e\x3cbr\x3eСкорее всего, причина в том, что библиотека ${layerLib} не была включена или была включена некорректно.\x3cbr\x3e\x3cbr\x3eРазработчикам: чтобы узнать, как сделать, чтобы всё заработало, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eщёлкните тут\x3c/a\x3e",'scale':"Масштаб = 1 : ${scaleDenom}",'W':"З",'E':"В",'N':"С",'S':"Ю",'layerAlreadyAdded':"Вы попытались добавить слой «${layerName}» на карту, но он уже был добавлен",'reprojectDeprecated':"Вы используете опцию \'reproject\' для слоя ${layerName}. Эта опция является устаревшей: ее использование предполагалось для поддержки показа данных поверх коммерческих базовых карт, но теперь этот функционал несёт встроенная поддержка сферической проекции Меркатора. Больше сведений доступно на http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Этот метод считается устаревшим и будет удалён в версии 3.0. Пожалуйста, пользуйтесь ${newMethod}.",'boundsAddError':"Функции add надо передавать оба значения, x и y.",'lonlatAddError':"Функции add надо передавать оба значения, lon и lat.",'pixelAddError':"Функции add надо передавать оба значения, x и y.",'unsupportedGeometryType':"Неподдерживаемый тип геометрии: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition failed: элемент с id ${elemId} может находиться не в нужном месте.",'filterEvaluateNotImplemented':"evaluate не реализовано для фильтра данного типа."});OpenLayers.Lang["sk"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Neobslúžené požiadavky vracajú ${statusText}",'permalink':"Trvalý odkaz",'overlays':"Prekrytia",'baseLayer':"Základná vrstva",'sameProjection':"Prehľadová mapka funguje iba vtedy, keď je v rovnakej projekcii ako hlavná mapa",'readNotImplemented':"Čítanie nie je implementované.",'writeNotImplemented':"Zápis nie je implementovaný.",'noFID':"Nie je možné aktualizovať vlastnosť, pre ktorú neexistuje FID.",'errorLoadingGML':"Chyba pri načítaní súboru GML ${url}",'browserNotSupported':"Váš prehliadač nepodporuje vykresľovanie vektorov. Momentálne podporované vykresľovače sú:\n${renderers}",'componentShouldBe':"addFeatures: komponent by mal byť ${geomType}",'getFeatureError':"getFeatureFromEvent bola zavolaná na vrstve bez vykresľovača. To zvyčajne znamená, že ste odstránili vrstvu, ale nie niektorú z obslúh, ktorá je s ňou asociovaná.",'minZoomLevelError':"Vlastnosť minZoomLevel je určený iba na použitie s vrstvami odvodenými od FixedZoomLevels. To, že táto wfs vrstva kontroluje minZoomLevel je pozostatok z minulosti. Nemôžeme ho však odstrániť, aby sme sa vyhli možnému porušeniu aplikácií založených na Open Layers, ktoré na tomto môže závisieť. Preto ho označujeme ako zavrhovaný - dolu uvedená kontrola minZoomLevel bude odstránená vo verzii 3.0. Použite prosím namiesto toho kontrolu min./max. rozlíšenia podľa tu uvedeného popisu: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transakcia WFS: ÚSPEŠNÁ ${response}",'commitFailed':"Transakcia WFS: ZLYHALA ${response}",'googleWarning':"Vrstvu Google nebolo možné správne načítať.\x3cbr\x3e\x3cbr\x3eAby ste sa tejto správy zbavili vyberte novú BaseLayer v prepínači vrstiev v pravom hornom rohu.\x3cbr\x3e\x3cbr\x3eToto sa stalo pravdepodobne preto, že skript knižnice Google Maps buď nebol načítaný alebo neobsahuje správny kľúč API pre vašu lokalitu.\x3cbr\x3e\x3cbr\x3eVývojári: Tu môžete získať \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3epomoc so sfunkčnením\x3c/a\x3e",'getLayerWarning':"Vrstvu ${layerType} nebolo možné správne načítať.\x3cbr\x3e\x3cbr\x3eAby ste sa tejto správy zbavili vyberte novú BaseLayer v prepínači vrstiev v pravom hornom rohu.\x3cbr\x3e\x3cbr\x3eToto sa stalo pravdepodobne preto, že skript knižnice ${layerType} buď nebol načítaný alebo neobsahuje správny kľúč API pre vašu lokalitu.\x3cbr\x3e\x3cbr\x3eVývojári: Tu môžete získať \x3ca href=\'http://trac.openlayers.org/wiki/${layerType}\' target=\'_blank\'\x3epomoc so sfunkčnením\x3c/a\x3e",'scale':"Mierka = 1 : ${scaleDenom}",'layerAlreadyAdded':"Pokúsili ste sa do mapy pridať vrstvu ${layerName}, ale tá už bola pridaná",'reprojectDeprecated':"Používate voľby „reproject“ vrstvy ${layerType}. Táto voľba je zzavrhovaná: jej použitie bolo navrhnuté na podporu zobrazovania údajov nad komerčnými základovými mapami, ale túto funkcionalitu je teraz možné dosiahnuť pomocou Spherical Mercator. Ďalšie informácie získate na stránke http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Táto metóda je zavrhovaná a bude odstránená vo verzii 3.0. Použite prosím namiesto nej metódu ${newMethod}.",'boundsAddError':"Sčítacej funkcii musíte dať hodnoty x aj y.",'lonlatAddError':"Sčítacej funkcii musíte dať hodnoty lon (zem. dĺžka) aj lat (zem. šírka).",'pixelAddError':"Sčítacej funkcii musíte dať hodnoty x aj y.",'unsupportedGeometryType':"Nepodporovaný typ geometrie: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition zlyhalo: prvok s id ${elemId} môže byť zle umiestnený.",'filterEvaluateNotImplemented':"evaluate nie je implementovaný pre tento typ filtra"});OpenLayers.Lang["te"]=OpenLayers.Util.applyDefaults({'permalink':"స్థిరలింకు",'W':"ప",'E':"తూ",'N':"ఉ",'S':"ద"});OpenLayers.Lang["vi"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Không xử lý được phản hồi ${statusText} cho yêu cầu",'permalink':"Liên kết thường trực",'overlays':"Lấp bản đồ",'baseLayer':"Lớp nền",'sameProjection':"Bản đồ toàn cảnh chỉ hoạt động khi cùng phép chiếu với bản đồ chính",'readNotImplemented':"Chưa hỗ trợ chức năng đọc.",'writeNotImplemented':"Chưa hỗ trợ chức năng viết.",'noFID':"Không thể cập nhật tính năng thiếu FID.",'errorLoadingGML':"Lỗi tải tập tin GML tại ${url}",'browserNotSupported':"Trình duyệt của bạn không hỗ trợ chức năng vẽ bằng vectơ. Hiện hỗ trợ các bộ kết xuất:\n${renderers}",'componentShouldBe':"addFeatures: bộ phận cần phải là ${geomType}",'getFeatureError':"getFeatureFromEvent được gọi từ lớp không có bộ kết xuất. Thường thì có lẽ lớp bị xóa nhưng một phần xử lý của nó vẫn còn.",'minZoomLevelError':"Chỉ nên sử dụng thuộc tính minZoomLevel với các lớp FixedZoomLevels-descendent. Việc lớp wfs này tìm cho minZoomLevel là di tích còn lại từ xưa. Tuy nhiên, nếu chúng tôi dời nó thì sẽ vỡ các chương trình OpenLayers mà dựa trên nó. Bởi vậy chúng tôi phản đối sử dụng nó\x26nbsp;– bước tìm cho minZoomLevel sẽ được dời vào phiên bản 3.0. Xin sử dụng thiết lập độ phân tích tối thiểu / tối đa thay thế, theo hướng dẫn này: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Giao dịch WFS: THÀNH CÔNG ${response}",'commitFailed':"Giao dịch WFS: THẤT BẠI ${response}",'googleWarning':"Không thể tải lớp Google đúng đắn.\x3cbr\x3e\x3cbr\x3eĐể tránh thông báo này lần sau, hãy chọn BaseLayer mới dùng điều khiển chọn lớp ở góc trên phải.\x3cbr\x3e\x3cbr\x3eChắc script thư viện Google Maps hoặc không được bao gồm hoặc không chứa khóa API hợp với website của bạn.\x3cbr\x3e\x3cbr\x3e\x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eTrợ giúp về tính năng này\x3c/a\x3e cho người phát triển.",'getLayerWarning':"Không thể tải lớp ${layerType} đúng đắn.\x3cbr\x3e\x3cbr\x3eĐể tránh thông báo này lần sau, hãy chọn BaseLayer mới dùng điều khiển chọn lớp ở góc trên phải.\x3cbr\x3e\x3cbr\x3eChắc script thư viện ${layerLib} không được bao gồm đúng kiểu.\x3cbr\x3e\x3cbr\x3e\x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eTrợ giúp về tính năng này\x3c/a\x3e cho người phát triển.",'scale':"Tỷ lệ = 1 : ${scaleDenom}",'W':"T",'E':"Đ",'N':"B",'S':"N",'layerAlreadyAdded':"Bạn muốn thêm lớp ${layerName} vào bản đồ, nhưng lớp này đã được thêm",'reprojectDeprecated':"Bạn đang áp dụng chế độ “reproject” vào lớp ${layerName}. Chế độ này đã bị phản đối: nó có mục đích hỗ trợ lấp dữ liệu trên các nền bản đồ thương mại; nên thực hiện hiệu ứng đó dùng tính năng Mercator Hình cầu. Có sẵn thêm chi tiết tại http://trac.openlayers.org/wiki/SphericalMercator .",'methodDeprecated':"Phương thức này đã bị phản đối và sẽ bị dời vào phiên bản 3.0. Xin hãy sử dụng ${newMethod} thay thế.",'boundsAddError':"Cần phải cho cả giá trị x và y vào hàm add.",'lonlatAddError':"Cần phải cho cả giá trị lon và lat vào hàm add.",'pixelAddError':"Cần phải cho cả giá trị x và y vào hàm add.",'unsupportedGeometryType':"Không hỗ trợ kiểu địa lý: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition bị thất bại: nguyên tố với ID ${elemId} có thể ở chỗ sai.",'filterEvaluateNotImplemented':"chưa hỗ trợ evaluate cho loại bộ lọc này."});OpenLayers.Popup.AnchoredBubble=OpenLayers.Class(OpenLayers.Popup.Anchored,{rounded:false,initialize:function(id,lonlat,contentSize,contentHTML,anchor,closeBox,closeBoxCallback){this.padding=new OpenLayers.Bounds(0,OpenLayers.Popup.AnchoredBubble.CORNER_SIZE,0,OpenLayers.Popup.AnchoredBubble.CORNER_SIZE);OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments);},draw:function(px){OpenLayers.Popup.Anchored.prototype.draw.apply(this,arguments);this.setContentHTML();this.setBackgroundColor();this.setOpacity();return this.div;},updateRelativePosition:function(){this.setRicoCorners();},setSize:function(contentSize){OpenLayers.Popup.Anchored.prototype.setSize.apply(this,arguments);this.setRicoCorners();},setBackgroundColor:function(color){if(color!=undefined){this.backgroundColor=color;} -if(this.div!=null){if(this.contentDiv!=null){this.div.style.background="transparent";OpenLayers.Rico.Corner.changeColor(this.groupDiv,this.backgroundColor);}}},setOpacity:function(opacity){OpenLayers.Popup.Anchored.prototype.setOpacity.call(this,opacity);if(this.div!=null){if(this.groupDiv!=null){OpenLayers.Rico.Corner.changeOpacity(this.groupDiv,this.opacity);}}},setBorder:function(border){this.border=0;},setRicoCorners:function(){var corners=this.getCornersToRound(this.relativePosition);var options={corners:corners,color:this.backgroundColor,bgColor:"transparent",blend:false};if(!this.rounded){OpenLayers.Rico.Corner.round(this.div,options);this.rounded=true;}else{OpenLayers.Rico.Corner.reRound(this.groupDiv,options);this.setBackgroundColor();this.setOpacity();}},getCornersToRound:function(){var corners=['tl','tr','bl','br'];var corner=OpenLayers.Bounds.oppositeQuadrant(this.relativePosition);OpenLayers.Util.removeItem(corners,corner);return corners.join(" ");},CLASS_NAME:"OpenLayers.Popup.AnchoredBubble"});OpenLayers.Popup.AnchoredBubble.CORNER_SIZE=5;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.Projection=OpenLayers.Class({proj:null,projCode:null,initialize:function(projCode,options){OpenLayers.Util.extend(this,options);this.projCode=projCode;if(window.Proj4js){this.proj=new Proj4js.Proj(projCode);}},getCode:function(){return this.proj?this.proj.srsCode:this.projCode;},getUnits:function(){return this.proj?this.proj.units:null;},toString:function(){return this.getCode();},equals:function(projection){if(projection&&projection.getCode){return this.getCode()==projection.getCode();}else{return false;}},destroy:function(){delete this.proj;delete this.projCode;},CLASS_NAME:"OpenLayers.Projection"});OpenLayers.Projection.transforms={};OpenLayers.Projection.addTransform=function(from,to,method){if(!OpenLayers.Projection.transforms[from]){OpenLayers.Projection.transforms[from]={};} -OpenLayers.Projection.transforms[from][to]=method;};OpenLayers.Projection.transform=function(point,source,dest){if(source.proj&&dest.proj){point=Proj4js.transform(source.proj,dest.proj,point);}else if(source&&dest&&OpenLayers.Projection.transforms[source.getCode()]&&OpenLayers.Projection.transforms[source.getCode()][dest.getCode()]){OpenLayers.Projection.transforms[source.getCode()][dest.getCode()](point);} -return point;};OpenLayers.Protocol.WFS.v1=OpenLayers.Class(OpenLayers.Protocol,{version:null,srsName:"EPSG:4326",featureType:null,featureNS:null,geometryName:"the_geom",schema:null,featurePrefix:"feature",formatOptions:null,readFormat:null,initialize:function(options){OpenLayers.Protocol.prototype.initialize.apply(this,[options]);if(!options.format){this.format=OpenLayers.Format.WFST(OpenLayers.Util.extend({version:this.version,featureType:this.featureType,featureNS:this.featureNS,featurePrefix:this.featurePrefix,geometryName:this.geometryName,srsName:this.srsName,schema:this.schema},this.formatOptions));} -if(!this.featureNS&&this.featurePrefix){var readNode=this.format.readNode;this.format.readNode=function(node,obj){if(!this.featureNS&&node.prefix==this.featurePrefix){this.featureNS=node.namespaceURI;this.setNamespace("feature",this.featureNS);} -return readNode.apply(this,arguments);};}},destroy:function(){if(this.options&&!this.options.format){this.format.destroy();} -this.format=null;OpenLayers.Protocol.prototype.destroy.apply(this);},read:function(options){OpenLayers.Protocol.prototype.read.apply(this,arguments);options=OpenLayers.Util.extend({},options);OpenLayers.Util.applyDefaults(options,this.options||{});var response=new OpenLayers.Protocol.Response({requestType:"read"});var data=OpenLayers.Format.XML.prototype.write.apply(this.format,[this.format.writeNode("wfs:GetFeature",options)]);response.priv=OpenLayers.Request.POST({url:options.url,callback:this.createCallback(this.handleRead,response,options),params:options.params,headers:options.headers,data:data});return response;},handleRead:function(response,options){if(options.callback){var request=response.priv;if(request.status>=200&&request.status<300){response.features=this.parseFeatures(request);response.code=OpenLayers.Protocol.Response.SUCCESS;}else{response.code=OpenLayers.Protocol.Response.FAILURE;} -options.callback.call(options.scope,response);}},parseFeatures:function(request){var doc=request.responseXML;if(!doc||!doc.documentElement){doc=request.responseText;} -if(!doc||doc.length<=0){return null;} -return(this.readFormat!==null)?this.readFormat.read(doc):this.format.read(doc);},commit:function(features,options){options=OpenLayers.Util.extend({},options);OpenLayers.Util.applyDefaults(options,this.options);var response=new OpenLayers.Protocol.Response({requestType:"commit",reqFeatures:features});response.priv=OpenLayers.Request.POST({url:options.url,data:this.format.write(features,options),callback:this.createCallback(this.handleCommit,response,options)});return response;},handleCommit:function(response,options){if(options.callback){var request=response.priv;var data=request.responseXML;if(!data||!data.documentElement){data=request.responseText;} -var obj=this.format.read(data)||{};response.insertIds=obj.insertIds||[];response.code=(obj.success)?OpenLayers.Protocol.Response.SUCCESS:OpenLayers.Protocol.Response.FAILURE;options.callback.call(options.scope,response);}},filterDelete:function(filter,options){options=OpenLayers.Util.extend({},options);OpenLayers.Util.applyDefaults(options,this.options);var response=new OpenLayers.Protocol.Response({requestType:"commit"});var root=this.format.createElementNSPlus("wfs:Transaction",{attributes:{service:"WFS",version:this.version}});var deleteNode=this.format.createElementNSPlus("wfs:Delete",{attributes:{typeName:(options.featureNS?this.featurePrefix+":":"")+ -options.featureType}});if(options.featureNS){deleteNode.setAttribute("xmlns:"+this.featurePrefix,options.featureNS);} -var filterNode=this.format.writeNode("ogc:Filter",filter);deleteNode.appendChild(filterNode);root.appendChild(deleteNode);var data=OpenLayers.Format.XML.prototype.write.apply(this.format,[root]);return OpenLayers.Request.POST({url:this.url,callback:options.callback||function(){},data:data});},abort:function(response){if(response){response.priv.abort();}},CLASS_NAME:"OpenLayers.Protocol.WFS.v1"});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,isGecko:null,supportUse:null,initialize:function(containerID){if(!this.supported()){return;} -OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments);this.translationParameters={x:0,y:0};this.supportUse=(navigator.userAgent.toLowerCase().indexOf("applewebkit/5")==-1);this.isGecko=(navigator.userAgent.toLowerCase().indexOf("gecko/")!=-1);this.symbolMetrics={};},destroy:function(){OpenLayers.Renderer.Elements.prototype.destroy.apply(this,arguments);},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=this.supportUse===false?"svg":"use";}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);} -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);}else if(this.isComplexSymbol(style.graphicName)){var offset=style.pointRadius*3;var size=offset*2;var id=this.importSymbol(style.graphicName);pos=this.getPosition(node);widthFactor=this.symbolMetrics[id][0]*3/size;var parent=node.parentNode;var nextSibling=node.nextSibling;if(parent){parent.removeChild(node);} -if(this.supportUse===false){var src=document.getElementById(id);node.firstChild&&node.removeChild(node.firstChild);node.appendChild(src.firstChild.cloneNode(true));node.setAttributeNS(null,"viewBox",src.getAttributeNS(null,"viewBox"));}else{node.setAttributeNS(this.xlinkns,"href","#"+id);} -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[id];node.firstChild.setAttributeNS(null,"transform","rotate("+style.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");var tspan=this.nodeFactory(featureId+this.LABEL_ID_SUFFIX+"_tspan","tspan");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.labelSelect===true){label.setAttributeNS(null,"pointer-events","visible");label._featureId=featureId;tspan._featureId=featureId;tspan._geometry=location;tspan._geometryClass=location.CLASS_NAME;}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(this.isGecko){label.setAttributeNS(null,"dominant-baseline",OpenLayers.Renderer.SVG.LABEL_ALIGN[align[1]]||"central");}else{tspan.setAttributeNS(null,"baseline-shift",OpenLayers.Renderer.SVG.LABEL_VSHIFT[align[1]]||"-35%");} -tspan.textContent=style.label;if(!label.parentNode){label.appendChild(tspan);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;if(document.getElementById(id)!=null){return id;} -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.id;},getFeatureIdFromEvent:function(evt){var featureId=OpenLayers.Renderer.Elements.prototype.getFeatureIdFromEvent.apply(this,arguments);if(this.supportUse===false&&!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.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);},destroy:function(){OpenLayers.Renderer.Elements.prototype.destroy.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){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 linearRing,i,j,len,ilen,comp,x,y;for(j=0,len=geometry.components.length;j<len;j++){linearRing=geometry.components[j];path.push("m");for(i=0,ilen=linearRing.components.length;i<ilen;i++){comp=linearRing.components[i];x=(comp.x/resolution-this.offset.x)|0;y=(comp.y/resolution-this.offset.y)|0;path.push(" "+x+","+y);if(i==0){path.push(" l");}} -path.push(" 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.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.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.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){this.layer=layer;this.position=position.clone();this.bounds=bounds.clone();this.url=url;this.size=size.clone();this.id=OpenLayers.Util.createUniqueID("Tile_");this.events=new OpenLayers.Events(this,null,this.EVENT_TYPES);},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.Control.MouseToolbar=OpenLayers.Class(OpenLayers.Control.MouseDefaults,{mode:null,buttons:null,direction:"vertical",buttonClicked:null,initialize:function(position,direction){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.position=new OpenLayers.Pixel(OpenLayers.Control.MouseToolbar.X,OpenLayers.Control.MouseToolbar.Y);if(position){this.position=position;} -if(direction){this.direction=direction;} -this.measureDivs=[];},destroy:function(){for(var btnId in this.buttons){var btn=this.buttons[btnId];btn.map=null;btn.events.destroy();} -OpenLayers.Control.MouseDefaults.prototype.destroy.apply(this,arguments);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);OpenLayers.Control.MouseDefaults.prototype.draw.apply(this,arguments);this.buttons={};var sz=new OpenLayers.Size(28,28);var centered=new OpenLayers.Pixel(OpenLayers.Control.MouseToolbar.X,0);this._addButton("zoombox","drag-rectangle-off.png","drag-rectangle-on.png",centered,sz,"Shift->Drag to zoom to area");centered=centered.add((this.direction=="vertical"?0:sz.w),(this.direction=="vertical"?sz.h:0));this._addButton("pan","panning-hand-off.png","panning-hand-on.png",centered,sz,"Drag the map to pan.");centered=centered.add((this.direction=="vertical"?0:sz.w),(this.direction=="vertical"?sz.h:0));this.switchModeTo("pan");return this.div;},_addButton:function(id,img,activeImg,xy,sz,title){var imgLocation=OpenLayers.Util.getImagesLocation()+img;var activeImgLocation=OpenLayers.Util.getImagesLocation()+activeImg;var btn=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MouseToolbar_"+id,xy,sz,imgLocation,"absolute");this.div.appendChild(btn);btn.imgLocation=imgLocation;btn.activeImgLocation=activeImgLocation;btn.events=new OpenLayers.Events(this,btn,null,true);btn.events.on({"mousedown":this.buttonDown,"mouseup":this.buttonUp,"dblclick":OpenLayers.Event.stop,scope:this});btn.action=id;btn.title=title;btn.alt=title;btn.map=this.map;this.buttons[id]=btn;return btn;},buttonDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} -this.buttonClicked=evt.element.action;OpenLayers.Event.stop(evt);},buttonUp:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} -if(this.buttonClicked!=null){if(this.buttonClicked==evt.element.action){this.switchModeTo(evt.element.action);} -OpenLayers.Event.stop(evt);this.buttonClicked=null;}},defaultDblClick:function(evt){this.switchModeTo("pan");this.performedDrag=false;var newCenter=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(newCenter,this.map.zoom+1);OpenLayers.Event.stop(evt);return false;},defaultMouseDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} -this.mouseDragStart=evt.xy.clone();this.performedDrag=false;this.startViaKeyboard=false;if(evt.shiftKey&&this.mode!="zoombox"){this.switchModeTo("zoombox");this.startViaKeyboard=true;}else if(evt.altKey&&this.mode!="measure"){this.switchModeTo("measure");}else if(!this.mode){this.switchModeTo("pan");} -switch(this.mode){case"zoombox":this.map.div.style.cursor="crosshair";this.zoomBox=OpenLayers.Util.createDiv('zoomBox',this.mouseDragStart,null,null,"absolute","2px solid red");this.zoomBox.style.backgroundColor="white";this.zoomBox.style.filter="alpha(opacity=50)";this.zoomBox.style.opacity="0.50";this.zoomBox.style.fontSize="1px";this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.viewPortDiv.appendChild(this.zoomBox);this.performedDrag=true;break;case"measure":var distance="";if(this.measureStart){var measureEnd=this.map.getLonLatFromViewPortPx(this.mouseDragStart);distance=OpenLayers.Util.distVincenty(this.measureStart,measureEnd);distance=Math.round(distance*100)/100;distance=distance+"km";this.measureStartBox=this.measureBox;} -this.measureStart=this.map.getLonLatFromViewPortPx(this.mouseDragStart);;this.measureBox=OpenLayers.Util.createDiv(null,this.mouseDragStart.add(-2-parseInt(this.map.layerContainerDiv.style.left),-2-parseInt(this.map.layerContainerDiv.style.top)),null,null,"absolute");this.measureBox.style.width="4px";this.measureBox.style.height="4px";this.measureBox.style.fontSize="1px";this.measureBox.style.backgroundColor="red";this.measureBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.layerContainerDiv.appendChild(this.measureBox);if(distance){this.measureBoxDistance=OpenLayers.Util.createDiv(null,this.mouseDragStart.add(-2-parseInt(this.map.layerContainerDiv.style.left),2-parseInt(this.map.layerContainerDiv.style.top)),null,null,"absolute");this.measureBoxDistance.innerHTML=distance;this.measureBoxDistance.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.layerContainerDiv.appendChild(this.measureBoxDistance);this.measureDivs.push(this.measureBoxDistance);} -this.measureBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.layerContainerDiv.appendChild(this.measureBox);this.measureDivs.push(this.measureBox);break;default:this.map.div.style.cursor="move";break;} -document.onselectstart=OpenLayers.Function.False;OpenLayers.Event.stop(evt);},switchModeTo:function(mode){if(mode!=this.mode){if(this.mode&&this.buttons[this.mode]){OpenLayers.Util.modifyAlphaImageDiv(this.buttons[this.mode],null,null,null,this.buttons[this.mode].imgLocation);} -if(this.mode=="measure"&&mode!="measure"){for(var i=0,len=this.measureDivs.length;i<len;i++){if(this.measureDivs[i]){this.map.layerContainerDiv.removeChild(this.measureDivs[i]);}} -this.measureDivs=[];this.measureStart=null;} -this.mode=mode;if(this.buttons[mode]){OpenLayers.Util.modifyAlphaImageDiv(this.buttons[mode],null,null,null,this.buttons[mode].activeImgLocation);} -switch(this.mode){case"zoombox":this.map.div.style.cursor="crosshair";break;default:this.map.div.style.cursor="";break;}}},leaveMode:function(){this.switchModeTo("pan");},defaultMouseMove:function(evt){if(this.mouseDragStart!=null){switch(this.mode){case"zoombox":var deltaX=Math.abs(this.mouseDragStart.x-evt.xy.x);var deltaY=Math.abs(this.mouseDragStart.y-evt.xy.y);this.zoomBox.style.width=Math.max(1,deltaX)+"px";this.zoomBox.style.height=Math.max(1,deltaY)+"px";if(evt.xy.x<this.mouseDragStart.x){this.zoomBox.style.left=evt.xy.x+"px";} -if(evt.xy.y<this.mouseDragStart.y){this.zoomBox.style.top=evt.xy.y+"px";} -break;default:var deltaX=this.mouseDragStart.x-evt.xy.x;var deltaY=this.mouseDragStart.y-evt.xy.y;var size=this.map.getSize();var newXY=new OpenLayers.Pixel(size.w/2+deltaX,size.h/2+deltaY);var newCenter=this.map.getLonLatFromViewPortPx(newXY);this.map.setCenter(newCenter,null,true);this.mouseDragStart=evt.xy.clone();} -this.performedDrag=true;}},defaultMouseUp:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} -switch(this.mode){case"zoombox":this.zoomBoxEnd(evt);if(this.startViaKeyboard){this.leaveMode();} -break;case"pan":if(this.performedDrag){this.map.setCenter(this.map.center);}} -document.onselectstart=null;this.mouseDragStart=null;this.map.div.style.cursor="default";},defaultMouseOut:function(evt){if(this.mouseDragStart!=null&&OpenLayers.Util.mouseLeft(evt,this.map.div)){if(this.zoomBox){this.removeZoomBox();if(this.startViaKeyboard){this.leaveMode();}} -this.mouseDragStart=null;this.map.div.style.cursor="default";}},defaultClick:function(evt){if(this.performedDrag){this.performedDrag=false;return false;}},CLASS_NAME:"OpenLayers.Control.MouseToolbar"});OpenLayers.Control.MouseToolbar.X=6;OpenLayers.Control.MouseToolbar.Y=300;OpenLayers.Control.NavigationHistory=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOGGLE,previous:null,previousOptions:null,next:null,nextOptions:null,limit:50,autoActivate:true,clearOnDeactivate:false,registry:null,nextStack:null,previousStack:null,listeners:null,restoring:false,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.registry=OpenLayers.Util.extend({"moveend":this.getState},this.registry);var previousOptions={trigger:OpenLayers.Function.bind(this.previousTrigger,this),displayClass:this.displayClass+" "+this.displayClass+"Previous"};OpenLayers.Util.extend(previousOptions,this.previousOptions);this.previous=new OpenLayers.Control.Button(previousOptions);var nextOptions={trigger:OpenLayers.Function.bind(this.nextTrigger,this),displayClass:this.displayClass+" "+this.displayClass+"Next"};OpenLayers.Util.extend(nextOptions,this.nextOptions);this.next=new OpenLayers.Control.Button(nextOptions);this.clear();},onPreviousChange:function(state,length){if(state&&!this.previous.active){this.previous.activate();}else if(!state&&this.previous.active){this.previous.deactivate();}},onNextChange:function(state,length){if(state&&!this.next.active){this.next.activate();}else if(!state&&this.next.active){this.next.deactivate();}},destroy:function(){OpenLayers.Control.prototype.destroy.apply(this);this.previous.destroy();this.next.destroy();this.deactivate();for(var prop in this){this[prop]=null;}},setMap:function(map){this.map=map;this.next.setMap(map);this.previous.setMap(map);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.next.draw();this.previous.draw();},previousTrigger:function(){var current=this.previousStack.shift();var state=this.previousStack.shift();if(state!=undefined){this.nextStack.unshift(current);this.previousStack.unshift(state);this.restoring=true;this.restore(state);this.restoring=false;this.onNextChange(this.nextStack[0],this.nextStack.length);this.onPreviousChange(this.previousStack[1],this.previousStack.length-1);}else{this.previousStack.unshift(current);} -return state;},nextTrigger:function(){var state=this.nextStack.shift();if(state!=undefined){this.previousStack.unshift(state);this.restoring=true;this.restore(state);this.restoring=false;this.onNextChange(this.nextStack[0],this.nextStack.length);this.onPreviousChange(this.previousStack[1],this.previousStack.length-1);} -return state;},clear:function(){this.previousStack=[];this.previous.deactivate();this.nextStack=[];this.next.deactivate();},getState:function(){return{center:this.map.getCenter(),resolution:this.map.getResolution(),projection:this.map.getProjectionObject(),units:this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units};},restore:function(state){var center,zoom;if(this.map.getProjectionObject()==state.projection){zoom=this.map.getZoomForResolution(state.resolution);center=state.center;}else{center=state.center.clone();center.transform(state.projection,this.map.getProjectionObject());var sourceUnits=state.units;var targetUnits=this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units;var resolutionFactor=sourceUnits&&targetUnits?OpenLayers.INCHES_PER_UNIT[sourceUnits]/OpenLayers.INCHES_PER_UNIT[targetUnits]:1;zoom=this.map.getZoomForResolution(resolutionFactor*state.resolution);} -this.map.setCenter(center,zoom);},setListeners:function(){this.listeners={};for(var type in this.registry){this.listeners[type]=OpenLayers.Function.bind(function(){if(!this.restoring){var state=this.registry[type].apply(this,arguments);this.previousStack.unshift(state);if(this.previousStack.length>1){this.onPreviousChange(this.previousStack[1],this.previousStack.length-1);} -if(this.previousStack.length>(this.limit+1)){this.previousStack.pop();} -if(this.nextStack.length>0){this.nextStack=[];this.onNextChange(null,0);}} -return true;},this);}},activate:function(){var activated=false;if(this.map){if(OpenLayers.Control.prototype.activate.apply(this)){if(this.listeners==null){this.setListeners();} -for(var type in this.listeners){this.map.events.register(type,this,this.listeners[type]);} -activated=true;if(this.previousStack.length==0){this.initStack();}}} -return activated;},initStack:function(){if(this.map.getCenter()){this.listeners.moveend();}},deactivate:function(){var deactivated=false;if(this.map){if(OpenLayers.Control.prototype.deactivate.apply(this)){for(var type in this.listeners){this.map.events.unregister(type,this,this.listeners[type]);} -if(this.clearOnDeactivate){this.clear();} -deactivated=true;}} -return deactivated;},CLASS_NAME:"OpenLayers.Control.NavigationHistory"});OpenLayers.Control.PanPanel=OpenLayers.Class(OpenLayers.Control.Panel,{slideFactor:50,initialize:function(options){OpenLayers.Control.Panel.prototype.initialize.apply(this,[options]);this.addControls([new OpenLayers.Control.Pan(OpenLayers.Control.Pan.NORTH,{slideFactor:this.slideFactor}),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.SOUTH,{slideFactor:this.slideFactor}),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.EAST,{slideFactor:this.slideFactor}),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.WEST,{slideFactor:this.slideFactor})]);},CLASS_NAME:"OpenLayers.Control.PanPanel"});OpenLayers.Control.PanZoomBar=OpenLayers.Class(OpenLayers.Control.PanZoom,{zoomStopWidth:18,zoomStopHeight:11,slider:null,sliderEvents:null,zoombarDiv:null,divEvents:null,zoomWorldIcon:false,forceFixedZoomLevel:false,mouseDragStart:null,zoomStart:null,initialize:function(){OpenLayers.Control.PanZoom.prototype.initialize.apply(this,arguments);},destroy:function(){this._removeZoomBar();this.map.events.un({"changebaselayer":this.redraw,scope:this});OpenLayers.Control.PanZoom.prototype.destroy.apply(this,arguments);delete this.mouseDragStart;delete this.zoomStart;},setMap:function(map){OpenLayers.Control.PanZoom.prototype.setMap.apply(this,arguments);this.map.events.register("changebaselayer",this,this.redraw);},redraw:function(){if(this.div!=null){this.removeButtons();this._removeZoomBar();} -this.draw();},draw:function(px){OpenLayers.Control.prototype.draw.apply(this,arguments);px=this.position.clone();this.buttons=[];var sz=new OpenLayers.Size(18,18);var centered=new OpenLayers.Pixel(px.x+sz.w/2,px.y);var wposition=sz.w;if(this.zoomWorldIcon){centered=new OpenLayers.Pixel(px.x+sz.w,px.y);} -this._addButton("panup","north-mini.png",centered,sz);px.y=centered.y+sz.h;this._addButton("panleft","west-mini.png",px,sz);if(this.zoomWorldIcon){this._addButton("zoomworld","zoom-world-mini.png",px.add(sz.w,0),sz);wposition*=2;} -this._addButton("panright","east-mini.png",px.add(wposition,0),sz);this._addButton("pandown","south-mini.png",centered.add(0,sz.h*2),sz);this._addButton("zoomin","zoom-plus-mini.png",centered.add(0,sz.h*3+5),sz);centered=this._addZoomBar(centered.add(0,sz.h*4+5));this._addButton("zoomout","zoom-minus-mini.png",centered,sz);return this.div;},_addZoomBar:function(centered){var imgLocation=OpenLayers.Util.getImagesLocation();var id=this.id+"_"+this.map.id;var zoomsToEnd=this.map.getNumZoomLevels()-1-this.map.getZoom();var slider=OpenLayers.Util.createAlphaImageDiv(id,centered.add(-1,zoomsToEnd*this.zoomStopHeight),new OpenLayers.Size(20,9),imgLocation+"slider.png","absolute");this.slider=slider;this.sliderEvents=new OpenLayers.Events(this,slider,null,true,{includeXY:true});this.sliderEvents.on({"mousedown":this.zoomBarDown,"mousemove":this.zoomBarDrag,"mouseup":this.zoomBarUp,"dblclick":this.doubleClick,"click":this.doubleClick});var sz=new OpenLayers.Size();sz.h=this.zoomStopHeight*this.map.getNumZoomLevels();sz.w=this.zoomStopWidth;var div=null;if(OpenLayers.Util.alphaHack()){var id=this.id+"_"+this.map.id;div=OpenLayers.Util.createAlphaImageDiv(id,centered,new OpenLayers.Size(sz.w,this.zoomStopHeight),imgLocation+"zoombar.png","absolute",null,"crop");div.style.height=sz.h+"px";}else{div=OpenLayers.Util.createDiv('OpenLayers_Control_PanZoomBar_Zoombar'+this.map.id,centered,sz,imgLocation+"zoombar.png");} -this.zoombarDiv=div;this.divEvents=new OpenLayers.Events(this,div,null,true,{includeXY:true});this.divEvents.on({"mousedown":this.divClick,"mousemove":this.passEventToSlider,"dblclick":this.doubleClick,"click":this.doubleClick});this.div.appendChild(div);this.startTop=parseInt(div.style.top);this.div.appendChild(slider);this.map.events.register("zoomend",this,this.moveZoomBar);centered=centered.add(0,this.zoomStopHeight*this.map.getNumZoomLevels());return centered;},_removeZoomBar:function(){this.sliderEvents.un({"mousedown":this.zoomBarDown,"mousemove":this.zoomBarDrag,"mouseup":this.zoomBarUp,"dblclick":this.doubleClick,"click":this.doubleClick});this.sliderEvents.destroy();this.divEvents.un({"mousedown":this.divClick,"mousemove":this.passEventToSlider,"dblclick":this.doubleClick,"click":this.doubleClick});this.divEvents.destroy();this.div.removeChild(this.zoombarDiv);this.zoombarDiv=null;this.div.removeChild(this.slider);this.slider=null;this.map.events.unregister("zoomend",this,this.moveZoomBar);},passEventToSlider:function(evt){this.sliderEvents.handleBrowserEvent(evt);},divClick:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} -var y=evt.xy.y;var top=OpenLayers.Util.pagePosition(evt.object)[1];var levels=(y-top)/this.zoomStopHeight;if(this.forceFixedZoomLevel||!this.map.fractionalZoom){levels=Math.floor(levels);} -var zoom=(this.map.getNumZoomLevels()-1)-levels;zoom=Math.min(Math.max(zoom,0),this.map.getNumZoomLevels()-1);this.map.zoomTo(zoom);OpenLayers.Event.stop(evt);},zoomBarDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} -this.map.events.on({"mousemove":this.passEventToSlider,"mouseup":this.passEventToSlider,scope:this});this.mouseDragStart=evt.xy.clone();this.zoomStart=evt.xy.clone();this.div.style.cursor="move";this.zoombarDiv.offsets=null;OpenLayers.Event.stop(evt);},zoomBarDrag:function(evt){if(this.mouseDragStart!=null){var deltaY=this.mouseDragStart.y-evt.xy.y;var offsets=OpenLayers.Util.pagePosition(this.zoombarDiv);if((evt.clientY-offsets[1])>0&&(evt.clientY-offsets[1])<parseInt(this.zoombarDiv.style.height)-2){var newTop=parseInt(this.slider.style.top)-deltaY;this.slider.style.top=newTop+"px";this.mouseDragStart=evt.xy.clone();} -OpenLayers.Event.stop(evt);}},zoomBarUp:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} -if(this.mouseDragStart){this.div.style.cursor="";this.map.events.un({"mouseup":this.passEventToSlider,"mousemove":this.passEventToSlider,scope:this});var deltaY=this.zoomStart.y-evt.xy.y;var zoomLevel=this.map.zoom;if(!this.forceFixedZoomLevel&&this.map.fractionalZoom){zoomLevel+=deltaY/this.zoomStopHeight;zoomLevel=Math.min(Math.max(zoomLevel,0),this.map.getNumZoomLevels()-1);}else{zoomLevel+=Math.round(deltaY/this.zoomStopHeight);} -this.map.zoomTo(zoomLevel);this.mouseDragStart=null;this.zoomStart=null;OpenLayers.Event.stop(evt);}},moveZoomBar:function(){var newTop=((this.map.getNumZoomLevels()-1)-this.map.getZoom())*this.zoomStopHeight+this.startTop+1;this.slider.style.top=newTop+"px";},CLASS_NAME:"OpenLayers.Control.PanZoomBar"});OpenLayers.Control.Permalink=OpenLayers.Class(OpenLayers.Control,{argParserClass:OpenLayers.Control.ArgParser,element:null,base:'',displayProjection:null,initialize:function(element,base,options){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.div.className=this.displayClass;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 href=this.base;if(href.indexOf('?')!=-1){href=href.substring(0,href.indexOf('?'));} -href+='?'+OpenLayers.Util.getParameterString(this.createParams());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.Control.ZoomPanel=OpenLayers.Class(OpenLayers.Control.Panel,{initialize:function(options){OpenLayers.Control.Panel.prototype.initialize.apply(this,[options]);this.addControls([new OpenLayers.Control.ZoomIn(),new OpenLayers.Control.ZoomToMaxExtent(),new OpenLayers.Control.ZoomOut()]);},CLASS_NAME:"OpenLayers.Control.ZoomPanel"});OpenLayers.Format.CSWGetDomain=function(options){options=OpenLayers.Util.applyDefaults(options,OpenLayers.Format.CSWGetDomain.DEFAULTS);var cls=OpenLayers.Format.CSWGetDomain["v"+options.version.replace(/\./g,"_")];if(!cls){throw"Unsupported CSWGetDomain version: "+options.version;} -return new cls(options);};OpenLayers.Format.CSWGetDomain.DEFAULTS={"version":"2.0.2"};OpenLayers.Format.CSWGetRecords=function(options){options=OpenLayers.Util.applyDefaults(options,OpenLayers.Format.CSWGetRecords.DEFAULTS);var cls=OpenLayers.Format.CSWGetRecords["v"+options.version.replace(/\./g,"_")];if(!cls){throw"Unsupported CSWGetRecords version: "+options.version;} -return new cls(options);};OpenLayers.Format.CSWGetRecords.DEFAULTS={"version":"2.0.2"};OpenLayers.Format.JSON=OpenLayers.Class(OpenLayers.Format,{indent:" ",space:" ",newline:"\n",level:0,pretty:false,initialize:function(options){OpenLayers.Format.prototype.initialize.apply(this,[options]);},read:function(json,filter){try{if(/^[\],:{}\s]*$/.test(json.replace(/\\["\\\/bfnrtu]/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){var 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);} -if(this.keepData){this.data=object;} -return object;}}catch(e){} -return null;},write:function(value,pretty){this.pretty=!!pretty;var json=null;var type=typeof value;if(this.serialize[type]){try{json=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.Format.WFST=function(options){options=OpenLayers.Util.applyDefaults(options,OpenLayers.Format.WFST.DEFAULTS);var cls=OpenLayers.Format.WFST["v"+options.version.replace(/\./g,"_")];if(!cls){throw"Unsupported WFST version: "+options.version;} -return new cls(options);};OpenLayers.Format.WFST.DEFAULTS={"version":"1.0.0"};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;},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.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.Map=OpenLayers.Class({Z_INDEX_BASE:{BaseLayer:100,Overlay:325,Feature:725,Popup:750,Control:1000},EVENT_TYPES:["preaddlayer","addlayer","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,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);id=this.id+"_OpenLayers_Container";this.layerContainerDiv=OpenLayers.Util.createDiv(id);this.layerContainerDiv.style.zIndex=this.Z_INDEX_BASE['Popup']-1;this.viewPortDiv.appendChild(this.layerContainerDiv);this.events=new OpenLayers.Events(this,this.div,this.EVENT_TYPES,this.fallThrough,{includeXY:true});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){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.events.attachToElement(this.div);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){OpenLayers.Util.extend(this,options);},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.allOverlays){layer.isBaseLayer=false;} -if(this.events.triggerEvent("preaddlayer",{layer:layer})===false){return;} -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.afterAdd();},addLayers:function(layers){for(var i=0,len=layers.length;i<len;i++){this.addLayer(layers[i]);}},removeLayer:function(layer,setNewBaseLayer){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});},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.getCenter();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.getCenter();if(this.baseLayer!=null&¢er!=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.getCenter();} -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;if(this.center){center=this.center.clone();} -return center;},getZoom:function(){return this.zoom;},pan:function(dx,dy,options){options=OpenLayers.Util.applyDefaults(options,{animate:true,dragging:false});var centerPx=this.getViewPortPxFromLonLat(this.getCenter());var newCenterPx=centerPx.add(dx,dy);if(!options.dragging||!newCenterPx.equals(centerPx)){var newCenterLonLat=this.getLonLatFromViewPortPx(newCenterPx);if(options.animate){this.panTo(newCenterLonLat);}else{this.setCenter(newCenterLonLat,null,options.dragging);}}},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.getCenter();if(lonlat.lon==center.lon&&lonlat.lat==center.lat){return;} -var from={lon:center.lon,lat:center.lat};var to={lon:lonlat.lon,lat:lonlat.lat};this.panTween.start(from,to,this.panDuration,{callbacks:{start:OpenLayers.Function.bind(function(lonlat){this.events.triggerEvent("movestart");},this),eachStep:OpenLayers.Function.bind(function(lonlat){lonlat=new OpenLayers.LonLat(lonlat.lon,lonlat.lat);this.moveTo(lonlat,this.zoom,{'dragging':true,'noEvent':true});},this),done:OpenLayers.Function.bind(function(lonlat){lonlat=new OpenLayers.LonLat(lonlat.lon,lonlat.lat);this.moveTo(lonlat,this.zoom,{'noEvent':true});this.events.triggerEvent("moveend");},this)}});}else{this.setCenter(lonlat);}},setCenter:function(lonlat,zoom,dragging,forceZoomChange){this.moveTo(lonlat,zoom,{'dragging':dragging,'forceZoomChange':forceZoomChange,'caller':'setCenter'});},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;var forceZoomChange=options.forceZoomChange;var noEvent=options.noEvent;if(this.panTween&&options.caller=="setCenter"){this.panTween.stop();} -if(!this.center&&!this.isValidLonLat(lonlat)){lonlat=this.maxExtent.getCenterLonLat();} -if(this.restrictedExtent!=null){if(lonlat==null){lonlat=this.getCenter();} -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){if(!this.dragging&&!noEvent){this.events.triggerEvent("movestart");} -if(centerChanged){if((!zoomChanged)&&(this.center)){this.centerLayerContainer(lonlat);} -this.center=lonlat.clone();} -if((zoomChanged)||(this.layerContainerOrigin==null)){this.layerContainerOrigin=this.center.clone();this.layerContainerDiv.style.left="0px";this.layerContainerDiv.style.top="0px";} -if(zoomChanged){this.zoom=zoom;this.resolution=this.getResolutionForZoom(zoom);this.viewRequestID++;} -var bounds=this.getExtent();if(this.baseLayer.visibility){this.baseLayer.moveTo(bounds,zoomChanged,dragging);if(dragging){this.baseLayer.events.triggerEvent("move");}else{this.baseLayer.events.triggerEvent("moveend",{"zoomChanged":zoomChanged});}} -bounds=this.baseLayer.getExtent();for(var i=0,len=this.layers.length;i<len;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,dragging);if(dragging){layer.events.triggerEvent("move");}else{layer.events.triggerEvent("moveend",{"zoomChanged":zoomChanged});}}}} -if(zoomChanged){for(var i=0,len=this.popups.length;i<len;i++){this.popups[i].updatePosition();}} -this.events.triggerEvent("move");if(zoomChanged){this.events.triggerEvent("zoomend");}} -if(!dragging&&!noEvent){this.events.triggerEvent("moveend");} -this.dragging=!!dragging;},centerLayerContainer:function(lonlat){var originPx=this.getViewPortPxFromLonLat(this.layerContainerOrigin);var newPx=this.getViewPortPxFromLonLat(lonlat);if((originPx!=null)&&(newPx!=null)){this.layerContainerDiv.style.left=Math.round(originPx.x-newPx.x)+"px";this.layerContainerDiv.style.top=Math.round(originPx.y-newPx.y)+"px";}},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.getCenter();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.getCenter()||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.Marker=OpenLayers.Class({icon:null,lonlat:null,events:null,map:null,initialize:function(lonlat,icon){this.lonlat=lonlat;var newIcon=(icon)?icon:OpenLayers.Marker.defaultIcon();if(this.icon==null){this.icon=newIcon;}else{this.icon.url=newIcon.url;this.icon.size=newIcon.size;this.icon.offset=newIcon.offset;this.icon.calculateOffset=newIcon.calculateOffset;} -this.events=new OpenLayers.Events(this,this.icon.imageDiv,null);},destroy:function(){this.erase();this.map=null;this.events.destroy();this.events=null;if(this.icon!=null){this.icon.destroy();this.icon=null;}},draw:function(px){return this.icon.draw(px);},erase:function(){if(this.icon!=null){this.icon.erase();}},moveTo:function(px){if((px!=null)&&(this.icon!=null)){this.icon.moveTo(px);} -this.lonlat=this.map.getLonLatFromLayerPx(px);},isDrawn:function(){var isDrawn=(this.icon&&this.icon.isDrawn());return isDrawn;},onScreen:function(){var onScreen=false;if(this.map){var screenBounds=this.map.getExtent();onScreen=screenBounds.containsLonLat(this.lonlat);} -return onScreen;},inflate:function(inflate){if(this.icon){var newSize=new OpenLayers.Size(this.icon.size.w*inflate,this.icon.size.h*inflate);this.icon.setSize(newSize);}},setOpacity:function(opacity){this.icon.setOpacity(opacity);},setUrl:function(url){this.icon.setUrl(url);},display:function(display){this.icon.display(display);},CLASS_NAME:"OpenLayers.Marker"});OpenLayers.Marker.defaultIcon=function(){var url=OpenLayers.Util.getImagesLocation()+"marker.png";var size=new OpenLayers.Size(21,25);var calculateOffset=function(size){return new OpenLayers.Pixel(-(size.w/2),-size.h);};return new OpenLayers.Icon(url,size,null,calculateOffset);};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.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},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=config.url;if(config.params){var paramString=OpenLayers.Util.getParameterString(config.params);if(paramString.length>0){var separator=(url.indexOf('?')>-1)?'&':'?';url+=separator+paramString;}} -if(config.proxy&&(url.indexOf("http")==0)){if(typeof config.proxy=="function"){url=config.proxy(url);}else{url=config.proxy+encodeURIComponent(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._aborted!==true){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;} -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);}};OpenLayers.Tile.Image=OpenLayers.Class(OpenLayers.Tile,{url:null,imgDiv:null,frame:null,layerAlphaHack:null,isBackBuffer:false,lastRatio:1,isFirstDraw:true,backBufferTile:null,initialize:function(layer,position,bounds,url,size){OpenLayers.Tile.prototype.initialize.apply(this,arguments);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){if(this.layerAlphaHack){OpenLayers.Event.stopObservingElement(this.imgDiv.childNodes[0]);} -OpenLayers.Event.stopObservingElement(this.imgDiv);if(this.imgDiv.parentNode==this.frame){this.frame.removeChild(this.imgDiv);this.imgDiv.map=null;} -this.imgDiv.urls=null;this.imgDiv.src=OpenLayers.Util.getImagesLocation()+"blank.gif";} -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.imgDiv==null){this.initImgDiv();} -this.imgDiv.viewRequestID=this.layer.map.viewRequestID;if(this.layer.async){this.layer.getURLasync(this.bounds,this,"url",this.positionImage);}else{if(this.layer.url instanceof Array){this.imgDiv.urls=this.layer.url.slice();} -this.url=this.layer.getURL(this.bounds);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(){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);} -this.imgDiv.className='olTileImage';this.frame.style.zIndex=this.isBackBuffer?0:1;this.frame.appendChild(this.imgDiv);this.layer.div.appendChild(this.frame);if(this.layer.opacity!=null){OpenLayers.Util.modifyDOMElement(this.imgDiv,null,null,null,null,null,null,this.layer.opacity);} -this.imgDiv.map=this.layer.map;var onload=function(){if(this.isLoading){this.isLoading=false;this.events.triggerEvent("loadend");}};if(this.layerAlphaHack){OpenLayers.Event.observe(this.imgDiv.childNodes[0],'load',OpenLayers.Function.bind(onload,this));}else{OpenLayers.Event.observe(this.imgDiv,'load',OpenLayers.Function.bind(onload,this));} -var onerror=function(){if(this.imgDiv._attempts>OpenLayers.IMAGE_RELOAD_ATTEMPTS){onload.call(this);}};OpenLayers.Event.observe(this.imgDiv,"error",OpenLayers.Function.bind(onerror,this));},checkImgURL:function(){if(this.layer){var loaded=this.layerAlphaHack?this.imgDiv.firstChild.src:this.imgDiv.src;if(!OpenLayers.Util.isEquivalentUrl(loaded,this.url)){this.hide();}}},startTransition:function(){if(!this.backBufferTile||!this.backBufferTile.imgDiv){return;} -var ratio=1;if(this.backBufferTile.resolution){ratio=this.backBufferTile.resolution/this.layer.getResolution();} -if(ratio!=this.lastRatio){if(this.layer.transitionEffect=='resize'){var upperLeft=new OpenLayers.LonLat(this.backBufferTile.bounds.left,this.backBufferTile.bounds.top);var size=new OpenLayers.Size(this.backBufferTile.size.w*ratio,this.backBufferTile.size.h*ratio);var px=this.layer.map.getLayerPxFromLonLat(upperLeft);OpenLayers.Util.modifyDOMElement(this.backBufferTile.frame,null,px,size);var imageSize=this.backBufferTile.imageSize;imageSize=new OpenLayers.Size(imageSize.w*ratio,imageSize.h*ratio);var imageOffset=this.backBufferTile.imageOffset;if(imageOffset){imageOffset=new OpenLayers.Pixel(imageOffset.x*ratio,imageOffset.y*ratio);} -OpenLayers.Util.modifyDOMElement(this.backBufferTile.imgDiv,null,imageOffset,imageSize);this.backBufferTile.show();}}else{if(this.layer.singleTile){this.backBufferTile.show();}else{this.backBufferTile.hide();}} -this.lastRatio=ratio;},show:function(){this.frame.style.display='';if(OpenLayers.Util.indexOf(this.layer.SUPPORTED_TRANSITIONS,this.layer.transitionEffect)!=-1){if(navigator.userAgent.toLowerCase().indexOf("gecko")!=-1){this.frame.scrollLeft=this.frame.scrollLeft;}}},hide:function(){this.frame.style.display='none';},CLASS_NAME:"OpenLayers.Tile.Image"});OpenLayers.Tile.Image.useBlankTile=(OpenLayers.Util.getBrowserName()=="safari"||OpenLayers.Util.getBrowserName()=="opera");OpenLayers.Control.OverviewMap=OpenLayers.Class(OpenLayers.Control,{element:null,ovmap:null,size:new OpenLayers.Size(180,90),layers:null,minRectSize:15,minRectDisplayClass:"RectReplacement",minRatio:8,maxRatio:32,mapOptions:null,autoPan:false,handlers:null,resolutionFactor:1,maximized:false,initialize:function(options){this.layers=[];this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,[options]);},destroy:function(){if(!this.mapDiv){return;} -if(this.handlers.click){this.handlers.click.destroy();} -if(this.handlers.drag){this.handlers.drag.destroy();} -this.mapDiv.removeChild(this.extentRectangle);this.extentRectangle=null;if(this.rectEvents){this.rectEvents.destroy();this.rectEvents=null;} -if(this.ovmap){this.ovmap.destroy();this.ovmap=null;} -this.element.removeChild(this.mapDiv);this.mapDiv=null;this.div.removeChild(this.element);this.element=null;if(this.maximizeDiv){OpenLayers.Event.stopObservingElement(this.maximizeDiv);this.div.removeChild(this.maximizeDiv);this.maximizeDiv=null;} -if(this.minimizeDiv){OpenLayers.Event.stopObservingElement(this.minimizeDiv);this.div.removeChild(this.minimizeDiv);this.minimizeDiv=null;} -this.map.events.un({"moveend":this.update,"changebaselayer":this.baseLayerDraw,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!(this.layers.length>0)){if(this.map.baseLayer){var layer=this.map.baseLayer.clone();this.layers=[layer];}else{this.map.events.register("changebaselayer",this,this.baseLayerDraw);return this.div;}} -this.element=document.createElement('div');this.element.className=this.displayClass+'Element';this.element.style.display='none';this.mapDiv=document.createElement('div');this.mapDiv.style.width=this.size.w+'px';this.mapDiv.style.height=this.size.h+'px';this.mapDiv.style.position='relative';this.mapDiv.style.overflow='hidden';this.mapDiv.id=OpenLayers.Util.createUniqueID('overviewMap');this.extentRectangle=document.createElement('div');this.extentRectangle.style.position='absolute';this.extentRectangle.style.zIndex=1000;this.extentRectangle.className=this.displayClass+'ExtentRectangle';this.mapDiv.appendChild(this.extentRectangle);this.element.appendChild(this.mapDiv);this.div.appendChild(this.element);if(!this.outsideViewport){this.div.className+=" "+this.displayClass+'Container';var imgLocation=OpenLayers.Util.getImagesLocation();var img=imgLocation+'layer-switcher-maximize.png';this.maximizeDiv=OpenLayers.Util.createAlphaImageDiv(this.displayClass+'MaximizeButton',null,new OpenLayers.Size(18,18),img,'absolute');this.maximizeDiv.style.display='none';this.maximizeDiv.className=this.displayClass+'MaximizeButton';OpenLayers.Event.observe(this.maximizeDiv,'click',OpenLayers.Function.bindAsEventListener(this.maximizeControl,this));this.div.appendChild(this.maximizeDiv);var img=imgLocation+'layer-switcher-minimize.png';this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv('OpenLayers_Control_minimizeDiv',null,new OpenLayers.Size(18,18),img,'absolute');this.minimizeDiv.style.display='none';this.minimizeDiv.className=this.displayClass+'MinimizeButton';OpenLayers.Event.observe(this.minimizeDiv,'click',OpenLayers.Function.bindAsEventListener(this.minimizeControl,this));this.div.appendChild(this.minimizeDiv);var eventsToStop=['dblclick','mousedown'];for(var i=0,len=eventsToStop.length;i<len;i++){OpenLayers.Event.observe(this.maximizeDiv,eventsToStop[i],OpenLayers.Event.stop);OpenLayers.Event.observe(this.minimizeDiv,eventsToStop[i],OpenLayers.Event.stop);} -this.minimizeControl();}else{this.element.style.display='';} -if(this.map.getExtent()){this.update();} -this.map.events.register('moveend',this,this.update);if(this.maximized){this.maximizeControl();} -return this.div;},baseLayerDraw:function(){this.draw();this.map.events.unregister("changebaselayer",this,this.baseLayerDraw);},rectDrag:function(px){var deltaX=this.handlers.drag.last.x-px.x;var deltaY=this.handlers.drag.last.y-px.y;if(deltaX!=0||deltaY!=0){var rectTop=this.rectPxBounds.top;var rectLeft=this.rectPxBounds.left;var rectHeight=Math.abs(this.rectPxBounds.getHeight());var rectWidth=this.rectPxBounds.getWidth();var newTop=Math.max(0,(rectTop-deltaY));newTop=Math.min(newTop,this.ovmap.size.h-this.hComp-rectHeight);var newLeft=Math.max(0,(rectLeft-deltaX));newLeft=Math.min(newLeft,this.ovmap.size.w-this.wComp-rectWidth);this.setRectPxBounds(new OpenLayers.Bounds(newLeft,newTop+rectHeight,newLeft+rectWidth,newTop));}},mapDivClick:function(evt){var pxCenter=this.rectPxBounds.getCenterPixel();var deltaX=evt.xy.x-pxCenter.x;var deltaY=evt.xy.y-pxCenter.y;var top=this.rectPxBounds.top;var left=this.rectPxBounds.left;var height=Math.abs(this.rectPxBounds.getHeight());var width=this.rectPxBounds.getWidth();var newTop=Math.max(0,(top+deltaY));newTop=Math.min(newTop,this.ovmap.size.h-height);var newLeft=Math.max(0,(left+deltaX));newLeft=Math.min(newLeft,this.ovmap.size.w-width);this.setRectPxBounds(new OpenLayers.Bounds(newLeft,newTop+height,newLeft+width,newTop));this.updateMapToRect();},maximizeControl:function(e){this.element.style.display='';this.showToggle(false);if(e!=null){OpenLayers.Event.stop(e);}},minimizeControl:function(e){this.element.style.display='none';this.showToggle(true);if(e!=null){OpenLayers.Event.stop(e);}},showToggle:function(minimize){this.maximizeDiv.style.display=minimize?'':'none';this.minimizeDiv.style.display=minimize?'none':'';},update:function(){if(this.ovmap==null){this.createMap();} -if(this.autoPan||!this.isSuitableOverview()){this.updateOverview();} -this.updateRectToMap();},isSuitableOverview:function(){var mapExtent=this.map.getExtent();var maxExtent=this.map.maxExtent;var testExtent=new OpenLayers.Bounds(Math.max(mapExtent.left,maxExtent.left),Math.max(mapExtent.bottom,maxExtent.bottom),Math.min(mapExtent.right,maxExtent.right),Math.min(mapExtent.top,maxExtent.top));if(this.ovmap.getProjection()!=this.map.getProjection()){testExtent=testExtent.transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject());} -var resRatio=this.ovmap.getResolution()/this.map.getResolution();return((resRatio>this.minRatio)&&(resRatio<=this.maxRatio)&&(this.ovmap.getExtent().containsBounds(testExtent)));},updateOverview:function(){var mapRes=this.map.getResolution();var targetRes=this.ovmap.getResolution();var resRatio=targetRes/mapRes;if(resRatio>this.maxRatio){targetRes=this.minRatio*mapRes;}else if(resRatio<=this.minRatio){targetRes=this.maxRatio*mapRes;} -var center;if(this.ovmap.getProjection()!=this.map.getProjection()){center=this.map.center.clone();center.transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject());}else{center=this.map.center;} -this.ovmap.setCenter(center,this.ovmap.getZoomForResolution(targetRes*this.resolutionFactor));this.updateRectToMap();},createMap:function(){var options=OpenLayers.Util.extend({controls:[],maxResolution:'auto',fallThrough:false},this.mapOptions);this.ovmap=new OpenLayers.Map(this.mapDiv,options);OpenLayers.Event.stopObserving(window,'unload',this.ovmap.unloadDestroy);this.ovmap.addLayers(this.layers);this.ovmap.zoomToMaxExtent();this.wComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-left-width'))+ -parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-right-width'));this.wComp=(this.wComp)?this.wComp:2;this.hComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-top-width'))+ -parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-bottom-width'));this.hComp=(this.hComp)?this.hComp:2;this.handlers.drag=new OpenLayers.Handler.Drag(this,{move:this.rectDrag,done:this.updateMapToRect},{map:this.ovmap});this.handlers.click=new OpenLayers.Handler.Click(this,{"click":this.mapDivClick},{"single":true,"double":false,"stopSingle":true,"stopDouble":true,"pixelTolerance":1,map:this.ovmap});this.handlers.click.activate();this.rectEvents=new OpenLayers.Events(this,this.extentRectangle,null,true);this.rectEvents.register("mouseover",this,function(e){if(!this.handlers.drag.active&&!this.map.dragging){this.handlers.drag.activate();}});this.rectEvents.register("mouseout",this,function(e){if(!this.handlers.drag.dragging){this.handlers.drag.deactivate();}});if(this.ovmap.getProjection()!=this.map.getProjection()){var sourceUnits=this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units;var targetUnits=this.ovmap.getProjectionObject().getUnits()||this.ovmap.units||this.ovmap.baseLayer.units;this.resolutionFactor=sourceUnits&&targetUnits?OpenLayers.INCHES_PER_UNIT[sourceUnits]/OpenLayers.INCHES_PER_UNIT[targetUnits]:1;}},updateRectToMap:function(){var bounds;if(this.ovmap.getProjection()!=this.map.getProjection()){bounds=this.map.getExtent().transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject());}else{bounds=this.map.getExtent();} -var pxBounds=this.getRectBoundsFromMapBounds(bounds);if(pxBounds){this.setRectPxBounds(pxBounds);}},updateMapToRect:function(){var lonLatBounds=this.getMapBoundsFromRectBounds(this.rectPxBounds);if(this.ovmap.getProjection()!=this.map.getProjection()){lonLatBounds=lonLatBounds.transform(this.ovmap.getProjectionObject(),this.map.getProjectionObject());} -this.map.panTo(lonLatBounds.getCenterLonLat());},setRectPxBounds:function(pxBounds){var top=Math.max(pxBounds.top,0);var left=Math.max(pxBounds.left,0);var bottom=Math.min(pxBounds.top+Math.abs(pxBounds.getHeight()),this.ovmap.size.h-this.hComp);var right=Math.min(pxBounds.left+pxBounds.getWidth(),this.ovmap.size.w-this.wComp);var width=Math.max(right-left,0);var height=Math.max(bottom-top,0);if(width<this.minRectSize||height<this.minRectSize){this.extentRectangle.className=this.displayClass+ -this.minRectDisplayClass;var rLeft=left+(width/2)-(this.minRectSize/2);var rTop=top+(height/2)-(this.minRectSize/2);this.extentRectangle.style.top=Math.round(rTop)+'px';this.extentRectangle.style.left=Math.round(rLeft)+'px';this.extentRectangle.style.height=this.minRectSize+'px';this.extentRectangle.style.width=this.minRectSize+'px';}else{this.extentRectangle.className=this.displayClass+'ExtentRectangle';this.extentRectangle.style.top=Math.round(top)+'px';this.extentRectangle.style.left=Math.round(left)+'px';this.extentRectangle.style.height=Math.round(height)+'px';this.extentRectangle.style.width=Math.round(width)+'px';} -this.rectPxBounds=new OpenLayers.Bounds(Math.round(left),Math.round(bottom),Math.round(right),Math.round(top));},getRectBoundsFromMapBounds:function(lonLatBounds){var leftBottomLonLat=new OpenLayers.LonLat(lonLatBounds.left,lonLatBounds.bottom);var rightTopLonLat=new OpenLayers.LonLat(lonLatBounds.right,lonLatBounds.top);var leftBottomPx=this.getOverviewPxFromLonLat(leftBottomLonLat);var rightTopPx=this.getOverviewPxFromLonLat(rightTopLonLat);var bounds=null;if(leftBottomPx&&rightTopPx){bounds=new OpenLayers.Bounds(leftBottomPx.x,leftBottomPx.y,rightTopPx.x,rightTopPx.y);} -return bounds;},getMapBoundsFromRectBounds:function(pxBounds){var leftBottomPx=new OpenLayers.Pixel(pxBounds.left,pxBounds.bottom);var rightTopPx=new OpenLayers.Pixel(pxBounds.right,pxBounds.top);var leftBottomLonLat=this.getLonLatFromOverviewPx(leftBottomPx);var rightTopLonLat=this.getLonLatFromOverviewPx(rightTopPx);return new OpenLayers.Bounds(leftBottomLonLat.lon,leftBottomLonLat.lat,rightTopLonLat.lon,rightTopLonLat.lat);},getLonLatFromOverviewPx:function(overviewMapPx){var size=this.ovmap.size;var res=this.ovmap.getResolution();var center=this.ovmap.getExtent().getCenterLonLat();var delta_x=overviewMapPx.x-(size.w/2);var delta_y=overviewMapPx.y-(size.h/2);return new OpenLayers.LonLat(center.lon+delta_x*res,center.lat-delta_y*res);},getOverviewPxFromLonLat:function(lonlat){var res=this.ovmap.getResolution();var extent=this.ovmap.getExtent();var px=null;if(extent){px=new OpenLayers.Pixel(Math.round(1/res*(lonlat.lon-extent.left)),Math.round(1/res*(extent.top-lonlat.lat)));} -return px;},CLASS_NAME:'OpenLayers.Control.OverviewMap'});OpenLayers.Feature=OpenLayers.Class({layer:null,id:null,lonlat:null,data:null,marker:null,popupClass:OpenLayers.Popup.AnchoredBubble,popup:null,initialize:function(layer,lonlat,data){this.layer=layer;this.lonlat=lonlat;this.data=(data!=null)?data:{};this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){if((this.layer!=null)&&(this.layer.map!=null)){if(this.popup!=null){this.layer.map.removePopup(this.popup);}} -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){var id=this.id+"_popup";var anchor=(this.marker)?this.marker.icon:null;if(!this.popup){this.popup=new this.popupClass(id,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.Format.CSWGetDomain.v2_0_2=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",csw:"http://www.opengis.net/cat/csw/2.0.2"},defaultPrefix:"csw",version:"2.0.2",schemaLocation:"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",PropertyName:null,ParameterName:null,initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -if(data&&data.nodeType==9){data=data.documentElement;} -var obj={};this.readNode(data,obj);return obj;},readers:{"csw":{"GetDomainResponse":function(node,obj){this.readChildNodes(node,obj);},"DomainValues":function(node,obj){if(!(obj.DomainValues instanceof Array)){obj.DomainValues=[];} -var attrs=node.attributes;var domainValue={};for(var i=0,len=attrs.length;i<len;++i){domainValue[attrs[i].name]=attrs[i].nodeValue;} -this.readChildNodes(node,domainValue);obj.DomainValues.push(domainValue);},"PropertyName":function(node,obj){obj.PropertyName=this.getChildValue(node);},"ParameterName":function(node,obj){obj.ParameterName=this.getChildValue(node);},"ListOfValues":function(node,obj){if(!(obj.ListOfValues instanceof Array)){obj.ListOfValues=[];} -this.readChildNodes(node,obj.ListOfValues);},"Value":function(node,obj){var attrs=node.attributes;var value={} -for(var i=0,len=attrs.length;i<len;++i){value[attrs[i].name]=attrs[i].nodeValue;} -value.value=this.getChildValue(node);obj.push({Value:value});},"ConceptualScheme":function(node,obj){obj.ConceptualScheme={};this.readChildNodes(node,obj.ConceptualScheme);},"Name":function(node,obj){obj.Name=this.getChildValue(node);},"Document":function(node,obj){obj.Document=this.getChildValue(node);},"Authority":function(node,obj){obj.Authority=this.getChildValue(node);},"RangeOfValues":function(node,obj){obj.RangeOfValues={};this.readChildNodes(node,obj.RangeOfValues);},"MinValue":function(node,obj){var attrs=node.attributes;var value={} -for(var i=0,len=attrs.length;i<len;++i){value[attrs[i].name]=attrs[i].nodeValue;} -value.value=this.getChildValue(node);obj.MinValue=value;},"MaxValue":function(node,obj){var attrs=node.attributes;var value={} -for(var i=0,len=attrs.length;i<len;++i){value[attrs[i].name]=attrs[i].nodeValue;} -value.value=this.getChildValue(node);obj.MaxValue=value;}}},write:function(options){var node=this.writeNode("csw:GetDomain",options);return OpenLayers.Format.XML.prototype.write.apply(this,[node]);},writers:{"csw":{"GetDomain":function(options){var node=this.createElementNSPlus("csw:GetDomain",{attributes:{service:"CSW",version:this.version}});if(options.PropertyName||this.PropertyName){this.writeNode("csw:PropertyName",options.PropertyName||this.PropertyName,node);}else if(options.ParameterName||this.ParameterName){this.writeNode("csw:ParameterName",options.ParameterName||this.ParameterName,node);} -this.readChildNodes(node,options);return node;},"PropertyName":function(value){var node=this.createElementNSPlus("csw:PropertyName",{value:value});return node;},"ParameterName":function(value){var node=this.createElementNSPlus("csw:ParameterName",{value:value});return node;}}},CLASS_NAME:"OpenLayers.Format.CSWGetDomain.v2_0_2"});OpenLayers.Format.Context=OpenLayers.Class({version:null,layerOptions:null,layerParams:null,parser:null,initialize:function(options){OpenLayers.Util.extend(this,options);this.options=options;},read:function(data,options){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -var root=data.documentElement;var version=this.version;if(!version){version=root.getAttribute("version");} -var parser=this.getParser(version);var context=parser.read(data,options);var map;if(options&&options.map){this.context=context;if(options.map instanceof OpenLayers.Map){map=this.mergeContextToMap(context,options.map);}else{var mapOptions=options.map;if(OpenLayers.Util.isElement(mapOptions)||typeof mapOptions=="string"){mapOptions={div:mapOptions};} -map=this.contextToMap(context,mapOptions);}}else{map=context;} -return map;},getLayerFromContext:function(layerContext){var i,len;var options={queryable:layerContext.queryable,visibility:layerContext.visibility,maxExtent:layerContext.maxExtent,metadata:OpenLayers.Util.applyDefaults(layerContext.metadata,{styles:layerContext.styles}),numZoomLevels:layerContext.numZoomLevels,units:layerContext.units,isBaseLayer:layerContext.isBaseLayer,opacity:layerContext.opacity,displayInLayerSwitcher:layerContext.displayInLayerSwitcher,singleTile:layerContext.singleTile,tileSize:(layerContext.tileSize)?new OpenLayers.Size(layerContext.tileSize.width,layerContext.tileSize.height):undefined,minScale:layerContext.minScale||layerContext.maxScaleDenominator,maxScale:layerContext.maxScale||layerContext.minScaleDenominator};if(this.layerOptions){OpenLayers.Util.applyDefaults(options,this.layerOptions);} -var params={layers:layerContext.name,transparent:layerContext.transparent,version:layerContext.version};if(layerContext.formats&&layerContext.formats.length>0){params.format=layerContext.formats[0].value;for(i=0,len=layerContext.formats.length;i<len;i++){var format=layerContext.formats[i];if(format.current==true){params.format=format.value;break;}}} -if(layerContext.styles&&layerContext.styles.length>0){for(i=0,len=layerContext.styles.length;i<len;i++){var style=layerContext.styles[i];if(style.current==true){if(style.href){params.sld=style.href;}else if(style.body){params.sld_body=style.body;}else{params.styles=style.name;} -break;}}} -if(this.layerParams){OpenLayers.Util.applyDefaults(params,this.layerParams);} -var layer=null;var service=layerContext.service;if(service==OpenLayers.Format.Context.serviceTypes.WFS){options.strategies=[new OpenLayers.Strategy.BBOX()];options.protocol=new OpenLayers.Protocol.WFS({url:layerContext.url,featurePrefix:layerContext.name.split(":")[0],featureType:layerContext.name.split(":").pop()});layer=new OpenLayers.Layer.Vector(layerContext.title||layerContext.name,options);}else if(service==OpenLayers.Format.Context.serviceTypes.KML){options.strategies=[new OpenLayers.Strategy.Fixed()];options.protocol=new OpenLayers.Protocol.HTTP({url:layerContext.url,format:new OpenLayers.Format.KML()});layer=new OpenLayers.Layer.Vector(layerContext.title||layerContext.name,options);}else if(service==OpenLayers.Format.Context.serviceTypes.GML){options.strategies=[new OpenLayers.Strategy.Fixed()];options.protocol=new OpenLayers.Protocol.HTTP({url:layerContext.url,format:new OpenLayers.Format.GML()});layer=new OpenLayers.Layer.Vector(layerContext.title||layerContext.name,options);}else if(layerContext.features){layer=new OpenLayers.Layer.Vector(layerContext.title||layerContext.name,options);layer.addFeatures(layerContext.features);}else if(layerContext.categoryLayer!==true){layer=new OpenLayers.Layer.WMS(layerContext.title||layerContext.name,layerContext.url,params,options);} -return layer;},getLayersFromContext:function(layersContext){var layers=[];for(var i=0,len=layersContext.length;i<len;i++){var layer=this.getLayerFromContext(layersContext[i]);if(layer!==null){layers.push(layer);}} -return layers;},contextToMap:function(context,options){options=OpenLayers.Util.applyDefaults({maxExtent:context.maxExtent,projection:context.projection},options);var map=new OpenLayers.Map(options);map.addLayers(this.getLayersFromContext(context.layersContext));map.setCenter(context.bounds.getCenterLonLat(),map.getZoomForExtent(context.bounds,true));return map;},mergeContextToMap:function(context,map){map.addLayers(this.getLayersFromContext(context.layersContext));return map;},write:function(obj,options){obj=this.toContext(obj);var version=options&&options.version;var parser=this.getParser(version);var context=parser.write(obj,options);return context;},CLASS_NAME:"OpenLayers.Format.Context"});OpenLayers.Format.Context.serviceTypes={"WMS":"urn:ogc:serviceType:WMS","WFS":"urn:ogc:serviceType:WFS","WCS":"urn:ogc:serviceType:WCS","GML":"urn:ogc:serviceType:GML","SLD":"urn:ogc:serviceType:SLD","FES":"urn:ogc:serviceType:FES","KML":"urn:ogc:serviceType:KML"};if(!OpenLayers.Format.OWSCommon){OpenLayers.Format.OWSCommon={};} -OpenLayers.Format.OWSCommon.v1=OpenLayers.Class(OpenLayers.Format.XML,{regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},readers:{"ows":{"ServiceIdentification":function(node,obj){obj.serviceIdentification={};this.readChildNodes(node,obj.serviceIdentification);},"Title":function(node,obj){obj.title=this.getChildValue(node);},"Abstract":function(node,serviceIdentification){serviceIdentification["abstract"]=this.getChildValue(node);},"Keywords":function(node,serviceIdentification){serviceIdentification.keywords={};this.readChildNodes(node,serviceIdentification.keywords);},"Keyword":function(node,keywords){keywords[this.getChildValue(node)]=true;},"ServiceType":function(node,serviceIdentification){serviceIdentification.serviceType={codeSpace:node.getAttribute('codeSpace'),value:this.getChildValue(node)};},"ServiceTypeVersion":function(node,serviceIdentification){serviceIdentification.serviceTypeVersion=this.getChildValue(node);},"Fees":function(node,serviceIdentification){serviceIdentification.fees=this.getChildValue(node);},"AccessConstraints":function(node,serviceIdentification){serviceIdentification.accessConstraints=this.getChildValue(node);},"ServiceProvider":function(node,obj){obj.serviceProvider={};this.readChildNodes(node,obj.serviceProvider);},"ProviderName":function(node,serviceProvider){serviceProvider.providerName=this.getChildValue(node);},"ProviderSite":function(node,serviceProvider){serviceProvider.providerSite=this.getAttributeNS(node,this.namespaces.xlink,"href");},"ServiceContact":function(node,serviceProvider){serviceProvider.serviceContact={};this.readChildNodes(node,serviceProvider.serviceContact);},"IndividualName":function(node,serviceContact){serviceContact.individualName=this.getChildValue(node);},"PositionName":function(node,serviceContact){serviceContact.positionName=this.getChildValue(node);},"ContactInfo":function(node,serviceContact){serviceContact.contactInfo={};this.readChildNodes(node,serviceContact.contactInfo);},"Phone":function(node,contactInfo){contactInfo.phone={};this.readChildNodes(node,contactInfo.phone);},"Voice":function(node,phone){phone.voice=this.getChildValue(node);},"Address":function(node,contactInfo){contactInfo.address={};this.readChildNodes(node,contactInfo.address);},"DeliveryPoint":function(node,address){address.deliveryPoint=this.getChildValue(node);},"City":function(node,address){address.city=this.getChildValue(node);},"AdministrativeArea":function(node,address){address.administrativeArea=this.getChildValue(node);},"PostalCode":function(node,address){address.postalCode=this.getChildValue(node);},"Country":function(node,address){address.country=this.getChildValue(node);},"ElectronicMailAddress":function(node,address){address.electronicMailAddress=this.getChildValue(node);},"Role":function(node,serviceContact){serviceContact.role=this.getChildValue(node);},"OperationsMetadata":function(node,obj){obj.operationsMetadata={};this.readChildNodes(node,obj.operationsMetadata);},"Operation":function(node,operationsMetadata){var name=node.getAttribute("name");operationsMetadata[name]={};this.readChildNodes(node,operationsMetadata[name]);},"DCP":function(node,operation){operation.dcp={};this.readChildNodes(node,operation.dcp);},"HTTP":function(node,dcp){dcp.http={};this.readChildNodes(node,dcp.http);},"Get":function(node,http){http.get=this.getAttributeNS(node,this.namespaces.xlink,"href");},"Post":function(node,http){http.post=this.getAttributeNS(node,this.namespaces.xlink,"href");},"Parameter":function(node,operation){if(!operation.parameters){operation.parameters={};} -var name=node.getAttribute("name");operation.parameters[name]={};this.readChildNodes(node,operation.parameters[name]);},"Value":function(node,allowedValues){allowedValues[this.getChildValue(node)]=true;},"OutputFormat":function(node,obj){obj.formats.push({value:this.getChildValue(node)});this.readChildNodes(node,obj);},"WGS84BoundingBox":function(node,obj){var boundingBox={};boundingBox.crs=node.getAttribute("crs");if(obj.BoundingBox){obj.BoundingBox.push(boundingBox);}else{obj.projection=boundingBox.crs;boundingBox=obj;} -this.readChildNodes(node,boundingBox);},"BoundingBox":function(node,obj){this.readers['ows']['WGS84BoundingBox'].apply(this,[node,obj]);},"LowerCorner":function(node,obj){var str=this.getChildValue(node).replace(this.regExes.trimSpace,"");str=str.replace(this.regExes.trimComma,",");var pointList=str.split(this.regExes.splitSpace);obj.left=pointList[0];obj.bottom=pointList[1];},"UpperCorner":function(node,obj){var str=this.getChildValue(node).replace(this.regExes.trimSpace,"");str=str.replace(this.regExes.trimComma,",");var pointList=str.split(this.regExes.splitSpace);obj.right=pointList[0];obj.top=pointList[1];obj.bounds=new OpenLayers.Bounds(obj.left,obj.bottom,obj.right,obj.top);delete obj.left;delete obj.bottom;delete obj.right;delete obj.top;}}},writers:{"ows":{"BoundingBox":function(options){var node=this.createElementNSPlus("ows:BoundingBox",{attributes:{crs:options.projection}});this.writeNode("ows:LowerCorner",options,node);this.writeNode("ows:UpperCorner",options,node);return node;},"LowerCorner":function(options){var node=this.createElementNSPlus("ows:LowerCorner",{value:options.bounds.left+" "+options.bounds.bottom});return node;},"UpperCorner":function(options){var node=this.createElementNSPlus("ows:UpperCorner",{value:options.bounds.right+" "+options.bounds.top});return node;},"Title":function(title){var node=this.createElementNSPlus("ows:Title",{value:title});return node;},"OutputFormat":function(format){var node=this.createElementNSPlus("ows:OutputFormat",{value:format});return node;}}},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1"});OpenLayers.Format.SOSCapabilities=OpenLayers.Class(OpenLayers.Format.XML,{defaultVersion:"1.0.0",version:null,parser:null,initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);this.options=options;},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -var root=data.documentElement;var version=this.version||root.getAttribute("version")||this.defaultVersion;if(!this.parser||this.parser.version!==version){var constr=OpenLayers.Format.SOSCapabilities["v"+version.replace(/\./g,"_")];if(!constr){throw"Can't find a SOS capabilities parser for version "+version;} -var parser=new constr(this.options);} -var capabilities=parser.read(data);capabilities.version=version;return capabilities;},CLASS_NAME:"OpenLayers.Format.SOSCapabilities"});OpenLayers.Format.WFSCapabilities=OpenLayers.Class(OpenLayers.Format.XML,{defaultVersion:"1.1.0",version:null,initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);this.options=options;},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -var root=data.documentElement;var version=this.version;if(!version){version=root.getAttribute("version");if(!version){version=this.defaultVersion;}} -var constr=OpenLayers.Format.WFSCapabilities["v"+version.replace(/\./g,"_")];if(!constr){throw"Can't find a WFS capabilities parser for version "+version;} -var parser=new constr(this.options);var capabilities=parser.read(data);capabilities.version=version;return capabilities;},CLASS_NAME:"OpenLayers.Format.WFSCapabilities"});OpenLayers.Format.WFSDescribeFeatureType=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xsd:"http://www.w3.org/2001/XMLSchema"},initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},readers:{"xsd":{"schema":function(node,obj){var complexTypes=[];var customTypes={};var schema={complexTypes:complexTypes,customTypes:customTypes};this.readChildNodes(node,schema);var attributes=node.attributes;var attr,name;for(var i=0,len=attributes.length;i<len;++i){attr=attributes[i];name=attr.name;if(name.indexOf("xmlns")==0){this.setNamespace(name.split(":")[1]||"",attr.value);}else{obj[name]=attr.value;}} -obj.featureTypes=complexTypes;obj.targetPrefix=this.namespaceAlias[obj.targetNamespace];var complexType,customType;for(var i=0,len=complexTypes.length;i<len;++i){complexType=complexTypes[i];customType=customTypes[complexType.typeName];if(customTypes[complexType.typeName]){complexType.typeName=customType.name;}}},"complexType":function(node,obj){var complexType={"typeName":node.getAttribute("name")};this.readChildNodes(node,complexType);obj.complexTypes.push(complexType);},"complexContent":function(node,obj){this.readChildNodes(node,obj);},"extension":function(node,obj){this.readChildNodes(node,obj);},"sequence":function(node,obj){var sequence={elements:[]};this.readChildNodes(node,sequence);obj.properties=sequence.elements;},"element":function(node,obj){if(obj.elements){var element={};var attributes=node.attributes;var attr;for(var i=0,len=attributes.length;i<len;++i){attr=attributes[i];element[attr.name]=attr.value;} -var type=element.type;if(!type){type={};this.readChildNodes(node,type);element.restriction=type;element.type=type.base;} -var fullType=type.base||type;element.localType=fullType.split(":").pop();obj.elements.push(element);} -if(obj.complexTypes){var type=node.getAttribute("type");var localType=type.split(":").pop();obj.customTypes[localType]={"name":node.getAttribute("name"),"type":type};}},"simpleType":function(node,obj){this.readChildNodes(node,obj);},"restriction":function(node,obj){obj.base=node.getAttribute("base");this.readRestriction(node,obj);}}},readRestriction:function(node,obj){var children=node.childNodes;var child,nodeName,value;for(var i=0,len=children.length;i<len;++i){child=children[i];if(child.nodeType==1){nodeName=child.nodeName.split(":").pop();value=child.getAttribute("value");if(!obj[nodeName]){obj[nodeName]=value;}else{if(typeof obj[nodeName]=="string"){obj[nodeName]=[obj[nodeName]];} -obj[nodeName].push(value);}}}},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -if(data&&data.nodeType==9){data=data.documentElement;} -var schema={};this.readNode(data,schema);return schema;},CLASS_NAME:"OpenLayers.Format.WFSDescribeFeatureType"});OpenLayers.Format.WFST.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",wfs:"http://www.opengis.net/wfs",gml:"http://www.opengis.net/gml",ogc:"http://www.opengis.net/ogc"},defaultPrefix:"wfs",version:null,schemaLocations:null,srsName:null,extractAttributes:true,xy:true,stateName:null,initialize:function(options){this.stateName={};this.stateName[OpenLayers.State.INSERT]="wfs:Insert";this.stateName[OpenLayers.State.UPDATE]="wfs:Update";this.stateName[OpenLayers.State.DELETE]="wfs:Delete";OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},getSrsName:function(feature,options){var srsName=options&&options.srsName;if(!srsName){if(feature&&feature.layer){srsName=feature.layer.projection.getCode();}else{srsName=this.srsName;}} -return srsName;},read:function(data,options){options=options||{};OpenLayers.Util.applyDefaults(options,{output:"features"});if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -if(data&&data.nodeType==9){data=data.documentElement;} -var obj={};if(data){this.readNode(data,obj);} -if(obj.features&&options.output==="features"){obj=obj.features;} -return obj;},readers:{"wfs":{"FeatureCollection":function(node,obj){obj.features=[];this.readChildNodes(node,obj);}}},write:function(features){var node=this.writeNode("wfs:Transaction",features);var value=this.schemaLocationAttr();if(value){this.setAttributeNS(node,this.namespaces["xsi"],"xsi:schemaLocation",value)} -return OpenLayers.Format.XML.prototype.write.apply(this,[node]);},writers:{"wfs":{"GetFeature":function(options){var node=this.createElementNSPlus("wfs:GetFeature",{attributes:{service:"WFS",version:this.version,outputFormat:options&&options.outputFormat,maxFeatures:options&&options.maxFeatures,"xsi:schemaLocation":this.schemaLocationAttr(options)}});if(typeof this.featureType=="string"){this.writeNode("Query",options,node);}else{for(var i=0,len=this.featureType.length;i<len;i++){options.featureType=this.featureType[i];this.writeNode("Query",options,node);}} -return node;},"Transaction":function(features){var node=this.createElementNSPlus("wfs:Transaction",{attributes:{service:"WFS",version:this.version}});if(features){var name,feature;for(var i=0,len=features.length;i<len;++i){feature=features[i];name=this.stateName[feature.state];if(name){this.writeNode(name,feature,node);}}} -return node;},"Insert":function(feature){var node=this.createElementNSPlus("wfs:Insert");this.srsName=this.getSrsName(feature);this.writeNode("feature:_typeName",feature,node);return node;},"Update":function(feature){var node=this.createElementNSPlus("wfs:Update",{attributes:{typeName:(this.featureNS?this.featurePrefix+":":"")+ -this.featureType}});if(this.featureNS){node.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);} -if(this.geometryName!==null){this.writeNode("Property",{name:this.geometryName,value:feature},node);} -for(var key in feature.attributes){if(feature.attributes[key]!==undefined){this.writeNode("Property",{name:key,value:feature.attributes[key]},node);}} -this.writeNode("ogc:Filter",new OpenLayers.Filter.FeatureId({fids:[feature.fid]}),node);return node;},"Property":function(obj){var node=this.createElementNSPlus("wfs:Property");this.writeNode("Name",obj.name,node);if(obj.value!==null){this.writeNode("Value",obj.value,node);} -return node;},"Name":function(name){return this.createElementNSPlus("wfs:Name",{value:name});},"Value":function(obj){var node;if(obj instanceof OpenLayers.Feature.Vector){node=this.createElementNSPlus("wfs:Value");this.srsName=this.getSrsName(obj);var geom=this.writeNode("feature:_geometry",obj.geometry).firstChild;node.appendChild(geom);}else{node=this.createElementNSPlus("wfs:Value",{value:obj});} -return node;},"Delete":function(feature){var node=this.createElementNSPlus("wfs:Delete",{attributes:{typeName:(this.featureNS?this.featurePrefix+":":"")+ -this.featureType}});if(this.featureNS){node.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);} -this.writeNode("ogc:Filter",new OpenLayers.Filter.FeatureId({fids:[feature.fid]}),node);return node;}}},schemaLocationAttr:function(options){options=OpenLayers.Util.extend({featurePrefix:this.featurePrefix,schema:this.schema},options);var schemaLocations=OpenLayers.Util.extend({},this.schemaLocations);if(options.schema){schemaLocations[options.featurePrefix]=options.schema;} -var parts=[];var uri;for(var key in schemaLocations){uri=this.namespaces[key];if(uri){parts.push(uri+" "+schemaLocations[key]);}} -var value=parts.join(" ")||undefined;return value;},setFilterProperty:function(filter){if(filter.filters){for(var i=0,len=filter.filters.length;i<len;++i){this.setFilterProperty(filter.filters[i]);}}else{if(filter instanceof OpenLayers.Filter.Spatial){filter.property=this.geometryName;}}},CLASS_NAME:"OpenLayers.Format.WFST.v1"});OpenLayers.Format.WMSCapabilities=OpenLayers.Class(OpenLayers.Format.XML,{defaultVersion:"1.1.1",version:null,parser:null,initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);this.options=options;},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -var root=data.documentElement;var version=this.version||root.getAttribute("version")||this.defaultVersion;if(!this.parser||this.parser.version!==version){var constr=OpenLayers.Format.WMSCapabilities["v"+version.replace(/\./g,"_")];if(!constr){throw"Can't find a WMS capabilities parser for version "+version;} -this.parser=new constr(this.options);} -var capabilities=this.parser.read(data);capabilities.version=version;return capabilities;},CLASS_NAME:"OpenLayers.Format.WMSCapabilities"});OpenLayers.Format.WMSDescribeLayer=OpenLayers.Class(OpenLayers.Format.XML,{defaultVersion:"1.1.1",version:null,initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);this.options=options;},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -var root=data.documentElement;var version=this.version;if(!version){version=root.getAttribute("version");if(!version){version=this.defaultVersion;}} -if(version=="1.1.1"||version=="1.1.0"){version="1.1";} -var constructor=OpenLayers.Format.WMSDescribeLayer["v"+version.replace(/\./g,"_")];if(!constructor){throw"Can't find a WMS DescribeLayer parser for version "+ -version;} -var parser=new constructor(this.options);var describelayer=parser.read(data);describelayer.version=version;return describelayer;},CLASS_NAME:"OpenLayers.Format.WMSDescribeLayer"});OpenLayers.Format.WMSGetFeatureInfo=OpenLayers.Class(OpenLayers.Format.XML,{layerIdentifier:'_layer',featureIdentifier:'_feature',regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},gmlFormat:null,initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,arguments);OpenLayers.Util.extend(this,options);this.options=options;},read:function(data){var result;if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -var root=data.documentElement;if(root){var scope=this;var read=this["read_"+root.nodeName];if(read){result=read.call(this,root);}else{result=new OpenLayers.Format.GML((this.options?this.options:{})).read(data);}}else{result=data;} -return result;},read_msGMLOutput:function(data){var response=[];var layerNodes=this.getSiblingNodesByTagCriteria(data,this.layerIdentifier);if(layerNodes){for(var i=0,len=layerNodes.length;i<len;++i){var node=layerNodes[i];var layerName=node.nodeName;if(node.prefix){layerName=layerName.split(':')[1];} -var layerName=layerName.replace(this.layerIdentifier,'');var featureNodes=this.getSiblingNodesByTagCriteria(node,this.featureIdentifier);if(featureNodes){for(var j=0;j<featureNodes.length;j++){var featureNode=featureNodes[j];var geomInfo=this.parseGeometry(featureNode);var attributes=this.parseAttributes(featureNode);var feature=new OpenLayers.Feature.Vector(geomInfo.geometry,attributes,null);feature.bounds=geomInfo.bounds;feature.type=layerName;response.push(feature);}}}} -return response;},read_FeatureInfoResponse:function(data){var response=[];var featureNodes=this.getElementsByTagNameNS(data,'*','FIELDS');for(var i=0,len=featureNodes.length;i<len;i++){var featureNode=featureNodes[i];var geom=null;var attributes={};for(var j=0,jlen=featureNode.attributes.length;j<jlen;j++){var attribute=featureNode.attributes[j];attributes[attribute.nodeName]=attribute.nodeValue;} -response.push(new OpenLayers.Feature.Vector(geom,attributes,null));} -return response;},getSiblingNodesByTagCriteria:function(node,criteria){var nodes=[];var children,tagName,n,matchNodes,child;if(node&&node.hasChildNodes()){children=node.childNodes;n=children.length;for(var k=0;k<n;k++){child=children[k];while(child&&child.nodeType!=1){child=child.nextSibling;k++;} -tagName=(child?child.nodeName:'');if(tagName.length>0&&tagName.indexOf(criteria)>-1){nodes.push(child);}else{matchNodes=this.getSiblingNodesByTagCriteria(child,criteria);if(matchNodes.length>0){(nodes.length==0)?nodes=matchNodes:nodes.push(matchNodes);}}}} -return nodes;},parseAttributes:function(node){var attributes={};if(node.nodeType==1){var children=node.childNodes;var n=children.length;for(var i=0;i<n;++i){var child=children[i];if(child.nodeType==1){var grandchildren=child.childNodes;if(grandchildren.length==1){var grandchild=grandchildren[0];if(grandchild.nodeType==3||grandchild.nodeType==4){var name=(child.prefix)?child.nodeName.split(":")[1]:child.nodeName;var value=grandchild.nodeValue.replace(this.regExes.trimSpace,"");attributes[name]=value;}}}}} -return attributes;},parseGeometry:function(node){if(!this.gmlFormat){this.gmlFormat=new OpenLayers.Format.GML();} -var feature=this.gmlFormat.parseFeature(node);var geometry,bounds=null;if(feature){geometry=feature.geometry&&feature.geometry.clone();bounds=feature.bounds&&feature.bounds.clone();feature.destroy();} -return{geometry:geometry,bounds:bounds};},CLASS_NAME:"OpenLayers.Format.WMSGetFeatureInfo"});OpenLayers.Format.WMTSCapabilities=OpenLayers.Class(OpenLayers.Format.XML,{defaultVersion:"1.0.0",version:null,parser:null,yx:{"urn:ogc:def:crs:EPSG::4326":true},initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);this.options=options;},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -var root=data.documentElement;var version=this.version||root.getAttribute("version")||this.defaultVersion;if(!this.parser||this.parser.version!==version){var constr=OpenLayers.Format.WMTSCapabilities["v"+version.replace(/\./g,"_")];if(!constr){throw new Error("Can't find a WMTS capabilities parser for version "+version);} -this.parser=new constr(this.options);} -return this.parser.read(data);},createLayer:function(capabilities,config){var layer;var required={layer:true,matrixSet:true};for(var prop in required){if(!(prop in config)){throw new Error("Missing property '"+prop+"' in layer configuration.");}} -var contents=capabilities.contents;var matrixSet=contents.tileMatrixSets[config.matrixSet];var layers=contents.layers;var layerDef;for(var i=0,ii=contents.layers.length;i<ii;++i){if(contents.layers[i].identifier===config.layer){layerDef=contents.layers[i];break;}} -if(layerDef&&matrixSet){var style;for(var i=0,ii=layerDef.styles.length;i<ii;++i){style=layerDef.styles[i];if(style.isDefault){break;}} -layer=new OpenLayers.Layer.WMTS(OpenLayers.Util.applyDefaults(config,{url:capabilities.operationsMetadata.GetTile.dcp.http.get,name:layerDef.title,style:style,matrixIds:matrixSet.matrixIds}));} -return layer;},CLASS_NAME:"OpenLayers.Format.WMTSCapabilities"});OpenLayers.Handler.Click=OpenLayers.Class(OpenLayers.Handler,{delay:300,single:true,'double':false,pixelTolerance:0,stopSingle:false,stopDouble:false,timerId:null,down:null,rightclickTimerId:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);if(this.pixelTolerance!=null){this.mousedown=function(evt){this.down=evt.xy;return true;};}},mousedown:null,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]);} -return!this.stopSingle;},dblclick:function(evt){if(this.passesTolerance(evt)){if(this["double"]){this.callback('dblclick',[evt]);} -this.clearTimer();} -return!this.stopDouble;},click:function(evt){if(this.passesTolerance(evt)){if(this.timerId!=null){this.clearTimer();}else{var clickEvent=this.single?OpenLayers.Util.extend({},evt):null;this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,this,clickEvent),this.delay);}} -return!this.stopSingle;},passesTolerance:function(evt){var passes=true;if(this.pixelTolerance!=null&&this.down){var dpx=Math.sqrt(Math.pow(this.down.x-evt.xy.x,2)+ -Math.pow(this.down.y-evt.xy.y,2));if(dpx>this.pixelTolerance){passes=false;}} -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]);}},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.clearTimer();this.down=null;deactivated=true;} -return deactivated;},CLASS_NAME:"OpenLayers.Handler.Click"});OpenLayers.Handler.Drag=OpenLayers.Class(OpenLayers.Handler,{started:false,stopDown:true,dragging:false,last:null,start:null,oldOnselectstart:null,interval:0,timeoutId:null,documentDrag:false,documentEvents:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);},down:function(evt){},move:function(evt){},up:function(evt){},out:function(evt){},mousedown:function(evt){var propagate=true;this.dragging=false;if(this.checkModifiers(evt)&&OpenLayers.Event.isLeftClick(evt)){this.started=true;this.start=evt.xy;this.last=evt.xy;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;},mousemove:function(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.destroyDocumentEvents();}} -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=this.evt.xy;} -return true;},removeTimeout:function(){this.timeoutId=null;},mouseup:function(evt){if(this.started){if(this.documentDrag===true&&this.documentEvents){this.adjustXY(evt);this.destroyDocumentEvents();} -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;},mouseout:function(evt){if(this.started&&OpenLayers.Util.mouseLeft(evt,this.map.div)){if(this.documentDrag===true){this.documentEvents=new OpenLayers.Events(this,document,null,null,{includeXY:true});this.documentEvents.on({mousemove:this.mousemove,mouseup:this.mouseup});OpenLayers.Element.addClass(document.body,"olDragDown");}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.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.div);evt.xy.x-=pos[0];evt.xy.y-=pos[1];},destroyDocumentEvents:function(){OpenLayers.Element.removeClass(document.body,"olDragDown");this.documentEvents.destroy();this.documentEvents=null;},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}},feature:null,lastFeature:null,down:null,up:null,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;},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");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){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.map.events.un({"removelayer":this.handleMapEvents,"changelayer":this.handleMapEvents,scope:this});deactivated=true;} -return deactivated;},handleMapEvents:function(evt){if(!evt.property||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.Handler.Hover=OpenLayers.Class(OpenLayers.Handler,{delay:500,pixelTolerance:null,stopMove:false,px:null,timerId:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);},mousemove:function(evt){if(this.passesTolerance(evt.xy)){this.clearTimer();this.callback('move',[evt]);this.px=evt.xy;evt=OpenLayers.Util.extend({},evt);this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,this,evt),this.delay);} -return!this.stopMove;},mouseout:function(evt){if(OpenLayers.Util.mouseLeft(evt,this.map.div)){this.clearTimer();this.callback('move',[evt]);} -return true;},passesTolerance:function(px){var passes=true;if(this.pixelTolerance&&this.px){var dpx=Math.sqrt(Math.pow(this.px.x-px.x,2)+ -Math.pow(this.px.y-px.y,2));if(dpx<this.pixelTolerance){passes=false;}} -return passes;},clearTimer:function(){if(this.timerId!=null){window.clearTimeout(this.timerId);this.timerId=null;}},delayedCall:function(evt){this.callback('pause',[evt]);},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.clearTimer();deactivated=true;} -return deactivated;},CLASS_NAME:"OpenLayers.Handler.Hover"});OpenLayers.Handler.Keyboard=OpenLayers.Class(OpenLayers.Handler,{KEY_EVENTS:["keydown","keyup"],eventListener:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.eventListener=OpenLayers.Function.bindAsEventListener(this.handleKeyEvent,this);},destroy:function(){this.deactivate();this.eventListener=null;OpenLayers.Handler.prototype.destroy.apply(this,arguments);},activate:function(){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){for(var i=0,len=this.KEY_EVENTS.length;i<len;i++){OpenLayers.Event.observe(document,this.KEY_EVENTS[i],this.eventListener);} -return true;}else{return false;}},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){for(var i=0,len=this.KEY_EVENTS.length;i<len;i++){OpenLayers.Event.stopObserving(document,this.KEY_EVENTS[i],this.eventListener);} -deactivated=true;} -return deactivated;},handleKeyEvent:function(evt){if(this.checkModifiers(evt)){this.callback(evt.type,[evt]);}},CLASS_NAME:"OpenLayers.Handler.Keyboard"});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.Layer=OpenLayers.Class({id:null,name:null,div:null,opacity:null,alwaysInRange:null,EVENT_TYPES:["loadstart","loadend","loadcancel","visibilitychanged","move","moveend"],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){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 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();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);},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;var props={},alwaysInRange=true;for(i=0,len=this.RESOLUTION_PROPERTIES.length;i<len;i++){var 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++){var 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 maxResolution=props.maxResolution;if(props.minScale!=null){maxResolution=OpenLayers.Util.getResolutionFromScale(props.minScale,this.units);}else if(maxResolution=="auto"&&this.maxExtent!=null){var viewSize=this.map.getSize();var wRes=this.maxExtent.getWidth()/viewSize.w;var 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){var viewSize=this.map.getSize();var wRes=this.minExtent.getWidth()/viewSize.w;var 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;if(this.map.fractionalZoom){var lowZoom=0;var highZoom=this.resolutions.length-1;var highRes=this.resolutions[lowZoom];var lowRes=this.resolutions[highZoom];var res;for(var i=0,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(var 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;if(viewPortPx!=null){var size=this.map.getSize();var center=this.map.getCenter();if(center){var res=this.map.getResolution();var delta_x=viewPortPx.x-(size.w/2);var delta_y=viewPortPx.y-(size.h/2);lonlat=new OpenLayers.LonLat(center.lon+delta_x*res,center.lat-delta_y*res);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()};bounds=bounds.wrapDateLine(this.maxExtent,wrappingOptions);} -return bounds;},CLASS_NAME:"OpenLayers.Layer"});OpenLayers.Marker.Box=OpenLayers.Class(OpenLayers.Marker,{bounds:null,div:null,initialize:function(bounds,borderColor,borderWidth){this.bounds=bounds;this.div=OpenLayers.Util.createDiv();this.div.style.overflow='hidden';this.events=new OpenLayers.Events(this,this.div,null);this.setBorder(borderColor,borderWidth);},destroy:function(){this.bounds=null;this.div=null;OpenLayers.Marker.prototype.destroy.apply(this,arguments);},setBorder:function(color,width){if(!color){color="red";} -if(!width){width=2;} -this.div.style.border=width+"px solid "+color;},draw:function(px,sz){OpenLayers.Util.modifyDOMElement(this.div,null,px,sz);return this.div;},onScreen:function(){var onScreen=false;if(this.map){var screenBounds=this.map.getExtent();onScreen=screenBounds.containsBounds(this.bounds,true,true);} -return onScreen;},display:function(display){this.div.style.display=(display)?"":"none";},CLASS_NAME:"OpenLayers.Marker.Box"});(function(){var oXMLHttpRequest=window.XMLHttpRequest;var bGecko=!!window.controllers,bIE=window.document.all&&!window.opera,bIE7=bIE&&window.navigator.userAgent.match(/MSIE ([\.0-9]+)/)&&RegExp.$1==7;function cXMLHttpRequest(){this._object=oXMLHttpRequest&&!bIE7?new oXMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");this._listeners=[];};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.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);if(!bGecko&&!bIE){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){fCleanTransport(oRequest);if(bIE&&bAsync) -window.detachEvent("onunload",fOnUnload);} -if(nState!=oRequest.readyState) -fReadyStateChange(oRequest);nState=oRequest.readyState;}};cXMLHttpRequest.prototype.send=function(vData){if(cXMLHttpRequest.onsend) -cXMLHttpRequest.onsend.apply(this,arguments);if(vData&&vData.nodeType){vData=window.XMLSerializer?new window.XMLSerializer().serializeToString(vData):vData.xml;if(!this._headers["Content-Type"]) -this._object.setRequestHeader("Content-Type","application/xml");} -this._object.send(vData);if(bGecko&&!this._async){this.readyState=cXMLHttpRequest.OPENED;fSynchronizeValues(this);while(this.readyState<cXMLHttpRequest.DONE){this.readyState++;fReadyStateChange(this);if(this._aborted) -return;}}};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);};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.Tile.Image.IFrame=OpenLayers.Class(OpenLayers.Tile.Image,{initialize:function(layer,position,bounds,url,size){OpenLayers.Tile.Image.prototype.initialize.apply(this,arguments);this.layerAlphaHack=false;},destroy:function(){if(this.imgDiv!=null){OpenLayers.Event.stopObservingElement(this.imgDiv.firstChild);} -OpenLayers.Tile.Image.prototype.destroy.apply(this,arguments);},clear:function(){if(this.imgDiv){var iFrame=this.imgDiv.firstChild;OpenLayers.Event.stopObservingElement(iFrame);this.imgDiv.removeChild(iFrame);}},clone:function(obj){if(obj==null){obj=new OpenLayers.Tile.Image.IFrame(this.layer,this.position,this.bounds,this.url,this.size);} -obj=OpenLayers.Tile.Image.prototype.clone.apply(this,[obj]);return obj;},renderTile:function(){if(OpenLayers.Tile.Image.prototype.renderTile.apply(this,arguments)){var form=this.createRequestForm();this.imgDiv.appendChild(form);form.submit();this.imgDiv.removeChild(form);}},initImgDiv:function(){this.imgDiv=this.createImgDiv();OpenLayers.Util.modifyDOMElement(this.imgDiv,this.id,null,this.layer.getImageSize(),"relative");this.imgDiv.className='olTileImage';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;},createImgDiv:function(){var eventPane=document.createElement("div");if(OpenLayers.Util.getBrowserName()=="msie"){eventPane.style.backgroundColor='#FFFFFF';eventPane.style.filter='chroma(color=#FFFFFF)';} -OpenLayers.Util.modifyDOMElement(eventPane,null,new OpenLayers.Pixel(0,0),this.layer.getImageSize(),"absolute");var imgDiv=document.createElement("div");imgDiv.appendChild(eventPane);return imgDiv;},createIFrame:function(){var id=this.id+'_iFrame';var iframe;if(OpenLayers.Util.getBrowserName()=="msie"){iframe=document.createElement('<iframe name="'+id+'">');iframe.style.backgroundColor='#FFFFFF';iframe.style.filter='chroma(color=#FFFFFF)';} -else{iframe=document.createElement('iframe');iframe.style.backgroundColor='transparent';iframe.name=id;} -iframe.id=id;iframe.scrolling='no';iframe.marginWidth='0px';iframe.marginHeight='0px';iframe.frameBorder='0';OpenLayers.Util.modifyDOMElement(iframe,id,new OpenLayers.Pixel(0,0),this.layer.getImageSize(),"absolute");var onload=function(){this.show();if(this.isLoading){this.isLoading=false;this.events.triggerEvent("loadend");}};OpenLayers.Event.observe(iframe,'load',OpenLayers.Function.bind(onload,this));return iframe;},createRequestForm:function(){var form=document.createElement('form');form.method='POST';var cacheId=this.layer.params["_OLSALT"];cacheId=(cacheId?cacheId+"_":"")+this.bounds.toBBOX();form.action=OpenLayers.Util.urlAppend(this.layer.url,cacheId);this.imgDiv.insertBefore(this.createIFrame(),this.imgDiv.firstChild);form.target=this.id+'_iFrame';var imageSize=this.layer.getImageSize();var params=OpenLayers.Util.extend({"BBOX":this.encodeBBOX?this.bounds.toBBOX():this.bounds.toArray(),"WIDTH":imageSize.w,"HEIGHT":imageSize.h},this.layer.params);for(var par in params){var field=document.createElement('input');field.type='hidden';field.name=par;field.value=params[par];form.appendChild(field);} -return form;},CLASS_NAME:"OpenLayers.Tile.Image.IFrame"});OpenLayers.ProxyHost="";OpenLayers.nullHandler=function(request){OpenLayers.Console.userError(OpenLayers.i18n("unhandledRequest",{'statusText':request.statusText}));};OpenLayers.loadURL=function(uri,params,caller,onComplete,onFailure){if(typeof params=='string'){params=OpenLayers.Util.getParameters(params);} -var success=(onComplete)?onComplete:OpenLayers.nullHandler;var failure=(onFailure)?onFailure:OpenLayers.nullHandler;return OpenLayers.Request.GET({url:uri,params:params,success:success,failure:failure,scope:caller});};OpenLayers.parseXMLString=function(text){var index=text.indexOf('<');if(index>0){text=text.substring(index);} -var ajaxResponse=OpenLayers.Util.Try(function(){var xmldom=new ActiveXObject('Microsoft.XMLDOM');xmldom.loadXML(text);return xmldom;},function(){return new DOMParser().parseFromString(text,'text/xml');},function(){var req=new XMLHttpRequest();req.open("GET","data:"+"text/xml"+";charset=utf-8,"+encodeURIComponent(text),false);if(req.overrideMimeType){req.overrideMimeType("text/xml");} -req.send(null);return req.responseXML;});return ajaxResponse;};OpenLayers.Ajax={emptyFunction:function(){},getTransport:function(){return OpenLayers.Util.Try(function(){return new XMLHttpRequest();},function(){return new ActiveXObject('Msxml2.XMLHTTP');},function(){return new ActiveXObject('Microsoft.XMLHTTP');})||false;},activeRequestCount:0};OpenLayers.Ajax.Responders={responders:[],register:function(responderToAdd){for(var i=0;i<this.responders.length;i++){if(responderToAdd==this.responders[i]){return;}} -this.responders.push(responderToAdd);},unregister:function(responderToRemove){OpenLayers.Util.removeItem(this.reponders,responderToRemove);},dispatch:function(callback,request,transport){var responder;for(var i=0;i<this.responders.length;i++){responder=this.responders[i];if(responder[callback]&&typeof responder[callback]=='function'){try{responder[callback].apply(responder,[request,transport]);}catch(e){}}}}};OpenLayers.Ajax.Responders.register({onCreate:function(){OpenLayers.Ajax.activeRequestCount++;},onComplete:function(){OpenLayers.Ajax.activeRequestCount--;}});OpenLayers.Ajax.Base=OpenLayers.Class({initialize:function(options){this.options={method:'post',asynchronous:true,contentType:'application/xml',parameters:''};OpenLayers.Util.extend(this.options,options||{});this.options.method=this.options.method.toLowerCase();if(typeof this.options.parameters=='string'){this.options.parameters=OpenLayers.Util.getParameters(this.options.parameters);}}});OpenLayers.Ajax.Request=OpenLayers.Class(OpenLayers.Ajax.Base,{_complete:false,initialize:function(url,options){OpenLayers.Ajax.Base.prototype.initialize.apply(this,[options]);if(OpenLayers.ProxyHost&&OpenLayers.String.startsWith(url,"http")){url=OpenLayers.ProxyHost+encodeURIComponent(url);} -this.transport=OpenLayers.Ajax.getTransport();this.request(url);},request:function(url){this.url=url;this.method=this.options.method;var params=OpenLayers.Util.extend({},this.options.parameters);if(this.method!='get'&&this.method!='post'){params['_method']=this.method;this.method='post';} -this.parameters=params;if(params=OpenLayers.Util.getParameterString(params)){if(this.method=='get'){this.url+=((this.url.indexOf('?')>-1)?'&':'?')+params;}else if(/Konqueror|Safari|KHTML/.test(navigator.userAgent)){params+='&_=';}} -try{var response=new OpenLayers.Ajax.Response(this);if(this.options.onCreate){this.options.onCreate(response);} -OpenLayers.Ajax.Responders.dispatch('onCreate',this,response);this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous){window.setTimeout(OpenLayers.Function.bind(this.respondToReadyState,this,1),10);} -this.transport.onreadystatechange=OpenLayers.Function.bind(this.onStateChange,this);this.setRequestHeaders();this.body=this.method=='post'?(this.options.postBody||params):null;this.transport.send(this.body);if(!this.options.asynchronous&&this.transport.overrideMimeType){this.onStateChange();}}catch(e){this.dispatchException(e);}},onStateChange:function(){var readyState=this.transport.readyState;if(readyState>1&&!((readyState==4)&&this._complete)){this.respondToReadyState(this.transport.readyState);}},setRequestHeaders:function(){var headers={'X-Requested-With':'XMLHttpRequest','Accept':'text/javascript, text/html, application/xml, text/xml, */*','OpenLayers':true};if(this.method=='post'){headers['Content-type']=this.options.contentType+ -(this.options.encoding?'; charset='+this.options.encoding:'');if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){headers['Connection']='close';}} -if(typeof this.options.requestHeaders=='object'){var extras=this.options.requestHeaders;if(typeof extras.push=='function'){for(var i=0,length=extras.length;i<length;i+=2){headers[extras[i]]=extras[i+1];}}else{for(var i in extras){headers[i]=extras[i];}}} -for(var name in headers){this.transport.setRequestHeader(name,headers[name]);}},success:function(){var status=this.getStatus();return!status||(status>=200&&status<300);},getStatus:function(){try{return this.transport.status||0;}catch(e){return 0;}},respondToReadyState:function(readyState){var state=OpenLayers.Ajax.Request.Events[readyState];var response=new OpenLayers.Ajax.Response(this);if(state=='Complete'){try{this._complete=true;(this.options['on'+response.status]||this.options['on'+(this.success()?'Success':'Failure')]||OpenLayers.Ajax.emptyFunction)(response);}catch(e){this.dispatchException(e);} -var contentType=response.getHeader('Content-type');} -try{(this.options['on'+state]||OpenLayers.Ajax.emptyFunction)(response);OpenLayers.Ajax.Responders.dispatch('on'+state,this,response);}catch(e){this.dispatchException(e);} -if(state=='Complete'){this.transport.onreadystatechange=OpenLayers.Ajax.emptyFunction;}},getHeader:function(name){try{return this.transport.getResponseHeader(name);}catch(e){return null;}},dispatchException:function(exception){var handler=this.options.onException;if(handler){handler(this,exception);OpenLayers.Ajax.Responders.dispatch('onException',this,exception);}else{var listener=false;var responders=OpenLayers.Ajax.Responders.responders;for(var i=0;i<responders.length;i++){if(responders[i].onException){listener=true;break;}} -if(listener){OpenLayers.Ajax.Responders.dispatch('onException',this,exception);}else{throw exception;}}}});OpenLayers.Ajax.Request.Events=['Uninitialized','Loading','Loaded','Interactive','Complete'];OpenLayers.Ajax.Response=OpenLayers.Class({status:0,statusText:'',initialize:function(request){this.request=request;var transport=this.transport=request.transport,readyState=this.readyState=transport.readyState;if((readyState>2&&!(!!(window.attachEvent&&!window.opera)))||readyState==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=transport.responseText==null?'':String(transport.responseText);} -if(readyState==4){var xml=transport.responseXML;this.responseXML=xml===undefined?null:xml;}},getStatus:OpenLayers.Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||'';}catch(e){return'';}},getHeader:OpenLayers.Ajax.Request.prototype.getHeader,getResponseHeader:function(name){return this.transport.getResponseHeader(name);}});OpenLayers.Ajax.getElementsByTagNameNS=function(parentnode,nsuri,nsprefix,tagname){var elem=null;if(parentnode.getElementsByTagNameNS){elem=parentnode.getElementsByTagNameNS(nsuri,tagname);}else{elem=parentnode.getElementsByTagName(nsprefix+':'+tagname);} -return elem;};OpenLayers.Ajax.serializeXMLToString=function(xmldom){var serializer=new XMLSerializer();var data=serializer.serializeToString(xmldom);return data;};OpenLayers.Control.DragFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,onStart:function(feature,pixel){},onDrag:function(feature,pixel){},onComplete:function(feature,pixel){},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({over:this.overFeature,out:this.outFeature},this.featureCallbacks),{geometryTypes:this.geometryTypes})};},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){if(!this.handlers.drag.dragging){this.feature=feature;this.handlers.drag.activate();this.over=true;OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass+"Over");}else{if(this.feature.id==feature.id){this.over=true;}else{this.over=false;}}},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.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.DragPan=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,panned:false,interval:25,documentDrag:false,draw:function(){this.handler=new OpenLayers.Handler.Drag(this,{"move":this.panMap,"done":this.panMapDone},{interval:this.interval,documentDrag:this.documentDrag});},panMap:function(xy){this.panned=true;this.map.pan(this.handler.last.x-xy.x,this.handler.last.y-xy.y,{dragging:this.handler.dragging,animate:false});},panMapDone:function(xy){if(this.panned){this.panMap(xy);this.panned=false;}},CLASS_NAME:"OpenLayers.Control.DragPan"});OpenLayers.Control.KeyboardDefaults=OpenLayers.Class(OpenLayers.Control,{autoActivate:true,slideFactor:75,initialize:function(){OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){if(this.handler){this.handler.destroy();} -this.handler=null;OpenLayers.Control.prototype.destroy.apply(this,arguments);},draw:function(){this.handler=new OpenLayers.Handler.Keyboard(this,{"keydown":this.defaultKeyPress});},defaultKeyPress:function(evt){switch(evt.keyCode){case OpenLayers.Event.KEY_LEFT:this.map.pan(-this.slideFactor,0);break;case OpenLayers.Event.KEY_RIGHT:this.map.pan(this.slideFactor,0);break;case OpenLayers.Event.KEY_UP:this.map.pan(0,-this.slideFactor);break;case OpenLayers.Event.KEY_DOWN:this.map.pan(0,this.slideFactor);break;case 33:var size=this.map.getSize();this.map.pan(0,-0.75*size.h);break;case 34:var size=this.map.getSize();this.map.pan(0,0.75*size.h);break;case 35:var size=this.map.getSize();this.map.pan(0.75*size.w,0);break;case 36:var size=this.map.getSize();this.map.pan(-0.75*size.w,0);break;case 43:case 61:case 187:case 107:this.map.zoomIn();break;case 45:case 109:case 189:case 95:this.map.zoomOut();break;}},CLASS_NAME:"OpenLayers.Control.KeyboardDefaults"});OpenLayers.Control.WMSGetFeatureInfo=OpenLayers.Class(OpenLayers.Control,{hover:false,drillDown:false,maxFeatures:10,clickCallback:"click",layers:null,queryVisible:false,url:null,layerUrls:null,infoFormat:'text/html',vendorParams:{},format:null,formatOptions:null,handlerOptions:null,handler:null,hoverRequest:null,EVENT_TYPES:["beforegetfeatureinfo","nogetfeatureinfo","getfeatureinfo"],initialize:function(options){this.EVENT_TYPES=OpenLayers.Control.WMSGetFeatureInfo.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);options=options||{};options.handlerOptions=options.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[options]);if(!this.format){this.format=new OpenLayers.Format.WMSGetFeatureInfo(options.formatOptions);} -if(this.drillDown===true){this.hover=false;} -if(this.hover){this.handler=new OpenLayers.Handler.Hover(this,{'move':this.cancelHover,'pause':this.getInfoForHover},OpenLayers.Util.extend(this.handlerOptions.hover||{},{'delay':250}));}else{var callbacks={};callbacks[this.clickCallback]=this.getInfoForClick;this.handler=new OpenLayers.Handler.Click(this,callbacks,this.handlerOptions.click||{});}},activate:function(){if(!this.active){this.handler.activate();} -return OpenLayers.Control.prototype.activate.apply(this,arguments);},deactivate:function(){return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},getInfoForClick:function(evt){this.events.triggerEvent("beforegetfeatureinfo",{xy:evt.xy});OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait");this.request(evt.xy,{});},getInfoForHover:function(evt){this.events.triggerEvent("beforegetfeatureinfo",{xy:evt.xy});this.request(evt.xy,{hover:true});},cancelHover:function(){if(this.hoverRequest){this.hoverRequest.abort();this.hoverRequest=null;}},findLayers:function(){var candidates=this.layers||this.map.layers;var layers=[];var layer,url;for(var i=0,len=candidates.length;i<len;++i){layer=candidates[i];if(layer instanceof OpenLayers.Layer.WMS&&(!this.queryVisible||layer.getVisibility())){url=layer.url instanceof Array?layer.url[0]:layer.url;if(this.drillDown===false&&!this.url){this.url=url;} -if(this.drillDown===true||this.urlMatches(url)){layers.push(layer);}}} -return layers;},urlMatches:function(url){var matches=OpenLayers.Util.isEquivalentUrl(this.url,url);if(!matches&&this.layerUrls){for(var i=0,len=this.layerUrls.length;i<len;++i){if(OpenLayers.Util.isEquivalentUrl(this.layerUrls[i],url)){matches=true;break;}}} -return matches;},buildWMSOptions:function(url,layers,clickPosition,format){var layerNames=[],styleNames=[];for(var i=0,len=layers.length;i<len;i++){layerNames=layerNames.concat(layers[i].params.LAYERS);styleNames=styleNames.concat(this.getStyleNames(layers[i]));} -var params=OpenLayers.Util.extend({service:"WMS",version:layers[0].params.VERSION,request:"GetFeatureInfo",layers:layerNames,query_layers:layerNames,styles:styleNames,bbox:this.map.getExtent().toBBOX(null,layers[0].reverseAxisOrder()),feature_count:this.maxFeatures,height:this.map.getSize().h,width:this.map.getSize().w,format:format,info_format:this.infoFormat},(parseFloat(layers[0].params.VERSION)>=1.3)?{crs:this.map.getProjection(),i:clickPosition.x,j:clickPosition.y}:{srs:this.map.getProjection(),x:clickPosition.x,y:clickPosition.y});OpenLayers.Util.applyDefaults(params,this.vendorParams);return{url:url,params:OpenLayers.Util.upperCaseObject(params),callback:function(request){this.handleResponse(clickPosition,request);},scope:this};},getStyleNames:function(layer){var styleNames;if(layer.params.STYLES){styleNames=layer.params.STYLES;}else{if(layer.params.LAYERS instanceof Array){styleNames=new Array(layer.params.LAYERS.length);}else{styleNames=layer.params.LAYERS.replace(/[^,]/g,"");}} -return styleNames;},request:function(clickPosition,options){var layers=this.findLayers();if(layers.length==0){this.events.triggerEvent("nogetfeatureinfo");OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait");return;} -options=options||{};if(this.drillDown===false){var wmsOptions=this.buildWMSOptions(this.url,layers,clickPosition,layers[0].params.FORMAT);var request=OpenLayers.Request.GET(wmsOptions);if(options.hover===true){this.hoverRequest=request;}}else{this._requestCount=0;this._numRequests=0;this.features=[];var services={},url;for(var i=0,len=layers.length;i<len;i++){var layer=layers[i];var service,found=false;url=layer.url instanceof Array?layer.url[0]:layer.url;if(url in services){services[url].push(layer);}else{this._numRequests++;services[url]=[layer];}} -var layers;for(var url in services){layers=services[url];var wmsOptions=this.buildWMSOptions(url,layers,clickPosition,layers[0].params.FORMAT);OpenLayers.Request.GET(wmsOptions);}}},triggerGetFeatureInfo:function(request,xy,features){this.events.triggerEvent("getfeatureinfo",{text:request.responseText,features:features,request:request,xy:xy});OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait");},handleResponse:function(xy,request){var doc=request.responseXML;if(!doc||!doc.documentElement){doc=request.responseText;} -var features=this.format.read(doc);if(this.drillDown===false){this.triggerGetFeatureInfo(request,xy,features);}else{this._requestCount++;this._features=(this._features||[]).concat(features);if(this._requestCount===this._numRequests){this.triggerGetFeatureInfo(request,xy,this._features.concat());delete this._features;delete this._requestCount;delete this._numRequests;}}},CLASS_NAME:"OpenLayers.Control.WMSGetFeatureInfo"});OpenLayers.Control.WMTSGetFeatureInfo=OpenLayers.Class(OpenLayers.Control,{hover:false,requestEncoding:"KVP",drillDown:false,maxFeatures:10,clickCallback:"click",layers:null,queryVisible:true,infoFormat:'text/html',vendorParams:{},format:null,formatOptions:null,handlerOptions:null,handler:null,hoverRequest:null,EVENT_TYPES:["beforegetfeatureinfo","getfeatureinfo","exception"],pending:0,initialize:function(options){this.EVENT_TYPES=OpenLayers.Control.WMTSGetFeatureInfo.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);options=options||{};options.handlerOptions=options.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[options]);if(!this.format){this.format=new OpenLayers.Format.WMSGetFeatureInfo(options.formatOptions);} -if(this.drillDown===true){this.hover=false;} -if(this.hover){this.handler=new OpenLayers.Handler.Hover(this,{move:this.cancelHover,pause:this.getInfoForHover},OpenLayers.Util.extend(this.handlerOptions.hover||{},{delay:250}));}else{var callbacks={};callbacks[this.clickCallback]=this.getInfoForClick;this.handler=new OpenLayers.Handler.Click(this,callbacks,this.handlerOptions.click||{});}},activate:function(){if(!this.active){this.handler.activate();} -return OpenLayers.Control.prototype.activate.apply(this,arguments);},deactivate:function(){return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},getInfoForClick:function(evt){this.request(evt.xy,{});},getInfoForHover:function(evt){this.request(evt.xy,{hover:true});},cancelHover:function(){if(this.hoverRequest){--this.pending;if(this.pending<=0){OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait");this.pending=0;} -this.hoverRequest.abort();this.hoverRequest=null;}},findLayers:function(){var candidates=this.layers||this.map.layers;var layers=[];var layer;for(var i=candidates.length-1;i>=0;--i){layer=candidates[i];if(layer instanceof OpenLayers.Layer.WMTS&&layer.requestEncoding===this.requestEncoding&&(!this.queryVisible||layer.getVisibility())){layers.push(layer);if(!this.drillDown||this.hover){break;}}} -return layers;},buildRequestOptions:function(layer,xy){var loc=this.map.getLonLatFromPixel(xy);var getTileUrl=layer.getURL(new OpenLayers.Bounds(loc.lon,loc.lat,loc.lon,loc.lat));var params=OpenLayers.Util.getParameters(getTileUrl);var tileInfo=layer.getTileInfo(loc);OpenLayers.Util.extend(params,{service:"WMTS",version:layer.version,request:"GetFeatureInfo",infoFormat:this.infoFormat,i:tileInfo.i,j:tileInfo.j});OpenLayers.Util.applyDefaults(params,this.vendorParams);return{url:layer.url instanceof Array?layer.url[0]:layer.url,params:OpenLayers.Util.upperCaseObject(params),callback:function(request){this.handleResponse(xy,request,layer);},scope:this};},request:function(xy,options){options=options||{};var layers=this.findLayers();if(layers.length>0){var issue,layer;for(var i=0,len=layers.length;i<len;i++){layer=layers[i];issue=this.events.triggerEvent("beforegetfeatureinfo",{xy:xy,layer:layer});if(issue!==false){++this.pending;var requestOptions=this.buildRequestOptions(layer,xy);var request=OpenLayers.Request.GET(requestOptions);if(options.hover===true){this.hoverRequest=request;}}} -if(this.pending>0){OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait");}}},handleResponse:function(xy,request,layer){--this.pending;if(this.pending<=0){OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait");this.pending=0;} -if(request.status&&(request.status<200||request.status>=300)){this.events.triggerEvent("exception",{xy:xy,request:request,layer:layer});}else{var doc=request.responseXML;if(!doc||!doc.documentElement){doc=request.responseText;} -var features,except;try{features=this.format.read(doc);}catch(error){except=true;this.events.triggerEvent("exception",{xy:xy,request:request,error:error,layer:layer});} -if(!except){this.events.triggerEvent("getfeatureinfo",{text:request.responseText,features:features,request:request,xy:xy,layer:layer});}}},setMap:function(map){this.handler.setMap(map);OpenLayers.Control.prototype.setMap.apply(this,arguments);},CLASS_NAME:"OpenLayers.Control.WMTSGetFeatureInfo"});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",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;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;} -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.Feature.WFS=OpenLayers.Class(OpenLayers.Feature,{initialize:function(layer,xmlNode){var newArguments=arguments;var data=this.processXMLNode(xmlNode);newArguments=new Array(layer,data.lonlat,data);OpenLayers.Feature.prototype.initialize.apply(this,newArguments);this.createMarker();this.layer.addMarker(this.marker);},destroy:function(){if(this.marker!=null){this.layer.removeMarker(this.marker);} -OpenLayers.Feature.prototype.destroy.apply(this,arguments);},processXMLNode:function(xmlNode){var point=OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,"http://www.opengis.net/gml","gml","Point");var text=OpenLayers.Util.getXmlNodeValue(OpenLayers.Ajax.getElementsByTagNameNS(point[0],"http://www.opengis.net/gml","gml","coordinates")[0]);var floats=text.split(",");return{lonlat:new OpenLayers.LonLat(parseFloat(floats[0]),parseFloat(floats[1])),id:null};},CLASS_NAME:"OpenLayers.Feature.WFS"});OpenLayers.Format.OWSCommon.v1_0_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1,{namespaces:{ows:"http://www.opengis.net/ows/1.0",xlink:"http://www.w3.org/1999/xlink"},readers:{"ows":OpenLayers.Format.OWSCommon.v1.prototype.readers["ows"]},writers:{"ows":OpenLayers.Format.OWSCommon.v1.prototype.writers["ows"]},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1_1_0"});OpenLayers.Format.OWSCommon.v1_1_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1,{namespaces:{ows:"http://www.opengis.net/ows/1.1",xlink:"http://www.w3.org/1999/xlink"},readers:{"ows":OpenLayers.Util.applyDefaults({"AllowedValues":function(node,parameter){parameter.allowedValues={};this.readChildNodes(node,parameter.allowedValues);},"AnyValue":function(node,parameter){parameter.anyValue=true;},"Range":function(node,allowedValues){allowedValues.range={};this.readChildNodes(node,allowedValues.range);},"MinimumValue":function(node,range){range.minValue=this.getChildValue(node);},"MaximumValue":function(node,range){range.maxValue=this.getChildValue(node);},"Identifier":function(node,obj){obj.identifier=this.getChildValue(node);},"SupportedCRS":function(node,obj){obj.supportedCRS=this.getChildValue(node);}},OpenLayers.Format.OWSCommon.v1.prototype.readers["ows"])},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1_1_0"});OpenLayers.Format.OWSContext=OpenLayers.Class(OpenLayers.Format.Context,{defaultVersion:"0.3.1",getParser:function(version){var v=version||this.version||this.defaultVersion;if(v==="0.3.0"){v=this.defaultVersion;} -if(!this.parser||this.parser.VERSION!=v){var format=OpenLayers.Format.OWSContext["v"+v.replace(/\./g,"_")];if(!format){throw"Can't find a OWSContext parser for version "+v;} -this.parser=new format(this.options);} -return this.parser;},toContext:function(obj){var context={};if(obj.CLASS_NAME=="OpenLayers.Map"){context.bounds=obj.getExtent();context.maxExtent=obj.maxExtent;context.projection=obj.projection;context.size=obj.getSize();context.layers=obj.layers;} -return context;},CLASS_NAME:"OpenLayers.Format.OWSContext"});OpenLayers.Format.WFSCapabilities.v1=OpenLayers.Class(OpenLayers.Format.WFSCapabilities,{initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);this.options=options;},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -var capabilities={};var root=data.documentElement;this.runChildNodes(capabilities,root);return capabilities;},runChildNodes:function(obj,node){var children=node.childNodes;var childNode,processor;for(var i=0;i<children.length;++i){childNode=children[i];if(childNode.nodeType==1){processor=this["read_cap_"+childNode.nodeName];if(processor){processor.apply(this,[obj,childNode]);}}}},read_cap_FeatureTypeList:function(request,node){var featureTypeList={featureTypes:[]};this.runChildNodes(featureTypeList,node);request.featureTypeList=featureTypeList;},read_cap_FeatureType:function(featureTypeList,node,parentLayer){var featureType={};this.runChildNodes(featureType,node);featureTypeList.featureTypes.push(featureType);},read_cap_Name:function(obj,node){var name=this.getChildValue(node);if(name){var parts=name.split(":");obj.name=parts.pop();if(parts.length>0){obj.featureNS=this.lookupNamespaceURI(node,parts[0]);}}},read_cap_Title:function(obj,node){var title=this.getChildValue(node);if(title){obj.title=title;}},read_cap_Abstract:function(obj,node){var abst=this.getChildValue(node);if(abst){obj["abstract"]=abst;}},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1"});OpenLayers.Format.WMC=OpenLayers.Class(OpenLayers.Format.Context,{defaultVersion:"1.1.0",getParser:function(version){var v=version||this.version||this.defaultVersion;if(!this.parser||this.parser.VERSION!=v){var format=OpenLayers.Format.WMC["v"+v.replace(/\./g,"_")];if(!format){throw"Can't find a WMC parser for version "+v;} -this.parser=new format(this.options);} -return this.parser;},layerToContext:function(layer){var parser=this.getParser();var layerContext={queryable:layer.queryable,visibility:layer.visibility,name:layer.params["LAYERS"],title:layer.name,metadataURL:layer.metadataURL,version:layer.params["VERSION"],url:layer.url,maxExtent:layer.maxExtent,transparent:layer.params["TRANSPARENT"],numZoomLevels:layer.numZoomLevels,units:layer.units,isBaseLayer:layer.isBaseLayer,opacity:layer.opacity,displayInLayerSwitcher:layer.displayInLayerSwitcher,singleTile:layer.singleTile,tileSize:(layer.singleTile||!layer.tileSize)?undefined:{width:layer.tileSize.w,height:layer.tileSize.h},minScale:(layer.options.resolutions||layer.options.scales||layer.options.maxResolution||layer.options.minScale)?layer.minScale:undefined,maxScale:(layer.options.resolutions||layer.options.scales||layer.options.minResolution||layer.options.maxScale)?layer.maxScale:undefined,formats:[{value:layer.params["FORMAT"],current:true}],styles:[{href:layer.params["SLD"],body:layer.params["SLD_BODY"],name:layer.params["STYLES"]||parser.defaultStyleName,title:parser.defaultStyleTitle,current:true}]};return layerContext;},toContext:function(obj){var context={};var layers=obj.layers;if(obj.CLASS_NAME=="OpenLayers.Map"){context.bounds=obj.getExtent();context.maxExtent=obj.maxExtent;context.projection=obj.projection;context.size=obj.getSize();} -else{OpenLayers.Util.applyDefaults(context,obj);if(context.layers!=undefined){delete(context.layers);}} -if(context.layersContext==undefined){context.layersContext=[];} -if(layers!=undefined&&layers instanceof Array){for(var i=0,len=layers.length;i<len;i++){var layer=layers[i];if(layer instanceof OpenLayers.Layer.WMS){context.layersContext.push(this.layerToContext(layer));}}} -return context;},CLASS_NAME:"OpenLayers.Format.WMC"});OpenLayers.Format.WMSCapabilities.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{wms:"http://www.opengis.net/wms",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"wms",initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -if(data&&data.nodeType==9){data=data.documentElement;} -var capabilities={};this.readNode(data,capabilities);this.postProcessLayers(capabilities);return capabilities;},postProcessLayers:function(capabilities){if(capabilities.capability){capabilities.capability.layers=[];var layers=capabilities.capability.nestedLayers;for(var i=0,len=layers.length;i<len;++i){var layer=layers[i];this.processLayer(capabilities.capability,layer);}}},processLayer:function(capability,layer,parentLayer){if(layer.formats===undefined){layer.formats=capability.request.getmap.formats;} -if(parentLayer){layer.styles=layer.styles.concat(parentLayer.styles);var attributes=["queryable","cascaded","fixedWidth","fixedHeight","opaque","noSubsets","llbbox","minScale","maxScale","attribution"];var complexAttr=["srs","bbox","dimensions","authorityURLs"];var key;for(var j=0;j<attributes.length;j++){key=attributes[j];if(key in parentLayer){if(layer[key]==null){layer[key]=parentLayer[key];} -if(layer[key]==null){var intAttr=["cascaded","fixedWidth","fixedHeight"];var boolAttr=["queryable","opaque","noSubsets"];if(OpenLayers.Util.indexOf(intAttr,key)!=-1){layer[key]=0;} -if(OpenLayers.Util.indexOf(boolAttr,key)!=-1){layer[key]=false;}}}} -for(var j=0;j<complexAttr.length;j++){key=complexAttr[j];layer[key]=OpenLayers.Util.extend(layer[key],parentLayer[key]);}} -for(var i=0,len=layer.nestedLayers.length;i<len;i++){var childLayer=layer.nestedLayers[i];this.processLayer(capability,childLayer,layer);} -if(layer.name){capability.layers.push(layer);}},readers:{"wms":{"Service":function(node,obj){obj.service={};this.readChildNodes(node,obj.service);},"Name":function(node,obj){obj.name=this.getChildValue(node);},"Title":function(node,obj){obj.title=this.getChildValue(node);},"Abstract":function(node,obj){obj["abstract"]=this.getChildValue(node);},"BoundingBox":function(node,obj){var bbox={};bbox.bbox=[parseFloat(node.getAttribute("minx")),parseFloat(node.getAttribute("miny")),parseFloat(node.getAttribute("maxx")),parseFloat(node.getAttribute("maxy"))];var res={x:parseFloat(node.getAttribute("resx")),y:parseFloat(node.getAttribute("resy"))};if(!(isNaN(res.x)&&isNaN(res.y))){bbox.res=res;} -return bbox;},"OnlineResource":function(node,obj){obj.href=this.getAttributeNS(node,this.namespaces.xlink,"href");},"ContactInformation":function(node,obj){obj.contactInformation={};this.readChildNodes(node,obj.contactInformation);},"ContactPersonPrimary":function(node,obj){obj.personPrimary={};this.readChildNodes(node,obj.personPrimary);},"ContactPerson":function(node,obj){obj.person=this.getChildValue(node);},"ContactOrganization":function(node,obj){obj.organization=this.getChildValue(node);},"ContactPosition":function(node,obj){obj.position=this.getChildValue(node);},"ContactAddress":function(node,obj){obj.contactAddress={};this.readChildNodes(node,obj.contactAddress);},"AddressType":function(node,obj){obj.type=this.getChildValue(node);},"Address":function(node,obj){obj.address=this.getChildValue(node);},"City":function(node,obj){obj.city=this.getChildValue(node);},"StateOrProvince":function(node,obj){obj.stateOrProvince=this.getChildValue(node);},"PostCode":function(node,obj){obj.postcode=this.getChildValue(node);},"Country":function(node,obj){obj.country=this.getChildValue(node);},"ContactVoiceTelephone":function(node,obj){obj.phone=this.getChildValue(node);},"ContactFacsimileTelephone":function(node,obj){obj.fax=this.getChildValue(node);},"ContactElectronicMailAddress":function(node,obj){obj.email=this.getChildValue(node);},"Fees":function(node,obj){var fees=this.getChildValue(node);if(fees&&fees.toLowerCase()!="none"){obj.fees=fees;}},"AccessConstraints":function(node,obj){var constraints=this.getChildValue(node);if(constraints&&constraints.toLowerCase()!="none"){obj.accessConstraints=constraints;}},"Capability":function(node,obj){obj.capability={nestedLayers:[]};this.readChildNodes(node,obj.capability);},"Request":function(node,obj){obj.request={};this.readChildNodes(node,obj.request);},"GetCapabilities":function(node,obj){obj.getcapabilities={formats:[]};this.readChildNodes(node,obj.getcapabilities);},"Format":function(node,obj){if(obj.formats instanceof Array){obj.formats.push(this.getChildValue(node));}else{obj.format=this.getChildValue(node);}},"DCPType":function(node,obj){this.readChildNodes(node,obj);},"HTTP":function(node,obj){this.readChildNodes(node,obj);},"Get":function(node,obj){this.readChildNodes(node,obj);},"Post":function(node,obj){this.readChildNodes(node,obj);},"GetMap":function(node,obj){obj.getmap={formats:[]};this.readChildNodes(node,obj.getmap);},"GetFeatureInfo":function(node,obj){obj.getfeatureinfo={formats:[]};this.readChildNodes(node,obj.getfeatureinfo);},"Exception":function(node,obj){obj.exception={formats:[]};this.readChildNodes(node,obj.exception);},"Layer":function(node,obj){var attrNode=node.getAttributeNode("queryable");var queryable=(attrNode&&attrNode.specified)?node.getAttribute("queryable"):null;attrNode=node.getAttributeNode("cascaded");var cascaded=(attrNode&&attrNode.specified)?node.getAttribute("cascaded"):null;attrNode=node.getAttributeNode("opaque");var opaque=(attrNode&&attrNode.specified)?node.getAttribute('opaque'):null;var noSubsets=node.getAttribute('noSubsets');var fixedWidth=node.getAttribute('fixedWidth');var fixedHeight=node.getAttribute('fixedHeight');var layer={nestedLayers:[],styles:[],srs:{},metadataURLs:[],bbox:{},dimensions:{},authorityURLs:{},identifiers:{},keywords:[],queryable:(queryable&&queryable!=="")?(queryable==="1"||queryable==="true"):null,cascaded:(cascaded!==null)?parseInt(cascaded):null,opaque:opaque?(opaque==="1"||opaque==="true"):null,noSubsets:(noSubsets!==null)?(noSubsets==="1"||noSubsets==="true"):null,fixedWidth:(fixedWidth!=null)?parseInt(fixedWidth):null,fixedHeight:(fixedHeight!=null)?parseInt(fixedHeight):null};obj.nestedLayers.push(layer);this.readChildNodes(node,layer);if(layer.name){var parts=layer.name.split(":");if(parts.length>0){layer.prefix=parts[0];}}},"Attribution":function(node,obj){obj.attribution={};this.readChildNodes(node,obj.attribution);},"LogoURL":function(node,obj){obj.logo={width:node.getAttribute("width"),height:node.getAttribute("height")};this.readChildNodes(node,obj.logo);},"Style":function(node,obj){var style={};obj.styles.push(style);this.readChildNodes(node,style);},"LegendURL":function(node,obj){var legend={width:node.getAttribute("width"),height:node.getAttribute("height")};obj.legend=legend;this.readChildNodes(node,legend);},"MetadataURL":function(node,obj){var metadataURL={type:node.getAttribute("type")};obj.metadataURLs.push(metadataURL);this.readChildNodes(node,metadataURL);},"DataURL":function(node,obj){obj.dataURL={};this.readChildNodes(node,obj.dataURL);},"FeatureListURL":function(node,obj){obj.featureListURL={};this.readChildNodes(node,obj.featureListURL);},"AuthorityURL":function(node,obj){var name=node.getAttribute("name");var authority={};this.readChildNodes(node,authority);obj.authorityURLs[name]=authority.href;},"Identifier":function(node,obj){var authority=node.getAttribute("authority");obj.identifiers[authority]=this.getChildValue(node);},"KeywordList":function(node,obj){this.readChildNodes(node,obj);},"SRS":function(node,obj){obj.srs[this.getChildValue(node)]=true;}}},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1"});OpenLayers.Format.WMSDescribeLayer.v1_1=OpenLayers.Class(OpenLayers.Format.WMSDescribeLayer,{initialize:function(options){OpenLayers.Format.WMSDescribeLayer.prototype.initialize.apply(this,[options]);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -var root=data.documentElement;var children=root.childNodes;var describelayer=[];var childNode,nodeName;for(var i=0;i<children.length;++i){childNode=children[i];nodeName=childNode.nodeName;if(nodeName=='LayerDescription'){var layerName=childNode.getAttribute('name');var owsType='';var owsURL='';var typeName='';if(childNode.getAttribute('owsType')){owsType=childNode.getAttribute('owsType');owsURL=childNode.getAttribute('owsURL');}else{if(childNode.getAttribute('wfs')!=''){owsType='WFS';owsURL=childNode.getAttribute('wfs');}else if(childNode.getAttribute('wcs')!=''){owsType='WCS';owsURL=childNode.getAttribute('wcs');}} -var query=childNode.getElementsByTagName('Query');if(query.length>0){typeName=query[0].getAttribute('typeName');if(!typeName){typeName=query[0].getAttribute('typename');}} -describelayer.push({layerName:layerName,owsType:owsType,owsURL:owsURL,typeName:typeName});}} -return describelayer;},CLASS_NAME:"OpenLayers.Format.WMSDescribeLayer.v1_1"});OpenLayers.Handler.Box=OpenLayers.Class(OpenLayers.Handler,{dragHandler:null,boxDivClassName:'olHandlerBoxZoomBox',boxCharacteristics:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);var callbacks={"down":this.startBox,"move":this.moveBox,"out":this.removeBox,"up":this.endBox};this.dragHandler=new OpenLayers.Handler.Drag(this,callbacks,{keyMask:this.keyMask});},destroy:function(){if(this.dragHandler){this.dragHandler.destroy();this.dragHandler=null;} -OpenLayers.Handler.prototype.destroy.apply(this,arguments);},setMap:function(map){OpenLayers.Handler.prototype.setMap.apply(this,arguments);if(this.dragHandler){this.dragHandler.setMap(map);}},startBox:function(xy){this.zoomBox=OpenLayers.Util.createDiv('zoomBox',this.dragHandler.start);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(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);this.zoomBox.style.width=Math.max(1,deltaX)+"px";this.zoomBox.style.height=Math.max(1,deltaY)+"px";this.zoomBox.style.left=xy.x<startX?xy.x+"px":startX+"px";this.zoomBox.style.top=xy.y<startY?xy.y+"px":startY+"px";var box=this.getBoxCharacteristics();if(box.newBoxModel){if(xy.x>startX){this.zoomBox.style.width=Math.max(1,deltaX-box.xOffset)+"px";} -if(xy.y>startY){this.zoomBox.style.height=Math.max(1,deltaY-box.yOffset)+"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.viewPortDiv.removeChild(this.zoomBox);this.zoomBox=null;this.boxCharacteristics=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,"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)){this.dragHandler.deactivate();return true;}else{return false;}},getBoxCharacteristics:function(){if(!this.boxCharacteristics){var xOffset=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-left-width"))+parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-right-width"))+1;var yOffset=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-top-width"))+parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-bottom-width"))+1;var newBoxModel=OpenLayers.Util.getBrowserName()=="msie"?document.compatMode!="BackCompat":true;this.boxCharacteristics={xOffset:xOffset,yOffset:yOffset,newBoxModel:newBoxModel};} -return this.boxCharacteristics;},CLASS_NAME:"OpenLayers.Handler.Box"});OpenLayers.Handler.RegularPolygon=OpenLayers.Class(OpenLayers.Handler.Drag,{sides:4,radius:null,snapAngle:null,snapToggle:'shiftKey',layerOptions:null,persist:false,irregular:false,angle:null,fixedRadius:false,feature:null,layer:null,origin:null,initialize:function(control,callbacks,options){if(!(options&&options.layerOptions&&options.layerOptions.styleMap)){this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style['default'],{});} -OpenLayers.Handler.prototype.initialize.apply(this,[control,callbacks,options]);this.options=(options)?options:{};},setOptions:function(newOptions){OpenLayers.Util.extend(this.options,newOptions);OpenLayers.Util.extend(this,newOptions);},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var options=OpenLayers.Util.extend({displayInLayerSwitcher:false,calculateInRange:OpenLayers.Function.True},this.layerOptions);this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,options);this.map.addLayer(this.layer);activated=true;} -return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.Drag.prototype.deactivate.apply(this,arguments)){if(this.dragging){this.cancel();} -if(this.layer.map!=null){this.layer.destroy(false);if(this.feature){this.feature.destroy();}} -this.layer=null;this.feature=null;deactivated=true;} -return deactivated;},down:function(evt){this.fixedRadius=!!(this.radius);var maploc=this.map.getLonLatFromPixel(evt.xy);this.origin=new OpenLayers.Geometry.Point(maploc.lon,maploc.lat);if(!this.fixedRadius||this.irregular){this.radius=this.map.getResolution();} -if(this.persist){this.clear();} -this.feature=new OpenLayers.Feature.Vector();this.createGeometry();this.callback("create",[this.origin,this.feature]);this.layer.addFeatures([this.feature],{silent:true});this.layer.drawFeature(this.feature,this.style);},move:function(evt){var maploc=this.map.getLonLatFromPixel(evt.xy);var point=new OpenLayers.Geometry.Point(maploc.lon,maploc.lat);if(this.irregular){var ry=Math.sqrt(2)*Math.abs(point.y-this.origin.y)/2;this.radius=Math.max(this.map.getResolution()/2,ry);}else if(this.fixedRadius){this.origin=point;}else{this.calculateAngle(point,evt);this.radius=Math.max(this.map.getResolution()/2,point.distanceTo(this.origin));} -this.modifyGeometry();if(this.irregular){var dx=point.x-this.origin.x;var dy=point.y-this.origin.y;var ratio;if(dy==0){ratio=dx/(this.radius*Math.sqrt(2));}else{ratio=dx/dy;} -this.feature.geometry.resize(1,this.origin,ratio);this.feature.geometry.move(dx/2,dy/2);} -this.layer.drawFeature(this.feature,this.style);},up:function(evt){this.finalize();if(this.start==this.last){this.callback("done",[evt.xy]);}},out:function(evt){this.finalize();},createGeometry:function(){this.angle=Math.PI*((1/this.sides)-(1/2));if(this.snapAngle){this.angle+=this.snapAngle*(Math.PI/180);} -this.feature.geometry=OpenLayers.Geometry.Polygon.createRegularPolygon(this.origin,this.radius,this.sides,this.snapAngle);},modifyGeometry:function(){var angle,point;var ring=this.feature.geometry.components[0];if(ring.components.length!=(this.sides+1)){this.createGeometry();ring=this.feature.geometry.components[0];} -for(var i=0;i<this.sides;++i){point=ring.components[i];angle=this.angle+(i*2*Math.PI/this.sides);point.x=this.origin.x+(this.radius*Math.cos(angle));point.y=this.origin.y+(this.radius*Math.sin(angle));point.clearBounds();}},calculateAngle:function(point,evt){var alpha=Math.atan2(point.y-this.origin.y,point.x-this.origin.x);if(this.snapAngle&&(this.snapToggle&&!evt[this.snapToggle])){var snapAngleRad=(Math.PI/180)*this.snapAngle;this.angle=Math.round(alpha/snapAngleRad)*snapAngleRad;}else{this.angle=alpha;}},cancel:function(){this.callback("cancel",null);this.finalize();},finalize:function(){this.origin=null;this.radius=this.options.radius;},clear:function(){if(this.layer){this.layer.renderer.clear();this.layer.destroyFeatures();}},callback:function(name,args){if(this.callbacks[name]){this.callbacks[name].apply(this.control,[this.feature.geometry.clone()]);} -if(!this.persist&&(name=="done"||name=="cancel")){this.clear();}},CLASS_NAME:"OpenLayers.Handler.RegularPolygon"});OpenLayers.Layer.EventPane=OpenLayers.Class(OpenLayers.Layer,{smoothDragPan:true,isBaseLayer:true,isFixed:true,pane:null,mapObject:null,initialize:function(name,options){OpenLayers.Layer.prototype.initialize.apply(this,arguments);if(this.pane==null){this.pane=OpenLayers.Util.createDiv(this.div.id+"_EventPane");}},destroy:function(){this.mapObject=null;this.pane=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments);},setMap:function(map){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%";if(OpenLayers.Util.getBrowserName()=="msie"){this.pane.style.background="url("+OpenLayers.Util.getImagesLocation()+"blank.gif)";} -if(this.isFixed){this.map.viewPortDiv.appendChild(this.pane);}else{this.map.layerContainerDiv.appendChild(this.pane);} -this.loadMapObject();if(this.mapObject==null){this.loadWarningMessage();}},removeMap:function(map){if(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 viewSize=this.map.getSize();var msgW=Math.min(viewSize.w,300);var msgH=Math.min(viewSize.h,200);var size=new OpenLayers.Size(msgW,msgH);var centerPx=new OpenLayers.Pixel(viewSize.w/2,viewSize.h/2);var topLeft=centerPx.add(-size.w/2,-size.h/2);var div=OpenLayers.Util.createDiv(this.name+"_warning",topLeft,size,null,null,null,"auto");div.style.padding="7px";div.style.backgroundColor="yellow";div.innerHTML=this.getWarningHTML();this.div.appendChild(div);},getWarningHTML:function(){return"";},display:function(display){OpenLayers.Layer.prototype.display.apply(this,arguments);this.pane.style.display=this.div.style.display;},setZIndex:function(zIndex){OpenLayers.Layer.prototype.setZIndex.apply(this,arguments);this.pane.style.zIndex=parseInt(this.div.style.zIndex)+1;},moveTo:function(bounds,zoomChanged,dragging){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);if(this.mapObject!=null){var newCenter=this.map.getCenter();var newZoom=this.map.getZoom();if(newCenter!=null){var moOldCenter=this.getMapObjectCenter();var oldCenter=this.getOLLonLatFromMapObjectLonLat(moOldCenter);var moOldZoom=this.getMapObjectZoom();var oldZoom=this.getOLZoomFromMapObjectZoom(moOldZoom);if(!(newCenter.equals(oldCenter))||!(newZoom==oldZoom)){if(dragging&&this.dragPanMapObject&&this.smoothDragPan){var oldPx=this.map.getViewPortPxFromLonLat(oldCenter);var newPx=this.map.getViewPortPxFromLonLat(newCenter);this.dragPanMapObject(newPx.x-oldPx.x,oldPx.y-newPx.y);}else{var center=this.getMapObjectLonLatFromOLLonLat(newCenter);var zoom=this.getMapObjectZoomFromOLZoom(newZoom);this.setMapObjectCenter(center,zoom,dragging);}}}}},getLonLatFromViewPortPx:function(viewPortPx){var lonlat=null;if((this.mapObject!=null)&&(this.getMapObjectCenter()!=null)){var moPixel=this.getMapObjectPixelFromOLPixel(viewPortPx);var moLonLat=this.getMapObjectLonLatFromMapObjectPixel(moPixel);lonlat=this.getOLLonLatFromMapObjectLonLat(moLonLat);} -return lonlat;},getViewPortPxFromLonLat:function(lonlat){var viewPortPx=null;if((this.mapObject!=null)&&(this.getMapObjectCenter()!=null)){var moLonLat=this.getMapObjectLonLatFromOLLonLat(lonlat);var moPixel=this.getMapObjectPixelFromMapObjectLonLat(moLonLat);viewPortPx=this.getOLPixelFromMapObjectPixel(moPixel);} -return viewPortPx;},getOLLonLatFromMapObjectLonLat:function(moLonLat){var olLonLat=null;if(moLonLat!=null){var lon=this.getLongitudeFromMapObjectLonLat(moLonLat);var lat=this.getLatitudeFromMapObjectLonLat(moLonLat);olLonLat=new OpenLayers.LonLat(lon,lat);} -return olLonLat;},getMapObjectLonLatFromOLLonLat:function(olLonLat){var moLatLng=null;if(olLonLat!=null){moLatLng=this.getMapObjectLonLatFromLonLat(olLonLat.lon,olLonLat.lat);} -return moLatLng;},getOLPixelFromMapObjectPixel:function(moPixel){var olPixel=null;if(moPixel!=null){var x=this.getXFromMapObjectPixel(moPixel);var y=this.getYFromMapObjectPixel(moPixel);olPixel=new OpenLayers.Pixel(x,y);} -return olPixel;},getMapObjectPixelFromOLPixel:function(olPixel){var moPixel=null;if(olPixel!=null){moPixel=this.getMapObjectPixelFromXY(olPixel.x,olPixel.y);} -return moPixel;},CLASS_NAME:"OpenLayers.Layer.EventPane"});OpenLayers.Layer.FixedZoomLevels=OpenLayers.Class({initialize:function(){},initResolutions:function(){var props=new Array('minZoomLevel','maxZoomLevel','numZoomLevels');for(var i=0,len=props.length;i<len;i++){var property=props[i];this[property]=(this.options[property]!=null)?this.options[property]:this.map[property];} -if((this.minZoomLevel==null)||(this.minZoomLevel<this.MIN_ZOOM_LEVEL)){this.minZoomLevel=this.MIN_ZOOM_LEVEL;} -var desiredZoomLevels;var limitZoomLevels=this.MAX_ZOOM_LEVEL-this.minZoomLevel+1;if(((this.options.numZoomLevels==null)&&(this.options.maxZoomLevel!=null))||((this.numZoomLevels==null)&&(this.maxZoomLevel!=null))){desiredZoomLevels=this.maxZoomLevel-this.minZoomLevel+1;}else{desiredZoomLevels=this.numZoomLevels;} -if(desiredZoomLevels!=null){this.numZoomLevels=Math.min(desiredZoomLevels,limitZoomLevels);}else{this.numZoomLevels=limitZoomLevels;} -this.maxZoomLevel=this.minZoomLevel+this.numZoomLevels-1;if(this.RESOLUTIONS!=null){var resolutionsIndex=0;this.resolutions=[];for(var i=this.minZoomLevel;i<=this.maxZoomLevel;i++){this.resolutions[resolutionsIndex++]=this.RESOLUTIONS[i];} -this.maxResolution=this.resolutions[0];this.minResolution=this.resolutions[this.resolutions.length-1];}},getResolution:function(){if(this.resolutions!=null){return OpenLayers.Layer.prototype.getResolution.apply(this,arguments);}else{var resolution=null;var viewSize=this.map.getSize();var extent=this.getExtent();if((viewSize!=null)&&(extent!=null)){resolution=Math.max(extent.getWidth()/viewSize.w,extent.getHeight()/viewSize.h);} -return resolution;}},getExtent:function(){var extent=null;var size=this.map.getSize();var tlPx=new OpenLayers.Pixel(0,0);var tlLL=this.getLonLatFromViewPortPx(tlPx);var brPx=new OpenLayers.Pixel(size.w,size.h);var brLL=this.getLonLatFromViewPortPx(brPx);if((tlLL!=null)&&(brLL!=null)){extent=new OpenLayers.Bounds(tlLL.lon,brLL.lat,brLL.lon,tlLL.lat);} -return extent;},getZoomForResolution:function(resolution){if(this.resolutions!=null){return OpenLayers.Layer.prototype.getZoomForResolution.apply(this,arguments);}else{var extent=OpenLayers.Layer.prototype.getExtent.apply(this,[]);return this.getZoomForExtent(extent);}},getOLZoomFromMapObjectZoom:function(moZoom){var zoom=null;if(moZoom!=null){zoom=moZoom-this.minZoomLevel;} -return zoom;},getMapObjectZoomFromOLZoom:function(olZoom){var zoom=null;if(olZoom!=null){zoom=olZoom+this.minZoomLevel;} -return zoom;},CLASS_NAME:"OpenLayers.Layer.FixedZoomLevels"});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){var newArguments=arguments;newArguments=[name,options];OpenLayers.Layer.prototype.initialize.apply(this,newArguments);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(url instanceof Array){url=this.selectUrl(paramsString,url);} -var urlParams=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(url));for(var key in allParams){if(key.toUpperCase()in urlParams){delete allParams[key];}} -paramsString=OpenLayers.Util.getParameterString(allParams);return OpenLayers.Util.urlAppend(url,paramsString);},CLASS_NAME:"OpenLayers.Layer.HTTPRequest"});OpenLayers.Layer.Image=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:true,url:null,extent:null,size:null,tile:null,aspectRatio:null,initialize:function(name,url,extent,size,options){this.url=url;this.extent=extent;this.maxExtent=extent;this.size=size;OpenLayers.Layer.prototype.initialize.apply(this,[name,options]);this.aspectRatio=(this.extent.getHeight()/this.size.h)/(this.extent.getWidth()/this.size.w);},destroy:function(){if(this.tile){this.removeTileMonitoringHooks(this.tile);this.tile.destroy();this.tile=null;} -OpenLayers.Layer.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.Image(this.name,this.url,this.extent,this.size,this.getOptions());} -obj=OpenLayers.Layer.prototype.clone.apply(this,[obj]);return obj;},setMap:function(map){if(this.options.maxResolution==null){this.options.maxResolution=this.aspectRatio*this.extent.getWidth()/this.size.w;} -OpenLayers.Layer.prototype.setMap.apply(this,arguments);},moveTo:function(bounds,zoomChanged,dragging){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);var firstRendering=(this.tile==null);if(zoomChanged||firstRendering){this.setTileSize();var ul=new OpenLayers.LonLat(this.extent.left,this.extent.top);var ulPx=this.map.getLayerPxFromLonLat(ul);if(firstRendering){this.tile=new OpenLayers.Tile.Image(this,ulPx,this.extent,null,this.tileSize);this.addTileMonitoringHooks(this.tile);}else{this.tile.size=this.tileSize.clone();this.tile.position=ulPx.clone();} -this.tile.draw();}},setTileSize:function(){var tileWidth=this.extent.getWidth()/this.map.getResolution();var tileHeight=this.extent.getHeight()/this.map.getResolution();this.tileSize=new OpenLayers.Size(tileWidth,tileHeight);},addTileMonitoringHooks:function(tile){tile.onLoadStart=function(){this.events.triggerEvent("loadstart");};tile.events.register("loadstart",this,tile.onLoadStart);tile.onLoadEnd=function(){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});},setUrl:function(newUrl){this.url=newUrl;this.tile.draw();},getURL:function(bounds){return this.url;},CLASS_NAME:"OpenLayers.Layer.Image"});OpenLayers.Layer.Markers=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:false,markers:null,drawn:false,initialize:function(name,options){OpenLayers.Layer.prototype.initialize.apply(this,arguments);this.markers=[];},destroy:function(){this.clearMarkers();this.markers=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments);},setOpacity:function(opacity){if(opacity!=this.opacity){this.opacity=opacity;for(var i=0,len=this.markers.length;i<len;i++){this.markers[i].setOpacity(this.opacity);}}},moveTo:function(bounds,zoomChanged,dragging){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);if(zoomChanged||!this.drawn){for(var i=0,len=this.markers.length;i<len;i++){this.drawMarker(this.markers[i]);} -this.drawn=true;}},addMarker:function(marker){this.markers.push(marker);if(this.opacity!=null){marker.setOpacity(this.opacity);} -if(this.map&&this.map.getExtent()){marker.map=this.map;this.drawMarker(marker);}},removeMarker:function(marker){if(this.markers&&this.markers.length){OpenLayers.Util.removeItem(this.markers,marker);marker.erase();}},clearMarkers:function(){if(this.markers!=null){while(this.markers.length>0){this.removeMarker(this.markers[0]);}}},drawMarker:function(marker){var px=this.map.getLayerPxFromLonLat(marker.lonlat);if(px==null){marker.display(false);}else{if(!marker.isDrawn()){var markerImg=marker.draw(px);this.div.appendChild(markerImg);}else if(marker.icon){marker.icon.moveTo(px);}}},getDataExtent:function(){var maxExtent=null;if(this.markers&&(this.markers.length>0)){var maxExtent=new OpenLayers.Bounds();for(var i=0,len=this.markers.length;i<len;i++){var marker=this.markers[i];maxExtent.extend(marker.lonlat);}} -return maxExtent;},CLASS_NAME:"OpenLayers.Layer.Markers"});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.0339;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;}};OpenLayers.Projection.addTransform("EPSG:4326","EPSG:900913",OpenLayers.Layer.SphericalMercator.projectForward);OpenLayers.Projection.addTransform("EPSG:900913","EPSG:4326",OpenLayers.Layer.SphericalMercator.projectInverse);OpenLayers.Tile.WFS=OpenLayers.Class(OpenLayers.Tile,{features:null,url:null,request:null,initialize:function(layer,position,bounds,url,size){OpenLayers.Tile.prototype.initialize.apply(this,arguments);this.url=url;this.features=[];},destroy:function(){OpenLayers.Tile.prototype.destroy.apply(this,arguments);this.destroyAllFeatures();this.features=null;this.url=null;if(this.request){this.request.abort();this.request=null;}},clear:function(){this.destroyAllFeatures();},draw:function(){if(OpenLayers.Tile.prototype.draw.apply(this,arguments)){if(this.isLoading){this.events.triggerEvent("reload");}else{this.isLoading=true;this.events.triggerEvent("loadstart");} -this.loadFeaturesForRegion(this.requestSuccess);}},loadFeaturesForRegion:function(success,failure){if(this.request){this.request.abort();} -this.request=OpenLayers.Request.GET({url:this.url,success:success,failure:failure,scope:this});},requestSuccess:function(request){if(this.features){var doc=request.responseXML;if(!doc||!doc.documentElement){doc=request.responseText;} -if(this.layer.vectorMode){this.layer.addFeatures(this.layer.formatObject.read(doc));}else{var xml=new OpenLayers.Format.XML();if(typeof doc=="string"){doc=xml.read(doc);} -var resultFeatures=xml.getElementsByTagNameNS(doc,"http://www.opengis.net/gml","featureMember");this.addResults(resultFeatures);}} -if(this.events){this.events.triggerEvent("loadend");} -this.request=null;},addResults:function(results){for(var i=0;i<results.length;i++){var feature=new this.layer.featureClass(this.layer,results[i]);this.features.push(feature);}},destroyAllFeatures:function(){while(this.features.length>0){var feature=this.features.shift();feature.destroy();}},CLASS_NAME:"OpenLayers.Tile.WFS"});OpenLayers.Control.DrawFeature=OpenLayers.Class(OpenLayers.Control,{layer:null,callbacks:null,EVENT_TYPES:["featureadded"],multi:false,featureAdded:function(){},handlerOptions:null,initialize:function(layer,handler,options){this.EVENT_TYPES=OpenLayers.Control.DrawFeature.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.prototype.initialize.apply(this,[options]);this.callbacks=OpenLayers.Util.extend({done:this.drawFeature,modify:function(vertex,feature){this.layer.events.triggerEvent("sketchmodified",{vertex:vertex,feature:feature});},create:function(vertex,feature){this.layer.events.triggerEvent("sketchstarted",{vertex:vertex,feature:feature});}},this.callbacks);this.layer=layer;this.handlerOptions=this.handlerOptions||{};if(!("multi"in this.handlerOptions)){this.handlerOptions.multi=this.multi;} -var sketchStyle=this.layer.styleMap&&this.layer.styleMap.styles.temporary;if(sketchStyle){this.handlerOptions.layerOptions=OpenLayers.Util.applyDefaults(this.handlerOptions.layerOptions,{styleMap:new OpenLayers.StyleMap({"default":sketchStyle})});} -this.handler=new handler(this,this.callbacks,this.handlerOptions);},drawFeature:function(geometry){var feature=new OpenLayers.Feature.Vector(geometry);var proceed=this.layer.events.triggerEvent("sketchcomplete",{feature:feature});if(proceed!==false){feature.state=OpenLayers.State.INSERT;this.layer.addFeatures([feature]);this.featureAdded(feature);this.events.triggerEvent("featureadded",{feature:feature});}},CLASS_NAME:"OpenLayers.Control.DrawFeature"});OpenLayers.Control.Measure=OpenLayers.Class(OpenLayers.Control,{EVENT_TYPES:['measure','measurepartial'],handlerOptions:null,callbacks:null,displaySystem:'metric',geodesic:false,displaySystemUnits:{geographic:['dd'],english:['mi','ft','in'],metric:['km','m']},partialDelay:300,delayedTrigger:null,persist:false,initialize:function(handler,options){this.EVENT_TYPES=OpenLayers.Control.Measure.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.prototype.initialize.apply(this,[options]);this.callbacks=OpenLayers.Util.extend({done:this.measureComplete,point:this.measurePartial},this.callbacks);this.handlerOptions=OpenLayers.Util.extend({persist:this.persist},this.handlerOptions);this.handler=new handler(this,this.callbacks,this.handlerOptions);},cancel:function(){this.handler.cancel();},updateHandler:function(handler,options){var active=this.active;if(active){this.deactivate();} -this.handler=new handler(this,this.callbacks,options);if(active){this.activate();}},measureComplete:function(geometry){if(this.delayedTrigger){window.clearTimeout(this.delayedTrigger);} -this.measure(geometry,"measure");},measurePartial:function(point,geometry){if(geometry.getLength()>0){geometry=geometry.clone();this.delayedTrigger=window.setTimeout(OpenLayers.Function.bind(function(){this.measure(geometry,"measurepartial");},this),this.partialDelay);}},measure:function(geometry,eventType){var stat,order;if(geometry.CLASS_NAME.indexOf('LineString')>-1){stat=this.getBestLength(geometry);order=1;}else{stat=this.getBestArea(geometry);order=2;} -this.events.triggerEvent(eventType,{measure:stat[0],units:stat[1],order:order,geometry:geometry});},getBestArea:function(geometry){var units=this.displaySystemUnits[this.displaySystem];var unit,area;for(var i=0,len=units.length;i<len;++i){unit=units[i];area=this.getArea(geometry,unit);if(area>1){break;}} -return[area,unit];},getArea:function(geometry,units){var area,geomUnits;if(this.geodesic){area=geometry.getGeodesicArea(this.map.getProjectionObject());geomUnits="m";}else{area=geometry.getArea();geomUnits=this.map.getUnits();} -var inPerDisplayUnit=OpenLayers.INCHES_PER_UNIT[units];if(inPerDisplayUnit){var inPerMapUnit=OpenLayers.INCHES_PER_UNIT[geomUnits];area*=Math.pow((inPerMapUnit/inPerDisplayUnit),2);} -return area;},getBestLength:function(geometry){var units=this.displaySystemUnits[this.displaySystem];var unit,length;for(var i=0,len=units.length;i<len;++i){unit=units[i];length=this.getLength(geometry,unit);if(length>1){break;}} -return[length,unit];},getLength:function(geometry,units){var length,geomUnits;if(this.geodesic){length=geometry.getGeodesicLength(this.map.getProjectionObject());geomUnits="m";}else{length=geometry.getLength();geomUnits=this.map.getUnits();} -var inPerDisplayUnit=OpenLayers.INCHES_PER_UNIT[units];if(inPerDisplayUnit){var inPerMapUnit=OpenLayers.INCHES_PER_UNIT[geomUnits];length*=(inPerMapUnit/inPerDisplayUnit);} -return length;},CLASS_NAME:"OpenLayers.Control.Measure"});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.Format.WFSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.WFSCapabilities.v1,{initialize:function(options){OpenLayers.Format.WFSCapabilities.v1.prototype.initialize.apply(this,[options]);},read_cap_Service:function(capabilities,node){var service={};this.runChildNodes(service,node);capabilities.service=service;},read_cap_Fees:function(service,node){var fees=this.getChildValue(node);if(fees&&fees.toLowerCase()!="none"){service.fees=fees;}},read_cap_AccessConstraints:function(service,node){var constraints=this.getChildValue(node);if(constraints&&constraints.toLowerCase()!="none"){service.accessConstraints=constraints;}},read_cap_OnlineResource:function(service,node){var onlineResource=this.getChildValue(node);if(onlineResource&&onlineResource.toLowerCase()!="none"){service.onlineResource=onlineResource;}},read_cap_Keywords:function(service,node){var keywords=this.getChildValue(node);if(keywords&&keywords.toLowerCase()!="none"){service.keywords=keywords.split(', ');}},read_cap_Capability:function(capabilities,node){var capability={};this.runChildNodes(capability,node);capabilities.capability=capability;},read_cap_Request:function(obj,node){var request={};this.runChildNodes(request,node);obj.request=request;},read_cap_GetFeature:function(request,node){var getfeature={href:{},formats:[]};this.runChildNodes(getfeature,node);request.getfeature=getfeature;},read_cap_ResultFormat:function(obj,node){var children=node.childNodes;var childNode;for(var i=0;i<children.length;i++){childNode=children[i];if(childNode.nodeType==1){obj.formats.push(childNode.nodeName);}}},read_cap_DCPType:function(obj,node){this.runChildNodes(obj,node);},read_cap_HTTP:function(obj,node){this.runChildNodes(obj.href,node);},read_cap_Get:function(obj,node){obj.get=node.getAttribute("onlineResource");},read_cap_Post:function(obj,node){obj.post=node.getAttribute("onlineResource");},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1_0_0"});OpenLayers.Format.WFSCapabilities.v1_1_0=OpenLayers.Class(OpenLayers.Format.WFSCapabilities.v1,{initialize:function(options){OpenLayers.Format.WFSCapabilities.v1.prototype.initialize.apply(this,[options]);},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1_1_0"});OpenLayers.Format.WKT=OpenLayers.Class(OpenLayers.Format,{initialize:function(options){this.regExes={'typeStr':/^\s*(\w+)\s*\(\s*(.*)\s*\)\s*$/,'spaces':/\s+/,'parenComma':/\)\s*,\s*\(/,'doubleParenComma':/\)\s*\)\s*,\s*\(\s*\(/,'trimParens':/^\s*\(?(.*?)\)?\s*$/};OpenLayers.Format.prototype.initialize.apply(this,[options]);},read:function(wkt){var features,type,str;var matches=this.regExes.typeStr.exec(wkt);if(matches){type=matches[1].toLowerCase();str=matches[2];if(this.parse[type]){features=this.parse[type].apply(this,[str]);} -if(this.internalProjection&&this.externalProjection){if(features&&features.CLASS_NAME=="OpenLayers.Feature.Vector"){features.geometry.transform(this.externalProjection,this.internalProjection);}else if(features&&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;type=geometry.CLASS_NAME.split('.')[2].toLowerCase();if(!this.extract[type]){return null;} -if(this.internalProjection&&this.externalProjection){geometry=geometry.clone();geometry.transform(this.internalProjection,this.externalProjection);} -data=this.extract[type].apply(this,[geometry]);pieces.push(type.toUpperCase()+'('+data+')');} -if(isCollection){pieces.push(')');} -return pieces.join('');},extract:{'point':function(point){return point.x+' '+point.y;},'multipoint':function(multipoint){var array=[];for(var i=0,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(',');}},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(this.regExes.parenComma);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.Format.WMC.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ol:"http://openlayers.org/context",wmc:"http://www.opengis.net/context",sld:"http://www.opengis.net/sld",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"",getNamespacePrefix:function(uri){var prefix=null;if(uri==null){prefix=this.namespaces[this.defaultPrefix];}else{for(prefix in this.namespaces){if(this.namespaces[prefix]==uri){break;}}} -return prefix;},defaultPrefix:"wmc",rootPrefix:null,defaultStyleName:"",defaultStyleTitle:"Default",initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -var root=data.documentElement;this.rootPrefix=root.prefix;var context={version:root.getAttribute("version")};this.runChildNodes(context,root);return context;},runChildNodes:function(obj,node){var children=node.childNodes;var childNode,processor,prefix,local;for(var i=0,len=children.length;i<len;++i){childNode=children[i];if(childNode.nodeType==1){prefix=this.getNamespacePrefix(childNode.namespaceURI);local=childNode.nodeName.split(":").pop();processor=this["read_"+prefix+"_"+local];if(processor){processor.apply(this,[obj,childNode]);}}}},read_wmc_General:function(context,node){this.runChildNodes(context,node);},read_wmc_BoundingBox:function(context,node){context.projection=node.getAttribute("SRS");context.bounds=new OpenLayers.Bounds(parseFloat(node.getAttribute("minx")),parseFloat(node.getAttribute("miny")),parseFloat(node.getAttribute("maxx")),parseFloat(node.getAttribute("maxy")));},read_wmc_LayerList:function(context,node){context.layersContext=[];this.runChildNodes(context,node);},read_wmc_Layer:function(context,node){var layerContext={visibility:(node.getAttribute("hidden")!="1"),queryable:(node.getAttribute("queryable")=="1"),formats:[],styles:[]};this.runChildNodes(layerContext,node);context.layersContext.push(layerContext);},read_wmc_Extension:function(obj,node){this.runChildNodes(obj,node);},read_ol_units:function(layerContext,node){layerContext.units=this.getChildValue(node);},read_ol_maxExtent:function(obj,node){var bounds=new OpenLayers.Bounds(node.getAttribute("minx"),node.getAttribute("miny"),node.getAttribute("maxx"),node.getAttribute("maxy"));obj.maxExtent=bounds;},read_ol_transparent:function(layerContext,node){layerContext.transparent=this.getChildValue(node);},read_ol_numZoomLevels:function(layerContext,node){layerContext.numZoomLevels=parseInt(this.getChildValue(node));},read_ol_opacity:function(layerContext,node){layerContext.opacity=parseFloat(this.getChildValue(node));},read_ol_singleTile:function(layerContext,node){layerContext.singleTile=(this.getChildValue(node)=="true");},read_ol_tileSize:function(layerContext,node){var obj={"width":node.getAttribute("width"),"height":node.getAttribute("height")};layerContext.tileSize=obj;},read_ol_isBaseLayer:function(layerContext,node){layerContext.isBaseLayer=(this.getChildValue(node)=="true");},read_ol_displayInLayerSwitcher:function(layerContext,node){layerContext.displayInLayerSwitcher=(this.getChildValue(node)=="true");},read_wmc_Server:function(layerContext,node){layerContext.version=node.getAttribute("version");var server={};var links=node.getElementsByTagName("OnlineResource");if(links.length>0){this.read_wmc_OnlineResource(server,links[0]);} -layerContext.url=server.href;},read_wmc_FormatList:function(layerContext,node){this.runChildNodes(layerContext,node);},read_wmc_Format:function(layerContext,node){var format={value:this.getChildValue(node)};if(node.getAttribute("current")=="1"){format.current=true;} -layerContext.formats.push(format);},read_wmc_StyleList:function(layerContext,node){this.runChildNodes(layerContext,node);},read_wmc_Style:function(layerContext,node){var style={};this.runChildNodes(style,node);if(node.getAttribute("current")=="1"){style.current=true;} -layerContext.styles.push(style);},read_wmc_SLD:function(style,node){this.runChildNodes(style,node);},read_sld_StyledLayerDescriptor:function(sld,node){var xml=OpenLayers.Format.XML.prototype.write.apply(this,[node]);sld.body=xml;},read_wmc_OnlineResource:function(obj,node){obj.href=this.getAttributeNS(node,this.namespaces.xlink,"href");},read_wmc_Name:function(obj,node){var name=this.getChildValue(node);if(name){obj.name=name;}},read_wmc_Title:function(obj,node){var title=this.getChildValue(node);if(title){obj.title=title;}},read_wmc_MetadataURL:function(layerContext,node){var metadataURL={};var links=node.getElementsByTagName("OnlineResource");if(links.length>0){this.read_wmc_OnlineResource(metadataURL,links[0]);} -layerContext.metadataURL=metadataURL.href;},read_wmc_Abstract:function(obj,node){var abst=this.getChildValue(node);if(abst){obj["abstract"]=abst;}},read_wmc_LegendURL:function(style,node){var legend={width:node.getAttribute('width'),height:node.getAttribute('height')};var links=node.getElementsByTagName("OnlineResource");if(links.length>0){this.read_wmc_OnlineResource(legend,links[0]);} -style.legend=legend;},write:function(context,options){var root=this.createElementDefaultNS("ViewContext");this.setAttributes(root,{version:this.VERSION,id:(options&&typeof options.id=="string")?options.id:OpenLayers.Util.createUniqueID("OpenLayers_Context_")});this.setAttributeNS(root,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);root.appendChild(this.write_wmc_General(context));root.appendChild(this.write_wmc_LayerList(context));return OpenLayers.Format.XML.prototype.write.apply(this,[root]);},createElementDefaultNS:function(name,childValue,attributes){var node=this.createElementNS(this.namespaces[this.defaultPrefix],name);if(childValue){node.appendChild(this.createTextNode(childValue));} -if(attributes){this.setAttributes(node,attributes);} -return node;},setAttributes:function(node,obj){var value;for(var name in obj){value=obj[name].toString();if(value.match(/[A-Z]/)){this.setAttributeNS(node,null,name,value);}else{node.setAttribute(name,value);}}},write_wmc_General:function(context){var node=this.createElementDefaultNS("General");if(context.size){node.appendChild(this.createElementDefaultNS("Window",null,{width:context.size.w,height:context.size.h}));} -var bounds=context.bounds;node.appendChild(this.createElementDefaultNS("BoundingBox",null,{minx:bounds.left.toPrecision(18),miny:bounds.bottom.toPrecision(18),maxx:bounds.right.toPrecision(18),maxy:bounds.top.toPrecision(18),SRS:context.projection}));node.appendChild(this.createElementDefaultNS("Title",context.title));node.appendChild(this.write_ol_MapExtension(context));return node;},write_ol_MapExtension:function(context){var node=this.createElementDefaultNS("Extension");var bounds=context.maxExtent;if(bounds){var maxExtent=this.createElementNS(this.namespaces.ol,"ol:maxExtent");this.setAttributes(maxExtent,{minx:bounds.left.toPrecision(18),miny:bounds.bottom.toPrecision(18),maxx:bounds.right.toPrecision(18),maxy:bounds.top.toPrecision(18)});node.appendChild(maxExtent);} -return node;},write_wmc_LayerList:function(context){var list=this.createElementDefaultNS("LayerList");for(var i=0,len=context.layersContext.length;i<len;++i){list.appendChild(this.write_wmc_Layer(context.layersContext[i]));} -return list;},write_wmc_Layer:function(context){var node=this.createElementDefaultNS("Layer",null,{queryable:context.queryable?"1":"0",hidden:context.visibility?"0":"1"});node.appendChild(this.write_wmc_Server(context));node.appendChild(this.createElementDefaultNS("Name",context.name));node.appendChild(this.createElementDefaultNS("Title",context.title));if(context.metadataURL){node.appendChild(this.write_wmc_MetadataURL(context.metadataURL));} -return node;},write_wmc_LayerExtension:function(context){var node=this.createElementDefaultNS("Extension");var bounds=context.maxExtent;var maxExtent=this.createElementNS(this.namespaces.ol,"ol:maxExtent");this.setAttributes(maxExtent,{minx:bounds.left.toPrecision(18),miny:bounds.bottom.toPrecision(18),maxx:bounds.right.toPrecision(18),maxy:bounds.top.toPrecision(18)});node.appendChild(maxExtent);if(context.tileSize&&!context.singleTile){var size=this.createElementNS(this.namespaces.ol,"ol:tileSize");this.setAttributes(size,context.tileSize);node.appendChild(size);} -var properties=["transparent","numZoomLevels","units","isBaseLayer","opacity","displayInLayerSwitcher","singleTile"];var child;for(var i=0,len=properties.length;i<len;++i){child=this.createOLPropertyNode(context,properties[i]);if(child){node.appendChild(child);}} -return node;},createOLPropertyNode:function(obj,prop){var node=null;if(obj[prop]!=null){node=this.createElementNS(this.namespaces.ol,"ol:"+prop);node.appendChild(this.createTextNode(obj[prop].toString()));} -return node;},write_wmc_Server:function(context){var node=this.createElementDefaultNS("Server");this.setAttributes(node,{service:"OGC:WMS",version:context.version});node.appendChild(this.write_wmc_OnlineResource(context.url));return node;},write_wmc_MetadataURL:function(metadataURL){var node=this.createElementDefaultNS("MetadataURL");node.appendChild(this.write_wmc_OnlineResource(metadataURL));return node;},write_wmc_FormatList:function(context){var node=this.createElementDefaultNS("FormatList");for(var i=0,len=context.formats.length;i<len;i++){var format=context.formats[i];node.appendChild(this.createElementDefaultNS("Format",format.value,(format.current&&format.current==true)?{current:"1"}:null));} -return node;},write_wmc_StyleList:function(layer){var node=this.createElementDefaultNS("StyleList");var styles=layer.styles;if(styles&&styles instanceof Array){var sld;for(var i=0,len=styles.length;i<len;i++){var s=styles[i];var style=this.createElementDefaultNS("Style",null,(s.current&&s.current==true)?{current:"1"}:null);if(s.href){sld=this.createElementDefaultNS("SLD");var link=this.write_wmc_OnlineResource(s.href);sld.appendChild(link);sld.appendChild(this.createElementDefaultNS("Name",s.name));if(s.title){sld.appendChild(this.createElementDefaultNS("Title",s.title));} -style.appendChild(sld);}else if(s.body){sld=this.createElementDefaultNS("SLD");var doc=OpenLayers.Format.XML.prototype.read.apply(this,[s.body]);var imported=doc.documentElement;if(sld.ownerDocument&&sld.ownerDocument.importNode){imported=sld.ownerDocument.importNode(imported,true);} -sld.appendChild(imported);sld.appendChild(this.createElementDefaultNS("Name",s.name));if(s.title){sld.appendChild(this.createElementDefaultNS("Title",s.title));} -style.appendChild(sld);}else{style.appendChild(this.createElementDefaultNS("Name",s.name));style.appendChild(this.createElementDefaultNS("Title",s.title));if(s['abstract']){style.appendChild(this.createElementDefaultNS("Abstract",s['abstract']));}} -node.appendChild(style);}} -return node;},write_wmc_OnlineResource:function(href){var node=this.createElementDefaultNS("OnlineResource");this.setAttributeNS(node,this.namespaces.xlink,"xlink:type","simple");this.setAttributeNS(node,this.namespaces.xlink,"xlink:href",href);return node;},CLASS_NAME:"OpenLayers.Format.WMC.v1"});OpenLayers.Format.WMSCapabilities.v1_1=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1,{readers:{"wms":OpenLayers.Util.applyDefaults({"WMT_MS_Capabilities":function(node,obj){this.readChildNodes(node,obj);},"Keyword":function(node,obj){if(obj.keywords){obj.keywords.push(this.getChildValue(node));}},"DescribeLayer":function(node,obj){obj.describelayer={formats:[]};this.readChildNodes(node,obj.describelayer);},"GetLegendGraphic":function(node,obj){obj.getlegendgraphic={formats:[]};this.readChildNodes(node,obj.getlegendgraphic);},"GetStyles":function(node,obj){obj.getstyles={formats:[]};this.readChildNodes(node,obj.getstyles);},"PutStyles":function(node,obj){obj.putstyles={formats:[]};this.readChildNodes(node,obj.putstyles);},"UserDefinedSymbolization":function(node,obj){var userSymbols={supportSLD:parseInt(node.getAttribute("SupportSLD"))==1,userLayer:parseInt(node.getAttribute("UserLayer"))==1,userStyle:parseInt(node.getAttribute("UserStyle"))==1,remoteWFS:parseInt(node.getAttribute("RemoteWFS"))==1};obj.userSymbols=userSymbols;},"LatLonBoundingBox":function(node,obj){obj.llbbox=[parseFloat(node.getAttribute("minx")),parseFloat(node.getAttribute("miny")),parseFloat(node.getAttribute("maxx")),parseFloat(node.getAttribute("maxy"))];},"BoundingBox":function(node,obj){var bbox=OpenLayers.Format.WMSCapabilities.v1.prototype.readers["wms"].BoundingBox.apply(this,[node,obj]);bbox.srs=node.getAttribute("SRS");obj.bbox[bbox.srs]=bbox;},"ScaleHint":function(node,obj){var min=node.getAttribute("min");var max=node.getAttribute("max");var rad2=Math.pow(2,0.5);var ipm=OpenLayers.INCHES_PER_UNIT["m"];obj.maxScale=parseFloat(((min/rad2)*ipm*OpenLayers.DOTS_PER_INCH).toPrecision(13));obj.minScale=parseFloat(((max/rad2)*ipm*OpenLayers.DOTS_PER_INCH).toPrecision(13));},"Dimension":function(node,obj){var name=node.getAttribute("name").toLowerCase();var dim={name:name,units:node.getAttribute("units"),unitsymbol:node.getAttribute("unitSymbol")};obj.dimensions[dim.name]=dim;},"Extent":function(node,obj){var name=node.getAttribute("name").toLowerCase();if(name in obj["dimensions"]){var extent=obj.dimensions[name];extent.nearestVal=node.getAttribute("nearestValue")==="1";extent.multipleVal=node.getAttribute("multipleValues")==="1";extent.current=node.getAttribute("current")==="1";extent["default"]=node.getAttribute("default")||"";var values=this.getChildValue(node);extent.values=values.split(",");}}},OpenLayers.Format.WMSCapabilities.v1.prototype.readers["wms"])},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1"});OpenLayers.Format.WMSCapabilities.v1_3=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1,{readers:{"wms":OpenLayers.Util.applyDefaults({"WMS_Capabilities":function(node,obj){this.readChildNodes(node,obj);},"LayerLimit":function(node,obj){obj.layerLimit=parseInt(this.getChildValue(node));},"MaxWidth":function(node,obj){obj.maxWidth=parseInt(this.getChildValue(node));},"MaxHeight":function(node,obj){obj.maxHeight=parseInt(this.getChildValue(node));},"BoundingBox":function(node,obj){var bbox=OpenLayers.Format.WMSCapabilities.v1.prototype.readers["wms"].BoundingBox.apply(this,[node,obj]);bbox.srs=node.getAttribute("CRS");obj.bbox[bbox.srs]=bbox;},"CRS":function(node,obj){this.readers.wms.SRS.apply(this,[node,obj]);},"EX_GeographicBoundingBox":function(node,obj){obj.llbbox=[];this.readChildNodes(node,obj.llbbox);},"westBoundLongitude":function(node,obj){obj[0]=this.getChildValue(node);},"eastBoundLongitude":function(node,obj){obj[2]=this.getChildValue(node);},"southBoundLatitude":function(node,obj){obj[1]=this.getChildValue(node);},"northBoundLatitude":function(node,obj){obj[3]=this.getChildValue(node);},"MinScaleDenominator":function(node,obj){obj.maxScale=parseFloat(this.getChildValue(node)).toPrecision(16);},"MaxScaleDenominator":function(node,obj){obj.minScale=parseFloat(this.getChildValue(node)).toPrecision(16);},"Dimension":function(node,obj){var name=node.getAttribute("name").toLowerCase();var dim={name:name,units:node.getAttribute("units"),unitsymbol:node.getAttribute("unitSymbol"),nearestVal:node.getAttribute("nearestValue")==="1",multipleVal:node.getAttribute("multipleValues")==="1","default":node.getAttribute("default")||"",current:node.getAttribute("current")==="1",values:this.getChildValue(node).split(",")};obj.dimensions[dim.name]=dim;},"Keyword":function(node,obj){var keyword={value:this.getChildValue(node),vocabulary:node.getAttribute("vocabulary")};if(obj.keywords){obj.keywords.push(keyword);}}},OpenLayers.Format.WMSCapabilities.v1.prototype.readers["wms"]),"sld":{"UserDefinedSymbolization":function(node,obj){this.readers.wms.UserDefinedSymbolization.apply(this,[node,obj]);obj.userSymbols.inlineFeature=parseInt(node.getAttribute("InlineFeature"))==1;obj.userSymbols.remoteWCS=parseInt(node.getAttribute("RemoteWCS"))==1;},"DescribeLayer":function(node,obj){this.readers.wms.DescribeLayer.apply(this,[node,obj]);},"GetLegendGraphic":function(node,obj){this.readers.wms.GetLegendGraphic.apply(this,[node,obj]);}}},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_3"});OpenLayers.Format.WMTSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1_1_0,{version:"1.0.0",namespaces:{ows:"http://www.opengis.net/ows/1.1",wmts:"http://www.opengis.net/wmts/1.0",xlink:"http://www.w3.org/1999/xlink"},yx:null,defaultPrefix:"wmts",initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);this.options=options;var yx=OpenLayers.Util.extend({},OpenLayers.Format.WMTSCapabilities.prototype.yx);this.yx=OpenLayers.Util.extend(yx,this.yx);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -if(data&&data.nodeType==9){data=data.documentElement;} -var capabilities={};this.readNode(data,capabilities);capabilities.version=this.version;return capabilities;},readers:{"wmts":{"Capabilities":function(node,obj){this.readChildNodes(node,obj);},"Contents":function(node,obj){obj.contents={};obj.contents.layers=[];obj.contents.tileMatrixSets={};this.readChildNodes(node,obj.contents);},"Layer":function(node,obj){var layer={styles:[],formats:[],tileMatrixSetLinks:[]};layer.layers=[];this.readChildNodes(node,layer);obj.layers.push(layer);},"Style":function(node,obj){var style={};style.isDefault=(node.getAttribute("isDefault")==="true");this.readChildNodes(node,style);obj.styles.push(style);},"Format":function(node,obj){obj.formats.push(this.getChildValue(node));},"TileMatrixSetLink":function(node,obj){var tileMatrixSetLink={};this.readChildNodes(node,tileMatrixSetLink);obj.tileMatrixSetLinks.push(tileMatrixSetLink);},"TileMatrixSet":function(node,obj){if(obj.layers){var tileMatrixSet={matrixIds:[]};this.readChildNodes(node,tileMatrixSet);obj.tileMatrixSets[tileMatrixSet.identifier]=tileMatrixSet;}else{obj.tileMatrixSet=this.getChildValue(node);}},"TileMatrix":function(node,obj){var tileMatrix={supportedCRS:obj.supportedCRS};this.readChildNodes(node,tileMatrix);obj.matrixIds.push(tileMatrix);},"ScaleDenominator":function(node,obj){obj.scaleDenominator=parseFloat(this.getChildValue(node));},"TopLeftCorner":function(node,obj){var topLeftCorner=this.getChildValue(node);var coords=topLeftCorner.split(" ");var yx;if(obj.supportedCRS){var crs=obj.supportedCRS.replace(/urn:ogc:def:crs:(\w+):.+:(\w+)$/,"urn:ogc:def:crs:$1::$2");yx=!!this.yx[crs];} -if(yx){obj.topLeftCorner=new OpenLayers.LonLat(coords[1],coords[0]);}else{obj.topLeftCorner=new OpenLayers.LonLat(coords[0],coords[1]);}},"TileWidth":function(node,obj){obj.tileWidth=parseInt(this.getChildValue(node));},"TileHeight":function(node,obj){obj.tileHeight=parseInt(this.getChildValue(node));},"MatrixWidth":function(node,obj){obj.matrixWidth=parseInt(this.getChildValue(node));},"MatrixHeight":function(node,obj){obj.matrixHeight=parseInt(this.getChildValue(node));},"WSDL":function(node,obj){obj.wsdl={};obj.wsdl.href=node.getAttribute("xlink:href");},"ServiceMetadataURL":function(node,obj){obj.serviceMetadataUrl={};obj.serviceMetadataUrl.href=node.getAttribute("xlink:href");}},"ows":OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers["ows"]},CLASS_NAME:"OpenLayers.Format.WMTSCapabilities.v1_0_0"});OpenLayers.Layer.Boxes=OpenLayers.Class(OpenLayers.Layer.Markers,{initialize:function(name,options){OpenLayers.Layer.Markers.prototype.initialize.apply(this,arguments);},drawMarker:function(marker){var bounds=marker.bounds;var topleft=this.map.getLayerPxFromLonLat(new OpenLayers.LonLat(bounds.left,bounds.top));var botright=this.map.getLayerPxFromLonLat(new OpenLayers.LonLat(bounds.right,bounds.bottom));if(botright==null||topleft==null){marker.display(false);}else{var sz=new OpenLayers.Size(Math.max(1,botright.x-topleft.x),Math.max(1,botright.y-topleft.y));var markerDiv=marker.draw(topleft,sz);if(!marker.drawn){this.div.appendChild(markerDiv);marker.drawn=true;}}},removeMarker:function(marker){OpenLayers.Util.removeItem(this.markers,marker);if((marker.div!=null)&&(marker.div.parentNode==this.div)){this.div.removeChild(marker.div);}},CLASS_NAME:"OpenLayers.Layer.Boxes"});OpenLayers.Layer.GeoRSS=OpenLayers.Class(OpenLayers.Layer.Markers,{location:null,features:null,formatOptions:null,selectedFeature:null,icon:null,popupSize:null,useFeedTitle:true,initialize:function(name,location,options){OpenLayers.Layer.Markers.prototype.initialize.apply(this,[name,options]);this.location=location;this.features=[];},destroy:function(){OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);this.clearFeatures();this.features=null;},loadRSS:function(){if(!this.loaded){this.events.triggerEvent("loadstart");OpenLayers.Request.GET({url:this.location,success:this.parseData,scope:this});this.loaded=true;}},moveTo:function(bounds,zoomChanged,minor){OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);if(this.visibility&&!this.loaded){this.loadRSS();}},parseData:function(ajaxRequest){var doc=ajaxRequest.responseXML;if(!doc||!doc.documentElement){doc=OpenLayers.Format.XML.prototype.read(ajaxRequest.responseText);} -if(this.useFeedTitle){var name=null;try{name=doc.getElementsByTagNameNS('*','title')[0].firstChild.nodeValue;} -catch(e){name=doc.getElementsByTagName('title')[0].firstChild.nodeValue;} -if(name){this.setName(name);}} -var options={};OpenLayers.Util.extend(options,this.formatOptions);if(this.map&&!this.projection.equals(this.map.getProjectionObject())){options.externalProjection=this.projection;options.internalProjection=this.map.getProjectionObject();} -var format=new OpenLayers.Format.GeoRSS(options);var features=format.read(doc);for(var i=0,len=features.length;i<len;i++){var data={};var feature=features[i];if(!feature.geometry){continue;} -var title=feature.attributes.title?feature.attributes.title:"Untitled";var description=feature.attributes.description?feature.attributes.description:"No description.";var link=feature.attributes.link?feature.attributes.link:"";var location=feature.geometry.getBounds().getCenterLonLat();data.icon=this.icon==null?OpenLayers.Marker.defaultIcon():this.icon.clone();data.popupSize=this.popupSize?this.popupSize.clone():new OpenLayers.Size(250,120);if(title||description){data.title=title;data.description=description;var contentHTML='<div class="olLayerGeoRSSClose">[x]</div>';contentHTML+='<div class="olLayerGeoRSSTitle">';if(link){contentHTML+='<a class="link" href="'+link+'" target="_blank">';} -contentHTML+=title;if(link){contentHTML+='</a>';} -contentHTML+='</div>';contentHTML+='<div style="" class="olLayerGeoRSSDescription">';contentHTML+=description;contentHTML+='</div>';data['popupContentHTML']=contentHTML;} -var feature=new OpenLayers.Feature(this,location,data);this.features.push(feature);var marker=feature.createMarker();marker.events.register('click',feature,this.markerClick);this.addMarker(marker);} -this.events.triggerEvent("loadend");},markerClick:function(evt){var sameMarkerClicked=(this==this.layer.selectedFeature);this.layer.selectedFeature=(!sameMarkerClicked)?this:null;for(var i=0,len=this.layer.map.popups.length;i<len;i++){this.layer.map.removePopup(this.layer.map.popups[i]);} -if(!sameMarkerClicked){var popup=this.createPopup();OpenLayers.Event.observe(popup.div,"click",OpenLayers.Function.bind(function(){for(var i=0,len=this.layer.map.popups.length;i<len;i++){this.layer.map.removePopup(this.layer.map.popups[i]);}},this));this.layer.map.addPopup(popup);} -OpenLayers.Event.stop(evt);},clearFeatures:function(){if(this.features!=null){while(this.features.length>0){var feature=this.features[0];OpenLayers.Util.removeItem(this.features,feature);feature.destroy();}}},CLASS_NAME:"OpenLayers.Layer.GeoRSS"});OpenLayers.Layer.Google=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:0,MAX_ZOOM_LEVEL:21,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125,0.00002145767211914062,0.00001072883605957031,0.00000536441802978515,0.00000268220901489257,0.0000013411045074462891,0.00000067055225372314453],type:null,wrapDateLine:true,sphericalMercator:false,version:null,initialize:function(name,options){options=options||{};if(!options.version){options.version=typeof GMap2==="function"?"2":"3";} -var mixin=OpenLayers.Layer.Google["v"+ -options.version.replace(/\./g,"_")];if(mixin){OpenLayers.Util.applyDefaults(options,mixin);}else{throw"Unsupported Google Maps API version: "+options.version;} -OpenLayers.Util.applyDefaults(options,mixin.DEFAULTS);if(options.maxExtent){options.maxExtent=options.maxExtent.clone();} -OpenLayers.Layer.EventPane.prototype.initialize.apply(this,[name,options]);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,[name,options]);if(this.sphericalMercator){OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator);this.initMercatorParameters();}},clone:function(){return new OpenLayers.Layer.Google(this.name,this.getOptions());},setVisibility:function(visible){var opacity=this.opacity==null?1:this.opacity;OpenLayers.Layer.EventPane.prototype.setVisibility.apply(this,arguments);this.setOpacity(opacity);},display:function(visible){if(!this._dragging){this.setGMapVisibility(visible);} -OpenLayers.Layer.EventPane.prototype.display.apply(this,arguments);},moveTo:function(bounds,zoomChanged,dragging){this._dragging=dragging;OpenLayers.Layer.EventPane.prototype.moveTo.apply(this,arguments);delete this._dragging;},setOpacity:function(opacity){if(opacity!==this.opacity){if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"opacity"});} -this.opacity=opacity;} -if(this.getVisibility()){var container=this.getMapContainer();OpenLayers.Util.modifyDOMElement(container,null,null,null,null,null,null,opacity);}},destroy:function(){if(this.map){this.setGMapVisibility(false);var cache=OpenLayers.Layer.Google.cache[this.map.id];if(cache&&cache.count<=1){this.removeGMapElements();}} -OpenLayers.Layer.EventPane.prototype.destroy.apply(this,arguments);},removeGMapElements:function(){var cache=OpenLayers.Layer.Google.cache[this.map.id];if(cache){var container=this.mapObject&&this.getMapContainer();if(container&&container.parentNode){container.parentNode.removeChild(container);} -var termsOfUse=cache.termsOfUse;if(termsOfUse&&termsOfUse.parentNode){termsOfUse.parentNode.removeChild(termsOfUse);} -var poweredBy=cache.poweredBy;if(poweredBy&&poweredBy.parentNode){poweredBy.parentNode.removeChild(poweredBy);}}},removeMap:function(map){if(this.visibility&&this.mapObject){this.setGMapVisibility(false);} -var cache=OpenLayers.Layer.Google.cache[map.id];if(cache){if(cache.count<=1){this.removeGMapElements();delete OpenLayers.Layer.Google.cache[map.id];}else{--cache.count;}} -delete this.termsOfUse;delete this.poweredBy;delete this.mapObject;delete this.dragObject;OpenLayers.Layer.EventPane.prototype.removeMap.apply(this,arguments);},getOLBoundsFromMapObjectBounds:function(moBounds){var olBounds=null;if(moBounds!=null){var sw=moBounds.getSouthWest();var ne=moBounds.getNorthEast();if(this.sphericalMercator){sw=this.forwardMercator(sw.lng(),sw.lat());ne=this.forwardMercator(ne.lng(),ne.lat());}else{sw=new OpenLayers.LonLat(sw.lng(),sw.lat());ne=new OpenLayers.LonLat(ne.lng(),ne.lat());} -olBounds=new OpenLayers.Bounds(sw.lon,sw.lat,ne.lon,ne.lat);} -return olBounds;},getWarningHTML:function(){return OpenLayers.i18n("googleWarning");},getMapObjectCenter:function(){return this.mapObject.getCenter();},getMapObjectZoom:function(){return this.mapObject.getZoom();},getLongitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.lng(),moLonLat.lat()).lon:moLonLat.lng();},getLatitudeFromMapObjectLonLat:function(moLonLat){var lat=this.sphericalMercator?this.forwardMercator(moLonLat.lng(),moLonLat.lat()).lat:moLonLat.lat();return lat;},getXFromMapObjectPixel:function(moPixel){return moPixel.x;},getYFromMapObjectPixel:function(moPixel){return moPixel.y;},CLASS_NAME:"OpenLayers.Layer.Google"});OpenLayers.Layer.Google.cache={};OpenLayers.Layer.Google.v2={termsOfUse:null,poweredBy:null,dragObject:null,loadMapObject:function(){if(!this.type){this.type=G_NORMAL_MAP;} -var mapObject,termsOfUse,poweredBy;var cache=OpenLayers.Layer.Google.cache[this.map.id];if(cache){mapObject=cache.mapObject;termsOfUse=cache.termsOfUse;poweredBy=cache.poweredBy;++cache.count;}else{var container=this.map.viewPortDiv;var div=document.createElement("div");div.id=this.map.id+"_GMap2Container";div.style.position="absolute";div.style.width="100%";div.style.height="100%";container.appendChild(div);try{mapObject=new GMap2(div);termsOfUse=div.lastChild;container.appendChild(termsOfUse);termsOfUse.style.zIndex="1100";termsOfUse.style.right="";termsOfUse.style.bottom="";termsOfUse.className="olLayerGoogleCopyright";poweredBy=div.lastChild;container.appendChild(poweredBy);poweredBy.style.zIndex="1100";poweredBy.style.right="";poweredBy.style.bottom="";poweredBy.className="olLayerGooglePoweredBy gmnoprint";}catch(e){throw(e);} -OpenLayers.Layer.Google.cache[this.map.id]={mapObject:mapObject,termsOfUse:termsOfUse,poweredBy:poweredBy,count:1};} -this.mapObject=mapObject;this.termsOfUse=termsOfUse;this.poweredBy=poweredBy;if(OpenLayers.Util.indexOf(this.mapObject.getMapTypes(),this.type)===-1){this.mapObject.addMapType(this.type);} -if(typeof mapObject.getDragObject=="function"){this.dragObject=mapObject.getDragObject();}else{this.dragPanMapObject=null;} -if(this.isBaseLayer===false){this.setGMapVisibility(this.div.style.display!=="none");}},onMapResize:function(){if(this.visibility&&this.mapObject.isLoaded()){this.mapObject.checkResize();}else{if(!this._resized){var layer=this;var handle=GEvent.addListener(this.mapObject,"load",function(){GEvent.removeListener(handle);delete layer._resized;layer.mapObject.checkResize();layer.moveTo(layer.map.getCenter(),layer.map.getZoom());});} -this._resized=true;}},setGMapVisibility:function(visible){var cache=OpenLayers.Layer.Google.cache[this.map.id];if(cache){var container=this.mapObject.getContainer();if(visible===true){this.mapObject.setMapType(this.type);container.style.display="";this.termsOfUse.style.left="";this.termsOfUse.style.display="";this.poweredBy.style.display="";cache.displayed=this.id;}else{if(cache.displayed===this.id){delete cache.displayed;} -if(!cache.displayed){container.style.display="none";this.termsOfUse.style.display="none";this.termsOfUse.style.left="-9999px";this.poweredBy.style.display="none";}}}},getMapContainer:function(){return this.mapObject.getContainer();},getMapObjectBoundsFromOLBounds:function(olBounds){var moBounds=null;if(olBounds!=null){var sw=this.sphericalMercator?this.inverseMercator(olBounds.bottom,olBounds.left):new OpenLayers.LonLat(olBounds.bottom,olBounds.left);var ne=this.sphericalMercator?this.inverseMercator(olBounds.top,olBounds.right):new OpenLayers.LonLat(olBounds.top,olBounds.right);moBounds=new GLatLngBounds(new GLatLng(sw.lat,sw.lon),new GLatLng(ne.lat,ne.lon));} -return moBounds;},setMapObjectCenter:function(center,zoom){this.mapObject.setCenter(center,zoom);},dragPanMapObject:function(dX,dY){this.dragObject.moveBy(new GSize(-dX,dY));},getMapObjectLonLatFromMapObjectPixel:function(moPixel){return this.mapObject.fromContainerPixelToLatLng(moPixel);},getMapObjectPixelFromMapObjectLonLat:function(moLonLat){return this.mapObject.fromLatLngToContainerPixel(moLonLat);},getMapObjectZoomFromMapObjectBounds:function(moBounds){return this.mapObject.getBoundsZoomLevel(moBounds);},getMapObjectLonLatFromLonLat:function(lon,lat){var gLatLng;if(this.sphericalMercator){var lonlat=this.inverseMercator(lon,lat);gLatLng=new GLatLng(lonlat.lat,lonlat.lon);}else{gLatLng=new GLatLng(lat,lon);} -return gLatLng;},getMapObjectPixelFromXY:function(x,y){return new GPoint(x,y);}};OpenLayers.Layer.Grid=OpenLayers.Class(OpenLayers.Layer.HTTPRequest,{tileSize:null,grid:null,singleTile:false,ratio:1.5,buffer:2,numLoadingTiles:0,initialize:function(name,url,params,options){OpenLayers.Layer.HTTPRequest.prototype.initialize.apply(this,arguments);this.events.addEventType("tileloaded");this.grid=[];},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.moveGriddedTiles(bounds);}}}},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,extent,resolution){var tilelon=resolution*this.tileSize.w;var tilelat=resolution*this.tileSize.h;var offsetlon=bounds.left-extent.left;var tilecol=Math.floor(offsetlon/tilelon)-this.buffer;var tilecolremain=offsetlon/tilelon-tilecol;var tileoffsetx=-tilecolremain*this.tileSize.w;var tileoffsetlon=extent.left+tilecol*tilelon;var offsetlat=bounds.top-(extent.bottom+tilelat);var tilerow=Math.ceil(offsetlat/tilelat)+this.buffer;var tilerowremain=tilerow-offsetlat/tilelat;var tileoffsety=-tilerowremain*this.tileSize.h;var tileoffsetlat=extent.bottom+tilerow*tilelat;return{tilelon:tilelon,tilelat:tilelat,tileoffsetlon:tileoffsetlon,tileoffsetlat:tileoffsetlat,tileoffsetx:tileoffsetx,tileoffsety:tileoffsety};},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 extent=this.getMaxExtent();var resolution=this.map.getResolution();var tileLayout=this.calculateGridLayout(bounds,extent,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){},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(bounds){var buffer=this.buffer||1;while(true){var tlLayer=this.grid[0][0].position;var tlViewPort=this.map.getViewPortPxFromLayerPx(tlLayer);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{break;}};},shiftRow:function(prepend){var modelRowIndex=(prepend)?0:(this.grid.length-1);var grid=this.grid;var modelRow=grid[modelRowIndex];var resolution=this.map.getResolution();var deltaY=(prepend)?-this.tileSize.h:this.tileSize.h;var deltaLat=resolution*-deltaY;var row=(prepend)?grid.pop():grid.shift();for(var i=0,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.MultiMap=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:1,MAX_ZOOM_LEVEL:17,RESOLUTIONS:[9,1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125],type:null,initialize:function(name,options){OpenLayers.Layer.EventPane.prototype.initialize.apply(this,arguments);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,arguments);if(this.sphericalMercator){OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator);this.initMercatorParameters();this.RESOLUTIONS.unshift(10);}},loadMapObject:function(){try{this.mapObject=new MultimapViewer(this.div);}catch(e){}},getWarningHTML:function(){return OpenLayers.i18n("getLayerWarning",{'layerType':"MM",'layerLib':"MultiMap"});},setMapObjectCenter:function(center,zoom){this.mapObject.goToPosition(center,zoom);},getMapObjectCenter:function(){return this.mapObject.getCurrentPosition();},getMapObjectZoom:function(){return this.mapObject.getZoomFactor();},getMapObjectLonLatFromMapObjectPixel:function(moPixel){moPixel.x=moPixel.x-(this.map.getSize().w/2);moPixel.y=moPixel.y-(this.map.getSize().h/2);return this.mapObject.getMapPositionAt(moPixel);},getMapObjectPixelFromMapObjectLonLat:function(moLonLat){return this.mapObject.geoPosToContainerPixels(moLonLat);},getLongitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.lon,moLonLat.lat).lon:moLonLat.lon;},getLatitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.lon,moLonLat.lat).lat:moLonLat.lat;},getMapObjectLonLatFromLonLat:function(lon,lat){var mmLatLon;if(this.sphericalMercator){var lonlat=this.inverseMercator(lon,lat);mmLatLon=new MMLatLon(lonlat.lat,lonlat.lon);}else{mmLatLon=new MMLatLon(lat,lon);} -return mmLatLon;},getXFromMapObjectPixel:function(moPixel){return moPixel.x;},getYFromMapObjectPixel:function(moPixel){return moPixel.y;},getMapObjectPixelFromXY:function(x,y){return new MMPoint(x,y);},CLASS_NAME:"OpenLayers.Layer.MultiMap"});OpenLayers.Layer.VirtualEarth=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:1,MAX_ZOOM_LEVEL:19,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125,0.00002145767211914062,0.00001072883605957031,0.00000536441802978515],type:null,wrapDateLine:true,sphericalMercator:false,animationEnabled:true,initialize:function(name,options){OpenLayers.Layer.EventPane.prototype.initialize.apply(this,arguments);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,arguments);if(this.sphericalMercator){OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator);this.initMercatorParameters();}},loadMapObject:function(){var veDiv=OpenLayers.Util.createDiv(this.name);var sz=this.map.getSize();veDiv.style.width=sz.w+"px";veDiv.style.height=sz.h+"px";this.div.appendChild(veDiv);try{this.mapObject=new VEMap(this.name);}catch(e){} -if(this.mapObject!=null){try{this.mapObject.LoadMap(null,null,this.type,true);this.mapObject.AttachEvent("onmousedown",OpenLayers.Function.True);}catch(e){} -this.mapObject.HideDashboard();if(typeof this.mapObject.SetAnimationEnabled=="function"){this.mapObject.SetAnimationEnabled(this.animationEnabled);}} -if(!this.mapObject||!this.mapObject.vemapcontrol||!this.mapObject.vemapcontrol.PanMap||(typeof this.mapObject.vemapcontrol.PanMap!="function")){this.dragPanMapObject=null;}},onMapResize:function(){this.mapObject.Resize(this.map.size.w,this.map.size.h);},getWarningHTML:function(){return OpenLayers.i18n("getLayerWarning",{'layerType':'VE','layerLib':'VirtualEarth'});},setMapObjectCenter:function(center,zoom){this.mapObject.SetCenterAndZoom(center,zoom);},getMapObjectCenter:function(){return this.mapObject.GetCenter();},dragPanMapObject:function(dX,dY){this.mapObject.vemapcontrol.PanMap(dX,-dY);},getMapObjectZoom:function(){return this.mapObject.GetZoomLevel();},getMapObjectLonLatFromMapObjectPixel:function(moPixel){return(typeof VEPixel!='undefined')?this.mapObject.PixelToLatLong(moPixel):this.mapObject.PixelToLatLong(moPixel.x,moPixel.y);},getMapObjectPixelFromMapObjectLonLat:function(moLonLat){return this.mapObject.LatLongToPixel(moLonLat);},getLongitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Longitude,moLonLat.Latitude).lon:moLonLat.Longitude;},getLatitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Longitude,moLonLat.Latitude).lat:moLonLat.Latitude;},getMapObjectLonLatFromLonLat:function(lon,lat){var veLatLong;if(this.sphericalMercator){var lonlat=this.inverseMercator(lon,lat);veLatLong=new VELatLong(lonlat.lat,lonlat.lon);}else{veLatLong=new VELatLong(lat,lon);} -return veLatLong;},getXFromMapObjectPixel:function(moPixel){return moPixel.x;},getYFromMapObjectPixel:function(moPixel){return moPixel.y;},getMapObjectPixelFromXY:function(x,y){return(typeof VEPixel!='undefined')?new VEPixel(x,y):new Msn.VE.Pixel(x,y);},CLASS_NAME:"OpenLayers.Layer.VirtualEarth"});OpenLayers.Layer.Yahoo=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:0,MAX_ZOOM_LEVEL:17,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125,0.00002145767211914062,0.00001072883605957031],type:null,wrapDateLine:true,sphericalMercator:false,initialize:function(name,options){OpenLayers.Layer.EventPane.prototype.initialize.apply(this,arguments);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,arguments);if(this.sphericalMercator){OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator);this.initMercatorParameters();}},loadMapObject:function(){try{var size=this.getMapObjectSizeFromOLSize(this.map.getSize());this.mapObject=new YMap(this.div,this.type,size);this.mapObject.disableKeyControls();this.mapObject.disableDragMap();if(!this.mapObject.moveByXY||(typeof this.mapObject.moveByXY!="function")){this.dragPanMapObject=null;}}catch(e){}},onMapResize:function(){try{var size=this.getMapObjectSizeFromOLSize(this.map.getSize());this.mapObject.resizeTo(size);}catch(e){}},setMap:function(map){OpenLayers.Layer.EventPane.prototype.setMap.apply(this,arguments);this.map.events.register("moveend",this,this.fixYahooEventPane);},fixYahooEventPane:function(){var yahooEventPane=OpenLayers.Util.getElement("ygddfdiv");if(yahooEventPane!=null){if(yahooEventPane.parentNode!=null){yahooEventPane.parentNode.removeChild(yahooEventPane);} -this.map.events.unregister("moveend",this,this.fixYahooEventPane);}},getWarningHTML:function(){return OpenLayers.i18n("getLayerWarning",{'layerType':'Yahoo','layerLib':'Yahoo'});},getOLZoomFromMapObjectZoom:function(moZoom){var zoom=null;if(moZoom!=null){zoom=OpenLayers.Layer.FixedZoomLevels.prototype.getOLZoomFromMapObjectZoom.apply(this,[moZoom]);zoom=18-zoom;} -return zoom;},getMapObjectZoomFromOLZoom:function(olZoom){var zoom=null;if(olZoom!=null){zoom=OpenLayers.Layer.FixedZoomLevels.prototype.getMapObjectZoomFromOLZoom.apply(this,[olZoom]);zoom=18-zoom;} -return zoom;},setMapObjectCenter:function(center,zoom){this.mapObject.drawZoomAndCenter(center,zoom);},getMapObjectCenter:function(){return this.mapObject.getCenterLatLon();},dragPanMapObject:function(dX,dY){this.mapObject.moveByXY({'x':-dX,'y':dY});},getMapObjectZoom:function(){return this.mapObject.getZoomLevel();},getMapObjectLonLatFromMapObjectPixel:function(moPixel){return this.mapObject.convertXYLatLon(moPixel);},getMapObjectPixelFromMapObjectLonLat:function(moLonLat){return this.mapObject.convertLatLonXY(moLonLat);},getLongitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Lon,moLonLat.Lat).lon:moLonLat.Lon;},getLatitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Lon,moLonLat.Lat).lat:moLonLat.Lat;},getMapObjectLonLatFromLonLat:function(lon,lat){var yLatLong;if(this.sphericalMercator){var lonlat=this.inverseMercator(lon,lat);yLatLong=new YGeoPoint(lonlat.lat,lonlat.lon);}else{yLatLong=new YGeoPoint(lat,lon);} -return yLatLong;},getXFromMapObjectPixel:function(moPixel){return moPixel.x;},getYFromMapObjectPixel:function(moPixel){return moPixel.y;},getMapObjectPixelFromXY:function(x,y){return new YCoordPoint(x,y);},getMapObjectSizeFromOLSize:function(olSize){return new YSize(olSize.w,olSize.h);},CLASS_NAME:"OpenLayers.Layer.Yahoo"});OpenLayers.Style=OpenLayers.Class({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";} -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.Control.Navigation=OpenLayers.Class(OpenLayers.Control,{dragPan:null,dragPanOptions: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;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();} -return OpenLayers.Control.prototype.activate.apply(this,arguments);},deactivate:function(){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={'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);},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.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.Format.WMC.v1_0_0=OpenLayers.Class(OpenLayers.Format.WMC.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/context http://schemas.opengis.net/context/1.0.0/context.xsd",initialize:function(options){OpenLayers.Format.WMC.v1.prototype.initialize.apply(this,[options]);},write_wmc_Layer:function(context){var node=OpenLayers.Format.WMC.v1.prototype.write_wmc_Layer.apply(this,[context]);node.appendChild(this.write_wmc_FormatList(context));node.appendChild(this.write_wmc_StyleList(context));node.appendChild(this.write_wmc_LayerExtension(context));},CLASS_NAME:"OpenLayers.Format.WMC.v1_0_0"});OpenLayers.Format.WMC.v1_1_0=OpenLayers.Class(OpenLayers.Format.WMC.v1,{VERSION:"1.1.0",schemaLocation:"http://www.opengis.net/context http://schemas.opengis.net/context/1.1.0/context.xsd",initialize:function(options){OpenLayers.Format.WMC.v1.prototype.initialize.apply(this,[options]);},read_sld_MinScaleDenominator:function(layerContext,node){var minScaleDenominator=parseFloat(this.getChildValue(node));if(minScaleDenominator>0){layerContext.maxScale=minScaleDenominator;}},read_sld_MaxScaleDenominator:function(layerContext,node){layerContext.minScale=parseFloat(this.getChildValue(node));},write_wmc_Layer:function(context){var node=OpenLayers.Format.WMC.v1.prototype.write_wmc_Layer.apply(this,[context]);if(context.maxScale){var minSD=this.createElementNS(this.namespaces.sld,"sld:MinScaleDenominator");minSD.appendChild(this.createTextNode(context.maxScale.toPrecision(16)));node.appendChild(minSD);} -if(context.minScale){var maxSD=this.createElementNS(this.namespaces.sld,"sld:MaxScaleDenominator");maxSD.appendChild(this.createTextNode(context.minScale.toPrecision(16)));node.appendChild(maxSD);} -node.appendChild(this.write_wmc_FormatList(context));node.appendChild(this.write_wmc_StyleList(context));node.appendChild(this.write_wmc_LayerExtension(context));return node;},CLASS_NAME:"OpenLayers.Format.WMC.v1_1_0"});OpenLayers.Format.WMSCapabilities.v1_1_0=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1,{version:"1.1.0",initialize:function(options){OpenLayers.Format.WMSCapabilities.v1_1.prototype.initialize.apply(this,[options]);},readers:{"wms":OpenLayers.Util.applyDefaults({"SRS":function(node,obj){var srs=this.getChildValue(node);var values=srs.split(/ +/);for(var i=0,len=values.length;i<len;i++){obj.srs[values[i]]=true;}}},OpenLayers.Format.WMSCapabilities.v1_1.prototype.readers["wms"])},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_0"});OpenLayers.Format.WMSCapabilities.v1_1_1=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1,{version:"1.1.1",initialize:function(options){OpenLayers.Format.WMSCapabilities.v1_1.prototype.initialize.apply(this,[options]);},readers:{"wms":OpenLayers.Util.applyDefaults({"SRS":function(node,obj){obj.srs[this.getChildValue(node)]=true;}},OpenLayers.Format.WMSCapabilities.v1_1.prototype.readers["wms"])},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_1"});OpenLayers.Format.WMSCapabilities.v1_3_0=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_3,{version:"1.3.0",CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_3_0"});OpenLayers.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(result instanceof Array){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.Layer.ArcGIS93Rest=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{format:"png"},isBaseLayer:true,initialize:function(name,url,params,options){var newArguments=[];params=OpenLayers.Util.upperCaseObject(params);newArguments.push(name,url,params,options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);OpenLayers.Util.applyDefaults(this.params,OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS));if(this.params.TRANSPARENT&&this.params.TRANSPARENT.toString().toLowerCase()=="true"){if((options==null)||(!options.isBaseLayer)){this.isBaseLayer=false;} -if(this.params.FORMAT=="jpg"){this.params.FORMAT=OpenLayers.Util.alphaHack()?"gif":"png";}}},destroy:function(){OpenLayers.Layer.Grid.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.ArcGIS93Rest(this.name,this.url,this.params,this.getOptions());} -obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getURL:function(bounds){bounds=this.adjustBounds(bounds);var projWords=this.projection.getCode().split(":");var srid=projWords[projWords.length-1];var imageSize=this.getImageSize();var newParams={'BBOX':bounds.toBBOX(),'SIZE':imageSize.w+","+imageSize.h,'F':"image",'BBOXSR':srid,'IMAGESR':srid};if(this.layerDefs){var layerDefStrList=[];var layerID;for(layerID in this.layerDefs){if(this.layerDefs.hasOwnProperty(layerID)){if(this.layerDefs[layerID]){layerDefStrList.push(layerID);layerDefStrList.push(":");layerDefStrList.push(this.layerDefs[layerID]);layerDefStrList.push(";");}}} -if(layerDefStrList.length>0){newParams['LAYERDEFS']=layerDefStrList.join("");}} -var requestString=this.getFullRequestString(newParams);return requestString;},setLayerFilter:function(id,queryDef){if(!this.layerDefs){this.layerDefs={};} -if(queryDef){this.layerDefs[id]=queryDef;}else{delete this.layerDefs[id];}},clearLayerFilter:function(id){if(id){delete this.layerDefs[id];}else{delete this.layerDefs;}},mergeNewParams:function(newParams){var upperParams=OpenLayers.Util.upperCaseObject(newParams);var newArguments=[upperParams];return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,newArguments);},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},CLASS_NAME:"OpenLayers.Layer.ArcGIS93Rest"});OpenLayers.Layer.Google.v3={DEFAULTS:{maxExtent:new OpenLayers.Bounds(-128*156543.0339,-128*156543.0339,128*156543.0339,128*156543.0339),sphericalMercator:true,maxResolution:156543.0339,units:"m",projection:"EPSG:900913"},loadMapObject:function(){if(!this.type){this.type=google.maps.MapTypeId.ROADMAP;} -var mapObject;var cache=OpenLayers.Layer.Google.cache[this.map.id];if(cache){mapObject=cache.mapObject;++cache.count;}else{var container=this.map.viewPortDiv;var div=document.createElement("div");div.id=this.map.id+"_GMapContainer";div.style.position="absolute";div.style.width="100%";div.style.height="100%";container.appendChild(div);var center=this.map.getCenter();mapObject=new google.maps.Map(div,{center:center?new google.maps.LatLng(center.lat,center.lon):new google.maps.LatLng(0,0),zoom:this.map.getZoom()||0,mapTypeId:this.type,disableDefaultUI:true,keyboardShortcuts:false,draggable:false,disableDoubleClickZoom:true,scrollwheel:false});cache={mapObject:mapObject,count:1};OpenLayers.Layer.Google.cache[this.map.id]=cache;this.repositionListener=google.maps.event.addListenerOnce(mapObject,"center_changed",OpenLayers.Function.bind(this.repositionMapElements,this));} -this.mapObject=mapObject;this.setGMapVisibility(this.visibility);},repositionMapElements:function(){google.maps.event.trigger(this.mapObject,"resize");var div=this.mapObject.getDiv().firstChild;if(!div||div.childNodes.length<3){this.repositionTimer=window.setTimeout(OpenLayers.Function.bind(this.repositionMapElements,this),250);return false;} -var cache=OpenLayers.Layer.Google.cache[this.map.id];var container=this.map.viewPortDiv;var termsOfUse=div.lastChild;container.appendChild(termsOfUse);termsOfUse.style.zIndex="1100";termsOfUse.style.bottom="";termsOfUse.className="olLayerGoogleCopyright olLayerGoogleV3";termsOfUse.style.display="";cache.termsOfUse=termsOfUse;var poweredBy=div.lastChild;container.appendChild(poweredBy);poweredBy.style.zIndex="1100";poweredBy.style.bottom="";poweredBy.className="olLayerGooglePoweredBy olLayerGoogleV3 gmnoprint";poweredBy.style.display="";cache.poweredBy=poweredBy;this.setGMapVisibility(this.visibility);},onMapResize:function(){if(this.visibility){google.maps.event.trigger(this.mapObject,"resize");}else{if(!this._resized){var layer=this;google.maps.event.addListenerOnce(this.mapObject,"tilesloaded",function(){delete layer._resized;google.maps.event.trigger(layer.mapObject,"resize");layer.moveTo(layer.map.getCenter(),layer.map.getZoom());});} -this._resized=true;}},setGMapVisibility:function(visible){var cache=OpenLayers.Layer.Google.cache[this.map.id];if(cache){var type=this.type;var layers=this.map.layers;var layer;for(var i=layers.length-1;i>=0;--i){layer=layers[i];if(layer instanceof OpenLayers.Layer.Google&&layer.visibility===true&&layer.inRange===true){type=layer.type;visible=true;break;}} -var container=this.mapObject.getDiv();if(visible===true){this.mapObject.setMapTypeId(type);container.style.left="";if(cache.termsOfUse&&cache.termsOfUse.style){cache.termsOfUse.style.left="";cache.termsOfUse.style.display="";cache.poweredBy.style.display="";} -cache.displayed=this.id;}else{delete cache.displayed;container.style.left="-9999px";if(cache.termsOfUse&&cache.termsOfUse.style){cache.termsOfUse.style.display="none";cache.termsOfUse.style.left="-9999px";cache.poweredBy.style.display="none";}}}},getMapContainer:function(){return this.mapObject.getDiv();},getMapObjectBoundsFromOLBounds:function(olBounds){var moBounds=null;if(olBounds!=null){var sw=this.sphericalMercator?this.inverseMercator(olBounds.bottom,olBounds.left):new OpenLayers.LonLat(olBounds.bottom,olBounds.left);var ne=this.sphericalMercator?this.inverseMercator(olBounds.top,olBounds.right):new OpenLayers.LonLat(olBounds.top,olBounds.right);moBounds=new google.maps.LatLngBounds(new google.maps.LatLng(sw.lat,sw.lon),new google.maps.LatLng(ne.lat,ne.lon));} -return moBounds;},getMapObjectLonLatFromMapObjectPixel:function(moPixel){var size=this.map.getSize();var lon=this.getLongitudeFromMapObjectLonLat(this.mapObject.center);var lat=this.getLatitudeFromMapObjectLonLat(this.mapObject.center);var res=this.map.getResolution();var delta_x=moPixel.x-(size.w/2);var delta_y=moPixel.y-(size.h/2);var lonlat=new OpenLayers.LonLat(lon+delta_x*res,lat-delta_y*res);if(this.wrapDateLine){lonlat=lonlat.wrapDateLine(this.maxExtent);} -return this.getMapObjectLonLatFromLonLat(lonlat.lon,lonlat.lat);},getMapObjectPixelFromMapObjectLonLat:function(moLonLat){var lon=this.getLongitudeFromMapObjectLonLat(moLonLat);var lat=this.getLatitudeFromMapObjectLonLat(moLonLat);var res=this.map.getResolution();var extent=this.map.getExtent();var px=new OpenLayers.Pixel((1/res*(lon-extent.left)),(1/res*(extent.top-lat)));return this.getMapObjectPixelFromXY(px.x,px.y);},setMapObjectCenter:function(center,zoom){this.mapObject.setOptions({center:center,zoom:zoom});},getMapObjectZoomFromMapObjectBounds:function(moBounds){return this.mapObject.getBoundsZoomLevel(moBounds);},getMapObjectLonLatFromLonLat:function(lon,lat){var gLatLng;if(this.sphericalMercator){var lonlat=this.inverseMercator(lon,lat);gLatLng=new google.maps.LatLng(lonlat.lat,lonlat.lon);}else{gLatLng=new google.maps.LatLng(lat,lon);} -return gLatLng;},getMapObjectPixelFromXY:function(x,y){return new google.maps.Point(x,y);},destroy:function(){if(this.repositionListener){google.maps.event.removeListener(this.repositionListener);} -if(this.repositionTimer){window.clearTimeout(this.repositionTimer);} -OpenLayers.Layer.Google.prototype.destroy.apply(this,arguments);}};OpenLayers.Layer.KaMap=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,units:null,resolution:OpenLayers.DOTS_PER_INCH,DEFAULT_PARAMS:{i:'jpeg',map:''},initialize:function(name,url,params,options){var newArguments=[];newArguments.push(name,url,params,options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS);},getURL:function(bounds){bounds=this.adjustBounds(bounds);var mapRes=this.map.getResolution();var scale=Math.round((this.map.getScale()*10000))/10000;var pX=Math.round(bounds.left/mapRes);var pY=-Math.round(bounds.top/mapRes);return this.getFullRequestString({t:pY,l:pX,s:scale});},addTile:function(bounds,position){var url=this.getURL(bounds);return new OpenLayers.Tile.Image(this,position,bounds,url,this.tileSize);},calculateGridLayout:function(bounds,extent,resolution){var tilelon=resolution*this.tileSize.w;var tilelat=resolution*this.tileSize.h;var offsetlon=bounds.left;var tilecol=Math.floor(offsetlon/tilelon)-this.buffer;var tilecolremain=offsetlon/tilelon-tilecol;var tileoffsetx=-tilecolremain*this.tileSize.w;var tileoffsetlon=tilecol*tilelon;var offsetlat=bounds.top;var tilerow=Math.ceil(offsetlat/tilelat)+this.buffer;var tilerowremain=tilerow-offsetlat/tilelat;var tileoffsety=-(tilerowremain+1)*this.tileSize.h;var tileoffsetlat=tilerow*tilelat;return{tilelon:tilelon,tilelat:tilelat,tileoffsetlon:tileoffsetlon,tileoffsetlat:tileoffsetlat,tileoffsetx:tileoffsetx,tileoffsety:tileoffsety};},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.KaMap(this.name,this.url,this.params,this.getOptions());} -obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);if(this.tileSize!=null){obj.tileSize=this.tileSize.clone();} -obj.grid=[];return obj;},getTileBounds:function(viewPortPx){var resolution=this.getResolution();var tileMapWidth=resolution*this.tileSize.w;var tileMapHeight=resolution*this.tileSize.h;var mapPoint=this.getLonLatFromViewPortPx(viewPortPx);var tileLeft=tileMapWidth*Math.floor(mapPoint.lon/tileMapWidth);var tileBottom=tileMapHeight*Math.floor(mapPoint.lat/tileMapHeight);return new OpenLayers.Bounds(tileLeft,tileBottom,tileLeft+tileMapWidth,tileBottom+tileMapHeight);},CLASS_NAME:"OpenLayers.Layer.KaMap"});OpenLayers.Layer.MapGuide=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,useHttpTile:false,singleTile:false,useOverlay:false,useAsyncOverlay:true,TILE_PARAMS:{operation:'GETTILEIMAGE',version:'1.2.0'},SINGLE_TILE_PARAMS:{operation:'GETMAPIMAGE',format:'PNG',locale:'en',clip:'1',version:'1.0.0'},OVERLAY_PARAMS:{operation:'GETDYNAMICMAPOVERLAYIMAGE',format:'PNG',locale:'en',clip:'1',version:'2.0.0'},FOLDER_PARAMS:{tileColumnsPerFolder:30,tileRowsPerFolder:30,format:'png',querystring:null},defaultSize:new OpenLayers.Size(300,300),initialize:function(name,url,params,options){OpenLayers.Layer.Grid.prototype.initialize.apply(this,arguments);if(options==null||options.isBaseLayer==null){this.isBaseLayer=((this.transparent!="true")&&(this.transparent!=true));} -if(options&&options.useOverlay!=null){this.useOverlay=options.useOverlay;} -if(this.singleTile){if(this.useOverlay){OpenLayers.Util.applyDefaults(this.params,this.OVERLAY_PARAMS);if(!this.useAsyncOverlay){this.params.version="1.0.0";}}else{OpenLayers.Util.applyDefaults(this.params,this.SINGLE_TILE_PARAMS);}}else{if(this.useHttpTile){OpenLayers.Util.applyDefaults(this.params,this.FOLDER_PARAMS);}else{OpenLayers.Util.applyDefaults(this.params,this.TILE_PARAMS);} -this.setTileSize(this.defaultSize);}},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.MapGuide(this.name,this.url,this.params,this.getOptions());} -obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},getURL:function(bounds){var url;var center=bounds.getCenterLonLat();var mapSize=this.map.getSize();if(this.singleTile){var params={setdisplaydpi:OpenLayers.DOTS_PER_INCH,setdisplayheight:mapSize.h*this.ratio,setdisplaywidth:mapSize.w*this.ratio,setviewcenterx:center.lon,setviewcentery:center.lat,setviewscale:this.map.getScale()};if(this.useOverlay&&!this.useAsyncOverlay){var getVisParams={};getVisParams=OpenLayers.Util.extend(getVisParams,params);getVisParams.operation="GETVISIBLEMAPEXTENT";getVisParams.version="1.0.0";getVisParams.session=this.params.session;getVisParams.mapName=this.params.mapName;getVisParams.format='text/xml';url=this.getFullRequestString(getVisParams);OpenLayers.Request.GET({url:url,async:false});} -url=this.getFullRequestString(params);}else{var currentRes=this.map.getResolution();var colidx=Math.floor((bounds.left-this.maxExtent.left)/currentRes);colidx=Math.round(colidx/this.tileSize.w);var rowidx=Math.floor((this.maxExtent.top-bounds.top)/currentRes);rowidx=Math.round(rowidx/this.tileSize.h);if(this.useHttpTile){url=this.getImageFilePath({tilecol:colidx,tilerow:rowidx,scaleindex:this.resolutions.length-this.map.zoom-1});}else{url=this.getFullRequestString({tilecol:colidx,tilerow:rowidx,scaleindex:this.resolutions.length-this.map.zoom-1});}} -return url;},getFullRequestString:function(newParams,altUrl){var url=(altUrl==null)?this.url:altUrl;if(typeof url=="object"){url=url[Math.floor(Math.random()*url.length)];} -var requestString=url;var allParams=OpenLayers.Util.extend({},this.params);allParams=OpenLayers.Util.extend(allParams,newParams);var urlParams=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(url));for(var key in allParams){if(key.toUpperCase()in urlParams){delete allParams[key];}} -var paramsString=OpenLayers.Util.getParameterString(allParams);paramsString=paramsString.replace(/,/g,"+");if(paramsString!=""){var lastServerChar=url.charAt(url.length-1);if((lastServerChar=="&")||(lastServerChar=="?")){requestString+=paramsString;}else{if(url.indexOf('?')==-1){requestString+='?'+paramsString;}else{requestString+='&'+paramsString;}}} -return requestString;},getImageFilePath:function(newParams,altUrl){var url=(altUrl==null)?this.url:altUrl;if(typeof url=="object"){url=url[Math.floor(Math.random()*url.length)];} -var requestString=url;var tileRowGroup="";var tileColGroup="";if(newParams.tilerow<0){tileRowGroup='-';} -if(newParams.tilerow==0){tileRowGroup+='0';}else{tileRowGroup+=Math.floor(Math.abs(newParams.tilerow/this.params.tileRowsPerFolder))*this.params.tileRowsPerFolder;} -if(newParams.tilecol<0){tileColGroup='-';} -if(newParams.tilecol==0){tileColGroup+='0';}else{tileColGroup+=Math.floor(Math.abs(newParams.tilecol/this.params.tileColumnsPerFolder))*this.params.tileColumnsPerFolder;} -var tilePath='/S'+Math.floor(newParams.scaleindex) -+'/'+this.params.basemaplayergroupname -+'/R'+tileRowGroup -+'/C'+tileColGroup -+'/'+(newParams.tilerow%this.params.tileRowsPerFolder) -+'_'+(newParams.tilecol%this.params.tileColumnsPerFolder) -+'.'+this.params.format;if(this.params.querystring){tilePath+="?"+this.params.querystring;} -requestString+=tilePath;return requestString;},calculateGridLayout:function(bounds,extent,resolution){var tilelon=resolution*this.tileSize.w;var tilelat=resolution*this.tileSize.h;var offsetlon=bounds.left-extent.left;var tilecol=Math.floor(offsetlon/tilelon)-this.buffer;var tilecolremain=offsetlon/tilelon-tilecol;var tileoffsetx=-tilecolremain*this.tileSize.w;var tileoffsetlon=extent.left+tilecol*tilelon;var offsetlat=extent.top-bounds.top+tilelat;var tilerow=Math.floor(offsetlat/tilelat)-this.buffer;var tilerowremain=tilerow-offsetlat/tilelat;var tileoffsety=tilerowremain*this.tileSize.h;var tileoffsetlat=extent.top-tilelat*tilerow;return{tilelon:tilelon,tilelat:tilelat,tileoffsetlon:tileoffsetlon,tileoffsetlat:tileoffsetlat,tileoffsetx:tileoffsetx,tileoffsety:tileoffsety};},CLASS_NAME:"OpenLayers.Layer.MapGuide"});OpenLayers.Layer.MapServer=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{mode:"map",map_imagetype:"png"},initialize:function(name,url,params,options){var newArguments=[];newArguments.push(name,url,params,options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS);if(options==null||options.isBaseLayer==null){this.isBaseLayer=((this.params.transparent!="true")&&(this.params.transparent!=true));}},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.MapServer(this.name,this.url,this.params,this.getOptions());} -obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},getURL:function(bounds){bounds=this.adjustBounds(bounds);var extent=[bounds.left,bounds.bottom,bounds.right,bounds.top];var imageSize=this.getImageSize();var url=this.getFullRequestString({mapext:extent,imgext:extent,map_size:[imageSize.w,imageSize.h],imgx:imageSize.w/2,imgy:imageSize.h/2,imgxy:[imageSize.w,imageSize.h]});return url;},getFullRequestString:function(newParams,altUrl){var url=(altUrl==null)?this.url:altUrl;var allParams=OpenLayers.Util.extend({},this.params);allParams=OpenLayers.Util.extend(allParams,newParams);var paramsString=OpenLayers.Util.getParameterString(allParams);if(url instanceof Array){url=this.selectUrl(paramsString,url);} -var urlParams=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(url));for(var key in allParams){if(key.toUpperCase()in urlParams){delete allParams[key];}} -paramsString=OpenLayers.Util.getParameterString(allParams);var requestString=url;paramsString=paramsString.replace(/,/g,"+");if(paramsString!=""){var lastServerChar=url.charAt(url.length-1);if((lastServerChar=="&")||(lastServerChar=="?")){requestString+=paramsString;}else{if(url.indexOf('?')==-1){requestString+='?'+paramsString;}else{requestString+='&'+paramsString;}}} -return requestString;},CLASS_NAME:"OpenLayers.Layer.MapServer"});OpenLayers.Layer.TMS=OpenLayers.Class(OpenLayers.Layer.Grid,{serviceVersion:"1.0.0",isBaseLayer:true,tileOrigin:null,serverResolutions:null,zoomOffset:0,initialize:function(name,url,options){var newArguments=[];newArguments.push(name,url,{},options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);},destroy:function(){OpenLayers.Layer.Grid.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.TMS(this.name,this.url,this.getOptions());} -obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getURL:function(bounds){bounds=this.adjustBounds(bounds);var res=this.map.getResolution();var x=Math.round((bounds.left-this.tileOrigin.lon)/(res*this.tileSize.w));var y=Math.round((bounds.bottom-this.tileOrigin.lat)/(res*this.tileSize.h));var z=this.serverResolutions!=null?OpenLayers.Util.indexOf(this.serverResolutions,res):this.map.getZoom()+this.zoomOffset;var path=this.serviceVersion+"/"+this.layername+"/"+z+"/"+x+"/"+y+"."+this.type;var url=this.url;if(url instanceof Array){url=this.selectUrl(path,url);} -return url+path;},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},setMap:function(map){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);if(!this.tileOrigin){this.tileOrigin=new OpenLayers.LonLat(this.map.maxExtent.left,this.map.maxExtent.bottom);}},CLASS_NAME:"OpenLayers.Layer.TMS"});OpenLayers.Layer.TileCache=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,format:'image/png',serverResolutions:null,initialize:function(name,url,layername,options){this.layername=layername;OpenLayers.Layer.Grid.prototype.initialize.apply(this,[name,url,{},options]);this.extension=this.format.split('/')[1].toLowerCase();this.extension=(this.extension=='jpg')?'jpeg':this.extension;},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.TileCache(this.name,this.url,this.layername,this.getOptions());} -obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getURL:function(bounds){var res=this.map.getResolution();var bbox=this.maxExtent;var size=this.tileSize;var tileX=Math.round((bounds.left-bbox.left)/(res*size.w));var tileY=Math.round((bounds.bottom-bbox.bottom)/(res*size.h));var tileZ=this.serverResolutions!=null?OpenLayers.Util.indexOf(this.serverResolutions,res):this.map.getZoom();function zeroPad(number,length){number=String(number);var zeros=[];for(var i=0;i<length;++i){zeros.push('0');} -return zeros.join('').substring(0,length-number.length)+number;} -var components=[this.layername,zeroPad(tileZ,2),zeroPad(parseInt(tileX/1000000),3),zeroPad((parseInt(tileX/1000)%1000),3),zeroPad((parseInt(tileX)%1000),3),zeroPad(parseInt(tileY/1000000),3),zeroPad((parseInt(tileY/1000)%1000),3),zeroPad((parseInt(tileY)%1000),3)+'.'+this.extension];var path=components.join('/');var url=this.url;if(url instanceof Array){url=this.selectUrl(path,url);} -url=(url.charAt(url.length-1)=='/')?url:url+'/';return url+path;},addTile:function(bounds,position){var url=this.getURL(bounds);return new OpenLayers.Tile.Image(this,position,bounds,url,this.tileSize);},CLASS_NAME:"OpenLayers.Layer.TileCache"});OpenLayers.Layer.WMS=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{service:"WMS",version:"1.1.1",request:"GetMap",styles:"",exceptions:"application/vnd.ogc.se_inimage",format:"image/jpeg"},reproject:false,isBaseLayer:true,encodeBBOX:false,noMagic:false,yx:{'EPSG:4326':true},initialize:function(name,url,params,options){var newArguments=[];params=OpenLayers.Util.upperCaseObject(params);if(parseFloat(params.VERSION)>=1.3&&!params.EXCEPTIONS){params.EXCEPTIONS="INIMAGE";} -newArguments.push(name,url,params,options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);OpenLayers.Util.applyDefaults(this.params,OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS));if(!this.noMagic&&this.params.TRANSPARENT&&this.params.TRANSPARENT.toString().toLowerCase()=="true"){if((options==null)||(!options.isBaseLayer)){this.isBaseLayer=false;} -if(this.params.FORMAT=="image/jpeg"){this.params.FORMAT=OpenLayers.Util.alphaHack()?"image/gif":"image/png";}}},destroy:function(){OpenLayers.Layer.Grid.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.WMS(this.name,this.url,this.params,this.getOptions());} -obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},reverseAxisOrder:function(){return(parseFloat(this.params.VERSION)>=1.3&&!!this.yx[this.map.getProjectionObject().getCode()]);},getURL:function(bounds){bounds=this.adjustBounds(bounds);var imageSize=this.getImageSize();var newParams={};var reverseAxisOrder=this.reverseAxisOrder();newParams.BBOX=this.encodeBBOX?bounds.toBBOX(null,reverseAxisOrder):bounds.toArray(reverseAxisOrder);newParams.WIDTH=imageSize.w;newParams.HEIGHT=imageSize.h;var requestString=this.getFullRequestString(newParams);return requestString;},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},mergeNewParams:function(newParams){var upperParams=OpenLayers.Util.upperCaseObject(newParams);var newArguments=[upperParams];return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,newArguments);},getFullRequestString:function(newParams,altUrl){var projectionCode=this.map.getProjection();var value=(projectionCode=="none")?null:projectionCode -if(parseFloat(this.params.VERSION)>=1.3){this.params.CRS=value;}else{this.params.SRS=value;} -return OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this,arguments);},CLASS_NAME:"OpenLayers.Layer.WMS"});OpenLayers.Layer.WMTS=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,version:"1.0.0",requestEncoding:"KVP",url:null,layer:null,matrixSet:null,style:null,format:"image/jpeg",tileOrigin:null,tileFullExtent:null,formatSuffix:null,matrixIds:null,dimensions:null,params:null,zoomOffset:0,formatSuffixMap:{"image/png":"png","image/png8":"png","image/png24":"png","image/png32":"png","png":"png","image/jpeg":"jpg","image/jpg":"jpg","jpeg":"jpg","jpg":"jpg"},matrix:null,initialize:function(config){var required={url:true,layer:true,style:true,matrixSet:true};for(var prop in required){if(!(prop in config)){throw new Error("Missing property '"+prop+"' in layer configuration.");}} -config.params=OpenLayers.Util.upperCaseObject(config.params);var args=[config.name,config.url,config.params,config];OpenLayers.Layer.Grid.prototype.initialize.apply(this,args);if(!this.formatSuffix){this.formatSuffix=this.formatSuffixMap[this.format]||this.format.split("/").pop();} -if(this.matrixIds){var len=this.matrixIds.length;if(len&&typeof this.matrixIds[0]==="string"){var ids=this.matrixIds;this.matrixIds=new Array(len);for(var i=0;i<len;++i){this.matrixIds[i]={identifier:ids[i]};}}}},setMap:function(){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);this.updateMatrixProperties();},updateMatrixProperties:function(){this.matrix=this.getMatrix();if(this.matrix){if(this.matrix.topLeftCorner){this.tileOrigin=this.matrix.topLeftCorner;} -if(this.matrix.tileWidth&&this.matrix.tileHeight){this.tileSize=new OpenLayers.Size(this.matrix.tileWidth,this.matrix.tileHeight);} -if(!this.tileOrigin){this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.top);} -if(!this.tileFullExtent){this.tileFullExtent=this.maxExtent;}}},moveTo:function(bounds,zoomChanged,dragging){if(zoomChanged||!this.matrix){this.updateMatrixProperties();} -return OpenLayers.Layer.Grid.prototype.moveTo.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.WMTS(this.options);} -obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getMatrix:function(){var matrix;if(!this.matrixIds||this.matrixIds.length===0){matrix={identifier:this.map.getZoom()+this.zoomOffset};}else{if("scaleDenominator"in this.matrixIds[0]){var denom=OpenLayers.METERS_PER_INCH*OpenLayers.INCHES_PER_UNIT[this.units]*this.map.getResolution()/0.28E-3;var diff=Number.POSITIVE_INFINITY;var delta;for(var i=0,ii=this.matrixIds.length;i<ii;++i){delta=Math.abs(1-(this.matrixIds[i].scaleDenominator/denom));if(delta<diff){diff=delta;matrix=this.matrixIds[i];}}}else{matrix=this.matrixIds[this.map.getZoom()+this.zoomOffset];}} -return matrix;},getTileInfo:function(loc){var res=this.map.getResolution();var fx=(loc.lon-this.tileOrigin.lon)/(res*this.tileSize.w);var fy=(this.tileOrigin.lat-loc.lat)/(res*this.tileSize.h);var col=Math.floor(fx);var row=Math.floor(fy);return{col:col,row:row,i:Math.floor((fx-col)*this.tileSize.w),j:Math.floor((fy-row)*this.tileSize.h)};},getURL:function(bounds){bounds=this.adjustBounds(bounds);var url="";if(!this.tileFullExtent||this.tileFullExtent.intersectsBounds(bounds)){var center=bounds.getCenterLonLat();var info=this.getTileInfo(center);var matrixId=this.matrix.identifier;if(this.requestEncoding.toUpperCase()==="REST"){var path=this.version+"/"+this.layer+"/"+this.style+"/";if(this.dimensions){for(var i=0;i<this.dimensions.length;i++){if(this.params[this.dimensions[i]]){path=path+this.params[this.dimensions[i]]+"/";}}} -path=path+this.matrixSet+"/"+this.matrix.identifier+"/"+info.row+"/"+info.col+"."+this.formatSuffix;if(this.url instanceof Array){url=this.selectUrl(path,this.url);}else{url=this.url;} -if(!url.match(/\/$/)){url=url+"/";} -url=url+path;}else if(this.requestEncoding.toUpperCase()==="KVP"){var params={SERVICE:"WMTS",REQUEST:"GetTile",VERSION:this.version,LAYER:this.layer,STYLE:this.style,TILEMATRIXSET:this.matrixSet,TILEMATRIX:this.matrix.identifier,TILEROW:info.row,TILECOL:info.col,FORMAT:this.format};url=OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this,[params]);}} -return url;},mergeNewParams:function(newParams){if(this.requestEncoding.toUpperCase()==="KVP"){return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,[OpenLayers.Util.upperCaseObject(newParams)]);}},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},CLASS_NAME:"OpenLayers.Layer.WMTS"});OpenLayers.Layer.WorldWind=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{},isBaseLayer:true,lzd:null,zoomLevels:null,initialize:function(name,url,lzd,zoomLevels,params,options){this.lzd=lzd;this.zoomLevels=zoomLevels;var newArguments=[];newArguments.push(name,url,params,options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS);},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},getZoom:function(){var zoom=this.map.getZoom();var extent=this.map.getMaxExtent();zoom=zoom-Math.log(this.maxResolution/(this.lzd/512))/Math.log(2);return zoom;},getURL:function(bounds){bounds=this.adjustBounds(bounds);var zoom=this.getZoom();var extent=this.map.getMaxExtent();var deg=this.lzd/Math.pow(2,this.getZoom());var x=Math.floor((bounds.left-extent.left)/deg);var y=Math.floor((bounds.bottom-extent.bottom)/deg);if(this.map.getResolution()<=(this.lzd/512)&&this.getZoom()<=this.zoomLevels){return this.getFullRequestString({L:zoom,X:x,Y:y});}else{return OpenLayers.Util.getImagesLocation()+"blank.gif";}},CLASS_NAME:"OpenLayers.Layer.WorldWind"});OpenLayers.Layer.XYZ=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,sphericalMercator:false,zoomOffset:0,initialize:function(name,url,options){if(options&&options.sphericalMercator||this.sphericalMercator){options=OpenLayers.Util.extend({maxExtent:new OpenLayers.Bounds(-128*156543.0339,-128*156543.0339,128*156543.0339,128*156543.0339),maxResolution:156543.0339,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 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.map.getZoom()+this.zoomOffset;var url=this.url;var s=''+x+y+z;if(url instanceof Array) -{url=this.selectUrl(s,url);} -var path=OpenLayers.String.format(url,{'x':x,'y':y,'z':z});return path;},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},setMap:function(map){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);if(!this.tileOrigin){this.tileOrigin=new OpenLayers.LonLat(this.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;},CLASS_NAME:"OpenLayers.Layer.OSM"});OpenLayers.Layer.Zoomify=OpenLayers.Class(OpenLayers.Layer.Grid,{url:null,size:null,isBaseLayer:true,standardTileSize:256,numberOfTiers:0,tileCountUpToTier:new Array(),tierSizeInTiles:new Array(),tierImageSize:new Array(),initialize:function(name,url,size,options){this.initializeZoomify(size);var newArguments=[];newArguments.push(name,url,size,{},options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);},initializeZoomify:function(size){var imageSize=size.clone() -var tiles=new OpenLayers.Size(Math.ceil(imageSize.w/this.standardTileSize),Math.ceil(imageSize.h/this.standardTileSize));this.tierSizeInTiles.push(tiles);this.tierImageSize.push(imageSize);while(imageSize.w>this.standardTileSize||imageSize.h>this.standardTileSize){imageSize=new OpenLayers.Size(Math.floor(imageSize.w/2),Math.floor(imageSize.h/2));tiles=new OpenLayers.Size(Math.ceil(imageSize.w/this.standardTileSize),Math.ceil(imageSize.h/this.standardTileSize));this.tierSizeInTiles.push(tiles);this.tierImageSize.push(imageSize);} -this.tierSizeInTiles.reverse();this.tierImageSize.reverse();this.numberOfTiers=this.tierSizeInTiles.length;this.tileCountUpToTier[0]=0;for(var i=1;i<this.numberOfTiers;i++){this.tileCountUpToTier.push(this.tierSizeInTiles[i-1].w*this.tierSizeInTiles[i-1].h+ -this.tileCountUpToTier[i-1]);}},destroy:function(){OpenLayers.Layer.Grid.prototype.destroy.apply(this,arguments);this.tileCountUpToTier.length=0 -this.tierSizeInTiles.length=0 -this.tierImageSize.length=0},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.Zoomify(this.name,this.url,this.size,this.options);} -obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getURL:function(bounds){bounds=this.adjustBounds(bounds);var res=this.map.getResolution();var x=Math.round((bounds.left-this.tileOrigin.lon)/(res*this.tileSize.w));var y=Math.round((this.tileOrigin.lat-bounds.top)/(res*this.tileSize.h));var z=this.map.getZoom();var tileIndex=x+y*this.tierSizeInTiles[z].w+this.tileCountUpToTier[z];var path="TileGroup"+Math.floor((tileIndex)/256)+"/"+z+"-"+x+"-"+y+".jpg";var url=this.url;if(url instanceof Array){url=this.selectUrl(path,url);} -return url+path;},getImageSize:function(){if(arguments.length>0){bounds=this.adjustBounds(arguments[0]);var res=this.map.getResolution();var x=Math.round((bounds.left-this.tileOrigin.lon)/(res*this.tileSize.w));var y=Math.round((this.tileOrigin.lat-bounds.top)/(res*this.tileSize.h));var z=this.map.getZoom();var w=this.standardTileSize;var h=this.standardTileSize;if(x==this.tierSizeInTiles[z].w-1){var w=this.tierImageSize[z].w%this.standardTileSize;};if(y==this.tierSizeInTiles[z].h-1){var h=this.tierImageSize[z].h%this.standardTileSize;};return(new OpenLayers.Size(w,h));}else{return this.tileSize;}},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},setMap:function(map){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);this.tileOrigin=new OpenLayers.LonLat(this.map.maxExtent.left,this.map.maxExtent.top);},calculateGridLayout:function(bounds,extent,resolution){var tilelon=resolution*this.tileSize.w;var tilelat=resolution*this.tileSize.h;var offsetlon=bounds.left-extent.left;var tilecol=Math.floor(offsetlon/tilelon)-this.buffer;var tilecolremain=offsetlon/tilelon-tilecol;var tileoffsetx=-tilecolremain*this.tileSize.w;var tileoffsetlon=extent.left+tilecol*tilelon;var offsetlat=extent.top-bounds.top+tilelat;var tilerow=Math.floor(offsetlat/tilelat)-this.buffer;var tilerowremain=tilerow-offsetlat/tilelat;var tileoffsety=tilerowremain*this.tileSize.h;var tileoffsetlat=extent.top-tilelat*tilerow;return{tilelon:tilelon,tilelat:tilelat,tileoffsetlon:tileoffsetlon,tileoffsetlat:tileoffsetlat,tileoffsetx:tileoffsetx,tileoffsety:tileoffsety};},CLASS_NAME:"OpenLayers.Layer.Zoomify"});OpenLayers.Protocol.SQL.Gears=OpenLayers.Class(OpenLayers.Protocol.SQL,{FID_PREFIX:'__gears_fid__',NULL_GEOMETRY:'__gears_null_geometry__',NULL_FEATURE_STATE:'__gears_null_feature_state__',jsonParser:null,wktParser:null,fidRegExp:null,saveFeatureState:true,typeOfFid:"string",db:null,initialize:function(options){if(!this.supported()){return;} -OpenLayers.Protocol.SQL.prototype.initialize.apply(this,[options]);this.jsonParser=new OpenLayers.Format.JSON();this.wktParser=new OpenLayers.Format.WKT();this.fidRegExp=new RegExp('^'+this.FID_PREFIX);this.initializeDatabase();},initializeDatabase:function(){this.db=google.gears.factory.create('beta.database');this.db.open(this.databaseName);this.db.execute("CREATE TABLE IF NOT EXISTS "+this.tableName+" (fid TEXT UNIQUE, geometry TEXT, properties TEXT,"+" state TEXT)");},destroy:function(){this.db.close();this.db=null;this.jsonParser=null;this.wktParser=null;OpenLayers.Protocol.SQL.prototype.destroy.apply(this);},supported:function(){return!!(window.google&&google.gears);},read:function(options){OpenLayers.Protocol.prototype.read.apply(this,arguments);options=OpenLayers.Util.applyDefaults(options,this.options);var feature,features=[];var rs=this.db.execute("SELECT * FROM "+this.tableName);while(rs.isValidRow()){feature=this.unfreezeFeature(rs);if(this.evaluateFilter(feature,options.filter)){if(!options.noFeatureStateReset){feature.state=null;} -features.push(feature);} -rs.next();} -rs.close();var resp=new OpenLayers.Protocol.Response({code:OpenLayers.Protocol.Response.SUCCESS,requestType:"read",features:features});if(options&&options.callback){options.callback.call(options.scope,resp);} -return resp;},unfreezeFeature:function(row){var feature;var wkt=row.fieldByName('geometry');if(wkt==this.NULL_GEOMETRY){feature=new OpenLayers.Feature.Vector();}else{feature=this.wktParser.read(wkt);} -feature.attributes=this.jsonParser.read(row.fieldByName('properties'));feature.fid=this.extractFidFromField(row.fieldByName('fid'));var state=row.fieldByName('state');if(state==this.NULL_FEATURE_STATE){state=null;} -feature.state=state;return feature;},extractFidFromField:function(field){if(!field.match(this.fidRegExp)&&this.typeOfFid=="number"){field=parseFloat(field);} -return field;},create:function(features,options){options=OpenLayers.Util.applyDefaults(options,this.options);var resp=this.createOrUpdate(features);resp.requestType="create";if(options&&options.callback){options.callback.call(options.scope,resp);} -return resp;},update:function(features,options){options=OpenLayers.Util.applyDefaults(options,this.options);var resp=this.createOrUpdate(features);resp.requestType="update";if(options&&options.callback){options.callback.call(options.scope,resp);} -return resp;},createOrUpdate:function(features){if(!(features instanceof Array)){features=[features];} -var i,len=features.length,feature;var insertedFeatures=new Array(len);for(i=0;i<len;i++){feature=features[i];var params=this.freezeFeature(feature);this.db.execute("REPLACE INTO "+this.tableName+" (fid, geometry, properties, state)"+" VALUES (?, ?, ?, ?)",params);var clone=feature.clone();clone.fid=this.extractFidFromField(params[0]);insertedFeatures[i]=clone;} -return new OpenLayers.Protocol.Response({code:OpenLayers.Protocol.Response.SUCCESS,features:insertedFeatures,reqFeatures:features});},freezeFeature:function(feature){feature.fid=feature.fid!=null?""+feature.fid:OpenLayers.Util.createUniqueID(this.FID_PREFIX);var geometry=feature.geometry!=null?feature.geometry.toString():this.NULL_GEOMETRY;var properties=this.jsonParser.write(feature.attributes);var state=this.getFeatureStateForFreeze(feature);return[feature.fid,geometry,properties,state];},getFeatureStateForFreeze:function(feature){var state;if(!this.saveFeatureState){state=this.NULL_FEATURE_STATE;}else if(this.createdOffline(feature)){state=OpenLayers.State.INSERT;}else{state=feature.state;} -return state;},"delete":function(features,options){if(!(features instanceof Array)){features=[features];} -options=OpenLayers.Util.applyDefaults(options,this.options);var i,len,feature;for(i=0,len=features.length;i<len;i++){feature=features[i];if(this.saveFeatureState&&!this.createdOffline(feature)){var toDelete=feature.clone();toDelete.fid=feature.fid;if(toDelete.geometry){toDelete.geometry.destroy();toDelete.geometry=null;} -toDelete.state=feature.state;this.createOrUpdate(toDelete);}else{this.db.execute("DELETE FROM "+this.tableName+" WHERE fid = ?",[feature.fid]);}} -var resp=new OpenLayers.Protocol.Response({code:OpenLayers.Protocol.Response.SUCCESS,requestType:"delete",reqFeatures:features});if(options&&options.callback){options.callback.call(options.scope,resp);} -return resp;},createdOffline:function(feature){return(typeof feature.fid=="string"&&!!(feature.fid.match(this.fidRegExp)));},commit:function(features,options){var opt,resp=[],nRequests=0,nResponses=0;function callback(resp){if(++nResponses<nRequests){resp.last=false;} -this.callUserCallback(options,resp);} -var feature,toCreate=[],toUpdate=[],toDelete=[];for(var i=features.length-1;i>=0;i--){feature=features[i];switch(feature.state){case OpenLayers.State.INSERT:toCreate.push(feature);break;case OpenLayers.State.UPDATE:toUpdate.push(feature);break;case OpenLayers.State.DELETE:toDelete.push(feature);break;}} -if(toCreate.length>0){nRequests++;opt=OpenLayers.Util.applyDefaults({"callback":callback,"scope":this},options.create);resp.push(this.create(toCreate,opt));} -if(toUpdate.length>0){nRequests++;opt=OpenLayers.Util.applyDefaults({"callback":callback,"scope":this},options.update);resp.push(this.update(toUpdate,opt));} -if(toDelete.length>0){nRequests++;opt=OpenLayers.Util.applyDefaults({"callback":callback,"scope":this},options["delete"]);resp.push(this["delete"](toDelete,opt));} -return resp;},clear:function(){this.db.execute("DELETE FROM "+this.tableName);},callUserCallback:function(options,resp){var opt=options[resp.requestType];if(opt&&opt.callback){opt.callback.call(opt.scope,resp);} -if(resp.last&&options.callback){options.callback.call(options.scope);}},CLASS_NAME:"OpenLayers.Protocol.SQL.Gears"});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.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.Control.NavToolbar=OpenLayers.Class(OpenLayers.Control.Panel,{initialize:function(options){OpenLayers.Control.Panel.prototype.initialize.apply(this,[options]);this.addControls([new OpenLayers.Control.Navigation(),new OpenLayers.Control.ZoomBox()]);},draw:function(){var div=OpenLayers.Control.Panel.prototype.draw.apply(this,arguments);this.activateControl(this.controls[0]);return div;},CLASS_NAME:"OpenLayers.Control.NavToolbar"});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]);},evaluate:function(context){if(context instanceof OpenLayers.Feature.Vector){context=context.attributes;} -var result=false;var got=context[this.property];switch(this.type){case OpenLayers.Filter.Comparison.EQUAL_TO:var 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:var 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.Filter.FeatureId=OpenLayers.Class(OpenLayers.Filter,{fids:null,initialize:function(options){this.fids=[];OpenLayers.Filter.prototype.initialize.apply(this,[options]);},evaluate:function(feature){for(var i=0,len=this.fids.length;i<len;i++){var fid=feature.fid||feature.id;if(fid==this.fids[i]){return true;}} -return false;},clone:function(){var filter=new OpenLayers.Filter.FeatureId();OpenLayers.Util.extend(filter,this);filter.fids=this.fids.slice();return filter;},CLASS_NAME:"OpenLayers.Filter.FeatureId"});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){switch(this.type){case OpenLayers.Filter.Logical.AND:for(var 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(var 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));}},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.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.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;if(this.components&&this.components.length>0){this.setBounds(this.components[0].getBounds());for(var i=1,len=this.components.length;i<len;i++){this.extendBounds(this.components[i].getBounds());}}},addComponents:function(components){if(!(components instanceof Array)){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){if(!(components instanceof Array)){components=[components];} -for(var i=components.length-1;i>=0;--i){this.removeComponent(components[i]);}},removeComponent:function(component){OpenLayers.Util.removeItem(this.components,component);this.clearBounds();},getLength:function(){var length=0.0;for(var i=0,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(!(geometry.components instanceof Array)||(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.Rectangle=OpenLayers.Class(OpenLayers.Geometry,{x:null,y:null,width:null,height:null,initialize:function(x,y,width,height){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.x=x;this.y=y;this.width=width;this.height=height;},calculateBounds:function(){this.bounds=new OpenLayers.Bounds(this.x,this.y,this.x+this.width,this.y+this.height);},getLength:function(){var length=(2*this.width)+(2*this.height);return length;},getArea:function(){var area=this.width*this.height;return area;},CLASS_NAME:"OpenLayers.Geometry.Rectangle"});OpenLayers.Geometry.Surface=OpenLayers.Class(OpenLayers.Geometry,{initialize:function(){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Geometry.Surface"});OpenLayers.Layer.KaMapCache=OpenLayers.Class(OpenLayers.Layer.KaMap,{IMAGE_EXTENSIONS:{'jpeg':'jpg','gif':'gif','png':'png','png8':'png','png24':'png','dithered':'png'},DEFAULT_FORMAT:'jpeg',initialize:function(name,url,params,options){OpenLayers.Layer.KaMap.prototype.initialize.apply(this,arguments);this.extension=this.IMAGE_EXTENSIONS[this.params.i.toLowerCase()||DEFAULT_FORMAT];},getURL:function(bounds){bounds=this.adjustBounds(bounds);var mapRes=this.map.getResolution();var scale=Math.round((this.map.getScale()*10000))/10000;var pX=Math.round(bounds.left/mapRes);var pY=-Math.round(bounds.top/mapRes);var metaX=Math.floor(pX/this.tileSize.w/this.params.metaTileSize.w)*this.tileSize.w*this.params.metaTileSize.w;var metaY=Math.floor(pY/this.tileSize.h/this.params.metaTileSize.h)*this.tileSize.h*this.params.metaTileSize.h;var url=this.url;if(url instanceof Array){url=this.selectUrl(paramsString,url);} -var components=[url,"/",this.params.map,"/",scale,"/",this.params.g.replace(/\s/g,'_'),"/def/t",metaY,"/l",metaX,"/t",pY,"l",pX,".",this.extension];return components.join("");},CLASS_NAME:"OpenLayers.Layer.KaMapCache"});OpenLayers.Layer.MapServer.Untiled=OpenLayers.Class(OpenLayers.Layer.MapServer,{singleTile:true,initialize:function(name,url,params,options){OpenLayers.Layer.MapServer.prototype.initialize.apply(this,arguments);var msg="The OpenLayers.Layer.MapServer.Untiled class is deprecated and "+"will be removed in 3.0. Instead, you should use the "+"normal OpenLayers.Layer.MapServer class, passing it the option "+"'singleTile' as true.";OpenLayers.Console.warn(msg);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.MapServer.Untiled(this.name,this.url,this.params,this.getOptions());} -obj=OpenLayers.Layer.MapServer.prototype.clone.apply(this,[obj]);return obj;},CLASS_NAME:"OpenLayers.Layer.MapServer.Untiled"});OpenLayers.Layer.Vector=OpenLayers.Class(OpenLayers.Layer,{EVENT_TYPES:["beforefeatureadded","beforefeaturesadded","featureadded","featuresadded","beforefeatureremoved","beforefeaturesremoved","featureremoved","featuresremoved","beforefeatureselected","featureselected","featureunselected","beforefeaturemodified","featuremodified","afterfeaturemodified","vertexmodified","sketchstarted","sketchmodified","sketchcomplete","refresh"],isBaseLayer:false,isFixed:false,isVector:true,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 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(navigator.userAgent.toLowerCase().indexOf("gecko")!=-1){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||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);}}},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(!(features instanceof Array)){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(!(features instanceof Array)){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);}} -if(!this.renderer.drawFeature(feature,style)){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 featureId=this.renderer.getFeatureIdFromEvent(evt);return this.getFeatureById(featureId);},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);},onFeatureInsert:function(feature){},preFeatureInsert:function(feature){},getDataExtent:function(){var maxExtent=null;var features=this.features;if(features&&(features.length>0)){maxExtent=new OpenLayers.Bounds();var geometry=null;for(var i=0,len=features.length;i<len;i++){geometry=features[i].geometry;if(geometry){maxExtent.extend(geometry.getBounds());}}} -return maxExtent;},CLASS_NAME:"OpenLayers.Layer.Vector"});OpenLayers.Layer.WMS.Post=OpenLayers.Class(OpenLayers.Layer.WMS,{tileClass:null,unsupportedBrowsers:["mozilla","firefox","opera"],SUPPORTED_TRANSITIONS:[],initialize:function(name,url,params,options){var newArguments=[];newArguments.push(name,url,params,options);OpenLayers.Layer.WMS.prototype.initialize.apply(this,newArguments);this.tileClass=OpenLayers.Util.indexOf(this.unsupportedBrowsers,OpenLayers.Util.getBrowserName())!=-1?OpenLayers.Tile.Image:OpenLayers.Tile.Image.IFrame;},addTile:function(bounds,position){return new this.tileClass(this,position,bounds,null,this.tileSize);},CLASS_NAME:'OpenLayers.Layer.WMS.Post'});OpenLayers.Layer.WMS.Untiled=OpenLayers.Class(OpenLayers.Layer.WMS,{singleTile:true,initialize:function(name,url,params,options){OpenLayers.Layer.WMS.prototype.initialize.apply(this,arguments);var msg="The OpenLayers.Layer.WMS.Untiled class is deprecated and "+"will be removed in 3.0. Instead, you should use the "+"normal OpenLayers.Layer.WMS class, passing it the option "+"'singleTile' as true.";OpenLayers.Console.warn(msg);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.WMS.Untiled(this.name,this.url,this.params,this.getOptions());} -obj=OpenLayers.Layer.WMS.prototype.clone.apply(this,[obj]);return obj;},CLASS_NAME:"OpenLayers.Layer.WMS.Untiled"});OpenLayers.Strategy.Filter=OpenLayers.Class(OpenLayers.Strategy,{filter:null,cache:null,caching:false,initialize:function(options){OpenLayers.Strategy.prototype.initialize.apply(this,[options]);if(!this.filter||!(this.filter instanceof OpenLayers.Filter)){throw new Error("Filter strategy must be constructed with a filter");}},activate:function(){var activated=OpenLayers.Strategy.prototype.activate.apply(this,arguments);if(activated){this.cache=[];this.layer.events.on({"beforefeaturesadded":this.handleAdd,"beforefeaturesremoved":this.handleRemove,scope:this});} -return activated;},deactivate:function(){this.cache=null;if(this.layer&&this.layer.events){this.layer.events.un({"beforefeaturesadded":this.handleAdd,"beforefeaturesremoved":this.handleRemove,scope:this});} -return OpenLayers.Strategy.prototype.deactivate.apply(this,arguments);},handleAdd:function(event){if(!this.caching){var features=event.features;event.features=[];var feature;for(var i=0,ii=features.length;i<ii;++i){feature=features[i];if(this.filter.evaluate(feature)){event.features.push(feature);}else{this.cache.push(feature);}}}},handleRemove:function(event){if(!this.caching){this.cache=[];}},setFilter:function(filter){this.filter=filter;var previousCache=this.cache;this.cache=[];this.handleAdd({features:this.layer.features});if(this.cache.length>0){this.caching=true;this.layer.removeFeatures(this.cache.slice(),{silent:true});this.caching=false;} -if(previousCache.length>0){var event={features:previousCache};this.handleAdd(event);this.caching=true;this.layer.addFeatures(event.features,{silent:true});this.caching=false;}},CLASS_NAME:"OpenLayers.Strategy.Filter"});OpenLayers.Style2=OpenLayers.Class({id:null,name:null,title:null,description:null,layerName:null,isDefault:false,rules:null,initialize:function(config){OpenLayers.Util.extend(this,config);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();} -delete this.rules;},clone:function(){var config=OpenLayers.Util.extend({},this);if(this.rules){config.rules=[];for(var i=0,len=this.rules.length;i<len;++i){config.rules.push(this.rules[i].clone());}} -return new OpenLayers.Style2(config);},CLASS_NAME:"OpenLayers.Style2"});OpenLayers.Control.GetFeature=OpenLayers.Class(OpenLayers.Control,{protocol:null,multipleKey:null,toggleKey:null,modifiers:null,multiple:false,click:true,single:true,clickout:true,toggle:false,clickTolerance:5,hover:false,box:false,maxFeatures:10,features:null,hoverFeature:null,handlerOptions:null,handlers:null,hoverResponse:null,filterType:OpenLayers.Filter.Spatial.BBOX,EVENT_TYPES:["featureselected","featuresselected","featureunselected","clickout","beforefeatureselected","beforefeaturesselected","hoverfeature","outfeature"],initialize:function(options){this.EVENT_TYPES=OpenLayers.Control.GetFeature.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);options.handlerOptions=options.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[options]);this.features={};this.handlers={};if(this.click){this.handlers.click=new OpenLayers.Handler.Click(this,{click:this.selectClick},this.handlerOptions.click||{});} -if(this.box){this.handlers.box=new OpenLayers.Handler.Box(this,{done:this.selectBox},OpenLayers.Util.extend(this.handlerOptions.box,{boxDivClassName:"olHandlerBoxSelectFeature"}));} -if(this.hover){this.handlers.hover=new OpenLayers.Handler.Hover(this,{'move':this.cancelHover,'pause':this.selectHover},OpenLayers.Util.extend(this.handlerOptions.hover,{'delay':250}));}},activate:function(){if(!this.active){for(var i in this.handlers){this.handlers[i].activate();}} -return OpenLayers.Control.prototype.activate.apply(this,arguments);},deactivate:function(){if(this.active){for(var i in this.handlers){this.handlers[i].deactivate();}} -return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},selectClick:function(evt){var bounds=this.pixelToBounds(evt.xy);this.setModifiers(evt);this.request(bounds,{single:this.single});},selectBox:function(position){var bounds;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));bounds=new OpenLayers.Bounds(minXY.lon,minXY.lat,maxXY.lon,maxXY.lat);}else{if(this.click){return;} -bounds=this.pixelToBounds(position);} -this.setModifiers(this.handlers.box.dragHandler.evt);this.request(bounds);},selectHover:function(evt){var bounds=this.pixelToBounds(evt.xy);this.request(bounds,{single:true,hover:true});},cancelHover:function(){if(this.hoverResponse){this.protocol.abort(this.hoverResponse);this.hoverResponse=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait");}},request:function(bounds,options){options=options||{};var filter=new OpenLayers.Filter.Spatial({type:this.filterType,value:bounds});OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait");var response=this.protocol.read({maxFeatures:options.single==true?this.maxFeatures:undefined,filter:filter,callback:function(result){if(result.success()){if(result.features.length){if(options.single==true){this.selectBestFeature(result.features,bounds.getCenterLonLat(),options);}else{this.select(result.features);}}else if(options.hover){this.hoverSelect();}else{this.events.triggerEvent("clickout");if(this.clickout){this.unselectAll();}}} -OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait");},scope:this});if(options.hover==true){this.hoverResponse=response;}},selectBestFeature:function(features,clickPosition,options){options=options||{};if(features.length){var point=new OpenLayers.Geometry.Point(clickPosition.lon,clickPosition.lat);var feature,resultFeature,dist;var minDist=Number.MAX_VALUE;for(var i=0;i<features.length;++i){feature=features[i];if(feature.geometry){dist=point.distanceTo(feature.geometry,{edge:false});if(dist<minDist){minDist=dist;resultFeature=feature;if(minDist==0){break;}}}} -if(options.hover==true){this.hoverSelect(resultFeature);}else{this.select(resultFeature||features);}}},setModifiers:function(evt){this.modifiers={multiple:this.multiple||(this.multipleKey&&evt[this.multipleKey]),toggle:this.toggle||(this.toggleKey&&evt[this.toggleKey])};},select:function(features){if(!this.modifiers.multiple&&!this.modifiers.toggle){this.unselectAll();} -if(!(features instanceof Array)){features=[features];} -var cont=this.events.triggerEvent("beforefeaturesselected",{features:features});if(cont!==false){var selectedFeatures=[];var feature;for(var i=0,len=features.length;i<len;++i){feature=features[i];if(this.features[feature.fid||feature.id]){if(this.modifiers.toggle){this.unselect(this.features[feature.fid||feature.id]);}}else{cont=this.events.triggerEvent("beforefeatureselected",{feature:feature});if(cont!==false){this.features[feature.fid||feature.id]=feature;selectedFeatures.push(feature);this.events.triggerEvent("featureselected",{feature:feature});}}} -this.events.triggerEvent("featuresselected",{features:selectedFeatures});}},hoverSelect:function(feature){var fid=feature?feature.fid||feature.id:null;var hfid=this.hoverFeature?this.hoverFeature.fid||this.hoverFeature.id:null;if(hfid&&hfid!=fid){this.events.triggerEvent("outfeature",{feature:this.hoverFeature});this.hoverFeature=null;} -if(fid&&fid!=hfid){this.events.triggerEvent("hoverfeature",{feature:feature});this.hoverFeature=feature;}},unselect:function(feature){delete this.features[feature.fid||feature.id];this.events.triggerEvent("featureunselected",{feature:feature});},unselectAll:function(){for(var fid in this.features){this.unselect(this.features[fid]);}},setMap:function(map){for(var i in this.handlers){this.handlers[i].setMap(map);} -OpenLayers.Control.prototype.setMap.apply(this,arguments);},pixelToBounds:function(pixel){var llPx=pixel.add(-this.clickTolerance/2,this.clickTolerance/2);var urPx=pixel.add(this.clickTolerance/2,-this.clickTolerance/2);var ll=this.map.getLonLatFromPixel(llPx);var ur=this.map.getLonLatFromPixel(urPx);return new OpenLayers.Bounds(ll.lon,ll.lat,ur.lon,ur.lat);},CLASS_NAME:"OpenLayers.Control.GetFeature"});OpenLayers.Control.Snapping=OpenLayers.Class(OpenLayers.Control,{EVENT_TYPES:["beforesnap","snap","unsnap"],DEFAULTS:{tolerance:10,node:true,edge:true,vertex:true},greedy:true,precedence:["node","vertex","edge"],resolution:null,geoToleranceCache:null,layer:null,feature:null,point:null,initialize:function(options){Array.prototype.push.apply(this.EVENT_TYPES,OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.prototype.initialize.apply(this,[options]);this.options=options||{};if(this.options.layer){this.setLayer(this.options.layer);} -var defaults=OpenLayers.Util.extend({},this.options.defaults);this.defaults=OpenLayers.Util.applyDefaults(defaults,this.DEFAULTS);this.setTargets(this.options.targets);if(this.targets.length===0&&this.layer){this.addTargetLayer(this.layer);} -this.geoToleranceCache={};},setLayer:function(layer){if(this.active){this.deactivate();this.layer=layer;this.activate();}else{this.layer=layer;}},setTargets:function(targets){this.targets=[];if(targets&&targets.length){var target;for(var i=0,len=targets.length;i<len;++i){target=targets[i];if(target instanceof OpenLayers.Layer.Vector){this.addTargetLayer(target);}else{this.addTarget(target);}}}},addTargetLayer:function(layer){this.addTarget({layer:layer});},addTarget:function(target){target=OpenLayers.Util.applyDefaults(target,this.defaults);target.nodeTolerance=target.nodeTolerance||target.tolerance;target.vertexTolerance=target.vertexTolerance||target.tolerance;target.edgeTolerance=target.edgeTolerance||target.tolerance;this.targets.push(target);},removeTargetLayer:function(layer){var target;for(var i=this.targets.length-1;i>=0;--i){target=this.targets[i];if(target.layer===layer){this.removeTarget(target);}}},removeTarget:function(target){return OpenLayers.Util.removeItem(this.targets,target);},activate:function(){var activated=OpenLayers.Control.prototype.activate.call(this);if(activated){if(this.layer&&this.layer.events){this.layer.events.on({sketchstarted:this.onSketchModified,sketchmodified:this.onSketchModified,vertexmodified:this.onVertexModified,scope:this});}} -return activated;},deactivate:function(){var deactivated=OpenLayers.Control.prototype.deactivate.call(this);if(deactivated){if(this.layer&&this.layer.events){this.layer.events.un({sketchstarted:this.onSketchModified,sketchmodified:this.onSketchModified,vertexmodified:this.onVertexModified,scope:this});}} -this.feature=null;this.point=null;return deactivated;},onSketchModified:function(event){this.feature=event.feature;this.considerSnapping(event.vertex,event.vertex);},onVertexModified:function(event){this.feature=event.feature;var loc=this.layer.map.getLonLatFromViewPortPx(event.pixel);this.considerSnapping(event.vertex,new OpenLayers.Geometry.Point(loc.lon,loc.lat));},considerSnapping:function(point,loc){var best={rank:Number.POSITIVE_INFINITY,dist:Number.POSITIVE_INFINITY,x:null,y:null};var snapped=false;var result,target;for(var i=0,len=this.targets.length;i<len;++i){target=this.targets[i];result=this.testTarget(target,loc);if(result){if(this.greedy){best=result;best.target=target;snapped=true;break;}else{if((result.rank<best.rank)||(result.rank===best.rank&&result.dist<best.dist)){best=result;best.target=target;snapped=true;}}}} -if(snapped){var proceed=this.events.triggerEvent("beforesnap",{point:point,x:best.x,y:best.y,distance:best.dist,layer:best.target.layer,snapType:this.precedence[best.rank]});if(proceed!==false){point.x=best.x;point.y=best.y;this.point=point;this.events.triggerEvent("snap",{point:point,snapType:this.precedence[best.rank],layer:best.target.layer,distance:best.dist});}else{snapped=false;}} -if(this.point&&!snapped){point.x=loc.x;point.y=loc.y;this.point=null;this.events.triggerEvent("unsnap",{point:point});}},testTarget:function(target,loc){var tolerance={node:this.getGeoTolerance(target.nodeTolerance),vertex:this.getGeoTolerance(target.vertexTolerance),edge:this.getGeoTolerance(target.edgeTolerance)};var maxTolerance=Math.max(tolerance.node,tolerance.vertex,tolerance.edge);var result={rank:Number.POSITIVE_INFINITY,dist:Number.POSITIVE_INFINITY};var eligible=false;var features=target.layer.features;var feature,type,vertices,vertex,closest,dist,found;var numTypes=this.precedence.length;var ll=new OpenLayers.LonLat(loc.x,loc.y);for(var i=0,len=features.length;i<len;++i){feature=features[i];if(feature!==this.feature&&!feature._sketch&&feature.state!==OpenLayers.State.DELETE&&(!target.filter||target.filter.evaluate(feature.attributes))){if(feature.atPoint(ll,maxTolerance,maxTolerance)){for(var j=0,stop=Math.min(result.rank+1,numTypes);j<stop;++j){type=this.precedence[j];if(target[type]){if(type==="edge"){closest=feature.geometry.distanceTo(loc,{details:true});dist=closest.distance;if(dist<=tolerance[type]&&dist<result.dist){result={rank:j,dist:dist,x:closest.x0,y:closest.y0};eligible=true;break;}}else{vertices=feature.geometry.getVertices(type==="node");found=false;for(var k=0,klen=vertices.length;k<klen;++k){vertex=vertices[k];dist=vertex.distanceTo(loc);if(dist<=tolerance[type]&&(j<result.rank||(j===result.rank&&dist<result.dist))){result={rank:j,dist:dist,x:vertex.x,y:vertex.y};eligible=true;found=true;}} -if(found){break;}}}}}}} -return eligible?result:null;},getGeoTolerance:function(tolerance){var resolution=this.layer.map.getResolution();if(resolution!==this.resolution){this.resolution=resolution;this.geoToleranceCache={};} -var geoTolerance=this.geoToleranceCache[tolerance];if(geoTolerance===undefined){geoTolerance=tolerance*resolution;this.geoToleranceCache[tolerance]=geoTolerance;} -return geoTolerance;},destroy:function(){if(this.active){this.deactivate();} -delete this.layer;delete this.targets;OpenLayers.Control.prototype.destroy.call(this);},CLASS_NAME:"OpenLayers.Control.Snapping"});OpenLayers.Format.Filter=OpenLayers.Class(OpenLayers.Format.XML,{defaultVersion:"1.0.0",version:null,parser:null,initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},write:function(filter,options){var version=(options&&options.version)||this.version||this.defaultVersion;if(!this.parser||this.parser.VERSION!=version){var format=OpenLayers.Format.Filter["v"+version.replace(/\./g,"_")];if(!format){throw"Can't find a Filter parser for version "+ -version;} -this.parser=new format(this.options);} -return this.parser.write(filter);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -var version=this.version;if(!version){version=this.defaultVersion;} -if(!this.parser||this.parser.VERSION!=version){var format=OpenLayers.Format.Filter["v"+version.replace(/\./g,"_")];if(!format){throw"Can't find a Filter parser for version "+ -version;} -this.parser=new format(this.options);} -var filter=this.parser.read(data);return filter;},CLASS_NAME:"OpenLayers.Format.Filter"});OpenLayers.Format.SLD=OpenLayers.Class(OpenLayers.Format.XML,{defaultVersion:"1.0.0",version:null,namedLayersAsArray:false,parser:null,initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},write:function(sld,options){var version=(options&&options.version)||this.version||this.defaultVersion;if(!this.parser||this.parser.VERSION!=version){var format=OpenLayers.Format.SLD["v"+version.replace(/\./g,"_")];if(!format){throw"Can't find a SLD parser for version "+ -version;} -this.parser=new format(this.options);} -var root=this.parser.write(sld);return OpenLayers.Format.XML.prototype.write.apply(this,[root]);},read:function(data,options){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -var root=data.documentElement;var version=this.version;if(!version){version=root.getAttribute("version");if(!version){version=this.defaultVersion;}} -if(!this.parser||this.parser.VERSION!=version){var format=OpenLayers.Format.SLD["v"+version.replace(/\./g,"_")];if(!format){throw"Can't find a SLD parser for version "+ -version;} -this.parser=new format(this.options);} -var sld=this.parser.read(data,options);return sld;},CLASS_NAME:"OpenLayers.Format.SLD"});OpenLayers.Format.Text=OpenLayers.Class(OpenLayers.Format,{defaultStyle:null,extractStyles:true,initialize:function(options){options=options||{};if(options.extractStyles!==false){options.defaultStyle={'externalGraphic':OpenLayers.Util.getImagesLocation()+"marker.png",'graphicWidth':21,'graphicHeight':25,'graphicXOffset':-10.5,'graphicYOffset':-12.5};} -OpenLayers.Format.prototype.initialize.apply(this,[options]);},read:function(text){var lines=text.split('\n');var columns;var features=[];for(var lcv=0;lcv<(lines.length-1);lcv++){var currLine=lines[lcv].replace(/^\s*/,'').replace(/\s*$/,'');if(currLine.charAt(0)!='#'){if(!columns){columns=currLine.split('\t');}else{var vals=currLine.split('\t');var geometry=new OpenLayers.Geometry.Point(0,0);var attributes={};var style=this.defaultStyle?OpenLayers.Util.applyDefaults({},this.defaultStyle):null;var icon,iconSize,iconOffset,overflow;var set=false;for(var valIndex=0;valIndex<vals.length;valIndex++){if(vals[valIndex]){if(columns[valIndex]=='point'){var coords=vals[valIndex].split(',');geometry.y=parseFloat(coords[0]);geometry.x=parseFloat(coords[1]);set=true;}else if(columns[valIndex]=='lat'){geometry.y=parseFloat(vals[valIndex]);set=true;}else if(columns[valIndex]=='lon'){geometry.x=parseFloat(vals[valIndex]);set=true;}else if(columns[valIndex]=='title') -attributes['title']=vals[valIndex];else if(columns[valIndex]=='image'||columns[valIndex]=='icon'&&style){style['externalGraphic']=vals[valIndex];}else if(columns[valIndex]=='iconSize'&&style){var size=vals[valIndex].split(',');style['graphicWidth']=parseFloat(size[0]);style['graphicHeight']=parseFloat(size[1]);}else if(columns[valIndex]=='iconOffset'&&style){var offset=vals[valIndex].split(',');style['graphicXOffset']=parseFloat(offset[0]);style['graphicYOffset']=parseFloat(offset[1]);}else if(columns[valIndex]=='description'){attributes['description']=vals[valIndex];}else if(columns[valIndex]=='overflow'){attributes['overflow']=vals[valIndex];}else{attributes[columns[valIndex]]=vals[valIndex];}}} -if(set){if(this.internalProjection&&this.externalProjection){geometry.transform(this.externalProjection,this.internalProjection);} -var feature=new OpenLayers.Feature.Vector(geometry,attributes,style);features.push(feature);}}}} -return features;},CLASS_NAME:"OpenLayers.Format.Text"});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.Handler.Point=OpenLayers.Class(OpenLayers.Handler,{point:null,layer:null,multi:false,drawing:false,mouseDown:false,lastDown:null,lastUp:null,persist:false,layerOptions:null,initialize:function(control,callbacks,options){if(!(options&&options.layerOptions&&options.layerOptions.styleMap)){this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style['default'],{});} -OpenLayers.Handler.prototype.initialize.apply(this,arguments);},activate:function(){if(!OpenLayers.Handler.prototype.activate.apply(this,arguments)){return false;} -var options=OpenLayers.Util.extend({displayInLayerSwitcher:false,calculateInRange:OpenLayers.Function.True},this.layerOptions);this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,options);this.map.addLayer(this.layer);return true;},createFeature:function(pixel){var lonlat=this.map.getLonLatFromPixel(pixel);this.point=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(lonlat.lon,lonlat.lat));this.callback("create",[this.point.geometry,this.point]);this.point.geometry.clearBounds();this.layer.addFeatures([this.point],{silent:true});},deactivate:function(){if(!OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){return false;} -if(this.drawing){this.cancel();} -this.destroyFeature();if(this.layer.map!=null){this.layer.destroy(false);} -this.layer=null;return true;},destroyFeature:function(){if(this.layer){this.layer.destroyFeatures();} -this.point=null;},finalize:function(cancel){var key=cancel?"cancel":"done";this.drawing=false;this.mouseDown=false;this.lastDown=null;this.lastUp=null;this.callback(key,[this.geometryClone()]);if(cancel||!this.persist){this.destroyFeature();}},cancel:function(){this.finalize(true);},click:function(evt){OpenLayers.Event.stop(evt);return false;},dblclick:function(evt){OpenLayers.Event.stop(evt);return false;},modifyFeature:function(pixel){var lonlat=this.map.getLonLatFromPixel(pixel);this.point.geometry.x=lonlat.lon;this.point.geometry.y=lonlat.lat;this.callback("modify",[this.point.geometry,this.point]);this.point.geometry.clearBounds();this.drawFeature();},drawFeature:function(){this.layer.drawFeature(this.point,this.style);},getGeometry:function(){var geometry=this.point&&this.point.geometry;if(geometry&&this.multi){geometry=new OpenLayers.Geometry.MultiPoint([geometry]);} -return geometry;},geometryClone:function(){var geom=this.getGeometry();return geom&&geom.clone();},mousedown:function(evt){if(!this.checkModifiers(evt)){return true;} -if(this.lastDown&&this.lastDown.equals(evt.xy)){return true;} -this.drawing=true;if(this.lastDown==null){if(this.persist){this.destroyFeature();} -this.createFeature(evt.xy);}else{this.modifyFeature(evt.xy);} -this.lastDown=evt.xy;return false;},mousemove:function(evt){if(this.drawing){this.modifyFeature(evt.xy);} -return true;},mouseup:function(evt){if(this.drawing){this.finalize();return false;}else{return true;}},CLASS_NAME:"OpenLayers.Handler.Point"});OpenLayers.Layer.GML=OpenLayers.Class(OpenLayers.Layer.Vector,{loaded:false,format:null,formatOptions:null,initialize:function(name,url,options){var newArguments=[];newArguments.push(name,options);OpenLayers.Layer.Vector.prototype.initialize.apply(this,newArguments);this.url=url;},setVisibility:function(visibility,noEvent){OpenLayers.Layer.Vector.prototype.setVisibility.apply(this,arguments);if(this.visibility&&!this.loaded){this.loadGML();}},moveTo:function(bounds,zoomChanged,minor){OpenLayers.Layer.Vector.prototype.moveTo.apply(this,arguments);if(this.visibility&&!this.loaded){this.loadGML();}},loadGML:function(){if(!this.loaded){this.events.triggerEvent("loadstart");OpenLayers.Request.GET({url:this.url,success:this.requestSuccess,failure:this.requestFailure,scope:this});this.loaded=true;}},setUrl:function(url){this.url=url;this.destroyFeatures();this.loaded=false;this.loadGML();},requestSuccess:function(request){var doc=request.responseXML;if(!doc||!doc.documentElement){doc=request.responseText;} -var options={};OpenLayers.Util.extend(options,this.formatOptions);if(this.map&&!this.projection.equals(this.map.getProjectionObject())){options.externalProjection=this.projection;options.internalProjection=this.map.getProjectionObject();} -var gml=this.format?new this.format(options):new OpenLayers.Format.GML(options);this.addFeatures(gml.read(doc));this.events.triggerEvent("loadend");},requestFailure:function(request){OpenLayers.Console.userError(OpenLayers.i18n("errorLoadingGML",{'url':this.url}));this.events.triggerEvent("loadend");},CLASS_NAME:"OpenLayers.Layer.GML"});OpenLayers.Layer.PointTrack=OpenLayers.Class(OpenLayers.Layer.Vector,{dataFrom:null,initialize:function(name,options){OpenLayers.Layer.Vector.prototype.initialize.apply(this,arguments);},addNodes:function(pointFeatures){if(pointFeatures.length<2){OpenLayers.Console.error("At least two point features have to be added to create"+"a line from");return;} -var lines=new Array(pointFeatures.length-1);var pointFeature,startPoint,endPoint;for(var i=0,len=pointFeatures.length;i<len;i++){pointFeature=pointFeatures[i];endPoint=pointFeature.geometry;if(!endPoint){var lonlat=pointFeature.lonlat;endPoint=new OpenLayers.Geometry.Point(lonlat.lon,lonlat.lat);}else if(endPoint.CLASS_NAME!="OpenLayers.Geometry.Point"){OpenLayers.Console.error("Only features with point geometries are supported.");return;} -if(i>0){var attributes=(this.dataFrom!=null)?(pointFeatures[i+this.dataFrom].data||pointFeatures[i+this.dataFrom].attributes):null;var line=new OpenLayers.Geometry.LineString([startPoint,endPoint]);lines[i-1]=new OpenLayers.Feature.Vector(line,attributes);} -startPoint=endPoint;} -this.addFeatures(lines);},CLASS_NAME:"OpenLayers.Layer.PointTrack"});OpenLayers.Layer.PointTrack.dataFrom={'SOURCE_NODE':-1,'TARGET_NODE':0};OpenLayers.Layer.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.Layer.WFS=OpenLayers.Class(OpenLayers.Layer.Vector,OpenLayers.Layer.Markers,{isBaseLayer:false,tile:null,ratio:2,DEFAULT_PARAMS:{service:"WFS",version:"1.0.0",request:"GetFeature"},featureClass:null,format:null,formatObject:null,formatOptions:null,vectorMode:true,encodeBBOX:false,extractAttributes:false,initialize:function(name,url,params,options){if(options==undefined){options={};} -if(options.featureClass||!OpenLayers.Layer.Vector||!OpenLayers.Feature.Vector){this.vectorMode=false;} -params=OpenLayers.Util.upperCaseObject(params);OpenLayers.Util.extend(options,{'reportError':false});var newArguments=[];newArguments.push(name,options);OpenLayers.Layer.Vector.prototype.initialize.apply(this,newArguments);if(!this.renderer||!this.vectorMode){this.vectorMode=false;if(!options.featureClass){options.featureClass=OpenLayers.Feature.WFS;} -OpenLayers.Layer.Markers.prototype.initialize.apply(this,newArguments);} -if(this.params&&this.params.typename&&!this.options.typename){this.options.typename=this.params.typename;} -if(!this.options.geometry_column){this.options.geometry_column="the_geom";} -this.params=OpenLayers.Util.applyDefaults(params,OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS));this.url=url;},destroy:function(){if(this.vectorMode){OpenLayers.Layer.Vector.prototype.destroy.apply(this,arguments);}else{OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);} -if(this.tile){this.tile.destroy();} -this.tile=null;this.ratio=null;this.featureClass=null;this.format=null;if(this.formatObject&&this.formatObject.destroy){this.formatObject.destroy();} -this.formatObject=null;this.formatOptions=null;this.vectorMode=null;this.encodeBBOX=null;this.extractAttributes=null;},setMap:function(map){if(this.vectorMode){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);var options={'extractAttributes':this.extractAttributes};OpenLayers.Util.extend(options,this.formatOptions);if(this.map&&!this.projection.equals(this.map.getProjectionObject())){options.externalProjection=this.projection;options.internalProjection=this.map.getProjectionObject();} -this.formatObject=this.format?new this.format(options):new OpenLayers.Format.GML(options);}else{OpenLayers.Layer.Markers.prototype.setMap.apply(this,arguments);}},moveTo:function(bounds,zoomChanged,dragging){if(this.vectorMode){OpenLayers.Layer.Vector.prototype.moveTo.apply(this,arguments);}else{OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);} -if(dragging){return false;} -if(zoomChanged){if(this.vectorMode){this.renderer.clear();}} -if(this.options.minZoomLevel){OpenLayers.Console.warn(OpenLayers.i18n('minZoomLevelError'));if(this.map.getZoom()<this.options.minZoomLevel){return null;}} -if(bounds==null){bounds=this.map.getExtent();} -var firstRendering=(this.tile==null);var outOfBounds=(!firstRendering&&!this.tile.bounds.containsBounds(bounds));if(zoomChanged||firstRendering||(!dragging&&outOfBounds)){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 tileSize=this.map.getSize();tileSize.w=tileSize.w*this.ratio;tileSize.h=tileSize.h*this.ratio;var ul=new OpenLayers.LonLat(tileBounds.left,tileBounds.top);var pos=this.map.getLayerPxFromLonLat(ul);var url=this.getFullRequestString();var params=null;var filter=this.params.filter||this.params.FILTER;if(filter){params={FILTER:filter};} -else{params={BBOX:this.encodeBBOX?tileBounds.toBBOX():tileBounds.toArray()};} -if(this.map&&!this.projection.equals(this.map.getProjectionObject())){var projectedBounds=tileBounds.clone();projectedBounds.transform(this.map.getProjectionObject(),this.projection);if(!filter){params.BBOX=this.encodeBBOX?projectedBounds.toBBOX():projectedBounds.toArray();}} -url+="&"+OpenLayers.Util.getParameterString(params);if(!this.tile){this.tile=new OpenLayers.Tile.WFS(this,pos,tileBounds,url,tileSize);this.addTileMonitoringHooks(this.tile);this.tile.draw();}else{if(this.vectorMode){this.destroyFeatures();this.renderer.clear();}else{this.clearMarkers();} -this.removeTileMonitoringHooks(this.tile);this.tile.destroy();this.tile=null;this.tile=new OpenLayers.Tile.WFS(this,pos,tileBounds,url,tileSize);this.addTileMonitoringHooks(this.tile);this.tile.draw();}}},addTileMonitoringHooks:function(tile){tile.onLoadStart=function(){if(this==this.layer.tile){this.layer.events.triggerEvent("loadstart");}};tile.events.register("loadstart",tile,tile.onLoadStart);tile.onLoadEnd=function(){if(this==this.layer.tile){this.layer.events.triggerEvent("tileloaded");this.layer.events.triggerEvent("loadend");}};tile.events.register("loadend",tile,tile.onLoadEnd);tile.events.register("unload",tile,tile.onLoadEnd);},removeTileMonitoringHooks:function(tile){tile.unload();tile.events.un({"loadstart":tile.onLoadStart,"loadend":tile.onLoadEnd,"unload":tile.onLoadEnd,scope:tile});},onMapResize:function(){if(this.vectorMode){OpenLayers.Layer.Vector.prototype.onMapResize.apply(this,arguments);}else{OpenLayers.Layer.Markers.prototype.onMapResize.apply(this,arguments);}},display:function(){if(this.vectorMode){OpenLayers.Layer.Vector.prototype.display.apply(this,arguments);}else{OpenLayers.Layer.Markers.prototype.display.apply(this,arguments);}},mergeNewParams:function(newParams){var upperParams=OpenLayers.Util.upperCaseObject(newParams);var newArguments=[upperParams];return OpenLayers.Layer.HTTPRequest.prototype.mergeNewParams.apply(this,newArguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.WFS(this.name,this.url,this.params,this.getOptions());} -if(this.vectorMode){obj=OpenLayers.Layer.Vector.prototype.clone.apply(this,[obj]);}else{obj=OpenLayers.Layer.Markers.prototype.clone.apply(this,[obj]);} -return obj;},getFullRequestString:function(newParams,altUrl){var projectionCode=this.projection.getCode()||this.map.getProjection();this.params.SRS=(projectionCode=="none")?null:projectionCode;return OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this,arguments);},commit:function(){if(!this.writer){var options={};if(this.map&&!this.projection.equals(this.map.getProjectionObject())){options.externalProjection=this.projection;options.internalProjection=this.map.getProjectionObject();} -this.writer=new OpenLayers.Format.WFS(options,this);} -var data=this.writer.write(this.features);OpenLayers.Request.POST({url:this.url,data:data,success:this.commitSuccess,failure:this.commitFailure,scope:this});},commitSuccess:function(request){var response=request.responseText;if(response.indexOf('SUCCESS')!=-1){this.commitReport(OpenLayers.i18n("commitSuccess",{'response':response}));for(var i=0;i<this.features.length;i++){this.features[i].state=null;}}else if(response.indexOf('FAILED')!=-1||response.indexOf('Exception')!=-1){this.commitReport(OpenLayers.i18n("commitFailed",{'response':response}));}},commitFailure:function(request){},commitReport:function(string,response){OpenLayers.Console.userError(string);},refresh:function(){if(this.tile){if(this.vectorMode){this.renderer.clear();this.features.length=0;}else{this.clearMarkers();this.markers.length=0;} -this.tile.draw();}},getDataExtent:function(){var extent;if(this.vectorMode){extent=OpenLayers.Layer.Vector.prototype.getDataExtent.apply(this);}else{extent=OpenLayers.Layer.Markers.prototype.getDataExtent.apply(this);} -return extent;},setOpacity:function(opacity){if(this.vectorMode){OpenLayers.Layer.Vector.prototype.setOpacity.apply(this,[opacity]);}else{OpenLayers.Layer.Markers.prototype.setOpacity.apply(this,[opacity]);}},CLASS_NAME:"OpenLayers.Layer.WFS"});OpenLayers.Protocol.HTTP=OpenLayers.Class(OpenLayers.Protocol,{url:null,headers:null,params:null,callback:null,scope:null,readWithPOST:false,wildcarded:false,initialize:function(options){options=options||{};this.params={};this.headers={};OpenLayers.Protocol.prototype.initialize.apply(this,arguments);},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=OpenLayers.Util.applyDefaults(options,this.options);options.params=OpenLayers.Util.applyDefaults(options.params,this.options.params);if(options.filter){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);},filterToParams: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();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=OpenLayers.Protocol.HTTP.COMP_TYPE_TO_OP_STR[filter.type];if(op!==undefined){var value=filter.value;if(filter.type==OpenLayers.Filter.Comparison.LIKE){value=this.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.filterToParams(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;},regex2value:function(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;},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"});(function(){var o=OpenLayers.Protocol.HTTP.COMP_TYPE_TO_OP_STR={};o[OpenLayers.Filter.Comparison.EQUAL_TO]="eq";o[OpenLayers.Filter.Comparison.NOT_EQUAL_TO]="ne";o[OpenLayers.Filter.Comparison.LESS_THAN]="lt";o[OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO]="lte";o[OpenLayers.Filter.Comparison.GREATER_THAN]="gt";o[OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO]="gte";o[OpenLayers.Filter.Comparison.LIKE]="ilike";})();OpenLayers.Strategy.BBOX=OpenLayers.Class(OpenLayers.Strategy,{bounds:null,resolution:null,ratio:2,resFactor:null,response:null,initialize:function(options){OpenLayers.Strategy.prototype.initialize.apply(this,[options]);},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});} -return activated;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){this.layer.events.un({"moveend":this.update,scope:this});this.layer.events.un({"refresh":this.update,scope:this});} -return deactivated;},update:function(options){var mapBounds=this.getMapBounds();if((options&&options.force)||this.invalidBounds(mapBounds)){this.calculateBounds(mapBounds);this.resolution=this.layer.map.getResolution();this.triggerRead();}},getMapBounds:function(){var bounds=this.layer.map.getExtent();if(!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(){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({filter:this.createFilter(),callback:this.merge,scope:this});},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.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(layers instanceof Array){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;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.Format.Filter.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ogc:"http://www.opengis.net/ogc",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"ogc",schemaLocation:null,initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){var obj={};this.readers.ogc["Filter"].apply(this,[data,obj]);return obj.filter;},readers:{"ogc":{"Filter":function(node,parent){var obj={fids:[],filters:[]};this.readChildNodes(node,obj);if(obj.fids.length>0){parent.filter=new OpenLayers.Filter.FeatureId({fids:obj.fids});}else if(obj.filters.length>0){parent.filter=obj.filters[0];}},"FeatureId":function(node,obj){var fid=node.getAttribute("fid");if(fid){obj.fids.push(fid);}},"And":function(node,obj){var filter=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND});this.readChildNodes(node,filter);obj.filters.push(filter);},"Or":function(node,obj){var filter=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.OR});this.readChildNodes(node,filter);obj.filters.push(filter);},"Not":function(node,obj){var filter=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.NOT});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsLessThan":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LESS_THAN});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsGreaterThan":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.GREATER_THAN});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsLessThanOrEqualTo":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsGreaterThanOrEqualTo":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsBetween":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.BETWEEN});this.readChildNodes(node,filter);obj.filters.push(filter);},"Literal":function(node,obj){obj.value=OpenLayers.String.numericIf(this.getChildValue(node));},"PropertyName":function(node,filter){filter.property=this.getChildValue(node);},"LowerBoundary":function(node,filter){filter.lowerBoundary=OpenLayers.String.numericIf(this.readOgcExpression(node));},"UpperBoundary":function(node,filter){filter.upperBoundary=OpenLayers.String.numericIf(this.readOgcExpression(node));},"Intersects":function(node,obj){this.readSpatial(node,obj,OpenLayers.Filter.Spatial.INTERSECTS);},"Within":function(node,obj){this.readSpatial(node,obj,OpenLayers.Filter.Spatial.WITHIN);},"Contains":function(node,obj){this.readSpatial(node,obj,OpenLayers.Filter.Spatial.CONTAINS);},"DWithin":function(node,obj){this.readSpatial(node,obj,OpenLayers.Filter.Spatial.DWITHIN);},"Distance":function(node,obj){obj.distance=parseInt(this.getChildValue(node));obj.distanceUnits=node.getAttribute("units");}}},readSpatial:function(node,obj,type){var filter=new OpenLayers.Filter.Spatial({type:type});this.readChildNodes(node,filter);filter.value=filter.components[0];delete filter.components;obj.filters.push(filter);},readOgcExpression:function(node){var obj={};this.readChildNodes(node,obj);var value=obj.value;if(value===undefined){value=this.getChildValue(node);} -return value;},write:function(filter){return this.writers.ogc["Filter"].apply(this,[filter]);},writers:{"ogc":{"Filter":function(filter){var node=this.createElementNSPlus("ogc:Filter");var sub=filter.CLASS_NAME.split(".").pop();if(sub=="FeatureId"){for(var i=0;i<filter.fids.length;++i){this.writeNode("FeatureId",filter.fids[i],node);}}else{this.writeNode(this.getFilterType(filter),filter,node);} -return node;},"FeatureId":function(fid){return this.createElementNSPlus("ogc:FeatureId",{attributes:{fid:fid}});},"And":function(filter){var node=this.createElementNSPlus("ogc:And");var childFilter;for(var i=0;i<filter.filters.length;++i){childFilter=filter.filters[i];this.writeNode(this.getFilterType(childFilter),childFilter,node);} -return node;},"Or":function(filter){var node=this.createElementNSPlus("ogc:Or");var childFilter;for(var i=0;i<filter.filters.length;++i){childFilter=filter.filters[i];this.writeNode(this.getFilterType(childFilter),childFilter,node);} -return node;},"Not":function(filter){var node=this.createElementNSPlus("ogc:Not");var childFilter=filter.filters[0];this.writeNode(this.getFilterType(childFilter),childFilter,node);return node;},"PropertyIsLessThan":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsLessThan");this.writeNode("PropertyName",filter,node);this.writeNode("Literal",filter.value,node);return node;},"PropertyIsGreaterThan":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsGreaterThan");this.writeNode("PropertyName",filter,node);this.writeNode("Literal",filter.value,node);return node;},"PropertyIsLessThanOrEqualTo":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsLessThanOrEqualTo");this.writeNode("PropertyName",filter,node);this.writeNode("Literal",filter.value,node);return node;},"PropertyIsGreaterThanOrEqualTo":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsGreaterThanOrEqualTo");this.writeNode("PropertyName",filter,node);this.writeNode("Literal",filter.value,node);return node;},"PropertyIsBetween":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsBetween");this.writeNode("PropertyName",filter,node);this.writeNode("LowerBoundary",filter,node);this.writeNode("UpperBoundary",filter,node);return node;},"PropertyName":function(filter){return this.createElementNSPlus("ogc:PropertyName",{value:filter.property});},"Literal":function(value){return this.createElementNSPlus("ogc:Literal",{value:value});},"LowerBoundary":function(filter){var node=this.createElementNSPlus("ogc:LowerBoundary");this.writeNode("Literal",filter.lowerBoundary,node);return node;},"UpperBoundary":function(filter){var node=this.createElementNSPlus("ogc:UpperBoundary");this.writeNode("Literal",filter.upperBoundary,node);return node;},"INTERSECTS":function(filter){return this.writeSpatial(filter,"Intersects");},"WITHIN":function(filter){return this.writeSpatial(filter,"Within");},"CONTAINS":function(filter){return this.writeSpatial(filter,"Contains");},"DWITHIN":function(filter){var node=this.writeSpatial(filter,"DWithin");this.writeNode("Distance",filter,node);return node;},"Distance":function(filter){return this.createElementNSPlus("ogc:Distance",{attributes:{units:filter.distanceUnits},value:filter.distance});}}},getFilterType:function(filter){var filterType=this.filterMap[filter.type];if(!filterType){throw"Filter writing not supported for rule type: "+filter.type;} -return filterType;},filterMap:{"&&":"And","||":"Or","!":"Not","==":"PropertyIsEqualTo","!=":"PropertyIsNotEqualTo","<":"PropertyIsLessThan",">":"PropertyIsGreaterThan","<=":"PropertyIsLessThanOrEqualTo",">=":"PropertyIsGreaterThanOrEqualTo","..":"PropertyIsBetween","~":"PropertyIsLike","BBOX":"BBOX","DWITHIN":"DWITHIN","WITHIN":"WITHIN","CONTAINS":"CONTAINS","INTERSECTS":"INTERSECTS"},CLASS_NAME:"OpenLayers.Format.Filter.v1"});OpenLayers.Geometry.Curve=OpenLayers.Class(OpenLayers.Geometry.MultiPoint,{componentTypes:["OpenLayers.Geometry.Point"],initialize:function(points){OpenLayers.Geometry.MultiPoint.prototype.initialize.apply(this,arguments);},getLength:function(){var length=0.0;if(this.components&&(this.components.length>1)){for(var i=1,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.Layer.Text=OpenLayers.Class(OpenLayers.Layer.Markers,{location:null,features:null,formatOptions:null,selectedFeature:null,initialize:function(name,options){OpenLayers.Layer.Markers.prototype.initialize.apply(this,arguments);this.features=new Array();},destroy:function(){OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);this.clearFeatures();this.features=null;},loadText:function(){if(!this.loaded){if(this.location!=null){var onFail=function(e){this.events.triggerEvent("loadend");};this.events.triggerEvent("loadstart");OpenLayers.Request.GET({url:this.location,success:this.parseData,failure:onFail,scope:this});this.loaded=true;}}},moveTo:function(bounds,zoomChanged,minor){OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);if(this.visibility&&!this.loaded){this.loadText();}},parseData:function(ajaxRequest){var text=ajaxRequest.responseText;var options={};OpenLayers.Util.extend(options,this.formatOptions);if(this.map&&!this.projection.equals(this.map.getProjectionObject())){options.externalProjection=this.projection;options.internalProjection=this.map.getProjectionObject();} -var parser=new OpenLayers.Format.Text(options);var features=parser.read(text);for(var i=0,len=features.length;i<len;i++){var data={};var feature=features[i];var location;var iconSize,iconOffset;location=new OpenLayers.LonLat(feature.geometry.x,feature.geometry.y);if(feature.style.graphicWidth&&feature.style.graphicHeight){iconSize=new OpenLayers.Size(feature.style.graphicWidth,feature.style.graphicHeight);} -if(feature.style.graphicXOffset!==undefined&&feature.style.graphicYOffset!==undefined){iconOffset=new OpenLayers.Pixel(feature.style.graphicXOffset,feature.style.graphicYOffset);} -if(feature.style.externalGraphic!=null){data.icon=new OpenLayers.Icon(feature.style.externalGraphic,iconSize,iconOffset);}else{data.icon=OpenLayers.Marker.defaultIcon();if(iconSize!=null){data.icon.setSize(iconSize);}} -if((feature.attributes.title!=null)&&(feature.attributes.description!=null)){data['popupContentHTML']='<h2>'+feature.attributes.title+'</h2>'+'<p>'+feature.attributes.description+'</p>';} -data['overflow']=feature.attributes.overflow||"auto";var markerFeature=new OpenLayers.Feature(this,location,data);this.features.push(markerFeature);var marker=markerFeature.createMarker();if((feature.attributes.title!=null)&&(feature.attributes.description!=null)){marker.events.register('click',markerFeature,this.markerClick);} -this.addMarker(marker);} -this.events.triggerEvent("loadend");},markerClick:function(evt){var sameMarkerClicked=(this==this.layer.selectedFeature);this.layer.selectedFeature=(!sameMarkerClicked)?this:null;for(var i=0,len=this.layer.map.popups.length;i<len;i++){this.layer.map.removePopup(this.layer.map.popups[i]);} -if(!sameMarkerClicked){this.layer.map.addPopup(this.createPopup());} -OpenLayers.Event.stop(evt);},clearFeatures:function(){if(this.features!=null){while(this.features.length>0){var feature=this.features[0];OpenLayers.Util.removeItem(this.features,feature);feature.destroy();}}},CLASS_NAME:"OpenLayers.Layer.Text"});OpenLayers.Control.ModifyFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,clickout:true,toggle:true,standalone:false,layer:null,feature:null,vertices:null,virtualVertices:null,selectControl:null,dragControl:null,handlers:null,deleteCodes:null,virtualStyle:null,mode:null,modified:false,radiusHandle:null,dragHandle:null,onModificationStart:function(){},onModification:function(){},onModificationEnd:function(){},initialize:function(layer,options){this.layer=layer;this.vertices=[];this.virtualVertices=[];this.virtualStyle=OpenLayers.Util.extend({},this.layer.style||this.layer.styleMap.createSymbolizer());this.virtualStyle.fillOpacity=0.3;this.virtualStyle.strokeOpacity=0.3;this.deleteCodes=[46,68];this.mode=OpenLayers.Control.ModifyFeature.RESHAPE;OpenLayers.Control.prototype.initialize.apply(this,[options]);if(!(this.deleteCodes instanceof Array)){this.deleteCodes=[this.deleteCodes];} -var control=this;var selectOptions={geometryTypes:this.geometryTypes,clickout:this.clickout,toggle:this.toggle,onBeforeSelect:this.beforeSelectFeature,onSelect:this.selectFeature,onUnselect:this.unselectFeature,scope:this};if(this.standalone===false){this.selectControl=new OpenLayers.Control.SelectFeature(layer,selectOptions);} -var dragOptions={geometryTypes:["OpenLayers.Geometry.Point"],snappingOptions:this.snappingOptions,onStart:function(feature,pixel){control.dragStart.apply(control,[feature,pixel]);},onDrag:function(feature,pixel){control.dragVertex.apply(control,[feature,pixel]);},onComplete:function(feature){control.dragComplete.apply(control,[feature]);},featureCallbacks:{over:function(feature){if(control.standalone!==true||feature._sketch||control.feature===feature){control.dragControl.overFeature.apply(control.dragControl,[feature]);}}}};this.dragControl=new OpenLayers.Control.DragFeature(layer,dragOptions);var keyboardOptions={keydown:this.handleKeypress};this.handlers={keyboard:new OpenLayers.Handler.Keyboard(this,keyboardOptions)};},destroy:function(){this.layer=null;this.standalone||this.selectControl.destroy();this.dragControl.destroy();OpenLayers.Control.prototype.destroy.apply(this,[]);},activate:function(){return((this.standalone||this.selectControl.activate())&&this.handlers.keyboard.activate()&&OpenLayers.Control.prototype.activate.apply(this,arguments));},deactivate:function(){var deactivated=false;if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){this.layer.removeFeatures(this.vertices,{silent:true});this.layer.removeFeatures(this.virtualVertices,{silent:true});this.vertices=[];this.dragControl.deactivate();var feature=this.feature;var valid=feature&&feature.geometry&&feature.layer;if(this.standalone===false){if(valid){this.selectControl.unselect.apply(this.selectControl,[feature]);} -this.selectControl.deactivate();}else{if(valid){this.unselectFeature(feature);}} -this.handlers.keyboard.deactivate();deactivated=true;} -return deactivated;},beforeSelectFeature:function(feature){return this.layer.events.triggerEvent("beforefeaturemodified",{feature:feature});},selectFeature:function(feature){this.feature=feature;this.modified=false;this.resetVertices();this.dragControl.activate();this.onModificationStart(this.feature);},unselectFeature:function(feature){this.layer.removeFeatures(this.vertices,{silent:true});this.vertices=[];this.layer.destroyFeatures(this.virtualVertices,{silent:true});this.virtualVertices=[];if(this.dragHandle){this.layer.destroyFeatures([this.dragHandle],{silent:true});delete this.dragHandle;} -if(this.radiusHandle){this.layer.destroyFeatures([this.radiusHandle],{silent:true});delete this.radiusHandle;} -this.feature=null;this.dragControl.deactivate();this.onModificationEnd(feature);this.layer.events.triggerEvent("afterfeaturemodified",{feature:feature,modified:this.modified});this.modified=false;},dragStart:function(feature,pixel){if(feature!=this.feature&&!feature.geometry.parent&&feature!=this.dragHandle&&feature!=this.radiusHandle){if(this.standalone===false&&this.feature){this.selectControl.clickFeature.apply(this.selectControl,[this.feature]);} -if(this.geometryTypes==null||OpenLayers.Util.indexOf(this.geometryTypes,feature.geometry.CLASS_NAME)!=-1){this.standalone||this.selectControl.clickFeature.apply(this.selectControl,[feature]);this.dragControl.overFeature.apply(this.dragControl,[feature]);this.dragControl.lastPixel=pixel;this.dragControl.handlers.drag.started=true;this.dragControl.handlers.drag.start=pixel;this.dragControl.handlers.drag.last=pixel;}}},dragVertex:function(vertex,pixel){this.modified=true;if(this.feature.geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){if(this.feature!=vertex){this.feature=vertex;} -this.layer.events.triggerEvent("vertexmodified",{vertex:vertex.geometry,feature:this.feature,pixel:pixel});}else{if(vertex._index){vertex.geometry.parent.addComponent(vertex.geometry,vertex._index);delete vertex._index;OpenLayers.Util.removeItem(this.virtualVertices,vertex);this.vertices.push(vertex);}else if(vertex==this.dragHandle){this.layer.removeFeatures(this.vertices,{silent:true});this.vertices=[];if(this.radiusHandle){this.layer.destroyFeatures([this.radiusHandle],{silent:true});this.radiusHandle=null;}}else if(vertex!==this.radiusHandle){this.layer.events.triggerEvent("vertexmodified",{vertex:vertex.geometry,feature:this.feature,pixel:pixel});} -if(this.virtualVertices.length>0){this.layer.destroyFeatures(this.virtualVertices,{silent:true});this.virtualVertices=[];} -this.layer.drawFeature(this.feature,this.standalone?undefined:this.selectControl.renderIntent);} -this.layer.drawFeature(vertex);},dragComplete:function(vertex){this.resetVertices();this.setFeatureState();this.onModification(this.feature);this.layer.events.triggerEvent("featuremodified",{feature:this.feature});},setFeatureState:function(){if(this.feature.state!=OpenLayers.State.INSERT&&this.feature.state!=OpenLayers.State.DELETE){this.feature.state=OpenLayers.State.UPDATE;}},resetVertices:function(){if(this.dragControl.feature){this.dragControl.outFeature(this.dragControl.feature);} -if(this.vertices.length>0){this.layer.removeFeatures(this.vertices,{silent:true});this.vertices=[];} -if(this.virtualVertices.length>0){this.layer.removeFeatures(this.virtualVertices,{silent:true});this.virtualVertices=[];} -if(this.dragHandle){this.layer.destroyFeatures([this.dragHandle],{silent:true});this.dragHandle=null;} -if(this.radiusHandle){this.layer.destroyFeatures([this.radiusHandle],{silent:true});this.radiusHandle=null;} -if(this.feature&&this.feature.geometry.CLASS_NAME!="OpenLayers.Geometry.Point"){if((this.mode&OpenLayers.Control.ModifyFeature.DRAG)){this.collectDragHandle();} -if((this.mode&(OpenLayers.Control.ModifyFeature.ROTATE|OpenLayers.Control.ModifyFeature.RESIZE))){this.collectRadiusHandle();} -if(this.mode&OpenLayers.Control.ModifyFeature.RESHAPE){if(!(this.mode&OpenLayers.Control.ModifyFeature.RESIZE)){this.collectVertices();}}}},handleKeypress:function(evt){var code=evt.keyCode;if(this.feature&&OpenLayers.Util.indexOf(this.deleteCodes,code)!=-1){var vertex=this.dragControl.feature;if(vertex&&OpenLayers.Util.indexOf(this.vertices,vertex)!=-1&&!this.dragControl.handlers.drag.dragging&&vertex.geometry.parent){vertex.geometry.parent.removeComponent(vertex.geometry);this.layer.drawFeature(this.feature,this.standalone?undefined:this.selectControl.renderIntent);this.resetVertices();this.setFeatureState();this.onModification(this.feature);this.layer.events.triggerEvent("featuremodified",{feature:this.feature});}}},collectVertices:function(){this.vertices=[];this.virtualVertices=[];var control=this;function collectComponentVertices(geometry){var i,vertex,component,len;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){vertex=new OpenLayers.Feature.Vector(geometry);vertex._sketch=true;control.vertices.push(vertex);}else{var numVert=geometry.components.length;if(geometry.CLASS_NAME=="OpenLayers.Geometry.LinearRing"){numVert-=1;} -for(i=0;i<numVert;++i){component=geometry.components[i];if(component.CLASS_NAME=="OpenLayers.Geometry.Point"){vertex=new OpenLayers.Feature.Vector(component);vertex._sketch=true;control.vertices.push(vertex);}else{collectComponentVertices(component);}} -if(geometry.CLASS_NAME!="OpenLayers.Geometry.MultiPoint"){for(i=0,len=geometry.components.length;i<len-1;++i){var prevVertex=geometry.components[i];var nextVertex=geometry.components[i+1];if(prevVertex.CLASS_NAME=="OpenLayers.Geometry.Point"&&nextVertex.CLASS_NAME=="OpenLayers.Geometry.Point"){var x=(prevVertex.x+nextVertex.x)/2;var y=(prevVertex.y+nextVertex.y)/2;var point=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(x,y),null,control.virtualStyle);point.geometry.parent=geometry;point._index=i+1;point._sketch=true;control.virtualVertices.push(point);}}}}} -collectComponentVertices.call(this,this.feature.geometry);this.layer.addFeatures(this.virtualVertices,{silent:true});this.layer.addFeatures(this.vertices,{silent:true});},collectDragHandle:function(){var geometry=this.feature.geometry;var center=geometry.getBounds().getCenterLonLat();var originGeometry=new OpenLayers.Geometry.Point(center.lon,center.lat);var origin=new OpenLayers.Feature.Vector(originGeometry);originGeometry.move=function(x,y){OpenLayers.Geometry.Point.prototype.move.call(this,x,y);geometry.move(x,y);};origin._sketch=true;this.dragHandle=origin;this.layer.addFeatures([this.dragHandle],{silent:true});},collectRadiusHandle:function(){var geometry=this.feature.geometry;var bounds=geometry.getBounds();var center=bounds.getCenterLonLat();var originGeometry=new OpenLayers.Geometry.Point(center.lon,center.lat);var radiusGeometry=new OpenLayers.Geometry.Point(bounds.right,bounds.bottom);var radius=new OpenLayers.Feature.Vector(radiusGeometry);var resize=(this.mode&OpenLayers.Control.ModifyFeature.RESIZE);var reshape=(this.mode&OpenLayers.Control.ModifyFeature.RESHAPE);var rotate=(this.mode&OpenLayers.Control.ModifyFeature.ROTATE);radiusGeometry.move=function(x,y){OpenLayers.Geometry.Point.prototype.move.call(this,x,y);var dx1=this.x-originGeometry.x;var dy1=this.y-originGeometry.y;var dx0=dx1-x;var dy0=dy1-y;if(rotate){var a0=Math.atan2(dy0,dx0);var a1=Math.atan2(dy1,dx1);var angle=a1-a0;angle*=180/Math.PI;geometry.rotate(angle,originGeometry);} -if(resize){var scale,ratio;if(reshape){scale=dy1/dy0;ratio=(dx1/dx0)/scale;}else{var l0=Math.sqrt((dx0*dx0)+(dy0*dy0));var l1=Math.sqrt((dx1*dx1)+(dy1*dy1));scale=l1/l0;} -geometry.resize(scale,originGeometry,ratio);}};radius._sketch=true;this.radiusHandle=radius;this.layer.addFeatures([this.radiusHandle],{silent:true});},setMap:function(map){this.standalone||this.selectControl.setMap(map);this.dragControl.setMap(map);OpenLayers.Control.prototype.setMap.apply(this,arguments);},CLASS_NAME:"OpenLayers.Control.ModifyFeature"});OpenLayers.Control.ModifyFeature.RESHAPE=1;OpenLayers.Control.ModifyFeature.RESIZE=2;OpenLayers.Control.ModifyFeature.ROTATE=4;OpenLayers.Control.ModifyFeature.DRAG=8;OpenLayers.Geometry.LineString=OpenLayers.Class(OpenLayers.Geometry.Curve,{initialize:function(points){OpenLayers.Geometry.Curve.prototype.initialize.apply(this,arguments);},removeComponent:function(point){if(this.components&&(this.components.length>2)){OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);}},intersects:function(geometry){var intersect=false;var type=geometry.CLASS_NAME;if(type=="OpenLayers.Geometry.LineString"||type=="OpenLayers.Geometry.LinearRing"||type=="OpenLayers.Geometry.Point"){var segs1=this.getSortedSegments();var segs2;if(type=="OpenLayers.Geometry.Point"){segs2=[{x1:geometry.x,y1:geometry.y,x2:geometry.x,y2:geometry.y}];}else{segs2=geometry.getSortedSegments();} -var seg1,seg1x1,seg1x2,seg1y1,seg1y2,seg2,seg2y1,seg2y2;outer:for(var i=0,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;},CLASS_NAME:"OpenLayers.Geometry.LineString"});OpenLayers.Control.TransformFeature=OpenLayers.Class(OpenLayers.Control,{EVENT_TYPES:["beforesetfeature","setfeature","beforetransform","transform","transformcomplete"],geometryTypes:null,layer:null,preserveAspectRatio:false,rotate:true,feature:null,renderIntent:"temporary",rotationHandleSymbolizer:null,box:null,center:null,scale:1,ratio:1,rotation:0,handles:null,rotationHandles:null,dragControl:null,initialize:function(layer,options){this.EVENT_TYPES=OpenLayers.Control.TransformFeature.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.prototype.initialize.apply(this,[options]);this.layer=layer;if(!this.rotationHandleSymbolizer){this.rotationHandleSymbolizer={stroke:false,pointRadius:10,fillOpacity:0,cursor:"pointer"};} -this.createBox();this.createControl();},activate:function(){var activated=false;if(OpenLayers.Control.prototype.activate.apply(this,arguments)){this.dragControl.activate();this.layer.addFeatures([this.box]);this.rotate&&this.layer.addFeatures(this.rotationHandles);this.layer.addFeatures(this.handles);activated=true;} -return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){this.layer.removeFeatures(this.handles);this.rotate&&this.layer.removeFeatures(this.rotationHandles);this.layer.removeFeatures([this.box]);this.dragControl.deactivate();deactivated=true;} -return deactivated;},setMap:function(map){this.dragControl.setMap(map);OpenLayers.Control.prototype.setMap.apply(this,arguments);},setFeature:function(feature,initialParams){initialParams=OpenLayers.Util.applyDefaults(initialParams,{rotation:0,scale:1,ratio:1});var evt={feature:feature};var oldRotation=this.rotation;var oldCenter=this.center;OpenLayers.Util.extend(this,initialParams);if(this.events.triggerEvent("beforesetfeature",evt)===false){return;} -this.feature=feature;this.activate();this._setfeature=true;var featureBounds=this.feature.geometry.getBounds();this.box.move(featureBounds.getCenterLonLat());this.box.geometry.rotate(-oldRotation,oldCenter);this._angle=0;var ll;if(this.rotation){var geom=feature.geometry.clone();geom.rotate(-this.rotation,this.center);var box=new OpenLayers.Feature.Vector(geom.getBounds().toGeometry());box.geometry.rotate(this.rotation,this.center);this.box.geometry.rotate(this.rotation,this.center);this.box.move(box.geometry.getBounds().getCenterLonLat());var llGeom=box.geometry.components[0].components[0];ll=llGeom.getBounds().getCenterLonLat();}else{ll=new OpenLayers.LonLat(featureBounds.left,featureBounds.bottom);} -this.handles[0].move(ll);delete this._setfeature;this.events.triggerEvent("setfeature",evt);},createBox:function(){var control=this;this.center=new OpenLayers.Geometry.Point(0,0);var box=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString([new OpenLayers.Geometry.Point(-1,-1),new OpenLayers.Geometry.Point(0,-1),new OpenLayers.Geometry.Point(1,-1),new OpenLayers.Geometry.Point(1,0),new OpenLayers.Geometry.Point(1,1),new OpenLayers.Geometry.Point(0,1),new OpenLayers.Geometry.Point(-1,1),new OpenLayers.Geometry.Point(-1,0),new OpenLayers.Geometry.Point(-1,-1)]),null,typeof this.renderIntent=="string"?null:this.renderIntent);box.geometry.move=function(x,y){control._moving=true;OpenLayers.Geometry.LineString.prototype.move.apply(this,arguments);control.center.move(x,y);delete control._moving;};var vertexMoveFn=function(x,y){OpenLayers.Geometry.Point.prototype.move.apply(this,arguments);this._rotationHandle&&this._rotationHandle.geometry.move(x,y);this._handle.geometry.move(x,y);};var vertexResizeFn=function(scale,center,ratio){OpenLayers.Geometry.Point.prototype.resize.apply(this,arguments);this._rotationHandle&&this._rotationHandle.geometry.resize(scale,center,ratio);this._handle.geometry.resize(scale,center,ratio);};var vertexRotateFn=function(angle,center){OpenLayers.Geometry.Point.prototype.rotate.apply(this,arguments);this._rotationHandle&&this._rotationHandle.geometry.rotate(angle,center);this._handle.geometry.rotate(angle,center);};var handleMoveFn=function(x,y){var oldX=this.x,oldY=this.y;OpenLayers.Geometry.Point.prototype.move.call(this,x,y);if(control._moving){return;} -var evt=control.dragControl.handlers.drag.evt;var preserveAspectRatio=!control._setfeature&&control.preserveAspectRatio;var reshape=!preserveAspectRatio&&!(evt&&evt.shiftKey);var oldGeom=new OpenLayers.Geometry.Point(oldX,oldY);var centerGeometry=control.center;this.rotate(-control.rotation,centerGeometry);oldGeom.rotate(-control.rotation,centerGeometry);var dx1=this.x-centerGeometry.x;var dy1=this.y-centerGeometry.y;var dx0=dx1-(this.x-oldGeom.x);var dy0=dy1-(this.y-oldGeom.y);this.x=oldX;this.y=oldY;var scale,ratio=1;if(reshape){scale=Math.abs(dy0)<0.00001?1:dy1/dy0;ratio=(Math.abs(dx0)<0.00001?1:(dx1/dx0))/scale;}else{var l0=Math.sqrt((dx0*dx0)+(dy0*dy0));var l1=Math.sqrt((dx1*dx1)+(dy1*dy1));scale=l1/l0;} -control._moving=true;control.box.geometry.rotate(-control.rotation,centerGeometry);delete control._moving;control.box.geometry.resize(scale,centerGeometry,ratio);control.box.geometry.rotate(control.rotation,centerGeometry);control.transformFeature({scale:scale,ratio:ratio});};var rotationHandleMoveFn=function(x,y){var oldX=this.x,oldY=this.y;OpenLayers.Geometry.Point.prototype.move.call(this,x,y);if(control._moving){return;} -var evt=control.dragControl.handlers.drag.evt;var constrain=(evt&&evt.shiftKey)?45:1;var centerGeometry=control.center;var dx1=this.x-centerGeometry.x;var dy1=this.y-centerGeometry.y;var dx0=dx1-x;var dy0=dy1-y;this.x=oldX;this.y=oldY;var a0=Math.atan2(dy0,dx0);var a1=Math.atan2(dy1,dx1);var angle=a1-a0;angle*=180/Math.PI;control._angle=(control._angle+angle)%360;var diff=control.rotation%constrain;if(Math.abs(control._angle)>=constrain||diff!==0){angle=Math.round(control._angle/constrain)*constrain- -diff;control._angle=0;control.box.geometry.rotate(angle,centerGeometry);control.transformFeature({rotation:angle});}};var handles=new Array(8);var rotationHandles=new Array(4);var geom,handle,rotationHandle;for(var i=0;i<8;++i){geom=box.geometry.components[i];handle=new OpenLayers.Feature.Vector(geom.clone(),null,typeof this.renderIntent=="string"?null:this.renderIntent);if(i%2==0){rotationHandle=new OpenLayers.Feature.Vector(geom.clone(),null,typeof this.rotationHandleSymbolizer=="string"?null:this.rotationHandleSymbolizer);rotationHandle.geometry.move=rotationHandleMoveFn;geom._rotationHandle=rotationHandle;rotationHandles[i/2]=rotationHandle;} -geom.move=vertexMoveFn;geom.resize=vertexResizeFn;geom.rotate=vertexRotateFn;handle.geometry.move=handleMoveFn;geom._handle=handle;handles[i]=handle;} -this.box=box;this.rotationHandles=rotationHandles;this.handles=handles;},createControl:function(){var control=this;this.dragControl=new OpenLayers.Control.DragFeature(this.layer,{documentDrag:true,moveFeature:function(pixel){if(this.feature===control.feature){this.feature=control.box;} -OpenLayers.Control.DragFeature.prototype.moveFeature.apply(this,arguments);},onDrag:function(feature,pixel){if(feature===control.box){control.transformFeature({center:control.center});control.drawHandles();}},onStart:function(feature,pixel){var eligible=!control.geometryTypes||OpenLayers.Util.indexOf(control.geometryTypes,feature.geometry.CLASS_NAME)!==-1;var i=OpenLayers.Util.indexOf(control.handles,feature);i+=OpenLayers.Util.indexOf(control.rotationHandles,feature);if(feature!==control.feature&&feature!==control.box&&i==-2&&eligible){control.setFeature(feature);}},onComplete:function(feature,pixel){control.events.triggerEvent("transformcomplete",{feature:control.feature});}});},drawHandles:function(){var layer=this.layer;for(var i=0;i<8;++i){if(this.rotate&&i%2===0){layer.drawFeature(this.rotationHandles[i/2],this.rotationHandleSymbolizer);} -layer.drawFeature(this.handles[i],this.renderIntent);}},transformFeature:function(mods){if(!this._setfeature){this.scale*=(mods.scale||1);this.ratio*=(mods.ratio||1);var oldRotation=this.rotation;this.rotation=(this.rotation+(mods.rotation||0))%360;if(this.events.triggerEvent("beforetransform",mods)!==false){var feature=this.feature;var geom=feature.geometry;var center=this.center;geom.rotate(-oldRotation,center);if(mods.scale||mods.ratio){geom.resize(mods.scale,center,mods.ratio);}else if(mods.center){feature.move(mods.center.getBounds().getCenterLonLat());} -geom.rotate(this.rotation,center);this.layer.drawFeature(feature);feature.toState(OpenLayers.State.UPDATE);this.events.triggerEvent("transform",mods);}} -this.layer.drawFeature(this.box,this.renderIntent);this.drawHandles();},destroy:function(){var geom;for(var i=0;i<8;++i){geom=this.box.geometry.components[i];geom._handle.destroy();geom._handle=null;geom._rotationHandle&&geom._rotationHandle.destroy();geom._rotationHandle=null;} -this.box.destroy();this.box=null;this.layer=null;this.dragControl.destroy();OpenLayers.Control.prototype.destroy.apply(this,arguments);},CLASS_NAME:"OpenLayers.Control.TransformFeature"});OpenLayers.Format.GPX=OpenLayers.Class(OpenLayers.Format.XML,{extractWaypoints:true,extractTracks:true,extractRoutes:true,extractAttributes:true,initialize:function(options){this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(doc){if(typeof doc=="string"){doc=OpenLayers.Format.XML.prototype.read.apply(this,[doc]);} -var features=[];if(this.extractTracks){var tracks=doc.getElementsByTagName("trk");for(var i=0,len=tracks.length;i<len;i++){var attrs={};if(this.extractAttributes){attrs=this.parseAttributes(tracks[i]);} -var segs=this.getElementsByTagNameNS(tracks[i],tracks[i].namespaceURI,"trkseg");for(var j=0,seglen=segs.length;j<seglen;j++){var track=this.extractSegment(segs[j],"trkpt");features.push(new OpenLayers.Feature.Vector(track,attrs));}}} -if(this.extractRoutes){var routes=doc.getElementsByTagName("rte");for(var k=0,klen=routes.length;k<klen;k++){var attrs={};if(this.extractAttributes){attrs=this.parseAttributes(routes[k]);} -var route=this.extractSegment(routes[k],"rtept");features.push(new OpenLayers.Feature.Vector(route,attrs));}} -if(this.extractWaypoints){var waypoints=doc.getElementsByTagName("wpt");for(var l=0,len=waypoints.length;l<len;l++){var attrs={};if(this.extractAttributes){attrs=this.parseAttributes(waypoints[l]);} -var wpt=new OpenLayers.Geometry.Point(waypoints[l].getAttribute("lon"),waypoints[l].getAttribute("lat"));features.push(new OpenLayers.Feature.Vector(wpt,attrs));}} -if(this.internalProjection&&this.externalProjection){for(var g=0,featLength=features.length;g<featLength;g++){features[g].geometry.transform(this.externalProjection,this.internalProjection);}} -return features;},extractSegment:function(segment,segmentType){var points=this.getElementsByTagNameNS(segment,segment.namespaceURI,segmentType);var point_features=[];for(var i=0,len=points.length;i<len;i++){point_features.push(new OpenLayers.Geometry.Point(points[i].getAttribute("lon"),points[i].getAttribute("lat")));} -return new OpenLayers.Geometry.LineString(point_features);},parseAttributes:function(node){var attributes={};var attrNode=node.firstChild;while(attrNode){if(attrNode.nodeType==1){var value=attrNode.firstChild;if(value.nodeType==3||value.nodeType==4){name=(attrNode.prefix)?attrNode.nodeName.split(":")[1]:attrNode.nodeName;if(name!="trkseg"&&name!="rtept"){attributes[name]=value.nodeValue;}}} -attrNode=attrNode.nextSibling;} -return attributes;},CLASS_NAME:"OpenLayers.Format.GPX"});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){if(this.components.length>4){this.components.pop();OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);var firstPoint=this.components[0];OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[firstPoint]);}},move:function(x,y){for(var i=0,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.Geometry.MultiLineString=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.LineString"],initialize:function(components){OpenLayers.Geometry.Collection.prototype.initialize.apply(this,arguments);},split:function(geometry,options){var results=null;var mutual=options&&options.mutual;var splits,sourceLine,sourceLines,sourceSplit,targetSplit;var sourceParts=[];var targetParts=[geometry];for(var i=0,len=this.components.length;i<len;++i){sourceLine=this.components[i];sourceSplit=false;for(var j=0;j<targetParts.length;++j){splits=sourceLine.split(targetParts[j],options);if(splits){if(mutual){sourceLines=splits[0];for(var k=0,klen=sourceLines.length;k<klen;++k){if(k===0&&sourceParts.length){sourceParts[sourceParts.length-1].addComponent(sourceLines[k]);}else{sourceParts.push(new OpenLayers.Geometry.MultiLineString([sourceLines[k]]));}} -sourceSplit=true;splits=splits[1];} -if(splits.length){splits.unshift(j,1);Array.prototype.splice.apply(targetParts,splits);break;}}} -if(!sourceSplit){if(sourceParts.length){sourceParts[sourceParts.length-1].addComponent(sourceLine.clone());}else{sourceParts=[new OpenLayers.Geometry.MultiLineString(sourceLine.clone())];}}} -if(sourceParts&&sourceParts.length>1){sourceSplit=true;}else{sourceParts=[];} -if(targetParts&&targetParts.length>1){targetSplit=true;}else{targetParts=[];} -if(sourceSplit||targetSplit){if(mutual){results=[sourceParts,targetParts];}else{results=targetParts;}} -return results;},splitWith:function(geometry,options){var results=null;var mutual=options&&options.mutual;var splits,targetLine,sourceLines,sourceSplit,targetSplit,sourceParts,targetParts;if(geometry instanceof OpenLayers.Geometry.LineString){targetParts=[];sourceParts=[geometry];for(var i=0,len=this.components.length;i<len;++i){targetSplit=false;targetLine=this.components[i];for(var j=0;j<sourceParts.length;++j){splits=sourceParts[j].split(targetLine,options);if(splits){if(mutual){sourceLines=splits[0];if(sourceLines.length){sourceLines.unshift(j,1);Array.prototype.splice.apply(sourceParts,sourceLines);j+=sourceLines.length-2;} -splits=splits[1];if(splits.length===0){splits=[targetLine.clone()];}} -for(var k=0,klen=splits.length;k<klen;++k){if(k===0&&targetParts.length){targetParts[targetParts.length-1].addComponent(splits[k]);}else{targetParts.push(new OpenLayers.Geometry.MultiLineString([splits[k]]));}} -targetSplit=true;}} -if(!targetSplit){if(targetParts.length){targetParts[targetParts.length-1].addComponent(targetLine.clone());}else{targetParts=[new OpenLayers.Geometry.MultiLineString([targetLine.clone()])];}}}}else{results=geometry.split(this);} -if(sourceParts&&sourceParts.length>1){sourceSplit=true;}else{sourceParts=[];} -if(targetParts&&targetParts.length>1){targetSplit=true;}else{targetParts=[];} -if(sourceSplit||targetSplit){if(mutual){results=[sourceParts,targetParts];}else{results=targetParts;}} -return results;},CLASS_NAME:"OpenLayers.Geometry.MultiLineString"});OpenLayers.Handler.Path=OpenLayers.Class(OpenLayers.Handler.Point,{line:null,freehand:false,freehandToggle:'shiftKey',initialize:function(control,callbacks,options){OpenLayers.Handler.Point.prototype.initialize.apply(this,arguments);},createFeature:function(pixel){var lonlat=this.control.map.getLonLatFromPixel(pixel);this.point=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(lonlat.lon,lonlat.lat));this.line=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString([this.point.geometry]));this.callback("create",[this.point.geometry,this.getSketch()]);this.point.geometry.clearBounds();this.layer.addFeatures([this.line,this.point],{silent:true});},destroyFeature:function(){OpenLayers.Handler.Point.prototype.destroyFeature.apply(this);this.line=null;},removePoint:function(){if(this.point){this.layer.removeFeatures([this.point]);}},addPoint:function(pixel){this.layer.removeFeatures([this.point]);var lonlat=this.control.map.getLonLatFromPixel(pixel);this.point=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(lonlat.lon,lonlat.lat));this.line.geometry.addComponent(this.point.geometry,this.line.geometry.components.length);this.callback("point",[this.point.geometry,this.getGeometry()]);this.callback("modify",[this.point.geometry,this.getSketch()]);this.drawFeature();},freehandMode:function(evt){return(this.freehandToggle&&evt[this.freehandToggle])?!this.freehand:this.freehand;},modifyFeature:function(pixel){var lonlat=this.control.map.getLonLatFromPixel(pixel);this.point.geometry.x=lonlat.lon;this.point.geometry.y=lonlat.lat;this.callback("modify",[this.point.geometry,this.getSketch()]);this.point.geometry.clearBounds();this.drawFeature();},drawFeature:function(){this.layer.drawFeature(this.line,this.style);this.layer.drawFeature(this.point,this.style);},getSketch:function(){return this.line;},getGeometry:function(){var geometry=this.line&&this.line.geometry;if(geometry&&this.multi){geometry=new OpenLayers.Geometry.MultiLineString([geometry]);} -return geometry;},mousedown:function(evt){if(this.lastDown&&this.lastDown.equals(evt.xy)){return false;} -if(this.lastDown==null){if(this.persist){this.destroyFeature();} -this.createFeature(evt.xy);}else if((this.lastUp==null)||!this.lastUp.equals(evt.xy)){this.addPoint(evt.xy);} -this.mouseDown=true;this.lastDown=evt.xy;this.drawing=true;return false;},mousemove:function(evt){if(this.drawing){if(this.mouseDown&&this.freehandMode(evt)){this.addPoint(evt.xy);}else{this.modifyFeature(evt.xy);}} -return true;},mouseup:function(evt){this.mouseDown=false;if(this.drawing){if(this.freehandMode(evt)){this.removePoint();this.finalize();}else{if(this.lastUp==null){this.addPoint(evt.xy);} -this.lastUp=evt.xy;} -return false;} -return true;},dblclick:function(evt){if(!this.freehandMode(evt)){var index=this.line.geometry.components.length-1;this.line.geometry.removeComponent(this.line.geometry.components[index]);this.removePoint();this.finalize();} -return false;},CLASS_NAME:"OpenLayers.Handler.Path"});OpenLayers.Control.Split=OpenLayers.Class(OpenLayers.Control,{EVENT_TYPES:["beforesplit","split","aftersplit"],layer:null,source:null,sourceOptions:null,tolerance:null,edge:true,deferDelete:false,mutual:true,targetFilter:null,sourceFilter:null,handler:null,initialize:function(options){Array.prototype.push.apply(this.EVENT_TYPES,OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.prototype.initialize.apply(this,[options]);this.options=options||{};if(this.options.source){this.setSource(this.options.source);}},setSource:function(layer){if(this.active){this.deactivate();if(this.handler){this.handler.destroy();delete this.handler;} -this.source=layer;this.activate();}else{this.source=layer;}},activate:function(){var activated=OpenLayers.Control.prototype.activate.call(this);if(activated){if(!this.source){if(!this.handler){this.handler=new OpenLayers.Handler.Path(this,{done:function(geometry){this.onSketchComplete({feature:new OpenLayers.Feature.Vector(geometry)});}},{layerOptions:this.sourceOptions});} -this.handler.activate();}else if(this.source.events){this.source.events.on({sketchcomplete:this.onSketchComplete,afterfeaturemodified:this.afterFeatureModified,scope:this});}} -return activated;},deactivate:function(){var deactivated=OpenLayers.Control.prototype.deactivate.call(this);if(deactivated){if(this.source&&this.source.events){this.layer.events.un({sketchcomplete:this.onSketchComplete,afterfeaturemodified:this.afterFeatureModified,scope:this});}} -return deactivated;},onSketchComplete:function(event){this.feature=null;return!this.considerSplit(event.feature);},afterFeatureModified:function(event){if(event.modified){var feature=event.feature;if(feature.geometry instanceof OpenLayers.Geometry.LineString||feature.geometry instanceof OpenLayers.Geometry.MultiLineString){this.feature=event.feature;this.considerSplit(event.feature);}}},removeByGeometry:function(features,geometry){for(var i=0,len=features.length;i<len;++i){if(features[i].geometry===geometry){features.splice(i,1);break;}}},isEligible:function(target){return(target.state!==OpenLayers.State.DELETE)&&(target.geometry instanceof OpenLayers.Geometry.LineString||target.geometry instanceof OpenLayers.Geometry.MultiLineString)&&(this.feature!==target)&&(!this.targetFilter||this.targetFilter.evaluate(target.attributes));},considerSplit:function(feature){var sourceSplit=false;var targetSplit=false;if(!this.sourceFilter||this.sourceFilter.evaluate(feature.attributes)){var features=this.layer&&this.layer.features||[];var target,results,proceed;var additions=[],removals=[];var mutual=(this.layer===this.source)&&this.mutual;var options={edge:this.edge,tolerance:this.tolerance,mutual:mutual};var sourceParts=[feature.geometry];var targetFeature,targetParts;var source,parts;for(var i=0,len=features.length;i<len;++i){targetFeature=features[i];if(this.isEligible(targetFeature)){targetParts=[targetFeature.geometry];for(var j=0;j<sourceParts.length;++j){source=sourceParts[j];for(var k=0;k<targetParts.length;++k){target=targetParts[k];if(source.getBounds().intersectsBounds(target.getBounds())){results=source.split(target,options);if(results){proceed=this.events.triggerEvent("beforesplit",{source:feature,target:targetFeature});if(proceed!==false){if(mutual){parts=results[0];if(parts.length>1){parts.unshift(j,1);Array.prototype.splice.apply(sourceParts,parts);j+=parts.length-3;} -results=results[1];} -if(results.length>1){results.unshift(k,1);Array.prototype.splice.apply(targetParts,results);k+=results.length-3;}}}}}} -if(targetParts&&targetParts.length>1){this.geomsToFeatures(targetFeature,targetParts);this.events.triggerEvent("split",{original:targetFeature,features:targetParts});Array.prototype.push.apply(additions,targetParts);removals.push(targetFeature);targetSplit=true;}}} -if(sourceParts&&sourceParts.length>1){this.geomsToFeatures(feature,sourceParts);this.events.triggerEvent("split",{original:feature,features:sourceParts});Array.prototype.push.apply(additions,sourceParts);removals.push(feature);sourceSplit=true;} -if(sourceSplit||targetSplit){if(this.deferDelete){var feat,destroys=[];for(var i=0,len=removals.length;i<len;++i){feat=removals[i];if(feat.state===OpenLayers.State.INSERT){destroys.push(feat);}else{feat.state=OpenLayers.State.DELETE;this.layer.drawFeature(feat);}} -this.layer.destroyFeatures(destroys,{silent:true});for(var i=0,len=additions.length;i<len;++i){additions[i].state=OpenLayers.State.INSERT;}}else{this.layer.destroyFeatures(removals,{silent:true});} -this.layer.addFeatures(additions,{silent:true});this.events.triggerEvent("aftersplit",{source:feature,features:additions});}} -return sourceSplit;},geomsToFeatures:function(feature,geoms){var clone=feature.clone();delete clone.geometry;var newFeature;for(var i=0,len=geoms.length;i<len;++i){newFeature=clone.clone();newFeature.geometry=geoms[i];newFeature.state=OpenLayers.State.INSERT;geoms[i]=newFeature;}},destroy:function(){if(this.active){this.deactivate();} -OpenLayers.Control.prototype.destroy.call(this);},CLASS_NAME:"OpenLayers.Control.Split"});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.Format.GeoRSS=OpenLayers.Class(OpenLayers.Format.XML,{rssns:"http://backend.userland.com/rss2",featureNS:"http://mapserver.gis.umn.edu/mapserver",georssns:"http://www.georss.org/georss",geons:"http://www.w3.org/2003/01/geo/wgs84_pos#",featureTitle:"Untitled",featureDescription:"No Description",gmlParser:null,xy:false,initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},createGeometryFromItem:function(item){var point=this.getElementsByTagNameNS(item,this.georssns,"point");var lat=this.getElementsByTagNameNS(item,this.geons,'lat');var lon=this.getElementsByTagNameNS(item,this.geons,'long');var line=this.getElementsByTagNameNS(item,this.georssns,"line");var polygon=this.getElementsByTagNameNS(item,this.georssns,"polygon");var where=this.getElementsByTagNameNS(item,this.georssns,"where");var box=this.getElementsByTagNameNS(item,this.georssns,"box");if(point.length>0||(lat.length>0&&lon.length>0)){var location;if(point.length>0){location=OpenLayers.String.trim(point[0].firstChild.nodeValue).split(/\s+/);if(location.length!=2){location=OpenLayers.String.trim(point[0].firstChild.nodeValue).split(/\s*,\s*/);}}else{location=[parseFloat(lat[0].firstChild.nodeValue),parseFloat(lon[0].firstChild.nodeValue)];} -var geometry=new OpenLayers.Geometry.Point(parseFloat(location[1]),parseFloat(location[0]));}else if(line.length>0){var coords=OpenLayers.String.trim(this.concatChildValues(line[0])).split(/\s+/);var components=[];var point;for(var i=0,len=coords.length;i<len;i+=2){point=new OpenLayers.Geometry.Point(parseFloat(coords[i+1]),parseFloat(coords[i]));components.push(point);} -geometry=new OpenLayers.Geometry.LineString(components);}else if(polygon.length>0){var coords=OpenLayers.String.trim(this.concatChildValues(polygon[0])).split(/\s+/);var components=[];var point;for(var i=0,len=coords.length;i<len;i+=2){point=new OpenLayers.Geometry.Point(parseFloat(coords[i+1]),parseFloat(coords[i]));components.push(point);} -geometry=new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(components)]);}else if(where.length>0){if(!this.gmlParser){this.gmlParser=new OpenLayers.Format.GML({'xy':this.xy});} -var feature=this.gmlParser.parseFeature(where[0]);geometry=feature.geometry;}else if(box.length>0){var coords=OpenLayers.String.trim(box[0].firstChild.nodeValue).split(/\s+/);var components=[];var point;if(coords.length>3){point=new OpenLayers.Geometry.Point(parseFloat(coords[1]),parseFloat(coords[0]));components.push(point);point=new OpenLayers.Geometry.Point(parseFloat(coords[1]),parseFloat(coords[2]));components.push(point);point=new OpenLayers.Geometry.Point(parseFloat(coords[3]),parseFloat(coords[2]));components.push(point);point=new OpenLayers.Geometry.Point(parseFloat(coords[3]),parseFloat(coords[0]));components.push(point);point=new OpenLayers.Geometry.Point(parseFloat(coords[1]),parseFloat(coords[0]));components.push(point);} -geometry=new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(components)]);} -if(geometry&&this.internalProjection&&this.externalProjection){geometry.transform(this.externalProjection,this.internalProjection);} -return geometry;},createFeatureFromItem:function(item){var geometry=this.createGeometryFromItem(item);var title=this.getChildValue(item,"*","title",this.featureTitle);var description=this.getChildValue(item,"*","description",this.getChildValue(item,"*","content",this.getChildValue(item,"*","summary",this.featureDescription)));var link=this.getChildValue(item,"*","link");if(!link){try{link=this.getElementsByTagNameNS(item,"*","link")[0].getAttribute("href");}catch(e){link=null;}} -var id=this.getChildValue(item,"*","id",null);var data={"title":title,"description":description,"link":link};var feature=new OpenLayers.Feature.Vector(geometry,data);feature.fid=id;return feature;},getChildValue:function(node,nsuri,name,def){var value;var eles=this.getElementsByTagNameNS(node,nsuri,name);if(eles&&eles[0]&&eles[0].firstChild&&eles[0].firstChild.nodeValue){value=eles[0].firstChild.nodeValue;}else{value=(def==undefined)?"":def;} -return value;},read:function(doc){if(typeof doc=="string"){doc=OpenLayers.Format.XML.prototype.read.apply(this,[doc]);} -var itemlist=null;itemlist=this.getElementsByTagNameNS(doc,'*','item');if(itemlist.length==0){itemlist=this.getElementsByTagNameNS(doc,'*','entry');} -var numItems=itemlist.length;var features=new Array(numItems);for(var i=0;i<numItems;i++){features[i]=this.createFeatureFromItem(itemlist[i]);} -return features;},write:function(features){var georss;if(features instanceof Array){georss=this.createElementNS(this.rssns,"rss");for(var i=0,len=features.length;i<len;i++){georss.appendChild(this.createFeatureXML(features[i]));}}else{georss=this.createFeatureXML(features);} -return OpenLayers.Format.XML.prototype.write.apply(this,[georss]);},createFeatureXML:function(feature){var geometryNode=this.buildGeometryNode(feature.geometry);var featureNode=this.createElementNS(this.rssns,"item");var titleNode=this.createElementNS(this.rssns,"title");titleNode.appendChild(this.createTextNode(feature.attributes.title?feature.attributes.title:""));var descNode=this.createElementNS(this.rssns,"description");descNode.appendChild(this.createTextNode(feature.attributes.description?feature.attributes.description:""));featureNode.appendChild(titleNode);featureNode.appendChild(descNode);if(feature.attributes.link){var linkNode=this.createElementNS(this.rssns,"link");linkNode.appendChild(this.createTextNode(feature.attributes.link));featureNode.appendChild(linkNode);} -for(var attr in feature.attributes){if(attr=="link"||attr=="title"||attr=="description"){continue;} -var attrText=this.createTextNode(feature.attributes[attr]);var nodename=attr;if(attr.search(":")!=-1){nodename=attr.split(":")[1];} -var attrContainer=this.createElementNS(this.featureNS,"feature:"+nodename);attrContainer.appendChild(attrText);featureNode.appendChild(attrContainer);} -featureNode.appendChild(geometryNode);return featureNode;},buildGeometryNode:function(geometry){if(this.internalProjection&&this.externalProjection){geometry=geometry.clone();geometry.transform(this.internalProjection,this.externalProjection);} -var node;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Polygon"){node=this.createElementNS(this.georssns,'georss:polygon');node.appendChild(this.buildCoordinatesNode(geometry.components[0]));} -else if(geometry.CLASS_NAME=="OpenLayers.Geometry.LineString"){node=this.createElementNS(this.georssns,'georss:line');node.appendChild(this.buildCoordinatesNode(geometry));} -else if(geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){node=this.createElementNS(this.georssns,'georss:point');node.appendChild(this.buildCoordinatesNode(geometry));}else{throw"Couldn't parse "+geometry.CLASS_NAME;} -return node;},buildCoordinatesNode:function(geometry){var points=null;if(geometry.components){points=geometry.components;} -var path;if(points){var numPoints=points.length;var parts=new Array(numPoints);for(var i=0;i<numPoints;i++){parts[i]=points[i].y+" "+points[i].x;} -path=parts.join(" ");}else{path=geometry.y+" "+geometry.x;} -return this.createTextNode(path);},CLASS_NAME:"OpenLayers.Format.GeoRSS"});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,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(!(features instanceof Array)){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){if(this.internalProjection&&this.externalProjection){geometry=geometry.clone();geometry.transform(this.internalProjection,this.externalProjection);} -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]=point.x+","+point.y;} -path=parts.join(" ");}else{path=geometry.x+","+geometry.y;} -var txtNode=this.createTextNode(path);coordinatesNode.appendChild(txtNode);return coordinatesNode;},CLASS_NAME:"OpenLayers.Format.KML"});OpenLayers.Format.OSM=OpenLayers.Class(OpenLayers.Format.XML,{checkTags:false,interestingTagsExclude:null,areaTags:null,initialize:function(options){var layer_defaults={'interestingTagsExclude':['source','source_ref','source:ref','history','attribution','created_by'],'areaTags':['area','building','leisure','tourism','ruins','historic','landuse','military','natural','sport']};layer_defaults=OpenLayers.Util.extend(layer_defaults,options);var interesting={};for(var i=0;i<layer_defaults.interestingTagsExclude.length;i++){interesting[layer_defaults.interestingTagsExclude[i]]=true;} -layer_defaults.interestingTagsExclude=interesting;var area={};for(var i=0;i<layer_defaults.areaTags.length;i++){area[layer_defaults.areaTags[i]]=true;} -layer_defaults.areaTags=area;this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[layer_defaults]);},read:function(doc){if(typeof doc=="string"){doc=OpenLayers.Format.XML.prototype.read.apply(this,[doc]);} -var nodes=this.getNodes(doc);var ways=this.getWays(doc);var feat_list=new Array(ways.length);for(var i=0;i<ways.length;i++){var point_list=new Array(ways[i].nodes.length);var poly=this.isWayArea(ways[i])?1:0;for(var j=0;j<ways[i].nodes.length;j++){var node=nodes[ways[i].nodes[j]];var point=new OpenLayers.Geometry.Point(node.lon,node.lat);point.osm_id=parseInt(ways[i].nodes[j]);point_list[j]=point;node.used=true;} -var geometry=null;if(poly){geometry=new OpenLayers.Geometry.Polygon(new OpenLayers.Geometry.LinearRing(point_list));}else{geometry=new OpenLayers.Geometry.LineString(point_list);} -if(this.internalProjection&&this.externalProjection){geometry.transform(this.externalProjection,this.internalProjection);} -var feat=new OpenLayers.Feature.Vector(geometry,ways[i].tags);feat.osm_id=parseInt(ways[i].id);feat.fid="way."+feat.osm_id;feat_list[i]=feat;} -for(var node_id in nodes){var node=nodes[node_id];if(!node.used||this.checkTags){var tags=null;if(this.checkTags){var result=this.getTags(node.node,true);if(node.used&&!result[1]){continue;} -tags=result[0];}else{tags=this.getTags(node.node);} -var feat=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(node['lon'],node['lat']),tags);if(this.internalProjection&&this.externalProjection){feat.geometry.transform(this.externalProjection,this.internalProjection);} -feat.osm_id=parseInt(node_id);feat.fid="node."+feat.osm_id;feat_list.push(feat);} -node.node=null;} -return feat_list;},getNodes:function(doc){var node_list=doc.getElementsByTagName("node");var nodes={};for(var i=0;i<node_list.length;i++){var node=node_list[i];var id=node.getAttribute("id");nodes[id]={'lat':node.getAttribute("lat"),'lon':node.getAttribute("lon"),'node':node};} -return nodes;},getWays:function(doc){var way_list=doc.getElementsByTagName("way");var return_ways=[];for(var i=0;i<way_list.length;i++){var way=way_list[i];var way_object={id:way.getAttribute("id")};way_object.tags=this.getTags(way);var node_list=way.getElementsByTagName("nd");way_object.nodes=new Array(node_list.length);for(var j=0;j<node_list.length;j++){way_object.nodes[j]=node_list[j].getAttribute("ref");} -return_ways.push(way_object);} -return return_ways;},getTags:function(dom_node,interesting_tags){var tag_list=dom_node.getElementsByTagName("tag");var tags={};var interesting=false;for(var j=0;j<tag_list.length;j++){var key=tag_list[j].getAttribute("k");tags[key]=tag_list[j].getAttribute("v");if(interesting_tags){if(!this.interestingTagsExclude[key]){interesting=true;}}} -return interesting_tags?[tags,interesting]:tags;},isWayArea:function(way){var poly_shaped=false;var poly_tags=false;if(way.nodes[0]==way.nodes[way.nodes.length-1]){poly_shaped=true;} -if(this.checkTags){for(var key in way.tags){if(this.areaTags[key]){poly_tags=true;break;}}} -return poly_shaped&&(this.checkTags?poly_tags:true);},write:function(features){if(!(features instanceof Array)){features=[features];} -this.osm_id=1;this.created_nodes={};var root_node=this.createElementNS(null,"osm");root_node.setAttribute("version","0.5");root_node.setAttribute("generator","OpenLayers "+OpenLayers.VERSION_NUMBER);for(var i=features.length-1;i>=0;i--){var nodes=this.createFeatureNodes(features[i]);for(var j=0;j<nodes.length;j++){root_node.appendChild(nodes[j]);}} -return OpenLayers.Format.XML.prototype.write.apply(this,[root_node]);},createFeatureNodes:function(feature){var nodes=[];var className=feature.geometry.CLASS_NAME;var type=className.substring(className.lastIndexOf(".")+1);type=type.toLowerCase();var builder=this.createXML[type];if(builder){nodes=builder.apply(this,[feature]);} -return nodes;},createXML:{'point':function(point){var id=null;var geometry=point.geometry?point.geometry:point;var already_exists=false;if(point.osm_id){id=point.osm_id;if(this.created_nodes[id]){already_exists=true;}}else{id=-this.osm_id;this.osm_id++;} -if(already_exists){node=this.created_nodes[id];}else{var node=this.createElementNS(null,"node");} -this.created_nodes[id]=node;node.setAttribute("id",id);node.setAttribute("lon",geometry.x);node.setAttribute("lat",geometry.y);if(point.attributes){this.serializeTags(point,node);} -this.setState(point,node);return already_exists?[]:[node];},linestring:function(feature){var nodes=[];var geometry=feature.geometry;if(feature.osm_id){id=feature.osm_id;}else{id=-this.osm_id;this.osm_id++;} -var way=this.createElementNS(null,"way");way.setAttribute("id",id);for(var i=0;i<geometry.components.length;i++){var node=this.createXML['point'].apply(this,[geometry.components[i]]);if(node.length){node=node[0];var node_ref=node.getAttribute("id");nodes.push(node);}else{node_ref=geometry.components[i].osm_id;node=this.created_nodes[node_ref];} -this.setState(feature,node);var nd_dom=this.createElementNS(null,"nd");nd_dom.setAttribute("ref",node_ref);way.appendChild(nd_dom);} -this.serializeTags(feature,way);nodes.push(way);return nodes;},polygon:function(feature){var attrs=OpenLayers.Util.extend({'area':'yes'},feature.attributes);var feat=new OpenLayers.Feature.Vector(feature.geometry.components[0],attrs);feat.osm_id=feature.osm_id;return this.createXML['linestring'].apply(this,[feat]);}},serializeTags:function(feature,node){for(var key in feature.attributes){var tag=this.createElementNS(null,"tag");tag.setAttribute("k",key);tag.setAttribute("v",feature.attributes[key]);node.appendChild(tag);}},setState:function(feature,node){if(feature.state){var state=null;switch(feature.state){case OpenLayers.State.UPDATE:state="modify";case OpenLayers.State.DELETE:state="delete";} -if(state){node.setAttribute("action",state);}}},CLASS_NAME:"OpenLayers.Format.OSM"});OpenLayers.Geometry.MultiPolygon=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.Polygon"],initialize:function(components){OpenLayers.Geometry.Collection.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Geometry.MultiPolygon"});OpenLayers.Handler.Polygon=OpenLayers.Class(OpenLayers.Handler.Path,{polygon:null,initialize:function(control,callbacks,options){OpenLayers.Handler.Path.prototype.initialize.apply(this,arguments);},createFeature:function(pixel){var lonlat=this.control.map.getLonLatFromPixel(pixel);this.point=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(lonlat.lon,lonlat.lat));this.line=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LinearRing([this.point.geometry]));this.polygon=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([this.line.geometry]));this.callback("create",[this.point.geometry,this.getSketch()]);this.point.geometry.clearBounds();this.layer.addFeatures([this.polygon,this.point],{silent:true});},destroyFeature:function(){OpenLayers.Handler.Path.prototype.destroyFeature.apply(this);this.polygon=null;},drawFeature:function(){this.layer.drawFeature(this.polygon,this.style);this.layer.drawFeature(this.point,this.style);},getSketch:function(){return this.polygon;},getGeometry:function(){var geometry=this.polygon&&this.polygon.geometry;if(geometry&&this.multi){geometry=new OpenLayers.Geometry.MultiPolygon([geometry]);} -return geometry;},dblclick:function(evt){if(!this.freehandMode(evt)){var index=this.line.geometry.components.length-2;this.line.geometry.removeComponent(this.line.geometry.components[index]);this.removePoint();this.finalize();} -return false;},CLASS_NAME:"OpenLayers.Handler.Polygon"});OpenLayers.Control.EditingToolbar=OpenLayers.Class(OpenLayers.Control.Panel,{initialize:function(layer,options){OpenLayers.Control.Panel.prototype.initialize.apply(this,[options]);this.addControls([new OpenLayers.Control.Navigation()]);var controls=[new OpenLayers.Control.DrawFeature(layer,OpenLayers.Handler.Point,{'displayClass':'olControlDrawFeaturePoint'}),new OpenLayers.Control.DrawFeature(layer,OpenLayers.Handler.Path,{'displayClass':'olControlDrawFeaturePath'}),new OpenLayers.Control.DrawFeature(layer,OpenLayers.Handler.Polygon,{'displayClass':'olControlDrawFeaturePolygon'})];this.addControls(controls);},draw:function(){var div=OpenLayers.Control.Panel.prototype.draw.apply(this,arguments);this.activateControl(this.controls[0]);return div;},CLASS_NAME:"OpenLayers.Control.EditingToolbar"});OpenLayers.Control.SLDSelect=OpenLayers.Class(OpenLayers.Control,{EVENT_TYPES:["selected"],clearOnDeactivate:false,layers:null,callbacks:null,selectionSymbolizer:{'Polygon':{fillColor:'#FF0000',stroke:false},'Line':{strokeColor:'#FF0000',strokeWidth:2},'Point':{graphicName:'square',fillColor:'#FF0000',pointRadius:5}},layerOptions:null,handlerOptions:null,sketchStyle:null,wfsCache:{},layerCache:{},initialize:function(handler,options){this.EVENT_TYPES=OpenLayers.Control.SLDSelect.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.prototype.initialize.apply(this,[options]);this.callbacks=OpenLayers.Util.extend({done:this.select,click:this.select},this.callbacks);this.handlerOptions=this.handlerOptions||{};this.layerOptions=OpenLayers.Util.applyDefaults(this.layerOptions,{displayInLayerSwitcher:false});if(this.sketchStyle){this.handlerOptions.layerOptions=OpenLayers.Util.applyDefaults(this.handlerOptions.layerOptions,{styleMap:new OpenLayers.StyleMap({"default":this.sketchStyle})});} -this.handler=new handler(this,this.callbacks,this.handlerOptions);},destroy:function(){for(var key in this.layerCache){delete this.layerCache[key];} -for(var key in this.wfsCache){delete this.wfsCache[key];} -OpenLayers.Control.prototype.destroy.apply(this,arguments);},coupleLayerVisiblity:function(evt){this.setVisibility(evt.object.getVisibility());},createSelectionLayer:function(source){var selectionLayer;if(!this.layerCache[source.id]){selectionLayer=new OpenLayers.Layer.WMS.Post(source.name,source.url,source.params,OpenLayers.Util.applyDefaults(this.layerOptions,source.getOptions()));this.layerCache[source.id]=selectionLayer;if(this.layerOptions.displayInLayerSwitcher===false){source.events.on({"visibilitychanged":this.coupleLayerVisiblity,scope:selectionLayer});} -this.map.addLayer(selectionLayer);}else{selectionLayer=this.layerCache[source.id];} -return selectionLayer;},createSLD:function(layer,filters,geometryAttributes){var sld={version:"1.0.0",namedLayers:{}};var layerNames=[layer.params.LAYERS].join(",").split(",");for(var i=0,len=layerNames.length;i<len;i++){var name=layerNames[i];sld.namedLayers[name]={name:name,userStyles:[]};var symbolizer=this.selectionSymbolizer;var geometryAttribute=geometryAttributes[i];if(geometryAttribute.type.indexOf('Polygon')>=0){symbolizer={Polygon:this.selectionSymbolizer['Polygon']};}else if(geometryAttribute.type.indexOf('LineString')>=0){symbolizer={Line:this.selectionSymbolizer['Line']};}else if(geometryAttribute.type.indexOf('Point')>=0){symbolizer={Point:this.selectionSymbolizer['Point']};} -var filter=filters[i];sld.namedLayers[name].userStyles.push({name:'default',rules:[new OpenLayers.Rule({symbolizer:symbolizer,filter:filter,maxScaleDenominator:layer.options.minScale})]});} -return new OpenLayers.Format.SLD().write(sld);},parseDescribeLayer:function(request){var format=new OpenLayers.Format.WMSDescribeLayer();var doc=request.responseXML;if(!doc||!doc.documentElement){doc=request.responseText;} -var describeLayer=format.read(doc);var typeNames=[];var url=null;for(var i=0,len=describeLayer.length;i<len;i++){if(describeLayer[i].owsType=="WFS"){typeNames.push(describeLayer[i].typeName);url=describeLayer[i].owsURL;}} -var options={url:url,params:{SERVICE:"WFS",TYPENAME:typeNames.toString(),REQUEST:"DescribeFeatureType",VERSION:"1.0.0"},callback:function(request){var format=new OpenLayers.Format.WFSDescribeFeatureType();var doc=request.responseXML;if(!doc||!doc.documentElement){doc=request.responseText;} -var describeFeatureType=format.read(doc);this.control.wfsCache[this.layer.id]=describeFeatureType;this.control._queue&&this.control.applySelection();},scope:this};OpenLayers.Request.GET(options);},getGeometryAttributes:function(layer){var result=[];var cache=this.wfsCache[layer.id];for(var i=0,len=cache.featureTypes.length;i<len;i++){var typeName=cache.featureTypes[i];var properties=typeName.properties;for(var j=0,lenj=properties.length;j<lenj;j++){var property=properties[j];var type=property.type;if((type.indexOf('LineString')>=0)||(type.indexOf('GeometryAssociationType')>=0)||(type.indexOf('GeometryPropertyType')>=0)||(type.indexOf('Point')>=0)||(type.indexOf('Polygon')>=0)){result.push(property);}}} -return result;},activate:function(){var activated=OpenLayers.Control.prototype.activate.call(this);if(activated){for(var i=0,len=this.layers.length;i<len;i++){var layer=this.layers[i];if(layer&&!this.wfsCache[layer.id]){var options={url:layer.url,params:{SERVICE:"WMS",VERSION:layer.params.VERSION,LAYERS:layer.params.LAYERS,REQUEST:"DescribeLayer"},callback:this.parseDescribeLayer,scope:{layer:layer,control:this}};OpenLayers.Request.GET(options);}}} -return activated;},deactivate:function(){var deactivated=OpenLayers.Control.prototype.deactivate.call(this);if(deactivated){for(var i=0,len=this.layers.length;i<len;i++){var layer=this.layers[i];if(layer&&this.clearOnDeactivate===true){var layerCache=this.layerCache;var selectionLayer=layerCache[layer.id];if(selectionLayer){layer.events.un({"visibilitychanged":this.coupleLayerVisiblity,scope:selectionLayer});selectionLayer.destroy();delete layerCache[layer.id];}}}} -return deactivated;},setLayers:function(layers){if(this.active){this.deactivate();this.layers=layers;this.activate();}else{this.layers=layers;}},createFilter:function(geometryAttribute,geometry){var filter=null;if(this.handler instanceof OpenLayers.Handler.RegularPolygon){if(this.handler.irregular===true){filter=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,property:geometryAttribute.name,value:geometry.getBounds()});}else{filter=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:geometryAttribute.name,value:geometry});}}else if(this.handler instanceof OpenLayers.Handler.Polygon){filter=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:geometryAttribute.name,value:geometry});}else if(this.handler instanceof OpenLayers.Handler.Path){if(geometryAttribute.type.indexOf('Point')>=0){filter=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,property:geometryAttribute.name,distance:this.map.getExtent().getWidth()*0.01,distanceUnits:this.map.getUnits(),value:geometry});}else{filter=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:geometryAttribute.name,value:geometry});}}else if(this.handler instanceof OpenLayers.Handler.Click){if(geometryAttribute.type.indexOf('Polygon')>=0){filter=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:geometryAttribute.name,value:geometry});}else{filter=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,property:geometryAttribute.name,distance:this.map.getExtent().getWidth()*0.01,distanceUnits:this.map.getUnits(),value:geometry});}} -return filter;},select:function(geometry){this._queue=function(){for(var i=0,len=this.layers.length;i<len;i++){var layer=this.layers[i];var geometryAttributes=this.getGeometryAttributes(layer);var filters=[];for(var j=0,lenj=geometryAttributes.length;j<lenj;j++){var geometryAttribute=geometryAttributes[j];if(geometryAttribute!==null){if(!(geometry instanceof OpenLayers.Geometry)){var point=this.map.getLonLatFromPixel(geometry.xy);geometry=new OpenLayers.Geometry.Point(point.lon,point.lat);} -var filter=this.createFilter(geometryAttribute,geometry);if(filter!==null){filters.push(filter);}}} -var selectionLayer=this.createSelectionLayer(layer);var sld=this.createSLD(layer,filters,geometryAttributes);this.events.triggerEvent("selected",{layer:layer,filters:filters});selectionLayer.mergeNewParams({SLD_BODY:sld});delete this._queue;}};this.applySelection();},applySelection:function(){var canApply=true;for(var i=0,len=this.layers.length;i<len;i++){if(!this.wfsCache[this.layers[i].id]){canApply=false;break;}} -canApply&&this._queue.call(this);},CLASS_NAME:"OpenLayers.Control.SLDSelect"});OpenLayers.Format.ArcXML=OpenLayers.Class(OpenLayers.Format.XML,{fontStyleKeys:['antialiasing','blockout','font','fontcolor','fontsize','fontstyle','glowing','interval','outline','printmode','shadow','transparency'],request:null,response:null,initialize:function(options){this.request=new OpenLayers.Format.ArcXML.Request();this.response=new OpenLayers.Format.ArcXML.Response();if(options){if(options.requesttype=="feature"){this.request.get_image=null;var qry=this.request.get_feature.query;this.addCoordSys(qry.featurecoordsys,options.featureCoordSys);this.addCoordSys(qry.filtercoordsys,options.filterCoordSys);if(options.polygon){qry.isspatial=true;qry.spatialfilter.polygon=options.polygon;}else if(options.envelope){qry.isspatial=true;qry.spatialfilter.envelope={minx:0,miny:0,maxx:0,maxy:0};this.parseEnvelope(qry.spatialfilter.envelope,options.envelope);}}else if(options.requesttype=="image"){this.request.get_feature=null;var props=this.request.get_image.properties;this.parseEnvelope(props.envelope,options.envelope);this.addLayers(props.layerlist,options.layers);this.addImageSize(props.imagesize,options.tileSize);this.addCoordSys(props.featurecoordsys,options.featureCoordSys);this.addCoordSys(props.filtercoordsys,options.filterCoordSys);}else{this.request=null;}} -OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},parseEnvelope:function(env,arr){if(arr&&arr.length==4){env.minx=arr[0];env.miny=arr[1];env.maxx=arr[2];env.maxy=arr[3];}},addLayers:function(ll,lyrs){for(var lind=0,len=lyrs.length;lind<len;lind++){ll.push(lyrs[lind]);}},addImageSize:function(imsize,olsize){if(olsize!==null){imsize.width=olsize.w;imsize.height=olsize.h;imsize.printwidth=olsize.w;imsize.printheight=olsize.h;}},addCoordSys:function(featOrFilt,fsys){if(typeof fsys=="string"){featOrFilt.id=parseInt(fsys);featOrFilt.string=fsys;} -else if(typeof fsys=="object"&&fsys.proj!==null){featOrFilt.id=fsys.proj.srsProjNumber;featOrFilt.string=fsys.proj.srsCode;}else{featOrFilt=fsys;}},iserror:function(data){var ret=null;if(!data){ret=(this.response.error!=='');}else{data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);var errorNodes=data.documentElement.getElementsByTagName("ERROR");ret=(errorNodes!==null&&errorNodes.length>0);} -return ret;},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -var arcNode=null;if(data&&data.documentElement){if(data.documentElement.nodeName=="ARCXML"){arcNode=data.documentElement;}else{arcNode=data.documentElement.getElementsByTagName("ARCXML")[0];}} -if(!arcNode||arcNode.firstChild.nodeName==='parsererror'){var error,source;try{error=data.firstChild.nodeValue;source=data.firstChild.childNodes[1].firstChild.nodeValue;}catch(err){} -throw{message:"Error parsing the ArcXML request",error:error,source:source};} -var response=this.parseResponse(arcNode);return response;},write:function(request){if(!request){request=this.request;} -var root=this.createElementNS("","ARCXML");root.setAttribute("version","1.1");var reqElem=this.createElementNS("","REQUEST");if(request.get_image!=null){var getElem=this.createElementNS("","GET_IMAGE");reqElem.appendChild(getElem);var propElem=this.createElementNS("","PROPERTIES");getElem.appendChild(propElem);var props=request.get_image.properties;if(props.featurecoordsys!=null){var feat=this.createElementNS("","FEATURECOORDSYS");propElem.appendChild(feat);if(props.featurecoordsys.id===0){feat.setAttribute("string",props.featurecoordsys['string']);} -else{feat.setAttribute("id",props.featurecoordsys.id);}} -if(props.filtercoordsys!=null){var filt=this.createElementNS("","FILTERCOORDSYS");propElem.appendChild(filt);if(props.filtercoordsys.id===0){filt.setAttribute("string",props.filtercoordsys.string);} -else{filt.setAttribute("id",props.filtercoordsys.id);}} -if(props.envelope!=null){var env=this.createElementNS("","ENVELOPE");propElem.appendChild(env);env.setAttribute("minx",props.envelope.minx);env.setAttribute("miny",props.envelope.miny);env.setAttribute("maxx",props.envelope.maxx);env.setAttribute("maxy",props.envelope.maxy);} -var imagesz=this.createElementNS("","IMAGESIZE");propElem.appendChild(imagesz);imagesz.setAttribute("height",props.imagesize.height);imagesz.setAttribute("width",props.imagesize.width);if(props.imagesize.height!=props.imagesize.printheight||props.imagesize.width!=props.imagesize.printwidth){imagesz.setAttribute("printheight",props.imagesize.printheight);imagesz.setArrtibute("printwidth",props.imagesize.printwidth);} -if(props.background!=null){var backgrnd=this.createElementNS("","BACKGROUND");propElem.appendChild(backgrnd);backgrnd.setAttribute("color",props.background.color.r+","+ -props.background.color.g+","+ -props.background.color.b);if(props.background.transcolor!==null){backgrnd.setAttribute("transcolor",props.background.transcolor.r+","+ -props.background.transcolor.g+","+ -props.background.transcolor.b);}} -if(props.layerlist!=null&&props.layerlist.length>0){var layerlst=this.createElementNS("","LAYERLIST");propElem.appendChild(layerlst);for(var ld=0;ld<props.layerlist.length;ld++){var ldef=this.createElementNS("","LAYERDEF");layerlst.appendChild(ldef);ldef.setAttribute("id",props.layerlist[ld].id);ldef.setAttribute("visible",props.layerlist[ld].visible);if(typeof props.layerlist[ld].query=="object"){var query=props.layerlist[ld].query;if(query.where.length<0){continue;} -var queryElem=null;if(typeof query.spatialfilter=="boolean"&&query.spatialfilter){queryElem=this.createElementNS("","SPATIALQUERY");} -else{queryElem=this.createElementNS("","QUERY");} -queryElem.setAttribute("where",query.where);if(typeof query.accuracy=="number"&&query.accuracy>0){queryElem.setAttribute("accuracy",query.accuracy);} -if(typeof query.featurelimit=="number"&&query.featurelimit<2000){queryElem.setAttribute("featurelimit",query.featurelimit);} -if(typeof query.subfields=="string"&&query.subfields!="#ALL#"){queryElem.setAttribute("subfields",query.subfields);} -if(typeof query.joinexpression=="string"&&query.joinexpression.length>0){queryElem.setAttribute("joinexpression",query.joinexpression);} -if(typeof query.jointables=="string"&&query.jointables.length>0){queryElem.setAttribute("jointables",query.jointables);} -ldef.appendChild(queryElem);} -if(typeof props.layerlist[ld].renderer=="object"){this.addRenderer(ldef,props.layerlist[ld].renderer);}}}}else if(request.get_feature!=null){var getElem=this.createElementNS("","GET_FEATURES");getElem.setAttribute("outputmode","newxml");getElem.setAttribute("checkesc","true");if(request.get_feature.geometry){getElem.setAttribute("geometry",request.get_feature.geometry);} -else{getElem.setAttribute("geometry","false");} -if(request.get_feature.compact){getElem.setAttribute("compact",request.get_feature.compact);} -if(request.get_feature.featurelimit=="number"){getElem.setAttribute("featurelimit",request.get_feature.featurelimit);} -getElem.setAttribute("globalenvelope","true");reqElem.appendChild(getElem);if(request.get_feature.layer!=null&&request.get_feature.layer.length>0){var lyrElem=this.createElementNS("","LAYER");lyrElem.setAttribute("id",request.get_feature.layer);getElem.appendChild(lyrElem);} -var fquery=request.get_feature.query;if(fquery!=null){var qElem=null;if(fquery.isspatial){qElem=this.createElementNS("","SPATIALQUERY");}else{qElem=this.createElementNS("","QUERY");} -getElem.appendChild(qElem);if(typeof fquery.accuracy=="number"){qElem.setAttribute("accuracy",fquery.accuracy);} -if(fquery.featurecoordsys!=null){var fcsElem1=this.createElementNS("","FEATURECOORDSYS");if(fquery.featurecoordsys.id==0){fcsElem1.setAttribute("string",fquery.featurecoordsys.string);}else{fcsElem1.setAttribute("id",fquery.featurecoordsys.id);} -qElem.appendChild(fcsElem1);} -if(fquery.filtercoordsys!=null){var fcsElem2=this.createElementNS("","FILTERCOORDSYS");if(fquery.filtercoordsys.id===0){fcsElem2.setAttribute("string",fquery.filtercoordsys.string);}else{fcsElem2.setAttribute("id",fquery.filtercoordsys.id);} -qElem.appendChild(fcsElem2);} -if(fquery.buffer>0){var bufElem=this.createElementNS("","BUFFER");bufElem.setAttribute("distance",fquery.buffer);qElem.appendChild(bufElem);} -if(fquery.isspatial){var spfElem=this.createElementNS("","SPATIALFILTER");spfElem.setAttribute("relation",fquery.spatialfilter.relation);qElem.appendChild(spfElem);if(fquery.spatialfilter.envelope){var envElem=this.createElementNS("","ENVELOPE");envElem.setAttribute("minx",fquery.spatialfilter.envelope.minx);envElem.setAttribute("miny",fquery.spatialfilter.envelope.miny);envElem.setAttribute("maxx",fquery.spatialfilter.envelope.maxx);envElem.setAttribute("maxy",fquery.spatialfilter.envelope.maxy);spfElem.appendChild(envElem);}else if(typeof fquery.spatialfilter.polygon=="object"){spfElem.appendChild(this.writePolygonGeometry(fquery.spatialfilter.polygon));}} -if(fquery.where!=null&&fquery.where.length>0){qElem.setAttribute("where",fquery.where);}}} -root.appendChild(reqElem);return OpenLayers.Format.XML.prototype.write.apply(this,[root]);},addGroupRenderer:function(ldef,toprenderer){var topRelem=this.createElementNS("","GROUPRENDERER");ldef.appendChild(topRelem);for(var rind=0;rind<toprenderer.length;rind++){var renderer=toprenderer[rind];this.addRenderer(topRelem,renderer);}},addRenderer:function(topRelem,renderer){if(renderer instanceof Array){this.addGroupRenderer(topRelem,renderer);}else{var renderElem=this.createElementNS("",renderer.type.toUpperCase()+"RENDERER");topRelem.appendChild(renderElem);if(renderElem.tagName=="VALUEMAPRENDERER"){this.addValueMapRenderer(renderElem,renderer);}else if(renderElem.tagName=="VALUEMAPLABELRENDERER"){this.addValueMapLabelRenderer(renderElem,renderer);}else if(renderElem.tagName=="SIMPLELABELRENDERER"){this.addSimpleLabelRenderer(renderElem,renderer);}else if(renderElem.tagName=="SCALEDEPENDENTRENDERER"){this.addScaleDependentRenderer(renderElem,renderer);}}},addScaleDependentRenderer:function(renderElem,renderer){if(typeof renderer.lower=="string"||typeof renderer.lower=="number"){renderElem.setAttribute("lower",renderer.lower);} -if(typeof renderer.upper=="string"||typeof renderer.upper=="number"){renderElem.setAttribute("upper",renderer.upper);} -this.addRenderer(renderElem,renderer.renderer);},addValueMapLabelRenderer:function(renderElem,renderer){renderElem.setAttribute("lookupfield",renderer.lookupfield);renderElem.setAttribute("labelfield",renderer.labelfield);if(typeof renderer.exacts=="object"){for(var ext=0,extlen=renderer.exacts.length;ext<extlen;ext++){var exact=renderer.exacts[ext];var eelem=this.createElementNS("","EXACT");if(typeof exact.value=="string"){eelem.setAttribute("value",exact.value);} -if(typeof exact.label=="string"){eelem.setAttribute("label",exact.label);} -if(typeof exact.method=="string"){eelem.setAttribute("method",exact.method);} -renderElem.appendChild(eelem);if(typeof exact.symbol=="object"){var selem=null;if(exact.symbol.type=="text"){selem=this.createElementNS("","TEXTSYMBOL");} -if(selem!=null){var keys=this.fontStyleKeys;for(var i=0,len=keys.length;i<len;i++){var key=keys[i];if(exact.symbol[key]){selem.setAttribute(key,exact.symbol[key]);}} -eelem.appendChild(selem);}}}}},addValueMapRenderer:function(renderElem,renderer){renderElem.setAttribute("lookupfield",renderer.lookupfield);if(typeof renderer.ranges=="object"){for(var rng=0,rnglen=renderer.ranges.length;rng<rnglen;rng++){var range=renderer.ranges[rng];var relem=this.createElementNS("","RANGE");relem.setAttribute("lower",range.lower);relem.setAttribute("upper",range.upper);renderElem.appendChild(relem);if(typeof range.symbol=="object"){var selem=null;if(range.symbol.type=="simplepolygon"){selem=this.createElementNS("","SIMPLEPOLYGONSYMBOL");} -if(selem!=null){if(typeof range.symbol.boundarycolor=="string"){selem.setAttribute("boundarycolor",range.symbol.boundarycolor);} -if(typeof range.symbol.fillcolor=="string"){selem.setAttribute("fillcolor",range.symbol.fillcolor);} -if(typeof range.symbol.filltransparency=="number"){selem.setAttribute("filltransparency",range.symbol.filltransparency);} -relem.appendChild(selem);}}}}else if(typeof renderer.exacts=="object"){for(var ext=0,extlen=renderer.exacts.length;ext<extlen;ext++){var exact=renderer.exacts[ext];var eelem=this.createElementNS("","EXACT");if(typeof exact.value=="string"){eelem.setAttribute("value",exact.value);} -if(typeof exact.label=="string"){eelem.setAttribute("label",exact.label);} -if(typeof exact.method=="string"){eelem.setAttribute("method",exact.method);} -renderElem.appendChild(eelem);if(typeof exact.symbol=="object"){var selem=null;if(exact.symbol.type=="simplemarker"){selem=this.createElementNS("","SIMPLEMARKERSYMBOL");} -if(selem!=null){if(typeof exact.symbol.antialiasing=="string"){selem.setAttribute("antialiasing",exact.symbol.antialiasing);} -if(typeof exact.symbol.color=="string"){selem.setAttribute("color",exact.symbol.color);} -if(typeof exact.symbol.outline=="string"){selem.setAttribute("outline",exact.symbol.outline);} -if(typeof exact.symbol.overlap=="string"){selem.setAttribute("overlap",exact.symbol.overlap);} -if(typeof exact.symbol.shadow=="string"){selem.setAttribute("shadow",exact.symbol.shadow);} -if(typeof exact.symbol.transparency=="number"){selem.setAttribute("transparency",exact.symbol.transparency);} -if(typeof exact.symbol.usecentroid=="string"){selem.setAttribute("usecentroid",exact.symbol.usecentroid);} -if(typeof exact.symbol.width=="number"){selem.setAttribute("width",exact.symbol.width);} -eelem.appendChild(selem);}}}}},addSimpleLabelRenderer:function(renderElem,renderer){renderElem.setAttribute("field",renderer.field);var keys=['featureweight','howmanylabels','labelbufferratio','labelpriorities','labelweight','linelabelposition','rotationalangles'];for(var i=0,len=keys.length;i<len;i++){var key=keys[i];if(renderer[key]){renderElem.setAttribute(key,renderer[key]);}} -if(renderer.symbol.type=="text"){var symbol=renderer.symbol;var selem=this.createElementNS("","TEXTSYMBOL");renderElem.appendChild(selem);var keys=this.fontStyleKeys;for(var i=0,len=keys.length;i<len;i++){var key=keys[i];if(symbol[key]){selem.setAttribute(key,renderer[key]);}}}},writePolygonGeometry:function(polygon){if(!(polygon instanceof OpenLayers.Geometry.Polygon)){throw{message:'Cannot write polygon geometry to ArcXML with an '+ -polygon.CLASS_NAME+' object.',geometry:polygon};} -var polyElem=this.createElementNS("","POLYGON");for(var ln=0,lnlen=polygon.components.length;ln<lnlen;ln++){var ring=polygon.components[ln];var ringElem=this.createElementNS("","RING");for(var rn=0,rnlen=ring.components.length;rn<rnlen;rn++){var point=ring.components[rn];var pointElem=this.createElementNS("","POINT");pointElem.setAttribute("x",point.x);pointElem.setAttribute("y",point.y);ringElem.appendChild(pointElem);} -polyElem.appendChild(ringElem);} -return polyElem;},parseResponse:function(data){if(typeof data=="string"){var newData=new OpenLayers.Format.XML();data=newData.read(data);} -var response=new OpenLayers.Format.ArcXML.Response();var errorNode=data.getElementsByTagName("ERROR");if(errorNode!=null&&errorNode.length>0){response.error=this.getChildValue(errorNode,"Unknown error.");}else{var responseNode=data.getElementsByTagName("RESPONSE");if(responseNode==null||responseNode.length==0){response.error="No RESPONSE tag found in ArcXML response.";return response;} -var rtype=responseNode[0].firstChild.nodeName;if(rtype=="#text"){rtype=responseNode[0].firstChild.nextSibling.nodeName;} -if(rtype=="IMAGE"){var envelopeNode=data.getElementsByTagName("ENVELOPE");var outputNode=data.getElementsByTagName("OUTPUT");if(envelopeNode==null||envelopeNode.length==0){response.error="No ENVELOPE tag found in ArcXML response.";}else if(outputNode==null||outputNode.length==0){response.error="No OUTPUT tag found in ArcXML response.";}else{var envAttr=this.parseAttributes(envelopeNode[0]);var outputAttr=this.parseAttributes(outputNode[0]);if(typeof outputAttr.type=="string"){response.image={envelope:envAttr,output:{type:outputAttr.type,data:this.getChildValue(outputNode[0])}};}else{response.image={envelope:envAttr,output:outputAttr};}}}else if(rtype=="FEATURES"){var features=responseNode[0].getElementsByTagName("FEATURES");var featureCount=features[0].getElementsByTagName("FEATURECOUNT");response.features.featurecount=featureCount[0].getAttribute("count");if(response.features.featurecount>0){var envelope=features[0].getElementsByTagName("ENVELOPE");response.features.envelope=this.parseAttributes(envelope[0],typeof(0));var featureList=features[0].getElementsByTagName("FEATURE");for(var fn=0;fn<featureList.length;fn++){var feature=new OpenLayers.Feature.Vector();var fields=featureList[fn].getElementsByTagName("FIELD");for(var fdn=0;fdn<fields.length;fdn++){var fieldName=fields[fdn].getAttribute("name");var fieldValue=fields[fdn].getAttribute("value");feature.attributes[fieldName]=fieldValue;} -var geom=featureList[fn].getElementsByTagName("POLYGON");if(geom.length>0){var ring=geom[0].getElementsByTagName("RING");var polys=[];for(var rn=0;rn<ring.length;rn++){var linearRings=[];linearRings.push(this.parsePointGeometry(ring[rn]));var holes=ring[rn].getElementsByTagName("HOLE");for(var hn=0;hn<holes.length;hn++){linearRings.push(this.parsePointGeometry(holes[hn]));} -holes=null;polys.push(new OpenLayers.Geometry.Polygon(linearRings));linearRings=null;} -ring=null;if(polys.length==1){feature.geometry=polys[0];}else -{feature.geometry=new OpenLayers.Geometry.MultiPolygon(polys);}} -response.features.feature.push(feature);}}}else{response.error="Unidentified response type.";}} -return response;},parseAttributes:function(node,type){var attributes={};for(var attr=0;attr<node.attributes.length;attr++){if(type=="number"){attributes[node.attributes[attr].nodeName]=parseFloat(node.attributes[attr].nodeValue);}else{attributes[node.attributes[attr].nodeName]=node.attributes[attr].nodeValue;}} -return attributes;},parsePointGeometry:function(node){var ringPoints=[];var coords=node.getElementsByTagName("COORDS");if(coords.length>0){var coordArr=this.getChildValue(coords[0]);coordArr=coordArr.split(/;/);for(var cn=0;cn<coordArr.length;cn++){var coordItems=coordArr[cn].split(/ /);ringPoints.push(new OpenLayers.Geometry.Point(parseFloat(coordItems[0]),parseFloat(coordItems[1])));} -coords=null;}else{var point=node.getElementsByTagName("POINT");if(point.length>0){for(var pn=0;pn<point.length;pn++){ringPoints.push(new OpenLayers.Geometry.Point(parseFloat(point[pn].getAttribute("x")),parseFloat(point[pn].getAttribute("y"))));}} -point=null;} -return new OpenLayers.Geometry.LinearRing(ringPoints);},CLASS_NAME:"OpenLayers.Format.ArcXML"});OpenLayers.Format.ArcXML.Request=OpenLayers.Class({initialize:function(params){var defaults={get_image:{properties:{background:null,draw:true,envelope:{minx:0,miny:0,maxx:0,maxy:0},featurecoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},filtercoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},imagesize:{height:0,width:0,dpi:96,printheight:0,printwidth:0,scalesymbols:false},layerlist:[],output:{baseurl:"",legendbaseurl:"",legendname:"",legendpath:"",legendurl:"",name:"",path:"",type:"jpg",url:""}}},get_feature:{layer:"",query:{isspatial:false,featurecoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},filtercoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},buffer:0,where:"",spatialfilter:{relation:"envelope_intersection",envelope:null}}},environment:{separators:{cs:" ",ts:";"}},layer:[],workspaces:[]};return OpenLayers.Util.extend(this,defaults);},CLASS_NAME:"OpenLayers.Format.ArcXML.Request"});OpenLayers.Format.ArcXML.Response=OpenLayers.Class({initialize:function(params){var defaults={image:{envelope:null,output:''},features:{featurecount:0,envelope:null,feature:[]},error:''};return OpenLayers.Util.extend(this,defaults);},CLASS_NAME:"OpenLayers.Format.ArcXML.Response"});OpenLayers.Format.GML=OpenLayers.Class(OpenLayers.Format.XML,{featureNS:"http://mapserver.gis.umn.edu/mapserver",featurePrefix:"feature",featureName:"featureMember",layerName:"features",geometryName:"geometry",collectionName:"FeatureCollection",gmlns:"http://www.opengis.net/gml",extractAttributes:true,xy:true,initialize:function(options){this.regExes={trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)};OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -var featureNodes=this.getElementsByTagNameNS(data.documentElement,this.gmlns,this.featureName);var features=[];for(var i=0;i<featureNodes.length;i++){var feature=this.parseFeature(featureNodes[i]);if(feature){features.push(feature);}} -return features;},parseFeature:function(node){var order=["MultiPolygon","Polygon","MultiLineString","LineString","MultiPoint","Point","Envelope"];var type,nodeList,geometry,parser;for(var i=0;i<order.length;++i){type=order[i];nodeList=this.getElementsByTagNameNS(node,this.gmlns,type);if(nodeList.length>0){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 bounds;var boxNodes=this.getElementsByTagNameNS(node,this.gmlns,"Box");for(i=0;i<boxNodes.length;++i){var boxNode=boxNodes[i];var box=this.parseGeometry["box"].apply(this,[boxNode]);var parentNode=boxNode.parentNode;var parentName=parentNode.localName||parentNode.nodeName.split(":").pop();if(parentName==="boundedBy"){bounds=box;}else{geometry=box.toGeometry();}} -var attributes;if(this.extractAttributes){attributes=this.parseAttributes(node);} -var feature=new OpenLayers.Feature.Vector(geometry,attributes);feature.bounds=bounds;feature.gml={featureType:node.firstChild.nodeName.split(":")[1],featureNS:node.firstChild.namespaceURI,featureNSPrefix:node.firstChild.prefix};var childNode=node.firstChild;var fid;while(childNode){if(childNode.nodeType==1){fid=childNode.getAttribute("fid")||childNode.getAttribute("id");if(fid){break;}} -childNode=childNode.nextSibling;} -feature.fid=fid;return feature;},parseGeometry:{point:function(node){var nodeList,coordString;var coords=[];var nodeList=this.getElementsByTagNameNS(node,this.gmlns,"pos");if(nodeList.length>0){coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);} -if(coords.length==0){nodeList=this.getElementsByTagNameNS(node,this.gmlns,"coordinates");if(nodeList.length>0){coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.removeSpace,"");coords=coordString.split(",");}} -if(coords.length==0){nodeList=this.getElementsByTagNameNS(node,this.gmlns,"coord");if(nodeList.length>0){var xList=this.getElementsByTagNameNS(nodeList[0],this.gmlns,"X");var yList=this.getElementsByTagNameNS(nodeList[0],this.gmlns,"Y");if(xList.length>0&&yList.length>0){coords=[xList[0].firstChild.nodeValue,yList[0].firstChild.nodeValue];}}} -if(coords.length==2){coords[2]=null;} -if(this.xy){return new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);} -else{return new OpenLayers.Geometry.Point(coords[1],coords[0],coords[2]);}},multipoint:function(node){var nodeList=this.getElementsByTagNameNS(node,this.gmlns,"Point");var components=[];if(nodeList.length>0){var point;for(var i=0;i<nodeList.length;++i){point=this.parseGeometry.point.apply(this,[nodeList[i]]);if(point){components.push(point);}}} -return new OpenLayers.Geometry.MultiPoint(components);},linestring:function(node,ring){var nodeList,coordString;var coords=[];var points=[];nodeList=this.getElementsByTagNameNS(node,this.gmlns,"posList");if(nodeList.length>0){coordString=this.getChildValue(nodeList[0]);coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);var dim=parseInt(nodeList[0].getAttribute("dimension"));var j,x,y,z;for(var i=0;i<coords.length/dim;++i){j=i*dim;x=coords[j];y=coords[j+1];z=(dim==2)?null:coords[j+2];if(this.xy){points.push(new OpenLayers.Geometry.Point(x,y,z));}else{points.push(new OpenLayers.Geometry.Point(y,x,z));}}} -if(coords.length==0){nodeList=this.getElementsByTagNameNS(node,this.gmlns,"coordinates");if(nodeList.length>0){coordString=this.getChildValue(nodeList[0]);coordString=coordString.replace(this.regExes.trimSpace,"");coordString=coordString.replace(this.regExes.trimComma,",");var pointList=coordString.split(this.regExes.splitSpace);for(var i=0;i<pointList.length;++i){coords=pointList[i].split(",");if(coords.length==2){coords[2]=null;} -if(this.xy){points.push(new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]));}else{points.push(new OpenLayers.Geometry.Point(coords[1],coords[0],coords[2]));}}}} -var line=null;if(points.length!=0){if(ring){line=new OpenLayers.Geometry.LinearRing(points);}else{line=new OpenLayers.Geometry.LineString(points);}} -return line;},multilinestring:function(node){var nodeList=this.getElementsByTagNameNS(node,this.gmlns,"LineString");var components=[];if(nodeList.length>0){var line;for(var i=0;i<nodeList.length;++i){line=this.parseGeometry.linestring.apply(this,[nodeList[i]]);if(line){components.push(line);}}} -return new OpenLayers.Geometry.MultiLineString(components);},polygon:function(node){var nodeList=this.getElementsByTagNameNS(node,this.gmlns,"LinearRing");var components=[];if(nodeList.length>0){var ring;for(var i=0;i<nodeList.length;++i){ring=this.parseGeometry.linestring.apply(this,[nodeList[i],true]);if(ring){components.push(ring);}}} -return new OpenLayers.Geometry.Polygon(components);},multipolygon:function(node){var nodeList=this.getElementsByTagNameNS(node,this.gmlns,"Polygon");var components=[];if(nodeList.length>0){var polygon;for(var i=0;i<nodeList.length;++i){polygon=this.parseGeometry.polygon.apply(this,[nodeList[i]]);if(polygon){components.push(polygon);}}} -return new OpenLayers.Geometry.MultiPolygon(components);},envelope:function(node){var components=[];var coordString;var envelope;var lpoint=this.getElementsByTagNameNS(node,this.gmlns,"lowerCorner");if(lpoint.length>0){var coords=[];if(lpoint.length>0){coordString=lpoint[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);} -if(coords.length==2){coords[2]=null;} -if(this.xy){var lowerPoint=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{var lowerPoint=new OpenLayers.Geometry.Point(coords[1],coords[0],coords[2]);}} -var upoint=this.getElementsByTagNameNS(node,this.gmlns,"upperCorner");if(upoint.length>0){var coords=[];if(upoint.length>0){coordString=upoint[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);} -if(coords.length==2){coords[2]=null;} -if(this.xy){var upperPoint=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{var upperPoint=new OpenLayers.Geometry.Point(coords[1],coords[0],coords[2]);}} -if(lowerPoint&&upperPoint){components.push(new OpenLayers.Geometry.Point(lowerPoint.x,lowerPoint.y));components.push(new OpenLayers.Geometry.Point(upperPoint.x,lowerPoint.y));components.push(new OpenLayers.Geometry.Point(upperPoint.x,upperPoint.y));components.push(new OpenLayers.Geometry.Point(lowerPoint.x,upperPoint.y));components.push(new OpenLayers.Geometry.Point(lowerPoint.x,lowerPoint.y));var ring=new OpenLayers.Geometry.LinearRing(components);envelope=new OpenLayers.Geometry.Polygon([ring]);} -return envelope;},box:function(node){var nodeList=this.getElementsByTagNameNS(node,this.gmlns,"coordinates");var coordString;var coords,beginPoint=null,endPoint=null;if(nodeList.length>0){coordString=nodeList[0].firstChild.nodeValue;coords=coordString.split(" ");if(coords.length==2){beginPoint=coords[0].split(",");endPoint=coords[1].split(",");}} -if(beginPoint!==null&&endPoint!==null){return new OpenLayers.Bounds(parseFloat(beginPoint[0]),parseFloat(beginPoint[1]),parseFloat(endPoint[0]),parseFloat(endPoint[1]));}}},parseAttributes:function(node){var attributes={};var childNode=node.firstChild;var children,i,child,grandchildren,grandchild,name,value;while(childNode){if(childNode.nodeType==1){children=childNode.childNodes;for(i=0;i<children.length;++i){child=children[i];if(child.nodeType==1){grandchildren=child.childNodes;if(grandchildren.length==1){grandchild=grandchildren[0];if(grandchild.nodeType==3||grandchild.nodeType==4){name=(child.prefix)?child.nodeName.split(":")[1]:child.nodeName;value=grandchild.nodeValue.replace(this.regExes.trimSpace,"");attributes[name]=value;}}else{attributes[child.nodeName.split(":").pop()]=null;}}} -break;} -childNode=childNode.nextSibling;} -return attributes;},write:function(features){if(!(features instanceof Array)){features=[features];} -var gml=this.createElementNS("http://www.opengis.net/wfs","wfs:"+this.collectionName);for(var i=0;i<features.length;i++){gml.appendChild(this.createFeatureXML(features[i]));} -return OpenLayers.Format.XML.prototype.write.apply(this,[gml]);},createFeatureXML:function(feature){var geometry=feature.geometry;var geometryNode=this.buildGeometryNode(geometry);var geomContainer=this.createElementNS(this.featureNS,this.featurePrefix+":"+ -this.geometryName);geomContainer.appendChild(geometryNode);var featureNode=this.createElementNS(this.gmlns,"gml:"+this.featureName);var featureContainer=this.createElementNS(this.featureNS,this.featurePrefix+":"+ -this.layerName);var fid=feature.fid||feature.id;featureContainer.setAttribute("fid",fid);featureContainer.appendChild(geomContainer);for(var attr in feature.attributes){var attrText=this.createTextNode(feature.attributes[attr]);var nodename=attr.substring(attr.lastIndexOf(":")+1);var attrContainer=this.createElementNS(this.featureNS,this.featurePrefix+":"+ -nodename);attrContainer.appendChild(attrText);featureContainer.appendChild(attrContainer);} -featureNode.appendChild(featureContainer);return featureNode;},buildGeometryNode:function(geometry){if(this.externalProjection&&this.internalProjection){geometry=geometry.clone();geometry.transform(this.internalProjection,this.externalProjection);} -var className=geometry.CLASS_NAME;var type=className.substring(className.lastIndexOf(".")+1);var builder=this.buildGeometry[type.toLowerCase()];return builder.apply(this,[geometry]);},buildGeometry:{point:function(geometry){var gml=this.createElementNS(this.gmlns,"gml:Point");gml.appendChild(this.buildCoordinatesNode(geometry));return gml;},multipoint:function(geometry){var gml=this.createElementNS(this.gmlns,"gml:MultiPoint");var points=geometry.components;var pointMember,pointGeom;for(var i=0;i<points.length;i++){pointMember=this.createElementNS(this.gmlns,"gml:pointMember");pointGeom=this.buildGeometry.point.apply(this,[points[i]]);pointMember.appendChild(pointGeom);gml.appendChild(pointMember);} -return gml;},linestring:function(geometry){var gml=this.createElementNS(this.gmlns,"gml:LineString");gml.appendChild(this.buildCoordinatesNode(geometry));return gml;},multilinestring:function(geometry){var gml=this.createElementNS(this.gmlns,"gml:MultiLineString");var lines=geometry.components;var lineMember,lineGeom;for(var i=0;i<lines.length;++i){lineMember=this.createElementNS(this.gmlns,"gml:lineStringMember");lineGeom=this.buildGeometry.linestring.apply(this,[lines[i]]);lineMember.appendChild(lineGeom);gml.appendChild(lineMember);} -return gml;},linearring:function(geometry){var gml=this.createElementNS(this.gmlns,"gml:LinearRing");gml.appendChild(this.buildCoordinatesNode(geometry));return gml;},polygon:function(geometry){var gml=this.createElementNS(this.gmlns,"gml:Polygon");var rings=geometry.components;var ringMember,ringGeom,type;for(var i=0;i<rings.length;++i){type=(i==0)?"outerBoundaryIs":"innerBoundaryIs";ringMember=this.createElementNS(this.gmlns,"gml:"+type);ringGeom=this.buildGeometry.linearring.apply(this,[rings[i]]);ringMember.appendChild(ringGeom);gml.appendChild(ringMember);} -return gml;},multipolygon:function(geometry){var gml=this.createElementNS(this.gmlns,"gml:MultiPolygon");var polys=geometry.components;var polyMember,polyGeom;for(var i=0;i<polys.length;++i){polyMember=this.createElementNS(this.gmlns,"gml:polygonMember");polyGeom=this.buildGeometry.polygon.apply(this,[polys[i]]);polyMember.appendChild(polyGeom);gml.appendChild(polyMember);} -return gml;},bounds:function(bounds){var gml=this.createElementNS(this.gmlns,"gml:Box");gml.appendChild(this.buildCoordinatesNode(bounds));return gml;}},buildCoordinatesNode:function(geometry){var coordinatesNode=this.createElementNS(this.gmlns,"gml:coordinates");coordinatesNode.setAttribute("decimal",".");coordinatesNode.setAttribute("cs",",");coordinatesNode.setAttribute("ts"," ");var parts=[];if(geometry instanceof OpenLayers.Bounds){parts.push(geometry.left+","+geometry.bottom);parts.push(geometry.right+","+geometry.top);}else{var points=(geometry.components)?geometry.components:[geometry];for(var i=0;i<points.length;i++){parts.push(points[i].x+","+points[i].y);}} -var txtNode=this.createTextNode(parts.join(" "));coordinatesNode.appendChild(txtNode);return coordinatesNode;},CLASS_NAME:"OpenLayers.Format.GML"});OpenLayers.Format.GeoJSON=OpenLayers.Class(OpenLayers.Format.JSON,{ignoreExtraDims:false,initialize:function(options){OpenLayers.Format.JSON.prototype.initialize.apply(this,[options]);},read:function(json,type,filter){type=(type)?type:"FeatureCollection";var results=null;var obj=null;if(typeof json=="string"){obj=OpenLayers.Format.JSON.prototype.read.apply(this,[json,filter]);}else{obj=json;} -if(!obj){OpenLayers.Console.error("Bad JSON: "+json);}else if(typeof(obj.type)!="string"){OpenLayers.Console.error("Bad GeoJSON - no type: "+json);}else if(this.isValidType(obj,type)){switch(type){case"Geometry":try{results=this.parseGeometry(obj);}catch(err){OpenLayers.Console.error(err);} -break;case"Feature":try{results=this.parseFeature(obj);results.type="Feature";}catch(err){OpenLayers.Console.error(err);} -break;case"FeatureCollection":results=[];switch(obj.type){case"Feature":try{results.push(this.parseFeature(obj));}catch(err){results=null;OpenLayers.Console.error(err);} -break;case"FeatureCollection":for(var i=0,len=obj.features.length;i<len;++i){try{results.push(this.parseFeature(obj.features[i]));}catch(err){results=null;OpenLayers.Console.error(err);}} -break;default:try{var geom=this.parseGeometry(obj);results.push(new OpenLayers.Feature.Vector(geom));}catch(err){results=null;OpenLayers.Console.error(err);}} -break;}} -return results;},isValidType:function(obj,type){var valid=false;switch(type){case"Geometry":if(OpenLayers.Util.indexOf(["Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","Box","GeometryCollection"],obj.type)==-1){OpenLayers.Console.error("Unsupported geometry type: "+ -obj.type);}else{valid=true;} -break;case"FeatureCollection":valid=true;break;default:if(obj.type==type){valid=true;}else{OpenLayers.Console.error("Cannot convert types from "+ -obj.type+" to "+type);}} -return valid;},parseFeature:function(obj){var feature,geometry,attributes,bbox;attributes=(obj.properties)?obj.properties:{};bbox=(obj.geometry&&obj.geometry.bbox)||obj.bbox;try{geometry=this.parseGeometry(obj.geometry);}catch(err){throw err;} -feature=new OpenLayers.Feature.Vector(geometry,attributes);if(bbox){feature.bounds=OpenLayers.Bounds.fromArray(bbox);} -if(obj.id){feature.fid=obj.id;} -return feature;},parseGeometry:function(obj){if(obj==null){return null;} -var geometry,collection=false;if(obj.type=="GeometryCollection"){if(!(obj.geometries instanceof Array)){throw"GeometryCollection must have geometries array: "+obj;} -var numGeom=obj.geometries.length;var components=new Array(numGeom);for(var i=0;i<numGeom;++i){components[i]=this.parseGeometry.apply(this,[obj.geometries[i]]);} -geometry=new OpenLayers.Geometry.Collection(components);collection=true;}else{if(!(obj.coordinates instanceof Array)){throw"Geometry must have coordinates array: "+obj;} -if(!this.parseCoords[obj.type.toLowerCase()]){throw"Unsupported geometry type: "+obj.type;} -try{geometry=this.parseCoords[obj.type.toLowerCase()].apply(this,[obj.coordinates]);}catch(err){throw err;}} -if(this.internalProjection&&this.externalProjection&&!collection){geometry.transform(this.externalProjection,this.internalProjection);} -return geometry;},parseCoords:{"point":function(array){if(this.ignoreExtraDims==false&&array.length!=2){throw"Only 2D points are supported: "+array;} -return new OpenLayers.Geometry.Point(array[0],array[1]);},"multipoint":function(array){var points=[];var p=null;for(var i=0,len=array.length;i<len;++i){try{p=this.parseCoords["point"].apply(this,[array[i]]);}catch(err){throw err;} -points.push(p);} -return new OpenLayers.Geometry.MultiPoint(points);},"linestring":function(array){var points=[];var p=null;for(var i=0,len=array.length;i<len;++i){try{p=this.parseCoords["point"].apply(this,[array[i]]);}catch(err){throw err;} -points.push(p);} -return new OpenLayers.Geometry.LineString(points);},"multilinestring":function(array){var lines=[];var l=null;for(var i=0,len=array.length;i<len;++i){try{l=this.parseCoords["linestring"].apply(this,[array[i]]);}catch(err){throw err;} -lines.push(l);} -return new OpenLayers.Geometry.MultiLineString(lines);},"polygon":function(array){var rings=[];var r,l;for(var i=0,len=array.length;i<len;++i){try{l=this.parseCoords["linestring"].apply(this,[array[i]]);}catch(err){throw err;} -r=new OpenLayers.Geometry.LinearRing(l.components);rings.push(r);} -return new OpenLayers.Geometry.Polygon(rings);},"multipolygon":function(array){var polys=[];var p=null;for(var i=0,len=array.length;i<len;++i){try{p=this.parseCoords["polygon"].apply(this,[array[i]]);}catch(err){throw err;} -polys.push(p);} -return new OpenLayers.Geometry.MultiPolygon(polys);},"box":function(array){if(array.length!=2){throw"GeoJSON box coordinates must have 2 elements";} -return new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing([new OpenLayers.Geometry.Point(array[0][0],array[0][1]),new OpenLayers.Geometry.Point(array[1][0],array[0][1]),new OpenLayers.Geometry.Point(array[1][0],array[1][1]),new OpenLayers.Geometry.Point(array[0][0],array[1][1]),new OpenLayers.Geometry.Point(array[0][0],array[0][1])])]);}},write:function(obj,pretty){var geojson={"type":null};if(obj instanceof Array){geojson.type="FeatureCollection";var numFeatures=obj.length;geojson.features=new Array(numFeatures);for(var i=0;i<numFeatures;++i){var element=obj[i];if(!element instanceof OpenLayers.Feature.Vector){var msg="FeatureCollection only supports collections "+"of features: "+element;throw msg;} -geojson.features[i]=this.extract.feature.apply(this,[element]);}}else if(obj.CLASS_NAME.indexOf("OpenLayers.Geometry")==0){geojson=this.extract.geometry.apply(this,[obj]);}else if(obj instanceof OpenLayers.Feature.Vector){geojson=this.extract.feature.apply(this,[obj]);if(obj.layer&&obj.layer.projection){geojson.crs=this.createCRSObject(obj);}} -return OpenLayers.Format.JSON.prototype.write.apply(this,[geojson,pretty]);},createCRSObject:function(object){var proj=object.layer.projection.toString();var crs={};if(proj.match(/epsg:/i)){var code=parseInt(proj.substring(proj.indexOf(":")+1));if(code==4326){crs={"type":"OGC","properties":{"urn":"urn:ogc:def:crs:OGC:1.3:CRS84"}};}else{crs={"type":"EPSG","properties":{"code":code}};}} -return crs;},extract:{'feature':function(feature){var geom=this.extract.geometry.apply(this,[feature.geometry]);return{"type":"Feature","id":feature.fid==null?feature.id:feature.fid,"properties":feature.attributes,"geometry":geom};},'geometry':function(geometry){if(geometry==null){return null;} -if(this.internalProjection&&this.externalProjection){geometry=geometry.clone();geometry.transform(this.internalProjection,this.externalProjection);} -var geometryType=geometry.CLASS_NAME.split('.')[2];var data=this.extract[geometryType.toLowerCase()].apply(this,[geometry]);var json;if(geometryType=="Collection"){json={"type":"GeometryCollection","geometries":data};}else{json={"type":geometryType,"coordinates":data};} -return json;},'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;},'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;},'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;},'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;},'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;},'collection':function(collection){var len=collection.components.length;var array=new Array(len);for(var i=0;i<len;++i){array[i]=this.extract.geometry.apply(this,[collection.components[i]]);} -return array;}},CLASS_NAME:"OpenLayers.Format.GeoJSON"});OpenLayers.Format.ArcXML.Features=OpenLayers.Class(OpenLayers.Format.XML,{initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){var axl=new OpenLayers.Format.ArcXML();var parsed=axl.read(data);return parsed.features.feature;}});if(!OpenLayers.Format.GML){OpenLayers.Format.GML={};} -OpenLayers.Format.GML.Base=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",wfs:"http://www.opengis.net/wfs"},defaultPrefix:"gml",schemaLocation:null,featureType:null,featureNS:null,geometryName:"geometry",extractAttributes:true,srsName:null,xy:true,geometryTypes:null,singleFeatureType:null,regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);this.setGeometryTypes();if(options&&options.featureNS){this.setNamespace("feature",options.featureNS);} -this.singleFeatureType=!options||(typeof options.featureType==="string");},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -if(data&&data.nodeType==9){data=data.documentElement;} -var features=[];this.readNode(data,{features:features});if(features.length==0){var elements=this.getElementsByTagNameNS(data,this.namespaces.gml,"featureMember");if(elements.length){for(var i=0,len=elements.length;i<len;++i){this.readNode(elements[i],{features:features});}}else{var elements=this.getElementsByTagNameNS(data,this.namespaces.gml,"featureMembers");if(elements.length){this.readNode(elements[0],{features:features});}}} -return features;},readers:{"gml":{"featureMember":function(node,obj){this.readChildNodes(node,obj);},"featureMembers":function(node,obj){this.readChildNodes(node,obj);},"name":function(node,obj){obj.name=this.getChildValue(node);},"boundedBy":function(node,obj){var container={};this.readChildNodes(node,container);if(container.components&&container.components.length>0){obj.bounds=container.components[0];}},"Point":function(node,container){var obj={points:[]};this.readChildNodes(node,obj);if(!container.components){container.components=[];} -container.components.push(obj.points[0]);},"coordinates":function(node,obj){var str=this.getChildValue(node).replace(this.regExes.trimSpace,"");str=str.replace(this.regExes.trimComma,",");var pointList=str.split(this.regExes.splitSpace);var coords;var numPoints=pointList.length;var points=new Array(numPoints);for(var i=0;i<numPoints;++i){coords=pointList[i].split(",");if(this.xy){points[i]=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{points[i]=new OpenLayers.Geometry.Point(coords[1],coords[0],coords[2]);}} -obj.points=points;},"coord":function(node,obj){var coord={};this.readChildNodes(node,coord);if(!obj.points){obj.points=[];} -obj.points.push(new OpenLayers.Geometry.Point(coord.x,coord.y,coord.z));},"X":function(node,coord){coord.x=this.getChildValue(node);},"Y":function(node,coord){coord.y=this.getChildValue(node);},"Z":function(node,coord){coord.z=this.getChildValue(node);},"MultiPoint":function(node,container){var obj={components:[]};this.readChildNodes(node,obj);container.components=[new OpenLayers.Geometry.MultiPoint(obj.components)];},"pointMember":function(node,obj){this.readChildNodes(node,obj);},"LineString":function(node,container){var obj={};this.readChildNodes(node,obj);if(!container.components){container.components=[];} -container.components.push(new OpenLayers.Geometry.LineString(obj.points));},"MultiLineString":function(node,container){var obj={components:[]};this.readChildNodes(node,obj);container.components=[new OpenLayers.Geometry.MultiLineString(obj.components)];},"lineStringMember":function(node,obj){this.readChildNodes(node,obj);},"Polygon":function(node,container){var obj={outer:null,inner:[]};this.readChildNodes(node,obj);obj.inner.unshift(obj.outer);if(!container.components){container.components=[];} -container.components.push(new OpenLayers.Geometry.Polygon(obj.inner));},"LinearRing":function(node,obj){var container={};this.readChildNodes(node,container);obj.components=[new OpenLayers.Geometry.LinearRing(container.points)];},"MultiPolygon":function(node,container){var obj={components:[]};this.readChildNodes(node,obj);container.components=[new OpenLayers.Geometry.MultiPolygon(obj.components)];},"polygonMember":function(node,obj){this.readChildNodes(node,obj);},"GeometryCollection":function(node,container){var obj={components:[]};this.readChildNodes(node,obj);container.components=[new OpenLayers.Geometry.Collection(obj.components)];},"geometryMember":function(node,obj){this.readChildNodes(node,obj);}},"feature":{"*":function(node,obj){var name;var local=node.localName||node.nodeName.split(":").pop();if(obj.features){if(!this.singleFeatureType&&(OpenLayers.Util.indexOf(this.featureType,local)!==-1)){name="_typeName";}else if(local===this.featureType){name="_typeName";}}else{if(node.childNodes.length==0||(node.childNodes.length==1&&node.firstChild.nodeType==3)){if(this.extractAttributes){name="_attribute";}}else{name="_geometry";}} -if(name){this.readers.feature[name].apply(this,[node,obj]);}},"_typeName":function(node,obj){var container={components:[],attributes:{}};this.readChildNodes(node,container);if(container.name){container.attributes.name=container.name;} -var feature=new OpenLayers.Feature.Vector(container.components[0],container.attributes);if(!this.singleFeatureType){feature.type=node.nodeName.split(":").pop();feature.namespace=node.namespaceURI;} -var fid=node.getAttribute("fid")||this.getAttributeNS(node,this.namespaces["gml"],"id");if(fid){feature.fid=fid;} -if(this.internalProjection&&this.externalProjection&&feature.geometry){feature.geometry.transform(this.externalProjection,this.internalProjection);} -if(container.bounds){feature.bounds=container.bounds;} -obj.features.push(feature);},"_geometry":function(node,obj){this.readChildNodes(node,obj);},"_attribute":function(node,obj){var local=node.localName||node.nodeName.split(":").pop();var value=this.getChildValue(node);obj.attributes[local]=value;}},"wfs":{"FeatureCollection":function(node,obj){this.readChildNodes(node,obj);}}},write:function(features){var name;if(features instanceof Array){name="featureMembers";}else{name="featureMember";} -var root=this.writeNode("gml:"+name,features);this.setAttributeNS(root,this.namespaces["xsi"],"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[root]);},writers:{"gml":{"featureMember":function(feature){var node=this.createElementNSPlus("gml:featureMember");this.writeNode("feature:_typeName",feature,node);return node;},"MultiPoint":function(geometry){var node=this.createElementNSPlus("gml:MultiPoint");for(var i=0;i<geometry.components.length;++i){this.writeNode("pointMember",geometry.components[i],node);} -return node;},"pointMember":function(geometry){var node=this.createElementNSPlus("gml:pointMember");this.writeNode("Point",geometry,node);return node;},"MultiLineString":function(geometry){var node=this.createElementNSPlus("gml:MultiLineString");for(var i=0;i<geometry.components.length;++i){this.writeNode("lineStringMember",geometry.components[i],node);} -return node;},"lineStringMember":function(geometry){var node=this.createElementNSPlus("gml:lineStringMember");this.writeNode("LineString",geometry,node);return node;},"MultiPolygon":function(geometry){var node=this.createElementNSPlus("gml:MultiPolygon");for(var i=0;i<geometry.components.length;++i){this.writeNode("polygonMember",geometry.components[i],node);} -return node;},"polygonMember":function(geometry){var node=this.createElementNSPlus("gml:polygonMember");this.writeNode("Polygon",geometry,node);return node;},"GeometryCollection":function(geometry){var node=this.createElementNSPlus("gml:GeometryCollection");for(var i=0,len=geometry.components.length;i<len;++i){this.writeNode("geometryMember",geometry.components[i],node);} -return node;},"geometryMember":function(geometry){var node=this.createElementNSPlus("gml:geometryMember");var child=this.writeNode("feature:_geometry",geometry);node.appendChild(child.firstChild);return node;}},"feature":{"_typeName":function(feature){var node=this.createElementNSPlus("feature:"+this.featureType,{attributes:{fid:feature.fid}});if(feature.geometry){this.writeNode("feature:_geometry",feature.geometry,node);} -for(var name in feature.attributes){var value=feature.attributes[name];if(value!=null){this.writeNode("feature:_attribute",{name:name,value:value},node);}} -return node;},"_geometry":function(geometry){if(this.externalProjection&&this.internalProjection){geometry=geometry.clone().transform(this.internalProjection,this.externalProjection);} -var node=this.createElementNSPlus("feature:"+this.geometryName);var type=this.geometryTypes[geometry.CLASS_NAME];var child=this.writeNode("gml:"+type,geometry,node);if(this.srsName){child.setAttribute("srsName",this.srsName);} -return node;},"_attribute":function(obj){return this.createElementNSPlus("feature:"+obj.name,{value:obj.value});}},"wfs":{"FeatureCollection":function(features){var node=this.createElementNSPlus("wfs:FeatureCollection");for(var i=0,len=features.length;i<len;++i){this.writeNode("gml:featureMember",features[i],node);} -return node;}}},setGeometryTypes:function(){this.geometryTypes={"OpenLayers.Geometry.Point":"Point","OpenLayers.Geometry.MultiPoint":"MultiPoint","OpenLayers.Geometry.LineString":"LineString","OpenLayers.Geometry.MultiLineString":"MultiLineString","OpenLayers.Geometry.Polygon":"Polygon","OpenLayers.Geometry.MultiPolygon":"MultiPolygon","OpenLayers.Geometry.Collection":"GeometryCollection"};},CLASS_NAME:"OpenLayers.Format.GML.Base"});OpenLayers.Format.WFS=OpenLayers.Class(OpenLayers.Format.GML,{layer:null,wfsns:"http://www.opengis.net/wfs",ogcns:"http://www.opengis.net/ogc",initialize:function(options,layer){OpenLayers.Format.GML.prototype.initialize.apply(this,[options]);this.layer=layer;if(this.layer.featureNS){this.featureNS=this.layer.featureNS;} -if(this.layer.options.geometry_column){this.geometryName=this.layer.options.geometry_column;} -if(this.layer.options.typename){this.featureName=this.layer.options.typename;}},write:function(features){var transaction=this.createElementNS(this.wfsns,'wfs:Transaction');transaction.setAttribute("version","1.0.0");transaction.setAttribute("service","WFS");for(var i=0;i<features.length;i++){switch(features[i].state){case OpenLayers.State.INSERT:transaction.appendChild(this.insert(features[i]));break;case OpenLayers.State.UPDATE:transaction.appendChild(this.update(features[i]));break;case OpenLayers.State.DELETE:transaction.appendChild(this.remove(features[i]));break;}} -return OpenLayers.Format.XML.prototype.write.apply(this,[transaction]);},createFeatureXML:function(feature){var geometryNode=this.buildGeometryNode(feature.geometry);var geomContainer=this.createElementNS(this.featureNS,"feature:"+this.geometryName);geomContainer.appendChild(geometryNode);var featureContainer=this.createElementNS(this.featureNS,"feature:"+this.featureName);featureContainer.appendChild(geomContainer);for(var attr in feature.attributes){var attrText=this.createTextNode(feature.attributes[attr]);var nodename=attr;if(attr.search(":")!=-1){nodename=attr.split(":")[1];} -var attrContainer=this.createElementNS(this.featureNS,"feature:"+nodename);attrContainer.appendChild(attrText);featureContainer.appendChild(attrContainer);} -return featureContainer;},insert:function(feature){var insertNode=this.createElementNS(this.wfsns,'wfs:Insert');insertNode.appendChild(this.createFeatureXML(feature));return insertNode;},update:function(feature){if(!feature.fid){OpenLayers.Console.userError(OpenLayers.i18n("noFID"));} -var updateNode=this.createElementNS(this.wfsns,'wfs:Update');updateNode.setAttribute("typeName",this.featurePrefix+':'+this.featureName);updateNode.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);var propertyNode=this.createElementNS(this.wfsns,'wfs:Property');var nameNode=this.createElementNS(this.wfsns,'wfs:Name');var txtNode=this.createTextNode(this.geometryName);nameNode.appendChild(txtNode);propertyNode.appendChild(nameNode);var valueNode=this.createElementNS(this.wfsns,'wfs:Value');var geometryNode=this.buildGeometryNode(feature.geometry);if(feature.layer){geometryNode.setAttribute("srsName",feature.layer.projection.getCode());} -valueNode.appendChild(geometryNode);propertyNode.appendChild(valueNode);updateNode.appendChild(propertyNode);for(var propName in feature.attributes){propertyNode=this.createElementNS(this.wfsns,'wfs:Property');nameNode=this.createElementNS(this.wfsns,'wfs:Name');nameNode.appendChild(this.createTextNode(propName));propertyNode.appendChild(nameNode);valueNode=this.createElementNS(this.wfsns,'wfs:Value');valueNode.appendChild(this.createTextNode(feature.attributes[propName]));propertyNode.appendChild(valueNode);updateNode.appendChild(propertyNode);} -var filterNode=this.createElementNS(this.ogcns,'ogc:Filter');var filterIdNode=this.createElementNS(this.ogcns,'ogc:FeatureId');filterIdNode.setAttribute("fid",feature.fid);filterNode.appendChild(filterIdNode);updateNode.appendChild(filterNode);return updateNode;},remove:function(feature){if(!feature.fid){OpenLayers.Console.userError(OpenLayers.i18n("noFID"));return false;} -var deleteNode=this.createElementNS(this.wfsns,'wfs:Delete');deleteNode.setAttribute("typeName",this.featurePrefix+':'+this.featureName);deleteNode.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);var filterNode=this.createElementNS(this.ogcns,'ogc:Filter');var filterIdNode=this.createElementNS(this.ogcns,'ogc:FeatureId');filterIdNode.setAttribute("fid",feature.fid);filterNode.appendChild(filterIdNode);deleteNode.appendChild(filterNode);return deleteNode;},destroy:function(){this.layer=null;},CLASS_NAME:"OpenLayers.Format.WFS"});OpenLayers.Layer.ArcIMS=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{ClientVersion:"9.2",ServiceName:''},tileSize:null,featureCoordSys:"4326",filterCoordSys:"4326",layers:null,async:true,name:"ArcIMS",isBaseLayer:true,DEFAULT_OPTIONS:{tileSize:new OpenLayers.Size(512,512),featureCoordSys:"4326",filterCoordSys:"4326",layers:null,isBaseLayer:true,async:true,name:"ArcIMS"},initialize:function(name,url,options){this.tileSize=new OpenLayers.Size(512,512);this.params=OpenLayers.Util.applyDefaults({ServiceName:options.serviceName},this.DEFAULT_PARAMS);this.options=OpenLayers.Util.applyDefaults(options,this.DEFAULT_OPTIONS);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[name,url,this.params,options]);if(this.transparent){if(!this.isBaseLayer){this.isBaseLayer=false;} -if(this.format=="image/jpeg"){this.format=OpenLayers.Util.alphaHack()?"image/gif":"image/png";}} -if(this.options.layers===null){this.options.layers=[];}},destroy:function(){OpenLayers.Layer.Grid.prototype.destroy.apply(this,arguments);},getURL:function(bounds){var url="";bounds=this.adjustBounds(bounds);var axlReq=new OpenLayers.Format.ArcXML(OpenLayers.Util.extend(this.options,{requesttype:"image",envelope:bounds.toArray(),tileSize:this.tileSize}));var req=new OpenLayers.Request.POST({url:this.getFullRequestString(),data:axlReq.write(),async:false});if(req!=null){var doc=req.responseXML;if(!doc||!doc.documentElement){doc=req.responseText;} -var axlResp=new OpenLayers.Format.ArcXML();var arcxml=axlResp.read(doc);url=this.getUrlOrImage(arcxml.image.output);} -return url;},getURLasync:function(bounds,scope,prop,callback){bounds=this.adjustBounds(bounds);var axlReq=new OpenLayers.Format.ArcXML(OpenLayers.Util.extend(this.options,{requesttype:"image",envelope:bounds.toArray(),tileSize:this.tileSize}));OpenLayers.Request.POST({url:this.getFullRequestString(),async:true,data:axlReq.write(),callback:function(req){var doc=req.responseXML;if(!doc||!doc.documentElement){doc=req.responseText;} -var axlResp=new OpenLayers.Format.ArcXML();var arcxml=axlResp.read(doc);scope[prop]=this.getUrlOrImage(arcxml.image.output);callback.apply(scope);},scope:this});},getUrlOrImage:function(output){var ret="";if(output.url){ret=output.url;}else if(output.data){ret="data:image/"+output.type+";base64,"+output.data;} -return ret;},setLayerQuery:function(id,querydef){for(var lyr=0;lyr<this.options.layers.length;lyr++){if(id==this.options.layers[lyr].id){this.options.layers[lyr].query=querydef;return;}} -this.options.layers.push({id:id,visible:true,query:querydef});},getFeatureInfo:function(geometry,layer,options){var buffer=options.buffer||1;var callback=options.callback||function(){};var scope=options.scope||window;var requestOptions={};OpenLayers.Util.extend(requestOptions,this.options);requestOptions.requesttype="feature";if(geometry instanceof OpenLayers.LonLat){requestOptions.polygon=null;requestOptions.envelope=[geometry.lon-buffer,geometry.lat-buffer,geometry.lon+buffer,geometry.lat+buffer];}else if(geometry instanceof OpenLayers.Geometry.Polygon){requestOptions.envelope=null;requestOptions.polygon=geometry;} -var arcxml=new OpenLayers.Format.ArcXML(requestOptions);OpenLayers.Util.extend(arcxml.request.get_feature,options);arcxml.request.get_feature.layer=layer.id;if(typeof layer.query.accuracy=="number"){arcxml.request.get_feature.query.accuracy=layer.query.accuracy;}else{var mapCenter=this.map.getCenter();var viewPx=this.map.getViewPortPxFromLonLat(mapCenter);viewPx.x++;var mapOffCenter=this.map.getLonLatFromPixel(viewPx);arcxml.request.get_feature.query.accuracy=mapOffCenter.lon-mapCenter.lon;} -arcxml.request.get_feature.query.where=layer.query.where;arcxml.request.get_feature.query.spatialfilter.relation="area_intersection";OpenLayers.Request.POST({url:this.getFullRequestString({'CustomService':'Query'}),data:arcxml.write(),callback:function(request){var response=arcxml.parseResponse(request.responseText);if(!arcxml.iserror()){callback.call(scope,response.features);}else{callback.call(scope,null);}}});},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.ArcIMS(this.name,this.url,this.getOptions());} -obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},CLASS_NAME:"OpenLayers.Layer.ArcIMS"});OpenLayers.Format.GML.v2=OpenLayers.Class(OpenLayers.Format.GML.Base,{schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/2.1.2/feature.xsd",initialize:function(options){OpenLayers.Format.GML.Base.prototype.initialize.apply(this,[options]);},readers:{"gml":OpenLayers.Util.applyDefaults({"outerBoundaryIs":function(node,container){var obj={};this.readChildNodes(node,obj);container.outer=obj.components[0];},"innerBoundaryIs":function(node,container){var obj={};this.readChildNodes(node,obj);container.inner.push(obj.components[0]);},"Box":function(node,container){var obj={};this.readChildNodes(node,obj);if(!container.components){container.components=[];} -var min=obj.points[0];var max=obj.points[1];container.components.push(new OpenLayers.Bounds(min.x,min.y,max.x,max.y));}},OpenLayers.Format.GML.Base.prototype.readers["gml"]),"feature":OpenLayers.Format.GML.Base.prototype.readers["feature"],"wfs":OpenLayers.Format.GML.Base.prototype.readers["wfs"]},write:function(features){var name;if(features instanceof Array){name="wfs:FeatureCollection";}else{name="gml:featureMember";} -var root=this.writeNode(name,features);this.setAttributeNS(root,this.namespaces["xsi"],"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[root]);},writers:{"gml":OpenLayers.Util.applyDefaults({"Point":function(geometry){var node=this.createElementNSPlus("gml:Point");this.writeNode("coordinates",[geometry],node);return node;},"coordinates":function(points){var numPoints=points.length;var parts=new Array(numPoints);var point;for(var i=0;i<numPoints;++i){point=points[i];if(this.xy){parts[i]=point.x+","+point.y;}else{parts[i]=point.y+","+point.x;} -if(point.z!=undefined){parts[i]+=","+point.z;}} -return this.createElementNSPlus("gml:coordinates",{attributes:{decimal:".",cs:",",ts:" "},value:(numPoints==1)?parts[0]:parts.join(" ")});},"LineString":function(geometry){var node=this.createElementNSPlus("gml:LineString");this.writeNode("coordinates",geometry.components,node);return node;},"Polygon":function(geometry){var node=this.createElementNSPlus("gml:Polygon");this.writeNode("outerBoundaryIs",geometry.components[0],node);for(var i=1;i<geometry.components.length;++i){this.writeNode("innerBoundaryIs",geometry.components[i],node);} -return node;},"outerBoundaryIs":function(ring){var node=this.createElementNSPlus("gml:outerBoundaryIs");this.writeNode("LinearRing",ring,node);return node;},"innerBoundaryIs":function(ring){var node=this.createElementNSPlus("gml:innerBoundaryIs");this.writeNode("LinearRing",ring,node);return node;},"LinearRing":function(ring){var node=this.createElementNSPlus("gml:LinearRing");this.writeNode("coordinates",ring.components,node);return node;},"Box":function(bounds){var node=this.createElementNSPlus("gml:Box");this.writeNode("coordinates",[{x:bounds.left,y:bounds.bottom},{x:bounds.right,y:bounds.top}],node);if(this.srsName){node.setAttribute("srsName",this.srsName);} -return node;}},OpenLayers.Format.GML.Base.prototype.writers["gml"]),"feature":OpenLayers.Format.GML.Base.prototype.writers["feature"],"wfs":OpenLayers.Format.GML.Base.prototype.writers["wfs"]},CLASS_NAME:"OpenLayers.Format.GML.v2"});OpenLayers.Format.GML.v3=OpenLayers.Class(OpenLayers.Format.GML.Base,{schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/1.0.0/gmlsf.xsd",curve:false,multiCurve:true,surface:false,multiSurface:true,initialize:function(options){OpenLayers.Format.GML.Base.prototype.initialize.apply(this,[options]);},readers:{"gml":OpenLayers.Util.applyDefaults({"featureMembers":function(node,obj){this.readChildNodes(node,obj);},"Curve":function(node,container){var obj={points:[]};this.readChildNodes(node,obj);if(!container.components){container.components=[];} -container.components.push(new OpenLayers.Geometry.LineString(obj.points));},"segments":function(node,obj){this.readChildNodes(node,obj);},"LineStringSegment":function(node,container){var obj={};this.readChildNodes(node,obj);if(obj.points){Array.prototype.push.apply(container.points,obj.points);}},"pos":function(node,obj){var str=this.getChildValue(node).replace(this.regExes.trimSpace,"");var coords=str.split(this.regExes.splitSpace);var point;if(this.xy){point=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{point=new OpenLayers.Geometry.Point(coords[1],coords[0],coords[2]);} -obj.points=[point];},"posList":function(node,obj){var str=this.getChildValue(node).replace(this.regExes.trimSpace,"");var coords=str.split(this.regExes.splitSpace);var dim=parseInt(node.getAttribute("dimension"))||2;var j,x,y,z;var numPoints=coords.length/dim;var points=new Array(numPoints);for(var i=0,len=coords.length;i<len;i+=dim){x=coords[i];y=coords[i+1];z=(dim==2)?undefined:coords[i+2];if(this.xy){points[i/dim]=new OpenLayers.Geometry.Point(x,y,z);}else{points[i/dim]=new OpenLayers.Geometry.Point(y,x,z);}} -obj.points=points;},"Surface":function(node,obj){this.readChildNodes(node,obj);},"patches":function(node,obj){this.readChildNodes(node,obj);},"PolygonPatch":function(node,obj){this.readers.gml.Polygon.apply(this,[node,obj]);},"exterior":function(node,container){var obj={};this.readChildNodes(node,obj);container.outer=obj.components[0];},"interior":function(node,container){var obj={};this.readChildNodes(node,obj);container.inner.push(obj.components[0]);},"MultiCurve":function(node,container){var obj={components:[]};this.readChildNodes(node,obj);if(obj.components.length>0){container.components=[new OpenLayers.Geometry.MultiLineString(obj.components)];}},"curveMember":function(node,obj){this.readChildNodes(node,obj);},"MultiSurface":function(node,container){var obj={components:[]};this.readChildNodes(node,obj);if(obj.components.length>0){container.components=[new OpenLayers.Geometry.MultiPolygon(obj.components)];}},"surfaceMember":function(node,obj){this.readChildNodes(node,obj);},"surfaceMembers":function(node,obj){this.readChildNodes(node,obj);},"pointMembers":function(node,obj){this.readChildNodes(node,obj);},"lineStringMembers":function(node,obj){this.readChildNodes(node,obj);},"polygonMembers":function(node,obj){this.readChildNodes(node,obj);},"geometryMembers":function(node,obj){this.readChildNodes(node,obj);},"Envelope":function(node,container){var obj={points:new Array(2)};this.readChildNodes(node,obj);if(!container.components){container.components=[];} -var min=obj.points[0];var max=obj.points[1];container.components.push(new OpenLayers.Bounds(min.x,min.y,max.x,max.y));},"lowerCorner":function(node,container){var obj={};this.readers.gml.pos.apply(this,[node,obj]);container.points[0]=obj.points[0];},"upperCorner":function(node,container){var obj={};this.readers.gml.pos.apply(this,[node,obj]);container.points[1]=obj.points[0];}},OpenLayers.Format.GML.Base.prototype.readers["gml"]),"feature":OpenLayers.Format.GML.Base.prototype.readers["feature"],"wfs":OpenLayers.Format.GML.Base.prototype.readers["wfs"]},write:function(features){var name;if(features instanceof Array){name="featureMembers";}else{name="featureMember";} -var root=this.writeNode("gml:"+name,features);this.setAttributeNS(root,this.namespaces["xsi"],"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[root]);},writers:{"gml":OpenLayers.Util.applyDefaults({"featureMembers":function(features){var node=this.createElementNSPlus("gml:featureMembers");for(var i=0,len=features.length;i<len;++i){this.writeNode("feature:_typeName",features[i],node);} -return node;},"Point":function(geometry){var node=this.createElementNSPlus("gml:Point");this.writeNode("pos",geometry,node);return node;},"pos":function(point){var pos=(this.xy)?(point.x+" "+point.y):(point.y+" "+point.x);return this.createElementNSPlus("gml:pos",{value:pos});},"LineString":function(geometry){var node=this.createElementNSPlus("gml:LineString");this.writeNode("posList",geometry.components,node);return node;},"Curve":function(geometry){var node=this.createElementNSPlus("gml:Curve");this.writeNode("segments",geometry,node);return node;},"segments":function(geometry){var node=this.createElementNSPlus("gml:segments");this.writeNode("LineStringSegment",geometry,node);return node;},"LineStringSegment":function(geometry){var node=this.createElementNSPlus("gml:LineStringSegment");this.writeNode("posList",geometry.components,node);return node;},"posList":function(points){var len=points.length;var parts=new Array(len);var point;for(var i=0;i<len;++i){point=points[i];if(this.xy){parts[i]=point.x+" "+point.y;}else{parts[i]=point.y+" "+point.x;}} -return this.createElementNSPlus("gml:posList",{value:parts.join(" ")});},"Surface":function(geometry){var node=this.createElementNSPlus("gml:Surface");this.writeNode("patches",geometry,node);return node;},"patches":function(geometry){var node=this.createElementNSPlus("gml:patches");this.writeNode("PolygonPatch",geometry,node);return node;},"PolygonPatch":function(geometry){var node=this.createElementNSPlus("gml:PolygonPatch",{attributes:{interpolation:"planar"}});this.writeNode("exterior",geometry.components[0],node);for(var i=1,len=geometry.components.length;i<len;++i){this.writeNode("interior",geometry.components[i],node);} -return node;},"Polygon":function(geometry){var node=this.createElementNSPlus("gml:Polygon");this.writeNode("exterior",geometry.components[0],node);for(var i=1,len=geometry.components.length;i<len;++i){this.writeNode("interior",geometry.components[i],node);} -return node;},"exterior":function(ring){var node=this.createElementNSPlus("gml:exterior");this.writeNode("LinearRing",ring,node);return node;},"interior":function(ring){var node=this.createElementNSPlus("gml:interior");this.writeNode("LinearRing",ring,node);return node;},"LinearRing":function(ring){var node=this.createElementNSPlus("gml:LinearRing");this.writeNode("posList",ring.components,node);return node;},"MultiCurve":function(geometry){var node=this.createElementNSPlus("gml:MultiCurve");for(var i=0,len=geometry.components.length;i<len;++i){this.writeNode("curveMember",geometry.components[i],node);} -return node;},"curveMember":function(geometry){var node=this.createElementNSPlus("gml:curveMember");if(this.curve){this.writeNode("Curve",geometry,node);}else{this.writeNode("LineString",geometry,node);} -return node;},"MultiSurface":function(geometry){var node=this.createElementNSPlus("gml:MultiSurface");for(var i=0,len=geometry.components.length;i<len;++i){this.writeNode("surfaceMember",geometry.components[i],node);} -return node;},"surfaceMember":function(polygon){var node=this.createElementNSPlus("gml:surfaceMember");if(this.surface){this.writeNode("Surface",polygon,node);}else{this.writeNode("Polygon",polygon,node);} -return node;},"Envelope":function(bounds){var node=this.createElementNSPlus("gml:Envelope");this.writeNode("lowerCorner",bounds,node);this.writeNode("upperCorner",bounds,node);if(this.srsName){node.setAttribute("srsName",this.srsName);} -return node;},"lowerCorner":function(bounds){var pos=(this.xy)?(bounds.left+" "+bounds.bottom):(bounds.bottom+" "+bounds.left);return this.createElementNSPlus("gml:lowerCorner",{value:pos});},"upperCorner":function(bounds){var pos=(this.xy)?(bounds.right+" "+bounds.top):(bounds.top+" "+bounds.right);return this.createElementNSPlus("gml:upperCorner",{value:pos});}},OpenLayers.Format.GML.Base.prototype.writers["gml"]),"feature":OpenLayers.Format.GML.Base.prototype.writers["feature"],"wfs":OpenLayers.Format.GML.Base.prototype.writers["wfs"]},setGeometryTypes:function(){this.geometryTypes={"OpenLayers.Geometry.Point":"Point","OpenLayers.Geometry.MultiPoint":"MultiPoint","OpenLayers.Geometry.LineString":(this.curve===true)?"Curve":"LineString","OpenLayers.Geometry.MultiLineString":(this.multiCurve===false)?"MultiLineString":"MultiCurve","OpenLayers.Geometry.Polygon":(this.surface===true)?"Surface":"Polygon","OpenLayers.Geometry.MultiPolygon":(this.multiSurface===false)?"MultiPolygon":"MultiSurface","OpenLayers.Geometry.Collection":"GeometryCollection"};},CLASS_NAME:"OpenLayers.Format.GML.v3"});OpenLayers.Format.Atom=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{atom:"http://www.w3.org/2005/Atom",georss:"http://www.georss.org/georss"},feedTitle:"untitled",defaultEntryTitle:"untitled",gmlParser:null,xy:false,initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(doc){if(typeof doc=="string"){doc=OpenLayers.Format.XML.prototype.read.apply(this,[doc]);} -return this.parseFeatures(doc);},write:function(features){var doc;if(features instanceof Array){doc=this.createElementNSPlus("atom:feed");doc.appendChild(this.createElementNSPlus("atom:title",{value:this.feedTitle}));for(var i=0,ii=features.length;i<ii;i++){doc.appendChild(this.buildEntryNode(features[i]));}} -else{doc=this.buildEntryNode(features);} -return OpenLayers.Format.XML.prototype.write.apply(this,[doc]);},buildContentNode:function(content){var node=this.createElementNSPlus("atom:content",{attributes:{type:content.type||null}});if(content.src){node.setAttribute("src",content.src);}else{if(content.type=="text"||content.type==null){node.appendChild(this.createTextNode(content.value));}else if(content.type=="html"){if(typeof content.value!="string"){throw"HTML content must be in form of an escaped string";} -node.appendChild(this.createTextNode(content.value));}else if(content.type=="xhtml"){node.appendChild(content.value);}else if(content.type=="xhtml"||content.type.match(/(\+|\/)xml$/)){node.appendChild(content.value);} -else{node.appendChild(this.createTextNode(content.value));}} -return node;},buildEntryNode:function(feature){var attrib=feature.attributes;var atomAttrib=attrib.atom||{};var entryNode=this.createElementNSPlus("atom:entry");if(atomAttrib.authors){var authors=atomAttrib.authors instanceof Array?atomAttrib.authors:[atomAttrib.authors];for(var i=0,ii=authors.length;i<ii;i++){entryNode.appendChild(this.buildPersonConstructNode("author",authors[i]));}} -if(atomAttrib.categories){var categories=atomAttrib.categories instanceof Array?atomAttrib.categories:[atomAttrib.categories];var category;for(var i=0,ii=categories.length;i<ii;i++){category=categories[i];entryNode.appendChild(this.createElementNSPlus("atom:category",{attributes:{term:category.term,scheme:category.scheme||null,label:category.label||null}}));}} -if(atomAttrib.content){entryNode.appendChild(this.buildContentNode(atomAttrib.content));} -if(atomAttrib.contributors){var contributors=atomAttrib.contributors instanceof Array?atomAttrib.contributors:[atomAttrib.contributors];for(var i=0,ii=contributors.length;i<ii;i++){entryNode.appendChild(this.buildPersonConstructNode("contributor",contributors[i]));}} -if(feature.fid){entryNode.appendChild(this.createElementNSPlus("atom:id",{value:feature.fid}));} -if(atomAttrib.links){var links=atomAttrib.links instanceof Array?atomAttrib.links:[atomAttrib.links];var link;for(var i=0,ii=links.length;i<ii;i++){link=links[i];entryNode.appendChild(this.createElementNSPlus("atom:link",{attributes:{href:link.href,rel:link.rel||null,type:link.type||null,hreflang:link.hreflang||null,title:link.title||null,length:link.length||null}}));}} -if(atomAttrib.published){entryNode.appendChild(this.createElementNSPlus("atom:published",{value:atomAttrib.published}));} -if(atomAttrib.rights){entryNode.appendChild(this.createElementNSPlus("atom:rights",{value:atomAttrib.rights}));} -if(atomAttrib.summary||attrib.description){entryNode.appendChild(this.createElementNSPlus("atom:summary",{value:atomAttrib.summary||attrib.description}));} -entryNode.appendChild(this.createElementNSPlus("atom:title",{value:atomAttrib.title||attrib.title||this.defaultEntryTitle}));if(atomAttrib.updated){entryNode.appendChild(this.createElementNSPlus("atom:updated",{value:atomAttrib.updated}));} -if(feature.geometry){var whereNode=this.createElementNSPlus("georss:where");whereNode.appendChild(this.buildGeometryNode(feature.geometry));entryNode.appendChild(whereNode);} -return entryNode;},initGmlParser:function(){this.gmlParser=new OpenLayers.Format.GML.v3({xy:this.xy,featureNS:"http://example.com#feature",internalProjection:this.internalProjection,externalProjection:this.externalProjection});},buildGeometryNode:function(geometry){if(!this.gmlParser){this.initGmlParser();} -var node=this.gmlParser.writeNode("feature:_geometry",geometry);return node.firstChild;},buildPersonConstructNode:function(name,value){var oNames=["uri","email"];var personNode=this.createElementNSPlus("atom:"+name);personNode.appendChild(this.createElementNSPlus("atom:name",{value:value.name}));for(var i=0,ii=oNames.length;i<ii;i++){if(value[oNames[i]]){personNode.appendChild(this.createElementNSPlus("atom:"+oNames[i],{value:value[oNames[i]]}));}} -return personNode;},getFirstChildValue:function(node,nsuri,name,def){var value;var nodes=this.getElementsByTagNameNS(node,nsuri,name);if(nodes&&nodes.length>0){value=this.getChildValue(nodes[0],def);}else{value=def;} -return value;},parseFeature:function(node){var atomAttrib={};var value=null;var nodes=null;var attval=null;var atomns=this.namespaces.atom;this.parsePersonConstructs(node,"author",atomAttrib);nodes=this.getElementsByTagNameNS(node,atomns,"category");if(nodes.length>0){atomAttrib.categories=[];} -for(var i=0,ii=nodes.length;i<ii;i++){value={};value.term=nodes[i].getAttribute("term");attval=nodes[i].getAttribute("scheme");if(attval){value.scheme=attval;} -attval=nodes[i].getAttribute("label");if(attval){value.label=attval;} -atomAttrib.categories.push(value);} -nodes=this.getElementsByTagNameNS(node,atomns,"content");if(nodes.length>0){value={};attval=nodes[0].getAttribute("type");if(attval){value.type=attval;} -attval=nodes[0].getAttribute("src");if(attval){value.src=attval;}else{if(value.type=="text"||value.type=="html"||value.type==null){value.value=this.getFirstChildValue(node,atomns,"content",null);}else if(value.type=="xhtml"||value.type.match(/(\+|\/)xml$/)){value.value=this.getChildEl(nodes[0]);}else{value.value=this.getFirstChildValue(node,atomns,"content",null);} -atomAttrib.content=value;}} -this.parsePersonConstructs(node,"contributor",atomAttrib);atomAttrib.id=this.getFirstChildValue(node,atomns,"id",null);nodes=this.getElementsByTagNameNS(node,atomns,"link");if(nodes.length>0){atomAttrib.links=new Array(nodes.length);} -var oAtts=["rel","type","hreflang","title","length"];for(var i=0,ii=nodes.length;i<ii;i++){value={};value.href=nodes[i].getAttribute("href");for(var j=0,jj=oAtts.length;j<jj;j++){attval=nodes[i].getAttribute(oAtts[j]);if(attval){value[oAtts[j]]=attval;}} -atomAttrib.links[i]=value;} -value=this.getFirstChildValue(node,atomns,"published",null);if(value){atomAttrib.published=value;} -value=this.getFirstChildValue(node,atomns,"rights",null);if(value){atomAttrib.rights=value;} -value=this.getFirstChildValue(node,atomns,"summary",null);if(value){atomAttrib.summary=value;} -atomAttrib.title=this.getFirstChildValue(node,atomns,"title",null);atomAttrib.updated=this.getFirstChildValue(node,atomns,"updated",null);var featureAttrib={title:atomAttrib.title,description:atomAttrib.summary,atom:atomAttrib};var geometry=this.parseLocations(node)[0];var feature=new OpenLayers.Feature.Vector(geometry,featureAttrib);feature.fid=atomAttrib.id;return feature;},parseFeatures:function(node){var features=[];var entries=this.getElementsByTagNameNS(node,this.namespaces.atom,"entry");if(entries.length==0){entries=[node];} -for(var i=0,ii=entries.length;i<ii;i++){features.push(this.parseFeature(entries[i]));} -return features;},parseLocations:function(node){var georssns=this.namespaces.georss;var locations={components:[]};var where=this.getElementsByTagNameNS(node,georssns,"where");if(where&&where.length>0){if(!this.gmlParser){this.initGmlParser();} -for(var i=0,ii=where.length;i<ii;i++){this.gmlParser.readChildNodes(where[i],locations);}} -var components=locations.components;var point=this.getElementsByTagNameNS(node,georssns,"point");if(point&&point.length>0){for(var i=0,ii=point.length;i<ii;i++){var xy=OpenLayers.String.trim(point[i].firstChild.nodeValue).split(/\s+/);if(xy.length!=2){xy=OpenLayers.String.trim(point[i].firstChild.nodeValue).split(/\s*,\s*/);} -components.push(new OpenLayers.Geometry.Point(parseFloat(xy[1]),parseFloat(xy[0])));}} -var line=this.getElementsByTagNameNS(node,georssns,"line");if(line&&line.length>0){var coords;var p;var points;for(var i=0,ii=line.length;i<ii;i++){coords=OpenLayers.String.trim(line[i].firstChild.nodeValue).split(/\s+/);points=[];for(var j=0,jj=coords.length;j<jj;j+=2){p=new OpenLayers.Geometry.Point(parseFloat(coords[j+1]),parseFloat(coords[j]));points.push(p);} -components.push(new OpenLayers.Geometry.LineString(points));}} -var polygon=this.getElementsByTagNameNS(node,georssns,"polygon");if(polygon&&polygon.length>0){var coords;var p;var points;for(var i=0,ii=polygon.length;i<ii;i++){coords=OpenLayers.String.trim(polygon[i].firstChild.nodeValue).split(/\s+/);points=[];for(var j=0,jj=coords.length;j<jj;j+=2){p=new OpenLayers.Geometry.Point(parseFloat(coords[j+1]),parseFloat(coords[j]));points.push(p);} -components.push(new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(components)]));}} -if(this.internalProjection&&this.externalProjection){for(var i=0,ii=components.length;i<ii;i++){if(components[i]){components[i].transform(this.externalProjection,this.internalProjection);}}} -return components;},parsePersonConstructs:function(node,name,data){var persons=[];var atomns=this.namespaces.atom;var nodes=this.getElementsByTagNameNS(node,atomns,name);var oAtts=["uri","email"];for(var i=0,ii=nodes.length;i<ii;i++){var value={};value.name=this.getFirstChildValue(nodes[i],atomns,"name",null);for(var j=0,jj=oAtts.length;j<jj;j++){var attval=this.getFirstChildValue(nodes[i],atomns,oAtts[j],null);if(attval){value[oAtts[j]]=attval;}} -persons.push(value);} -if(persons.length>0){data[name+"s"]=persons;}},CLASS_NAME:"OpenLayers.Format.Atom"});OpenLayers.Format.Filter.v1_0_0=OpenLayers.Class(OpenLayers.Format.GML.v2,OpenLayers.Format.Filter.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/ogc/filter/1.0.0/filter.xsd",initialize:function(options){OpenLayers.Format.GML.v2.prototype.initialize.apply(this,[options]);},readers:{"ogc":OpenLayers.Util.applyDefaults({"PropertyIsEqualTo":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsNotEqualTo":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.NOT_EQUAL_TO});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsLike":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LIKE});this.readChildNodes(node,filter);var wildCard=node.getAttribute("wildCard");var singleChar=node.getAttribute("singleChar");var esc=node.getAttribute("escape");filter.value2regex(wildCard,singleChar,esc);obj.filters.push(filter);}},OpenLayers.Format.Filter.v1.prototype.readers["ogc"]),"gml":OpenLayers.Format.GML.v2.prototype.readers["gml"],"feature":OpenLayers.Format.GML.v2.prototype.readers["feature"]},writers:{"ogc":OpenLayers.Util.applyDefaults({"PropertyIsEqualTo":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsEqualTo");this.writeNode("PropertyName",filter,node);this.writeNode("Literal",filter.value,node);return node;},"PropertyIsNotEqualTo":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsNotEqualTo");this.writeNode("PropertyName",filter,node);this.writeNode("Literal",filter.value,node);return node;},"PropertyIsLike":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsLike",{attributes:{wildCard:"*",singleChar:".",escape:"!"}});this.writeNode("PropertyName",filter,node);this.writeNode("Literal",filter.regex2value(),node);return node;},"BBOX":function(filter){var node=this.createElementNSPlus("ogc:BBOX");this.writeNode("PropertyName",filter,node);var box=this.writeNode("gml:Box",filter.value,node);if(filter.projection){box.setAttribute("srsName",filter.projection);} -return node;}},OpenLayers.Format.Filter.v1.prototype.writers["ogc"]),"gml":OpenLayers.Format.GML.v2.prototype.writers["gml"],"feature":OpenLayers.Format.GML.v2.prototype.writers["feature"]},writeSpatial:function(filter,name){var node=this.createElementNSPlus("ogc:"+name);this.writeNode("PropertyName",filter,node);var child;if(filter.value instanceof OpenLayers.Geometry){child=this.writeNode("feature:_geometry",filter.value).firstChild;}else{child=this.writeNode("gml:Box",filter.value);} -if(filter.projection){child.setAttribute("srsName",filter.projection);} -node.appendChild(child);return node;},CLASS_NAME:"OpenLayers.Format.Filter.v1_0_0"});OpenLayers.Format.Filter.v1_1_0=OpenLayers.Class(OpenLayers.Format.GML.v3,OpenLayers.Format.Filter.v1,{VERSION:"1.1.0",schemaLocation:"http://www.opengis.net/ogc/filter/1.1.0/filter.xsd",initialize:function(options){OpenLayers.Format.GML.v3.prototype.initialize.apply(this,[options]);},readers:{"ogc":OpenLayers.Util.applyDefaults({"PropertyIsEqualTo":function(node,obj){var matchCase=node.getAttribute("matchCase");var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,matchCase:!(matchCase==="false"||matchCase==="0")});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsNotEqualTo":function(node,obj){var matchCase=node.getAttribute("matchCase");var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.NOT_EQUAL_TO,matchCase:!(matchCase==="false"||matchCase==="0")});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsLike":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LIKE});this.readChildNodes(node,filter);var wildCard=node.getAttribute("wildCard");var singleChar=node.getAttribute("singleChar");var esc=node.getAttribute("escapeChar");filter.value2regex(wildCard,singleChar,esc);obj.filters.push(filter);}},OpenLayers.Format.Filter.v1.prototype.readers["ogc"]),"gml":OpenLayers.Format.GML.v3.prototype.readers["gml"],"feature":OpenLayers.Format.GML.v3.prototype.readers["feature"]},writers:{"ogc":OpenLayers.Util.applyDefaults({"PropertyIsEqualTo":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsEqualTo",{attributes:{matchCase:filter.matchCase}});this.writeNode("PropertyName",filter,node);this.writeNode("Literal",filter.value,node);return node;},"PropertyIsNotEqualTo":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsNotEqualTo",{attributes:{matchCase:filter.matchCase}});this.writeNode("PropertyName",filter,node);this.writeNode("Literal",filter.value,node);return node;},"PropertyIsLike":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsLike",{attributes:{wildCard:"*",singleChar:".",escapeChar:"!"}});this.writeNode("PropertyName",filter,node);this.writeNode("Literal",filter.regex2value(),node);return node;},"BBOX":function(filter){var node=this.createElementNSPlus("ogc:BBOX");this.writeNode("PropertyName",filter,node);var box=this.writeNode("gml:Envelope",filter.value);if(filter.projection){box.setAttribute("srsName",filter.projection);} -node.appendChild(box);return node;}},OpenLayers.Format.Filter.v1.prototype.writers["ogc"]),"gml":OpenLayers.Format.GML.v3.prototype.writers["gml"],"feature":OpenLayers.Format.GML.v3.prototype.writers["feature"]},writeSpatial:function(filter,name){var node=this.createElementNSPlus("ogc:"+name);this.writeNode("PropertyName",filter,node);var child;if(filter.value instanceof OpenLayers.Geometry){child=this.writeNode("feature:_geometry",filter.value).firstChild;}else{child=this.writeNode("gml:Envelope",filter.value);} -if(filter.projection){child.setAttribute("srsName",filter.projection);} -node.appendChild(child);return node;},CLASS_NAME:"OpenLayers.Format.Filter.v1_1_0"});OpenLayers.Format.SOSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.SOSCapabilities,{namespaces:{ows:"http://www.opengis.net/ows/1.1",sos:"http://www.opengis.net/sos/1.0",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink"},regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);this.options=options;},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -if(data&&data.nodeType==9){data=data.documentElement;} -var capabilities={};this.readNode(data,capabilities);return capabilities;},readers:{"gml":OpenLayers.Util.applyDefaults({"name":function(node,obj){obj.name=this.getChildValue(node);},"TimePeriod":function(node,obj){obj.timePeriod={};this.readChildNodes(node,obj.timePeriod);},"beginPosition":function(node,timePeriod){timePeriod.beginPosition=this.getChildValue(node);},"endPosition":function(node,timePeriod){timePeriod.endPosition=this.getChildValue(node);}},OpenLayers.Format.GML.v3.prototype.readers["gml"]),"sos":{"Capabilities":function(node,obj){this.readChildNodes(node,obj);},"Contents":function(node,obj){obj.contents={};this.readChildNodes(node,obj.contents);},"ObservationOfferingList":function(node,contents){contents.offeringList={};this.readChildNodes(node,contents.offeringList);},"ObservationOffering":function(node,offeringList){var id=this.getAttributeNS(node,this.namespaces.gml,"id");offeringList[id]={procedures:[],observedProperties:[],featureOfInterestIds:[],responseFormats:[],resultModels:[],responseModes:[]};this.readChildNodes(node,offeringList[id]);},"time":function(node,offering){offering.time={};this.readChildNodes(node,offering.time);},"procedure":function(node,offering){offering.procedures.push(this.getAttributeNS(node,this.namespaces.xlink,"href"));},"observedProperty":function(node,offering){offering.observedProperties.push(this.getAttributeNS(node,this.namespaces.xlink,"href"));},"featureOfInterest":function(node,offering){offering.featureOfInterestIds.push(this.getAttributeNS(node,this.namespaces.xlink,"href"));},"responseFormat":function(node,offering){offering.responseFormats.push(this.getChildValue(node));},"resultModel":function(node,offering){offering.resultModels.push(this.getChildValue(node));},"responseMode":function(node,offering){offering.responseModes.push(this.getChildValue(node));;}},"ows":OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers["ows"]},CLASS_NAME:"OpenLayers.Format.SOSCapabilities.v1_0_0"});OpenLayers.Format.SOSGetFeatureOfInterest=OpenLayers.Class(OpenLayers.Format.XML,{VERSION:"1.0.0",namespaces:{sos:"http://www.opengis.net/sos/1.0",gml:"http://www.opengis.net/gml",sa:"http://www.opengis.net/sampling/1.0",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosAll.xsd",defaultPrefix:"sos",regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -if(data&&data.nodeType==9){data=data.documentElement;} -var info={features:[]};this.readNode(data,info);var features=[];for(var i=0,len=info.features.length;i<len;i++){var container=info.features[i];if(this.internalProjection&&this.externalProjection&&container.components[0]){container.components[0].transform(this.externalProjection,this.internalProjection);} -var feature=new OpenLayers.Feature.Vector(container.components[0],container.attributes);features.push(feature);} -return features;},readers:{"sa":{"SamplingPoint":function(node,obj){if(!obj.attributes){var feature={attributes:{}};obj.features.push(feature);obj=feature;} -obj.attributes.id=this.getAttributeNS(node,this.namespaces.gml,"id");this.readChildNodes(node,obj);},"position":function(node,obj){this.readChildNodes(node,obj);}},"gml":OpenLayers.Util.applyDefaults({"FeatureCollection":function(node,obj){this.readChildNodes(node,obj);},"featureMember":function(node,obj){var feature={attributes:{}};obj.features.push(feature);this.readChildNodes(node,feature);},"name":function(node,obj){obj.attributes.name=this.getChildValue(node);},"pos":function(node,obj){if(!this.externalProjection){this.externalProjection=new OpenLayers.Projection(node.getAttribute("srsName"));} -OpenLayers.Format.GML.v3.prototype.readers.gml.pos.apply(this,[node,obj]);}},OpenLayers.Format.GML.v3.prototype.readers.gml)},writers:{"sos":{"GetFeatureOfInterest":function(options){var node=this.createElementNSPlus("GetFeatureOfInterest",{attributes:{version:this.VERSION,service:'SOS',"xsi:schemaLocation":this.schemaLocation}});for(var i=0,len=options.fois.length;i<len;i++){this.writeNode("FeatureOfInterestId",{foi:options.fois[i]},node);} -return node;},"FeatureOfInterestId":function(options){var node=this.createElementNSPlus("FeatureOfInterestId",{value:options.foi});return node;}}},CLASS_NAME:"OpenLayers.Format.SOSGetFeatureOfInterest"});OpenLayers.Format.SOSGetObservation=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows",gml:"http://www.opengis.net/gml",sos:"http://www.opengis.net/sos/1.0",ogc:"http://www.opengis.net/ogc",om:"http://www.opengis.net/om/1.0",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosGetObservation.xsd",defaultPrefix:"sos",initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -if(data&&data.nodeType==9){data=data.documentElement;} -var info={measurements:[]};this.readNode(data,info);return info;},write:function(options){var node=this.writeNode("sos:GetObservation",options);node.setAttribute("xmlns:om",this.namespaces.om);this.setAttributeNS(node,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[node]);},readers:{"om":{"ObservationCollection":function(node,obj){obj.id=this.getAttributeNS(node,this.namespaces.gml,"id");this.readChildNodes(node,obj);},"member":function(node,observationCollection){this.readChildNodes(node,observationCollection);},"Measurement":function(node,observationCollection){var measurement={};observationCollection.measurements.push(measurement);this.readChildNodes(node,measurement);},"samplingTime":function(node,measurement){var samplingTime={};measurement.samplingTime=samplingTime;this.readChildNodes(node,samplingTime);},"observedProperty":function(node,measurement){measurement.observedProperty=this.getAttributeNS(node,this.namespaces.xlink,"href");this.readChildNodes(node,measurement);},"procedure":function(node,measurement){measurement.procedure=this.getAttributeNS(node,this.namespaces.xlink,"href");this.readChildNodes(node,measurement);},"result":function(node,measurement){var result={};measurement.result=result;if(this.getChildValue(node)!==''){result.value=this.getChildValue(node);result.uom=node.getAttribute("uom");}else{this.readChildNodes(node,result);}}},"gml":OpenLayers.Util.applyDefaults({"TimeInstant":function(node,samplingTime){var timeInstant={};samplingTime.timeInstant=timeInstant;this.readChildNodes(node,timeInstant);},"timePosition":function(node,timeInstant){timeInstant.timePosition=this.getChildValue(node);}},OpenLayers.Format.GML.v3.prototype.readers.gml)},writers:{"sos":{"GetObservation":function(options){var node=this.createElementNSPlus("GetObservation",{attributes:{version:this.VERSION,service:'SOS'}});this.writeNode("offering",options,node);this.writeNode("eventTime",options,node);this.writeNode("procedure",options,node);this.writeNode("observedProperty",options,node);this.writeNode("responseFormat",options,node);this.writeNode("resultModel",options,node);this.writeNode("responseMode",options,node);return node;},"responseFormat":function(options){return this.createElementNSPlus("responseFormat",{value:options.responseFormat});},"procedure":function(options){return this.createElementNSPlus("procedure",{value:options.procedure});},"offering":function(options){return this.createElementNSPlus("offering",{value:options.offering});},"observedProperty":function(options){return this.createElementNSPlus("observedProperty",{value:options.observedProperty});},"eventTime":function(options){var node=this.createElementNSPlus("eventTime");if(options.eventTime==='latest'){this.writeNode("ogc:TM_Equals",options,node);} -return node;},"resultModel":function(options){return this.createElementNSPlus("resultModel",{value:options.resultModel});},"responseMode":function(options){return this.createElementNSPlus("responseMode",{value:options.responseMode});}},"ogc":{"TM_Equals":function(options){var node=this.createElementNSPlus("ogc:TM_Equals");this.writeNode("ogc:PropertyName",{property:"urn:ogc:data:time:iso8601"},node);if(options.eventTime==='latest'){this.writeNode("gml:TimeInstant",{value:'latest'},node);} -return node;},"PropertyName":function(options){return this.createElementNSPlus("ogc:PropertyName",{value:options.property});}},"gml":{"TimeInstant":function(options){var node=this.createElementNSPlus("gml:TimeInstant");this.writeNode("gml:timePosition",options,node);return node;},"timePosition":function(options){var node=this.createElementNSPlus("gml:timePosition",{value:options.value});return node;}}},CLASS_NAME:"OpenLayers.Format.SOSGetObservation"});OpenLayers.Format.CSWGetRecords.v2_0_2=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",csw:"http://www.opengis.net/cat/csw/2.0.2",dc:"http://purl.org/dc/elements/1.1/",dct:"http://purl.org/dc/terms/",ows:"http://www.opengis.net/ows"},defaultPrefix:"csw",version:"2.0.2",schemaLocation:"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",requestId:null,resultType:null,outputFormat:null,outputSchema:null,startPosition:null,maxRecords:null,DistributedSearch:null,ResponseHandler:null,Query:null,regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -if(data&&data.nodeType==9){data=data.documentElement;} -var obj={};this.readNode(data,obj);return obj;},readers:{"csw":{"GetRecordsResponse":function(node,obj){obj.records=[];this.readChildNodes(node,obj);var version=this.getAttributeNS(node,"",'version');if(version!=""){obj.version=version;}},"RequestId":function(node,obj){obj.RequestId=this.getChildValue(node);},"SearchStatus":function(node,obj){obj.SearchStatus={};var timestamp=this.getAttributeNS(node,"",'timestamp');if(timestamp!=""){obj.SearchStatus.timestamp=timestamp;}},"SearchResults":function(node,obj){this.readChildNodes(node,obj);var attrs=node.attributes;var SearchResults={};for(var i=0,len=attrs.length;i<len;++i){if((attrs[i].name=="numberOfRecordsMatched")||(attrs[i].name=="numberOfRecordsReturned")||(attrs[i].name=="nextRecord")){SearchResults[attrs[i].name]=parseInt(attrs[i].nodeValue);}else{SearchResults[attrs[i].name]=attrs[i].nodeValue;}} -obj.SearchResults=SearchResults;},"SummaryRecord":function(node,obj){var record={type:"SummaryRecord"};this.readChildNodes(node,record);obj.records.push(record);},"BriefRecord":function(node,obj){var record={type:"BriefRecord"};this.readChildNodes(node,record);obj.records.push(record);},"DCMIRecord":function(node,obj){var record={type:"DCMIRecord"};this.readChildNodes(node,record);obj.records.push(record);},"Record":function(node,obj){var record={type:"Record"};this.readChildNodes(node,record);obj.records.push(record);}},"dc":{"*":function(node,obj){var name=node.localName||node.nodeName.split(":").pop();if(!(obj[name]instanceof Array)){obj[name]=new Array();} -var dc_element={};var attrs=node.attributes;for(var i=0,len=attrs.length;i<len;++i){dc_element[attrs[i].name]=attrs[i].nodeValue;} -dc_element.value=this.getChildValue(node);obj[name].push(dc_element);}},"dct":{"*":function(node,obj){var name=node.localName||node.nodeName.split(":").pop();if(!(obj[name]instanceof Array)){obj[name]=new Array();} -obj[name].push(this.getChildValue(node));}},"ows":OpenLayers.Util.applyDefaults({"BoundingBox":function(node,obj){if(obj.bounds){obj.BoundingBox=[{crs:obj.projection,value:[obj.bounds.left,obj.bounds.bottom,obj.bounds.right,obj.bounds.top]}];delete obj.projection;delete obj.bounds;} -OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers["ows"]["BoundingBox"].apply(this,arguments);}},OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers["ows"])},write:function(options){var node=this.writeNode("csw:GetRecords",options);return OpenLayers.Format.XML.prototype.write.apply(this,[node]);},writers:{"csw":{"GetRecords":function(options){if(!options){options={};} -var node=this.createElementNSPlus("csw:GetRecords",{attributes:{service:"CSW",version:this.version,requestId:options.requestId||this.requestId,resultType:options.resultType||this.resultType,outputFormat:options.outputFormat||this.outputFormat,outputSchema:options.outputSchema||this.outputSchema,startPosition:options.startPosition||this.startPosition,maxRecords:options.maxRecords||this.maxRecords}});if(options.DistributedSearch||this.DistributedSearch){this.writeNode("csw:DistributedSearch",options.DistributedSearch||this.DistributedSearch,node);} -var ResponseHandler=options.ResponseHandler||this.ResponseHandler;if(ResponseHandler instanceof Array&&ResponseHandler.length>0){for(var i=0,len=ResponseHandler.length;i<len;i++){this.writeNode("csw:ResponseHandler",ResponseHandler[i],node);}} -this.writeNode("Query",options.Query||this.Query,node);return node;},"DistributedSearch":function(options){var node=this.createElementNSPlus("csw:DistributedSearch",{attributes:{hopCount:options.hopCount}});return node;},"ResponseHandler":function(options){var node=this.createElementNSPlus("csw:ResponseHandler",{value:options.value});return node;},"Query":function(options){if(!options){options={};} -var node=this.createElementNSPlus("csw:Query",{attributes:{typeNames:options.typeNames||"csw:Record"}});var ElementName=options.ElementName;if(ElementName instanceof Array&&ElementName.length>0){for(var i=0,len=ElementName.length;i<len;i++){this.writeNode("csw:ElementName",ElementName[i],node);}}else{this.writeNode("csw:ElementSetName",options.ElementSetName||{value:'summary'},node);} -if(options.Constraint){this.writeNode("csw:Constraint",options.Constraint,node);} -return node;},"ElementName":function(options){var node=this.createElementNSPlus("csw:ElementName",{value:options.value});return node;},"ElementSetName":function(options){var node=this.createElementNSPlus("csw:ElementSetName",{attributes:{typeNames:options.typeNames},value:options.value});return node;},"Constraint":function(options){var node=this.createElementNSPlus("csw:Constraint",{attributes:{version:options.version}});if(options.Filter){var format=new OpenLayers.Format.Filter({version:options.version});node.appendChild(format.write(options.Filter));}else if(options.CqlText){var child=this.createElementNSPlus("CqlText",{value:options.CqlText.value});node.appendChild(child);} -return node;}}},CLASS_NAME:"OpenLayers.Format.CSWGetRecords.v2_0_2"});OpenLayers.Format.SLD.v1=OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0,{namespaces:{sld:"http://www.opengis.net/sld",ogc:"http://www.opengis.net/ogc",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"sld",schemaLocation:null,multipleSymbolizers:false,featureTypeCounter:null,defaultSymbolizer:{fillColor:"#808080",fillOpacity:1,strokeColor:"#000000",strokeOpacity:1,strokeWidth:1,strokeDashstyle:"solid",pointRadius:3,graphicName:"square"},initialize:function(options){OpenLayers.Format.Filter.v1_0_0.prototype.initialize.apply(this,[options]);},read:function(data,options){options=OpenLayers.Util.applyDefaults(options,this.options);var sld={namedLayers:options.namedLayersAsArray===true?[]:{}};this.readChildNodes(data,sld);return sld;},readers:OpenLayers.Util.applyDefaults({"sld":{"StyledLayerDescriptor":function(node,sld){sld.version=node.getAttribute("version");this.readChildNodes(node,sld);},"Name":function(node,obj){obj.name=this.getChildValue(node);},"Title":function(node,obj){obj.title=this.getChildValue(node);},"Abstract":function(node,obj){obj.description=this.getChildValue(node);},"NamedLayer":function(node,sld){var layer={userStyles:[],namedStyles:[]};this.readChildNodes(node,layer);for(var i=0,len=layer.userStyles.length;i<len;++i){layer.userStyles[i].layerName=layer.name;} -if(sld.namedLayers instanceof Array){sld.namedLayers.push(layer);}else{sld.namedLayers[layer.name]=layer;}},"NamedStyle":function(node,layer){layer.namedStyles.push(this.getChildName(node.firstChild));},"UserStyle":function(node,layer){var obj={defaultsPerSymbolizer:true,rules:[]};this.featureTypeCounter=-1;this.readChildNodes(node,obj);var style;if(this.multipleSymbolizers){delete obj.defaultsPerSymbolizer;style=new OpenLayers.Style2(obj);}else{style=new OpenLayers.Style(this.defaultSymbolizer,obj);} -layer.userStyles.push(style);},"IsDefault":function(node,style){if(this.getChildValue(node)=="1"){style.isDefault=true;}},"FeatureTypeStyle":function(node,style){++this.featureTypeCounter;var obj={rules:this.multipleSymbolizers?style.rules:[]};this.readChildNodes(node,obj);if(!this.multipleSymbolizers){style.rules=obj.rules;}},"Rule":function(node,obj){var config;if(this.multipleSymbolizers){config={symbolizers:[]};} -var rule=new OpenLayers.Rule(config);this.readChildNodes(node,rule);obj.rules.push(rule);},"ElseFilter":function(node,rule){rule.elseFilter=true;},"MinScaleDenominator":function(node,rule){rule.minScaleDenominator=parseFloat(this.getChildValue(node));},"MaxScaleDenominator":function(node,rule){rule.maxScaleDenominator=parseFloat(this.getChildValue(node));},"TextSymbolizer":function(node,rule){var config={};this.readChildNodes(node,config);if(this.multipleSymbolizers){config.zIndex=this.featureTypeCounter;rule.symbolizers.push(new OpenLayers.Symbolizer.Text(config));}else{rule.symbolizer["Text"]=OpenLayers.Util.applyDefaults(config,rule.symbolizer["Text"]);}},"Label":function(node,symbolizer){var obj={};this.readChildNodes(node,obj);if(obj.property){symbolizer.label="${"+obj.property+"}";}else{var value=this.readOgcExpression(node);if(value){symbolizer.label=value;}}},"Font":function(node,symbolizer){this.readChildNodes(node,symbolizer);},"Halo":function(node,symbolizer){var obj={};this.readChildNodes(node,obj);symbolizer.haloRadius=obj.haloRadius;symbolizer.haloColor=obj.fillColor;symbolizer.haloOpacity=obj.fillOpacity;},"Radius":function(node,symbolizer){var radius=this.readOgcExpression(node);if(radius!=null){symbolizer.haloRadius=radius;}},"RasterSymbolizer":function(node,rule){var config={};this.readChildNodes(node,config);if(this.multipleSymbolizers){config.zIndex=this.featureTypeCounter;rule.symbolizers.push(new OpenLayers.Symbolizer.Raster(config));}else{rule.symbolizer["Raster"]=OpenLayers.Util.applyDefaults(config,rule.symbolizer["Raster"]);}},"Geometry":function(node,obj){obj.geometry={};this.readChildNodes(node,obj.geometry);},"ColorMap":function(node,symbolizer){symbolizer.colorMap=[];this.readChildNodes(node,symbolizer.colorMap);},"ColorMapEntry":function(node,colorMap){var q=node.getAttribute("quantity");var o=node.getAttribute("opacity");colorMap.push({color:node.getAttribute("color"),quantity:q!==null?parseFloat(q):undefined,label:node.getAttribute("label")||undefined,opacity:o!==null?parseFloat(o):undefined});},"LineSymbolizer":function(node,rule){var config={};this.readChildNodes(node,config);if(this.multipleSymbolizers){config.zIndex=this.featureTypeCounter;rule.symbolizers.push(new OpenLayers.Symbolizer.Line(config));}else{rule.symbolizer["Line"]=OpenLayers.Util.applyDefaults(config,rule.symbolizer["Line"]);}},"PolygonSymbolizer":function(node,rule){var config={fill:false,stroke:false};if(!this.multipleSymbolizers){config=rule.symbolizer["Polygon"]||config;} -this.readChildNodes(node,config);if(this.multipleSymbolizers){config.zIndex=this.featureTypeCounter;rule.symbolizers.push(new OpenLayers.Symbolizer.Polygon(config));}else{rule.symbolizer["Polygon"]=config;}},"PointSymbolizer":function(node,rule){var config={fill:false,stroke:false,graphic:false};if(!this.multipleSymbolizers){config=rule.symbolizer["Point"]||config;} -this.readChildNodes(node,config);if(this.multipleSymbolizers){config.zIndex=this.featureTypeCounter;rule.symbolizers.push(new OpenLayers.Symbolizer.Point(config));}else{rule.symbolizer["Point"]=config;}},"Stroke":function(node,symbolizer){symbolizer.stroke=true;this.readChildNodes(node,symbolizer);},"Fill":function(node,symbolizer){symbolizer.fill=true;this.readChildNodes(node,symbolizer);},"CssParameter":function(node,symbolizer){var cssProperty=node.getAttribute("name");var symProperty=this.cssMap[cssProperty];if(symProperty){var value=this.readOgcExpression(node);if(value){symbolizer[symProperty]=value;}}},"Graphic":function(node,symbolizer){symbolizer.graphic=true;var graphic={};this.readChildNodes(node,graphic);var properties=["stroke","strokeColor","strokeWidth","strokeOpacity","strokeLinecap","fill","fillColor","fillOpacity","graphicName","rotation","graphicFormat"];var prop,value;for(var i=0,len=properties.length;i<len;++i){prop=properties[i];value=graphic[prop];if(value!=undefined){symbolizer[prop]=value;}} -if(graphic.opacity!=undefined){symbolizer.graphicOpacity=graphic.opacity;} -if(graphic.size!=undefined){symbolizer.pointRadius=graphic.size/2;} -if(graphic.href!=undefined){symbolizer.externalGraphic=graphic.href;} -if(graphic.rotation!=undefined){symbolizer.rotation=graphic.rotation;}},"ExternalGraphic":function(node,graphic){this.readChildNodes(node,graphic);},"Mark":function(node,graphic){this.readChildNodes(node,graphic);},"WellKnownName":function(node,graphic){graphic.graphicName=this.getChildValue(node);},"Opacity":function(node,obj){var opacity=this.readOgcExpression(node);if(opacity){obj.opacity=opacity;}},"Size":function(node,obj){var size=this.readOgcExpression(node);if(size){obj.size=size;}},"Rotation":function(node,obj){var rotation=this.readOgcExpression(node);if(rotation){obj.rotation=rotation;}},"OnlineResource":function(node,obj){obj.href=this.getAttributeNS(node,this.namespaces.xlink,"href");},"Format":function(node,graphic){graphic.graphicFormat=this.getChildValue(node);}}},OpenLayers.Format.Filter.v1_0_0.prototype.readers),cssMap:{"stroke":"strokeColor","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-dasharray":"strokeDashstyle","fill":"fillColor","fill-opacity":"fillOpacity","font-family":"fontFamily","font-size":"fontSize","font-weight":"fontWeight","font-style":"fontStyle"},getCssProperty:function(sym){var css=null;for(var prop in this.cssMap){if(this.cssMap[prop]==sym){css=prop;break;}} -return css;},getGraphicFormat:function(href){var format,regex;for(var key in this.graphicFormats){if(this.graphicFormats[key].test(href)){format=key;break;}} -return format||this.defautlGraphicFormat;},defaultGraphicFormat:"image/png",graphicFormats:{"image/jpeg":/\.jpe?g$/i,"image/gif":/\.gif$/i,"image/png":/\.png$/i},write:function(sld){return this.writers.sld.StyledLayerDescriptor.apply(this,[sld]);},writers:OpenLayers.Util.applyDefaults({"sld":{"StyledLayerDescriptor":function(sld){var root=this.createElementNSPlus("sld:StyledLayerDescriptor",{attributes:{"version":this.VERSION,"xsi:schemaLocation":this.schemaLocation}});root.setAttribute("xmlns:ogc",this.namespaces.ogc);root.setAttribute("xmlns:gml",this.namespaces.gml);if(sld.name){this.writeNode("Name",sld.name,root);} -if(sld.title){this.writeNode("Title",sld.title,root);} -if(sld.description){this.writeNode("Abstract",sld.description,root);} -if(sld.namedLayers instanceof Array){for(var i=0,len=sld.namedLayers.length;i<len;++i){this.writeNode("NamedLayer",sld.namedLayers[i],root);}}else{for(var name in sld.namedLayers){this.writeNode("NamedLayer",sld.namedLayers[name],root);}} -return root;},"Name":function(name){return this.createElementNSPlus("sld:Name",{value:name});},"Title":function(title){return this.createElementNSPlus("sld:Title",{value:title});},"Abstract":function(description){return this.createElementNSPlus("sld:Abstract",{value:description});},"NamedLayer":function(layer){var node=this.createElementNSPlus("sld:NamedLayer");this.writeNode("Name",layer.name,node);if(layer.namedStyles){for(var i=0,len=layer.namedStyles.length;i<len;++i){this.writeNode("NamedStyle",layer.namedStyles[i],node);}} -if(layer.userStyles){for(var i=0,len=layer.userStyles.length;i<len;++i){this.writeNode("UserStyle",layer.userStyles[i],node);}} -return node;},"NamedStyle":function(name){var node=this.createElementNSPlus("sld:NamedStyle");this.writeNode("Name",name,node);return node;},"UserStyle":function(style){var node=this.createElementNSPlus("sld:UserStyle");if(style.name){this.writeNode("Name",style.name,node);} -if(style.title){this.writeNode("Title",style.title,node);} -if(style.description){this.writeNode("Abstract",style.description,node);} -if(style.isDefault){this.writeNode("IsDefault",style.isDefault,node);} -if(this.multipleSymbolizers&&style.rules){var rulesByZ={0:[]};var zValues=[0];var rule,ruleMap,symbolizer,zIndex,clone;for(var i=0,ii=style.rules.length;i<ii;++i){rule=style.rules[i];if(rule.symbolizers){ruleMap={};for(var j=0,jj=rule.symbolizers.length;j<jj;++j){symbolizer=rule.symbolizers[j];zIndex=symbolizer.zIndex;if(!(zIndex in ruleMap)){clone=rule.clone();clone.symbolizers=[];ruleMap[zIndex]=clone;} -ruleMap[zIndex].symbolizers.push(symbolizer.clone());} -for(zIndex in ruleMap){if(!(zIndex in rulesByZ)){zValues.push(zIndex);rulesByZ[zIndex]=[];} -rulesByZ[zIndex].push(ruleMap[zIndex]);}}else{rulesByZ[0].push(rule.clone());}} -zValues.sort();var rules;for(var i=0,ii=zValues.length;i<ii;++i){rules=rulesByZ[zValues[i]];if(rules.length>0){clone=style.clone();clone.rules=rulesByZ[zValues[i]];this.writeNode("FeatureTypeStyle",clone,node);}}}else{this.writeNode("FeatureTypeStyle",style,node);} -return node;},"IsDefault":function(bool){return this.createElementNSPlus("sld:IsDefault",{value:(bool)?"1":"0"});},"FeatureTypeStyle":function(style){var node=this.createElementNSPlus("sld:FeatureTypeStyle");for(var i=0,len=style.rules.length;i<len;++i){this.writeNode("Rule",style.rules[i],node);} -return node;},"Rule":function(rule){var node=this.createElementNSPlus("sld:Rule");if(rule.name){this.writeNode("Name",rule.name,node);} -if(rule.title){this.writeNode("Title",rule.title,node);} -if(rule.description){this.writeNode("Abstract",rule.description,node);} -if(rule.elseFilter){this.writeNode("ElseFilter",null,node);}else if(rule.filter){this.writeNode("ogc:Filter",rule.filter,node);} -if(rule.minScaleDenominator!=undefined){this.writeNode("MinScaleDenominator",rule.minScaleDenominator,node);} -if(rule.maxScaleDenominator!=undefined){this.writeNode("MaxScaleDenominator",rule.maxScaleDenominator,node);} -var type,symbolizer;if(this.multipleSymbolizers&&rule.symbolizers){var symbolizer;for(var i=0,ii=rule.symbolizers.length;i<ii;++i){symbolizer=rule.symbolizers[i];type=symbolizer.CLASS_NAME.split(".").pop();this.writeNode(type+"Symbolizer",symbolizer,node);}}else{var types=OpenLayers.Style.SYMBOLIZER_PREFIXES;for(var i=0,len=types.length;i<len;++i){type=types[i];symbolizer=rule.symbolizer[type];if(symbolizer){this.writeNode(type+"Symbolizer",symbolizer,node);}}} -return node;},"ElseFilter":function(){return this.createElementNSPlus("sld:ElseFilter");},"MinScaleDenominator":function(scale){return this.createElementNSPlus("sld:MinScaleDenominator",{value:scale});},"MaxScaleDenominator":function(scale){return this.createElementNSPlus("sld:MaxScaleDenominator",{value:scale});},"LineSymbolizer":function(symbolizer){var node=this.createElementNSPlus("sld:LineSymbolizer");this.writeNode("Stroke",symbolizer,node);return node;},"Stroke":function(symbolizer){var node=this.createElementNSPlus("sld:Stroke");if(symbolizer.strokeColor!=undefined){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"strokeColor"},node);} -if(symbolizer.strokeOpacity!=undefined){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"strokeOpacity"},node);} -if(symbolizer.strokeWidth!=undefined){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"strokeWidth"},node);} -if(symbolizer.strokeDashstyle!=undefined&&symbolizer.strokeDashstyle!=="solid"){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"strokeDashstyle"},node);} -if(symbolizer.strokeLinecap!=undefined){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"strokeLinecap"},node);} -return node;},"CssParameter":function(obj){return this.createElementNSPlus("sld:CssParameter",{attributes:{name:this.getCssProperty(obj.key)},value:obj.symbolizer[obj.key]});},"TextSymbolizer":function(symbolizer){var node=this.createElementNSPlus("sld:TextSymbolizer");if(symbolizer.label!=null){this.writeNode("Label",symbolizer.label,node);} -if(symbolizer.fontFamily!=null||symbolizer.fontSize!=null||symbolizer.fontWeight!=null||symbolizer.fontStyle!=null){this.writeNode("Font",symbolizer,node);} -if(symbolizer.haloRadius!=null||symbolizer.haloColor!=null||symbolizer.haloOpacity!=null){this.writeNode("Halo",symbolizer,node);} -if(symbolizer.fillColor!=null||symbolizer.fillOpacity!=null){this.writeNode("Fill",symbolizer,node);} -return node;},"Font":function(symbolizer){var node=this.createElementNSPlus("sld:Font");if(symbolizer.fontFamily){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"fontFamily"},node);} -if(symbolizer.fontSize){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"fontSize"},node);} -if(symbolizer.fontWeight){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"fontWeight"},node);} -if(symbolizer.fontStyle){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"fontStyle"},node);} -return node;},"Label":function(label){var node=this.createElementNSPlus("sld:Label");var tokens=label.split("${");node.appendChild(this.createTextNode(tokens[0]));var item,last;for(var i=1,len=tokens.length;i<len;i++){item=tokens[i];last=item.indexOf("}");if(last>0){this.writeNode("ogc:PropertyName",{property:item.substring(0,last)},node);node.appendChild(this.createTextNode(item.substring(++last)));}else{node.appendChild(this.createTextNode("${"+item));}} -return node;},"Halo":function(symbolizer){var node=this.createElementNSPlus("sld:Halo");if(symbolizer.haloRadius){this.writeNode("Radius",symbolizer.haloRadius,node);} -if(symbolizer.haloColor||symbolizer.haloOpacity){this.writeNode("Fill",{fillColor:symbolizer.haloColor,fillOpacity:symbolizer.haloOpacity},node);} -return node;},"Radius":function(value){return this.createElementNSPlus("sld:Radius",{value:value});},"RasterSymbolizer":function(symbolizer){var node=this.createElementNSPlus("sld:RasterSymbolizer");if(symbolizer.geometry){this.writeNode("Geometry",symbolizer.geometry,node);} -if(symbolizer.opacity){this.writeNode("Opacity",symbolizer.opacity,node);} -if(symbolizer.colorMap){this.writeNode("ColorMap",symbolizer.colorMap,node);} -return node;},"Geometry":function(geometry){var node=this.createElementNSPlus("sld:Geometry");if(geometry.property){this.writeNode("ogc:PropertyName",geometry,node);} -return node;},"ColorMap":function(colorMap){var node=this.createElementNSPlus("sld:ColorMap");for(var i=0,len=colorMap.length;i<len;++i){this.writeNode("ColorMapEntry",colorMap[i],node);} -return node;},"ColorMapEntry":function(colorMapEntry){var node=this.createElementNSPlus("sld:ColorMapEntry");var a=colorMapEntry;node.setAttribute("color",a.color);a.opacity!==undefined&&node.setAttribute("opacity",parseFloat(a.opacity));a.quantity!==undefined&&node.setAttribute("quantity",parseFloat(a.quantity));a.label!==undefined&&node.setAttribute("label",a.label);return node;},"PolygonSymbolizer":function(symbolizer){var node=this.createElementNSPlus("sld:PolygonSymbolizer");if(symbolizer.fill!==false){this.writeNode("Fill",symbolizer,node);} -if(symbolizer.stroke!==false){this.writeNode("Stroke",symbolizer,node);} -return node;},"Fill":function(symbolizer){var node=this.createElementNSPlus("sld:Fill");if(symbolizer.fillColor){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"fillColor"},node);} -if(symbolizer.fillOpacity!=null){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"fillOpacity"},node);} -return node;},"PointSymbolizer":function(symbolizer){var node=this.createElementNSPlus("sld:PointSymbolizer");this.writeNode("Graphic",symbolizer,node);return node;},"Graphic":function(symbolizer){var node=this.createElementNSPlus("sld:Graphic");if(symbolizer.externalGraphic!=undefined){this.writeNode("ExternalGraphic",symbolizer,node);}else{this.writeNode("Mark",symbolizer,node);} -if(symbolizer.graphicOpacity!=undefined){this.writeNode("Opacity",symbolizer.graphicOpacity,node);} -if(symbolizer.pointRadius!=undefined){this.writeNode("Size",symbolizer.pointRadius*2,node);} -if(symbolizer.rotation!=undefined){this.writeNode("Rotation",symbolizer.rotation,node);} -return node;},"ExternalGraphic":function(symbolizer){var node=this.createElementNSPlus("sld:ExternalGraphic");this.writeNode("OnlineResource",symbolizer.externalGraphic,node);var format=symbolizer.graphicFormat||this.getGraphicFormat(symbolizer.externalGraphic);this.writeNode("Format",format,node);return node;},"Mark":function(symbolizer){var node=this.createElementNSPlus("sld:Mark");if(symbolizer.graphicName){this.writeNode("WellKnownName",symbolizer.graphicName,node);} -if(symbolizer.fill!==false){this.writeNode("Fill",symbolizer,node);} -if(symbolizer.stroke!==false){this.writeNode("Stroke",symbolizer,node);} -return node;},"WellKnownName":function(name){return this.createElementNSPlus("sld:WellKnownName",{value:name});},"Opacity":function(value){return this.createElementNSPlus("sld:Opacity",{value:value});},"Size":function(value){return this.createElementNSPlus("sld:Size",{value:value});},"Rotation":function(value){return this.createElementNSPlus("sld:Rotation",{value:value});},"OnlineResource":function(href){return this.createElementNSPlus("sld:OnlineResource",{attributes:{"xlink:type":"simple","xlink:href":href}});},"Format":function(format){return this.createElementNSPlus("sld:Format",{value:format});}}},OpenLayers.Format.Filter.v1_0_0.prototype.writers),CLASS_NAME:"OpenLayers.Format.SLD.v1"});OpenLayers.Format.WFST.v1_0_0=OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0,OpenLayers.Format.WFST.v1,{version:"1.0.0",srsNameInQuery:false,schemaLocations:{"wfs":"http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd"},initialize:function(options){OpenLayers.Format.Filter.v1_0_0.prototype.initialize.apply(this,[options]);OpenLayers.Format.WFST.v1.prototype.initialize.apply(this,[options]);},readers:{"wfs":OpenLayers.Util.applyDefaults({"WFS_TransactionResponse":function(node,obj){obj.insertIds=[];obj.success=false;this.readChildNodes(node,obj);},"InsertResult":function(node,container){var obj={fids:[]};this.readChildNodes(node,obj);container.insertIds.push(obj.fids[0]);},"TransactionResult":function(node,obj){this.readChildNodes(node,obj);},"Status":function(node,obj){this.readChildNodes(node,obj);},"SUCCESS":function(node,obj){obj.success=true;}},OpenLayers.Format.WFST.v1.prototype.readers["wfs"]),"gml":OpenLayers.Format.GML.v2.prototype.readers["gml"],"feature":OpenLayers.Format.GML.v2.prototype.readers["feature"],"ogc":OpenLayers.Format.Filter.v1_0_0.prototype.readers["ogc"]},writers:{"wfs":OpenLayers.Util.applyDefaults({"Query":function(options){options=OpenLayers.Util.extend({featureNS:this.featureNS,featurePrefix:this.featurePrefix,featureType:this.featureType,srsName:this.srsName,srsNameInQuery:this.srsNameInQuery},options);var node=this.createElementNSPlus("wfs:Query",{attributes:{typeName:(options.featureNS?options.featurePrefix+":":"")+ -options.featureType}});if(options.srsNameInQuery&&options.srsName){node.setAttribute("srsName",options.srsName);} -if(options.featureNS){node.setAttribute("xmlns:"+options.featurePrefix,options.featureNS);} -if(options.propertyNames){for(var i=0,len=options.propertyNames.length;i<len;i++){this.writeNode("ogc:PropertyName",{property:options.propertyNames[i]},node);}} -if(options.filter){this.setFilterProperty(options.filter);this.writeNode("ogc:Filter",options.filter,node);} -return node;}},OpenLayers.Format.WFST.v1.prototype.writers["wfs"]),"gml":OpenLayers.Format.GML.v2.prototype.writers["gml"],"feature":OpenLayers.Format.GML.v2.prototype.writers["feature"],"ogc":OpenLayers.Format.Filter.v1_0_0.prototype.writers["ogc"]},CLASS_NAME:"OpenLayers.Format.WFST.v1_0_0"});OpenLayers.Format.WFST.v1_1_0=OpenLayers.Class(OpenLayers.Format.Filter.v1_1_0,OpenLayers.Format.WFST.v1,{version:"1.1.0",schemaLocations:{"wfs":"http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"},initialize:function(options){OpenLayers.Format.Filter.v1_1_0.prototype.initialize.apply(this,[options]);OpenLayers.Format.WFST.v1.prototype.initialize.apply(this,[options]);},readers:{"wfs":OpenLayers.Util.applyDefaults({"FeatureCollection":function(node,obj){obj.numberOfFeatures=parseInt(node.getAttribute("numberOfFeatures"));OpenLayers.Format.WFST.v1.prototype.readers["wfs"]["FeatureCollection"].apply(this,arguments);},"TransactionResponse":function(node,obj){obj.insertIds=[];obj.success=false;this.readChildNodes(node,obj);},"TransactionSummary":function(node,obj){obj.success=true;},"InsertResults":function(node,obj){this.readChildNodes(node,obj);},"Feature":function(node,container){var obj={fids:[]};this.readChildNodes(node,obj);container.insertIds.push(obj.fids[0]);}},OpenLayers.Format.WFST.v1.prototype.readers["wfs"]),"gml":OpenLayers.Format.GML.v3.prototype.readers["gml"],"feature":OpenLayers.Format.GML.v3.prototype.readers["feature"],"ogc":OpenLayers.Format.Filter.v1_1_0.prototype.readers["ogc"]},writers:{"wfs":OpenLayers.Util.applyDefaults({"GetFeature":function(options){var node=OpenLayers.Format.WFST.v1.prototype.writers["wfs"]["GetFeature"].apply(this,arguments);options&&options.resultType&&this.setAttributes(node,{resultType:options.resultType});return node;},"Query":function(options){options=OpenLayers.Util.extend({featureNS:this.featureNS,featurePrefix:this.featurePrefix,featureType:this.featureType,srsName:this.srsName},options);var node=this.createElementNSPlus("wfs:Query",{attributes:{typeName:(options.featureNS?options.featurePrefix+":":"")+ -options.featureType,srsName:options.srsName}});if(options.featureNS){node.setAttribute("xmlns:"+options.featurePrefix,options.featureNS);} -if(options.propertyNames){for(var i=0,len=options.propertyNames.length;i<len;i++){this.writeNode("wfs:PropertyName",{property:options.propertyNames[i]},node);}} -if(options.filter){this.setFilterProperty(options.filter);this.writeNode("ogc:Filter",options.filter,node);} -return node;},"PropertyName":function(obj){return this.createElementNSPlus("wfs:PropertyName",{value:obj.property});}},OpenLayers.Format.WFST.v1.prototype.writers["wfs"]),"gml":OpenLayers.Format.GML.v3.prototype.writers["gml"],"feature":OpenLayers.Format.GML.v3.prototype.writers["feature"],"ogc":OpenLayers.Format.Filter.v1_1_0.prototype.writers["ogc"]},CLASS_NAME:"OpenLayers.Format.WFST.v1_1_0"});OpenLayers.Protocol.SOS.v1_0_0=OpenLayers.Class(OpenLayers.Protocol,{fois:null,formatOptions:null,initialize:function(options){OpenLayers.Protocol.prototype.initialize.apply(this,[options]);if(!options.format){this.format=new OpenLayers.Format.SOSGetFeatureOfInterest(this.formatOptions);}},destroy:function(){if(this.options&&!this.options.format){this.format.destroy();} -this.format=null;OpenLayers.Protocol.prototype.destroy.apply(this);},read:function(options){options=OpenLayers.Util.extend({},options);OpenLayers.Util.applyDefaults(options,this.options||{});var response=new OpenLayers.Protocol.Response({requestType:"read"});var format=this.format;var data=OpenLayers.Format.XML.prototype.write.apply(format,[format.writeNode("sos:GetFeatureOfInterest",{fois:this.fois})]);response.priv=OpenLayers.Request.POST({url:options.url,callback:this.createCallback(this.handleRead,response,options),data:data});return response;},handleRead:function(response,options){if(options.callback){var request=response.priv;if(request.status>=200&&request.status<300){response.features=this.parseFeatures(request);response.code=OpenLayers.Protocol.Response.SUCCESS;}else{response.code=OpenLayers.Protocol.Response.FAILURE;} -options.callback.call(options.scope,response);}},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);},CLASS_NAME:"OpenLayers.Protocol.SOS.v1_0_0"});OpenLayers.Format.SLD.v1_0_0=OpenLayers.Class(OpenLayers.Format.SLD.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd",initialize:function(options){OpenLayers.Format.SLD.v1.prototype.initialize.apply(this,[options]);},CLASS_NAME:"OpenLayers.Format.SLD.v1_0_0"});OpenLayers.Protocol.WFS.v1_0_0=OpenLayers.Class(OpenLayers.Protocol.WFS.v1,{version:"1.0.0",CLASS_NAME:"OpenLayers.Protocol.WFS.v1_0_0"});OpenLayers.Protocol.WFS.v1_1_0=OpenLayers.Class(OpenLayers.Protocol.WFS.v1,{version:"1.1.0",CLASS_NAME:"OpenLayers.Protocol.WFS.v1_1_0"});OpenLayers.Format.OWSContext.v0_3_1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{owc:"http://www.opengis.net/ows-context",gml:"http://www.opengis.net/gml",kml:"http://www.opengis.net/kml/2.2",ogc:"http://www.opengis.net/ogc",ows:"http://www.opengis.net/ows",sld:"http://www.opengis.net/sld",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},VERSION:"0.3.1",schemaLocation:"http://www.opengis.net/ows-context http://www.ogcnetwork.net/schemas/owc/0.3.1/owsContext.xsd",defaultPrefix:"owc",extractAttributes:true,xy:true,regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},featureNS:"http://mapserver.gis.umn.edu/mapserver",featureType:'vector',geometryName:'geometry',nestingLayerLookup:null,initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);OpenLayers.Format.GML.v2.prototype.setGeometryTypes.call(this);},setNestingPath:function(l){if(l.layersContext){for(var i=0,len=l.layersContext.length;i<len;i++){var layerContext=l.layersContext[i];var nPath=[];var nTitle=l.title||"";if(l.metadata&&l.metadata.nestingPath){nPath=l.metadata.nestingPath.slice();} -if(nTitle!=""){nPath.push(nTitle);} -layerContext.metadata.nestingPath=nPath;if(layerContext.layersContext){this.setNestingPath(layerContext);}}}},decomposeNestingPath:function(nPath){var a=[];if(nPath instanceof Array){while(nPath.length>0){a.push(nPath.slice());nPath.pop();} -a.reverse();} -return a;},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -if(data&&data.nodeType==9){data=data.documentElement;} -var context={};this.readNode(data,context);this.setNestingPath({layersContext:context.layersContext});var layers=[];this.processLayer(layers,context);delete context.layersContext;context.layersContext=layers;return context;},processLayer:function(layerArray,layer){if(layer.layersContext){for(var i=0,len=layer.layersContext.length;i<len;i++){var l=layer.layersContext[i];layerArray.push(l);if(l.layersContext){this.processLayer(layerArray,l);}}}},write:function(context,options){var name="OWSContext";this.nestingLayerLookup={};options=options||{};OpenLayers.Util.applyDefaults(options,context);var root=this.writeNode(name,options);this.nestingLayerLookup=null;this.setAttributeNS(root,this.namespaces["xsi"],"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[root]);},readers:{"kml":{"Document":function(node,obj){obj.features=new OpenLayers.Format.KML({kmlns:this.namespaces.kml,extractStyles:true}).read(node);}},"owc":{"OWSContext":function(node,obj){this.readChildNodes(node,obj);},"General":function(node,obj){this.readChildNodes(node,obj);},"ResourceList":function(node,obj){this.readChildNodes(node,obj);},"Layer":function(node,obj){var layerContext={metadata:{},visibility:(node.getAttribute("hidden")!="1"),queryable:(node.getAttribute("queryable")=="1"),opacity:((node.getAttribute("opacity")!=null)?parseFloat(node.getAttribute("opacity")):null),name:node.getAttribute("name"),categoryLayer:(node.getAttribute("name")==null),formats:[],styles:[]};if(!obj.layersContext){obj.layersContext=[];} -obj.layersContext.push(layerContext);this.readChildNodes(node,layerContext);},"InlineGeometry":function(node,obj){obj.features=[];var elements=this.getElementsByTagNameNS(node,this.namespaces.gml,"featureMember");var el;if(elements.length>=1){el=elements[0];} -if(el&&el.firstChild){var featurenode=(el.firstChild.nextSibling)?el.firstChild.nextSibling:el.firstChild;this.setNamespace("feature",featurenode.namespaceURI);this.featureType=featurenode.localName||featurenode.nodeName.split(":").pop();this.readChildNodes(node,obj);}},"Server":function(node,obj){if((!obj.service&&!obj.version)||(obj.service!=OpenLayers.Format.Context.serviceTypes.WMS)){obj.service=node.getAttribute("service");obj.version=node.getAttribute("version");this.readChildNodes(node,obj);}},"Name":function(node,obj){obj.name=this.getChildValue(node);this.readChildNodes(node,obj);},"Title":function(node,obj){obj.title=this.getChildValue(node);this.readChildNodes(node,obj);},"StyleList":function(node,obj){this.readChildNodes(node,obj.styles);},"Style":function(node,obj){var style={};obj.push(style);this.readChildNodes(node,style);},"LegendURL":function(node,obj){var legend={};obj.legend=legend;this.readChildNodes(node,legend);},"OnlineResource":function(node,obj){obj.url=this.getAttributeNS(node,this.namespaces.xlink,"href");this.readChildNodes(node,obj);}},"ows":OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows,"gml":OpenLayers.Format.GML.v2.prototype.readers.gml,"sld":OpenLayers.Format.SLD.v1_0_0.prototype.readers.sld,"feature":OpenLayers.Format.GML.v2.prototype.readers.feature},writers:{"owc":{"OWSContext":function(options){var node=this.createElementNSPlus("OWSContext",{attributes:{version:this.VERSION,id:options.id||OpenLayers.Util.createUniqueID("OpenLayers_OWSContext_")}});this.writeNode("General",options,node);this.writeNode("ResourceList",options,node);return node;},"General":function(options){var node=this.createElementNSPlus("General");this.writeNode("ows:BoundingBox",options,node);this.writeNode("ows:Title",options.title||'OpenLayers OWSContext',node);return node;},"ResourceList":function(options){var node=this.createElementNSPlus("ResourceList");for(var i=0,len=options.layers.length;i<len;i++){var layer=options.layers[i];var decomposedPath=this.decomposeNestingPath(layer.metadata.nestingPath);this.writeNode("_Layer",{layer:layer,subPaths:decomposedPath},node);} -return node;},"Server":function(options){var node=this.createElementNSPlus("Server",{attributes:{version:options.version,service:options.service}});this.writeNode("OnlineResource",options,node);return node;},"OnlineResource":function(options){var node=this.createElementNSPlus("OnlineResource",{attributes:{"xlink:href":options.url}});return node;},"InlineGeometry":function(layer){var node=this.createElementNSPlus("InlineGeometry");this.writeNode("gml:boundedBy",layer.getDataExtent(),node);for(var i=0,len=layer.features.length;i<len;i++){this.writeNode("gml:featureMember",layer.features[i],node);} -return node;},"StyleList":function(styles){var node=this.createElementNSPlus("StyleList");for(var i=0,len=styles.length;i<len;i++){this.writeNode("Style",styles[i],node);} -return node;},"Style":function(style){var node=this.createElementNSPlus("Style");this.writeNode("Name",style,node);this.writeNode("Title",style,node);this.writeNode("LegendURL",style,node);return node;},"Name":function(obj){var node=this.createElementNSPlus("Name",{value:obj.name});return node;},"Title":function(obj){var node=this.createElementNSPlus("Title",{value:obj.title});return node;},"LegendURL":function(style){var node=this.createElementNSPlus("LegendURL");this.writeNode("OnlineResource",style.legend,node);return node;},"_WMS":function(layer){var node=this.createElementNSPlus("Layer",{attributes:{name:layer.params.LAYERS,queryable:layer.queryable?"1":"0",hidden:layer.visibility?"0":"1",opacity:layer.opacity?layer.opacity:null}});this.writeNode("ows:Title",layer.name,node);this.writeNode("ows:OutputFormat",layer.params.FORMAT,node);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.WMS,version:layer.params.VERSION,url:layer.url},node);if(layer.metadata.styles&&layer.metadata.styles.length>0){this.writeNode("StyleList",layer.metadata.styles,node);} -return node;},"_Layer":function(options){var layer,subPaths,node,title;layer=options.layer;subPaths=options.subPaths;node=null;title=null;if(subPaths.length>0){var path=subPaths[0].join("/");var index=path.lastIndexOf("/");node=this.nestingLayerLookup[path];title=(index>0)?path.substring(index+1,path.length):path;if(!node){node=this.createElementNSPlus("Layer");this.writeNode("ows:Title",title,node);this.nestingLayerLookup[path]=node;} -options.subPaths.shift();this.writeNode("_Layer",options,node);return node;}else{if(layer instanceof OpenLayers.Layer.WMS){node=this.writeNode("_WMS",layer);}else if(layer instanceof OpenLayers.Layer.Vector){if(layer.protocol instanceof OpenLayers.Protocol.WFS.v1){node=this.writeNode("_WFS",layer);}else if(layer.protocol instanceof OpenLayers.Protocol.HTTP){if(layer.protocol.format instanceof OpenLayers.Format.GML){layer.protocol.format.version="2.1.2";node=this.writeNode("_GML",layer);}else if(layer.protocol.format instanceof OpenLayers.Format.KML){layer.protocol.format.version="2.2";node=this.writeNode("_KML",layer);}}else{this.setNamespace("feature",this.featureNS);node=this.writeNode("_InlineGeometry",layer);}} -if(layer.options.maxScale){this.writeNode("sld:MinScaleDenominator",layer.options.maxScale,node);} -if(layer.options.minScale){this.writeNode("sld:MaxScaleDenominator",layer.options.minScale,node);} -this.nestingLayerLookup[layer.name]=node;return node;}},"_WFS":function(layer){var node=this.createElementNSPlus("Layer",{attributes:{name:layer.protocol.featurePrefix+":"+layer.protocol.featureType,hidden:layer.visibility?"0":"1"}});this.writeNode("ows:Title",layer.name,node);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.WFS,version:layer.protocol.version,url:layer.protocol.url},node);return node;},"_InlineGeometry":function(layer){var node=this.createElementNSPlus("Layer",{attributes:{name:this.featureType,hidden:layer.visibility?"0":"1"}});this.writeNode("ows:Title",layer.name,node);this.writeNode("InlineGeometry",layer,node);return node;},"_GML":function(layer){var node=this.createElementNSPlus("Layer");this.writeNode("ows:Title",layer.name,node);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.GML,url:layer.protocol.url,version:layer.protocol.format.version},node);return node;},"_KML":function(layer){var node=this.createElementNSPlus("Layer");this.writeNode("ows:Title",layer.name,node);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.KML,version:layer.protocol.format.version,url:layer.protocol.url},node);return node;}},"gml":OpenLayers.Util.applyDefaults({"boundedBy":function(bounds){var node=this.createElementNSPlus("gml:boundedBy");this.writeNode("gml:Box",bounds,node);return node;}},OpenLayers.Format.GML.v2.prototype.writers.gml),"ows":OpenLayers.Format.OWSCommon.v1_0_0.prototype.writers.ows,"sld":OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld,"feature":OpenLayers.Format.GML.v2.prototype.writers.feature},CLASS_NAME:"OpenLayers.Format.OWSContext.v0_3_1"});
\ No newline at end of file diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/cloud-popup-relative.png b/phonegap/www/jslib/OpenLayers-2.10/img/cloud-popup-relative.png Binary files differdeleted file mode 100755 index 1215a3618..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/cloud-popup-relative.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/drag-rectangle-off.png b/phonegap/www/jslib/OpenLayers-2.10/img/drag-rectangle-off.png Binary files differdeleted file mode 100644 index fc6daf4dc..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/drag-rectangle-off.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/drag-rectangle-on.png b/phonegap/www/jslib/OpenLayers-2.10/img/drag-rectangle-on.png Binary files differdeleted file mode 100644 index 7f783ce13..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/drag-rectangle-on.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/east-mini.png b/phonegap/www/jslib/OpenLayers-2.10/img/east-mini.png Binary files differdeleted file mode 100644 index 0707567a7..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/east-mini.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/layer-switcher-maximize.png b/phonegap/www/jslib/OpenLayers-2.10/img/layer-switcher-maximize.png Binary files differdeleted file mode 100644 index 8d7bb167b..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/layer-switcher-maximize.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/layer-switcher-minimize.png b/phonegap/www/jslib/OpenLayers-2.10/img/layer-switcher-minimize.png Binary files differdeleted file mode 100644 index e80bf213f..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/layer-switcher-minimize.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/marker-blue.png b/phonegap/www/jslib/OpenLayers-2.10/img/marker-blue.png Binary files differdeleted file mode 100644 index 83a90b4c8..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/marker-blue.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/marker-gold.png b/phonegap/www/jslib/OpenLayers-2.10/img/marker-gold.png Binary files differdeleted file mode 100644 index 2ff9ec528..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/marker-gold.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/marker-green.png b/phonegap/www/jslib/OpenLayers-2.10/img/marker-green.png Binary files differdeleted file mode 100644 index 17168f1b9..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/marker-green.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/marker.png b/phonegap/www/jslib/OpenLayers-2.10/img/marker.png Binary files differdeleted file mode 100644 index ccd191367..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/marker.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/measuring-stick-off.png b/phonegap/www/jslib/OpenLayers-2.10/img/measuring-stick-off.png Binary files differdeleted file mode 100644 index 70c2dffb1..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/measuring-stick-off.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/measuring-stick-on.png b/phonegap/www/jslib/OpenLayers-2.10/img/measuring-stick-on.png Binary files differdeleted file mode 100644 index cdb8f345b..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/measuring-stick-on.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/north-mini.png b/phonegap/www/jslib/OpenLayers-2.10/img/north-mini.png Binary files differdeleted file mode 100644 index a8a0b4033..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/north-mini.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/panning-hand-off.png b/phonegap/www/jslib/OpenLayers-2.10/img/panning-hand-off.png Binary files differdeleted file mode 100644 index 4c912aca6..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/panning-hand-off.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/panning-hand-on.png b/phonegap/www/jslib/OpenLayers-2.10/img/panning-hand-on.png Binary files differdeleted file mode 100644 index 6094c64e7..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/panning-hand-on.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/slider.png b/phonegap/www/jslib/OpenLayers-2.10/img/slider.png Binary files differdeleted file mode 100644 index 23afd573b..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/slider.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/south-mini.png b/phonegap/www/jslib/OpenLayers-2.10/img/south-mini.png Binary files differdeleted file mode 100644 index 6c4ac8a0f..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/south-mini.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/west-mini.png b/phonegap/www/jslib/OpenLayers-2.10/img/west-mini.png Binary files differdeleted file mode 100644 index db5f420ca..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/west-mini.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/zoom-minus-mini.png b/phonegap/www/jslib/OpenLayers-2.10/img/zoom-minus-mini.png Binary files differdeleted file mode 100644 index f9b63aba0..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/zoom-minus-mini.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/zoom-plus-mini.png b/phonegap/www/jslib/OpenLayers-2.10/img/zoom-plus-mini.png Binary files differdeleted file mode 100644 index eecf2eb4b..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/zoom-plus-mini.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/zoom-world-mini.png b/phonegap/www/jslib/OpenLayers-2.10/img/zoom-world-mini.png Binary files differdeleted file mode 100644 index 2159dde7b..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/zoom-world-mini.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/zoombar.png b/phonegap/www/jslib/OpenLayers-2.10/img/zoombar.png Binary files differdeleted file mode 100644 index 959f01a93..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/img/zoombar.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/license.txt b/phonegap/www/jslib/OpenLayers-2.10/license.txt deleted file mode 100644 index 598af50ef..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/license.txt +++ /dev/null @@ -1,38 +0,0 @@ -This license applies to all code and content in the 'branches', 'trunk', and -'project' directories of the Openlayers code repository at svn.openlayers.org, -and applies to all release of OpenLayers later than 2.5. - -Copyright (c) 2005-2010 OpenLayers Contributors. See authors.txt for - full list. - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted (subject to the limitations in the -disclaimer below) provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the - distribution. - - * Neither the name of OpenLayers nor the names of its contributors - may be used to endorse or promote products derived from this - software without specific prior written permission. - -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE -GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT -HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/google.css b/phonegap/www/jslib/OpenLayers-2.10/theme/default/google.css deleted file mode 100644 index 3c1c1872a..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/google.css +++ /dev/null @@ -1,10 +0,0 @@ -.olLayerGoogleCopyright { - right: 3px; - bottom: 2px; - left: auto; -} -.olLayerGooglePoweredBy { - left: 2px; - bottom: 2px; -} - diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/ie6-style.css b/phonegap/www/jslib/OpenLayers-2.10/theme/default/ie6-style.css deleted file mode 100644 index 65f6b192c..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/ie6-style.css +++ /dev/null @@ -1,7 +0,0 @@ -.olControlZoomPanel div { - background-image: url(img/zoom-panel-NOALPHA.png); -} -.olControlPanPanel div { - background-image: url(img/pan-panel-NOALPHA.png); -} - diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/add_point_off.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/add_point_off.png Binary files differdeleted file mode 100644 index aefd09cf3..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/add_point_off.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/drag-rectangle-off.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/drag-rectangle-off.png Binary files differdeleted file mode 100644 index fc6daf4dc..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/drag-rectangle-off.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/drag-rectangle-on.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/drag-rectangle-on.png Binary files differdeleted file mode 100644 index 7f783ce13..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/drag-rectangle-on.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/draw_line_off.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/draw_line_off.png Binary files differdeleted file mode 100644 index 7f1561254..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/draw_line_off.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/draw_line_on.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/draw_line_on.png Binary files differdeleted file mode 100644 index ba09186c7..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/draw_line_on.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/draw_point_off.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/draw_point_off.png Binary files differdeleted file mode 100644 index fde94bde2..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/draw_point_off.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/draw_point_on.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/draw_point_on.png Binary files differdeleted file mode 100644 index 880422185..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/draw_point_on.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/draw_polygon_off.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/draw_polygon_off.png Binary files differdeleted file mode 100644 index 53ce9d786..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/draw_polygon_off.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/draw_polygon_on.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/draw_polygon_on.png Binary files differdeleted file mode 100644 index 2a3337614..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/draw_polygon_on.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/editing_tool_bar.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/editing_tool_bar.png Binary files differdeleted file mode 100644 index 464340efb..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/editing_tool_bar.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/move_feature_off.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/move_feature_off.png Binary files differdeleted file mode 100644 index 9f588dbb2..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/move_feature_off.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/move_feature_on.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/move_feature_on.png Binary files differdeleted file mode 100644 index 072f066c3..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/move_feature_on.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/navigation_history.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/navigation_history.png Binary files differdeleted file mode 100644 index 053d1e0d2..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/navigation_history.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/pan-panel-NOALPHA.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/pan-panel-NOALPHA.png Binary files differdeleted file mode 100644 index 2740d8baf..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/pan-panel-NOALPHA.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/pan-panel.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/pan-panel.png Binary files differdeleted file mode 100644 index 99101219c..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/pan-panel.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/pan_on.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/pan_on.png Binary files differdeleted file mode 100644 index d73e7ddd7..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/pan_on.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/panning-hand-off.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/panning-hand-off.png Binary files differdeleted file mode 100644 index 4c912aca6..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/panning-hand-off.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/panning-hand-on.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/panning-hand-on.png Binary files differdeleted file mode 100644 index 6094c64e7..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/panning-hand-on.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/remove_point_on.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/remove_point_on.png Binary files differdeleted file mode 100644 index 0ff28fc71..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/remove_point_on.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/save_features_off.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/save_features_off.png Binary files differdeleted file mode 100644 index 2bf290676..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/save_features_off.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/save_features_on.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/save_features_on.png Binary files differdeleted file mode 100644 index 93c8f080b..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/save_features_on.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/view_next_off.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/view_next_off.png Binary files differdeleted file mode 100644 index 23c5ac1fe..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/view_next_off.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/view_previous_off.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/view_previous_off.png Binary files differdeleted file mode 100644 index b9c230f74..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/view_previous_off.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/zoom-panel.png b/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/zoom-panel.png Binary files differdeleted file mode 100644 index f2c7c518d..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/zoom-panel.png +++ /dev/null diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/style.css b/phonegap/www/jslib/OpenLayers-2.10/theme/default/style.css deleted file mode 100644 index 0627f0e15..000000000 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/style.css +++ /dev/null @@ -1,397 +0,0 @@ -div.olMap { - z-index: 0; - padding: 0px!important; - margin: 0px!important; - cursor: default; -} - -div.olMapViewport { - text-align: left; -} - -div.olLayerDiv { - -moz-user-select: none; -} - -.olLayerGoogleCopyright { - left: 2px; - bottom: 2px; -} -.olLayerGooglePoweredBy { - left: 2px; - bottom: 15px; -} -.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: 0em; - right: 3px; - display: block; - position: absolute; - font-family: Arial; - font-size: smaller; -} - -.olControlOverviewMapContainer { - position: absolute; - bottom: 0px; - right: 0px; -} - -.olControlOverviewMapElement { - padding: 10px 18px 10px 10px; - background-color: #00008B; - -moz-border-radius: 1em 0 0 0; -} - -.olControlOverviewMapMinimizeButton { - right: 0px; - bottom: 80px; -} - -.olControlOverviewMapMaximizeButton { - right: 0px; - bottom: 80px; -} - -.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; -} -.olControlNavToolbar { - width:0px; - height:0px; -} -.olControlNavToolbar div { - display:block; - width: 28px; - height: 28px; - top: 300px; - left: 6px; - position: relative; -} - -.olControlNavigationHistory { - background-image: url("img/navigation_history.png"); - background-repeat: no-repeat; - width: 24px; - height: 24px; - -} -.olControlNavigationHistoryPreviousItemActive { - background-position: 0px 0px; -} -.olControlNavigationHistoryPreviousItemInactive { - background-position: 0px -24px; -} -.olControlNavigationHistoryNextItemActive { - background-position: -24px 0px; -} -.olControlNavigationHistoryNextItemInactive { - background-position: -24px -24px; -} - -.olControlNavToolbar .olControlNavigationItemActive { - background-image: url("img/panning-hand-on.png"); - background-repeat: no-repeat; -} -.olControlNavToolbar .olControlNavigationItemInactive { - background-image: url("img/panning-hand-off.png"); - background-repeat: no-repeat; -} -.olControlNavToolbar .olControlZoomBoxItemActive { - background-image: url("img/drag-rectangle-on.png"); - background-color: orange; - background-repeat: no-repeat; -} -.olControlNavToolbar .olControlZoomBoxItemInactive { - background-image: url("img/drag-rectangle-off.png"); - background-repeat: no-repeat; -} -.olControlEditingToolbar { - float:right; - right: 0px; - height: 30px; - width: 200px; -} -.olControlEditingToolbar div { - background-image: url("img/editing_tool_bar.png"); - background-repeat: no-repeat; - float:right; - width: 24px; - height: 24px; - margin: 5px; -} -.olControlEditingToolbar .olControlNavigationItemActive { - background-position: -103px -23px; -} -.olControlEditingToolbar .olControlNavigationItemInactive { - background-position: -103px -0px; -} -.olControlEditingToolbar .olControlDrawFeaturePointItemActive { - background-position: -77px -23px; -} -.olControlEditingToolbar .olControlDrawFeaturePointItemInactive { - background-position: -77px -0px; -} -.olControlEditingToolbar .olControlDrawFeaturePathItemInactive { - background-position: -51px 0px; -} -.olControlEditingToolbar .olControlDrawFeaturePathItemActive { - background-position: -51px -23px; -} -.olControlEditingToolbar .olControlDrawFeaturePolygonItemInactive { - background-position: -26px 0px; -} -.olControlEditingToolbar .olControlDrawFeaturePolygonItemActive { - background-position: -26px -23px ; -} -div.olControlSaveFeaturesItemActive { - background-image: url(img/save_features_on.png); - background-repeat: no-repeat; - background-position: 0px 1px; -} -div.olControlSaveFeaturesItemInactive { - background-image: url(img/save_features_off.png); - background-repeat: no-repeat; - background-position: 0px 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: 0px; - left: 9px; - background-position: 0px 0px; -} -.olControlPanPanel .olControlPanSouthItemInactive { - top: 36px; - left: 9px; - background-position: 18px 0px; -} -.olControlPanPanel .olControlPanWestItemInactive { - position: absolute; - top: 18px; - left: 0px; - background-position: 0px 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: 0px; - left: 0px; - background-position: 0px 0px; -} - -.olControlZoomPanel .olControlZoomToMaxExtentItemInactive { - top: 18px; - left: 0px; - background-position: 0px -18px; -} - -.olControlZoomPanel .olControlZoomOutItemInactive { - top: 36px; - left: 0px; - background-position: 0px 18px; -} - -.olPopupCloseBox { - background: url("img/close.gif") no-repeat; - cursor: pointer; -} - -.olFramedCloudPopupContent { - padding: 5px; - overflow: auto; -} - -.olControlNoSelect { - -moz-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: 0px; - 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: 75px; - background-color: darkblue; - width: 100%; - height: 100%; -} - -.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 { - top: 5px; - right: 0px; -} diff --git a/phonegap/www/no_connection.html b/phonegap/www/no_connection.html deleted file mode 100644 index d81f5f83a..000000000 --- a/phonegap/www/no_connection.html +++ /dev/null @@ -1,78 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <title></title> - - <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" /> - <meta charset="utf-8"> - - <link rel="stylesheet" href="css/base.css"> - <link rel="stylesheet" href="css/mobile.css"> - <script type="text/javascript" src="js/json2.js"></script> - <script type="text/javascript" src="js/config.js"></script> - <script type="text/javascript" charset="utf-8" src="cordova-independent.js"></script> - <script type="text/javascript" src="js/jquery-1.7.0.min.js"></script> - <script src="js/jquery.validate.min.js" type="text/javascript" charset="utf-8"></script> - - <script type="text/javascript" src="js/geo.min.js"></script> - <script type="text/javascript" src="js/fixmystreet.js"></script> - <script type="text/javascript" src="js/mobile.js"></script> - - <script type="text/javascript"> - validation_strings = { - update: 'Please enter a message', - title: 'Please enter a subject', - detail: 'Please enter some details', - name: { - required: 'Please enter your name', - validName: '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' - }, - category: 'Please choose a category', - rznvy: { - required: 'Please enter your email', - email: 'Please enter a valid email' - }, - email: { - required: 'Please enter your email', - email: 'Please enter a valid email' - } - }; - </script> - </head> - <body id="container" class="frontpage fullwidthpage mobile-header" ontouchmove="touchmove(event);"> - - <div class="wrapper"> - <div class="table-cell"> - <header id="site-header" role="banner"> - <div class="container"> - <span id="site-logo"></span> - </div> - </header> - - <div class="container"> - <div class="content" role="main"> - <div class="tablewrapper"> - <h2>No Internet connection</h2> - - <p> - There is no connection to the internet available which means - you can't report a problem at the moment. Please try again when - you have a connection. - </p> - </div> - </div><!-- .content role=main --> - </div><!-- .container --> - </div><!-- .table-cell --> - - <div class="mobile-info"> - <a href="about.html">i</a> - </div> - - <div class="big-green-banner mobile-map-banner mobile-nav-banner"> - <a href="index.html">Home</a> - No connection - </div> - </div> <!-- .wrapper --> - </body> -</html> -</html> diff --git a/phonegap/www/report_created.html b/phonegap/www/report_created.html deleted file mode 100644 index fe454259e..000000000 --- a/phonegap/www/report_created.html +++ /dev/null @@ -1,59 +0,0 @@ -<!doctype html> - <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"> - - <link rel="stylesheet" href="css/base.css"> - <link rel="stylesheet" href="css/mobile.css"> - <link rel="stylesheet" href="css/layout.css" media="(min-width:48em)"> - - <meta http-equiv="content-type" content="text/html; charset=utf-8"> - <script type="text/javascript" src="js/config.js"></script> - <script type="text/javascript" charset="utf-8" src="cordova-independent.js"></script> - <script type="text/javascript" src="js/jquery-1.7.0.min.js"></script> - <script type="text/javascript" src="js/mobile.js"></script> - - <script type="text/javascript"> - $(function() { - var uri = CONFIG.FMS_URL + 'report/' + localStorage.report; - $('#report_url').html( '<a href="' + uri + '">' + uri + '</a>' ); - }); - </script> - - - <title> Report Created :: FixMyStreet </title> - - </head> - <body class="mobile-header" id="container" ontouchmove="touchmove(event);"> - - <div class="wrapper"> - <div class="table-cell"> - <header id="site-header" role="banner"> - <div class="container"> - <span id="site-logo"></span> - </div> - </header> - - <div class="container"> - <div class="content" role="main"> - <h1>Your report has been created</h1> - - <p>You can view it on the site at <span id="report_url"></span></p> - </div><!-- .content role=main --> - </div><!-- .container --> - </div><!-- .table-cell --> - - <div class="big-green-banner mobile-map-banner mobile-nav-banner"> - <a href="index.html">home</a> - Report Created - </div> - <div class="mobile-info"> - <a href="about.html">i</a> - </div> - - </div> <!-- .wrapper --> -</body> -</html> diff --git a/t/app/controller/about.t b/t/app/controller/about.t index 4e49cdac9..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'); @@ -24,8 +23,8 @@ SKIP: { # check that geting the page as EHA in welsh produces a different page ok $mech->host("cy.reportemptyhomes.co.uk"), 'host to cy.reportemptyhomes'; $mech->get_ok('/about'); - $mech->content_like(qr{Amdanom ni ::\s+Adrodd am Eiddo Gwag}); + $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 9ec15ec21..e369968b4 100644 --- a/t/app/controller/admin.t +++ b/t/app/controller/admin.t @@ -45,7 +45,7 @@ my $dt = DateTime->new( my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( { postcode => 'SW1A 1AA', - council => '2504', + bodies_str => '2504', areas => ',105255,11806,11828,2247,2504,', category => 'Other', title => 'Report to Edit', @@ -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', @@ -84,7 +85,7 @@ subtest 'check summary counts' => sub { my $problem_count = $problems->count; $problems->update( { cobrand => '' } ); - FixMyStreet::App->model('DB::Problem')->search( { council => 2489 } )->update( { council => 1 } ); + FixMyStreet::App->model('DB::Problem')->search( { bodies_str => 2489 } )->update( { bodies_str => 1 } ); my $q = FixMyStreet::App->model('DB::Questionnaire')->find_or_new( { problem => $report, }); $q->whensent( \'ms_current_timestamp()' ); @@ -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'); @@ -118,7 +122,7 @@ subtest 'check summary counts' => sub { my ($num_alerts) = $mech->content =~ /(\d+) confirmed alerts/; my ($num_qs) = $mech->content =~ /(\d+) questionnaires sent/; - $report->council(2489); + $report->bodies_str(2489); $report->cobrand('barnet'); $report->update; @@ -131,36 +135,42 @@ subtest 'check summary counts' => sub { $mech->content_contains( ($num_alerts+1) . " confirmed alerts" ); $mech->content_contains( ($num_qs+1) . " questionnaires sent" ); - $report->council(2504); + $report->bodies_str(2504); $report->cobrand(''); $report->update; $alert->cobrand(''); $alert->update; - } + }; - FixMyStreet::App->model('DB::Problem')->search( { council => 1 } )->update( { council => 2489 } ); + FixMyStreet::App->model('DB::Problem')->search( { bodies_str => 1 } )->update( { bodies_str => 2489 } ); ok $mech->host('fixmystreet.com'); }; -my $host = FixMyStreet->config('BASE_URL'); -$mech->get_ok('/admin/council_contacts/2650'); +my $body = $mech->create_body_ok(2650, 'Aberdeen City Council'); +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( - { area_id => 2650, category => [ 'test category', 'test/category' ] } + { body_id => 2650, category => [ 'test category', 'test/category' ] } ); $contact->delete_all; my $history = FixMyStreet::App->model('DB::ContactsHistory')->search( - { area_id => 2650, category => [ 'test category', 'test/category' ] } + { body_id => 2650, category => [ 'test category', 'test/category' ] } ); $history->delete_all; - $mech->get_ok('/admin/council_contacts/2650'); + $mech->get_ok('/admin/body/2650'); $mech->submit_form_ok( { with_fields => { category => 'test category', @@ -190,12 +200,12 @@ subtest 'check contact creation' => sub { note => 'test/note', non_public => 'on', } } ); - $mech->get_ok('/admin/council_edit/2650/test/category'); + $mech->get_ok('/admin/body_edit/2650/test/category'); }; subtest 'check contact editing' => sub { - $mech->get_ok('/admin/council_edit/2650/test%20category'); + $mech->get_ok('/admin/body_edit/2650/test%20category'); $mech->submit_form_ok( { with_fields => { email => 'test2@example.com', @@ -216,31 +226,29 @@ subtest 'check contact editing' => sub { $mech->content_contains( '<td>Non Public' ); - $mech->get_ok('/admin/council_edit/2650/test%20category'); + $mech->get_ok('/admin/body_edit/2650/test%20category'); $mech->content_contains( '<td><strong>test2@example.com' ); }; subtest 'check contact updating' => sub { - $mech->get_ok('/admin/council_edit/2650/test%20category'); + $mech->get_ok('/admin/body_edit/2650/test%20category'); $mech->content_like(qr{test2\@example.com</strong>[^<]*</td>[^<]*<td>No}s); - $mech->get_ok('/admin/council_contacts/2650'); + $mech->get_ok('/admin/body/2650'); $mech->form_number( 1 ); $mech->tick( 'confirmed', 'test category' ); $mech->submit_form_ok({form_number => 1}); $mech->content_like(qr'test2@example.com</td>[^<]*<td>Yes's); - $mech->get_ok('/admin/council_edit/2650/test%20category'); + $mech->get_ok('/admin/body_edit/2650/test%20category'); $mech->content_like(qr{test2\@example.com[^<]*</td>[^<]*<td><strong>Yes}s); }; -my $open311 = - FixMyStreet::App->model('DB::Open311Conf')->search( { area_id => 2650 } ); -$open311->delete if $open311; +$body->update({ send_method => undef }); subtest 'check open311 configuring' => sub { - $mech->get_ok('/admin/council_contacts/2650/'); + $mech->get_ok('/admin/body/2650'); $mech->content_lacks('Council contacts configured via Open311'); $mech->form_number(3); @@ -258,11 +266,7 @@ subtest 'check open311 configuring' => sub { $mech->content_contains('Council contacts configured via Open311'); $mech->content_contains('Configuration updated - contacts will be generated automatically later'); - $open311 = - FixMyStreet::App->model('DB::Open311Conf')->search( { area_id => 2650 } ); - - is $open311->count, 1, 'only one configuration'; - my $conf = $open311->first; + my $conf = FixMyStreet::App->model('DB::Body')->find( 2650 ); is $conf->endpoint, 'http://example.com/open311', 'endpoint configured'; is $conf->api_key, 'api key', 'api key configured'; is $conf->jurisdiction, 'mySociety', 'jurisdiction configures'; @@ -282,18 +286,14 @@ subtest 'check open311 configuring' => sub { $mech->content_contains('Configuration updated'); - $open311 = - FixMyStreet::App->model('DB::Open311Conf')->search( { area_id => 2650 } ); - - is $open311->count, 1, 'only one configuration'; - $conf = $open311->first; + $conf = FixMyStreet::App->model('DB::Body')->find( 2650 ); is $conf->endpoint, 'http://example.org/open311', 'endpoint updated'; is $conf->api_key, 'new api key', 'api key updated'; is $conf->jurisdiction, 'open311', 'jurisdiction configures'; }; subtest 'check text output' => sub { - $mech->get_ok('/admin/council_contacts/2650?text=1'); + $mech->get_ok('/admin/body/2650?text=1'); is $mech->content_type, 'text/plain'; $mech->content_contains('test category'); }; @@ -563,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' ); } @@ -845,6 +845,8 @@ for my $test ( }; } +$mech->create_body_ok(2504, 'Westminster City Council'); + for my $test ( { desc => 'user is problem owner', @@ -853,17 +855,17 @@ for my $test ( update_fixed => 0, update_reopen => 0, update_state => undef, - user_council => undef, + user_body => undef, content => 'user is problem owner', }, { - desc => 'user is council user', + desc => 'user is body user', problem_user => $user, update_user => $user2, update_fixed => 0, update_reopen => 0, update_state => undef, - user_council => 2504, + user_body => 2504, content => 'user is from same council as problem - 2504', }, { @@ -873,7 +875,7 @@ for my $test ( update_fixed => 0, update_reopen => 0, update_state => 'planned', - user_council => 2504, + user_body => 2504, content => 'Update changed problem state to planned', }, { @@ -883,7 +885,7 @@ for my $test ( update_fixed => 1, update_reopen => 0, update_state => undef, - user_council => undef, + user_body => undef, content => 'Update marked problem as fixed', }, { @@ -893,7 +895,7 @@ for my $test ( update_fixed => 0, update_reopen => 1, update_state => undef, - user_council => undef, + user_body => undef, content => 'Update reopened problem', }, ) { @@ -907,7 +909,7 @@ for my $test ( $update->mark_open( $test->{update_reopen} ); $update->update; - $test->{update_user}->from_council( $test->{user_council} ); + $test->{update_user}->from_body( $test->{user_body} ); $test->{update_user}->update; $mech->get_ok('/admin/update_edit/' . $update->id ); @@ -1033,41 +1035,47 @@ subtest 'report search' => sub { $update->user($report->user); $update->update; - $mech->get_ok('/admin/search_reports'); - $mech->get_ok('/admin/search_reports?search=' . $report->id ); + $mech->get_ok('/admin/reports'); + $mech->get_ok('/admin/reports?search=' . $report->id ); $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/search_reports?search=' . $report->user->email); + $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; - $mech->get_ok('/admin/search_reports?search=' . $report->user->email); + $mech->get_ok('/admin/reports?search=' . $report->user->email); $mech->content_like( qr{<tr [^>]*hidden[^>]*> \s* <td> \s* $u_id \s* </td>}xs ); $report->state('hidden'); $report->update; - $mech->get_ok('/admin/search_reports?search=' . $report->user->email); - $mech->content_like( qr{<tr [^>]*hidden[^>]*> \s* <td> \s* $r_id \s* </td>}xs ); + $mech->get_ok('/admin/reports?search=' . $report->user->email); + $mech->content_like( qr{<tr [^>]*hidden[^>]*> \s* <td[^>]*> \s* $r_id \s* </td>}xs ); $report->state('fixed - user'); $report->update; - $mech->get_ok('/admin/search_reports?search=' . $report->user->email); - $mech->content_like( qr{href="http://[^/]*[^.]/report/$r_id/">$r_id</a>} ); + $mech->get_ok('/admin/reports?search=' . $report->user->email); + $mech->content_like( qr{href="http://[^/]*[^.]/report/$r_id"[^>]*>$r_id</a>} ); }; subtest 'search abuse' => sub { - $mech->get_ok( '/admin/search_users?search=example' ); - $mech->content_like(qr/test4\@example.com.*\n.*\n.*Email in abuse table/); + $mech->get_ok( '/admin/users?search=example' ); + $mech->content_like(qr{test4\@example.com.*</td>\s*<td>.*?</td>\s*<td>\(Email in abuse table}); }; subtest 'show flagged entries' => sub { @@ -1077,27 +1085,29 @@ subtest 'show flagged entries' => sub { $user->flagged( 1 ); $user->update; - $mech->get_ok('/admin/list_flagged'); + $mech->get_ok('/admin/flagged'); $mech->content_contains( $report->title ); $mech->content_contains( $user->email ); }; +$mech->create_body_ok(2509, 'Haringey Borough Council'); + subtest 'user search' => sub { - $mech->get_ok('/admin/search_users'); - $mech->get_ok('/admin/search_users?search=' . $user->name); + $mech->get_ok('/admin/users'); + $mech->get_ok('/admin/users?search=' . $user->name); $mech->content_contains( $user->name); my $u_id = $user->id; $mech->content_like( qr{user_edit/$u_id">Edit</a>} ); - $mech->get_ok('/admin/search_users?search=' . $user->email); + $mech->get_ok('/admin/users?search=' . $user->email); $mech->content_like( qr{user_edit/$u_id">Edit</a>} ); - $user->from_council(2509); + $user->from_body(2509); $user->update; - $mech->get_ok('/admin/search_users?search=2509' ); - $mech->content_contains(2509); + $mech->get_ok('/admin/users?search=2509' ); + $mech->content_contains('Haringey'); }; $log_entries = FixMyStreet::App->model('DB::AdminLog')->search( @@ -1115,13 +1125,15 @@ is $log_entries->count, 0, 'no admin log entries'; $user->flagged( 0 ); $user->update; +$mech->create_body_ok(2607, 'Southend-on-Sea Borough Council'); + for my $test ( { desc => 'edit user name', fields => { name => 'Test User', email => 'test@example.com', - council => 2509, + body => 2509, flagged => undef, }, changes => { @@ -1135,7 +1147,7 @@ for my $test ( fields => { name => 'Changed User', email => 'test@example.com', - council => 2509, + body => 2509, flagged => undef, }, changes => { @@ -1145,15 +1157,15 @@ for my $test ( log_entries => [qw/edit edit/], }, { - desc => 'edit user council', + desc => 'edit user body', fields => { name => 'Changed User', email => 'changed@example.com', - council => 2509, + body => 2509, flagged => undef, }, changes => { - council => 2607, + body => 2607, }, log_count => 3, log_entries => [qw/edit edit edit/], @@ -1163,7 +1175,7 @@ for my $test ( fields => { name => 'Changed User', email => 'changed@example.com', - council => 2607, + body => 2607, flagged => undef, }, changes => { @@ -1177,7 +1189,7 @@ for my $test ( fields => { name => 'Changed User', email => 'changed@example.com', - council => 2607, + body => 2607, flagged => 'on', }, changes => { @@ -1207,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 3d95bef6d..6fab4d3e3 100644 --- a/t/app/controller/alert.t +++ b/t/app/controller/alert.t @@ -2,11 +2,8 @@ use strict; use warnings; use Test::More; - -use Catalyst::Test 'FixMyStreet::App'; -use Test::WWW::Mechanize::Catalyst 'FixMyStreet::App'; - -ok( my $mech = Test::WWW::Mechanize::Catalyst->new, 'Created mech object' ); +use FixMyStreet::TestMech; +my $mech = FixMyStreet::TestMech->new; # check that we can get the page $mech->get_ok('/alert'); @@ -15,52 +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"'); - -$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 ‘EH99 1SP’'); -$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='); -$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/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=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=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'; +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 ‘EH99 1SP’'); + $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='); + $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/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->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: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=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 c849b9485..594d4c7a6 100644 --- a/t/app/controller/alert_new.t +++ b/t/app/controller/alert_new.t @@ -3,6 +3,7 @@ use warnings; use Test::More; use FixMyStreet::TestMech; +use FixMyStreet::App; my $mech = FixMyStreet::TestMech->new; @@ -206,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'); @@ -277,29 +283,8 @@ for my $test ( ok $alert, "Found the alert"; - my $email = $mech->get_email; - ok $email, "got an email"; - like $email->body, qr/$test->{email_text}/i, "Correct email text"; - - my ( $url, $url_token ) = $email->body =~ m{(http://\S+/A/)(\S+)}; - ok $url, "extracted confirm url '$url'"; - - my $token = FixMyStreet::App->model('DB::Token')->find( - { - token => $url_token, - scope => 'alert' - } - ); - ok $token, 'Token found in database'; - ok $alert->id == $token->data->{id}, 'token alertid matches alert id'; - $mech->clear_emails_ok; - $mech->get_ok("/A/$url_token"); - $mech->content_contains('error confirming'); - - $alert->discard_changes; - ok !$alert->confirmed, 'alert not set to confirmed'; $abuse->delete; @@ -307,43 +292,52 @@ for my $test ( }; } +$mech->create_body_ok(2226, 'Gloucestershire County Council'); +$mech->create_body_ok(2326, 'Cheltenham Borough Council'); + subtest "Test two-tier council alerts" => sub { for my $alert ( { feed => "local:51.896269:-2.093063", result => '/rss/l/51.896269,-2.093063' }, { feed => "area:2326:Cheltenham", result => '/rss/area/Cheltenham' }, { feed => "area:2326:4544:Cheltenham:Lansdown", result => '/rss/area/Cheltenham/Lansdown' }, { feed => "area:2226:Gloucestershire", result => '/rss/area/Gloucestershire' }, - { feed => "area:2226:14949:Gloucestershire:Lansdown%2C_Park_and_Warden_Hill", - result => '/rss/area/Gloucestershire/Lansdown%2C+Park+and+Warden+Hill' + { feed => "area:2226:14949:Gloucestershire:Lansdown_and_Park", + result => '/rss/area/Gloucestershire/Lansdown+and+Park' }, { feed => "council:2326:Cheltenham", result => '/rss/reports/Cheltenham' }, { feed => "ward:2326:4544:Cheltenham:Lansdown", result => '/rss/reports/Cheltenham/Lansdown' }, { feed => "council:2226:Gloucestershire", result => '/rss/reports/Gloucestershire' }, - { feed => "ward:2226:14949:Gloucestershire:Lansdown%2C_Park_and_Warden_Hill", - result => '/rss/reports/Gloucestershire/Lansdown%2C+Park+and+Warden+Hill' + { feed => "ward:2226:14949:Gloucestershire:Lansdown_and_Park", + 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'; } }; subtest "Test normal alert signups and that alerts are sent" => sub { + $mech->delete_user( 'reporter@example.com' ); + $mech->delete_user( 'alerts@example.com' ); + my $user1 = FixMyStreet::App->model('DB::User') ->find_or_create( { email => 'reporter@example.com', name => 'Reporter User' } ); ok $user1, "created test user"; - $user1->alerts->delete; my $user2 = FixMyStreet::App->model('DB::User') ->find_or_create( { email => 'alerts@example.com', name => 'Alert User' } ); ok $user2, "created test user"; - $user2->alerts->delete; for my $alert ( { @@ -360,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; @@ -379,10 +378,12 @@ subtest "Test normal alert signups and that alerts are sent" => sub { my $dt = DateTime->now()->add( days => 2); + my $dt_parser = FixMyStreet::App->model('DB')->schema->storage->datetime_parser; + my $report_time = '2011-03-01 12:00:00'; my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( { postcode => 'EH1 1BB', - council => '2651', + bodies_str => '2651', areas => ',11808,135007,14419,134935,2651,20728,', category => 'Street lighting', title => 'Testing', @@ -391,9 +392,9 @@ subtest "Test normal alert signups and that alerts are sent" => sub { name => $user1->name, anonymous => 0, state => 'fixed - user', - confirmed => $dt, - lastupdate => $dt, - whensent => $dt->clone->add( minutes => 5 ), + confirmed => $dt_parser->format_datetime($dt), + lastupdate => $dt_parser->format_datetime($dt), + whensent => $dt_parser->format_datetime($dt->clone->add( minutes => 5 )), lang => 'en-gb', service => '', cobrand => 'default', @@ -439,14 +440,18 @@ 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; my $count; for (@emails) { $count++ if $_->body =~ /The following updates have been left on this problem:/; - $count++ if $_->body =~ /The following new problems have been reported to City of\s*Edinburgh Council:/; + $count++ if $_->body =~ /The following new problems have been reported to City of\s+Edinburgh\s+Council:/; $count++ if $_->body =~ /The following nearby problems have been added:/; $count++ if $_->body =~ /\s+-\s+Testing/; } @@ -509,15 +514,16 @@ for my $test ( }, ) { subtest $test->{desc} => sub { + $mech->delete_user( 'reporter@example.com' ); + $mech->delete_user( 'alerts@example.com' ); + my $user1 = FixMyStreet::App->model('DB::User') ->find_or_create( { email => 'reporter@example.com', name => 'Reporter User' } ); ok $user1, "created test user"; - $user1->alerts->delete; my $user2 = FixMyStreet::App->model('DB::User') ->find_or_create( { email => 'alerts@example.com', name => 'Alert User' } ); ok $user2, "created test user"; - $user2->alerts->delete; my $dt = DateTime->now->add( minutes => -30 ); my $r_dt = $dt->clone->add( minutes => 20 ); @@ -530,9 +536,11 @@ for my $test ( my $alert_user1 = FixMyStreet::App->model('DB::Alert')->create( $alert_params ); ok $alert_user1, "alert created"; + my $dt_parser = FixMyStreet::App->model('DB')->schema->storage->datetime_parser; + my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( { postcode => 'EH1 1BB', - council => '2651', + bodies_str => '2651', areas => ',11808,135007,14419,134935,2651,20728,', category => 'Street lighting', title => 'Alert test for non public reports', @@ -541,9 +549,9 @@ for my $test ( name => $user2->name, anonymous => 0, state => 'confirmed', - confirmed => $r_dt, - lastupdate => $r_dt, - whensent => $r_dt->clone->add( minutes => 5 ), + confirmed => $dt_parser->format_datetime($r_dt), + lastupdate => $dt_parser->format_datetime($r_dt), + whensent => $dt_parser->format_datetime($r_dt->clone->add( minutes => 5 )), lang => 'en-gb', service => '', cobrand => 'default', @@ -556,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'; @@ -571,15 +587,16 @@ for my $test ( } subtest 'check new updates alerts for non public reports only go to report owner' => sub { + $mech->delete_user( 'reporter@example.com' ); + $mech->delete_user( 'alerts@example.com' ); + my $user1 = FixMyStreet::App->model('DB::User') ->find_or_create( { email => 'reporter@example.com', name => 'Reporter User' } ); ok $user1, "created test user"; - $user1->alerts->delete; my $user2 = FixMyStreet::App->model('DB::User') ->find_or_create( { email => 'alerts@example.com', name => 'Alert User' } ); ok $user2, "created test user"; - $user2->alerts->delete; my $user3 = FixMyStreet::App->model('DB::User') ->find_or_create( { email => 'updates@example.com', name => 'Update User' } ); @@ -588,9 +605,11 @@ subtest 'check new updates alerts for non public reports only go to report owner my $dt = DateTime->now->add( minutes => -30 ); my $r_dt = $dt->clone->add( minutes => 20 ); + my $dt_parser = FixMyStreet::App->model('DB')->schema->storage->datetime_parser; + my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( { postcode => 'EH1 1BB', - council => '2651', + bodies_str => '2651', areas => ',11808,135007,14419,134935,2651,20728,', category => 'Street lighting', title => 'Alert test for non public reports', @@ -599,9 +618,9 @@ subtest 'check new updates alerts for non public reports only go to report owner name => $user2->name, anonymous => 0, state => 'confirmed', - confirmed => $r_dt, - lastupdate => $r_dt, - whensent => $r_dt->clone->add( minutes => 5 ), + confirmed => $dt_parser->format_datetime($r_dt), + lastupdate => $dt_parser->format_datetime($r_dt), + whensent => $dt_parser->format_datetime($r_dt->clone->add( minutes => 5 )), lang => 'en-gb', service => '', cobrand => 'default', @@ -664,4 +683,95 @@ subtest 'check new updates alerts for non public reports only go to report owner $mech->delete_user( $user3 ); }; +subtest 'check setting inlude dates in new updates cobrand option' => sub { + my $include_date_in_alert_override= Sub::Override->new( + "FixMyStreet::Cobrand::Default::include_time_in_update_alerts", + sub { return 1; } + ); + $mech->delete_user( 'reporter@example.com' ); + $mech->delete_user( 'alerts@example.com' ); + + my $user1 = FixMyStreet::App->model('DB::User') + ->find_or_create( { email => 'reporter@example.com', name => 'Reporter User' } ); + ok $user1, "created test user"; + + my $user2 = FixMyStreet::App->model('DB::User') + ->find_or_create( { email => 'alerts@example.com', name => 'Alert User' } ); + ok $user2, "created test user"; + + my $user3 = FixMyStreet::App->model('DB::User') + ->find_or_create( { email => 'updates@example.com', name => 'Update User' } ); + ok $user3, "created test user"; + + my $dt = DateTime->now->add( minutes => -30 ); + my $r_dt = $dt->clone->add( minutes => 20 ); + + my $dt_parser = FixMyStreet::App->model('DB')->schema->storage->datetime_parser; + + my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( { + postcode => 'EH1 1BB', + bodies_str => '2651', + areas => ',11808,135007,14419,134935,2651,20728,', + category => 'Street lighting', + title => 'Alert test for non public reports', + detail => 'Testing Detail', + used_map => 1, + name => $user2->name, + anonymous => 0, + state => 'confirmed', + confirmed => $dt_parser->format_datetime($r_dt), + lastupdate => $dt_parser->format_datetime($r_dt), + whensent => $dt_parser->format_datetime($r_dt->clone->add( minutes => 5 )), + lang => 'en-gb', + service => '', + cobrand => 'default', + cobrand_data => '', + send_questionnaire => 1, + latitude => '55.951963', + longitude => '-3.189944', + user_id => $user2->id, + } ); + + my $update = FixMyStreet::App->model('DB::Comment')->create( { + problem_id => $report->id, + user_id => $user3->id, + name => 'Anonymous User', + mark_fixed => 'false', + text => 'This is some more update text', + state => 'confirmed', + confirmed => $r_dt->clone->add( minutes => 8 ), + anonymous => 't', + } ); + + my $alert_user1 = FixMyStreet::App->model('DB::Alert')->create( { + user => $user1, + alert_type => 'new_updates', + parameter => $report->id, + confirmed => 1, + whensubscribed => $dt, + } ); + ok $alert_user1, "alert created"; + + + $mech->clear_emails_ok; + FixMyStreet::App->model('DB::AlertType')->email_alerts(); + $mech->email_count_is(1); + + # if we don't do this then we're applying the date inflation code and + # it's timezone munging to the DateTime object above and not the DateTime + # object that's inflated from the database value and these turn out to be + # different as the one above has a UTC timezone and not the floating one + # that those from the DB do. + $update->discard_changes(); + + my $date_in_alert = Utils::prettify_dt( $update->confirmed ); + my $email = $mech->get_email; + like $email->body, qr/$date_in_alert/, 'alert contains date'; + + $mech->delete_user( $user1 ); + $mech->delete_user( $user2 ); + $mech->delete_user( $user3 ); + $include_date_in_alert_override->restore(); +}; + done_testing(); diff --git a/t/app/controller/around.t b/t/app/controller/around.t index d973543ce..cbb110a1a 100644 --- a/t/app/controller/around.t +++ b/t/app/controller/around.t @@ -7,14 +7,18 @@ my $mech = FixMyStreet::TestMech->new; subtest "check that if no query we get sent back to the homepage" => sub { $mech->get_ok('/around'); - is $mech->uri->path, '/around', "still at '/around'"; + is $mech->uri->path, '/', "redirected to '/'"; }; # x,y requests were generated by the old map code. We keep the behavior for # 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}'"; @@ -90,11 +99,16 @@ subtest 'check non public reports are not displayed on around page' => sub { longitude => -3.17492254484, }; my @edinburgh_problems = - $mech->create_problems_for_council( 5, 2651, 'Around page', $params ); + $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/auth.t b/t/app/controller/auth.t index 67466e959..3d52c0925 100644 --- a/t/app/controller/auth.t +++ b/t/app/controller/auth.t @@ -91,13 +91,8 @@ $mech->not_logged_in_ok; is $mech->uri->path, '/my', "redirected to the 'my' section of site"; $mech->logged_in_ok; - # logout and try to use the token again + # logout $mech->log_out_ok; - $mech->get_ok($link); - is $mech->uri, $link, "not logged in"; - $mech->content_contains( 'Link too old or already used', - 'token now invalid' ); - $mech->not_logged_in_ok; } # get a sign in email and change password diff --git a/t/app/controller/contact.t b/t/app/controller/contact.t index 11e0d30cf..89a1db5b2 100644 --- a/t/app/controller/contact.t +++ b/t/app/controller/contact.t @@ -8,7 +8,7 @@ my $mech = FixMyStreet::TestMech->new; $mech->get_ok('/contact'); $mech->title_like(qr/Contact Us/); -$mech->content_contains("We'd love to hear what you think about this site"); +$mech->content_contains("It's often quickest to "); my $problem_main; @@ -282,6 +282,115 @@ for my $test ( }; } +for my $test ( + { + fields => { + em => 'test@example.com', + name => 'A name', + subject => 'A subject', + message => 'A message', + dest => undef, + }, + page_errors => + [ 'There were problems with your report. Please see below.', + 'Please enter who your message is for', + ] + }, + { + fields => { + em => 'test@example.com', + name => 'A name', + subject => 'A subject', + message => 'A message', + dest => 'council', + }, + page_errors => + [ 'There were problems with your report. Please see below.', + 'You can only contact the team behind FixMyStreet using our contact form', + ] + }, + { + fields => { + em => 'test@example.com', + name => 'A name', + subject => 'A subject', + message => 'A message', + dest => 'update', + }, + page_errors => + [ 'There were problems with your report. Please see below.', + 'You can only contact the team behind FixMyStreet using our contact form', + ] + }, + ) +{ + subtest 'check submit page incorrect destination handling' => sub { + FixMyStreet::override_config { + ALLOWED_COBRANDS => [ 'fixmystreet' ], + }, sub { + $mech->host('www.fixmystreet.com'); + $mech->get_ok( $test->{url} ? $test->{url} : '/contact' ); + $mech->submit_form_ok( { with_fields => $test->{fields} } ); + is_deeply $mech->page_errors, $test->{page_errors}, 'page errors'; + + # we santise this when we submit so need to remove it + delete $test->{fields}->{id} + if $test->{fields}->{id} and $test->{fields}->{id} eq 'invalid'; + is_deeply $mech->visible_form_values, $test->{fields}, 'form values'; + + if ( $test->{fields}->{dest} and $test->{fields}->{dest} eq 'update' ) { + $mech->content_contains( 'www.writetothem.com', 'includes link to WTT if trying to update report' ); + } elsif ( $test->{fields}->{dest} and $test->{fields}->{dest} eq 'council' ) { + $mech->content_lacks( 'www.writetothem.com', 'does not include link to WTT if trying to contact council' ); + $mech->content_contains( 'should find contact details', 'mentions checking council website for contact details' ); + } + } + }; +} + +for my $test ( + { + fields => { + em => 'test@example.com', + name => 'A name', + subject => 'A subject', + message => 'A message', + dest => 'help', + }, + }, + { + fields => { + em => 'test@example.com', + name => 'A name', + subject => 'A subject', + message => 'A message', + dest => 'feedback', + }, + }, + { + fields => { + em => 'test@example.com', + name => 'A name', + subject => 'A subject', + message => 'A message', + dest => 'from_council', + }, + }, + ) +{ + subtest 'check email sent correctly with dest field set to us' => sub { + FixMyStreet::override_config { + ALLOWED_COBRANDS => [ 'fixmystreet' ], + }, sub { + $mech->clear_emails_ok; + $mech->get_ok('/contact'); + $mech->submit_form_ok( { with_fields => $test->{fields} } ); + $mech->content_contains('Thanks for your feedback'); + $mech->email_count_is(1); + } + }; +} + $problem_main->delete; done_testing(); diff --git a/t/app/controller/dashboard.t b/t/app/controller/dashboard.t index 47d10ff5c..4e62028b5 100644 --- a/t/app/controller/dashboard.t +++ b/t/app/controller/dashboard.t @@ -1,6 +1,7 @@ use strict; use warnings; use Test::More; +use Test::MockTime ':all'; use FixMyStreet::TestMech; use Web::Scraper; @@ -12,6 +13,8 @@ my $test_pass = 'password'; my $test_council = 2651; my $test_ward = 20723; +$mech->create_body_ok($test_council, 'City of Edinburgh Council'); + $mech->delete_user( $test_user ); my $user = FixMyStreet::App->model('DB::User')->create( { email => $test_user, @@ -22,549 +25,606 @@ 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' ); +# Dashboard tests assume we are not too early in year, to allow reporting +# within same year, as a convenience. +set_absolute_time('2014-03-01T12:00:00'); +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_council( $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( { area_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( - { - area_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=planned] > td", 'planned[]' => '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 planned today', - confirm_dt => DateTime->now->subtract( days => 1 ), - mark_dt => DateTime->now, - state => 'planned', - 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], - planned => [1,1,1,1], - marked => [3,3,3,3] - } - }, - { - desc => 'marked as planned today, confirmed a week ago', - confirm_dt => DateTime->now->subtract( days => 8 ), - mark_dt => DateTime->now, - state => 'planned', - 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], - planned => [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], - planned => [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], - planned => [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], - planned => [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], - planned => [2,2,2,2], - closed => [1,1,1,1], - marked => [5,5,5,5] - } - }, -) { - 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 ); + my $expected_cats = [ 'All', '-- Pick a category --', @cats ]; + my $res = $categories->scrape( $mech->content ); + is_deeply( $res->{cats}, $expected_cats, 'correct list of categories' ); - 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', + my $now = DateTime->now(time_zone => 'local'); + foreach my $test ( + { + desc => 'confirmed today with no state', + dt => $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 => $now->clone->subtract( days => 6, hours => 23 ), + counts => [1,2,2,2], + report_counts => [2, 0, 0], }, - category => '', - counts => { - totals => [2,2,2,2], + { + desc => 'confirmed last 8 days with no state', + dt => $now->clone->subtract( days => 8 ), + counts => [1,2,3,3], + report_counts => [2, 1, 0], }, - counts_after => { - totals => [2,2,2,2], + { + desc => 'confirmed last 2 weeks with no state', + dt => $now->clone->subtract( weeks => 2 ), + counts => [1,2,4,4], + report_counts => [2, 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 => 'confirmed this year with no state', + dt => $now->clone->subtract( weeks => 7 ), + counts => [1,2,4,5], + report_counts => [2, 1, 1], }, - counts_after => { - totals => [1,1,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 => [1,0,0], - }, - { - desc => 'Limit display for category with no entries', - category => 'Grafitti', - 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 => [0,0,0,0], + { + 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 => [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 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] + } }, - p2 => { - state => 'fixed - council', - conf_dt => DateTime->now()->subtract( weeks => 1 ), - mark_dt => DateTime->now()->subtract( weeks => 1 ), - category => 'Litter', + { + 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] + } }, - 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', + 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], }, - p2 => { - state => 'confirmed', - conf_dt => DateTime->now(), - category => 'Litter', + { + desc => 'limit by state works', + state => 'fixed', + report_counts => [2,0,0], + report_counts_after => [1,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 => '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 => [4,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 { + make_problem( { + detail => "this report\nis split across\nseveral lines", + state => "confirmed", + conf_dt => DateTime->now(), + } ); + $mech->get_ok('/dashboard?export=1'); + open my $data_handle, '<', \$mech->content; + my $csv = Text::CSV->new( { binary => 1 } ); + my @rows; + while ( my $row = $csv->getline( $data_handle ) ) { + push @rows, $row; + } + is scalar @rows, 7, '1 (header) + 6 (reports) = 7 lines'; }; -} +}; +restore_time; sub make_problem { my $args = shift; @@ -573,12 +633,12 @@ sub make_problem { title => 'a problem', name => 'a user', anonymous => 1, - detail => 'some detail', + detail => $args->{detail} || 'some detail', state => $args->{state}, confirmed => $args->{conf_dt}, whensent => $args->{conf_dt}, lastupdate => $args->{mark_dt} || $args->{conf_dt}, - council => $test_council, + bodies_str => $test_council, postcode => 'EH99 1SP', latitude => '51', longitude => '1', @@ -632,10 +692,10 @@ sub check_report_counts { sub delete_problems { FixMyStreet::App->model('DB::Comment') - ->search( { 'problem.council' => $test_council }, { join => 'problem' } ) + ->search( { 'problem.bodies_str' => $test_council }, { join => 'problem' } ) ->delete; FixMyStreet::App->model('DB::Problem') - ->search( { council => $test_council } )->delete(); + ->search( { bodies_str => $test_council } )->delete(); } done_testing; diff --git a/t/app/controller/index.t b/t/app/controller/index.t index 462b21064..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"; @@ -55,12 +59,12 @@ subtest "does pc, (x,y), (e,n) or (lat,lon) go to /around" => sub { } }; -$mech->delete_problems_for_council( 2651 ); +$mech->delete_problems_for_body( 2651 ); my $problem_rs = FixMyStreet::App->model('DB::Problem'); my $num = $problem_rs->count; -my @edinburgh_problems = $mech->create_problems_for_council(5, 2651, 'Front page'); +my @edinburgh_problems = $mech->create_problems_for_body(5, 2651, 'Front page'); is scalar @edinburgh_problems, 5, 'correct number of edinburgh problems created'; $mech->get_ok('/report/' . $edinburgh_problems[2]->id); diff --git a/t/app/controller/json.t b/t/app/controller/json.t index 468fa5b31..405a84821 100644 --- a/t/app/controller/json.t +++ b/t/app/controller/json.t @@ -45,9 +45,11 @@ is_deeply # # put an entry in the database for this test my $user = $mech->create_user_ok('test@example.com'); +my $body = $mech->create_body_ok(2501, 'Wandsworth Borough Council'); + my $problem_args = { postcode => 'sw1a 1aa', - council => '2501', + bodies_str => '2501', areas => ',105164,11806,11827,2247,2501,34817,42011,66045,70786,8519,', category => 'test category', title => 'Test title', @@ -86,7 +88,7 @@ is_deeply # 'category' => 'test category', 'confirmed' => '2000-01-01 12:01:00', 'lastupdate' => '2000-01-01 12:00:00', - 'council' => 'Wandsworth Borough Council', + 'bodies_str' => 'Wandsworth Borough Council', 'detail' => 'Test detail', 'id' => $problem->id, 'name' => 'Test Name', @@ -103,7 +105,7 @@ is_deeply # 'category' => 'test category', 'confirmed' => '2000-01-01 12:02:00', 'lastupdate' => '2000-01-01 12:00:00', - 'council' => 'Wandsworth Borough Council', + 'bodies_str' => 'Wandsworth Borough Council', 'detail' => 'Test detail', 'id' => $anon_problem->id, 'name' => '', diff --git a/t/app/controller/questionnaire.t b/t/app/controller/questionnaire.t index 3a6a3d6ad..6ee7ba58f 100644 --- a/t/app/controller/questionnaire.t +++ b/t/app/controller/questionnaire.t @@ -30,7 +30,7 @@ my $sent_time = $sent->ymd . ' ' . $sent->hms; my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( { postcode => 'EH1 1BB', - council => '2651', + bodies_str => '2651', areas => ',11808,135007,14419,134935,2651,20728,', category => 'Street lighting', title => 'Testing', @@ -329,6 +329,10 @@ for my $test ( fixed => 0 }, { + state => 'action scheduled', + fixed => 0 + }, + { state => 'in progress', fixed => 0 }, @@ -337,6 +341,18 @@ for my $test ( fixed => 0 }, { + state => 'duplicate', + fixed => 0 + }, + { + state => 'not responsible', + fixed => 0 + }, + { + state => 'unable to fix', + fixed => 0 + }, + { state => 'closed', fixed => 0 }, @@ -367,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'; @@ -386,7 +401,8 @@ SKIP: { ok $email, "got an email"; $mech->clear_emails_ok; - like $email->body, qr/fill in this short questionnaire/i, "got questionnaire email"; + (my $body = $email->body) =~ s/\s+/ /g; + like $body, qr/fill in this short questionnaire/i, "got questionnaire email"; ($token) = $email->body =~ m{http://.*?/Q/(\S+)}; ok $token, "extracted questionnaire token '$token'"; @@ -420,12 +436,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' ); @@ -439,7 +454,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 3bb0913f1..07e8caa9b 100644 --- a/t/app/controller/report_display.t +++ b/t/app/controller/report_display.t @@ -5,6 +5,7 @@ use Test::More; use FixMyStreet::TestMech; use Web::Scraper; use Path::Class; +use Test::LongString; use DateTime; my $mech = FixMyStreet::TestMech->new; @@ -33,7 +34,7 @@ my $dt = DateTime->new( my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( { postcode => 'SW1A 1AA', - council => '2504', + bodies_str => '2504', areas => ',105255,11806,11828,2247,2504,', category => 'Other', title => 'Test 2', @@ -94,6 +95,20 @@ subtest "change report to unconfirmed and check for 404 status" => sub { ok $report->update( { state => 'confirmed' } ), 'confirm report again'; }; + +subtest "Zurich unconfirmeds are 200" => sub { + 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( 'Überprü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 { ok $report->update( { state => 'hidden' } ), 'hide report'; ok $mech->get("/report/$report_id"), "get '/report/$report_id'"; @@ -169,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', @@ -196,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' }, ) { @@ -283,6 +298,38 @@ for my $test ( fixed => 1 }, { + description => 'duplicate report', + date => DateTime->now, + state => 'duplicate', + banner_id => 'closed', + banner_text => 'closed', + fixed => 0 + }, + { + description => 'not responsible report', + date => DateTime->now, + state => 'not responsible', + banner_id => 'closed', + banner_text => 'closed', + fixed => 0 + }, + { + description => 'unable to fix report', + date => DateTime->now, + state => 'unable to fix', + banner_id => 'closed', + banner_text => 'closed', + fixed => 0 + }, + { + description => 'internal referral report', + date => DateTime->now, + state => 'internal referral', + banner_id => 'closed', + banner_text => 'closed', + fixed => 0 + }, + { description => 'closed report', date => DateTime->now, state => 'closed', @@ -299,6 +346,14 @@ for my $test ( fixed => 0 }, { + description => 'action scheduled report', + date => DateTime->now, + state => 'action scheduled', + banner_id => 'progress', + banner_text => 'progress', + fixed => 0 + }, + { description => 'planned report', date => DateTime->now, state => 'planned', @@ -307,7 +362,7 @@ for my $test ( fixed => 0 }, { - description => 'in progressreport', + description => 'in progress report', date => DateTime->now, state => 'in progress', banner_id => 'progress', @@ -345,39 +400,112 @@ for my $test ( }; } +subtest "Zurich banners are displayed correctly" => sub { + FixMyStreet::override_config { + ALLOWED_COBRANDS => [ 'zurich' ], + }, sub { + $mech->host( 'zurich.example.com' ); + + for my $test ( + { + description => 'new report', + state => 'unconfirmed', + banner_id => 'closed', + banner_text => 'Erfasst' + }, + { + description => 'confirmed report', + state => 'confirmed', + banner_id => 'closed', + banner_text => 'Aufgenommen', + }, + { + description => 'fixed report', + state => 'fixed - council', + banner_id => 'fixed', + banner_text => 'Beantwortet', + }, + { + description => 'closed report', + state => 'closed', + banner_id => 'fixed', + banner_text => 'Beantwortet', + }, + { + description => 'in progress report', + state => 'in progress', + banner_id => 'progress', + banner_text => 'In Bearbeitung', + }, + { + description => 'planned report', + state => 'planned', + banner_id => 'progress', + banner_text => 'In Bearbeitung', + }, + ) { + subtest "banner for $test->{description}" => sub { + $report->state( $test->{state} ); + $report->update; + + $mech->get_ok("/report/$report_id"); + is $mech->uri->path, "/report/$report_id", "at /report/$report_id"; + my $banner = $mech->extract_problem_banner; + if ( $banner->{text} ) { + $banner->{text} =~ s/^ //g; + $banner->{text} =~ s/ $//g; + } + + is $banner->{id}, $test->{banner_id}, 'banner id'; + if ($test->{banner_text}) { + like_string( $banner->{text}, qr/$test->{banner_text}/i, 'banner text is ' . $test->{banner_text} ); + } else { + is $banner->{text}, $test->{banner_text}, 'banner text'; + } + + }; + } + + $mech->host( 'www.fixmystreet.com' ); + }; +}; + +$mech->create_body_ok(2504, 'Westminster City Council'); +$mech->create_body_ok(2505, 'Camden Borough Council'); + for my $test ( { desc => 'no state dropdown if user not from authority', - from_council => 0, + from_body => undef, no_state => 1, - report_council => '2504', + report_body => '2504', }, { desc => 'state dropdown if user from authority', - from_council => 2504, + from_body => 2504, no_state => 0, - report_council => '2504', + report_body => '2504', }, { - desc => 'no state dropdown if user not from same council as problem', - from_council => 2505, + desc => 'no state dropdown if user not from same body as problem', + from_body => 2505, no_state => 1, - report_council => '2504', + report_body => '2504', }, { - desc => 'state dropdown if user from authority and problem sent to multiple councils', - from_council => 2504, + desc => 'state dropdown if user from authority and problem sent to multiple bodies', + from_body => 2504, no_state => 0, - report_council => '2504,2506', + report_body => '2504,2506', }, ) { subtest $test->{desc} => sub { $mech->log_in_ok( $user->email ); - $user->from_council( $test->{from_council} ); + $user->from_body( $test->{from_body} ); $user->update; $report->discard_changes; - $report->council( $test->{report_council} ); + $report->bodies_str( $test->{report_body} ); $report->update; $mech->get_ok("/report/$report_id"); @@ -391,7 +519,7 @@ for my $test ( } $report->discard_changes; -$report->council( 2504 ); +$report->bodies_str( 2504 ); $report->update; # tidy up diff --git a/t/app/controller/report_import.t b/t/app/controller/report_import.t index eb686b44e..a6ccc9604 100644 --- a/t/app/controller/report_import.t +++ b/t/app/controller/report_import.t @@ -3,6 +3,7 @@ use warnings; use Test::More; use FixMyStreet::TestMech; +use FixMyStreet::App; use Web::Scraper; use Path::Class; @@ -12,6 +13,10 @@ $mech->get_ok('/import'); my $sample_file = file(__FILE__)->parent->file("sample.jpg")->stringify; ok -e $sample_file, "sample file $sample_file exists"; +# disable info logs for this test run +FixMyStreet::App->log->disable('info'); +END { FixMyStreet::App->log->enable('info'); } + # submit an empty report to import - check we get all errors subtest "Test creating bad partial entries" => sub { @@ -58,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" ); } @@ -98,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"; @@ -107,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"; @@ -131,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'); @@ -157,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 = @@ -216,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"; @@ -235,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 = @@ -263,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 dd44a83d4..3de931c74 100644 --- a/t/app/controller/report_interest_count.t +++ b/t/app/controller/report_interest_count.t @@ -16,11 +16,6 @@ my $user = ->find_or_create( { email => 'test@example.com', name => 'Test User' } ); ok $user, "created test user"; -my $user2 = - FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'test2@example.com', name => 'Other User' } ); -ok $user2, "created test user"; - my $dt = DateTime->new( year => 2011, month => 04, @@ -33,7 +28,7 @@ my $dt = DateTime->new( my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( { postcode => 'SW1A 1AA', - council => '2504', + bodies_str => '2504', areas => ',105255,11806,11828,2247,2504,', category => 'Other', title => 'Test 2', @@ -56,24 +51,26 @@ 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 ( { - desc => 'if not from council then no supporter button', - from_council => 0, + desc => 'if not from body then no supporter button', + from_body => undef, support_string => 'No supporters', }, { - desc => 'from council user can increment supported count', - from_council => 2504, + desc => 'from body user can increment supported count', + from_body => 2504, support_string => 'No supporters', updated_support => '1 supporter' }, { desc => 'correct grammar for more than one supporter', - from_council => 2504, + from_body => 2504, support_string => '1 supporter', updated_support => '2 supporters' }, @@ -81,17 +78,17 @@ SKIP: { subtest $test->{desc} => sub { ok $mech->host('fixmybarangay.com'), 'changed to fixmybarangay'; $mech->log_in_ok( $user->email ); - $user->from_council( $test->{from_council} ); + $user->from_body( $test->{from_body} ); $user->update; - $report->discard_changes; - $report->council( $test->{report_council} ); - $report->update; + $report->update( { + bodies_str => $test->{report_council} + } ); $mech->get_ok("/report/$report_id"); $mech->content_contains( $test->{support_string} ); - if ( $test->{from_council} ) { + if ( $test->{from_body} ) { $mech->content_contains('Add support'); $mech->submit_form_ok( { form_number => 1 } ); @@ -104,18 +101,16 @@ SKIP: { }; } - subtest 'check non council user cannot increment support count' => sub { + subtest 'check non body user cannot increment support count' => sub { ok $mech->host('fixmybarangay.com'), 'changed to fixmybarangay'; - $report->discard_changes; - $report->interest_count(1); - ok $report->update(), 'updated interest count'; - $report->discard_changes; + ok $report->update({ interest_count => 1 }), 'updated interest count'; is $report->interest_count, 1, 'correct interest count'; $mech->get_ok("/report/$report_id"); $mech->content_contains( '1 supporter' ); + # This doesn't send cookie, so is logged out $mech->post_ok("/report/support", { id => $report_id } ); is $mech->uri, "http://fixmybarangay.com/report/$report_id", 'add support redirects to report page'; @@ -135,7 +130,7 @@ subtest 'check support details not shown if not enabled in cobrand' => sub { }; $report->discard_changes; -$report->council( 2504 ); +$report->bodies_str( 2504 ); $report->update; # tidy up diff --git a/t/app/controller/report_new.t b/t/app/controller/report_new.t index d20f15922..98b0175f8 100644 --- a/t/app/controller/report_new.t +++ b/t/app/controller/report_new.t @@ -5,9 +5,14 @@ use Test::More; use utf8; use FixMyStreet::TestMech; +use FixMyStreet::App; use Web::Scraper; use Path::Class; +# disable info logs for this test run +FixMyStreet::App->log->disable('info'); +END { FixMyStreet::App->log->enable('info'); } + my $mech = FixMyStreet::TestMech->new; $mech->get_ok('/report/new'); @@ -17,7 +22,7 @@ ok -e $sample_file, "sample file $sample_file exists"; subtest "test that bare requests to /report/new get redirected" => sub { $mech->get_ok('/report/new'); - is $mech->uri->path, '/around', "went to /around"; + is $mech->uri->path, '/', "went to /"; is_deeply { $mech->uri->query_form }, {}, "query empty"; $mech->get_ok('/report/new?pc=SW1A%201AA'); @@ -33,49 +38,62 @@ my %contact_params = ( whenedited => \'current_timestamp', note => 'Created for test', ); + +for my $body ( + { id => 2651, name => 'City of Edinburgh Council' }, + { id => 2226, name => 'Gloucestershire County Council' }, + { id => 2326, name => 'Cheltenham Borough Council' }, + { id => 2482, name => 'Bromley Council' }, + { id => 2240, name => 'Staffordshire County Council' }, + { id => 2434, name => 'Lichfield District Council' }, + { id => 2504, name => 'Westminster City Council' }, +) { + $mech->create_body_ok($body->{id}, $body->{name}); +} + # Let's make some contacts to send things to! FixMyStreet::App->model('DB::Contact')->search( { email => { 'like', '%example.com' }, } )->delete; my $contact1 = FixMyStreet::App->model('DB::Contact')->find_or_create( { %contact_params, - area_id => 2651, # Edinburgh + body_id => 2651, # Edinburgh category => 'Street lighting', email => 'highways@example.com', } ); my $contact2 = FixMyStreet::App->model('DB::Contact')->find_or_create( { %contact_params, - area_id => 2226, # Gloucestershire + body_id => 2226, # Gloucestershire category => 'Potholes', email => 'potholes@example.com', } ); my $contact3 = FixMyStreet::App->model('DB::Contact')->find_or_create( { %contact_params, - area_id => 2326, # Cheltenham + body_id => 2326, # Cheltenham category => 'Trees', email => 'trees@example.com', } ); my $contact4 = FixMyStreet::App->model('DB::Contact')->find_or_create( { %contact_params, - area_id => 2482, # Bromley + body_id => 2482, # Bromley category => 'Trees', email => 'trees@example.com', } ); my $contact5 = FixMyStreet::App->model('DB::Contact')->find_or_create( { %contact_params, - area_id => 2651, # Edinburgh + body_id => 2651, # Edinburgh category => 'Trees', email => 'trees@example.com', } ); my $contact6 = FixMyStreet::App->model('DB::Contact')->find_or_create( { %contact_params, - area_id => 2434, # Lichfield + body_id => 2434, # Lichfield category => 'Trees', email => 'trees@example.com', } ); my $contact7 = FixMyStreet::App->model('DB::Contact')->find_or_create( { %contact_params, - area_id => 2240, # Lichfield + body_id => 2240, # Lichfield category => 'Street lighting', email => 'highways@example.com', } ); @@ -92,6 +110,57 @@ ok $contact7, "created test contact 7"; foreach my $test ( { msg => 'all fields empty', + pc => 'OX1 3DH', + fields => { + title => '', + detail => '', + photo => '', + name => '', + may_show_name => '1', + email => '', + phone => '', + password_sign_in => '', + password_register => '', + remember_me => undef, + }, + changes => {}, + errors => [ + 'Please enter a subject', + 'Please enter some details', + # No category error, as no categories for Oxon at all, so is skipped + 'Please enter your email', + 'Please enter your name', + ], + }, + { + msg => 'all fields empty, bad category', + pc => 'GL50 2PR', + fields => { + title => '', + detail => '', + photo => '', + name => '', + may_show_name => '1', + email => '', + phone => '', + category => 'Something bad', + password_sign_in => '', + password_register => '', + remember_me => undef, + }, + changes => { + category => '-- Pick a category --', + }, + errors => [ + 'Please enter a subject', + 'Please enter some details', + 'Please choose a category', + 'Please enter your email', + 'Please enter your name', + ], + }, + { + msg => 'all fields empty except category', pc => 'SW1A 1AA', fields => { title => '', @@ -386,17 +455,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"; @@ -454,30 +528,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"; @@ -503,7 +582,7 @@ foreach my $test ( is $mech->get( '/report/' . $report->id )->code, 404, "report not found"; # Check the report has been assigned appropriately - is $report->council, 2651; + is $report->bodies_str, 2651; # receive token my $email = $mech->get_email; @@ -567,27 +646,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, [ @@ -614,42 +698,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; @@ -659,7 +748,7 @@ subtest "test report creation for a user who is signing in as they report" => su is $mech->uri->path, "/report/" . $report->id, "redirected to report page"; # Check the report has been assigned appropriately - is $report->council, 2651; + is $report->bodies_str, 2651; # check that no emails have been sent $mech->email_count_is(0); @@ -708,49 +797,54 @@ 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; ok $report, "Found the report"; # Check the report has been assigned appropriately - is $report->council, $test->{council}; + is $report->bodies_str, $test->{council}; # check that we got redirected to /report/ is $mech->uri->path, "/report/" . $report->id, "redirected to report page"; @@ -802,27 +896,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; @@ -858,8 +957,24 @@ subtest "test report creation for a category that is non public" => sub { $contact2->category( "Pothol\xc3\xa9s" ); $contact2->update; -$mech->get_ok( '/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'; + +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 @@ -867,18 +982,22 @@ $mech->content_contains( "Pothol\xc3\xa9s" ); #### 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'"; @@ -892,7 +1011,7 @@ subtest "check that a lat/lon off coast leads to /around" => sub { for my $test ( { desc => 'user title not set if not bromley problem', - host => 'http://www.fixmystreet.com', + host => 'www.fixmystreet.com', postcode => 'EH99 1SP', fms_extra_title => '', extra => undef, @@ -900,7 +1019,7 @@ for my $test ( }, { desc => 'title shown for bromley problem on main site', - host => 'http://www.fixmystreet.com', + host => 'www.fixmystreet.com', postcode => 'BR1 3UH', fms_extra_title => 'MR', extra => [ @@ -915,7 +1034,7 @@ for my $test ( { desc => 'title, first and last name shown for bromley problem on cobrand', - host => 'http://bromley.fixmystreet.com', + host => 'bromley.fixmystreet.com', postcode => 'BR1 3UH', first_name => 'Test', last_name => 'User', @@ -942,9 +1061,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} ); @@ -952,12 +1072,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} ) { @@ -999,8 +1121,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"; @@ -1030,7 +1154,7 @@ for my $test ( subtest 'user title not reset if no user title in submission' => sub { $mech->log_out_ok; - $mech->host( 'http://fixmystreet.com' ); + $mech->host( 'fixmystreet.com' ); my $user = $mech->log_in_ok( 'userwithtitle@example.com' ); @@ -1055,18 +1179,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; @@ -1075,86 +1204,157 @@ 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'); - - my $test_email = 'test-22@example.com'; - $mech->host( 'http://lichfielddc.fixmystreet.com/' ); - $mech->clear_emails_ok; - $mech->log_out_ok; - - $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" ); - $mech->submit_form_ok( +subtest "test Lichfield" => sub { + for my $test ( { - button => 'submit_register', - with_fields => { - title => 'Test Report', - detail => 'Test report details.', - photo => '', - name => 'Joe Bloggs', - may_show_name => '1', - email => $test_email, - phone => '07903 123 456', - category => 'Street lighting', - } + desc => 'confirm link for cobrand council in two tier cobrand links to cobrand site', + category => 'Trees', + council => 2434, + national => 0, + button => 'submit_register', }, - "submit good details" - ); - is_deeply $mech->page_errors, [], "check there were no errors"; - - # check that the user has been created/ not changed - my $user = - FixMyStreet::App->model('DB::User')->find( { email => $test_email } ); - ok $user, "user found"; - - # find the report - my $report = $user->problems->first; - ok $report, "Found the report"; - - # Check the report has been assigned appropriately - is $report->council, 2240; + { + desc => 'confirm link for non cobrand council in two tier cobrand links to national site', + category => 'Street Lighting', + council => 2240, + national => 1, + button => 'submit_register', + }, + { + desc => 'confirm redirect for cobrand council in two tier cobrand redirects to cobrand site', + category => 'Trees', + council => 2434, + national => 0, + redirect => 1, + }, + { + desc => 'confirm redirect for non cobrand council in two tier cobrand redirect to national site', + category => 'Street Lighting', + council => 2240, + national => 1, + redirect => 1, + }, + ) { + subtest $test->{ desc } => sub { + my $test_email = 'test-22@example.com'; + $mech->host( 'lichfielddc.fixmystreet.com' ); + $mech->clear_emails_ok; + $mech->log_out_ok; + + my $user = $mech->log_in_ok($test_email) if $test->{redirect}; + + 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"; - # receive token - my $email = $mech->get_email; - ok $email, "got an email"; - like $email->body, qr/confirm the problem/i, "confirm the problem"; + # check that the user has been created/ not changed + $user = + FixMyStreet::App->model('DB::User')->find( { email => $test_email } ); + ok $user, "user found"; - my ($url) = $email->body =~ m{(http://\S+)}; - ok $url, "extracted confirm url '$url'"; + # find the report + my $report = $user->problems->first; + ok $report, "Found the report"; - # confirm token - $mech->get_ok($url); - $report->discard_changes; - is $report->state, 'confirmed', "Report is now confirmed"; + # Check the report has been assigned appropriately + is $report->bodies_str, $test->{council}; - # Shouldn't be found, as it was a county problem - is $mech->get( '/report/' . $report->id )->code, 404, "report not found"; + if ( $test->{redirect} ) { + is $mech->uri->path, "/report/" . $report->id, "redirected to report page"; + my $base = 'www.fixmystreet.com'; + $base = "lichfielddc.fixmystreet.com" unless $test->{national}; + is $mech->uri->host, $base, 'redirected to correct site'; + } else { + # receive token + my $email = $mech->get_email; + ok $email, "got an email"; + like $email->body, qr/confirm the problem/i, "confirm the problem"; + + my ($url) = $email->body =~ m{(http://\S+)}; + ok $url, "extracted confirm url '$url'"; + + # confirm token + 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 + 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' ); + } + FixMyStreet::override_config { + ALLOWED_COBRANDS => [ 'lichfielddc', 'fixmystreet' ], + }, sub { + $mech->get_ok( '/report/' . $report->id ); + }; + } - # But should be on the main site - $mech->host( 'www.fixmystreet.com' ); - $mech->get_ok( '/report/' . $report->id ); - is $report->name, 'Joe Bloggs', 'name updated correctly'; + $report->discard_changes; + is $report->state, 'confirmed', "Report is now confirmed"; - $mech->delete_user($user); -} + is $report->name, 'Joe Bloggs', 'name updated correctly'; -SKIP: { - skip( "Need 'seesomething' in ALLOWED_COBRANDS config", 100 ) - unless FixMyStreet::Cobrand->exists('seesomething'); + $mech->delete_user($user); + }; + } +}; +subtest "test SeeSomething" => sub { $mech->host('seesomething.fixmystreet.com'); $mech->clear_emails_ok; $mech->log_out_ok; my $cobrand = FixMyStreet::Cobrand::SeeSomething->new(); + $mech->create_body_ok(2535, 'Sandwell Borough Council'); my $bus_contact = FixMyStreet::App->model('DB::Contact')->find_or_create( { %contact_params, - area_id => 2535, + body_id => 2535, category => 'Bus', email => 'bus@example.com', non_public => 1, @@ -1214,22 +1414,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 = @@ -1249,11 +1454,147 @@ SKIP: { is $mech->uri->path, '/report/new', 'stays on report/new page'; $mech->content_contains( 'Your report has been sent', 'use report created template' ); } + + $user->alerts->delete; + $user->problems->delete; + $user->delete; }; } $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 } ); + }; +}; + +subtest "extra google analytics code displayed on logged in problem creation" => sub { + FixMyStreet::override_config { + ALLOWED_COBRANDS => [ { fixmystreet => '.' } ], + BASE_URL => 'http://www.fixmystreet.com', + MAPIT_URL => 'http://mapit.mysociety.org/', + }, sub { + # check that the user does not exist + my $test_email = 'test-2@example.com'; + + $mech->clear_emails_ok; + my $user = $mech->log_in_ok($test_email); + + # setup the user. + ok $user->update( + { + name => 'Test User', + phone => '01234 567 890', + } + ), + "set users details"; + + # 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" ); + + $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 => 'Trees', + } + }, + "submit good details" + ); + + # find the report + my $report = $user->problems->first; + ok $report, "Found the report"; + + # check that we got redirected to /report/ + is $mech->uri->path, "/report/" . $report->id, "redirected to report page"; + + $mech->content_contains( "extra = '?created_report", 'extra google code present' ); + + # cleanup + $mech->delete_user($user); + }; +}; + +subtest "extra google analytics code displayed on email confirmation problem creation" => sub { + FixMyStreet::override_config { + ALLOWED_COBRANDS => [ { fixmystreet => '.' } ], + BASE_URL => 'http://www.fixmystreet.com', + MAPIT_URL => 'http://mapit.mysociety.org/', + }, sub { + $mech->log_out_ok; + $mech->clear_emails_ok; + + $mech->get_ok('/'); + $mech->submit_form_ok( { with_fields => { pc => 'GL50 2PR' } }, + "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'); + my $submission_fields = { + title => "Test Report", + detail => 'Test report details.', + photo => '', + email => 'firstlast@example.com', + name => 'Test User', + may_show_name => '1', + phone => '07903 123 456', + category => 'Trees', + password_register => '', + }; + + $mech->submit_form_ok( { with_fields => $submission_fields }, + "submit good details" ); + + my $email = $mech->get_email; + ok $email, "got an email"; + like $email->body, qr/confirm the problem/i, "confirm the problem"; + + my ($url) = $email->body =~ m{(https?://\S+)}; + ok $url, "extracted confirm url '$url'"; + + # confirm token in order to update the user details + $mech->get_ok($url); + + $mech->content_contains( "extra = '?created_report", 'extra google code present' ); + + my $user = + FixMyStreet::App->model('DB::User') + ->find( { email => 'firstlast@example.com' } ); + + $user->problems->delete; + $user->alerts->delete; + $user->delete; + }; +}; $contact1->delete; $contact2->delete; diff --git a/t/app/controller/report_new_open311.t b/t/app/controller/report_new_open311.t index 55c5a92e8..4745d92cd 100644 --- a/t/app/controller/report_new_open311.t +++ b/t/app/controller/report_new_open311.t @@ -3,16 +3,21 @@ use warnings; use Test::More; use FixMyStreet::TestMech; +use FixMyStreet::App; use Web::Scraper; +# disable info logs for this test run +FixMyStreet::App->log->disable('info'); +END { FixMyStreet::App->log->enable('info'); } + my $mech = FixMyStreet::TestMech->new; -my $open311Conf = FixMyStreet::App->model('DB::Open311Conf')->find_or_create( { - area_id => 2651, - endpoint => 'http://example.com/open311', - jurisdiction => 'mySociety', - api_key => 'apikey', -} ); +my $body = $mech->create_body_ok(2651, 'City of Edinburgh Council'); +$body->update({ + endpoint => 'http://example.com/open311', + jurisdiction => 'mySociety', + api_key => 'apikey', +}); my %contact_params = ( confirmed => 1, @@ -24,7 +29,7 @@ my %contact_params = ( # Let's make some contacts to send things to! my $contact1 = FixMyStreet::App->model('DB::Contact')->find_or_create( { %contact_params, - area_id => 2651, # Edinburgh + body_id => 2651, # Edinburgh category => 'Street lighting', email => '100', extra => [ { description => 'Lamppost number', code => 'number', required => 'True' }, @@ -35,7 +40,7 @@ my $contact1 = FixMyStreet::App->model('DB::Contact')->find_or_create( { } ); my $contact2 = FixMyStreet::App->model('DB::Contact')->find_or_create( { %contact_params, - area_id => 2651, # Edinburgh + body_id => 2651, # Edinburgh category => 'Graffiti Removal', email => '101', } ); @@ -111,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"; @@ -147,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/report_updates.t b/t/app/controller/report_updates.t index 82670d6cc..e84755650 100644 --- a/t/app/controller/report_updates.t +++ b/t/app/controller/report_updates.t @@ -35,7 +35,7 @@ my $dt = DateTime->new( my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( { postcode => 'SW1A 1AA', - council => '2504', + bodies_str => '2504', areas => ',105255,11806,11828,2247,2504,', category => 'Other', title => 'Test 2', @@ -407,9 +407,88 @@ for my $test ( $report->state('confirmed'); $report->update; +for my $test ( + { + desc => 'overriding email confirmation allows report confirmation with no email sent', + initial_values => { + name => '', + rznvy => '', + may_show_name => 1, + add_alert => 1, + photo => '', + update => '', + fixed => undef, + remember_me => undef, + password_register => '', + password_sign_in => '', + }, + form_values => { + submit_update => 1, + rznvy => 'unregistered@example.com', + update => "update no email confirm", + add_alert => 1, + name => 'Unreg User', + may_show_name => undef, + }, + changes => { + update => "Update no email confirm", + }, + } +) { + subtest $test->{desc} => sub { + my $send_confirmation_mail_override = Sub::Override->new( + "FixMyStreet::Cobrand::Default::never_confirm_updates", + sub { return 1; } + ); + $mech->log_out_ok(); + $mech->clear_emails_ok(); + + $mech->get_ok("/report/$report_id"); + + my $values = $mech->visible_form_values('updateForm'); + + is_deeply $values, $test->{initial_values}, 'initial form values'; + + $mech->submit_form_ok( + { + with_fields => $test->{form_values} + }, + 'submit update' + ); + + $mech->content_contains('Test 2'); + $mech->content_contains('Update no email confirm'); + + my $email = $mech->email_count_is(0); + + my $update = + FixMyStreet::App->model('DB::Comment')->find( { problem_id => $report_id, text => 'Update no email confirm' } ); + my $update_id = $update->id; + + $mech->content_contains('name="update_' . $update_id . '"'); + + my $details = { + %{ $test->{form_values} }, + %{ $test->{changes} } + }; + + ok $update, 'found update in database'; + is $update->state, 'confirmed', 'update confirmed'; + is $update->user->email, $details->{rznvy}, 'update email'; + is $update->text, $details->{update}, 'update text'; + + my $unreg_user = FixMyStreet::App->model( 'DB::User' )->find( { email => $details->{rznvy} } ); + + ok $unreg_user, 'found user'; + + $mech->delete_user( $unreg_user ); + $send_confirmation_mail_override->restore(); + }; +} + subtest 'check non authority user cannot change set state' => sub { $mech->log_in_ok( $user->email ); - $user->from_council( 0 ); + $user->from_body( undef ); $user->update; $mech->get_ok("/report/$report_id"); @@ -434,10 +513,12 @@ subtest 'check non authority user cannot change set state' => sub { is $report->state, 'confirmed', 'state unchanged'; }; +$mech->create_body_ok(2504, 'Westminster City Council'); + for my $state ( qw/unconfirmed hidden partial/ ) { subtest "check that update cannot set state to $state" => sub { $mech->log_in_ok( $user->email ); - $user->from_council( 2504 ); + $user->from_body( 2504 ); $user->update; $mech->get_ok("/report/$report_id"); @@ -477,64 +558,104 @@ for my $test ( state => 'investigating', }, { - desc => 'from authority user marks report as planned', + desc => 'from authority user marks report as in progress', fields => { name => $user->name, may_show_name => 1, add_alert => undef, photo => '', - update => 'Set state to planned', - state => 'planned', + update => 'Set state to in progress', + state => 'in progress', }, - state => 'planned', + state => 'in progress', }, { - desc => 'from authority user marks report as in progress', + desc => 'from authority user marks report as fixed', fields => { name => $user->name, may_show_name => 1, add_alert => undef, photo => '', - update => 'Set state to in progress', - state => 'in progress', + update => 'Set state to fixed', + state => 'fixed', }, - state => 'in progress', + state => 'fixed - council', }, { - desc => 'from authority user marks report as closed', + desc => 'from authority user marks report as action scheduled', fields => { name => $user->name, may_show_name => 1, add_alert => undef, photo => '', - update => 'Set state to closed', - state => 'closed', + update => 'Set state to action scheduled', + state => 'action scheduled', }, - state => 'closed', + state => 'action scheduled', }, { - desc => 'from authority user marks report as fixed', + desc => 'from authority user marks report as unable to fix', fields => { name => $user->name, may_show_name => 1, add_alert => undef, photo => '', - update => 'Set state to fixed', - state => 'fixed', + update => 'Set state to unable to fix', + state => 'unable to fix', }, - state => 'fixed - council', + state => 'unable to fix', }, { - desc => 'from authority user marks report as confirmed', + desc => 'from authority user marks report as internal referral', fields => { name => $user->name, may_show_name => 1, add_alert => undef, photo => '', - update => 'Set state to confirmed', - state => 'confirmed', + update => 'Set state to internal referral', + state => 'internal referral', }, - state => 'confirmed', + state => 'internal referral', + meta => "an internal referral", + }, + { + desc => 'from authority user marks report as not responsible', + fields => { + name => $user->name, + may_show_name => 1, + add_alert => undef, + photo => '', + update => 'Set state to not responsible', + state => 'not responsible', + }, + state => 'not responsible', + meta => "not the council's responsibility" + }, + { + desc => 'from authority user marks report as duplicate', + fields => { + name => $user->name, + may_show_name => 1, + add_alert => undef, + photo => '', + update => 'Set state to duplicate', + state => 'duplicate', + }, + state => 'duplicate', + meta => 'a duplicate report', + }, + { + desc => 'from authority user marks report as internal referral', + fields => { + name => $user->name, + may_show_name => 1, + add_alert => undef, + photo => '', + update => 'Set state to internal referral', + state => 'internal referral', + }, + state => 'internal referral', + meta => 'an internal referral', }, { desc => 'from authority user marks report sent to two councils as fixed', @@ -547,18 +668,18 @@ for my $test ( state => 'fixed', }, state => 'fixed - council', - report_councils => '2504,2505', + report_bodies => '2504,2505', }, ) { subtest $test->{desc} => sub { $report->comments->delete; - if ( $test->{ report_councils } ) { - $report->council( $test->{ report_councils } ); + if ( $test->{ report_bodies } ) { + $report->bodies_str( $test->{ report_bodies } ); $report->update; } $mech->log_in_ok( $user->email ); - $user->from_council( 2504 ); + $user->from_body( 2504 ); $user->update; $mech->get_ok("/report/$report_id"); @@ -577,11 +698,11 @@ for my $test ( is $update->problem_state, $test->{state}, 'problem state set'; my $update_meta = $mech->extract_update_metas; - # setting it to confirmed shouldn't say anything - if ( $test->{fields}->{state} ne 'confirmed' ) { - like $update_meta->[0], qr/marked as $test->{fields}->{state}$/, 'update meta includes state change'; + my $meta_state = $test->{meta} || $test->{fields}->{state}; + if ( $test->{reopened} ) { + like $update_meta->[0], qr/reopened$/, 'update meta says reopened'; } else { - like $update_meta->[0], qr/reopened$/, 'update meta includes state change'; + like $update_meta->[0], qr/marked as $meta_state$/, 'update meta includes state change'; } like $update_meta->[0], qr{Test User \(Westminster City Council\)}, 'update meta includes council name'; $mech->content_contains( 'Test User (<strong>Westminster City Council</strong>)', 'council name in bold'); @@ -598,7 +719,7 @@ subtest 'check meta correct for comments marked confirmed but not marked open' = user => $user, problem_id => $report->id, text => 'update text', - confirmed => DateTime->now, + confirmed => DateTime->now( time_zone => 'local' ), problem_state => 'confirmed', anonymous => 0, mark_open => 0, @@ -609,7 +730,7 @@ subtest 'check meta correct for comments marked confirmed but not marked open' = $mech->get_ok( "/report/" . $report->id ); my $update_meta = $mech->extract_update_metas; - like $update_meta->[0], qr/reopened$/, + unlike $update_meta->[0], qr/reopened$/, 'update meta does not say reopened'; $comment->update( { mark_open => 1, problem_state => undef } ); @@ -627,13 +748,164 @@ subtest 'check meta correct for comments marked confirmed but not marked open' = unlike $update_meta->[0], qr/marked as open$/, 'update meta does not says marked as open'; unlike $update_meta->[0], qr/reopened$/, 'update meta does not say reopened'; - }; +}; + +subtest "check first comment with no status change has no status in meta" => sub { + $mech->log_in_ok( $user->email ); + $user->from_body( undef ); + $user->update; + + my $comment = $report->comments->first; + $comment->update( { mark_fixed => 0, problem_state => 'confirmed' } ); + + $mech->get_ok("/report/$report_id"); + + my $update_meta = $mech->extract_update_metas; + unlike $update_meta->[0], qr/marked as|reopened/, 'update meta does not include state change'; +}; + +subtest "check comment with no status change has not status in meta" => sub { + $mech->log_in_ok( $user->email ); + $user->from_body( undef ); + $user->update; + + my $comment = $report->comments->first; + $comment->update( { mark_fixed => 1, problem_state => 'fixed - council' } ); + + $mech->get_ok("/report/$report_id"); -$user->from_council(0); + $mech->submit_form_ok( + { + with_fields => { + name => $user->name, + may_show_name => 1, + add_alert => undef, + photo => '', + update => 'Comment that does not change state', + }, + }, + 'submit update' + ); + + $report->discard_changes; + my @updates = $report->comments->all; + is scalar @updates, 2, 'correct number of updates'; + + my $update = pop @updates; + + is $report->state, 'fixed - council', 'correct report state'; + is $update->problem_state, 'fixed - council', 'correct update state'; + my $update_meta = $mech->extract_update_metas; + unlike $update_meta->[1], qr/marked as/, 'update meta does not include state change'; + + $user->from_body( 2504 ); + $user->update; + + $mech->get_ok("/report/$report_id"); + + $mech->submit_form_ok( + { + with_fields => { + name => $user->name, + may_show_name => 1, + add_alert => undef, + photo => '', + update => 'Comment that sets state to investigating', + state => 'investigating', + }, + }, + 'submit update' + ); + + $report->discard_changes; + @updates = $report->comments->search(undef, { order_by => 'created' })->all;; + + is scalar @updates, 3, 'correct number of updates'; + + $update = pop @updates; + + is $report->state, 'investigating', 'correct report state'; + is $update->problem_state, 'investigating', 'correct update state'; + $update_meta = $mech->extract_update_metas; + like $update_meta->[0], qr/marked as fixed/, 'first update meta says fixed'; + unlike $update_meta->[1], qr/marked as/, 'second update meta does not include state change'; + like $update_meta->[2], qr/marked as investigating/, 'third update meta says investigating'; + + my $dt = DateTime->now( time_zone => "local" )->add( seconds => 1 ); + $comment = FixMyStreet::App->model('DB::Comment')->find_or_create( + { + problem_id => $report_id, + user_id => $user->id, + name => 'Other User', + mark_fixed => 'false', + text => 'This is some update text', + state => 'confirmed', + confirmed => $dt->ymd . ' ' . $dt->hms, + anonymous => 'f', + } + ); + + $mech->get_ok("/report/$report_id"); + + $report->discard_changes; + @updates = $report->comments->search(undef, { order_by => 'created' })->all;; + is scalar @updates, 4, 'correct number of updates'; + + $update = pop @updates; + + is $report->state, 'investigating', 'correct report state'; + is $update->problem_state, undef, 'no update state'; + $update_meta = $mech->extract_update_metas; + like $update_meta->[0], qr/marked as fixed/, 'first update meta says fixed'; + unlike $update_meta->[1], qr/marked as/, 'second update meta does not include state change'; + like $update_meta->[2], qr/marked as investigating/, 'third update meta says investigating'; + unlike $update_meta->[3], qr/marked as/, 'fourth update meta has no state change'; +}; + +subtest 'check meta correct for second comment marking as reopened' => sub { + $report->comments->delete; + my $comment = FixMyStreet::App->model('DB::Comment')->create( + { + user => $user, + problem_id => $report->id, + text => 'update text', + confirmed => DateTime->now( time_zone => 'local'), + problem_state => 'fixed - user', + anonymous => 0, + mark_open => 0, + mark_fixed => 1, + state => 'confirmed', + } + ); + + $mech->get_ok( "/report/" . $report->id ); + my $update_meta = $mech->extract_update_metas; + like $update_meta->[0], qr/fixed$/, 'update meta says fixed'; + + $comment = FixMyStreet::App->model('DB::Comment')->create( + { + user => $user, + problem_id => $report->id, + text => 'update text', + confirmed => DateTime->now( time_zone => 'local' ) + DateTime::Duration->new( minutes => 1 ), + problem_state => 'confirmed', + anonymous => 0, + mark_open => 0, + mark_fixed => 0, + state => 'confirmed', + } + ); + + $mech->get_ok( "/report/" . $report->id ); + $update_meta = $mech->extract_update_metas; + like $update_meta->[1], qr/reopened$/, 'update meta says reopened'; +}; + +$user->from_body(undef); $user->update; $report->state('confirmed'); -$report->council('2504'); +$report->bodies_str('2504'); $report->update; for my $test ( @@ -1286,6 +1558,254 @@ for my $test ( }; } +for my $test ( + { + desc => 'update confirmed without marking as fixed leaves state unchanged', + initial_state => 'confirmed', + expected_form_fields => { + fixed => undef, + }, + submitted_form_fields => { + fixed => 0, + }, + end_state => 'confirmed', + }, + { + desc => 'update investigating without marking as fixed leaves state unchanged', + initial_state => 'investigating', + expected_form_fields => { + fixed => undef, + }, + submitted_form_fields => { + fixed => 0, + }, + end_state => 'investigating', + }, + { + desc => 'update in progress without marking as fixed leaves state unchanged', + initial_state => 'in progress', + expected_form_fields => { + fixed => undef, + }, + submitted_form_fields => { + fixed => 0, + }, + end_state => 'in progress', + }, + { + desc => 'update action scheduled without marking as fixed leaves state unchanged', + initial_state => 'action scheduled', + expected_form_fields => { + fixed => undef, + }, + submitted_form_fields => { + fixed => 0, + }, + end_state => 'action scheduled', + }, + { + desc => 'update fixed without marking as open leaves state unchanged', + initial_state => 'fixed', + expected_form_fields => { + reopen => undef, + }, + submitted_form_fields => { + reopen => 0, + }, + end_state => 'fixed', + }, + { + desc => 'update unable to fix without marking as fixed leaves state unchanged', + initial_state => 'unable to fix', + expected_form_fields => { + fixed => undef, + }, + submitted_form_fields => { + fixed => 0, + }, + end_state => 'unable to fix', + }, + { + desc => 'update internal referral without marking as fixed leaves state unchanged', + initial_state => 'internal referral', + expected_form_fields => { + fixed => undef, + }, + submitted_form_fields => { + fixed => 0, + }, + end_state => 'internal referral', + }, + { + desc => 'update not responsible without marking as fixed leaves state unchanged', + initial_state => 'not responsible', + expected_form_fields => { + fixed => undef, + }, + submitted_form_fields => { + fixed => 0, + }, + end_state => 'not responsible', + }, + { + desc => 'update duplicate without marking as fixed leaves state unchanged', + initial_state => 'duplicate', + expected_form_fields => { + fixed => undef, + }, + submitted_form_fields => { + fixed => 0, + }, + end_state => 'duplicate', + }, + { + desc => 'can mark confirmed as fixed', + initial_state => 'confirmed', + expected_form_fields => { + fixed => undef, + }, + submitted_form_fields => { + fixed => 1, + }, + end_state => 'fixed - user', + }, + { + desc => 'can mark investigating as fixed', + initial_state => 'investigating', + expected_form_fields => { + fixed => undef, + }, + submitted_form_fields => { + fixed => 1, + }, + end_state => 'fixed - user', + }, + { + desc => 'can mark in progress as fixed', + initial_state => 'in progress', + expected_form_fields => { + fixed => undef, + }, + submitted_form_fields => { + fixed => 1, + }, + end_state => 'fixed - user', + }, + { + desc => 'can mark action scheduled as fixed', + initial_state => 'action scheduled', + expected_form_fields => { + fixed => undef, + }, + submitted_form_fields => { + fixed => 1, + }, + end_state => 'fixed - user', + }, + { + desc => 'cannot mark fixed as fixed, can mark as not fixed', + initial_state => 'fixed', + expected_form_fields => { + reopen => undef, + }, + submitted_form_fields => { + reopen => 1, + }, + end_state => 'confirmed', + }, + { + desc => 'can mark unable to fix as fixed, cannot mark not closed', + initial_state => 'unable to fix', + expected_form_fields => { + fixed => undef, + }, + submitted_form_fields => { + fixed => 1, + }, + end_state => 'fixed - user', + }, + { + desc => 'can mark internal referral as fixed, cannot mark not closed', + initial_state => 'internal referral', + expected_form_fields => { + fixed => undef, + }, + submitted_form_fields => { + fixed => 1, + }, + end_state => 'fixed - user', + }, + { + desc => 'can mark not responsible as fixed, cannot mark not closed', + initial_state => 'not responsible', + expected_form_fields => { + fixed => undef, + }, + submitted_form_fields => { + fixed => 1, + }, + end_state => 'fixed - user', + }, + { + desc => 'can mark duplicate as fixed, cannot mark not closed', + initial_state => 'duplicate', + expected_form_fields => { + fixed => undef, + }, + submitted_form_fields => { + fixed => 1, + }, + end_state => 'fixed - user', + }, +) { + subtest $test->{desc} => sub { + $mech->log_in_ok( $report->user->email ); + + my %standard_fields = ( + name => $report->user->name, + update => 'update text', + photo => '', + may_show_name => 1, + add_alert => 1, + ); + + my %expected_fields = ( + %standard_fields, + %{ $test->{expected_form_fields} }, + update => '', + ); + + my %submitted_fields = ( + %standard_fields, + %{ $test->{submitted_form_fields} }, + ); + + # clear out comments for this problem to make + # checking details easier later + ok( $_->delete, 'deleted comment ' . $_->id ) for $report->comments; + + $report->discard_changes; + $report->state($test->{initial_state}); + $report->update; + + $mech->get_ok("/report/$report_id"); + + my $values = $mech->visible_form_values('updateForm'); + is_deeply $values, \%expected_fields, 'correct form fields present'; + + if ( $test->{submitted_form_fields} ) { + $mech->submit_form_ok( { + with_fields => \%submitted_fields + }, + 'submit update' + ); + + $report->discard_changes; + is $report->state, $test->{end_state}, 'update sets correct report state'; + } + }; +} + subtest 'check have to be logged in for creator fixed questionnaire' => sub { $mech->log_out_ok(); diff --git a/t/app/controller/reports.t b/t/app/controller/reports.t index a4dab6597..42e69fd03 100644 --- a/t/app/controller/reports.t +++ b/t/app/controller/reports.t @@ -8,15 +8,25 @@ use DateTime; ok( my $mech = FixMyStreet::TestMech->new, 'Created mech object' ); -$mech->delete_problems_for_council( 2504 ); -$mech->delete_problems_for_council( 2651 ); +$mech->create_body_ok(2514, 'Birmingham City Council'); +$mech->create_body_ok(2651, 'City of Edinburgh Council'); +$mech->create_body_ok(2504, 'Westminster City Council'); -my @edinburgh_problems = $mech->create_problems_for_council(3, 2651, 'All reports'); -my @westminster_problems = $mech->create_problems_for_council(5, 2504, 'All reports'); +$mech->delete_problems_for_body( 2504 ); +$mech->delete_problems_for_body( 2651 ); + +my @edinburgh_problems = $mech->create_problems_for_body(3, 2651, 'All reports'); +my @westminster_problems = $mech->create_problems_for_body(5, 2504, 'All reports'); is scalar @westminster_problems, 5, 'correct number of westminster problems created'; is scalar @edinburgh_problems, 3, 'correct number of edinburgh problems created'; +$edinburgh_problems[1]->update( { + state => 'in progress', + confirmed => DateTime->now()->subtract( weeks => 6 ), + lastupdate => DateTime->now()->subtract( weeks => 5 ), +} ); + # Run the cron script that makes the data for /reports so we don't get an error. system( "bin/cron-wrapper update-all-reports" ); @@ -27,12 +37,18 @@ $mech->content_contains('Birmingham'); my $stats = $mech->extract_report_stats; -is $stats->{'City of Edinburgh Council'}->[1], 3, 'correct number of reports for Edinburgh'; +is $stats->{'City of Edinburgh Council'}->[1], 2, 'correct number of new reports for Edinburgh'; +is $stats->{'City of Edinburgh Council'}->[2], 1, 'correct number of older reports for Edinburgh'; + 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'); @@ -43,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'; @@ -53,23 +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'); - 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 77e2c7ee1..bafa1ddc0 100644 --- a/t/app/controller/rss.t +++ b/t/app/controller/rss.t @@ -3,6 +3,7 @@ use warnings; use Test::More; use FixMyStreet::TestMech; +use FixMyStreet::App; my $mech = FixMyStreet::TestMech->new; @@ -13,11 +14,13 @@ my $dt = DateTime->new( ); my $user1 = FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'reporter@example.com', name => 'Reporter User' } ); + ->find_or_create( { email => 'reporter-rss@example.com', name => 'Reporter User' } ); + +my $dt_parser = FixMyStreet::App->model('DB')->schema->storage->datetime_parser; my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( { postcode => 'eh1 1BB', - council => '2651', + bodies_str => '2651', areas => ',11808,135007,14419,134935,2651,20728,', category => 'Street lighting', title => 'Testing', @@ -26,9 +29,9 @@ my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( { name => $user1->name, anonymous => 0, state => 'confirmed', - confirmed => $dt, - lastupdate => $dt, - whensent => $dt->clone->add( minutes => 5 ), + confirmed => $dt_parser->format_datetime($dt), + lastupdate => $dt_parser->format_datetime($dt), + whensent => $dt_parser->format_datetime($dt->clone->add( minutes => 5 )), lang => 'en-gb', service => '', cobrand => 'default', @@ -39,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' ); @@ -108,11 +116,84 @@ $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' ); $report->delete(); -$user1->delete(); + +my $now = DateTime->now(); +my $report_to_council = FixMyStreet::App->model('DB::Problem')->find_or_create( + { + postcode => 'WS13 6YY', + bodies_str => '2434', + areas => ',2434,2240,', + category => 'Other', + title => 'council report', + detail => 'Test 2 Detail', + used_map => 't', + name => 'Test User', + anonymous => 'f', + state => 'closed', + confirmed => $now->ymd . ' ' . $now->hms, + lang => 'en-gb', + service => '', + cobrand => 'default', + cobrand_data => '', + send_questionnaire => 't', + latitude => '52.727588', + longitude => '-1.731322', + user_id => $user1->id, + } +); + +my $report_to_county_council = FixMyStreet::App->model('DB::Problem')->find_or_create( + { + postcode => 'WS13 6YY', + bodies_str => '2240', + areas => ',2434,2240,', + category => 'Other', + title => 'county report', + detail => 'Test 2 Detail', + used_map => 't', + name => 'Test User', + anonymous => 'f', + state => 'closed', + confirmed => $now->ymd . ' ' . $now->hms, + lang => 'en-gb', + service => '', + cobrand => 'default', + cobrand_data => '', + send_questionnaire => 't', + latitude => '52.727588', + longitude => '-1.731322', + user_id => $user1->id, + } +); + +subtest "check RSS feeds on cobrand have correct URLs for non-cobrand reports" => sub { + $mech->host('lichfielddc.fixmystreet.com'); + my $expected1 = mySociety::Config::get('BASE_URL') . '/report/' . $report_to_county_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'); +}; + +$mech->delete_user( $user1 ); done_testing(); diff --git a/t/app/helpers/send_email.t b/t/app/helpers/send_email.t index 8c043f701..14c7d363b 100644 --- a/t/app/helpers/send_email.t +++ b/t/app/helpers/send_email.t @@ -9,23 +9,14 @@ BEGIN { FixMyStreet->test_mode(1); } -use Test::More tests => 6; +use Test::More tests => 5; + +use Catalyst::Test 'FixMyStreet::App'; use Email::Send::Test; use Path::Class; -use_ok 'FixMyStreet::App'; -my $c = FixMyStreet::App->new( - { - request => Catalyst::Request->new( - { - base => URI->new('http://fixmystreet.com/'), - uri => URI->new('http://fixmystreet.com/') - } - ), - } -); -$c->setup_request(); +my $c = ctx_request("/"); # set some values in the stash $c->stash->{foo} = 'bar'; @@ -49,7 +40,7 @@ ok $email_as_string =~ s{\s+Message-ID:\s+\S.*?$}{}xms, "Found and stripped out my $expected_email_content = file(__FILE__)->dir->file('send_email_sample.txt')->slurp; my $name = FixMyStreet->config('CONTACT_NAME'); $name = "\"$name\"" if $name =~ / /; -my $sender = $name . ' <' . FixMyStreet->config('CONTACT_EMAIL') . '>'; +my $sender = $name . ' <' . FixMyStreet->config('DO_NOT_REPLY_EMAIL') . '>'; $expected_email_content =~ s{CONTACT_EMAIL}{$sender}; is $email_as_string, diff --git a/t/app/helpers/send_email_sample.txt b/t/app/helpers/send_email_sample.txt index 2fe5272cb..1ccce6a23 100644 --- a/t/app/helpers/send_email_sample.txt +++ b/t/app/helpers/send_email_sample.txt @@ -5,25 +5,24 @@ To: test@recipient.com Content-Transfer-Encoding: quoted-printable From: CONTACT_EMAIL - Hello, +Hello, - This is a test email where foo: bar. +This is a test email where foo: bar. - utf8: =E6=88=91=E4=BB=AC=E5=BA=94=E8=AF=A5=E8=83=BD=E5=A4=9F=E6=97=A0= -=E7=BC=9D=E5=A4=84=E7=90=86UTF8=E7=BC=96=E7=A0=81 +utf8: =E6=88=91=E4=BB=AC=E5=BA=94=E8=AF=A5=E8=83=BD=E5=A4=9F=E6=97=A0=E7=BC= +=9D=E5=A4=84=E7=90=86UTF8=E7=BC=96=E7=A0=81 - indented_text + indented_text - long line: Lorem ipsum dolor sit amet, consectetur adipisicing - elit, sed do eiusmod tempor incididunt ut labore et dolore - magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo - consequat. Duis aute irure dolor in reprehenderit in voluptate - velit esse cillum dolore eu fugiat nulla pariatur. Excepteur - sint occaecat cupidatat non proident, sunt in culpa qui officia - deserunt mollit anim id est laborum. +long line: Lorem ipsum dolor sit amet, consectetur adipisicing elit, +sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris +nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in +reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla +pariatur. Excepteur sint occaecat cupidatat non proident, sunt in +culpa qui officia deserunt mollit anim id est laborum. - Yours,=20=20 - FixMyStreet.=20= +Yours,=20=20 +FixMyStreet.=20= diff --git a/t/app/model/alert_type.t b/t/app/model/alert_type.t index c592e9d3f..ae413978f 100644 --- a/t/app/model/alert_type.t +++ b/t/app/model/alert_type.t @@ -39,7 +39,7 @@ my $dt = DateTime->new( my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( { postcode => 'SW1A 1AA', - council => '2504', + bodies_str => '2504', areas => ',105255,11806,11828,2247,2504,', category => 'Other', title => 'Test 2', @@ -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; @@ -345,7 +355,7 @@ my $ward_alert = FixMyStreet::App->model('DB::Alert')->find_or_create( my $report_to_council = FixMyStreet::App->model('DB::Problem')->find_or_create( { postcode => 'WS13 6YY', - council => '2434', + bodies_str => '2434', areas => ',105255,11806,11828,2247,2504,7117,', category => 'Other', title => 'council report', @@ -369,7 +379,7 @@ my $report_to_council = FixMyStreet::App->model('DB::Problem')->find_or_create( my $report_to_county_council = FixMyStreet::App->model('DB::Problem')->find_or_create( { postcode => 'WS13 6YY', - council => '2240', + bodies_str => '2240', areas => ',105255,11806,11828,2247,2504,7117,', category => 'Other', title => 'county report', @@ -393,7 +403,7 @@ my $report_to_county_council = FixMyStreet::App->model('DB::Problem')->find_or_c my $report_outside_district = FixMyStreet::App->model('DB::Problem')->find_or_create( { postcode => 'WS13 6YY', - council => '2221', + bodies_str => '2221', areas => ',105255,11806,11828,2247,2504,7117,', category => 'Other', title => 'outside district report', @@ -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/comment.t b/t/app/model/comment.t index 93104c2e5..3141af828 100644 --- a/t/app/model/comment.t +++ b/t/app/model/comment.t @@ -23,5 +23,5 @@ my $comment = $comment_rs->new( } ); -is $comment->confirmed_local, undef, 'inflating null confirmed ok'; -is $comment->created_local, undef, 'inflating null confirmed ok'; +is $comment->confirmed, undef, 'inflating null confirmed ok'; +is $comment->created, undef, 'inflating null confirmed ok'; diff --git a/t/app/model/problem.t b/t/app/model/problem.t index 63204e05c..24ed959af 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'); @@ -32,10 +33,10 @@ my $problem = $problem_rs->new( } ); -is $problem->confirmed_local, undef, 'inflating null confirmed ok'; -is $problem->whensent_local, undef, 'inflating null confirmed ok'; -is $problem->lastupdate_local, undef, 'inflating null confirmed ok'; -is $problem->created_local, undef, 'inflating null confirmed ok'; +is $problem->confirmed, undef, 'inflating null confirmed ok'; +is $problem->whensent, undef, 'inflating null confirmed ok'; +is $problem->lastupdate, undef, 'inflating null confirmed ok'; +is $problem->created, undef, 'inflating null confirmed ok'; for my $test ( { @@ -44,7 +45,7 @@ for my $test ( errors => { title => 'Please enter a subject', detail => 'Please enter some details', - council => 'No council selected', + bodies => 'No council selected', name => 'Please enter your name', } }, @@ -56,7 +57,7 @@ for my $test ( errors => { title => 'Please enter a subject', detail => 'Please enter some details', - council => 'No council selected', + bodies => 'No council selected', name => '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', } }, @@ -68,7 +69,7 @@ for my $test ( errors => { title => 'Please enter a subject', detail => 'Please enter some details', - council => 'No council selected', + bodies => 'No council selected', name => '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', } }, @@ -80,7 +81,7 @@ for my $test ( errors => { title => 'Please enter a subject', detail => 'Please enter some details', - council => 'No council selected', + bodies => 'No council selected', } }, { @@ -90,7 +91,7 @@ for my $test ( }, errors => { detail => 'Please enter some details', - council => 'No council selected', + bodies => 'No council selected', } }, { @@ -99,22 +100,22 @@ for my $test ( detail => 'Some information about the problem', }, errors => { - council => 'No council selected', + bodies => 'No council selected', } }, { - desc => 'incorrectly formatted council', + desc => 'incorrectly formatted body', changed => { - council => 'my council', + bodies_str => 'my body', }, errors => { - council => 'No council selected', + bodies => 'No council selected', } }, { - desc => 'correctly formatted council', + desc => 'correctly formatted body', changed => { - council => '1001', + bodies_str => '1001', }, errors => { } @@ -167,6 +168,10 @@ $problem->insert; my $tz_local = DateTime::TimeZone->new( name => 'local' ); +my $body = FixMyStreet::App->model('DB::Body')->new({ + name => 'Edinburgh City Council' +}); + for my $test ( { desc => 'request older than problem ignored', @@ -174,9 +179,6 @@ for my $test ( request => { updated_datetime => DateTime::Format::W3CDTF->new()->format_datetime( DateTime->now()->set_time_zone( $tz_local )->subtract( days => 2 ) ), }, - council => { - name => 'Edinburgh City Council', - }, created => 0, }, { @@ -187,9 +189,6 @@ for my $test ( status => 'open', status_notes => 'this is an update from the council', }, - council => { - name => 'Edinburgh City Council', - }, created => 1, state => 'confirmed', mark_fixed => 0, @@ -203,9 +202,6 @@ for my $test ( status => 'closed', status_notes => 'the council have fixed this', }, - council => { - name => 'Edinburgh City Council', - }, created => 1, state => 'fixed', mark_fixed => 1, @@ -219,9 +215,6 @@ for my $test ( status => 'open', status_notes => 'the council do not think this is fixed', }, - council => { - name => 'Edinburgh City Council', - }, created => 1, start_state => 'fixed', state => 'fixed', @@ -238,7 +231,7 @@ for my $test ( $problem->update; my $w3c = DateTime::Format::W3CDTF->new(); - my $ret = $problem->update_from_open311_service_request( $test->{request}, $test->{council}, $user ); + my $ret = $problem->update_from_open311_service_request( $test->{request}, $body, $user ); is $ret, $test->{created}, 'return value'; return unless $test->{created}; @@ -302,6 +295,13 @@ for my $test ( is_closed => 0, }, { + state => 'action scheduled', + is_visible => 1, + is_fixed => 0, + is_open => 1, + is_closed => 0, + }, + { state => 'in progress', is_visible => 1, is_fixed => 0, @@ -309,6 +309,27 @@ for my $test ( is_closed => 0, }, { + state => 'duplicate', + is_visible => 1, + is_fixed => 0, + is_open => 0, + is_closed => 1, + }, + { + state => 'not responsible', + is_visible => 1, + is_fixed => 0, + is_open => 0, + is_closed => 1, + }, + { + state => 'unable to fix', + is_visible => 1, + is_fixed => 0, + is_open => 0, + is_closed => 1, + }, + { state => 'fixed', is_visible => 1, is_fixed => 1, @@ -355,42 +376,53 @@ my %contact_params = ( whenedited => \'ms_current_timestamp()', note => 'Created for test', ); + +for my $body ( + { id => 2651, name => 'City of Edinburgh Council' }, + { id => 2226, name => 'Gloucestershire County Council' }, + { id => 2326, name => 'Cheltenham Borough Council' }, + { id => 2434, name => 'Lichfield District Council' }, + { id => 2240, name => 'Staffordshire County Council' }, + { id => 14279, name => 'Ballymoney Borough Council' }, + { id => 2636, name => 'Isle of Wight Council' }, + { id => 2649, name => 'Fife Council' }, +) { + $mech->create_body_ok($body->{id}, $body->{name}); +} + # Let's make some contacts to send things to! -FixMyStreet::App->model('DB::Contact')->search( { - email => { 'like', '%example.com' }, -} )->delete; my @contacts; for my $contact ( { - area_id => 2651, # Edinburgh + body_id => 2651, # Edinburgh category => 'potholes', email => 'test@example.org', }, { - area_id => 2226, # Gloucestershire + body_id => 2226, # Gloucestershire category => 'potholes', email => '2226@example.org', }, { - area_id => 2326, # Cheltenham + body_id => 2326, # Cheltenham category => 'potholes', email => '2326@example.org', }, { - area_id => 2434, # Lichfield + body_id => 2434, # Lichfield category => 'potholes', email => 'trees@example.com', }, { - area_id => 2240, # Staffordshire + body_id => 2240, # Staffordshire category => 'potholes', email => 'highways@example.com', }, { - area_id => 14279, # Ballymoney + body_id => 14279, # Ballymoney category => 'Street lighting', email => 'roads.western@drdni.example.org', }, { - area_id => 14279, # Ballymoney + body_id => 14279, # Ballymoney category => 'Graffiti', email => 'highways@example.com', }, { confirmed => 0, - area_id => 2636, # Isle of Wight + body_id => 2636, # Isle of Wight category => 'potholes', email => '2636@example.com', } ) { @@ -410,21 +442,21 @@ foreach my $test ( { email_count => 1, dear => qr'Dear City of Edinburgh Council', to => qr'City of Edinburgh Council', - council => 2651, + body => 2651, }, { %common, desc => 'no email sent if no unsent problems', unset_whendef => 0, email_count => 0, - council => 2651, + body => 2651, }, { %common, 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', - council => '2226,2326', + to => qr'Cheltenham Borough Council.*Gloucestershire County Council', + dear => qr'Dear Cheltenham Borough Council and Gloucestershire County', + body => '2226,2326', multiple => 1, }, { %common, @@ -433,7 +465,7 @@ foreach my $test ( { email_count => 1, to => qr'Gloucestershire County Council" <2226@example', dear => qr'Dear Gloucestershire County Council,', - council => '2226|2649', + body => '2226|2649', missing => qr'problem might be the responsibility of Fife.*Council'ms, }, { %common, @@ -442,7 +474,7 @@ foreach my $test ( { email_count => 1, to => qr'Lichfield District Council', dear => qr'Dear Lichfield District Council,', - council => '2434', + body => '2434', cobrand => 'lichfielddc', url => 'lichfielddc.', }, { @@ -452,9 +484,9 @@ foreach my $test ( { email_count => 1, to => qr'Staffordshire County Council" <highways@example', dear => qr'Dear Staffordshire County Council,', - council => '2240', + body => '2240', cobrand => 'lichfielddc', - url => '', + url => 'www.', }, { %common, desc => 'directs NI correctly, 1', @@ -462,7 +494,7 @@ foreach my $test ( { email_count => 1, dear => qr'Dear Ballymoney Borough Council', to => qr'Ballymoney Borough Council', - council => 14279, + body => 14279, category => 'Graffiti', }, { %common, @@ -471,7 +503,7 @@ foreach my $test ( { email_count => 1, dear => qr'Dear Roads Service \(Western\)', to => qr'Roads Service \(Western\)" <roads', - council => 14279, + body => 14279, category => 'Street lighting', }, { %common, @@ -479,12 +511,17 @@ foreach my $test ( { unset_whendef => 1, stays_unsent => 1, email_count => 0, - council => 2636, + body => 2636, }, ) { 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; @@ -497,7 +534,7 @@ foreach my $test ( { $problem->discard_changes; $problem->update( { - council => $test->{ council }, + bodies_str => $test->{ body }, state => 'confirmed', confirmed => \'ms_current_timestamp()', whensent => $test->{ unset_whendef } ? undef : \'ms_current_timestamp()', @@ -506,7 +543,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 } ) { @@ -519,15 +558,14 @@ foreach my $test ( { like $email->body, $test->{ dear }, 'Salutation looks correct'; if ( $test->{multiple} ) { - like $email->body, qr/This email has been sent to several councils /, 'multiple council text correct'; + like $email->body, qr/This email has been sent to several councils /, 'multiple body text correct'; } elsif ( $test->{ missing } ) { - like $email->body, $test->{ missing }, 'missing council information correct'; + like $email->body, $test->{ missing }, 'missing body information correct'; } 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; @@ -540,10 +578,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( @@ -554,18 +639,16 @@ subtest 'check can turn on report sent email alerts' => sub { $problem->discard_changes; $problem->update( { - council => 2651, + bodies_str => 2651, state => 'confirmed', confirmed => \'ms_current_timestamp()', whensent => undef, category => 'potholes', name => 'Test User', cobrand => 'fixmystreet', + 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 ); @@ -585,14 +668,95 @@ 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(); }; -$problem->comments->delete; -$problem->delete; -$user->delete; -foreach (@contacts) { - $_->delete; -} +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()' } ); -done_testing(); + $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'; +}; + +END { + $problem->comments->delete if $problem; + $problem->delete if $problem; + $mech->delete_user( $user ) if $user; + + foreach (@contacts) { + $_->delete; + } + + done_testing(); +} diff --git a/t/app/model/questionnaire.t b/t/app/model/questionnaire.t index 60b52043a..be5b433c1 100644 --- a/t/app/model/questionnaire.t +++ b/t/app/model/questionnaire.t @@ -32,8 +32,6 @@ my $problem = FixMyStreet::App->model('DB::Problem')->create( } ); -diag $problem->id; - my $mech = FixMyStreet::TestMech->new; for my $test ( @@ -62,6 +60,10 @@ for my $test ( send_email => 1, }, { + state => 'action scheduled', + send_email => 1, + }, + { state => 'in progress', send_email => 1, }, @@ -78,6 +80,18 @@ for my $test ( send_email => 1, }, { + state => 'duplicate', + send_email => 1, + }, + { + state => 'unable to fix', + send_email => 1, + }, + { + state => 'not responsible', + send_email => 1, + }, + { state => 'closed', send_email => 1, }, 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/sendreport/email.t b/t/app/sendreport/email.t index f0e1f153a..8063c928f 100644 --- a/t/app/sendreport/email.t +++ b/t/app/sendreport/email.t @@ -14,9 +14,14 @@ use mySociety::Locale; my $e = FixMyStreet::SendReport::Email->new(); +# area id 1000 +my $params = { id => 1000, name => 'Council of the Thousand' }; +my $body = FixMyStreet::App->model('DB::Body')->find_or_create($params); +ok $body, "found/created body"; + my $contact = FixMyStreet::App->model('DB::Contact')->find_or_create( email => 'council@example.com', - area_id => 1000, + body_id => 1000, category => 'category', confirmed => 1, deleted => 0, @@ -26,8 +31,9 @@ my $contact = FixMyStreet::App->model('DB::Contact')->find_or_create( ); my $row = FixMyStreet::App->model('DB::Problem')->new( { - council => '1000', + bodies_str => '1000', category => 'category', + cobrand => '', } ); ok $e; @@ -47,7 +53,7 @@ foreach my $test ( { count => undef, add_council => 1, unconfirmed => 1, - expected_note => 'Council 1000 deleted', + expected_note => 'Body 1000 deleted', }, { desc => 'unconfirmed contact note uses note from contact table', @@ -62,7 +68,7 @@ foreach my $test ( { my $e = FixMyStreet::SendReport::Email->new; $contact->update( { confirmed => 0 } ) if $test->{unconfirmed}; $contact->update( { note => $test->{note} } ) if $test->{note}; - $e->add_council( 1000, { name => 'test council' } ) if $test->{add_council}; + $e->add_body( $body ) if $test->{add_council}; is $e->build_recipient_list( $row, {} ), $test->{count}, 'correct recipient list count'; if ( $test->{unconfirmed} ) { diff --git a/t/app/uri_for.t b/t/app/uri_for.t index eecf30e32..810aade62 100644 --- a/t/app/uri_for.t +++ b/t/app/uri_for.t @@ -4,7 +4,7 @@ use warnings; use Test::More; # FIXME Should this be here? A better way? uri_for varies by map. -use Test::WWW::Mechanize::Catalyst 'FixMyStreet::App'; +use Catalyst::Test 'FixMyStreet::App'; FixMyStreet::Map::set_map_class(); # structure of these tests borrowed from '/t/aggregate/unit_core_uri_for.t' @@ -15,43 +15,9 @@ use URI; use_ok('FixMyStreet::App'); -my $fms_c = FixMyStreet::App->new( - { - request => Catalyst::Request->new( - { - base => URI->new('http://www.fixmystreet.com/'), - uri => URI->new('http://www.fixmystreet.com/test_namespace') - } - ), - namespace => 'test_namespace', - } -); - -my $fgm_c = FixMyStreet::App->new( - { - request => Catalyst::Request->new( - { - base => URI->new('http://www.fiksgatami.no/'), - uri => URI->new('http://www.fiksgatami.no/test_namespace') - } - ), - namespace => 'test_namespace', - } -); - -my $reh_en_c = FixMyStreet::App->new( - { - request => Catalyst::Request->new( - { - base => URI->new('http://reportemptyhomes.com/'), - uri => URI->new('http://reportemptyhomes.com/test_namespace') - } - ), - namespace => 'test_namespace', - } -); -$reh_en_c->setup_request(); - +my $fms_c = ctx_request('http://www.fixmystreet.com/'); +my $fgm_c = ctx_request('http://www.fiksgatami.no/'); +my $reh_en_c = ctx_request('http://reportemptyhomes.com/'); is( $fms_c->uri_for('/bar/baz') . "", @@ -61,7 +27,7 @@ is( is( $fms_c->uri_for('') . "", - 'http://www.fixmystreet.com/test_namespace', + 'http://www.fixmystreet.com/', 'URI for namespace' ); @@ -78,36 +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 = FixMyStreet::App->new( - { - request => Catalyst::Request->new( - { - base => URI->new('http://cy.reportemptyhomes.com/'), - uri => URI->new('http://cy.reportemptyhomes.com/test_namespace') - } - ), - namespace => 'test_namespace', - } - ); - $reh_cy_c->setup_request(); +# 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/closest.t b/t/cobrand/closest.t index 464c95e67..d06f7e9a0 100644 --- a/t/cobrand/closest.t +++ b/t/cobrand/closest.t @@ -5,6 +5,9 @@ use Test::More; use mySociety::Locale; use FixMyStreet::App; +use FixMyStreet::TestMech; + +my $mech = FixMyStreet::TestMech->new; use_ok 'FixMyStreet::Cobrand'; @@ -29,7 +32,7 @@ my $dt = DateTime->new( my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( { postcode => 'SW1A 1AA', - council => '2504', + bodies_str => '2504', areas => ',105255,11806,11828,2247,2504,', category => 'Other', title => 'Test 2', @@ -81,4 +84,5 @@ SKIP: { } # all done +$mech->delete_user( $user ); 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 new file mode 100644 index 000000000..b996fa0a6 --- /dev/null +++ b/t/cobrand/fixmybarangay.t @@ -0,0 +1,140 @@ +use strict; +use warnings; +use Test::More; + +BEGIN { + use FixMyStreet; + FixMyStreet->test_mode(1); +} + +use FixMyStreet::TestMech; +my $mech = FixMyStreet::TestMech->new; + +# Front page test + +ok $mech->host("www.fixmybarangay.com"), "change host to FixMyBarangay"; +FixMyStreet::override_config { + ALLOWED_COBRANDS => [ 'fixmybarangay' ], +}, sub { + $mech->get_ok('/'); +}; +$mech->content_like( qr/FixMyBarangay/ ); + +# Set up bodies + +my $luz = $mech->create_body_ok( 1, 'Bgy Luz' ); +$luz->update( { send_method => 'Email' } ); + +my $bsn = $mech->create_body_ok( 2, 'Bgy BSN' ); +$bsn->update( { send_method => 'Email' } ); + +my $dps = $mech->create_body_ok( 3, 'DPS' ); +$dps->update( { send_method => 'Open311', endpoint => 'http://dps.endpoint.example.com', jurisdiction => 'FMB', api_key => 'test' } ); +FixMyStreet::App->model('DB::BodyArea')->find_or_create({ area_id => 1, body_id => 3 }); +FixMyStreet::App->model('DB::BodyArea')->find_or_create({ area_id => 2, body_id => 3 }); + +# Create contacts for these bodies +# TODO: log in as a Bgy user, and create a report using the front end, +# testing that the drop-down has the right things in it, and so on. + +my %contact_params = ( + confirmed => 1, + deleted => 0, + editor => 'Test', + whenedited => \'current_timestamp', + note => 'Created for test', +); +FixMyStreet::App->model('DB::Contact')->search( { + email => { 'like', '%example.com' }, +} )->delete; +my $contact1 = FixMyStreet::App->model('DB::Contact')->find_or_create( { + %contact_params, + body_id => 1, + category => 'Streetlight (BGY)', + email => 'bgy@example.com', +} ); +my $contact2 = FixMyStreet::App->model('DB::Contact')->find_or_create( { + %contact_params, + body_id => 3, + category => 'Streetlight (DPS)', + email => 'LIGHT', +} ); + +# Create a couple of reports + +my @reports = $mech->create_problems_for_body( 1, 1, 'Test', { + cobrand => 'fixmybarangay', + category => 'Streetlight (BGY)', +}); +my $luz_report = $reports[0]; + +@reports = $mech->create_problems_for_body( 1, 3, 'Test', { + cobrand => 'fixmybarangay', + category => 'Streetlight (DPS)', +}); +my $dps_report = $reports[0]; + +$mech->get_ok( '/report/' . $luz_report->id ); +$mech->get_ok( '/report/' . $dps_report->id ); + +# Send the reports + +$mech->email_count_is(0); + +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; +like $email->header('Subject'), qr/Problem Report: Test Test/, 'subject looks okay'; +like $email->header('To'), qr/bgy\@example.com/, 'to line looks correct'; +$mech->clear_emails_ok; + +$luz_report->discard_changes; +$dps_report->discard_changes; +ok $luz_report->whensent, 'Luz report marked as sent'; +ok $dps_report->whensent, 'DPS report marked as sent'; +is $dps_report->send_method_used, 'Open311', 'DPS report sent via Open311'; +is $dps_report->external_id, 248, 'DPS report has right external ID'; + +my $fmb_test_email = 'luz_test_user@example.com'; +my $user = FixMyStreet::App->model('DB::User')->find_or_create( { email => $fmb_test_email, from_body => 1, password => 'fmbsecret' } ); +ok $user, "test user does exist"; + +$mech->log_out_ok; +$mech->get_ok( '/report/' . $luz_report->id ); +$mech->content_lacks( "Remove from site" ); +$mech->content_contains( "Report abuse" ); + +$mech->post_ok('/report/delete/' . $luz_report->id); +is $mech->uri->path, '/report/' . $luz_report->id, "should redirect to report page, deletion ignored"; +$luz_report->discard_changes; +is $luz_report->state, 'confirmed', 'should be confirmed'; + +$user = $mech->log_in_ok($fmb_test_email); + +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" ); + +$mech->form_id('remove-from-site-form'); +$mech->submit_form(); +is $mech->uri->path, '/report/' . $luz_report->id, "should redirect to report page, deletion successful"; +$luz_report->discard_changes; +is $luz_report->state, 'hidden', 'should be hidden'; + +$mech->delete_user($fmb_test_email); + +$mech->delete_problems_for_body( 1 ); +$mech->delete_problems_for_body( 3 ); + +ok $mech->host("www.fixmystreet.com"), "change host back"; + +done_testing(); diff --git a/t/cobrand/get_body_sender.t b/t/cobrand/get_body_sender.t new file mode 100644 index 000000000..964f5c0e4 --- /dev/null +++ b/t/cobrand/get_body_sender.t @@ -0,0 +1,43 @@ +use strict; +use warnings; + +use Test::More; + +use mySociety::Locale; +use FixMyStreet::App; + +use_ok 'FixMyStreet::Cobrand'; + +mySociety::Locale::gettext_domain( 'FixMyStreet' ); + +my $c = FixMyStreet::Cobrand::FixMyStreet->new(); + +FixMyStreet::App->model('DB::BodyArea')->search( { body_id => 1000 } )->delete; +FixMyStreet::App->model('DB::Body')->search( { name => 'Body of a Thousand' } )->delete; + +my $body = FixMyStreet::App->model('DB::Body')->find_or_create({ + id => 1000, + name => 'Body of a Thousand', +}); +my $body_area = $body->body_areas->find_or_create({ area_id => 1000 }); + +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'; + +$body_area->update({ area_id => 1000 }); # Nothing +is $c->get_body_sender( $body )->{ method }, 'TestMethod', 'uses send_method in preference to Email'; + +$body_area->delete; +$body->delete; + +done_testing(); diff --git a/t/cobrand/get_council_sender.t b/t/cobrand/get_council_sender.t deleted file mode 100644 index e61f36370..000000000 --- a/t/cobrand/get_council_sender.t +++ /dev/null @@ -1,30 +0,0 @@ -use strict; -use warnings; - -use Test::More; - -use mySociety::Locale; -use FixMyStreet::App; - -use_ok 'FixMyStreet::Cobrand'; - -mySociety::Locale::gettext_domain( 'FixMyStreet' ); - -my $c = FixMyStreet::Cobrand::FixMyStreet->new(); - - -is_deeply $c->get_council_sender( '1000', { type => 'DIS' } ), { method => 'Email' }, 'defaults to email'; -is_deeply $c->get_council_sender( '1000', { type => 'LBO' } ), { method=> 'London' }, 'returns london report it if London borough'; - -my $conf = FixMyStreet::App->model('DB::Open311Conf')->find_or_create( - area_id => 1000, - endpoint => '', - send_method => 'TestMethod' -); - -is $c->get_council_sender( '1000', { type => 'LBO' } )->{ method }, 'TestMethod', 'uses send_method in preference to London'; -is $c->get_council_sender( '1000', { type => 'DIS' } )->{ method }, 'TestMethod', 'uses send_method in preference to Email'; - -$conf->delete; - -done_testing(); 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 new file mode 100644 index 000000000..e97891b91 --- /dev/null +++ b/t/cobrand/zurich.t @@ -0,0 +1,685 @@ +# TODO +# Overdue alerts + +use strict; +use warnings; +use DateTime; +use Test::More; +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.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 +my $zurich = $mech->create_body_ok( 1, 'Zurich' ); +$zurich->parent( undef ); +$zurich->update; +my $division = $mech->create_body_ok( 2, 'Division 1' ); +$division->parent( $zurich->id ); +$division->send_method( 'Zurich' ); +$division->endpoint( 'division@example.org' ); +$division->update; +my $subdivision = $mech->create_body_ok( 3, 'Subdivision A' ); +$subdivision->parent( $division->id ); +$subdivision->send_method( 'Zurich' ); +$subdivision->endpoint( 'subdivision@example.org' ); +$subdivision->update; +my $external_body = $mech->create_body_ok( 4, 'External Body' ); +$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, + cobrand => 'zurich', +}); +my $report = $reports[0]; + +FixMyStreet::override_config { + ALLOWED_COBRANDS => [ 'zurich' ], +}, sub { + $mech->get_ok( '/report/' . $report->id ); +}; +$mech->content_contains('Überprüfung ausstehend'); + +# Check logging in to deal with this report +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' ); + + +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ä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: “Test Test 1 for 2 Detail”' ); + + $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'; +$mech->clear_emails_ok; + +$mech->log_out_ok; + +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; + +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' ); + +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'; +$mech->clear_emails_ok; + +$report->discard_changes; +is $report->state, 'planned', 'Report now in planned state'; + +$mech->log_out_ok; +$user = $mech->log_in_ok( 'dm1@example.org') ; +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") ); + +# User confirms their email address +my $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->content_lacks( 'Unbestä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'); + +$email = $mech->get_email; +like $email->header('To'), qr/test\@example.com/, 'to line looks correct'; +like $email->header('From'), qr/division\@example.org/, 'from line looks correct'; +like $email->body, qr/FINAL UPDATE/, 'body looks correct'; +$mech->clear_emails_ok; + +# Assign directly to planned, don't confirm email +@reports = $mech->create_problems_for_body( 1, 2, 'Second', { + state => 'unconfirmed', + confirmed => undef, + cobrand => 'zurich', +}); +$report = $reports[0]; + +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'); + +FixMyStreet::override_config { + ALLOWED_COBRANDS => [ 'zurich' ], +}, sub { + $mech->get_ok( '/admin/report_edit/' . $report->id ); + $mech->content_contains( 'Unbestätigt' ); + $mech->submit_form_ok( { button => 'publish_response', with_fields => { status_update => 'FINAL UPDATE' } } ); + + $mech->get_ok( '/report/' . $report->id ); +}; +$mech->content_contains('Beantwortet'); +$mech->content_contains('Second Test'); +$mech->content_contains('FINAL UPDATE'); + +$mech->email_count_is(0); + +# Report assigned to third party + +@reports = $mech->create_problems_for_body( 1, 2, 'Third', { + state => 'unconfirmed', + confirmed => undef, + cobrand => 'zurich', +}); +$report = $reports[0]; + +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'); +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'; +like $email->body, qr/External Body/, 'body has right name'; +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 +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'); +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'; +like $email->body, qr/External Body/, 'body has right name'; +like $email->body, qr/test\@example.com/, 'body does contain email address'; +$mech->clear_emails_ok; +$mech->log_out_ok; + +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' ], + MAPIT_ID_WHITELIST => [ 423017 ], + }, 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ö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/', + ALLOWED_COBRANDS => [ 'zurich' ], + MAPIT_ID_WHITELIST => [ 423017 ], + }, 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 => '', + category => 'bad category', + }); + 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ö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ü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"; + +done_testing(); @@ -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/map/tilma/original.t b/t/map/tilma/original.t index 04c4d578c..9e296686d 100644 --- a/t/map/tilma/original.t +++ b/t/map/tilma/original.t @@ -9,16 +9,14 @@ use FixMyStreet::TestMech; use DateTime; use mySociety::Locale; +use Catalyst::Test 'FixMyStreet::App'; + my $mech = FixMyStreet::TestMech->new; mySociety::Locale::gettext_domain('FixMyStreet'); FixMyStreet::Map::set_map_class(); -my $r = Catalyst::Request->new( { base => URI->new('/'), uri => URI->new('http://fixmystreet.com/test'), parameters => { bbox => '-7.6,49.7,-7.5,49.8' } } ); - -my $c = FixMyStreet::App->new( { - request => $r, -}); +my $c = ctx_request('http://fixmystreet.com/test?bbox=-7.6,49.7,-7.5,49.8'); $mech->delete_user('test@example.com'); my $user = @@ -32,7 +30,7 @@ my $dt = DateTime->now(); my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( { postcode => 'SW1A 1AA', - council => '2504', + bodies_str => '2504', areas => ',105255,11806,11828,2247,2504,', category => 'Other', title => 'Test 2', @@ -71,10 +69,26 @@ for my $test ( colour => 'yellow', }, { + state => 'duplicate', + colour => 'yellow', + }, + { + state => 'unable to fix', + colour => 'yellow', + }, + { + state => 'not responsible', + colour => 'yellow', + }, + { state => 'investigating', colour => 'yellow', }, { + state => 'action scheduled', + colour => 'yellow', + }, + { state => 'planned', colour => 'yellow', }, diff --git a/t/open311.t b/t/open311.t index 2371c53bc..f23198ea5 100644 --- a/t/open311.t +++ b/t/open311.t @@ -38,6 +38,8 @@ my $p = FixMyStreet::App->model('DB::Problem')->new( { detail => 'detail', user => $u, id => 1, + name => 'A User', + cobrand => 'fixmystreet', } ); my $expected_error = qr{Failed to submit problem 1 over Open311}ism; @@ -61,11 +63,14 @@ my $problem = FixMyStreet::App->model('DB::Problem')->new( { latitude => 1, longitude => 2, user => $user, + name => 'Test User', + cobrand => 'fixmystreet', } ); subtest 'posting service request' => sub { my $extra = { url => 'http://example.com/report/1', + easting_northing => 'SET', }; my $results = make_service_req( $problem, $extra, $problem->category, '<?xml version="1.0" encoding="utf-8"?><service_requests><request><service_request_id>248</service_request_id></request></service_requests>' ); @@ -86,13 +91,14 @@ EOT ; my $c = CGI::Simple->new( $results->{ req }->content ); + (my $c_description = $c->param('description')) =~ s/\r\n/\n/g; is $c->param('email'), $user->email, 'correct email'; is $c->param('first_name'), 'Test', 'correct first name'; is $c->param('last_name'), 'User', 'correct last name'; is $c->param('lat'), 1, 'latitide correct'; is $c->param('long'), 2, 'longitude correct'; - is $c->param('description'), $description, 'description correct'; + is $c_description, $description, 'description correct'; is $c->param('service_code'), 'pothole', 'service code correct'; }; @@ -106,7 +112,7 @@ subtest 'posting service request with basic_description' => sub { $extra, $problem->category, '<?xml version="1.0" encoding="utf-8"?><service_requests><request><service_request_id>248</service_request_id></request></service_requests>', - { basic_description => 1 }, + { extended_description => 0 }, ); is $results->{ res }, 248, 'got request id'; @@ -151,7 +157,7 @@ for my $test ( ], }, { - title => 'magic fms_extra parameters handled correctly', + desc => 'magic fms_extra parameters handled correctly', extra => [ { name => 'fms_extra_title', @@ -185,6 +191,31 @@ for my $test ( }; } +for my $test ( + { + desc => 'Check uses report name over user name', + name => 'Nom de Report', + first_name => 'Nom', + last_name => 'de Report', + }, +) { + subtest $test->{desc} => sub { + $problem->extra( undef ); + $problem->name( $test->{name} ); + my $extra = { url => 'http://example.com/report/1', }; + + my $results = make_service_req( $problem, $extra, $problem->category, +'<?xml version="1.0" encoding="utf-8"?><service_requests><request><service_request_id>248</service_request_id></request></service_requests>' + ); + my $req = $o->test_req_used; + my $c = CGI::Simple->new( $results->{req}->content ); + + is $c->param( 'first_name' ), $test->{first_name}, 'correct first name'; + is $c->param( 'last_name' ), $test->{last_name}, 'correct last name'; + }; +} + + my $comment = FixMyStreet::App->model('DB::Comment')->new( { id => 38362, user => $user, @@ -192,6 +223,7 @@ my $comment = FixMyStreet::App->model('DB::Comment')->new( { anonymous => 0, text => 'this is a comment', confirmed => $dt, + problem_state => 'confirmed', extra => { title => 'Mr', email_alerts_requested => 0 }, } ); @@ -216,7 +248,7 @@ subtest 'basic request update post parameters' => sub { }; subtest 'extended request update post parameters' => sub { - my $results = make_update_req( $comment, '<?xml version="1.0" encoding="utf-8"?><service_request_updates><request_update><update_id>248</update_id></request_update></service_request_updates>', 1 ); + my $results = make_update_req( $comment, '<?xml version="1.0" encoding="utf-8"?><service_request_updates><request_update><update_id>248</update_id></request_update></service_request_updates>', { use_extended_updates => 1 } ); is $results->{ res }, 248, 'got update id'; @@ -258,16 +290,47 @@ foreach my $test ( desc => 'comment with fixed state sends status of CLOSED', state => 'fixed', status => 'CLOSED', + extended => 'FIXED', }, { desc => 'comment with fixed - user state sends status of CLOSED', state => 'fixed - user', status => 'CLOSED', + extended => 'FIXED', }, { desc => 'comment with fixed - council state sends status of CLOSED', state => 'fixed - council', status => 'CLOSED', + extended => 'FIXED', + }, + { + desc => 'comment with duplicate state sends status of CLOSED', + state => 'duplicate', + anon => 0, + status => 'CLOSED', + extended => 'DUPLICATE', + }, + { + desc => 'comment with not reponsible state sends status of CLOSED', + state => 'not responsible', + anon => 0, + status => 'CLOSED', + extended => 'NOT_COUNCILS_RESPONSIBILITY', + }, + { + desc => 'comment with unable to fix state sends status of CLOSED', + state => 'unable to fix', + anon => 0, + status => 'CLOSED', + extended => 'NO_FURTHER_ACTION', + }, + { + desc => 'comment with internal referral state sends status of CLOSED', + state => 'internal referral', + anon => 0, + status => 'CLOSED', + extended => 'INTERNAL_REFERRAL', }, { desc => 'comment with closed state sends status of CLOSED', @@ -278,29 +341,42 @@ foreach my $test ( desc => 'comment with investigating state sends status of OPEN', state => 'investigating', status => 'OPEN', + extended => 'INVESTIGATING', }, { desc => 'comment with planned state sends status of OPEN', state => 'planned', status => 'OPEN', + extended => 'ACTION_SCHEDULED', }, { - desc => 'comment with in progress state sends status of OPEN', - state => 'in progress', + desc => 'comment with action scheduled state sends status of OPEN', + state => 'action scheduled', + anon => 0, status => 'OPEN', + extended => 'ACTION_SCHEDULED', }, { - state => 'confirmed', + desc => 'comment with in progress state sends status of OPEN', + state => 'in progress', status => 'OPEN', + extended => 'IN_PROGRESS', }, ) { subtest $test->{desc} => sub { + $comment->problem_state( $test->{state} ); $comment->problem->state( $test->{state} ); my $results = make_update_req( $comment, '<?xml version="1.0" encoding="utf-8"?><service_request_updates><request_update><update_id>248</update_id></request_update></service_request_updates>' ); my $c = CGI::Simple->new( $results->{ req }->content ); is $c->param('status'), $test->{status}, 'correct status'; + + if ( $test->{extended} ) { + my $results = make_update_req( $comment, '<?xml version="1.0" encoding="utf-8"?><service_request_updates><request_update><update_id>248</update_id></request_update></service_request_updates>', { extended_statuses => 1 } ); + my $c = CGI::Simple->new( $results->{ req }->content ); + is $c->param('status'), $test->{extended}, 'correct extended status'; + } }; } @@ -319,16 +395,70 @@ for my $test ( }, ) { subtest $test->{desc} => sub { + $comment->problem_state( $test->{state} ); $comment->problem->state( $test->{state} ); $comment->anonymous( $test->{anon} ); - my $results = make_update_req( $comment, '<?xml version="1.0" encoding="utf-8"?><service_request_updates><request_update><update_id>248</update_id></request_update></service_request_updates>', 1 ); + my $results = make_update_req( $comment, '<?xml version="1.0" encoding="utf-8"?><service_request_updates><request_update><update_id>248</update_id></request_update></service_request_updates>', { use_extended_updates => 1 } ); my $c = CGI::Simple->new( $results->{ req }->content ); is $c->param('public_anonymity_required'), $test->{anon} ? 'TRUE' : 'FALSE', 'correct anonymity'; }; } +my $dt2 = $dt->clone; +$dt2->add( 'minutes' => 1 ); + +my $comment2 = FixMyStreet::App->model('DB::Comment')->new( { + id => 38363, + user => $user, + problem => $problem, + anonymous => 0, + text => 'this is a comment', + confirmed => $dt, + problem_state => 'confirmed', + extra => { title => 'Mr', email_alerts_requested => 0 }, +} ); + +for my $test ( + { + desc => 'comment with fixed - council state sends status of CLOSED even if problem is open', + state => 'fixed - council', + problem_state => 'confirmed', + status => 'CLOSED', + extended => 'FIXED', + }, + { + desc => 'comment marked open sends status of OPEN even if problem is closed', + state => 'confirmed', + problem_state => 'fixed - council', + status => 'OPEN', + extended => 'OPEN', + }, + { + desc => 'comment with no problem state falls back to report state', + state => '', + problem_state => 'fixed - council', + status => 'CLOSED', + extended => 'FIXED', + }, +) { + subtest $test->{desc} => sub { + $comment->problem_state( $test->{state} ); + $comment->problem->state( $test->{problem_state} ); + my $results = make_update_req( $comment, '<?xml version="1.0" encoding="utf-8"?><service_request_updates><request_update><update_id>248</update_id></request_update></service_request_updates>' ); + + my $c = CGI::Simple->new( $results->{ req }->content ); + is $c->param('status'), $test->{status}, 'correct status'; + + if ( $test->{extended} ) { + my $results = make_update_req( $comment, '<?xml version="1.0" encoding="utf-8"?><service_request_updates><request_update><update_id>248</update_id></request_update></service_request_updates>', { extended_statuses => 1 } ); + my $c = CGI::Simple->new( $results->{ req }->content ); + is $c->param('status'), $test->{extended}, 'correct extended status'; + } + }; +} + for my $test ( { @@ -539,18 +669,16 @@ done_testing(); sub make_update_req { my $comment = shift; my $xml = shift; - my $extended = shift; + my $open311_args = shift || {}; my $params = { - object => $comment, - xml => $xml, - method => 'post_service_request_update', - path => 'servicerequestupdates.xml', + object => $comment, + xml => $xml, + method => 'post_service_request_update', + path => 'servicerequestupdates.xml', + open311_conf => $open311_args, }; - if ( $extended ) { - $params->{ open311_conf } = { use_extended_updates => 1 }; - } return make_req( $params ); } diff --git a/t/open311/getservicerequestupdates.t b/t/open311/getservicerequestupdates.t index aba811e58..00c25a83e 100644 --- a/t/open311/getservicerequestupdates.t +++ b/t/open311/getservicerequestupdates.t @@ -13,6 +13,7 @@ use_ok( 'Open311' ); use_ok( 'Open311::GetServiceRequestUpdates' ); use DateTime; +use DateTime::Format::W3CDTF; use FixMyStreet::App; my $user = FixMyStreet::App->model('DB::User')->find_or_create( @@ -123,7 +124,7 @@ my $problem = $problem_rs->new( lastupdate => DateTime->now()->subtract( days => 1 ), anonymous => 1, external_id => time(), - council => 2482, + bodies_str => 2482, } ); @@ -131,71 +132,212 @@ $problem->insert; for my $test ( { - desc => 'element with content', - updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ), + desc => 'OPEN status for confirmed problem does not change state', description => 'This is a note', external_id => 638344, start_state => 'confirmed', - close_comment => 0, + comment_status => 'OPEN', mark_fixed=> 0, mark_open => 0, problem_state => undef, end_state => 'confirmed', }, { - desc => 'comment closes report', - updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ), + desc => 'bad state does not update states but does create update', description => 'This is a note', external_id => 638344, start_state => 'confirmed', - close_comment => 1, + comment_status => 'INVALID_STATE', + mark_fixed=> 0, + mark_open => 0, + problem_state => undef, + end_state => 'confirmed', + }, + + { + desc => 'investigating status changes problem status', + description => 'This is a note', + external_id => 638344, + start_state => 'confirmed', + comment_status => 'INVESTIGATING', + mark_fixed=> 0, + mark_open => 0, + problem_state => 'investigating', + end_state => 'investigating', + }, + { + desc => 'in progress status changes problem status', + description => 'This is a note', + external_id => 638344, + start_state => 'confirmed', + comment_status => 'IN_PROGRESS', + mark_fixed=> 0, + mark_open => 0, + problem_state => 'in progress', + end_state => 'in progress', + }, + { + desc => 'action scheduled status changes problem status', + description => 'This is a note', + external_id => 638344, + start_state => 'confirmed', + comment_status => 'ACTION_SCHEDULED', + mark_fixed=> 0, + mark_open => 0, + problem_state => 'action scheduled', + end_state => 'action scheduled', + }, + { + desc => 'not responsible status changes problem status', + description => 'This is a note', + external_id => 638344, + start_state => 'confirmed', + comment_status => 'NOT_COUNCILS_RESPONSIBILITY', + mark_fixed=> 0, + mark_open => 0, + problem_state => 'not responsible', + end_state => 'not responsible', + }, + { + desc => 'internal referral status changes problem status', + description => 'This is a note', + external_id => 638344, + start_state => 'confirmed', + comment_status => 'INTERNAL_REFERRAL', + mark_fixed=> 0, + mark_open => 0, + problem_state => 'internal referral', + end_state => 'internal referral', + }, + { + desc => 'duplicate status changes problem status', + description => 'This is a note', + external_id => 638344, + start_state => 'confirmed', + comment_status => 'DUPLICATE', + mark_fixed=> 0, + mark_open => 0, + problem_state => 'duplicate', + end_state => 'duplicate', + }, + { + desc => 'fixed status marks report as fixed - council', + description => 'This is a note', + external_id => 638344, + start_state => 'confirmed', + comment_status => 'FIXED', mark_fixed=> 0, mark_open => 0, problem_state => 'fixed - council', end_state => 'fixed - council', }, { - desc => 'comment re-opens fixed report', - updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ), + desc => 'status of CLOSED marks report as fixed - council', + description => 'This is a note', + external_id => 638344, + start_state => 'confirmed', + comment_status => 'CLOSED', + mark_fixed=> 0, + mark_open => 0, + problem_state => 'fixed - council', + end_state => 'fixed - council', + }, + { + desc => 'status of OPEN re-opens fixed report', description => 'This is a note', external_id => 638344, start_state => 'fixed - user', - close_comment => 0, + comment_status => 'OPEN', mark_fixed => 0, mark_open => 0, problem_state => 'confirmed', end_state => 'confirmed', }, { - desc => 'comment re-opens closed report', - updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ), + desc => 'action sheduled re-opens fixed report as action scheduled', + description => 'This is a note', + external_id => 638344, + start_state => 'fixed - user', + comment_status => 'ACTION_SCHEDULED', + mark_fixed => 0, + mark_open => 0, + problem_state => 'action scheduled', + end_state => 'action scheduled', + }, + { + desc => 'open status re-opens closed report', description => 'This is a note', external_id => 638344, - start_state => 'closed', - close_comment => 0, + start_state => 'not responsible', + comment_status => 'OPEN', mark_fixed => 0, mark_open => 0, problem_state => 'confirmed', end_state => 'confirmed', }, { - desc => 'comment leaves report closed', - updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ), + desc => 'fixed status leaves fixed - user report as fixed - user', + description => 'This is a note', + external_id => 638344, + start_state => 'fixed - user', + comment_status => 'FIXED', + mark_fixed => 0, + mark_open => 0, + problem_state => undef, + end_state => 'fixed - user', + }, + { + desc => 'closed status updates fixed report', + description => 'This is a note', + external_id => 638344, + start_state => 'fixed - user', + comment_status => 'NO_FURTHER_ACTION', + mark_fixed => 0, + mark_open => 0, + problem_state => 'unable to fix', + end_state => 'unable to fix', + }, + { + desc => 'no futher action status closes report', + description => 'This is a note', + external_id => 638344, + start_state => 'confirmed', + comment_status => 'NO_FURTHER_ACTION', + mark_fixed => 0, + mark_open => 0, + problem_state => 'unable to fix', + end_state => 'unable to fix', + }, + { + desc => 'fixed status sets closed report as fixed', + description => 'This is a note', + external_id => 638344, + start_state => 'unable to fix', + comment_status => 'FIXED', + mark_fixed => 0, + mark_open => 0, + 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 => 'closed', - close_comment => 1, + start_state => 'hidden', + comment_status => 'OPEN', mark_fixed => 0, mark_open => 0, - end_state => 'closed', + 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>closed</status># if $test->{close_comment}; + $local_requests_xml =~ s#<status>\w+</status>#<status>$test->{comment_status}</status># if $test->{comment_status}; my $o = Open311->new( jurisdiction => 'mysociety', endpoint => 'http://example.com', test_mode => 1, test_get_returns => { 'servicerequestupdates.xml' => $local_requests_xml } ); @@ -204,7 +346,7 @@ for my $test ( $problem->state( $test->{start_state} ); $problem->update; - my $council_details = { areaid => 2482 }; + my $council_details = { areas => { 2482 => 1 } }; my $update = Open311::GetServiceRequestUpdates->new( system_user => $user ); $update->update_comments( $o, $council_details ); @@ -234,7 +376,8 @@ foreach my $test ( $dt->subtract( minutes => 10 ); my $local_requests_xml = $requests_xml; - my $updated = sprintf( '<updated_datetime>%s</updated_datetime>', $dt ); + my $updated = sprintf( '<updated_datetime>%s</updated_datetime>', DateTime::Format::W3CDTF->format_datetime( $dt ) ); + $local_requests_xml =~ s/UPDATED_DATETIME/$updated/; $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>#; @@ -243,7 +386,7 @@ foreach my $test ( $problem->comments->delete; - my $council_details = { areaid => 2482 }; + my $council_details = { areas => { 2482 => 1 } }; my $update = Open311::GetServiceRequestUpdates->new( system_user => $user ); $update->update_comments( $o, $council_details ); @@ -273,7 +416,7 @@ my $problem2 = $problem_rs->new( lastupdate => DateTime->now(), anonymous => 1, external_id => $problem->external_id, - council => 2651, + bodies_str => 2651, } ); @@ -312,7 +455,7 @@ for my $test ( my $o = Open311->new( jurisdiction => 'mysociety', endpoint => 'http://example.com', test_mode => 1, test_get_returns => { 'servicerequestupdates.xml' => $local_requests_xml } ); - my $council_details = { areaid => $test->{area_id} }; + my $council_details = { areas => { $test->{area_id} => 1 } }; my $update = Open311::GetServiceRequestUpdates->new( system_user => $user ); $update->update_comments( $o, $council_details ); @@ -352,7 +495,7 @@ subtest 'using start and end date' => sub { end_date => $end_dt, ); - my $council_details = { areaid => 2482 }; + my $council_details = { areas => { 2482 => 1 } }; $update->update_comments( $o, $council_details ); my $start = $start_dt . ''; @@ -412,7 +555,7 @@ subtest 'check that existing comments are not duplicated' => sub { system_user => $user, ); - my $council_details = { areaid => 2482 }; + my $council_details = { areas => { 2482 => 1 } }; $update->update_comments( $o, $council_details ); $problem->discard_changes; @@ -473,7 +616,7 @@ foreach my $test ( { system_user => $user, ); - my $council_details = { areaid => 2482 }; + my $council_details = { areas => { 2482 => 1 } }; $update->update_comments( $o, $council_details ); $problem->discard_changes; @@ -484,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, } ) { @@ -509,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/; @@ -525,25 +682,27 @@ foreach my $test ( { suppress_alerts => $test->{suppress_alerts}, ); - my $council_details = { areaid => 2482 }; + my $council_details = { areas => { 2482 => 1 } }; $update->update_comments( $o, $council_details ); $problem->discard_changes; 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/t/open311/getupdates.t b/t/open311/getupdates.t index 500ac97d2..7dc7ff164 100644 --- a/t/open311/getupdates.t +++ b/t/open311/getupdates.t @@ -4,9 +4,7 @@ use strict; use warnings; use Test::More; -use FindBin; -use lib "$FindBin::Bin/../perllib"; -use lib "$FindBin::Bin/../commonlib/perllib"; +use FixMyStreet; use_ok( 'Open311::GetUpdates' ); use_ok( 'Open311' ); @@ -17,6 +15,9 @@ my $user = FixMyStreet::App->model('DB::User')->find_or_create( } ); +my $body = FixMyStreet::App->model('DB::Body')->new( { + name => 'Test Body', +} ); my $updates = Open311::GetUpdates->new( system_user => $user ); ok $updates, 'created object'; @@ -51,12 +52,9 @@ my $problem = $problem_rs->new( title => '', detail => '', used_map => 1, - user_id => 1, name => '', state => 'confirmed', - service => '', cobrand => 'default', - cobrand_data => '', user => $user, created => DateTime->now()->subtract( days => 1 ), lastupdate => DateTime->now()->subtract( days => 1 ), @@ -104,7 +102,7 @@ for my $test ( my $o = Open311->new( jurisdiction => 'mysociety', endpoint => 'http://example.com', test_mode => 1, test_get_returns => { 'requests.xml' => $local_requests_xml } ); - ok $updates->update_reports( [ 638344 ], $o, { name => 'Test Council' } ); + ok $updates->update_reports( [ 638344 ], $o, $body ); is $o->test_uri_used, 'http://example.com/requests.xml?jurisdiction_id=mysociety&service_request_id=638344', 'get url'; is $problem->comments->count, $test->{comment_count}, 'added a comment'; @@ -155,12 +153,9 @@ my $problem2 = $problem_rs->create( title => '', detail => '', used_map => 1, - user_id => 1, name => '', state => 'confirmed', - service => '', cobrand => 'default', - cobrand_data => '', user => $user, created => DateTime->now()->subtract( days => 1 ), lastupdate => DateTime->now()->subtract( days => 1 ), @@ -182,17 +177,73 @@ subtest 'update with two requests' => sub { my $o = Open311->new( jurisdiction => 'mysociety', endpoint => 'http://example.com', test_mode => 1, test_get_returns => { 'requests.xml' => $local_requests_xml } ); - ok $updates->update_reports( [ 638344,638345 ], $o, { name => 'Test Council' } ); + ok $updates->update_reports( [ 638344,638345 ], $o, $body ); is $o->test_uri_used, 'http://example.com/requests.xml?jurisdiction_id=mysociety&service_request_id=638344%2C638345', 'get url'; is $problem->comments->count, 1, 'added a comment to first problem'; is $problem2->comments->count, 1, 'added a comment to second problem'; }; -$problem->comments->delete; -$problem->delete; -$user->comments->delete; -$user->problems->delete; -$user->delete; +# No status_notes field now, so that static string in code is used. +$requests_xml = qq{<?xml version="1.0" encoding="utf-8"?> +<service_requests> +<request> +<service_request_id>638346</service_request_id> +<status>closed</status> +<service_name>Sidewalk and Curb Issues</service_name> +<service_code>006</service_code> +<description></description> +<agency_responsible></agency_responsible> +<service_notice></service_notice> +<requested_datetime>2010-04-14T06:37:38-08:00</requested_datetime> +UPDATED_DATETIME +<expected_datetime>2010-04-15T06:37:38-08:00</expected_datetime> +<lat>37.762221815</lat> +<long>-122.4651145</long> +</request> +</service_requests> +}; -done_testing(); +my $problem3 = $problem_rs->create( { + postcode => 'EH99 1SP', + latitude => 1, + longitude => 1, + areas => 1, + title => 'Title', + detail => 'Details', + used_map => 1, + name => '', + state => 'confirmed', + cobrand => 'fixamingata', + user => $user, + created => DateTime->now()->subtract( days => 1 ), + lastupdate => DateTime->now()->subtract( days => 1 ), + anonymous => 1, + external_id => 638346, +} ); + +subtest 'test translation of auto-added comment from old-style Open311 update' => sub { + my $dt = sprintf( '<updated_datetime>%s</updated_datetime>', DateTime->now ); + $requests_xml =~ s/UPDATED_DATETIME/$dt/; + + my $o = Open311->new( jurisdiction => 'mysociety', endpoint => 'http://example.com', test_mode => 1, test_get_returns => { 'requests.xml' => $requests_xml } ); + + FixMyStreet::override_config { + ALLOWED_COBRANDS => [ 'fixamingata' ], + }, sub { + ok $updates->update_reports( [ 638346 ], $o, $body ); + }; + is $o->test_uri_used, 'http://example.com/requests.xml?jurisdiction_id=mysociety&service_request_id=638346', 'get url'; + + is $problem3->comments->count, 1, 'added a comment'; + is $problem3->comments->first->text, "St\xe4ngd av kommunen", 'correct comment text'; +}; + +END { + if ($user) { + $user->comments->delete; + $user->problems->delete; + $user->delete; + } + done_testing(); +} diff --git a/t/open311/populate-service-list.t b/t/open311/populate-service-list.t index 00026cd9f..9fd18b607 100644 --- a/t/open311/populate-service-list.t +++ b/t/open311/populate-service-list.t @@ -14,34 +14,44 @@ use_ok( 'Open311::PopulateServiceList' ); use_ok( 'Open311' ); -my $processor = Open311::PopulateServiceList->new( council_list => [] ); +my $processor = Open311::PopulateServiceList->new(); ok $processor, 'created object'; - +my $body = FixMyStreet::App->model('DB::Body')->find_or_create( { + id => 1, + name => 'Body Numero Uno', +} ); +$body->body_areas->find_or_create({ + area_id => 1 +} ); + +my $bromley = FixMyStreet::App->model('DB::Body')->find_or_create( { + id => 2482, + name => 'Bromley Council', +} ); +$bromley->body_areas->find_or_create({ + area_id => 2482 +} ); subtest 'check basic functionality' => sub { - FixMyStreet::App->model('DB::Contact')->search( { area_id => 1 } )->delete(); + FixMyStreet::App->model('DB::Contact')->search( { body_id => 1 } )->delete(); my $service_list = get_xml_simple_object( get_standard_xml() ); - my $council = FixMyStreet::App->model('DB::Open311Conf')->new( { - area_id => 1 - } ); - - my $processor = Open311::PopulateServiceList->new( council_list => [] ); - $processor->_current_council( $council ); + my $processor = Open311::PopulateServiceList->new(); + $processor->_current_body( $body ); $processor->process_services( $service_list ); - my $contact_count = FixMyStreet::App->model('DB::Contact')->search( { area_id => 1 } )->count(); + my $contact_count = FixMyStreet::App->model('DB::Contact')->search( { body_id => 1 } )->count(); is $contact_count, 3, 'correct number of contacts'; }; subtest 'check non open311 contacts marked as deleted' => sub { - FixMyStreet::App->model('DB::Contact')->search( { area_id => 1 } )->delete(); + FixMyStreet::App->model('DB::Contact')->search( { body_id => 1 } )->delete(); my $contact = FixMyStreet::App->model('DB::Contact')->create( { - area_id => 1, + body_id => 1, email => 'contact@example.com', category => 'An old category', confirmed => 1, @@ -54,27 +64,23 @@ subtest 'check non open311 contacts marked as deleted' => sub { my $service_list = get_xml_simple_object( get_standard_xml() ); - my $council = FixMyStreet::App->model('DB::Open311Conf')->new( { - area_id => 1 - } ); - - my $processor = Open311::PopulateServiceList->new( council_list => [] ); - $processor->_current_council( $council ); + my $processor = Open311::PopulateServiceList->new(); + $processor->_current_body( $body ); $processor->process_services( $service_list ); - my $contact_count = FixMyStreet::App->model('DB::Contact')->search( { area_id => 1 } )->count(); + my $contact_count = FixMyStreet::App->model('DB::Contact')->search( { body_id => 1 } )->count(); is $contact_count, 4, 'correct number of contacts'; - $contact_count = FixMyStreet::App->model('DB::Contact')->search( { area_id => 1, deleted => 1 } )->count(); + $contact_count = FixMyStreet::App->model('DB::Contact')->search( { body_id => 1, deleted => 1 } )->count(); is $contact_count, 1, 'correct number of deleted contacts'; }; subtest 'check email changed if matching category' => sub { - FixMyStreet::App->model('DB::Contact')->search( { area_id => 1 } )->delete(); + FixMyStreet::App->model('DB::Contact')->search( { body_id => 1 } )->delete(); my $contact = FixMyStreet::App->model('DB::Contact')->create( { - area_id => 1, + body_id => 1, email => '009', category => 'Cans left out 24x7', confirmed => 1, @@ -89,12 +95,8 @@ subtest 'check email changed if matching category' => sub { my $service_list = get_xml_simple_object( get_standard_xml() ); - my $council = FixMyStreet::App->model('DB::Open311Conf')->new( { - area_id => 1 - } ); - - my $processor = Open311::PopulateServiceList->new( council_list => [] ); - $processor->_current_council( $council ); + my $processor = Open311::PopulateServiceList->new(); + $processor->_current_body( $body ); $processor->process_services( $service_list ); $contact->discard_changes; @@ -102,16 +104,16 @@ subtest 'check email changed if matching category' => sub { is $contact->confirmed, 1, 'contact still confirmed'; is $contact->deleted, 0, 'contact still not deleted'; - my $contact_count = FixMyStreet::App->model('DB::Contact')->search( { area_id => 1 } )->count(); + my $contact_count = FixMyStreet::App->model('DB::Contact')->search( { body_id => 1 } )->count(); is $contact_count, 3, 'correct number of contacts'; }; subtest 'check category name changed if updated' => sub { - FixMyStreet::App->model('DB::Contact')->search( { area_id => 1 } )->delete(); + FixMyStreet::App->model('DB::Contact')->search( { body_id => 1 } )->delete(); my $contact = FixMyStreet::App->model('DB::Contact')->create( { - area_id => 1, + body_id => 1, email => '001', category => 'Bins left out 24x7', confirmed => 1, @@ -126,12 +128,8 @@ subtest 'check category name changed if updated' => sub { my $service_list = get_xml_simple_object( get_standard_xml() ); - my $council = FixMyStreet::App->model('DB::Open311Conf')->new( { - area_id => 1 - } ); - - my $processor = Open311::PopulateServiceList->new( council_list => [] ); - $processor->_current_council( $council ); + my $processor = Open311::PopulateServiceList->new(); + $processor->_current_body( $body ); $processor->process_services( $service_list ); $contact->discard_changes; @@ -140,16 +138,16 @@ subtest 'check category name changed if updated' => sub { is $contact->confirmed, 1, 'contact still confirmed'; is $contact->deleted, 0, 'contact still not deleted'; - my $contact_count = FixMyStreet::App->model('DB::Contact')->search( { area_id => 1 } )->count(); + my $contact_count = FixMyStreet::App->model('DB::Contact')->search( { body_id => 1 } )->count(); is $contact_count, 3, 'correct number of contacts'; }; subtest 'check conflicting contacts not changed' => sub { - FixMyStreet::App->model('DB::Contact')->search( { area_id => 1 } )->delete(); + FixMyStreet::App->model('DB::Contact')->search( { body_id => 1 } )->delete(); my $contact = FixMyStreet::App->model('DB::Contact')->create( { - area_id => 1, + body_id => 1, email => 'existing@example.com', category => 'Cans left out 24x7', confirmed => 1, @@ -164,7 +162,7 @@ subtest 'check conflicting contacts not changed' => sub { my $contact2 = FixMyStreet::App->model('DB::Contact')->create( { - area_id => 1, + body_id => 1, email => '001', category => 'Bins left out 24x7', confirmed => 1, @@ -179,12 +177,8 @@ subtest 'check conflicting contacts not changed' => sub { my $service_list = get_xml_simple_object( get_standard_xml() ); - my $council = FixMyStreet::App->model('DB::Open311Conf')->new( { - area_id => 1 - } ); - - my $processor = Open311::PopulateServiceList->new( council_list => [] ); - $processor->_current_council( $council ); + my $processor = Open311::PopulateServiceList->new(); + $processor->_current_body( $body ); $processor->process_services( $service_list ); $contact->discard_changes; @@ -199,12 +193,12 @@ subtest 'check conflicting contacts not changed' => sub { is $contact2->confirmed, 1, 'second contact contact still confirmed'; is $contact2->deleted, 0, 'second contact contact still not deleted'; - my $contact_count = FixMyStreet::App->model('DB::Contact')->search( { area_id => 1 } )->count(); + my $contact_count = FixMyStreet::App->model('DB::Contact')->search( { body_id => 1 } )->count(); is $contact_count, 4, 'correct number of contacts'; }; subtest 'check meta data population' => sub { - my $processor = Open311::PopulateServiceList->new( council_list => [] ); + my $processor = Open311::PopulateServiceList->new(); my $meta_xml = '<?xml version="1.0" encoding="utf-8"?> <service_definition> @@ -225,7 +219,7 @@ subtest 'check meta data population' => sub { my $contact = FixMyStreet::App->model('DB::Contact')->find_or_create( { - area_id => 1, + body_id => 1, email => '001', category => 'Bins left out 24x7', confirmed => 1, @@ -243,12 +237,8 @@ subtest 'check meta data population' => sub { test_get_returns => { 'services/100.xml' => $meta_xml } ); - my $council = FixMyStreet::App->model('DB::Open311conf')->new( { - area_id => 2482 - } ); - $processor->_current_open311( $o ); - $processor->_current_council( $council ); + $processor->_current_body( $bromley ); $processor->_current_service( { service_code => 100 } ); $processor->_add_meta_to_contact( $contact ); @@ -387,7 +377,7 @@ for my $test ( }, ) { subtest $test->{desc} => sub { - my $processor = Open311::PopulateServiceList->new( council_list => [] ); + my $processor = Open311::PopulateServiceList->new(); my $services_xml = '<?xml version="1.0" encoding="utf-8"?> <services> @@ -409,7 +399,7 @@ for my $test ( my $contact = FixMyStreet::App->model('DB::Contact')->find_or_create( { - area_id => 1, + body_id => 1, email => '100', category => 'Cans left out 24x7', confirmed => 1, @@ -432,12 +422,8 @@ for my $test ( my $service_list = get_xml_simple_object( $services_xml ); $service_list = { service => [ $service_list->{ service } ] }; - my $council = FixMyStreet::App->model('DB::Open311conf')->new( { - area_id => 1 - } ); - $processor->_current_open311( $o ); - $processor->_current_council( $council ); + $processor->_current_body( $body ); $processor->process_services( $service_list ); @@ -448,7 +434,7 @@ for my $test ( } subtest 'check attribute ordering' => sub { - my $processor = Open311::PopulateServiceList->new( council_list => [] ); + my $processor = Open311::PopulateServiceList->new(); my $meta_xml = '<?xml version="1.0" encoding="utf-8"?> <service_definition> @@ -487,7 +473,7 @@ subtest 'check attribute ordering' => sub { my $contact = FixMyStreet::App->model('DB::Contact')->find_or_create( { - area_id => 1, + body_id => 1, email => '001', category => 'Bins left out 24x7', confirmed => 1, @@ -505,12 +491,8 @@ subtest 'check attribute ordering' => sub { test_get_returns => { 'services/100.xml' => $meta_xml } ); - my $council = FixMyStreet::App->model('DB::Open311conf')->new( { - area_id => 1 - } ); - $processor->_current_open311( $o ); - $processor->_current_council( $council ); + $processor->_current_body( $body ); $processor->_current_service( { service_code => 100 } ); $processor->_add_meta_to_contact( $contact ); @@ -554,7 +536,7 @@ subtest 'check attribute ordering' => sub { }; subtest 'check bromely skip code' => sub { - my $processor = Open311::PopulateServiceList->new( council_list => [] ); + my $processor = Open311::PopulateServiceList->new(); my $meta_xml = '<?xml version="1.0" encoding="utf-8"?> <service_definition> @@ -593,7 +575,7 @@ subtest 'check bromely skip code' => sub { my $contact = FixMyStreet::App->model('DB::Contact')->find_or_create( { - area_id => 1, + body_id => 1, email => '001', category => 'Bins left out 24x7', confirmed => 1, @@ -611,12 +593,8 @@ subtest 'check bromely skip code' => sub { test_get_returns => { 'services/100.xml' => $meta_xml } ); - my $council = FixMyStreet::App->model('DB::Open311conf')->new( { - area_id => 2482 - } ); - $processor->_current_open311( $o ); - $processor->_current_council( $council ); + $processor->_current_body( $bromley ); $processor->_current_service( { service_code => 100 } ); $processor->_add_meta_to_contact( $contact ); @@ -636,9 +614,7 @@ subtest 'check bromely skip code' => sub { is_deeply $contact->extra, $extra, 'only non std bromley meta data saved'; - $council->area_id(1); - - $processor->_current_council( $council ); + $processor->_current_body( $body ); $processor->_add_meta_to_contact( $contact ); $extra = [ diff --git a/templates/email/default/confirm_report_sent.txt b/templates/email/default/confirm_report_sent.txt index 42f200213..201888270 100644 --- a/templates/email/default/confirm_report_sent.txt +++ b/templates/email/default/confirm_report_sent.txt @@ -2,7 +2,7 @@ Subject: Problem Report Sent: <?=$values['title']?> Hi, -Your report about "<?=$values['title']?>" has been sent to <?=$values['councils_name']?>. +Your report about "<?=$values['title']?>" has been sent to <?=$values['bodies_name']?>. Thanks diff --git a/templates/email/default/login.txt b/templates/email/default/login.txt index 608d99ee9..762407b01 100644 --- a/templates/email/default/login.txt +++ b/templates/email/default/login.txt @@ -1,4 +1,4 @@ -Subject: [% loc('Your FixMyStreet.com account details') %] +Subject: Your FixMyStreet.com account details Please click on the link below to confirm your email address. Then you will be able to view your problem reports and manage them more easily. diff --git a/templates/email/default/submit-brent.txt b/templates/email/default/submit-brent.txt index c94e6e1e4..75a954765 100644 --- a/templates/email/default/submit-brent.txt +++ b/templates/email/default/submit-brent.txt @@ -1,6 +1,6 @@ Subject: FMS Problem Report: <?=$values['title']?> -Dear <?=$values['councils_name']?>, +Dear <?=$values['bodies_name']?>, <?=$values['missing']?><?=$values['multiple']?>A user of FixMyStreet has submitted the following report diff --git a/templates/email/default/submit.txt b/templates/email/default/submit.txt index a956b4add..6066a7b68 100644 --- a/templates/email/default/submit.txt +++ b/templates/email/default/submit.txt @@ -1,6 +1,6 @@ Subject: Problem Report: <?=$values['title']?> -Dear <?=$values['councils_name']?>, +Dear <?=$values['bodies_name']?>, <?=$values['missing']?><?=$values['multiple']?>A user of FixMyStreet has submitted the following report diff --git a/templates/email/emptyhomes/cy/submit.txt b/templates/email/emptyhomes/cy/submit.txt index 57c0d58b7..061758d12 100644 --- a/templates/email/emptyhomes/cy/submit.txt +++ b/templates/email/emptyhomes/cy/submit.txt @@ -5,19 +5,9 @@ Annwyl Swyddog Eiddo Gwag, Dyma gyfeiriad newydd am eiddo gwag yn eich ardal, a wnaed gan ddefnyddiwr gwefan ReportEmptyHomes.com; dywedwyd wrth ddefnyddiwr y wefan fod yr achos wedi cael ei gyfeirio atoch. Byddem yn ddiolchgar petaech yn gwneud yr hyn y -gallwch i helpu adfer yr eiddo hwn i'w ddefnyddio eto. Byddwn yn cysylltu â'r -defnyddiwr ymhen mis ac eto ymhen chwe mis ac yn gofyn iddynt beth sydd wedi -digwydd i'r eiddo. +gallwch i helpu adfer yr eiddo hwn i'w ddefnyddio eto. -Hoffwn eich annog chi i ddweud wrthom beth rydych chi wedi'i wneud, a phan y -daw'r eiddo yn ôl mewn defnydd, trwy lenwi diweddariad wrth y cyfeiriad at yr -eiddo ar y wefan: - - <?=$values['url']?> - -Mae hyn yn rhoi adborth defnyddiol i ddefnyddwyr y wefan ac yn helpu iddynt -ddeall pa gamau yr ydych yn eu cymryd. Byddwn yn cynnig cyngor i'r defnyddiwr -ar gamau eraill y gall eu cymryd os nad eir i'r afael â'r eiddo'n llwyddiannus. +<?=$values['url']?> <?=$values['has_photo']?>Os hoffech gael help neu gyngor ar gael eiddo gwag yn ôl mewn defnydd mae llawer o wybodaeth ddefnyddiol ar wefan yr Asiantaeth Tai @@ -34,6 +24,8 @@ E-bost: <?=$values['email']?> Math o eiddo: <?=$values['category']?> +Address: <?=$values['address']?> + Manylion: <?=$values['detail']?> <?=$values['closest_address']?>---------- diff --git a/templates/email/emptyhomes/en-gb/submit.txt b/templates/email/emptyhomes/en-gb/submit.txt index 4bbaed408..2256732d5 100644 --- a/templates/email/emptyhomes/en-gb/submit.txt +++ b/templates/email/emptyhomes/en-gb/submit.txt @@ -5,18 +5,9 @@ Dear Empty Property Officer, This is a new referral of an empty property in your area made by a user of the website ReportEmptyHomes.com; the website user has been told that the case has been referred to you. We would be grateful if you could do whatever you can to -help get this property back into use. We will contact the user in a month and -again in six months and ask them what has happened to the property. +help get this property back into use. -We'd encourage you to tell us what you have done, and when the property comes -back into use, by filling in an update against the property referral on the -website: - - <?=$values['url']?> - -This gives useful feedback to website users and helps them understand what -action you are taking. We will offer advice to the user on other action they -might take if the property isn't successfully dealt with. +<?=$values['url']?> <?=$values['has_photo']?>If you would like help or advice on getting empty properties back into use there is lots of useful information on the Empty Homes Agency's website @@ -32,6 +23,8 @@ Email: <?=$values['email']?> Property type: <?=$values['category']?> +Address: <?=$values['address']?> + Details: <?=$values['detail']?> <?=$values['closest_address']?>---------- diff --git a/templates/email/fiksgatami/nn/submit.txt b/templates/email/fiksgatami/nn/submit.txt index 82849b0d5..52f519221 100644 --- a/templates/email/fiksgatami/nn/submit.txt +++ b/templates/email/fiksgatami/nn/submit.txt @@ -1,6 +1,6 @@ Subject: Problemrapport: <?=$values['title']?> -Til <?=$values['councils_name']?>, +Til <?=$values['bodies_name']?>, <?=$values['missing']?><?=$values['multiple']?>Ein brukar av FiksGataMi har sendt inn følgjande rapport om eit lokalt problem som diff --git a/templates/email/fiksgatami/submit.txt b/templates/email/fiksgatami/submit.txt index 8005f5c82..947729422 100644 --- a/templates/email/fiksgatami/submit.txt +++ b/templates/email/fiksgatami/submit.txt @@ -1,6 +1,6 @@ Subject: Problemrapport: <?=$values['title']?> -Til <?=$values['councils_name']?>, +Til <?=$values['bodies_name']?>, <?=$values['missing']?><?=$values['multiple']?>En bruker av FiksGataMi har sendt inn følgende rapport om et lokalt diff --git a/templates/email/fixamingata/alert-confirm.txt b/templates/email/fixamingata/alert-confirm.txt new file mode 100644 index 000000000..c2a32b051 --- /dev/null +++ b/templates/email/fixamingata/alert-confirm.txt @@ -0,0 +1,13 @@ +Subject: Bekräfta din bevakning på [% INCLUDE 'site-name.txt' | trim %] + +Hej, + +vänligen klicka på länken nedan för att bekräfta den bevakning du +just valde att prenumerera till på [% INCLUDE 'site-name.txt' | trim %]: + + [% token_url %] + +Om du inte kan klicka på länken kan du kopiera den och klistra in den +i adressfältet på din webbläsare. + +[% INCLUDE 'signature.txt' %] diff --git a/templates/email/fixamingata/alert-problem-area.txt b/templates/email/fixamingata/alert-problem-area.txt new file mode 100644 index 000000000..ae3973e2c --- /dev/null +++ b/templates/email/fixamingata/alert-problem-area.txt @@ -0,0 +1,10 @@ +Subject: Nya rapporter i <?=$values['area_name']?> på Fixa Min Gata + +Följande nya rapporter har lagts till inom <?=$values['area_name']?>: + +<?=$values['data']?> + +<?=$values['signature']?> + +Om du vill avsluta din prenumeration på nya rapporter i <?=$values['area_name']?> +kan du klickan på följande länk: <?=$values['unsubscribe_url']?> diff --git a/templates/email/fixamingata/alert-problem-council.txt b/templates/email/fixamingata/alert-problem-council.txt new file mode 100644 index 000000000..ae3973e2c --- /dev/null +++ b/templates/email/fixamingata/alert-problem-council.txt @@ -0,0 +1,10 @@ +Subject: Nya rapporter i <?=$values['area_name']?> på Fixa Min Gata + +Följande nya rapporter har lagts till inom <?=$values['area_name']?>: + +<?=$values['data']?> + +<?=$values['signature']?> + +Om du vill avsluta din prenumeration på nya rapporter i <?=$values['area_name']?> +kan du klickan på följande länk: <?=$values['unsubscribe_url']?> diff --git a/templates/email/fixamingata/alert-problem-nearby.txt b/templates/email/fixamingata/alert-problem-nearby.txt new file mode 100644 index 000000000..70dd1cd48 --- /dev/null +++ b/templates/email/fixamingata/alert-problem-nearby.txt @@ -0,0 +1,10 @@ +Subject: Nya rapporter på FixMyStreet + +Följande rapporter har nyligen lagts till på: + +<?=$values['data']?> + +<?=$values['signature']?> + +Om du vill avsluta din prenumeration på nya rapporter +kan du klickan på följande länk: <?=$values['unsubscribe_url']?> diff --git a/templates/email/fixamingata/alert-problem-ward.txt b/templates/email/fixamingata/alert-problem-ward.txt new file mode 100644 index 000000000..ae3973e2c --- /dev/null +++ b/templates/email/fixamingata/alert-problem-ward.txt @@ -0,0 +1,10 @@ +Subject: Nya rapporter i <?=$values['area_name']?> på Fixa Min Gata + +Följande nya rapporter har lagts till inom <?=$values['area_name']?>: + +<?=$values['data']?> + +<?=$values['signature']?> + +Om du vill avsluta din prenumeration på nya rapporter i <?=$values['area_name']?> +kan du klickan på följande länk: <?=$values['unsubscribe_url']?> diff --git a/templates/email/fixamingata/alert-problem.txt b/templates/email/fixamingata/alert-problem.txt new file mode 100644 index 000000000..70dd1cd48 --- /dev/null +++ b/templates/email/fixamingata/alert-problem.txt @@ -0,0 +1,10 @@ +Subject: Nya rapporter på FixMyStreet + +Följande rapporter har nyligen lagts till på: + +<?=$values['data']?> + +<?=$values['signature']?> + +Om du vill avsluta din prenumeration på nya rapporter +kan du klickan på följande länk: <?=$values['unsubscribe_url']?> diff --git a/templates/email/fixamingata/alert-update.txt b/templates/email/fixamingata/alert-update.txt new file mode 100644 index 000000000..9cc42a2f2 --- /dev/null +++ b/templates/email/fixamingata/alert-update.txt @@ -0,0 +1,18 @@ +Subject: Ny uppdatering - '<?=$values['title']?>' + +Följande uppdatering har lämnats för rapporten +<?=$values['title']?>: + +<?=$values['data']?> + +<?=$values['state_message']?> + +För att se eller svara på dessa uppdateringar, klicka på följande länk: + <?=$values['problem_url']?> + +Du kan inte kontakta någon genom att svara på detta brev. + +<?=$values['signature']?> + +För att avsluta din prenumeration på nya uppdateringar kring denna +rapport, klicka på följande länk: <?=$values['unsubscribe_url']?> diff --git a/templates/email/fixamingata/contact.txt b/templates/email/fixamingata/contact.txt new file mode 100644 index 000000000..44638fccc --- /dev/null +++ b/templates/email/fixamingata/contact.txt @@ -0,0 +1,3 @@ +Subject: [% subject %] (via Fixa Min Gata) + +[% message %] diff --git a/templates/email/fixamingata/login.txt b/templates/email/fixamingata/login.txt new file mode 100644 index 000000000..dc5e93f45 --- /dev/null +++ b/templates/email/fixamingata/login.txt @@ -0,0 +1,13 @@ +Subject: [% loc('Your FixMyStreet.com account details') %] + +Välkommen till Fixa Min Gata! + +För att bekräfta din epostadress måste du nu klicka på länken nedan. +Du kommer sedan att kunna se dina rapporter och hantera dem via +webbsidan. + + +[% c.uri_for_action( 'auth/token', token ) %] + +[% INCLUDE 'signature.txt' %] + diff --git a/templates/email/fixamingata/partial.txt b/templates/email/fixamingata/partial.txt new file mode 100644 index 000000000..bb35883ab --- /dev/null +++ b/templates/email/fixamingata/partial.txt @@ -0,0 +1,12 @@ +Subject: Bekräfta din rapport på Fixa Min gata + +Hej [% report.name || report.email %], + +För att bekräfta den rapport som du nyligen lade in i Fixa Min Gata +via [% report.service %] måste du klicka på: + +[% token_url %] + +Tack! + +[% INCLUDE 'signature.txt' %] diff --git a/templates/email/fixamingata/problem-confirm.txt b/templates/email/fixamingata/problem-confirm.txt new file mode 100644 index 000000000..e8fc61a9f --- /dev/null +++ b/templates/email/fixamingata/problem-confirm.txt @@ -0,0 +1,20 @@ +Subject: Bekräfta din rapport på [% INCLUDE 'site-name.txt' | trim %] + +Hej [% report.name %], + +För att bekräfta den rapport som du nyligen lade in på Fixa Min Gata +måste du klicka på nedanstående länk: + +[% token_url %] + +Om det inte går att klicka på länken kan du kopiera den och klistra in +i adressfältet på din webläsare. + +Din rapport har titeln: [% report.title %] + +Du har angivit följande information om problemet: + +[% report.detail %] + + +[% INCLUDE 'signature.txt' %] diff --git a/templates/email/fixamingata/questionnaire.txt b/templates/email/fixamingata/questionnaire.txt new file mode 100644 index 000000000..47368bc5b --- /dev/null +++ b/templates/email/fixamingata/questionnaire.txt @@ -0,0 +1,22 @@ +Subject: Frågeformulär om '<?=$values['title']?>' + +Hej <?=$values['name']?>, + +<?=$values['created']?> sedan lämnade du en rapport på Fixa Min Gata. +För att hålla alla rapporter uppdaterade skulle vi uppskatta om du kunde +klicka på länken nedan och svara på ett par korta frågor om det problem +du rapporterade: + + <?=$values['url']?> + +Var snäll och svara inte på det här brevet. Använd istället +kommentarsfältet i frågeformuläret. + +<?=$values['signature']?> + +Ditt rapporterade problem var enligt nedan: + +<?=$values['title']?> + +<?=$values['detail']?> + diff --git a/templates/email/fixamingata/reply-autoresponse b/templates/email/fixamingata/reply-autoresponse new file mode 100644 index 000000000..b6ddb5146 --- /dev/null +++ b/templates/email/fixamingata/reply-autoresponse @@ -0,0 +1,22 @@ +Subject: Automatiskt svar på ditt brev till Fixa Min Gata + +Hej, + +det här ett ett automatiskt svar på ditt brev. Ditt brev har inte +lästs eller levererats till någon. + +Om du svarar på ett brev om en uppdatering måste du klicka på +länken som var i det brevet för att lämna en uppdatering. Du kan +inte skicka en uppdatering via epost. + +Om du försöker bekräfta en rapport måste du klicka på länken i +det brev som skickades till dig. + +Om du vill avbryta en prenumeration finns det en länk sist i +varje brev som du kan klicka på för att avbryta en prenumeration. + +Om du har frågor eller kommenterar på tjänsten kan du lämna dina +kommenterar på http://fixamingata.se/contact + +Vänligen, +Fixa Min Gata diff --git a/templates/email/fixamingata/signature.txt b/templates/email/fixamingata/signature.txt new file mode 100644 index 000000000..c2dffee4c --- /dev/null +++ b/templates/email/fixamingata/signature.txt @@ -0,0 +1,3 @@ +Vänligen, + +Fixa Min Gata diff --git a/templates/email/fixamingata/site-name.txt b/templates/email/fixamingata/site-name.txt new file mode 100644 index 000000000..8c9aa3aea --- /dev/null +++ b/templates/email/fixamingata/site-name.txt @@ -0,0 +1 @@ +Fixa Min Gata diff --git a/templates/email/fixamingata/submit-brent.txt b/templates/email/fixamingata/submit-brent.txt new file mode 100644 index 000000000..75a954765 --- /dev/null +++ b/templates/email/fixamingata/submit-brent.txt @@ -0,0 +1,43 @@ +Subject: FMS Problem Report: <?=$values['title']?> + +Dear <?=$values['bodies_name']?>, + +<?=$values['missing']?><?=$values['multiple']?>A user of +FixMyStreet has submitted the following report +of a local problem that they believe might require your attention. + +<?=$values['fuzzy']?>, or to provide an update on the problem, +please visit the following link: + + <?=$values['url']?> + +<?=$values['has_photo']?>---------- + +Name: <?=$values['name']?> + +Email: <?=$values['email']?> + +<?=$values['phone_line']?><?=$values['category_line']?>Subject: <?=$values['title']?> + +Details: <?=$values['detail']?> + +<?=$values['easting_northing']?>Latitude: <?=$values['latitude']?> + +Longitude: <?=$values['longitude']?> + +<?=$values['closest_address']?>---------- + +Replies to this email will go to the user who submitted the problem. + +<?=$values['signature']?> + +This message was sent via FixMyStreet, a project of UKCOD, registered charity +number 1076346. If there is a more appropriate email address for messages about +<?=$values['category_footer']?>, please let us know by visiting <http://www.fixmystreet.com/contact>. +This will help improve the service for local people. We +also welcome any other feedback you may have. + +FixMyStreet is now available for full integration into council +websites, making life easier for both you and your residents. +Read more here: http://www.mysociety.org/for-councils/fixmystreet/ + diff --git a/templates/email/fixamingata/submit-example.txt b/templates/email/fixamingata/submit-example.txt new file mode 100644 index 000000000..4956a7a93 --- /dev/null +++ b/templates/email/fixamingata/submit-example.txt @@ -0,0 +1,61 @@ +Subject: Problem Report: Dangerous pothole + +Dear Birmingham City Council, + +A user of FixMyStreet has submitted the following report of a +local problem that they believe might require your attention. + +To view a map of the precise location of this issue, or to provide +an update on the problem, please visit the following link: + + http://www.fixmystreet.com/report/39092 + +---------- + +Name: Matthew Somerville + +Email: [...] + +Phone: [...] + +Category: Potholes + +Subject: Dangerous pothole + +Details: There is a large pothole almost on the give way line as +you approach the junction along Bournville Lane from the east, +which leads to vehicles rolling back as they fall in and out of it +whilst waiting at the junction. + +Easting: 404517 + +Northing: 280922 + +Latitude: 52.4262642791826 + +Longitude: -1.93500217285966 + +Nearest road to the pin placed on the map (automatically +generated by Bing Maps): Bournville Lane, Birmingham B30 1 + +Nearest postcode to the pin placed on the map (automatically +generated): B30 1LA (83m away) + +---------- + +Replies to this email will go to the user who submitted the problem. + +Yours, +The FixMyStreet team + +This message was sent via FixMyStreet, a project of UKCOD, +registered charity number 1076346. If there is a more appropriate +email address for messages about 'Potholes', please let us know by +visiting <http://www.fixmystreet.com/contact>. This will help +improve the service for local people. We also welcome any other +feedback you may have. + +FixMyStreet is now available for full integration into council +websites, making life easier for both you and your residents. +Read more here: http://www.mysociety.org/for-councils/fixmystreet/ + diff --git a/templates/email/fixamingata/submit.txt b/templates/email/fixamingata/submit.txt new file mode 100644 index 000000000..547099ba6 --- /dev/null +++ b/templates/email/fixamingata/submit.txt @@ -0,0 +1,61 @@ +Subject: Ny rapport: <?=$values['title']?> + +Till <?=$values['bodies_name']?>, + +Det här meddelandet rör en rapport om ett problem i gatumiljön som en +medborgare lämnat via tjänsten Fixa Min Gata. + +<?=$values['missing']?><?=$values['multiple']?>Följande rapport +tror medborgaren behöver er uppmärksamhet. + +<?=$values['fuzzy']?> eller uppdatera problemet, klicka på följande länk: + + <?=$values['url']?> + +<?=$values['has_photo']?> + +** Uppgiftslämnare + +Namn: <?=$values['name']?> + +Epost: <?=$values['email']?> + +<?=$values['phone_line']?> + +** Information om ärendet + +<?=$values['category_line']?>Ärende: <?=$values['title']?> + +<?=$values['detail']?> + +** Geografisk position + +<?=$values['easting_northing']?>Latitude: <?=$values['latitude']?> + +Longitude: <?=$values['longitude']?> + +<?=$values['closest_address']?>---------- + +Svar på det här brevet kommer att skickas till den person som lämnade +rapporten. + +Om det finns en lämpligare adress dit rapporter kan skickas kan ni +kontakta oss för att ändra detta. + +Föreningen Sambruk som driver tjänsten ansvarar för en användargrupp +som det går bra att gå med i för att få tillgång till ytterligare +FixaMinGata-relaterade tjänster och support. Bland annat kan varje +kategori ha sin egen e-postadress, och FixaMinGata kan även kopplas +mot system som Open311. + +Om ni vill läsa mer om Fixa Min Gata och vad det innebär för er som kommun +kan ni hitta ytterligare information på vår informationssida för kommuner: + + <http://fixamingata.se/kommun> + +Kontakta Föreningen Sambruk via: + + <http://fixamingata.se/contact> + +<?=$values['signature']?> + diff --git a/templates/email/fixamingata/test.txt b/templates/email/fixamingata/test.txt new file mode 100644 index 000000000..bfa2c1dd3 --- /dev/null +++ b/templates/email/fixamingata/test.txt @@ -0,0 +1,15 @@ +Subject: test email ☺ +From: bad-sender@duff.com + +Hello, + +This is a test email where foo: [% foo %]. + +utf8: 我们应该能够无缝处理UTF8编码 + + indented_text + +long line: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + +Yours, +FixMyStreet. diff --git a/templates/email/fixamingata/update-confirm.txt b/templates/email/fixamingata/update-confirm.txt new file mode 100644 index 000000000..6ef35f83d --- /dev/null +++ b/templates/email/fixamingata/update-confirm.txt @@ -0,0 +1,17 @@ +Subject: Bekräfta din uppdatering på [% INCLUDE 'site-name.txt' | trim %] + +Hej [% update.name %], + +vänligen klicka på länken nedan för att bekräfta den uppdatering du +just lämnade: + +[% token_url %] + +Om det inte går att klicka på länken kan du kopiera och klistra in +länken i adressfältet på din webbläsare. + +Din uppdatering var: + +[% update.text %] + +[% INCLUDE 'signature.txt' %] diff --git a/templates/email/fixmystreet/alert-problem-area.txt b/templates/email/fixmystreet/alert-problem-area.txt new file mode 100644 index 000000000..736e45143 --- /dev/null +++ b/templates/email/fixmystreet/alert-problem-area.txt @@ -0,0 +1,14 @@ +Subject: New problems in <?=$values['area_name']?> on FixMyStreet + +The following new problems have been added within +<?=$values['area_name']?>: + +<?=$values['data']?> + +------- + +<?=$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..65b11aceb --- /dev/null +++ b/templates/email/fixmystreet/alert-problem-council.txt @@ -0,0 +1,13 @@ +Subject: New problems reported to <?=$values['area_name']?> on FixMyStreet + +The following new problems have been reported to <?=$values['area_name']?>: + +<?=$values['data']?> + +------- + +<?=$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..17d792a12 --- /dev/null +++ b/templates/email/fixmystreet/alert-problem-nearby.txt @@ -0,0 +1,12 @@ +Subject: New nearby problems on FixMyStreet + +The following nearby problems have been added: + +<?=$values['data']?> + +------- + +<?=$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..dc7a02b9b --- /dev/null +++ b/templates/email/fixmystreet/alert-problem-ward.txt @@ -0,0 +1,14 @@ +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']?> + +------- + +<?=$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..12af205f1 --- /dev/null +++ b/templates/email/fixmystreet/alert-problem.txt @@ -0,0 +1,12 @@ +Subject: New problems on FixMyStreet + +The following new problems have been added: + +<?=$values['data']?> + +------- + +<?=$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..7cbf26c44 --- /dev/null +++ b/templates/email/fixmystreet/alert-update.txt @@ -0,0 +1,19 @@ +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. + +------- + +<?=$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/email/seesomething/confirm_report_sent.txt b/templates/email/seesomething/confirm_report_sent.txt index b17a76186..d62a50c49 100644 --- a/templates/email/seesomething/confirm_report_sent.txt +++ b/templates/email/seesomething/confirm_report_sent.txt @@ -1,9 +1,10 @@ Subject: See Something, Say Something report sent -Hi, +Thank you for your report. It will help us to direct our policing activity to make public transport even safer. Find out more of what we are doing at: -Your report on See Something, Say Something has been sent +Safer Travel Partnership -Thanks +http://www.safertravel.info -<?=$values['signature']?> +Follow us on Twitter: https://www.twitter.com/ST_Police +or on Facebook: http://www.facebook.com/safertravelpolice diff --git a/templates/email/zerotb/alert-update.txt b/templates/email/zerotb/alert-update.txt new file mode 100644 index 000000000..ee32524f9 --- /dev/null +++ b/templates/email/zerotb/alert-update.txt @@ -0,0 +1,9 @@ +Subject: New stockout report for Clinic - '<?=$values['title']?>' + +The following stockouts have been reported for this clinic: + +<?=$values['data']?> + +You cannot contact anyone by replying to this email. + +<?=$values['signature']?> diff --git a/templates/email/zurich/alert-moderation-overdue.txt b/templates/email/zurich/alert-moderation-overdue.txt new file mode 100644 index 000000000..c31d5c349 --- /dev/null +++ b/templates/email/zurich/alert-moderation-overdue.txt @@ -0,0 +1,9 @@ +Subject: eskalierte Meldungen auf Züri wie neu + +Die folgenden Meldungen auf <<Züri wie neu>> sind älter als einen Tag und müssen dringend bearbeitet werden: + +<?=$values['data']?> + +Um diese Meldungen zu moderieren, klicken Sie auf folgende URL: + +<?=$values['admin_url']?> diff --git a/templates/email/zurich/alert-overdue.txt b/templates/email/zurich/alert-overdue.txt new file mode 100644 index 000000000..92bb58f26 --- /dev/null +++ b/templates/email/zurich/alert-overdue.txt @@ -0,0 +1,9 @@ +Subject: Rückmeldung erforderlich auf Züri wie neu + +Die folgenden Meldungen wurden eskaliert, da sie nicht innerhalb von fünf Tagen beantwortet worden sind: + +<?=$values['data']?> + +Um diese Meldungen zu bearbeiten, klicken Sie auf folgende URL: + +<?=$values['admin_url']?> diff --git a/templates/email/zurich/alert-update.txt b/templates/email/zurich/alert-update.txt new file mode 100644 index 000000000..3f8da5f66 --- /dev/null +++ b/templates/email/zurich/alert-update.txt @@ -0,0 +1,11 @@ +Subject: New update on report - '<?=$values['title']?>' + +The following update has been left on this report: + +<?=$values['data']?> + +To view this report on the site, please visit the following URL: + <?=$values['problem_url']?> + +<?=$values['signature']?> + diff --git a/templates/email/zurich/login.txt b/templates/email/zurich/login.txt new file mode 100644 index 000000000..6c7b91330 --- /dev/null +++ b/templates/email/zurich/login.txt @@ -0,0 +1,6 @@ +Subject: Ihr Züri wie neu Konto + +Bitte klicken Sie auf den Link um Ihre E-Mail-Adresse zu bestätigen und sich direkt einzuloggen. + +[% c.uri_for_action( 'auth/token', token ) %] + diff --git a/templates/email/zurich/problem-closed.txt b/templates/email/zurich/problem-closed.txt new file mode 100644 index 000000000..392004504 --- /dev/null +++ b/templates/email/zurich/problem-closed.txt @@ -0,0 +1,25 @@ +Subject: Züri wie neu: Meldung #[% problem.id %] + +Grüezi [% problem.name %] + +Besten Dank für Ihre Meldung auf <<Züri wie neu>>. Ihr Anliegen wurde wie folgt beantwortet: + +[% problem.extra.public_response %] + +Unter: + [% url %] +finden Sie Ihre Meldung auf der Website. + +Ihre Meldung lautet: + +[% problem.detail %] + + + +Freundliche Grüsse + +Ihre Stadt Zürich + + +Dieses E-Mail wurde automatisch generiert. Bitte antworten Sie nicht darauf. + diff --git a/templates/email/zurich/problem-confirm.txt b/templates/email/zurich/problem-confirm.txt new file mode 100644 index 000000000..b945c6d59 --- /dev/null +++ b/templates/email/zurich/problem-confirm.txt @@ -0,0 +1,23 @@ +Subject: Züri wie neu: Meldung #[% report.id %] + +Grüezi [% report.name %] + +Besten Dank für Ihre Meldung auf <<Züri wie neu>>. Klicken Sie bitte auf diesen Link, um Ihre E-Mail-Adresse zu bestätigen und über den Status der Meldung informiert zu bleiben. Falls der Link nicht funktioniert, kopieren Sie ihn in Ihren Browser: + +[% token_url %] + +Wir werden Ihr Anliegen innerhalb der nächsten sechs Arbeitstage beantworten. + + +Ihre Meldung lautet: + +[% report.detail %] + + + +Freundliche Grüsse + +Ihre Stadt Zürich + + +Dieses E-Mail wurde automatisch generiert. Bitte antworten Sie nicht darauf. diff --git a/templates/email/zurich/problem-external.txt b/templates/email/zurich/problem-external.txt new file mode 100644 index 000000000..dbac3d563 --- /dev/null +++ b/templates/email/zurich/problem-external.txt @@ -0,0 +1,26 @@ +Subject: Züri wie neu: Meldung #[% problem.id %] + +Grüezi [% problem.name %] + +Besten Dank für Ihre Meldung auf <<Züri wie neu>>. Wir haben Ihr Anliegen an [% problem.body(c).name %] +weitergeleitet, da es nicht in den Zuständigkeitsbereich der am Pilot beteiligten Fachbereiche fällt. + +Unter: + [% url %] +finden Sie Ihre Meldung auf der Website. + + +Ihre Meldung lautet: + +[% problem.detail %] + + + +Freundliche Grüsse + +Ihre Stadt Zürich + + + +Dieses E-Mail wurde automatisch generiert. Bitte antworten Sie nicht darauf. + diff --git a/templates/email/zurich/problem-rejected.txt b/templates/email/zurich/problem-rejected.txt new file mode 100644 index 000000000..c3d375747 --- /dev/null +++ b/templates/email/zurich/problem-rejected.txt @@ -0,0 +1,29 @@ +Subject: Züri wie neu: Meldung #[% problem.id %] + +Grüezi [% problem.name %] + +Ihre Meldung wurde aufgrund des Inhalts zurückgewiesen. +Dies kann verschiedene Gründe haben wie zum Beispiel unzureichenden, nicht nachvollziehbaren oder diskriminierenden Inhalt. + +Bitte geben Sie die Meldung nochmals, mit möglichst detaillierten, sachlichen Informationen ein. + +Besten Dank für Ihr Verständnis. + +Freundliche Grüsse + +Ihre Stadt Zürich + +Ihre Meldung lautet: + +[% problem.detail %] + + + +Freundliche Grüsse + +Ihre Stadt Zürich + + + +Dieses E-Mail wurde automatisch generiert. Bitte antworten Sie nicht darauf. + diff --git a/templates/email/zurich/reply-autoresponse.txt b/templates/email/zurich/reply-autoresponse.txt new file mode 100644 index 000000000..c47a6186f --- /dev/null +++ b/templates/email/zurich/reply-autoresponse.txt @@ -0,0 +1,10 @@ +Subject: Automatische Antwort auf Ihr E-Mail
+
+Guten Tag
+
+Dies ist eine automatische Antwort auf Ihr E-Mail. Ihr E-Mail wurde nicht übermittelt.
+
+Falls Sie eine Meldung erfassen möchten, tun Sie das bitte über die Hauptseite:
+[%# link to FMZ %]
+
+Falls Sie Fragen zu Züri wie neu haben, senden Sie ein E-Mail an gis-zentrum@zuerich.ch
diff --git a/templates/email/zurich/submit-external-personal.txt b/templates/email/zurich/submit-external-personal.txt new file mode 100644 index 000000000..5e0823871 --- /dev/null +++ b/templates/email/zurich/submit-external-personal.txt @@ -0,0 +1,26 @@ +Subject: Züri wie neu: Weitergeleitete Meldung #<?=$values['id']?> + +Grüezi <?=$values['bodies_name']?>, + +Die folgende Meldung wurde auf http://www.stadt-zuerich.ch/zueriwieneu erfasst: + +Öffentliche URL: <?=$values['url']?> + +Name des Meldenden: <?=$values['name']?> + +Email des Meldenden: <?=$values['email']?> + +Telefonnummer des Meldenden: <?=$values['phone']?> + +"Züri wie neu" ist ein Pilotprojekt der Stadt Zürich zum Thema +Bürgerbeteiligung. Auf dieser Plattform kann die Bevölkerung auf Schäden und +Mängel an der städtischen Infrastruktur hinweisen. Diese Meldung wurde Ihnen +von der Stadt Zürich gesendet, da es Ihr Zuständigkeitsgebiet betreffen könnte. + +Bei Fragen zum Pilotprojekt "Züri wie neu" wenden Sie sich bitte an +gis-zentrum@zuerich.ch. + + +Freundliche Grüsse + +Ihre Stadt Zürich diff --git a/templates/email/zurich/submit-external.txt b/templates/email/zurich/submit-external.txt new file mode 100644 index 000000000..0218b4e23 --- /dev/null +++ b/templates/email/zurich/submit-external.txt @@ -0,0 +1,20 @@ +Subject: Züri wie neu: Weitergeleitete Meldung #<?=$values['id']?> + +Grüezi <?=$values['bodies_name']?>, + +Die folgende Meldung wurde auf http://www.stadt-zuerich.ch/zueriwieneu erfasst: + +Öffentliche URL: <?=$values['url']?> + +"Züri wie neu" ist ein Pilotprojekt der Stadt Zürich zum Thema +Bürgerbeteiligung. Auf dieser Plattform kann die Bevölkerung auf Schäden und +Mängel an der städtischen Infrastruktur hinweisen. Diese Meldung wurde Ihnen +von der Stadt Zürich gesendet, da es Ihr Zuständigkeitsgebiet betreffen könnte. + +Bei Fragen zum Pilotprojekt "Züri wie neu" wenden Sie sich bitte an +gis-zentrum@zuerich.ch. + + +Freundliche Grüsse + +Ihre Stadt Zürich diff --git a/templates/email/zurich/submit-feedback-pending.txt b/templates/email/zurich/submit-feedback-pending.txt new file mode 100644 index 000000000..dbdd9eedb --- /dev/null +++ b/templates/email/zurich/submit-feedback-pending.txt @@ -0,0 +1,10 @@ +Subject: Züri wie neu: Meldung #<?=$values['id']?> bereit für Feedback + +Guten Tag <?=$values['bodies_name']?>, + +Diese Meldung wurde vom Fachbereich abschliessend beantwortet und kann nun auf Züri wie neu beantwortet und abgeschlossen werden. + +Öffentliche URL: <?=$values['url']?> + +Admin URL: <?=$values['admin_url']?> + diff --git a/templates/email/zurich/submit-in-progress.txt b/templates/email/zurich/submit-in-progress.txt new file mode 100644 index 000000000..d1ba838bb --- /dev/null +++ b/templates/email/zurich/submit-in-progress.txt @@ -0,0 +1,10 @@ +Subject: Züri wie neu: Neue Meldung #<?=$values['id']?> + +Guten Tag <?=$values['bodies_name']?>, + +Diese Meldung wurde Ihnen von Ihrer <<Züri wie neu>>-Kommunikationsstelle zugeteilt. + +Öffentliche URL: <?=$values['url']?> + +Admin URL: <?=$values['admin_url']?> + diff --git a/templates/email/zurich/submit.txt b/templates/email/zurich/submit.txt new file mode 100644 index 000000000..15aea7504 --- /dev/null +++ b/templates/email/zurich/submit.txt @@ -0,0 +1,10 @@ +Subject: Züri wie neu: Neue Meldung #<?=$values['id']?> + +Guten Tag <?=$values['bodies_name']?>, + +Eine neue Meldung wurde erfasst: + +Öffentliche URL: <?=$values['url']?> + +Admin URL: <?=$values['admin_url']?> + diff --git a/templates/web/barnet/faq/faq-en-gb.html b/templates/web/barnet/faq/faq-en-gb.html index 126a03314..08bb744a6 100755 --- a/templates/web/barnet/faq/faq-en-gb.html +++ b/templates/web/barnet/faq/faq-en-gb.html @@ -7,7 +7,7 @@ <li>flyposting or graffiti <li>flytipping or litter <li>streetcleaning, such as broken glass in a cycle lane - <li>unlit lamposts + <li>unlit lampposts <li>broken playground equipment <li>potholes </ul> diff --git a/templates/web/barnet/footer.html b/templates/web/barnet/footer.html index 7982ad530..30b35f152 100644 --- a/templates/web/barnet/footer.html +++ b/templates/web/barnet/footer.html @@ -1,5 +1,5 @@ <p id="barnet-powered-by" class="desk-only"> - <a href="http://www.fixmystreet.com/">Powered by <img src="/cobrands/barnet/img/fms-logo.png" style="height:20px;"></a> + <a href="http://www.mysociety.org/for-councils/fixmystreet/">Powered by <img src="/cobrands/barnet/img/fms-logo.png" style="height:20px;"></a> </p> </div><!-- .content role=main --> </div><!-- .container --> @@ -9,7 +9,7 @@ <div class="nav-wrapper-2"> <div id="main-nav" role="navigation"> <ul id="mysoc-menu"> - <li><a href="http://www.fixmystreet.com/">Powered by <img src="/cobrands/barnet/img/fms-logo.png" style="height:20px;"></a></li> + <li><a href="http://www.mysociety.org/for-councils/fixmystreet/">Powered by <img src="/cobrands/barnet/img/fms-logo.png" style="height:20px;"></a></li> </ul> <ul id="main-menu"> <li><[% IF c.req.uri.path == '/' %]span[% ELSE %]a href="/"[% END %] class="report-a-problem-btn" diff --git a/templates/web/bromley/footer.html b/templates/web/bromley/footer.html index d60854daa..31b566047 100644 --- a/templates/web/bromley/footer.html +++ b/templates/web/bromley/footer.html @@ -1,6 +1,6 @@ </div><!-- .content role=main --> <p id="bromley-powered-by" class="desk-only"> - <a href="http://www.fixmystreet.com/">Powered by <img src="/cobrands/bromley/fms-logo.png" alt="FixMyStreet" style="height:20px;"></a> + <a href="http://www.mysociety.org/for-councils/fixmystreet/">Powered by <img src="/cobrands/bromley/fms-logo.png" alt="FixMyStreet" style="height:20px;"></a> </p> </div><!-- .container --> @@ -10,7 +10,7 @@ <div class="nav-wrapper-2"> <div id="main-nav" role="navigation"> <ul id="mysoc-menu"> - <li><a href="http://www.fixmystreet.com/">Powered by <img src="/cobrands/bromley/fms-logo.png" alt="FixMyStreet" style="height:20px;"></a></li> + <li><a href="http://www.mysociety.org/for-councils/fixmystreet/">Powered by <img src="/cobrands/bromley/fms-logo.png" alt="FixMyStreet" style="height:20px;"></a></li> </ul> <ul id="main-menu"> <li><[% IF c.req.uri.path == '/' %]span[% ELSE %]a href="/"[% END %] class="report-a-problem-btn" 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/bromley/report/display.html b/templates/web/bromley/report/display.html index 13bc5f960..67802e82a 100644 --- a/templates/web/bromley/report/display.html +++ b/templates/web/bromley/report/display.html @@ -2,7 +2,7 @@ PROCESS "report/photo-js.html"; PROCESS "maps/${map.type}.html"; - problem_title = problem.title _ ' - ' _ loc('Viewing a problem'); + problem_title = problem.title_safe _ ' - ' _ loc('Viewing a problem'); INCLUDE 'header.html' title = problem_title rss = [ loc('Updates to this problem, FixMyStreet'), "/rss/$problem.id" ] @@ -20,7 +20,7 @@ <div class="shadow-wrap"> <ul id="key-tools"> - [% IF c.user_exists AND c.user.council == 'Bromley Council' %] + [% IF c.user_exists AND c.user.body == 'Bromley Council' %] <li><form method="post" action="/report/delete/[% problem.id %]"> <input type="submit" class="abuse" value="Remove from site"> </form></li> @@ -74,12 +74,14 @@ <br><a href="http://www.bromley.gov.uk/report">Report a different issue</a> </div> - [% IF c.user && c.user.belongs_to_council( problem.council ) %] + [% IF c.user && c.user.belongs_to_body( problem.bodies_str ) %] <label for="form_state">[% loc( 'State' ) %]</label> <select name="state" id="form_state"> - [% FOREACH state IN [ ['confirmed', loc('Open')], ['investigating', - loc('Investigating')], ['planned', loc('Planned')], ['in progress', - loc('In Progress')], ['closed', loc('Closed')], ['fixed', loc('Fixed')] ] %] + [% FOREACH state IN [ ['confirmed', loc('Open')], ['investigating', + loc('Investigating')], ['action scheduled', loc('Action Scheduled')], + ['in progress', loc('In Progress')], ['duplicate', loc('Duplicate')], + ['unable to fix', loc('Unable to fix')], ['not responsible', loc('Not Responsible')], + ['fixed', loc('Fixed')] ] %] <option [% 'selected ' IF state.0 == problem.state %] value="[% state.0 %]">[% state.1 %]</option> [% END %] </select> diff --git a/templates/web/bromley/report/new/fill_in_details_form.html b/templates/web/bromley/report/new/fill_in_details_form.html index 2c5abb874..b60935f47 100644 --- a/templates/web/bromley/report/new/fill_in_details_form.html +++ b/templates/web/bromley/report/new/fill_in_details_form.html @@ -39,8 +39,8 @@ [% INCLUDE 'report/new/form_heading.html' %] - [% IF field_errors.council %] - <p class='form-error'>[% field_errors.council %]</p> + [% IF field_errors.bodies %] + <p class='form-error'>[% field_errors.bodies %]</p> [% END %] diff --git a/templates/web/default/admin/bodies.html b/templates/web/default/admin/bodies.html new file mode 100644 index 000000000..8bf7954f3 --- /dev/null +++ b/templates/web/default/admin/bodies.html @@ -0,0 +1,75 @@ +[% INCLUDE 'admin/header.html' title=loc('Bodies') -%] + +[% INCLUDE 'admin/edit-league.html' %] + +[% 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) %] [% 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' %] + <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 %] + <td>[% IF body.deleted %][% loc('Yes') %][% END %]</td> + </tr> + [%- END %] + </table> +[% END %] + +[% IF c.cobrand.moniker == 'zurich' %] + [% IF admin_type == 'super' %] + <h2>[% loc('Add body') %]</h2> + [% INCLUDE 'admin/body-form.html', body='' %] + [% END %] +[% ELSE %] + <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 new file mode 100644 index 000000000..f2eb505ab --- /dev/null +++ b/templates/web/default/admin/body-form.html @@ -0,0 +1,236 @@ + <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"> + <option value=""> -- [% loc('Select a body') %] -- </option> + [% FOR b IN bodies %] + <option value="[% b.id %]"[% ' selected' IF body.parent.id == b.id %]>[% b.name %]</option> + [% END %] + </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> + [% 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"> + <option value=""> -- Select a method -- </option> + [% FOR method IN send_methods %] + <option value="[% method %]"[% ' selected' IF body.send_method == method %]>[% method %]</option> + [% END %] + </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 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="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> + <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 %]"> + <input type="submit" value="[% body ? loc('Update body') : loc('Add body') %]"> + </p> + </form> + diff --git a/templates/web/default/admin/body.html b/templates/web/default/admin/body.html new file mode 100644 index 000000000..b207d18ca --- /dev/null +++ b/templates/web/default/admin/body.html @@ -0,0 +1,192 @@ +[% INCLUDE 'admin/header.html' title=tprintf(loc('Council contacts for %s'), body.name) -%] + +[% IF updated %] + <p> + <em>[% updated %]</em> + </p> +[% END %] + +<p> + [% 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> + Council contacts configured via Open311 + </h2> +[% END %] + +[% IF c.cobrand.moniker == 'fixmystreet' %] + <p class="error">Do not give these out except to people at the council.</p> +[% END %] + +[% 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 %] + +[% 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 %] + +<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> + +<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> + [% 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> + </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> + [% 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> + <strong>[% loc('Email address:') %] </strong><input type="text" name="email" size="30"> + </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> + + <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> + + <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 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> + + <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 new file mode 100644 index 000000000..f2bae0c0b --- /dev/null +++ b/templates/web/default/admin/body_edit.html @@ -0,0 +1,103 @@ +[% INCLUDE 'admin/header.html' title=tprintf(loc('Council contacts for %s'), body.name) -%] + +[% BLOCK highlightchanged_yesno %] +[%- output = loc('No') %] +[%- IF new.$value %][% output = loc('Yes') %][% END %] +[%- IF old && old.$value != new.$value %]<strong>[% output %]</strong>[% ELSE %][% output %][% END %] +[%- END %] + +[% BLOCK highlightchanged %] +[%- IF old && old.$value != new.$value %]<strong>[% new.$value %]</strong>[% ELSE %][% new.$value %][% END %] +[%- END %] +<p> +<em>[% updated %]</em> +</p> + +<p> +[% 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 %] +</p> + +<form method="post" action="[% c.uri_for('body', body_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8"> + <p><strong>[% loc('Category:') %] </strong>[% contact.category | html %] + <input type="hidden" name="category" value="[% contact.category | html %]" > + <input type="hidden" name="token" value="[% token %]" > + <p><strong>[% loc('Email:') %] </strong> + <input type="text" name="email" value="[% contact.email | html %]" size="30"> + + <p> + [% IF c.cobrand.moniker != 'zurich' %] + <input type="checkbox" name="confirmed" value="1" id="confirmed"[% ' checked' IF contact.confirmed %]> + <label class="inline" for="confirmed">[% loc('Confirmed' ) %]</label> + [% ELSE %] + <input type="hidden" name="confirmed" value="1"> + [% END %] + <input type="checkbox" name="deleted" value="1" id="deleted"[% ' checked' IF contact.deleted %]> + <label class="inline" for="deleted">[% loc('Deleted') %]</label> + [% IF c.cobrand.moniker != 'zurich' %] + <input type="checkbox" name="non_public" value="1" id="non_public"[% ' checked' IF contact.non_public %]> + <label class="inline" for="non_public">[% loc('Private') %]</label> + [% END %] + </p> + + <p><strong>[% loc('Note:') %] </strong><textarea name="note" rows="3" cols="40">[% contact.note | html %]</textarea> + + [% IF body.can_be_devolved %] + <h2>[% loc('Configure Endpoint') %]</h2> + <form method="post" action="[% c.uri_for('body', body_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8"> + <p> + <label for="endpoint">Endpoint</label> + <input type="text" name="endpoint" id="endpoint" value="[% contact.endpoint %]" size="50"> + </p> + + <p> + <label for="jurisdiction">Jurisdiction</label> + <input type="text" name="jurisdiction" id="jurisdiction" value="[% contact.jurisdiction %]" size="50"> + </p> + + <p> + <label for="api_key">Api Key</label> + <input type="text" name="api_key" id="api_key" value="[% contact.api_key %]" size="25"> + </p> + + <p> + <label for="send_method">Send Method</label> + <select name="send_method"> + <option value=""> -- Select a method -- </option> + [% FOR method IN send_methods %] + <option value="[% method %]"[% ' selected' IF contact.send_method == method %]>[% method %]</option> + [% END %] + </select> + </p> + [% END %] + + <input type="hidden" name="posted" value="new"> + <p><input type="submit" name="Save changes" value="[% loc('Save changes') %]"> +</form> + +<h2>[% loc('History') %]</h2> +<table border="1"> + <tr> + <th>[% loc('When edited') %]</th> + <th>[% loc('Email') %]</th> + <th>[% loc('Confirmed') %]</th> + <th>[% loc('Deleted') %]</th> + <th>[% loc('Editor') %]</th> + <th>[% loc('Note') %]</th> + </tr> + [%- prev = '' %] + [%- WHILE ( contact = history.next ) %] + <tr> + <td>[% contact.whenedited.ymd _ ' ' _ contact.whenedited.hms %]</td> + <td>[% PROCESS highlightchanged old=prev new=contact value='email' %]</td> + <td>[% PROCESS highlightchanged_yesno old=prev new=contact value='confirmed' %]</td> + <td>[% PROCESS highlightchanged_yesno old=prev new=contact value='deleted' %]</td> + <td>[% contact.editor %]</td> + <td>[% contact.note | html %]</td> + </tr> + [%- prev = contact %] + [%- END %] +</table> + +[% INCLUDE 'admin/footer.html' %] diff --git a/templates/web/default/admin/config_page.html b/templates/web/default/admin/config_page.html new file mode 100644 index 000000000..f198de2af --- /dev/null +++ b/templates/web/default/admin/config_page.html @@ -0,0 +1,145 @@ +[% 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://fixmystreet.org/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://fixmystreet.org/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> +</ul> + +[% INCLUDE 'admin/footer.html' %] + diff --git a/templates/web/default/admin/council_contacts.html b/templates/web/default/admin/council_contacts.html deleted file mode 100644 index be855cb95..000000000 --- a/templates/web/default/admin/council_contacts.html +++ /dev/null @@ -1,172 +0,0 @@ -[% INCLUDE 'admin/header.html' title=tprintf(loc('Council contacts for %s'), council_name) -%] - -[% conf = open311.next %] - -[% IF updated %] -<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( 'search_reports', search => 'area:' _ area_id ) %]">[% loc('List all reported problems' ) %]</a> -[% ELSE %] -<a href="[% c.uri_for_email( '/reports/' _ area_id ) %]">[% loc('List all reported problems' ) %]</a> -[% END %] -<a href="[% c.uri_for( 'council_contacts', area_id, { text => 1 } ) %]">[% loc('Text only version') %]</a> -</p> - -[% IF open311.count > 0 %] - <h2> - Council contacts configured via Open311 - </h2> -[% END %] - -[% IF c.cobrand.moniker == 'fixmystreet' %] -<p class="error">Do not give these out except to people at the council.</p> -[% END %] - -<form method="post" action="[% c.uri_for('council_contacts', area_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> - <td><a href="[% c.uri_for( 'council_edit', area_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 conf.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="area_id" value="[% area_id %]"> - <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('council_contacts', area_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8"> - - [% IF c.cobrand.moniker != 'emptyhomes' %] - <p> - <strong>[% loc('Category:') %] </strong><input type="text" name="category" size="30"> - </p> - [% END %] - - <p> - <strong>[% loc('Email:') %] </strong><input type="text" name="email" size="30"> - </p> - - <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('Note:') %] </strong> <textarea name="note" rows="3" cols="40"></textarea> - </p> - - <p> - <input type="checkbox" name="non_public" value="1" id="non_public"> - <label for="non_public" class="inline">[% loc('Private') %]</label> - </p> - - <p> - <input type="hidden" name="area_id" value="[% area_id %]" > - <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> - - <h2>[% loc('Configure Open311 integration') %]</h2> - <form method="post" action="[% c.uri_for('council_contacts', area_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8"> - <p> - <label for="endpoint">Endpoint</label> - <input type="text" name="endpoint" id="endpoint" value="[% conf.endpoint %]" size="50"> - </p> - - <p> - <label for="jurisdiction">Jurisdiction</label> - <input type="text" name="jurisdiction" id="jurisdiction" value="[% conf.jurisdiction %]" size="50"> - </p> - - <p> - <label for="api_key">Api Key</label> - <input type="text" name="api_key" id="api_key" value="[% conf.api_key %]" size="25"> - </p> - - <p> - <label for="send_method">Send Method</label> - <select name="send_method"> - <option value=""> -- Select a method -- </option> - [% FOR method IN send_methods %] - <option value="[% method %]"[% ' selected' IF conf.send_method == method %]>[% method %]</option> - [% END %] - </select> - </p> - - <p> - <input type="checkbox" name="send_comments"[% ' checked' IF conf.send_comments %]> - <label for="send_comments" class="inline">Use Open311 comment sending extension</label> - </p> - - <p> - <label for"comment_user_id">User to attribute fetched comments to</label> - <input type="text" name="comment_user_id" value="[% conf.comment_user_id %]"> - </p> - - <p> - <input type="checkbox" name="suppress_alerts"[% ' checked' IF conf.suppress_alerts %]> - <label for="suppress_alerts" class="inline">Do not send email alerts on fetched comments to problem creator</label> - </p> - - <p> - <input type="checkbox" name="devolved"[% ' checked' IF conf.can_be_devolved %]> - <label for="devolved" class="inline">Endpoint lookup can be devolved to contacts</label> - </p> - - <p> - <input type="hidden" name="open311_id" value="[% conf.id %]"> - <input type="hidden" name="area_id" value="[% area_id %]"> - <input type="hidden" name="posted" value="open311"> - <input type="hidden" name="token" value="[% token %]"> - <input type="submit" name="Configure Open311" value="[% loc('Configure Open311') %]"> - </p> - </form> - -[% INCLUDE 'admin/footer.html' %] diff --git a/templates/web/default/admin/council_edit.html b/templates/web/default/admin/council_edit.html deleted file mode 100644 index 408466b51..000000000 --- a/templates/web/default/admin/council_edit.html +++ /dev/null @@ -1,90 +0,0 @@ -[% INCLUDE 'admin/header.html' title=tprintf(loc('Council contacts for %s'), council_name) -%] - -[% BLOCK highlightchanged_yesno %] -[%- output = loc('No') %] -[%- IF new.$value %][% output = loc('Yes') %][% END %] -[%- IF old && old.$value != new.$value %]<strong>[% output %]</strong>[% ELSE %][% output %][% END %] -[%- END %] - -[% BLOCK highlightchanged %] -[%- IF old && old.$value != new.$value %]<strong>[% new.$value %]</strong>[% ELSE %][% new.$value %][% END %] -[%- END %] -<p> -<em>[% updated %]</em> -</p> - -<p> -[% IF example_pc %] -<a href="[% c.uri_for_email( '/around', { pc => example_pc } ) %]">[% tprintf( loc('Example postcode %s'), example_pc ) | html %]</a> -[% END %] -</p> - -<form method="post" action="[% c.uri_for('council_contacts', area_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8"> - <strong>[% loc('Category:') %] </strong>[% contact.category | html %] - <input type="hidden" name="category" value="[% contact.category | html %]" > - <input type="hidden" name="token" value="[% token %]" > - <strong>[% loc('Email:') %] </strong> - <input type="text" name="email" value="[% contact.email | html %]" size="30"> - <input type="checkbox" name="confirmed" value="1" id="confirmed"[% ' checked' IF contact.confirmed %]> <label for="confirmed">[% loc('Confirmed' ) %]</label> - <input type="checkbox" name="deleted" value="1" id="deleted"[% ' checked' IF contact.deleted %]> <label for="deleted">[% loc('Deleted') %]</label> - <input type="checkbox" name="non_public" value="1" id="non_public"[% ' checked' IF contact.non_public %]> <label for="non_public">[% loc('Private') %]</label><br> - - <strong>[% loc('Note:') %] </strong><textarea name="note" rows="3" cols="40">[% contact.note | html %]</textarea> <br> - - <h2>[% loc('Configure Endpoint') %]</h2> - <form method="post" action="[% c.uri_for('council_contacts', area_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8"> - <p> - <label for="endpoint">Endpoint</label>: - <input type="text" name="endpoint" id="endpoint" value="[% contact.endpoint %]" size="50"> - </p> - - <p> - <label for="jurisdiction">Jurisdiction</label>: - <input type="text" name="jurisdiction" id="jurisdiction" value="[% contact.jurisdiction %]" size="50"> - </p> - - <p> - <label for="api_key">Api Key</label>: - <input type="text" name="api_key" id="api_key" value="[% contact.api_key %]" size="25"> - </p> - - <p> - <label for="send_method">Send Method</label>: - <select name="send_method"> - <option value=""> -- Select a method -- </option> - [% FOR method IN send_methods %] - <option value="[% method %]"[% ' selected' IF contact.send_method == method %]>[% method %]</option> - [% END %] - </select> - </p> - - <input type="hidden" name="area_id" value="[% area_id %]"> - <input type="hidden" name="posted" value="new"> - <input type="submit" name="Save changes" value="[% loc('Save changes') %]"> -</form> - -<h2>[% loc('History') %]</h2> -<table border="1"> - <tr> - <th>[% loc('When edited') %]</th> - <th>[% loc('Email') %]</th> - <th>[% loc('Confirmed') %]</th> - <th>[% loc('Deleted') %]</th> - <th>[% loc('Editor') %]</th> - <th>[% loc('Note') %]</th> - </tr> - [%- prev = '' %] - [%- WHILE ( contact = history.next ) %] - <tr> - <td>[% contact.whenedited.ymd _ ' ' _ contact.whenedited.hms %]</td> - <td>[% PROCESS highlightchanged old=prev new=contact value='email' %]</td> - <td>[% PROCESS highlightchanged_yesno old=prev new=contact value='confirmed' %]</td> - <td>[% PROCESS highlightchanged_yesno old=prev new=contact value='deleted' %]</td> - <td>[% contact.editor %]</td> - <td>[% contact.note | html %]</td> - </tr> - [%- prev = contact %] - [%- END %] -</table> - -[% INCLUDE 'admin/footer.html' %] diff --git a/templates/web/default/admin/council_list.html b/templates/web/default/admin/council_list.html deleted file mode 100644 index ac99368fe..000000000 --- a/templates/web/default/admin/council_list.html +++ /dev/null @@ -1,47 +0,0 @@ -[% INCLUDE 'admin/header.html' title=loc('Council contacts') -%] - -[%- BLOCK details %] -[%- IF councils.size == 0 %] - [%- loc('None') %] -[%- ELSE %] -[%- FOREACH council IN councils %] - [%- IF council.parent_area %] - [%- - p_area = areas.$council.parent_area - parent = ', ' _ areas.$parent.name - %] - [%- ELSE %] - [%- parent = '' %] - [%- END %] - [%- '<ul>' IF loop.first %] - <li><a href="[% c.uri_for( 'council_contacts', council ) %]">[% areas.$council.name %] [% parent %][% tprintf( loc('%d addresses'), counts.$council.c) IF counts.$council && c.cobrand.moniker != 'emptyhomes' %]</a> - [%- '</ul>' IF loop.last %] -[%- END %] -[%- END %] -[%- END %] - -<h2>[% loc('Diligency prize league table') %]</h2> -[% IF edit_activity.count %] -<ul> - [% WHILE ( editor = edit_activity.next ) %] - <li>[% tprintf( loc('%d edits by %s'), editor.get_column('c'), editor.editor ) %]</li> - [% END %] -</ul> -[% ELSE %] -<p> -[% loc('No edits have yet been made.') %] -</p> -[% END %] - -<h2>[% loc('Councils') %]</h2> - -<h3>[% loc('No info at all') %]</h3> -[% PROCESS details councils=no_info %] -<h3>[% loc('Currently has 1+ deleted') %]</h3> -[% PROCESS details councils=one_plus_deleted %] -<h3>[% loc('Some unconfirmeds') %]</h3> -[% PROCESS details councils=unconfirmeds %] -<h3>[% loc('All confirmed') %]</h3> -[% PROCESS details councils=all_confirmed %] - -[% INCLUDE 'admin/footer.html' %] diff --git a/templates/web/default/admin/edit-league.html b/templates/web/default/admin/edit-league.html new file mode 100644 index 000000000..4f31eeb2e --- /dev/null +++ b/templates/web/default/admin/edit-league.html @@ -0,0 +1,21 @@ +<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> + [% WHILE ( editor = edit_activity.next ) %] + <li>[% tprintf( loc('%d edits by %s'), editor.get_column('c'), editor.editor ) %]</li> + [% END %] +</ul> +[% ELSE %] +<p> +[% loc('No edits have yet been made.') %] +</p> +[% END %] + + diff --git a/templates/web/default/admin/flagged.html b/templates/web/default/admin/flagged.html new file mode 100644 index 000000000..518d1b14e --- /dev/null +++ b/templates/web/default/admin/flagged.html @@ -0,0 +1,62 @@ +[% 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 %] +<table cellspacing="0" cellpadding="2" border="1"> + <tr> + <th>[% loc('ID') %]</th> + <th>[% loc('Title') %]</th> + <th>[% loc('Name') %]</th> + <th>[% loc('Body') %]</th> + <th>[% loc('State') %]</th> + <th>*</th> + </tr> + [% INCLUDE 'admin/problem_row.html' %] +</table> +[% ELSE %] + <p class="fms-admin-warning"> + [% loc('No flagged problems found.') %] + </p> +[% END %] + +<h2>[% loc( 'Users' ) %]</h2> +<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> </th> + </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> + [% IF user.flagged == 2 %] <strong>[% loc('Yes') %]</strong> [% ELSE %] [% 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 %] +</table> +[%- ELSE %] +<p class="fms-admin-warning"> + [% loc('No flagged users found.') %] +</p> +[%- END %] + +[% INCLUDE 'admin/footer.html' %] diff --git a/templates/web/default/admin/header.html b/templates/web/default/admin/header.html index 114c96a18..9f3503e20 100644 --- a/templates/web/default/admin/header.html +++ b/templates/web/default/admin/header.html @@ -1,8 +1,8 @@ -[% INCLUDE 'header.html' admin = 1, bodyclass = 'fullwidthpage' %] +[% 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; } -.hidden { color: #666666; } +.adminhidden { color: #666666; } .error { color: red; } select { width: auto; } </style> 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_flagged.html b/templates/web/default/admin/list_flagged.html deleted file mode 100644 index 0b22bccb2..000000000 --- a/templates/web/default/admin/list_flagged.html +++ /dev/null @@ -1,51 +0,0 @@ -[% INCLUDE 'admin/header.html' title=loc('Search Reports') %] -[% PROCESS 'admin/report_blocks.html' %] - - -<h2>[% loc( 'Problems' ) %]</h2> -[% IF problems.size > 0 %] -<table cellspacing="0" cellpadding="2" border="1"> - <tr> - <th>[% loc('ID') %]</th> - <th>[% loc('Title') %]</th> - <th>[% loc('Name') %]</th> - <th>[% loc('Email') %]</th> - <th>[% loc('Council') %]</th> - <th>[% loc('Category') %]</th> - <th>[% loc('Anonymous') %]</th> - <th>[% loc('Cobrand') %]</th> - <th>[% loc('Created') %]</th> - <th>[% loc('State') %]</th> - <th>[% loc('When sent') %]</th> - <th>*</th> - </tr> - [% INCLUDE 'admin/problem_row.html' %] -</table> -[% ELSE %] -<p> -[% loc('No flagged problems found') %] -</p> -[% END %] - -<h2>[% loc( 'Users' ) %]</h2> -[% IF users%] -<table cellspacing="0" cellpadding="2" border="1"> - <tr> - <th>[% loc('Name') %]</th> - <th>[% loc('Email') %]</th> - </tr> -[% WHILE ( user = users.next ) -%] - <tr> - <td>[% user.name | html %]</td> - <td>[% user.email | html %]</td> - <td><a href="[% c.uri_for( 'search_reports', search => user.email ) %]">list content</a></td> - </tr> -[%- END %] -</table> -[%- ELSE %] -<p> -[% loc('No flagged users found') %] -</p> -[%- END %] - -[% INCLUDE 'admin/footer.html' %] diff --git a/templates/web/default/admin/list_updates.html b/templates/web/default/admin/list_updates.html index 0a05ba4ac..02845b0ee 100644 --- a/templates/web/default/admin/list_updates.html +++ b/templates/web/default/admin/list_updates.html @@ -1,38 +1,46 @@ +[% IF updates.size %] <h2>[% loc('Updates') %]</h2> <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> [% FOREACH update IN updates -%] - <tr[% ' class="hidden"' IF update.state == 'hidden' || update.problem.state == 'hidden' %]> + <tr[% ' class="adminhidden"' IF update.state == 'hidden' || update.problem.state == 'hidden' %]> <td>[%- IF update.state == 'confirmed' && update.problem.state != 'hidden' -%] - [%- cobrand_data = update.cobrand_data %] - [%- cobrand_data = c.data_for_generic_update IF !update.cobrand %] - <a href="[% c.uri_for_email( '/report', update.problem.id, cobrand_data ) %]#update_[% update.id %]">[% update.id %]</a> + [%- cobrand_data = update.cobrand_data; + cobrand_data = c.data_for_generic_update IF !update.cobrand; + IF cobrand_data; + uri = c.uri_for_email( '/report', update.problem.id, cobrand_data ); + ELSE; + uri = c.uri_for_email( '/report', update.problem.id ); + END; + %] + <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_council( update.problem.council ) %][% 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> + </tr> [% END -%] </table> +[% END %] diff --git a/templates/web/default/admin/problem_row.html b/templates/web/default/admin/problem_row.html index 22825429a..2413a6062 100644 --- a/templates/web/default/admin/problem_row.html +++ b/templates/web/default/admin/problem_row.html @@ -1,31 +1,43 @@ [%- FOR problem IN problems %] - <tr[% ' class="hidden"' IF problem.state == 'hidden' %]> - <td>[%- IF problem.is_visible -%] - [%- cobrand_data = problem.cobrand_data %] - [%- cobrand_data = c.data_for_generic_problem IF !problem.cobrand %] - <a href="[% c.uri_for_email( '/report', problem.id, cobrand_data ) %]">[% problem.id %]</a> + <tr[% ' class="adminhidden"' IF problem.state == 'hidden' %]> + <td class="record-id">[%- IF problem.is_visible -%] + [%- cobrand_data = problem.cobrand_data; + cobrand_data = c.data_for_generic_problem IF !problem.cobrand; + IF cobrand_data; + uri = c.uri_for_email( '/report', problem.id, cobrand_data ); + ELSE; + uri = c.uri_for_email( '/report', problem.id ); + END; + %] + <a href="[% uri %]" class="admin-offsite-link">[% problem.id %]</a> [%- ELSE %] [%- problem.id %] [%- END -%]</td> <td>[% PROCESS value_or_nbsp value=problem.title %]</td> - <td>[% PROCESS value_or_nbsp value=problem.name %]</td> - <td>[% PROCESS value_or_nbsp value=problem.user.email %]</td> - <td>[%- IF edit_council_contacts -%] - <a href="[% c.uri_for('council_contacts', problem.council ) %]">[% PROCESS value_or_nbsp value=problem.council %]</a> - [%- ELSE -%] - [%- PROCESS value_or_nbsp value=problem.council -%] - [%- END -%]</td> - <td>[% PROCESS value_or_nbsp value=problem.category %]</td> - <td>[% IF problem.anonymous %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</td> - <td>[% problem.cobrand %]<br>[% problem.cobrand_data | html %]</td> - <td>[% PROCESS format_time time=problem.created %]</td> - <td>[% problem.state %]<small> - [%- IF problem.is_visible %]<br>[% loc('Confirmed:' ) %] [% PROCESS format_time time=problem.confirmed %][% END -%] - [%- IF problem.is_fixed %]<br>[% loc('Fixed:') %] [% PROCESS format_time time=problem.lastupdate %][% END -%] - [%- IF problem.is_closed %]<br>[% loc('Closed:') %] [% PROCESS format_time time=problem.lastupdate %][% END -%] - [%- IF problem.is_open %]<br>[% loc('Last update:') %] [% PROCESS format_time time=problem.lastupdate %][% END -%]</small> - </td> - <td>[% PROCESS format_time time=problem.whensent %]</td> + <td> + [% PROCESS value_or_nbsp value=problem.name %] + <br>[% PROCESS value_or_nbsp value=problem.user.email %] + <br>[% loc('Anonymous') %]: [% IF problem.anonymous %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %] + </td> + <td> + [% PROCESS value_or_nbsp value=problem.category %] + <br>[%- IF edit_body_contacts -%] + [% FOR body IN problem.bodies.values %] + <a href="[% c.uri_for('body', body.id ) %]">[% PROCESS value_or_nbsp value=body.name %]</a> + [% END %] + [%- ELSE -%] + [%- PROCESS value_or_nbsp value=problem.bodies_str -%] + [%- END -%] + <br>[% problem.cobrand %]<br>[% problem.cobrand_data | html %] + </td> + <td>[% problem.state %]<br><small> + [% loc('Created') %]: [% PROCESS format_time time=problem.created %] + <br>[% loc('When sent') %]: [% PROCESS format_time time=problem.whensent %] + [%- IF problem.is_visible %]<br>[% loc('Confirmed:' ) %] [% PROCESS format_time time=problem.confirmed %][% END -%] + [%- IF problem.is_fixed %]<br>[% loc('Fixed:') %] [% PROCESS format_time time=problem.lastupdate %][% END -%] + [%- IF problem.is_closed %]<br>[% loc('Closed:') %] [% PROCESS format_time time=problem.lastupdate %][% END -%] + [%- IF problem.is_open %]<br>[% loc('Last update:') %] [% PROCESS format_time time=problem.lastupdate %][% END -%] + </small></td> <td><a href="[% c.uri_for( 'report_edit', problem.id ) %]">[% loc('Edit') %]</a></td> </tr> [%- END -%] diff --git a/templates/web/default/admin/report_blocks.html b/templates/web/default/admin/report_blocks.html index f08529ce7..c2cffc352 100644 --- a/templates/web/default/admin/report_blocks.html +++ b/templates/web/default/admin/report_blocks.html @@ -15,3 +15,28 @@ [% BLOCK flag_button -%] [% IF user.flagged || user_flagged %]<input type="submit" name="removeuserflag" value="[% loc('Remove flag') %]">[% ELSE %]<input type="submit" name="flaguser" value="[% loc('Flag user') %]" />[% END %] [%- END %] + +[%# note: date format here (i.e., dd.mm.YYYY) currently used by Zurich %] +[% BLOCK format_date -%] + [%- IF this_date %] + [% this_date.strftime('%d.%m.%Y') %] + [% ELSE %][% no_time || ' ' %][% END %][% no_time = '' %] +[%- END %] + +[% BLOCK sort_link %][% IF order == choice %][% c.uri_with( d => 1 - dir ) %][% ELSE %][% c.uri_with( { o => choice, d => 0 } ) %][% END %][% END %] + +[% BLOCK sort_arrow %] + [% IF order == choice %] + <span style="font-size:50%"> + [% IF dir %] + ▼ + [% ELSE %] + ▲ + [% END %] + </span> + [% ELSE %] + <span style="font-size:50%; color: #999;"> + ▲ + </span> + [% END %] +[% END %] diff --git a/templates/web/default/admin/report_edit.html b/templates/web/default/admin/report_edit.html index ea98a9be9..12560fdf3 100644 --- a/templates/web/default/admin/report_edit.html +++ b/templates/web/default/admin/report_edit.html @@ -7,23 +7,59 @@ <input type="hidden" name="token" value="[% token %]" > <input type="hidden" name="submit" value="1" > <ul> - [%- cobrand_data = problem.cobrand_data %] - [%- cobrand_data = c.data_for_generic_problem IF !problem.cobrand %] -<li><a href="[% c.uri_for_email( '/report', problem.id, cobrand_data ) %]">[% loc('View report on site' )%]</a></li> + [%- cobrand_data = problem.cobrand_data; + cobrand_data = c.data_for_generic_problem IF !problem.cobrand; + IF cobrand_data; + uri = c.uri_for_email( '/report', problem.id, cobrand_data ); + ELSE; + uri = c.uri_for_email( '/report', problem.id ); + END; + %] +<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><br><textarea name='detail' id='detail' cols=60 rows=10>[% problem.detail | html %]</textarea></li> -<li>[% loc('Co-ordinates:') %] [% problem.latitude %], [% problem.longitude %] ( [% loc('originally entered') %] [% problem.postcode | html %] , [% IF problem.used_map %][% loc('used map') %][% ELSE %][% loc("didn't use map") %][% END %])</li> -<li>[% loc('For council(s):') %] [% IF problem.council %][% problem.council %][% ELSE %]<em>[% loc('None' ) %]</em>[% END %] ([% loc('other areas:') %] [% problem.areas | remove('^,') | remove( ',$' ) %])</li> -<li><label for="state">[% loc('State:') %]</label> <select name="state" id="state"> - [% FOREACH state IN [ ['confirmed', loc('Open')], ['investigating', - loc('Investigating')], ['planned', loc('Planned')], ['in progress', - loc('In Progress')], ['closed', loc('Closed')], ['fixed', loc('Fixed')], ['fixed - user', - loc('Fixed - User')], ['fixed - council', loc('Fixed - Council')], ['hidden', loc('Hidden')], ['partial', loc('Partial')],['unconfirmed',loc('Unconfirmed')] ] %] +<li><label for='detail'>[% loc('Details:') %]</label> +<textarea name='detail' id='detail' cols=60 rows=10>[% problem.detail | html %]</textarea></li> + +<li>[% loc('Co-ordinates:') %] [% problem.latitude %], [% problem.longitude %] +( [% + SET postcode_safe = problem.postcode | html; + tprintf( loc('originally entered: “%s”'), postcode_safe ) +%], +[% IF problem.used_map %][% loc('used map') %][% ELSE %][% loc("didn't use map") %][% END %])</li> + +<li>[% loc('For council(s):') %] [% IF problem.bodies_str %][% problem.bodies_str %][% ELSE %]<em>[% loc('None' ) %]</em>[% END %] ([% loc('other areas:') %] [% problem.areas | remove('^,') | remove( ',$' ) %])</li> +[% IF problem.extra.address %] +<li>[% loc('Property address:') %] [% problem.extra.address | html %]</li> +[% END %] +<li><label class="inline" for="state">[% loc('State:') %]</label> <select name="state" id="state"> +[% FOREACH group IN [ + [ loc('Open'), [ + [ 'confirmed', loc('Open') ], [ 'investigating', loc('Investigating') ], + [ 'planned', loc('Planned') ], [ 'in progress', loc('In progress') ], + [ 'action scheduled', loc('Action Scheduled') ], + ] ], + [ loc('Fixed'), [ + [ 'fixed', loc('Fixed') ], [ 'fixed - user', loc('Fixed - User') ], + [ 'fixed - council', loc('Fixed - Council') ] + ] ], + [ loc('Closed'), [ + [ 'unable to fix', loc('Unable to fix') ], [ 'not responsible', loc('Not Responsible') ], + [ 'duplicate', loc('Duplicate') ], [ 'closed', loc('Closed') ], + [ 'internal referral', loc('Internal referral') ], + ] ], + [ loc('Hidden'), [ + [ 'hidden', loc('Hidden') ], [ 'partial', loc('Partial') ], [ 'unconfirmed',loc('Unconfirmed') ] + ] ] +] %] + <optgroup label="[% group.0 %]"> + [% FOREACH state IN group.1 %] <option [% 'selected ' IF state.0 == problem.state %] value="[% state.0 %]">[% state.1 %]</option> [% END %] + </optgroup> +[% END %] </select></li> <li>[% loc('Category:') %] [% problem.category | html %] </li> -<li><label for="anonymous">[% loc('Anonymous:') %]</label> <select name="anonymous" id="anonymous"> +<li><label class="inline" for="anonymous">[% loc('Anonymous:') %]</label> <select name="anonymous" id="anonymous"> <option [% 'selected ' IF problem.anonymous %]value="1">[% loc('Yes') %]</option> <option [% 'selected ' IF !problem.anonymous %]value="0">[% loc('No') %]</option> </select></li> @@ -39,19 +75,23 @@ <li>[% loc('Cobrand data:') %] [% problem.cobrand_data %]</li> <li>[% loc('Extra data:') %] [% problem.extra ? 'Yes' : 'No' %]</li> <li>[% loc('Going to send questionnaire?') %] [% IF problem.send_questionnaire %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</li> -<li><label for="flagged">[% loc('Flagged:') %]</label> <input type="checkbox" name="flagged"[% ' checked' IF problem.flagged %]></li> -<li><label for="non_public">[% loc('Private') %]:</label> <input type="checkbox" name="non_public"[% ' checked' IF problem.non_public %]></li> +<li><label class="inline" for="flagged">[% loc('Flagged:') %]</label> <input type="checkbox" name="flagged"[% ' checked' IF problem.flagged %]></li> +<li><label class="inline" for="non_public">[% loc('Private') %]:</label> <input type="checkbox" name="non_public"[% ' checked' IF problem.non_public %]></li> [% 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> -[% IF rotated %]Photo may be cached. View image directly to check<br>[% END %] -<input type="submit" name="rotate_photo" value="Rotate Left" /> -<input type="submit" name="rotate_photo" value="Rotate Right" /> +<input type="submit" name="rotate_photo" value="[% loc('Rotate Left') %]"> +<input type="submit" name="rotate_photo" value="[% loc('Rotate Right') %]"> <br> <input type="checkbox" id="remove_photo" name="remove_photo" value="1"> -<label for="remove_photo">[% loc("Remove photo (can't be undone!)") %]</label></li> +<label class="inline" for="remove_photo">[% loc("Remove photo (can't be undone!)") %]</label></li> [% END %] </ul> <input type="submit" name="Submit changes" value="[% loc('Submit changes') %]" ></form> diff --git a/templates/web/default/admin/reports.html b/templates/web/default/admin/reports.html new file mode 100644 index 000000000..7267dd11d --- /dev/null +++ b/templates/web/default/admin/reports.html @@ -0,0 +1,33 @@ +[% INCLUDE 'admin/header.html' title=loc('Search Reports') %] +[% PROCESS 'admin/report_blocks.html' %] + +<form method="get" action="[% c.uri_for('reports') %]" 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> + +[% IF problems.size %] +<table cellspacing="0" cellpadding="2" border="1"> + <tr> + <th>[% loc('ID') %]</th> + <th>[% loc('Title') %]</th> + <th>[% loc('Name') %]</th> + <th>[% loc('Body') %]</th> + <th>[% loc('State') %]</th> + <th>*</th> + </tr> + [% INCLUDE 'admin/problem_row.html' %] +</table> + +[% 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' %] + +[% INCLUDE 'admin/footer.html' %] diff --git a/templates/web/default/admin/search_reports.html b/templates/web/default/admin/search_reports.html deleted file mode 100644 index 9702c16a7..000000000 --- a/templates/web/default/admin/search_reports.html +++ /dev/null @@ -1,32 +0,0 @@ -[% INCLUDE 'admin/header.html' title=loc('Search Reports') %] -[% PROCESS 'admin/report_blocks.html' %] - -<form method="get" action="[% c.uri_for('search_reports') %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8"> - <label for="search">[% loc('Search:') %]</label> <input type="text" name="search" size="30" id="search"> -</form> - - -[% IF searched %] -<table cellspacing="0" cellpadding="2" border="1"> - <tr> - <th>[% loc('ID') %]</th> - <th>[% loc('Title') %]</th> - <th>[% loc('Name') %]</th> - <th>[% loc('Email') %]</th> - <th>[% loc('Council') %]</th> - <th>[% loc('Category') %]</th> - <th>[% loc('Anonymous') %]</th> - <th>[% loc('Cobrand') %]</th> - <th>[% loc('Created') %]</th> - <th>[% loc('State') %]</th> - <th>[% loc('When sent') %]</th> - <th>*</th> - </tr> - [% INCLUDE 'admin/problem_row.html' %] -</table> - -[% INCLUDE 'admin/list_updates.html' %] - -[% END %] - -[% INCLUDE 'admin/footer.html' %] diff --git a/templates/web/default/admin/search_users.html b/templates/web/default/admin/search_users.html deleted file mode 100644 index 0b4ba88e7..000000000 --- a/templates/web/default/admin/search_users.html +++ /dev/null @@ -1,31 +0,0 @@ -[% INCLUDE 'admin/header.html' title=loc('Search Users') %] -[% PROCESS 'admin/report_blocks.html' %] - -<form method="get" action="[% c.uri_for('search_users') %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8"> - <label for="search">[% loc('Search:') %]</label> <input type="text" name="search" size="30" id="search"> -</form> - - -[% IF searched %] -<table cellspacing="0" cellpadding="2" border="1"> - <tr> - <th>[% loc('Name') %]</th> - <th>[% loc('Email') %]</th> - <th>[% loc('Council') %]</th> - <th>[% loc('Flagged') %]</th> - <th>*</th> - </tr> -[%- FOREACH user IN users %] - <tr> - <td>[% PROCESS value_or_nbsp value=user.name %]</td> - <td><a href="[% c.uri_for( 'search_reports', search => user.email ) %]">[% PROCESS value_or_nbsp value=user.email %]</a></td> - <td>[% PROCESS value_or_nbsp value=user.from_council %]</td> - <td>[% user.flagged == 2 ? loc('(Email in abuse table)') : user.flagged ? loc('Yes') : ' ' %]</td> - <td>[% IF user.id %]<a href="[% c.uri_for( 'user_edit', user.id ) %]">[% loc('Edit') %]</a>[% END %]</td> - </tr> -[%- END -%] -</table> - -[% END %] - -[% INCLUDE 'admin/footer.html' %] diff --git a/templates/web/default/admin/stats.html b/templates/web/default/admin/stats.html index 234600837..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> @@ -81,10 +81,10 @@ </p> <p> - [% loc('Council:') %] <select id='council' name='council'> + [% loc('Council:') %] <select id='body' name='body'> <option value=''>[% loc('No council') %]</option> - [% FOR council IN council_ids %] - <option value="[% council %]"[% ' selected' IF council == selected_council %]>[% council_details.$council.name %]</option> + [% FOR body IN bodies %] + <option value="[% body.id %]"[% ' selected' IF body.id == selected_body %]>[% body.name %]</option> [% END %] </select> </p> diff --git a/templates/web/default/admin/timeline.html b/templates/web/default/admin/timeline.html index 95120e48c..6bf350a58 100644 --- a/templates/web/default/admin/timeline.html +++ b/templates/web/default/admin/timeline.html @@ -1,6 +1,4 @@ [% INCLUDE 'admin/header.html' title=loc('Timeline') %] -[%- USE f = DateTime::Format('DateTime::Format::Strptime', { pattern => "%A, %e %B %Y" }) %] -[%- USE alert_format = DateTime::Format('DateTime::Format::Strptime', { pattern => "%H:%M:%S %e %B %Y" }) %] [%- BLOCK problem_name %] [%- tprintf(loc('by %s'), problem.name) | html %] <[% problem.user.email | html %]>, '[% problem.title | html %]' @@ -8,7 +6,7 @@ [%- date = '' %] [% FOREACH moment IN time.keys.sort.reverse %] - [%- curdate = f.format(time.$moment.0.date) -%] + [%- curdate = time.$moment.0.date.strftime('%A, %e %B %Y') -%] [%- IF date != curdate %] [% '</dl>' IF date %] <h2>[% curdate %]</h2> @@ -23,20 +21,20 @@ [% 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, c.cobrand_data ) _ '">' _ 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, c.cobrand_data ) _ '">' _ item.obj.id _ '</a>', item.obj.council ) %] + [% 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, c.cobrand_data ) _ "#update_" _ item.obj.id _ "'>" _ item.obj.id _ "</a>", item.obj.problem_id, name) %] <[% item.obj.user.email | 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 _ "' class='admin-offsite-link'>" _ item.obj.id _ "</a>", item.obj.problem_id, name) %] <[% item.obj.user.email | html %]> [% 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' %] - [% tprintf(loc("Alert %d disabled (created %s)"), item.obj.id, alert_format.format( item.obj.whensubscribed_local ) ) %] + [% tprintf(loc("Alert %d disabled (created %s)"), item.obj.id, item.obj.whensubscribed.strftime('%H:%M:%S %e %B %Y') ) %] [%- END %] <br /> [%- END %] diff --git a/templates/web/default/admin/update_edit.html b/templates/web/default/admin/update_edit.html index 1d5ee80b4..5ffce8bc4 100644 --- a/templates/web/default/admin/update_edit.html +++ b/templates/web/default/admin/update_edit.html @@ -7,10 +7,19 @@ <input type="hidden" name="token" value="[% token %]" > <input type="hidden" name="submit" value="1" > <ul> - [%- cobrand_data = update.cobrand_data %] - [%- cobrand_data = c.data_for_generic_update IF !update.cobrand %] -<li><a href="[% c.uri_for_email( '/report', update.problem_id, cobrand_data ) %]#update_[% update.id %]">[% loc('View report on site' )%]</a></li> -<li><label for='detail'>[% loc('Text:') %]</label><br><textarea name='text' id='text' cols=60 rows=10>[% update.text | html %]</textarea></li> + [%- cobrand_data = update.cobrand_data; + cobrand_data = c.data_for_generic_update IF !update.cobrand; + IF cobrand_data; + uri = c.uri_for_email( '/report', update.problem_id, cobrand_data ); + ELSE; + uri = c.uri_for_email( '/report', update.problem_id ); + END; + %] +<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> + <li><label for="anonymous">[% loc('Anonymous:') %]</label> <select name="anonymous" id="anonymous"> <option [% 'selected ' IF update.anonymous %]value="1">[% loc('Yes') %]</option> <option [% 'selected ' IF !update.anonymous %]value="0">[% loc('No') %]</option> @@ -22,8 +31,8 @@ </select></li> <li>[% loc('Name:') %] <input type='text' name='name' id='name' value='[% update.name | html %]'></li> <li>[% loc('Email:') %] <input type='text' id='email' name='email' value='[% update.user.email | html %]'> -[%- IF update.user.from_council && update.user.from_council == update.problem.council %] -[% ' (' _ tprintf(loc('user is from same council as problem - %d'), update.user.from_council ) _')' %] +[%- IF update.user.from_body && update.user.from_body.id == update.problem.bodies_str %] +[% ' (' _ tprintf(loc('user is from same council as problem - %d'), update.user.from_body.id ) _')' %] [% END -%] [%- IF update.user.id == update.problem.user.id %] [% ' (' _ loc('user is problem owner') _')' %] @@ -43,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 new file mode 100644 index 000000000..4a57b05a0 --- /dev/null +++ b/templates/web/default/admin/user-form.html @@ -0,0 +1,56 @@ +<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> + <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> + <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> + <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') %]" > +</form> diff --git a/templates/web/default/admin/user_edit.html b/templates/web/default/admin/user_edit.html index a03a4b734..d69c873a3 100644 --- a/templates/web/default/admin/user_edit.html +++ b/templates/web/default/admin/user_edit.html @@ -3,20 +3,6 @@ [% status_message %] -<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" > -<ul> -<li>[% 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('Council:') %] <select id='council' name='council'> - <option value=''>[% loc('No council') %]</option> -[% FOR council IN council_ids %] - <option value="[% council %]"[% ' selected' IF council == user.from_council %]>[% council_details.$council.name %]</option> -[% END %] -</select> -<li>[% loc('Flagged:') %] <input type="checkbox" id="flagged" name="flagged"[% user.flagged ? ' checked' : '' %]></li> -</ul> -<input type="submit" name="Submit changes" value="[% loc('Submit changes') %]" ></form> +[% INCLUDE 'admin/user-form.html' %] [% INCLUDE 'admin/footer.html' %] diff --git a/templates/web/default/admin/users.html b/templates/web/default/admin/users.html new file mode 100644 index 000000000..db97c7d59 --- /dev/null +++ b/templates/web/default/admin/users.html @@ -0,0 +1,49 @@ +[% 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> + +[% IF users.size %] + +<table cellspacing="0" cellpadding="2" border="1"> + <tr> + <th>[% loc('Name') %]</th> + <th>[% loc('Email') %]</th> + <th>[% loc('Body') %]</th> + [% IF c.cobrand.moniker != 'zurich' %] + <th>[% loc('Flagged') %]</th> + [% END %] + <th>*</th> + </tr> +[%- FOREACH user IN users %] + <tr> + <td>[% PROCESS value_or_nbsp value=user.name %]</td> + <td><a href="[% c.uri_for( 'reports', search => user.email ) %]">[% PROCESS value_or_nbsp value=user.email %]</a></td> + <td>[% PROCESS value_or_nbsp value=user.from_body.name %]</td> + [% IF c.cobrand.moniker != 'zurich' %] + <td>[% user.flagged == 2 ? loc('(Email in abuse table)') : user.flagged ? loc('Yes') : ' ' %]</td> + [% END %] + <td>[% IF user.id %]<a href="[% c.uri_for( 'user_edit', user.id ) %]">[% loc('Edit') %]</a>[% END %]</td> + </tr> +[%- 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/alert/index.html b/templates/web/default/alert/index.html index 1f0635ae4..36c0daf91 100644 --- a/templates/web/default/alert/index.html +++ b/templates/web/default/alert/index.html @@ -40,9 +40,11 @@ To find out what local alerts we have for you, please enter your [% c.cobrand.co <div class="sticky-sidebar" id="alert_recent"> <aside> <h2>[% loc('Some photos of recent reports') %]</h2> - [% FOREACH p IN photos %] + [% FOREACH p IN photos; + photo = p.get_photo_params; + %] <a href="/report/[% p.id %]"><img border="0" height="100" - src="/photo/[% p.id %].tn.jpeg" alt="[% p.title | html %]" title="[% p.title | html %]"></a> + src="[% photo.url_tn %]" alt="[% p.title | html %]" title="[% p.title | html %]"></a> [% END %] </aside> </div> diff --git a/templates/web/default/alert/list.html b/templates/web/default/alert/list.html index 20ebbf455..447bfcd76 100644 --- a/templates/web/default/alert/list.html +++ b/templates/web/default/alert/list.html @@ -24,9 +24,11 @@ <div id="alert_photos" class="sticky-sidebar"> <aside> <h2>[% loc('Photos of recent nearby reports') %]</h2> - [% FOREACH p IN photos %] + [% FOREACH p IN photos; + photo = p.get_photo_params; + %] <a href="/report/[% p.id %]"><img border="0" height="100" - src="/photo/[% p.id %].tn.jpeg" alt="[% p.title | html %]" title="[% p.title | html %]"></a> + src="[% photo.url_tn %]" alt="[% p.title | html %]" title="[% p.title | html %]"></a> [% END %] </aside> </div> diff --git a/templates/web/default/around/around_index.html b/templates/web/default/around/around_index.html index a143e90a2..087abf65f 100644 --- a/templates/web/default/around/around_index.html +++ b/templates/web/default/around/around_index.html @@ -6,7 +6,7 @@ [% INCLUDE 'around/postcode_form.html' %] [% IF location_error %] - <p class="error">[% location_error %]</p> + [% INCLUDE 'around/location_error.html' %] [% END %] [% IF possible_location_matches %] diff --git a/templates/web/default/around/around_map_list_items.html b/templates/web/default/around/around_map_list_items.html index f598a9ba9..da75561b5 100644 --- a/templates/web/default/around/around_map_list_items.html +++ b/templates/web/default/around/around_map_list_items.html @@ -5,7 +5,7 @@ <li> <a href="[% c.uri_for('/report', p.problem.id ) %]">[% p.problem.title | html %]</a> - <small>[% prettify_epoch( p.problem.confirmed_local.epoch, 1 ) %], [% dist %]km</small> + <small>[% prettify_dt( p.problem.confirmed, 1 ) %], [% dist %]km</small> [% IF p.problem.is_fixed %] <small>[% loc('(fixed)') %]</small> [% ELSIF p.problem.is_closed %] diff --git a/templates/web/default/around/display_location.html b/templates/web/default/around/display_location.html index d50009299..c8c6935de 100755 --- a/templates/web/default/around/display_location.html +++ b/templates/web/default/around/display_location.html @@ -29,13 +29,13 @@ PROCESS "maps/${map.type}.html"; + SET rss = [ loc('Recent local problems, FixMyStreet'), rss_url ] IF c.cobrand.moniker != 'emptyhomes'; INCLUDE 'header.html', title => loc('Viewing a location') - rss => [ loc('Recent local problems, FixMyStreet'), rss_url ], bodyclass => 'mappage', robots => 'noindex,nofollow'; - allow_creation = !c.cobrand.only_authed_can_create || (c.user && c.user.from_council); + allow_creation = !c.cobrand.only_authed_can_create || (c.user && c.user.from_body); %] [% IF allow_creation %] @@ -51,7 +51,11 @@ [% map_html %] + [% IF c.cobrand.moniker != 'emptyhomes' %] <p id='sub_map_links'> + [% IF c.cobrand.moniker == 'zurich' %] + <a class="hidden-nojs" id="map_layer_toggle" href="">Stadtplan</a> + [% END %] [% IF c.req.params.no_pins %] <a id='hide_pins_link' rel='nofollow' href='[% c.uri_with( { no_pins => 0 } ) %]'>[% loc('Show pins') %]</a> [% ELSE %] @@ -66,6 +70,7 @@ [% END %] [% END %] </p> + [% END %] </div> @@ -79,11 +84,13 @@ [% TRY %][% INCLUDE 'around/extra_text.html' %][% CATCH file %][% END %] [% END %] + [% IF c.cobrand.moniker != 'emptyhomes' %] [% INCLUDE 'around/_updates.html' %] <section class="full-width"> [% INCLUDE "around/tabbed_lists.html" %] </section> + [% END %] </div> [% IF allow_creation %] diff --git a/templates/web/default/around/location_error.html b/templates/web/default/around/location_error.html new file mode 100644 index 000000000..9b907b64b --- /dev/null +++ b/templates/web/default/around/location_error.html @@ -0,0 +1 @@ +<p class="error">[% location_error %]</p> diff --git a/templates/web/default/around/on_map_list_items.html b/templates/web/default/around/on_map_list_items.html index e0f8eea08..70a071406 100644 --- a/templates/web/default/around/on_map_list_items.html +++ b/templates/web/default/around/on_map_list_items.html @@ -2,7 +2,7 @@ [% FOREACH p IN on_map %] <li> <a href="[% c.uri_for('/report', p.id ) %]">[% p.title | html %]</a> - <small>[% prettify_epoch( p.confirmed_local.epoch, 1 ) %]</small> + <small>[% prettify_dt( p.confirmed, 1 ) %]</small> [% IF p.is_fixed %] <small>[% loc('(fixed)') %]</small> [% ELSIF p.is_closed %] diff --git a/templates/web/default/around/postcode_form.html b/templates/web/default/around/postcode_form.html index 935995cfe..f58d7285d 100644 --- a/templates/web/default/around/postcode_form.html +++ b/templates/web/default/around/postcode_form.html @@ -5,7 +5,7 @@ <form action="[% c.uri_for('/around') %]" method="get" name="postcodeForm" id="postcodeForm"> <label for="pc">[% question %]:</label> <span><input type="text" name="pc" value="[% pc | html %]" id="pc" size="10" maxlength="200"> - <input type="submit" value="[% loc('Go') %]" id="submit"> + <input type="submit" value="[% loc('Go') %]" id="sub"> </span> [% IF partial_token %] <input type="hidden" name="partial" value="[% partial_token.token %]"> diff --git a/templates/web/default/auth/sign_out.html b/templates/web/default/auth/sign_out.html index 23d39aa2d..571e13f9f 100644 --- a/templates/web/default/auth/sign_out.html +++ b/templates/web/default/auth/sign_out.html @@ -2,7 +2,6 @@ <h1>[% loc('You have been signed out') %]</h1> -<p>Please feel free to <a href="[% c.uri_for('/auth') %]">sign in again</a>, or -go back to the <a href="/">FixMyStreet front page</a>.</p> +<p>[% tprintf( loc('Please feel free to <a href="%s">sign in again</a>, or go back to the <a href="/">front page</a>.'), c.uri_for('/auth') ) %]</p> [% INCLUDE 'footer.html' %] diff --git a/templates/web/default/auth/token.html b/templates/web/default/auth/token.html index 0f44d1074..361d4fbd5 100644 --- a/templates/web/default/auth/token.html +++ b/templates/web/default/auth/token.html @@ -4,13 +4,10 @@ <h1>[% loc('Error') %]</h1> -<p>We have not been able to confirm your account - sorry. This may be because:</p> - -<ul> - <li>Link too old or already used</li> - <li>URL not copied correctly</li> - [%# FIXME - add more reasons here %] -</ul> +<p> + [% loc('We have not been able to confirm your account - sorry.') %] + [% loc('This may be because the link is too old or already used, or the address was not copied correctly.') %] +</p> [% ELSE %] @@ -18,7 +15,9 @@ <p>[% loc("We have sent you an email containing a link to confirm your account.") %]</p> +[% IF c.cobrand.moniker != 'zurich' %] <p>[% loc("The confirmation email <strong>may</strong> take a few minutes to arrive — <em>please</em> be patient.") %]</p> +[% END %] <p>[% loc("If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way.") %]</p> diff --git a/templates/web/default/common_header_tags.html b/templates/web/default/common_header_tags.html index 4839249ac..cd6b4ab3a 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/validation_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 %] @@ -25,9 +33,7 @@ <meta name="robots" content="noindex,nofollow"> [% END %] -[% IF rss %] - <link rel="alternate" type="application/rss+xml" title="[% rss.0 %]" href="[% rss.1 %]"> -[% END %] +[% INCLUDE 'header_rss.html' %] <title> [% "$title :: " | html IF title %] diff --git a/templates/web/default/contact/index.html b/templates/web/default/contact/index.html index a644ed952..8789fd03e 100644 --- a/templates/web/default/contact/index.html +++ b/templates/web/default/contact/index.html @@ -18,9 +18,9 @@ <blockquote> <p> [% IF update.anonymous %] - [% tprintf( loc('Update below added anonymously at %s'), prettify_epoch( update.confirmed_local.epoch ) ) %] + [% tprintf( loc('Update below added anonymously at %s'), prettify_dt( update.confirmed ) ) %] [% ELSE %] - [% tprintf( loc('Update below added by %s at %s'), update.name, prettify_epoch( update.confirmed_local.epoch ) ) | html %] + [% tprintf( loc('Update below added by %s at %s'), update.name, prettify_dt( update.confirmed ) ) | html %] [% END %] </p> @@ -38,13 +38,13 @@ </p> <blockquote> - <h2>[% problem.title | html %]</h2> + <h2>[% problem.title_safe | html %]</h2> <p> [% IF problem.anonymous %] - [% tprintf( loc('Reported anonymously at %s'), prettify_epoch( problem.confirmed_local.epoch ) ) %] + [% tprintf( loc('Reported anonymously at %s'), prettify_dt( problem.confirmed ) ) %] [% ELSE %] - [% tprintf( loc('Reported by %s at %s'), problem.user.name, prettify_epoch( problem.confirmed_local.epoch ) ) | html %] + [% tprintf( loc('Reported by %s at %s'), problem.user.name, prettify_dt( problem.confirmed ) ) | html %] [% END %] </p> @@ -83,6 +83,8 @@ <label for="form_subject">[% loc('Subject:') %]</label> <input type="text" class="required" name="subject" id="form_subject" value="[% subject | html %]" size="30"></div> +[% INCLUDE 'contact/who.html' %] + [% IF field_errors.message %] <div class="form-error">[% field_errors.message %]</div> [% END %] diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/framedCloud.css b/templates/web/default/contact/who.html index e69de29bb..e69de29bb 100644 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/framedCloud.css +++ b/templates/web/default/contact/who.html diff --git a/templates/web/default/dashboard/index.html b/templates/web/default/dashboard/index.html index 169d7d3fe..b3e1e8426 100644 --- a/templates/web/default/dashboard/index.html +++ b/templates/web/default/dashboard/index.html @@ -81,7 +81,7 @@ [% rows = { '0' => [ "in progress", "Council has marked as in progress" ] - '1' => [ "planned", "Council has marked as planned" ] + '1' => [ "action scheduled", "Council has marked as planned" ] '2' => [ "investigating", "Council has marked as investigating" ] '3' => [ "closed", "Council has marked as closed" ] }; @@ -98,10 +98,14 @@ <tr class='subtotal' id="marked"> <th scope="row">Total marked</th> - <td>[% problems.wtd.${"in progress"} + problems.wtd.planned + problems.wtd.investigating + problems.wtd.closed %]</td> - <td>[% problems.week.${"in progress"} + problems.week.planned + problems.week.investigating + problems.wtd.closed %]</td> - <td>[% problems.weeks.${"in progress"} + problems.weeks.planned + problems.weeks.investigating + problems.wtd.closed %]</td> - <td>[% problems.ytd.${"in progress"} + problems.ytd.planned + problems.ytd.investigating + problems.wtd.closed %]</td> + <td>[% problems.wtd.${"in progress"} + problems.wtd.${"action scheduled"} + + problems.wtd.investigating + problems.wtd.closed %]</td> + <td>[% problems.week.${"in progress"} + problems.week.${"action scheduled"} + + problems.week.investigating + problems.wtd.closed %]</td> + <td>[% problems.weeks.${"in progress"} + problems.weeks.${"action scheduled"} + + problems.weeks.investigating + problems.wtd.closed %]</td> + <td>[% problems.ytd.${"in progress"} + problems.ytd.${"action scheduled"} + + problems.ytd.investigating + problems.wtd.closed %]</td> </tr> <tr id="avg_fixed"> @@ -136,12 +140,13 @@ <p>Report state: <select name="state"> <option value=''>All</option> [% FOREACH state IN [ ['confirmed', loc('Open')], ['investigating', - loc('Investigating')], ['planned', loc('Planned')], ['in progress', + loc('Investigating')], ['action scheduled', loc('Planned')], ['in progress', loc('In Progress')], ['closed', loc('Closed')], ['fixed', loc('Fixed')] ] %] <option [% 'selected ' IF state.0 == q_state %] value="[% state.0 %]">[% state.1 %]</option> [% 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/email_sent.html b/templates/web/default/email_sent.html index fd947022a..9afddf2bd 100644 --- a/templates/web/default/email_sent.html +++ b/templates/web/default/email_sent.html @@ -1,30 +1,34 @@ -[% INCLUDE 'header.html', title => loc('Create a report') %] - -[% - messages = { - problem => { - action => loc('your problem will not be posted'), - worry => loc("we'll hang on to your problem report while you're checking your email."), - }, - update => { - action => loc('your update will not be posted'), - worry => loc("we'll hang on to your update while you're checking your email."), - }, - alert => { - action => loc('your alert will not be activated'), - worry => loc("we'll hang on to your alert while you're checking your email."), - }, - } -%] +[% INCLUDE 'header.html', title = loc('Create a report') %] <h1>[% loc("Nearly Done! Now check your email...") %]</h1> -<p>[% loc("The confirmation email <strong>may</strong> take a few minutes to arrive — <em>please</em> be patient.") %]</p> +[% IF c.cobrand.moniker != 'zurich' %] + <p>[% loc("The confirmation email <strong>may</strong> take a few minutes to arrive — <em>please</em> be patient.") %]</p> +[% END %] <p>[% loc("If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way.") %]</p> -<p>[% tprintf( loc("You must now click the link in the email we've just sent you — if you do not, %s."), messages.$email_type.action ) %].</p> +[% IF c.cobrand.moniker != 'zurich' %] + <p> + [% loc("You must now click the link in the email we've just sent you.") %] + [% IF email_type == 'problem' %] + [% loc("If you do not, your problem will not be posted.") %] + [% ELSIF email_type == 'update' %] + [% loc("If you do not, your update will not be posted.") %] + [% ELSIF email_type == 'alert' %] + [% loc("If you do not, your alert will not be activated.") %] + [% END %] + </p> -<p>[% tprintf( loc("(Don't worry — %s)"), messages.$email_type.worry ) %]</p> + <p> + [% IF email_type == 'problem' %] + [% loc("(Don't worry — we'll hang on to your problem report while you're checking your email.)") %] + [% ELSIF email_type == 'update' %] + [% loc("(Don't worry — we'll hang on to your update while you're checking your email.)") %] + [% ELSIF email_type == 'alert' %] + [% loc("(Don't worry — we'll hang on to your alert while you're checking your email.)") %] + [% END %] + </p> +[% END %] [% INCLUDE 'footer.html' %] diff --git a/templates/web/default/faq/faq-en-gb.html b/templates/web/default/faq/faq-en-gb.html index 26f93afb8..3bfbfb467 100755 --- a/templates/web/default/faq/faq-en-gb.html +++ b/templates/web/default/faq/faq-en-gb.html @@ -18,7 +18,7 @@ or clearing</strong>, such as: <li>Flytipping or litter <li>Streetcleaning, such as broken glass in a cycle lane [% IF c.cobrand.moniker != 'southampton' %] - <li>Unlit lamposts + <li>Unlit lampposts [% END %] <li>Potholes </ul> @@ -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 + — 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/front/stats.html b/templates/web/default/front/stats.html index c5d931d08..5367f1118 100644 --- a/templates/web/default/front/stats.html +++ b/templates/web/default/front/stats.html @@ -36,8 +36,8 @@ <div id="front_stats"> <div>[% tprintf( new_text, stats.new ) | comma %]</div> - [% IF c.cobrand.moniker != 'emptyhomes' %] <div>[% tprintf( fixed_text, stats.fixed ) | comma %]</div> - [% END %] + [% IF c.cobrand.moniker != 'zurich' %] <div>[% tprintf( updates_text, stats.updates ) | comma %]</div> + [% END %] </div> diff --git a/templates/web/emptyhomes/contact/address.html b/templates/web/default/header_logo.html index e69de29bb..e69de29bb 100644 --- a/templates/web/emptyhomes/contact/address.html +++ b/templates/web/default/header_logo.html diff --git a/templates/web/default/header_opengraph.html b/templates/web/default/header_opengraph.html new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/templates/web/default/header_opengraph.html diff --git a/templates/web/default/header_rss.html b/templates/web/default/header_rss.html new file mode 100644 index 000000000..b93a2e7fc --- /dev/null +++ b/templates/web/default/header_rss.html @@ -0,0 +1,3 @@ +[% IF rss %] + <link rel="alternate" type="application/rss+xml" title="[% rss.0 %]" href="[% rss.1 %]"> +[% END %] diff --git a/templates/web/default/index-steps.html b/templates/web/default/index-steps.html index 7129241d2..431791c20 100644 --- a/templates/web/default/index-steps.html +++ b/templates/web/default/index-steps.html @@ -2,8 +2,23 @@ <ol class="big-numbers"> [% IF c.cobrand.moniker == 'fixmybarangay' %] - <li>Text LUZ or BSN followed by your report to 12345</li> - <li>Visit the Barangay Center in person</li> + <li>Text <span class="promo-big">FMB LUZ</span> or <span class="promo-big">FMB BSN</span> followed by your report to + <ul id="promo-list"> + <li> + <span class="promo-bigger">391-FMB</span> (391362) SMART short code + </li> + <li> + <span class="promo-bigger">0908 896 8278</span> for all networks + </li> + </ul> + <div class="promo-example"> + For example:<br/> + <div> + FMB LUZ Busted streetlamp, P. Cabantan St., Pole # 12345, near Sto. Antonio Chapel + </div> + </div> + </li> + <li>Or visit the Barangay Center in person</li> <li>Staff? <a href="/auth">Sign in</a> and click on the map! [% ELSE %] <li>[% question %]</li> @@ -11,14 +26,17 @@ <li>[% loc('Enter details of the problem') %]</li> [% IF c.cobrand.is_council %] <li>Confirm the report and [% c.cobrand.council_name %] will investigate</li> + [% ELSIF c.cobrand.moniker == 'zurich' %] [% ELSE %] <li>[% loc('We send it to the council on your behalf') %]</li> [% END %] [% END %] </ol> +[% IF c.cobrand.moniker != 'emptyhomes' %] <section class="full-width"> [% INCLUDE "front/stats.html" %] [% TRY %][% INCLUDE "front/tips.html" %][% CATCH file %][% END %] </section> +[% END %] diff --git a/templates/web/default/index.html b/templates/web/default/index.html index 3698d6494..37bdd8c1e 100644 --- a/templates/web/default/index.html +++ b/templates/web/default/index.html @@ -8,12 +8,10 @@ [% subhead = c.cobrand.moniker == 'southampton' - ? '(like graffiti, fly tipping, or broken paving slabs)' + ? '' : loc('(like graffiti, fly tipping, broken paving slabs, or street lighting)'); %] - <strong>[% loc('Report, view, or discuss local problems') %]</strong> - [% IF subhead != ' ' %] <small>[% subhead %]</small> [% END %] @@ -37,9 +35,11 @@ <h2>[% loc('Recently reported problems') %]</h2> [% IF recent_photos.size %] <p id="front_photos"> - [% FOREACH p IN recent_photos %] + [% FOREACH p IN recent_photos; + photo = p.get_photo_params; + %] <a href="/report/[% p.id %]"><img border="0" height="100" - src="/photo/[% p.id %].tn.jpeg" alt="[% p.title | html %]" title="[% p.title | html %]"></a> + src="[% photo.url_tn %]" alt="[% p.title | html %]" title="[% p.title | html %]"></a> [% END %] </p> [% END %] @@ -49,7 +49,7 @@ [% FOREACH p IN probs %] <li> <a href="/report/[% p.id %]">[% p.title | html %]</a> - <small>[% prettify_epoch( p.confirmed_local.epoch, 1 ) %]</small> + <small>[% prettify_dt( p.confirmed, 1 ) %]</small> </li> [% END %] </ul> diff --git a/templates/web/default/js/translation_strings.html b/templates/web/default/js/translation_strings.html new file mode 100644 index 000000000..a14443b71 --- /dev/null +++ b/templates/web/default/js/translation_strings.html @@ -0,0 +1,48 @@ + 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("'", "\\'") %]' + }, + 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("'", "\\'") %]', + 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("'", "\\'") %]', + + permalink: '[% loc('Permalink') | replace("'", "\\'") %]', + + report_problem_heading: '[% loc('Click map to report a problem') | replace("'", "\\'") %]' + }; diff --git a/templates/web/default/js/validation_strings.html b/templates/web/default/js/validation_strings.html deleted file mode 100644 index 3148d1993..000000000 --- a/templates/web/default/js/validation_strings.html +++ /dev/null @@ -1,21 +0,0 @@ - validation_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("'", "\\'") %]' - }; 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/google.html b/templates/web/default/maps/google.html index 69020ea81..741edec40 100644 --- a/templates/web/default/maps/google.html +++ b/templates/web/default/maps/google.html @@ -1,13 +1,31 @@ [% map_js = BLOCK %] -<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> +<style> +#map_box img { + max-width: none; +} +#map_box { + color: #000; +} +</style> +<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> <script type="text/javascript" src="[% version('/js/map-google.js') %]"></script> +<script type="text/javascript" src="[% version('/js/jquery.ba-hashchange.min.js') %]"></script> [% END %] [% map_html = BLOCK %] <script type="text/javascript"> var fixmystreet = { + 'page': '[% page %]', + 'area': [ [% map.area.join(',') %] ], + 'all_pins': '[% all_pins %]', 'latitude': [% map.latitude %], 'longitude': [% map.longitude %], +[% IF map.any_zoom -%] + 'zoomToBounds': 1, +[%- END %] +[% IF map.zoom -%] + 'zoom': [% map.zoom %], +[%- END %] 'pins': [% INCLUDE maps/pins_js.html %] } </script> diff --git a/templates/web/default/maps/mapquest-attribution.html b/templates/web/default/maps/mapquest-attribution.html new file mode 100644 index 000000000..8ca4ea650 --- /dev/null +++ b/templates/web/default/maps/mapquest-attribution.html @@ -0,0 +1,14 @@ +[% map_js = BLOCK %] +<script type="text/javascript" src="[% version('/js/OpenLayers.fixmystreet.js') %]"></script> +<script type="text/javascript" src="[% version('/js/map-OpenLayers.js') %]"></script> +<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" /> +<![endif]--> +[% END %] + +[% map_html = BLOCK %] +[% INCLUDE maps/openlayers.html %] +<div class="olControlAttribution" style="position: absolute; z-index: 1005;">Data, imagery and map information provided by <a href="http://www.mapquest.com/">MapQuest</a> <img src="http://developer.mapquest.com/content/osm/mq_logo.png" />, <a href="http://openstreetmap.org/">Open Street Map</a> and contributors, <a href="http://opendatacommons.org/licenses/odbl/">ODbL</a></div> +[% END %] diff --git a/templates/web/default/maps/openlayers.html b/templates/web/default/maps/openlayers.html index b75e2bbd8..7967d4480 100644 --- a/templates/web/default/maps/openlayers.html +++ b/templates/web/default/maps/openlayers.html @@ -18,6 +18,7 @@ var fixmystreet = { [% IF map.zoom -%] 'zoom': [% map.zoom %], [%- END %] + 'pin_prefix': '[% c.cobrand.path_to_pin_icons %]', 'numZoomLevels': [% map.numZoomLevels %], 'zoomOffset': [% map.zoomOffset %], 'map_type': [% map.map_type %], @@ -65,13 +66,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 %] @@ -81,7 +82,7 @@ var fixmystreet = { [% IF pin.id %] <a title="[% pin.title | html %]" href="[% c.uri_for('/report/' _ pin.id) %]"> [%- END -%] -<img border="0" class="pin" src="[% c.uri_for('/i/pin-' _ pin.colour _ '.png') %]" +<img border="0" class="pin" src="[% c.uri_for( c.cobrand.path_to_pin_icons _ 'pin-' _ pin.colour _ '.png') %]" alt="[% loc('Problem') %]" style="top:[% pin.py - 64 %]px; left:[% pin.px - 24 %]px; position: absolute;"> [%- IF pin.id -%] </a> 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..ce08e179a 100644 --- a/templates/web/default/maps/osm.html +++ b/templates/web/default/maps/osm.html @@ -4,10 +4,11 @@ <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 %] [% map_html = BLOCK %] [% INCLUDE maps/openlayers.html %] +<div class="olControlAttribution" style="position: absolute; z-index: 1006;">© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors</div> [% END %] diff --git a/templates/web/default/my/my.html b/templates/web/default/my/my.html index 3d418cda7..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’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' @@ -53,7 +58,7 @@ END %] <li>“[% u.text | html %]” – <a href="[% c.uri_for( '/report', u.problem_id ) %]#update_[% u.id %]">[% u.problem.title | html %]</a>. <em class="council_sent_info"> - [% tprintf( loc("Added %s"), prettify_epoch( u.confirmed_local.epoch, 'date' ) ) %] + [% tprintf( loc("Added %s"), prettify_dt( u.confirmed, 'date' ) ) %] </em> </li> [% "</ul>" IF loop.last %] @@ -69,9 +74,9 @@ END %] <li><a href="[% c.uri_for( '/report', p.id ) %]">[% p.title | html %]</a> <em class="council_sent_info"> – [% IF p.whensent %] - [% tprintf( loc("Reported %s, to %s"), prettify_epoch( p.confirmed_local.epoch, 'date' ), p.body(c) ) %] + [% tprintf( loc("Reported %s, to %s"), prettify_dt( p.confirmed, 'date' ), p.body(c) ) %] [% ELSE %] - [% tprintf( loc("Reported %s"), prettify_epoch( p.confirmed_local.epoch, 'date' ) ) %] + [% tprintf( loc("Reported %s"), prettify_dt( p.confirmed, 'date' ) ) %] [% END %] </em> </li> diff --git a/templates/web/default/open311/index.html b/templates/web/default/open311/index.html index 8ce18f68c..aa77a8381 100644 --- a/templates/web/default/open311/index.html +++ b/templates/web/default/open311/index.html @@ -1,6 +1,75 @@ -[% INCLUDE 'header.html', title => 'Open311' %] +[% INCLUDE 'header.html', title = 'Open311', 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><a href="/privacy">Privacy and cookies</a></li> + <li><a href="/contact">Contact FixMyStreet</a></li> + </ul> + </aside> +</div> + +<h1>FixMyStreet support for Open311</h1> + +<p>FixMyStreet supports Open311 both as a <a href="#client">client</a> (sending +reports made on the site to an external service via the Open311 protocol), and +partly as a <a href="#server">server</a> (returning reports made on the site when +queried via the Open311 protocol).</p> + +<dl id="client"> + +<dt>What is Open311?</dt> + +<dd> +<p>In a nutshell, it's an international open standard that allows services to +'talk to' council systems.</p> +<p>As channels of communication diversify, it has become more and more +important that council systems can recognise and accept reports from a variety +of sources. For example, reports may come in via Twitter, SMS, email, services +like FixMyStreet, and the council's own website.</p> +</dd> + +<dt>Where can I find out more?</dt> + +<dd> +<p>Open311 isn't as widely known as it deserves to be, so we wrote a +<a href="http://www.mysociety.org/2013/01/10/open311-introduced/">short +series of blog posts</a> to explain the basics. And you can find out lots more at +<a href="http://open311.org/">open311.org</a>.</p> +</dd> + +<dt>Why does it matter?</dt> + +<dd> +<p>If you oversee problem reports at a council, you will of course be concerned +about future-proofing your communication channels in an easy and economical way +– Open311 gives you that assurance.</p> + +[% IF c.cobrand.moniker == 'fixmystreet' %] +<p>You may be interested to know about <a +href="http://www.google.com/url?q=http%3A%2F%2Fwww.mysociety.org%2Ffor-councils%2Ffixmystreet%2F&sa=D&sntz=1&usg=AFQjCNHo4eT2yOopyZ-39zz16jC-Faa5gQ">FixMyStreet +for Councils</a>, our hosted service which sits seamlessly on your council +website.</p> + +<p>We can integrate it with any council back-end system, but if you use +Open311, we charge less. That's how much we believe it's the sane way forward +for council problem-reporting systems.</p> +[% END %] + +<dt>Any questions?</dt> + +<dd> +<p>We're always happy to talk. Just <a href="/contact">drop us a line</a>.</p> +</dd> + +</dl> + +<hr> -<h1>[% loc('Open311 API for the mySociety FixMyStreet server') %]</h1> +<h2 id="server">[% loc('Open311 API for the mySociety FixMyStreet server') %]</h2> [% IF error %] <p>[% tprintf( loc('Note: <strong>%s</strong>'), error ) %]</p> diff --git a/templates/web/default/pagination.html b/templates/web/default/pagination.html index f5a1192d1..63180b600 100644 --- a/templates/web/default/pagination.html +++ b/templates/web/default/pagination.html @@ -1,17 +1,19 @@ [% IF pager.last_page > 1 %] - <p> +[% IF NOT admin %] +<section class="full-width"> +[% END %] + <p class="pagination"> [% IF pager.previous_page %] - <a href="[% c.req.uri_with({ $param => pager.previous_page }) %]">← Previous</a> - [% ELSE %] - ← Previous + <a class="prev" href="[% c.req.uri_with({ $param => pager.previous_page }) %][% '#' _ hash IF hash %]">[% loc('Previous') %]</a> [% END %] - | - [% pager.first %] to [% pager.last %] of [% pager.total_entries %] - | + + [% tprintf( loc('%d to %d of %d'), pager.first, pager.last, pager.total_entries ) %] + [% IF pager.next_page %] - <a href="[% c.req.uri_with({ $param => pager.next_page }) %]">Next →</a> - [% ELSE %] - Next → + <a class="next" href="[% c.req.uri_with({ $param => pager.next_page }) %][% '#' _ hash IF hash %]">[% loc('Next') %]</a> [% END %] </p> +[% IF NOT admin %] +</section> +[% END %] [% END %] diff --git a/templates/web/default/questionnaire/completed.html b/templates/web/default/questionnaire/completed.html index 52c20652c..4d848a63c 100644 --- a/templates/web/default/questionnaire/completed.html +++ b/templates/web/default/questionnaire/completed.html @@ -22,7 +22,7 @@ site and leave an update.</p>') %] [% END %] [% IF advert_outcome %] - [% display_crosssell_advert( problem.user.email, problem.name, 'council', problem.council ) %] + [% display_crosssell_advert( problem.user.email, problem.name, 'council', problem.bodies_str ) %] [% END %] [% INCLUDE 'footer.html' %] diff --git a/templates/web/default/questionnaire/index.html b/templates/web/default/questionnaire/index.html index 5b48f8915..6783bca57 100644 --- a/templates/web/default/questionnaire/index.html +++ b/templates/web/default/questionnaire/index.html @@ -80,9 +80,13 @@ href="http://www.emptyhomes.com/getinvolved/campaign.html">http://www.emptyhomes </p> [% END %] +[% IF c.cobrand.moniker == 'southampton' %] +<p>Add a public update (please note it will not be sent to the council)</p> +[% ELSE %] <p>[% loc('If you wish to leave a public update on the problem, please enter it here (please note it will not be sent to the council). For example, what was your experience of getting the problem fixed?') %]</p> +[% END %] <p><textarea name="update" style="max-width:90%" rows="7" cols="30">[% update | html %]</textarea></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 b9779db69..0124052c0 100644 --- a/templates/web/default/report/_main.html +++ b/templates/web/default/report/_main.html @@ -3,13 +3,9 @@ <p><em> [% problem.meta_line(c) | html %] - [%- IF !problem.used_map %]; <strong>[% loc('there is no pin shown as the user did not use the map') %]</strong>[% END %] - [% IF problem.council %] - [% IF problem.whensent || problem.can_display_external_id %] - <small class="council_sent_info"><br> - [% problem.processed_summary_string(c) %] - </small> - [% END %] + [%- 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 %] + [% INCLUDE 'report/_council_sent_info.html' %] [% ELSE %] <br><small>[% loc('Not reported to council') %]</small> [% END %] diff --git a/templates/web/default/report/_support.html b/templates/web/default/report/_support.html index e8b958940..3e372ba69 100644 --- a/templates/web/default/report/_support.html +++ b/templates/web/default/report/_support.html @@ -1,11 +1,17 @@ [% IF c.cobrand.can_support_problems %] -<p id="supporter"><small> - [% IF !problem.interest_count %][% text=loc('No supporters') %][% ELSIF problem.interest_count == 1 %][% text = loc('1 supporter') %][% ELSE %][% text = tprintf( loc('%d supporters' ), problem.interest_count ) %][% END %] - [% IF c.user && c.user.from_council %]<form action="[% c.uri_for( '/report/support' ) %]"> - [% text %] <input type="hidden" name="id" value="[% problem.id %]"><input type="submit" class="green-btn" value="Add support"> +[% + IF !problem.interest_count; + SET text = loc('No supporters'); + ELSE; + SET text = tprintf( nget( "%d supporter", "%d supporters", problem.interest_count ), problem.interest_count ); + END; +%] + + [% IF c.user AND c.user.from_body %] + <form action="[% c.uri_for( '/report/support' ) %]"> + <p id="supporter"><small>[% text %] <input type="hidden" name="id" value="[% problem.id %]"><input type="submit" class="green-btn" value="Add support"></small></p> </form> [% ELSE %] - [% text %] + <p id="supporter"><small>[% text %]</small></p> [% END %] -</small></p> [% END %] diff --git a/templates/web/default/report/banner.html b/templates/web/default/report/banner.html index 85aaed82d..bd7798d79 100644 --- a/templates/web/default/report/banner.html +++ b/templates/web/default/report/banner.html @@ -5,7 +5,7 @@ </p> [% END %] -[% IF problem.is_open AND date.now - problem.lastupdate_local.epoch > 8 * 7 * 24 * 60 * 60 %] +[% IF problem.is_open AND date.now - problem.lastupdate.epoch > 8 * 7 * 24 * 60 * 60 %] [% INCLUDE banner, id = 'unknown', text = loc('This problem is old and of unknown status.') %] [% END %] [% IF problem.is_fixed %] @@ -14,7 +14,7 @@ [% IF problem.is_closed %] [% INCLUDE banner, id = 'closed', text = loc('This problem has been closed') %] [% END %] -[% states = [ 'investigating', 'in progress', 'planned' ]; +[% states = [ 'investigating', 'in progress', 'planned', 'action scheduled' ]; IF states.grep(problem.state).size %] [% INCLUDE banner, id = 'progress', text = loc('This problem is in progress') %] [% END %] diff --git a/templates/web/default/report/display.html b/templates/web/default/report/display.html index 6b93539f2..fd7580ac1 100644 --- a/templates/web/default/report/display.html +++ b/templates/web/default/report/display.html @@ -1,16 +1,19 @@ [% PROCESS "maps/${map.type}.html"; - problem_title = problem.title _ ' - ' _ loc('Viewing a problem'); + problem_title = problem.title_safe _ ' - ' _ loc('Viewing a problem'); + SET rss = [ loc('Updates to this problem, FixMyStreet'), "/rss/$problem.id" ] IF c.cobrand.moniker != 'emptyhomes'; + SET robots = 'index, nofollow'; + SET robots = 'noindex, nofollow' IF c.cobrand.moniker == 'emptyhomes'; INCLUDE 'header.html' title = problem_title - rss = [ loc('Updates to this problem, FixMyStreet'), "/rss/$problem.id" ] - robots = 'index, nofollow' %] -[% map_html %] +[% IF c.cobrand.moniker != 'emptyhomes' %] + [% map_html %] + </div> +[% END %] -</div> <div id="side"> [% INCLUDE 'report/banner.html' %] @@ -22,6 +25,7 @@ </small> </p> +[% IF c.cobrand.moniker != 'emptyhomes' %] <p style="padding-bottom: 0.5em; border-bottom: dotted 1px #999999;" align="right"> <a href="[% c.uri_for( '/around', { lat => short_latitude, lon => short_longitude } ) %]">[% loc( 'More problems nearby' ) %]</a> </p> @@ -44,173 +48,9 @@ </div> [% INCLUDE 'report/updates.html' %] - -<div id="update_form"> - - <h2> - [% loc( 'Provide an update') %] - </h2> - - [% IF c.cobrand.moniker != 'emptyhomes' %] - <p> - <small>[% loc( 'Please note that updates are not sent to the council. If you leave your name it will be public. Your information will only be used in accordance with our <a href="/faq#privacy">privacy policy</a>' ) %]</small> - </p> - [% END %] - - [% INCLUDE 'errors.html' %] - - <form method="post" action="[% c.uri_for( '/report/update' ) %]" name="updateForm" class="fieldset validate"[% IF c.cobrand.allow_photo_upload %] enctype="multipart/form-data"[% END %]> - - <input type="hidden" name="submit_update" value="1"> - <input type="hidden" name="id" value="[% problem.id | html %]"> - - [% IF field_errors.update %] - <div class='form-error'>[% field_errors.update %]</div> - [% END %] - <div class="form-field"> - <label for="form_update">[% loc( 'Update:' ) %]</label> - <textarea name="update" id="form_update" rows="7" cols="30" required>[% update.text | html %]</textarea> - </div> - - [% IF c.user && c.user.belongs_to_council( problem.council ) %] - <div class="form-field"> - <label for="form_state">[% loc( 'State:' ) %]</label> - <select name="state" id="form_state"> - [% FOREACH state IN [ ['confirmed', loc('Open')], ['investigating', - loc('Investigating')], ['planned', loc('Planned')], ['in progress', - loc('In Progress')], ['closed', loc('Closed')], ['fixed', loc('Fixed')] ] %] - <option [% 'selected ' IF state.0 == problem.state %] value="[% state.0 %]">[% state.1 %]</option> - [% END %] - </select> - </div> - [% ELSE %] - [% IF problem.is_fixed AND c.user_exists AND c.user.id == problem.user_id %] - <div class="checkbox"> - <input type="checkbox" name="reopen" id="form_reopen" value="1"[% ' checked' IF update.mark_open %]> - <label for="form_reopen">[% loc('This problem has not been fixed') %]</label> - </div> - [% ELSIF !problem.is_fixed %] - <div class="checkbox"> - <input type="checkbox" name="fixed" id="form_fixed" value="1"[% ' checked' IF update.mark_fixed %]> - <label for="form_fixed">[% loc('This problem has been fixed') %]</label> - </div> - [% END %] - [% END %] - - [% IF c.cobrand.allow_photo_upload %] - [% IF field_errors.photo %] - <div class='form-error'>[% field_errors.photo %]</div> - [% END %] - <div id="fileupload_normalUI"> - [% IF upload_fileid %] - <p>[% loc('You have already attached a photo to this update, attaching another one will replace it.') %]</p> - <input type="hidden" name="upload_fileid" value="[% upload_fileid %]"> - [% END %] - <label for="form_photo">[% loc('Photo:') %]</label> - <input type="file" name="photo" id="form_photo" style="width:20em"> - </div> - [% END %] - -[% IF c.user_exists %] - - [% INCLUDE name %] - - <div class="checkbox"> - <input type="submit" id="update_post" value="[% loc('Post') %]"> - </div> - -[% ELSE %] - - [% IF field_errors.email %] - <div class='form-error'>[% field_errors.email %]</div> - [% END %] - <div class="form-field"> - <label for="form_rznvy">[% loc('Your email:' ) %]</label> - <input type="email" name="rznvy" id="form_rznvy" value="[% update.user.email | html %]" size="30" required> - </div> - -<div id="form_sign_in"> - <h3>[% loc("Now to submit your update… do you have a FixMyStreet password?") %]</h3> - - <div id="form_sign_in_yes"> - - [% IF field_errors.password %] - <div class='form-error'>[% field_errors.password %]</div> - [% END %] - - <p> - <label class="n" for="password_sign_in">[% loc('<strong>Yes</strong> I have a password') %]</label> - <input type="password" name="password_sign_in" id="password_sign_in" value="" size="25"> - </p> - - <div class="fieldset"> - - <p> - <input type="checkbox" id="remember_me" name="remember_me" value='1'[% ' checked' IF remember_me %]> - <label class="n" for="remember_me"> - [% loc('Keep me signed in on this computer') %] - </label> - </p> - - <p> - <input type="submit" name="submit_sign_in" id="submit_sign_in" value="[% loc('Post') %]"> - </p> - - </div> - - </div> - <div id="form_sign_in_no"> - - <p>[% loc('<strong>No</strong>, let me confirm my update by email:') %]</p> - - <div class="fieldset"> - - [% INCLUDE name %] - - <div class="form-field"> - <label for="password_register">[% loc('Enter a new password:') %]</label> - <input type="password" name="password_register" id="password_register" value="" size="25"> - </div> - - <p style="clear:both"><small>[% loc('Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports.') %]</small></p> - - <p> - <input type="submit" name="submit_register" id="submit_register" value="[% loc('Post') %]"> - </p> - - </div> - - </div> - -</div> - +[% INCLUDE 'report/update-form.html' %] [% END %] - </form> -</div> - </div> [% INCLUDE 'footer.html' %] - -[% BLOCK name %] - [% IF field_errors.name %] - <div class='form-error'>[% field_errors.name %]</div> - [% END %] - - <div> - <label for="form_name">[% loc('Your name:') %]</label> - <input type="text" name="name" id="form_name" value="[% update.name || c.user.name | html %]" size="25"> - </div> - - <div class="checkbox"> - <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' UNLESS update.anonymous %]> - <label for="form_may_show_name">[% loc('Show my name publicly') %]</label> - <small>[% loc('(we never show your email)') %]</small> - </div> - - <div class="checkbox"> - <input type="checkbox" name="add_alert" id="form_add_alert" value="1"[% ' checked' IF add_alert %]> - <label for="form_add_alert">[% loc( 'Alert me to future updates' ) %]</label> - </div> -[% END %] diff --git a/templates/web/default/report/new/category.html b/templates/web/default/report/new/category.html index 49be4d25d..ee47adc9e 100644 --- a/templates/web/default/report/new/category.html +++ b/templates/web/default/report/new/category.html @@ -3,11 +3,17 @@ [% IF category; category = category | lower; END; %] - <label for='form_category' id="form_category_label">[% category_label | html %]</label> + <label for='form_category' id="form_category_label"> + [%- IF c.cobrand.moniker == 'emptyhomes' %] + [%- loc('Property type:') %] + [%- ELSE %] + [%- loc('Category') %] + [%- END -%]</label> <select name='category' id='form_category'[% ' onchange="form_category_onchange()"' IF category_extras.size %]> [% FOREACH cat_op IN category_options %] [% cat_op_lc = cat_op | lower %] - <option value='[% cat_op | html %]'[% ' selected' IF report.category == cat_op || category == cat_op_lc %]>[% cat_op | html %]</option> + <option value='[% cat_op | html %]'[% ' selected' IF report.category == cat_op || category == cat_op_lc || (category_options.size == 2 AND loop.last) -%] + >[% IF loop.first %][% cat_op %][% ELSE %][% cat_op | html %][% END %]</option> [% END %] </select> [% END %] diff --git a/templates/web/default/report/new/councils_text.html b/templates/web/default/report/new/councils_text.html index 1da5746c1..f526beb28 100644 --- a/templates/web/default/report/new/councils_text.html +++ b/templates/web/default/report/new/councils_text.html @@ -1,7 +1,7 @@ [% FILTER collapse %] -[% IF area_ids_to_list.size == 0 %] +[% IF bodies_to_list.size == 0 %] [% PROCESS 'report/new/councils_text_none.html' %] -[% ELSIF area_ids_to_list.size == all_councils.size %] +[% ELSIF bodies_to_list.size == bodies.size %] [% PROCESS 'report/new/councils_text_all.html' %] [% ELSE %] [% PROCESS 'report/new/councils_text_some.html' %] diff --git a/templates/web/default/report/new/councils_text_all.html b/templates/web/default/report/new/councils_text_all.html index af5d822b0..e9a008e90 100644 --- a/templates/web/default/report/new/councils_text_all.html +++ b/templates/web/default/report/new/councils_text_all.html @@ -1,23 +1,24 @@ +[%# XXX The below type checking is assuming that a body ID can be used to look up a mapit type. %] <p> -[% IF area_ids_to_list.0 != 2489 && area_ids_to_list.0 != 2482 && all_councils.${area_ids_to_list.0}.type == 'LBO' %] +[% IF bodies_to_list.0 != 2489 && bodies_to_list.0 != 2482 && all_areas.${bodies_to_list.0}.type == 'LBO' %] [% tprintf( loc('All the information you provide here will be sent to <strong>%s</strong> or a relevant local body such as <strong>TfL</strong>, via the London Report-It system.'), - all_council_names.join( '</strong>' _ loc(' or ') _ '<strong>' ) + all_body_names.join( '</strong>' _ loc(' or ') _ '<strong>' ) ); %] -[% ELSIF all_councils.${area_ids_to_list.0}.type == 'LGD' %] +[% ELSIF all_areas.${bodies_to_list.0}.type == 'LGD' %] [% tprintf( loc('All the information you provide here will be sent to <strong>%s</strong> or <strong>Roads Service</strong>.'), - all_council_names.join( '</strong>' _ loc(' or ') _ '<strong>' ) + all_body_names.join( '</strong>' _ loc(' or ') _ '<strong>' ) ); %] [% ELSE %] [% tprintf( loc('All the information you provide here will be sent to <strong>%s</strong>.'), - all_council_names.join( '</strong>' _ loc(' or ') _ '<strong>' ) + all_body_names.join( '</strong>' _ loc(' or ') _ '<strong>' ) ); %] [% END %] diff --git a/templates/web/default/report/new/councils_text_none.html b/templates/web/default/report/new/councils_text_none.html index 06a4bbe49..9293c03a7 100644 --- a/templates/web/default/report/new/councils_text_none.html +++ b/templates/web/default/report/new/councils_text_none.html @@ -1,22 +1,28 @@ - - <p>[% - nget( "We do not yet have details for the council that covers this location.", "We do not yet have details for the councils that cover this location.", - all_councils.size + missing_details_bodies.size || all_areas.size ); %] [% loc("If you submit a problem here the subject and details of the problem will be public, but the problem will <strong>not</strong> be reported to the council."); %] +[% IF c.cobrand.moniker == 'fixamingata' AND all_body_names.size == 1 %] +[% + tprintf( + "Du kan istället kontakta %s via <a href='%s'>deras webbsida</a>.", + all_body_names.first, all_body_urls.first); +%] +[% ELSE %] [% tprintf( loc("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>."), - all_council_names.join( loc(' or ') ), + missing_details_body_names.join( loc(' or ') ) || all_area_names.join( loc(' or ') ), c.cobrand.contact_email, c.cobrand.contact_email ); -%]</p> +%] +[% END %] +</p> diff --git a/templates/web/default/report/new/councils_text_some.html b/templates/web/default/report/new/councils_text_some.html index 042e89914..8d4768612 100644 --- a/templates/web/default/report/new/councils_text_some.html +++ b/templates/web/default/report/new/councils_text_some.html @@ -1,9 +1,9 @@ <p> [% loc('All the information you provide here will be sent to') %] -[% FOREACH council_id IN area_ids_to_list %] +[% FOREACH body_id IN bodies_to_list %] [% loc( ' or ') IF ! loop.first %] - <strong>[% all_councils.$council_id.name %]</strong> + <strong>[% bodies.$body_id.name %]</strong> [%- '.' IF loop.last %] [% END %] @@ -14,13 +14,13 @@ nget( "We do <strong>not</strong> yet have details for the other council that covers this location.", "We do <strong>not</strong> yet have details for the other councils that cover this location.", - missing_details_councils.size + missing_details_bodies.size ); %] [% tprintf( loc("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>."), - missing_details_council_names.join( loc(' or ') ), + missing_details_body_names.join( loc(' or ') ), c.cobrand.contact_email, c.cobrand.contact_email ); diff --git a/templates/web/default/report/new/fill_in_details_form.html b/templates/web/default/report/new/fill_in_details_form.html index 9c9451914..5eff4e147 100644 --- a/templates/web/default/report/new/fill_in_details_form.html +++ b/templates/web/default/report/new/fill_in_details_form.html @@ -40,8 +40,8 @@ -[% IF field_errors.council %] - <div class='form-error'>[% field_errors.council %]</div> +[% IF field_errors.bodies %] + <div class='form-error'>[% field_errors.bodies %]</div> [% END %] [% IF field_errors.title %] @@ -206,7 +206,7 @@ <div class="checkbox"> [%# if there is nothing in the name field then set check box as default on form %] - <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF !report.anonymous %]> + <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF report.anonymous==0 OR (c.cobrand.default_show_name AND report.anonymous=='') %]> <label for="form_may_show_name">[% loc('Show my name publicly') %]</label> <br><small>[% loc('(we never show your email address or phone number)') %]</small> </div> diff --git a/templates/web/default/report/new/notes.html b/templates/web/default/report/new/notes.html index be605ddaa..68408acc7 100644 --- a/templates/web/default/report/new/notes.html +++ b/templates/web/default/report/new/notes.html @@ -4,7 +4,7 @@ <li>[% loc("We will only use your personal information in accordance with our <a href=\"/faq#privacy\">privacy policy.</a>") %]</li> <li>[% loc("Please be polite, concise and to the point.") %]</li> - <li>[% loc("Please do not be abusive — abusing your council devalues the service for all users.") %]</li> + <li>[% loc("Please do not be abusive — abusing your council devalues the service for all users.") %]</li> <li>[% loc("Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation.") %]</li> <li>[% loc("Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site remember that you can contact your council directly using their own website.") %]</li> diff --git a/templates/web/default/report/photo.html b/templates/web/default/report/photo.html index 02ab9228b..c463c34c4 100644 --- a/templates/web/default/report/photo.html +++ b/templates/web/default/report/photo.html @@ -1,4 +1,4 @@ -[% IF c.cobrand.allow_photo_display && object.photo %] +[% IF c.cobrand.allow_photo_display(object) && object.photo %] [% photo = object.get_photo_params %] <div class="update-img"> [% IF photo.url_full %]<a href="[% photo.url_full %]" rel="fancy">[% END diff --git a/templates/web/default/report/update-form.html b/templates/web/default/report/update-form.html new file mode 100644 index 000000000..50bc2906c --- /dev/null +++ b/templates/web/default/report/update-form.html @@ -0,0 +1,165 @@ +<div id="update_form"> + + <h2>[% loc( 'Provide an update') %]</h2> + + [% IF c.cobrand.moniker != 'emptyhomes' %] + <p> + <small>[% loc( 'Please note that updates are not sent to the council. If you leave your name it will be public. Your information will only be used in accordance with our <a href="/faq#privacy">privacy policy</a>' ) %]</small> + </p> + [% END %] + + [% INCLUDE 'errors.html' %] + + <form method="post" action="[% c.uri_for( '/report/update' ) %]" name="updateForm" class="fieldset validate"[% IF c.cobrand.allow_photo_upload %] enctype="multipart/form-data"[% END %]> + + <input type="hidden" name="submit_update" value="1"> + <input type="hidden" name="id" value="[% problem.id | html %]"> + + [% IF field_errors.update %] + <div class='form-error'>[% field_errors.update %]</div> + [% END %] + <div class="form-field"> + <label for="form_update">[% loc( 'Update:' ) %]</label> + <textarea name="update" id="form_update" rows="7" cols="30" required>[% update.text | html %]</textarea> + </div> + + [% IF c.user && c.user.belongs_to_body( problem.bodies_str ) %] + <div class="form-field"> + <label for="form_state">[% loc( 'State:' ) %]</label> + <select name="state" id="form_state"> + [% FOREACH state IN [ ['confirmed', loc('Open')], ['investigating', + loc('Investigating')], ['action scheduled', loc('Action Scheduled')], + ['in progress', loc('In Progress')], ['duplicate', loc('Duplicate')], + ['unable to fix', loc('Unable to fix')], ['not responsible', loc('Not Responsible')], + ['fixed', loc('Fixed')] ] %] + <option [% 'selected ' IF state.0 == problem.state %] value="[% state.0 %]">[% state.1 %]</option> + [% END %] + </select> + </div> + [% ELSE %] + [% IF problem.is_fixed AND c.user_exists AND c.user.id == problem.user_id %] + <div class="checkbox"> + <input type="checkbox" name="reopen" id="form_reopen" value="1"[% ' checked' IF update.mark_open %]> + <label class="inline" for="form_reopen">[% loc('This problem has not been fixed') %]</label> + </div> + [% ELSIF !problem.is_fixed %] + <div class="checkbox"> + <input type="checkbox" name="fixed" id="form_fixed" value="1"[% ' checked' IF update.mark_fixed %]> + <label class="inline" for="form_fixed">[% loc('This problem has been fixed') %]</label> + </div> + [% END %] + [% END %] + + [% IF c.cobrand.allow_photo_upload %] + [% IF field_errors.photo %] + <div class='form-error'>[% field_errors.photo %]</div> + [% END %] + <div id="fileupload_normalUI"> + [% IF upload_fileid %] + <p>[% loc('You have already attached a photo to this update, attaching another one will replace it.') %]</p> + <input type="hidden" name="upload_fileid" value="[% upload_fileid %]"> + [% END %] + <label for="form_photo">[% loc('Photo:') %]</label> + <input type="file" name="photo" id="form_photo" style="width:20em"> + </div> + [% END %] + +[% IF c.user_exists %] + + [% INCLUDE name %] + + <div class="checkbox"> + <input type="submit" id="update_post" value="[% loc('Post') %]"> + </div> + +[% ELSE %] + + [% IF field_errors.email %] + <div class='form-error'>[% field_errors.email %]</div> + [% END %] + <div class="form-field"> + <label for="form_rznvy">[% loc('Your email:' ) %]</label> + <input type="email" name="rznvy" id="form_rznvy" value="[% update.user.email | html %]" size="30" required> + </div> + +<div id="form_sign_in"> + <h3>[% loc("Now to submit your update… do you have a FixMyStreet password?") %]</h3> + + <div id="form_sign_in_yes"> + + [% IF field_errors.password %] + <div class='form-error'>[% field_errors.password %]</div> + [% END %] + + <p> + <label class="n" for="password_sign_in">[% loc('<strong>Yes</strong> I have a password') %]</label> + <input type="password" name="password_sign_in" id="password_sign_in" value="" size="25"> + </p> + + <div class="fieldset"> + + <p> + <input type="checkbox" id="remember_me" name="remember_me" value='1'[% ' checked' IF remember_me %]> + <label class="n" for="remember_me"> + [% loc('Keep me signed in on this computer') %] + </label> + </p> + + <p> + <input type="submit" name="submit_sign_in" id="submit_sign_in" value="[% loc('Post') %]"> + </p> + + </div> + + </div> + <div id="form_sign_in_no"> + + <p>[% loc('<strong>No</strong>, let me confirm my update by email:') %]</p> + + <div class="fieldset"> + + [% INCLUDE name %] + + <div class="form-field"> + <label for="password_register">[% loc('Enter a new password:') %]</label> + <input type="password" name="password_register" id="password_register" value="" size="25"> + </div> + + <p style="clear:both"><small>[% loc('Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports.') %]</small></p> + + <p> + <input type="submit" name="submit_register" id="submit_register" value="[% loc('Post') %]"> + </p> + + </div> + + </div> + +</div> + +[% END %] + + </form> +</div> + +[% BLOCK name %] + [% IF field_errors.name %] + <div class='form-error'>[% field_errors.name %]</div> + [% END %] + + <div> + <label for="form_name">[% loc('Your name:') %]</label> + <input type="text" name="name" id="form_name" value="[% update.name || c.user.name | html %]" size="25"> + </div> + + <div class="checkbox"> + <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF update.anonymous==0 OR (c.cobrand.default_show_name AND update.anonymous=='') %]> + <label for="form_may_show_name">[% loc('Show my name publicly') %]</label> + <small>[% loc('(we never show your email)') %]</small> + </div> + + <div class="checkbox"> + <input type="checkbox" name="add_alert" id="form_add_alert" value="1"[% ' checked' IF add_alert %]> + <label class="inline" for="form_add_alert">[% loc( 'Alert me to future updates' ) %]</label> + </div> +[% END %] diff --git a/templates/web/default/report/updates.html b/templates/web/default/report/updates.html index eaf5209ff..b0a015f03 100644 --- a/templates/web/default/report/updates.html +++ b/templates/web/default/report/updates.html @@ -1,3 +1,4 @@ +[% global.last_state = '' %] [% FOREACH update IN updates %] [% INCLUDE 'report/update.html' %] [% END %] @@ -6,24 +7,58 @@ [% IF update.whenanswered %] [%# A questionnaire update, currently saying report is still open %] - [% tprintf( loc( 'Still open, via questionnaire, %s' ), prettify_epoch( update.whenanswered_local.epoch ) ) %] + [% tprintf( loc( 'Still open, via questionnaire, %s' ), prettify_dt( update.whenanswered ) ) %] [% RETURN %] [% END %] [% IF update.anonymous || update.name == '' %] - [% tprintf( loc( 'Posted anonymously at %s' ), prettify_epoch( update.confirmed_local.epoch ) ) -%] - [%- ELSIF update.user.from_council; + [% tprintf( loc( 'Posted anonymously at %s' ), prettify_dt( update.confirmed ) ) -%] + [%- ELSIF update.user.from_body; user_name = update.user.name | html; - council = update.user.council; - IF council == 'Bromley Council'; - council = "$council <img src='/cobrands/bromley/favicon.png' alt=''>"; + body = update.user.body; + IF body == 'Bromley Council'; + body = "$body <img src='/cobrands/bromley/favicon.png' alt=''>"; END %] - [% tprintf( loc( 'Posted by %s (<strong>%s</strong>) at %s' ), user_name, council, prettify_epoch( update.confirmed_local.epoch ) ) -%] + [% tprintf( loc( 'Posted by %s (<strong>%s</strong>) at %s' ), user_name, body, prettify_dt( update.confirmed ) ) -%] [%- ELSE %] - [% tprintf( loc( 'Posted by %s at %s' ), update.name, prettify_epoch( update.confirmed_local.epoch ) ) | html -%] + [% tprintf( loc( 'Posted by %s at %s' ), update.name, prettify_dt( update.confirmed ) ) | html -%] [%- END -%] - [%- ", " _ loc( 'marked as fixed' ) IF update.mark_fixed %] - [%- ", " _ loc( 'reopened' ) IF update.mark_open OR update.problem_state == 'confirmed' %] - [%- ", " _ tprintf(loc( 'marked as %s' ), update.meta_problem_state) IF update.problem_state AND update.problem_state != 'confirmed' %] -[% END %] + [%- update_state = '' %] + [%- IF update.mark_fixed %][% update_state = loc( 'marked as fixed' ) %][% END %] + [%- IF update.mark_open %][% update_state = loc( 'reopened' ) %][% END %] + [%- IF !update_state && update.problem_state %] + [%- state = update.meta_problem_state %] + [%- IF c.cobrand.moniker == 'bromley' OR problem.bodies_str == '2482' %] + [%- 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 %] + [%- IF state == 'confirmed' AND global.last_state != '' %] + [%- update_state = loc( 'reopened' ) %] + [%- ELSIF state == 'investigating' %] + [%- update_state = loc( 'marked as investigating' ) %] + [%- ELSIF state == 'planned' %] + [%- update_state = loc( 'marked as planned' ) %] + [%- ELSIF state == 'in progress' %] + [%- update_state = loc( 'marked as in progress' ) %] + [%- ELSIF state == 'action scheduled' %] + [%- update_state = loc( 'marked as action scheduled' ) %] + [%- ELSIF state == 'closed' %] + [%- update_state = loc( 'marked as closed' ) %] + [%- ELSIF state == 'fixed' %] + [%- update_state = loc( 'marked as fixed' ) %] + [%- ELSIF state == 'unable to fix' %] + [%- update_state = loc( 'marked as unable to fix' ) %] + [%- ELSIF state == 'not responsible' %] + [%- update_state = loc( "marked as not the council's responsibility" ) %] + [%- ELSIF state == 'duplicate' %] + [%- update_state = loc( 'marked as a duplicate report' ) %] + [%- ELSIF state == 'internal referral' %] + [%- update_state = loc( 'marked as an internal referral' ) %] + [%- END %] + [%- END %] + [%- ", " _ update_state IF update_state != global.last_state %] + [%- global.last_state = update_state %] +[% END %] diff --git a/templates/web/default/reports/_list-entry.html b/templates/web/default/reports/_list-entry.html index 14863c4a1..445a5315f 100755 --- a/templates/web/default/reports/_list-entry.html +++ b/templates/web/default/reports/_list-entry.html @@ -1,6 +1,6 @@ <li><a href="[% c.uri_for('/report/' _ problem.id) %]">[% problem.title | html %]</a> - [% IF problem.councils > 1 %] <small>[% loc('(sent to both)') %]</small> [% END %] + [% IF problem.bodies_str_ids.size > 1 %] <small>[% loc('(sent to both)') %]</small> [% END %] [% IF c.cobrand.moniker != 'emptyhomes' %] - [% IF problem.councils == 0 %] <small>[% loc('(not sent to council)') %]</small> [% END %] + [% IF problem.bodies_str_ids.size == 0 %] <small>[% loc('(not sent to council)') %]</small> [% END %] [% END %] </li> diff --git a/templates/web/default/reports/body.html b/templates/web/default/reports/body.html index 134c9d4fc..2b19e5735 100755 --- a/templates/web/default/reports/body.html +++ b/templates/web/default/reports/body.html @@ -1,20 +1,16 @@ -[% IF c.cobrand.moniker == 'fixmystreet' OR c.cobrand.moniker == 'bromley'; - style = 'new'; - ELSE; - style = 'old'; - END; -%] [% IF ward %] - [% name = "$ward.name, $council.name" + [% name = "$ward.name, $body.name" thing = loc('ward') %] [% ELSE %] - [% name = council.name + [% name = body.name thing = loc('council') %] [% END %] -[% IF c.cobrand.is_council %] +[% IF c.cobrand.moniker == 'oxfordshire' %] + [% ward_text = 'View reports by division' %] +[% ELSIF c.cobrand.is_council %] [% ward_text = loc( 'View reports by ward' ) %] [% ELSE %] [% ward_text = loc( 'Wards of this council' ) %] @@ -24,7 +20,6 @@ PROCESS "maps/${map.type}.html"; INCLUDE 'header.html', title = tprintf(loc('%s - Summary reports'), name) - context = 'reports' bodyclass = 'mappage' rss = [ tprintf(loc('Problems within %s, FixMyStreet'), name), rss_url ] %] @@ -38,13 +33,17 @@ <h1 id="reports_heading"> [% IF ward %] - [% ward.name %]<span>, </span><a href="[% council_url %]">[% council.name %]</a> + [% ward.name %]<span>, </span><a href="[% body_url %]">[% body.name %]</a> [% ELSE %] - [% council.name %] + [% body.name %] [% END %] </h1> -[% IF council.generation_high == 10 AND c.cobrand.country == 'GB' %] +[% 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') %] Its area is now covered by <a href="/reports/Cornwall">Cornwall Council</a>. @@ -89,7 +88,7 @@ <section class="full-width"> [% INCLUDE column - problems = problems.${council.id} + problems = problems.${body.id} %] </section> diff --git a/templates/web/default/reports/index.html b/templates/web/default/reports/index.html index 76c2afcd2..e4b4c3033 100755 --- a/templates/web/default/reports/index.html +++ b/templates/web/default/reports/index.html @@ -22,17 +22,17 @@ </thead> <tbody> -[% FOREACH area IN areas_info_sorted %] +[% FOREACH body IN bodies %] <tr align="center" -[%- IF area.generation_high == 10 %] class="gone" +[%- IF NOT body.areas.size %] class="gone" [%- ELSIF ! (loop.count % 2) %] class="a" [%- END %]> -<td class="title"><a href="[% area.url %]">[% area.name %]</a></td> -<td class="data">[% open.${area.id}.new or 0 %]</td> -<td class="data">[% open.${area.id}.older or 0 %]</td> -<td class="data">[% open.${area.id}.unknown or 0 %]</td> -<td class="data">[% fixed.${area.id}.new or 0 %]</td> -<td class="data">[% fixed.${area.id}.old or 0 %]</td> +<td class="title"><a href="[% body.url(c) %]">[% body.name %]</a></td> +<td class="data">[% open.${body.id}.new or 0 %]</td> +<td class="data">[% open.${body.id}.older or 0 %]</td> +<td class="data">[% open.${body.id}.unknown or 0 %]</td> +<td class="data">[% fixed.${body.id}.new or 0 %]</td> +<td class="data">[% fixed.${body.id}.old or 0 %]</td> </tr> [% TRY %][% PROCESS "reports/_extras.html" %][% CATCH file %][% END %] [% END %] diff --git a/templates/web/default/static/about.html b/templates/web/default/static/about-en-gb.html index 9c319f051..9c319f051 100644 --- a/templates/web/default/static/about.html +++ b/templates/web/default/static/about-en-gb.html diff --git a/templates/web/default/tokens/confirm_problem.html b/templates/web/default/tokens/confirm_problem.html index b6d82968f..723d515e1 100644 --- a/templates/web/default/tokens/confirm_problem.html +++ b/templates/web/default/tokens/confirm_problem.html @@ -13,13 +13,12 @@ You can <a href="[% c.cobrand.base_url_for_report( problem ) %][% problem.url %] [% ELSE %] [% loc('You have successfully confirmed your problem'); - - IF problem.council; + IF problem.bodies_str; loc(' and <strong>we will now send it to the council</strong>'); - END; - + END; %]. +[% tprintf( - loc( '. You can <a href="%s%s">view the problem on this site</a>.' ), + loc( 'You can <a href="%s%s">view the problem on this site</a>.' ), c.cobrand.base_url_for_report( problem ), problem.url ); diff --git a/templates/web/emptyhomes/around/display_location.html b/templates/web/emptyhomes/around/display_location.html deleted file mode 100755 index 888c8717e..000000000 --- a/templates/web/emptyhomes/around/display_location.html +++ /dev/null @@ -1,56 +0,0 @@ -[% - - url_skip = c.uri_for( - '/report/new', - { - pc => pc - latitude => short_latitude, - longitude => short_longitude, - skipped => 1, - } - ); - - PROCESS "maps/${map.type}.html"; - - INCLUDE 'header.html', - title => loc('Viewing a location') - robots => 'noindex,nofollow'; -%] - -<form action="[% c.uri_for('/report/new') %]" method="post" name="mapForm" id="mapForm" enctype="multipart/form-data"> -[% IF c.req.params.map_override %] -<input type="hidden" name="map_override" value="[% c.req.params.map_override | html %]"> -[% END %] -<input type="hidden" name="pc" value="[% pc | html %]"> - -<input type="hidden" name="latitude" id="fixmystreet.latitude" value="[% short_latitude | html %]"> -<input type="hidden" name="longitude" id="fixmystreet.longitude" value="[% short_longitude | html %]"> - -[% map_html %] - -</div> -<div id="side"> - -<p id="text_map" class="banner"> - [% loc( 'To <strong>report a problem</strong>, simply click on the map at the correct location.' ) %] - [% - tprintf( - loc("<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this step</a>.</small>"), - url_skip - ) - %] - <span id="text_map_arrow"></span> -</p> - -</div> - -<div style="display:none" id="side-form"> -[% INCLUDE "report/new/fill_in_details_form.html" - js = 1, - report.used_map = 1 -%] -</div> - -</form> - -[% INCLUDE 'footer.html' %] diff --git a/templates/web/emptyhomes/around/extra_text.html b/templates/web/emptyhomes/around/extra_text.html new file mode 100644 index 000000000..a69aa8fbf --- /dev/null +++ b/templates/web/emptyhomes/around/extra_text.html @@ -0,0 +1,9 @@ +[% +# Need to ignore any county council +FOR coun IN all_areas.values; + SET council = coun IF coun.type != 'CTY'; +END; +%] +<a href="/local/[% c.cobrand.short_name(council) | lower %]/"> + Find out local news and stats for [% council.name %] +</a> diff --git a/templates/web/emptyhomes/faq/faq-cy.html b/templates/web/emptyhomes/faq/faq-cy.html index c462b9719..2945d24a9 100644 --- a/templates/web/emptyhomes/faq/faq-cy.html +++ b/templates/web/emptyhomes/faq/faq-cy.html @@ -9,8 +9,9 @@ <dd>Rhowch god post neu gyfeiriad yn y blwch ar y dudalen hafan ac fe gyflwynir map o’r ardal honno i chi. Cliciwch ar y man lle mae’r eiddo gwag, llenwch y manylion, llwythwch ffotograff i fyny os oes un gennych a phwyswch anfon. A dyna’r cyfan.</dd> <dt>A yw’r gwasanaeth ar gael am ddim?</dt> <dd>Ydy. Talwyd am gostau datblygu a chynnal y safle hwn gan yr Asiantaeth Tai Gwag a Shelter Cymru drwy haelioni eu cyllidwyr. Mae'r Asiantaeth Tai Gwag a Shelter Cymru yn elusennau cofrestredig, felly os ydych yn credu yn ein nodau a hoffech gyfrannu, mae croeso i chi wneud hynny. -<a href="https://secure.thebiggive.org.uk/donate/donate.php?charity_id=6651">Asiantaeth Tai Gwag</a> -/ <a href="http://cymraeg.sheltercymru.org.uk/Help/donating.aspx?ParentID=7&year=0&type=1&subcat=32&pageid=93">Shelter Cymru</a>.</dd> +<a href="https://secure.thebiggive.org.uk/donate/donate.php?charity_id=6651">Asiantaeth Tai Gwag</a>, +<a href="http://cymraeg.sheltercymru.org.uk/Help/donating.aspx?ParentID=7&year=0&type=1&subcat=32&pageid=93">Shelter Cymru</a>, +<a href="http://scotland.shelter.org.uk/donate">Shelter Scotland</a>.</dd> <dt>Ydych chi’n cael gwared ar gynnwys gwirion neu anghyfreithlon?</dt> <dd>Rydym yn cadw’r hawl i ddileu unrhyw adroddiadau neu ddiweddariadau yr ydym yn eu hystyried yn amhriodol.</dd> diff --git a/templates/web/emptyhomes/faq/faq-en-gb.html b/templates/web/emptyhomes/faq/faq-en-gb.html index e010ddae0..e6fbc25ea 100755 --- a/templates/web/emptyhomes/faq/faq-en-gb.html +++ b/templates/web/emptyhomes/faq/faq-en-gb.html @@ -14,8 +14,9 @@ it. </dd> <dt>Is it free?</dt> <dd>Yes. The costs of developing and running this site are shared between the Empty Homes Agency, Shelter Cymru and Shlter Scotland through the generosity of their funders. We are all registered charities, so if you believe in their aims and would like to make a contribution, please do: -<a href="https://secure.thebiggive.org.uk/donate/donate.php?charity_id=6651">Empty Homes</a> -or <a href="http://www.sheltercymru.org.uk/Help/donating.aspx?ParentID=7&year=0&type=1&subcat=32&pageid=93">Shelter Cymru</a>.</dd> +<a href="https://secure.thebiggive.org.uk/donate/donate.php?charity_id=6651">Empty Homes</a>, +<a href="http://www.sheltercymru.org.uk/Help/donating.aspx?ParentID=7&year=0&type=1&subcat=32&pageid=93">Shelter Cymru</a>, +<a href="http://scotland.shelter.org.uk/donate">Shelter Scotland</a>.</dd> <dt>Do you remove silly or illegal content?</dt> <dd>We reserve the right to remove any reports or updates which we consider to be inappropriate.</dd> diff --git a/templates/web/emptyhomes/front/stats.html b/templates/web/emptyhomes/front/stats.html index cbb26fee1..0dc03336f 100644 --- a/templates/web/emptyhomes/front/stats.html +++ b/templates/web/emptyhomes/front/stats.html @@ -1,27 +1,8 @@ -[% - USE Comma; - # Note - if we want to i18n the commas we should try - # 'Template::Plugin::Number::Format' -%] - -[% - stats = c.cobrand.front_stats_data(); - - new_text = - stats.recency == '1 week' - ? nget( - "<big>%s</big> report in past week", - "<big>%s</big> reports in past week", - stats.new - ) - : nget( - "<big>%s</big> report recently", - "<big>%s</big> reports recently", - stats.new - ); - -%] +[% USE Comma %] +[% stats = c.cobrand.front_stats_data %] <div id="front_stats"> - <div>[% tprintf( new_text, stats.new ) | comma %]</div> + <div>[% tprintf( loc("<big>%s</big> reports"), stats ) | comma %]</div> + <div><a href="/local/">[% loc('Find latest local and national news') %]</a></div> + <div id="eha-app-link"><a href="https://itunes.apple.com/gb/app/empty-homes-spotter/id482550587?mt=8">Get the Empty Homes Spotter App for iPhone</a></div> </div> diff --git a/templates/web/emptyhomes/header.html b/templates/web/emptyhomes/header.html index 96ad1040c..fea973468 100644 --- a/templates/web/emptyhomes/header.html +++ b/templates/web/emptyhomes/header.html @@ -5,26 +5,31 @@ <!--[if gt IE 8]><!--><html lang="[% lang_code %]"><!--<![endif]--> <head> - <link rel="stylesheet" type="text/css" href="[% version('/css/core.css') %]"> - <link rel="stylesheet" type="text/css" href="[% version('/cobrands/emptyhomes/css.css') %]"> +[% SET start = c.config.ADMIN_BASE_URL IF admin %] + + <link rel="stylesheet" type="text/css" href="[% start %][% version('/css/core.css') %]"> + <link rel="stylesheet" type="text/css" href="[% start %][% version('/cobrands/emptyhomes/css/css.css') %]"> [% INCLUDE 'common_header_tags.html', site_title = loc('Report Empty Homes') %] </head> <body> <div id="header"> - <a href="http://www.emptyhomes.com/"><img id="eha-logo" border="0" src="/i/eha-logo.jpeg" alt="Empty Homes Agency" width="91" height="71" align="left"></a> + <a href="http://www.emptyhomes.com/"><img id="eha-logo" border="0" src="/cobrands/emptyhomes/eha-logo.jpeg" alt="Empty Homes Agency" width="91" height="71" align="left"></a> <div> <small><em>in conjunction with</em></small> <br> - <a href="http://www.sheltercymru.org.uk/"><img border="0" src="/i/Sheltercymru47s.png" alt="Shelter Cymru" width="80" height="33" align="bottom"></a> - <a href="http://scotland.shelter.org.uk/housing_issues/more_homes/empty_homes"><img border="0" src="/i/SEHPlogo-bwS.png" alt="Scottish Empty Homes Partnership" width="131" height="40" align="bottom"></a> + <a href="http://www.sheltercymru.org.uk/"><img border="0" src="/cobrands/emptyhomes/Sheltercymru47s.png" alt="Shelter Cymru" width="80" height="33" align="bottom"></a> + <a href="http://scotland.shelter.org.uk/housing_issues/more_homes/empty_homes"><img border="0" src="/cobrands/emptyhomes/SEHPlogo-bwS.png" alt="Scottish Empty Homes Partnership" width="131" height="40" align="bottom"></a> + <a href="http://www.channel4.com/"><img src="/cobrands/emptyhomes/c4logo.png" border="0" alt="Channel 4" align="bottom" width="30" height="40"></a> + <a href="http://www.tigeraspect.co.uk/"><img src="/cobrands/emptyhomes/tiger-aspect.png" border="0" alt="Tiger Aspect" align="bottom" width="113" height="30"></a> </div> </div> <div id="navigation"> <ul> <li><a href="/">[% loc("Report a problem") %]</a></li> + <li><a href="/reports">[% loc("All reports") %]</a></li> <li><a href="/faq">[% loc("Help") %]</a></li> <li><a href="/about">[% loc('About us') %]</a></li> [% IF lang_code == 'en-gb' %] diff --git a/templates/web/emptyhomes/index.html b/templates/web/emptyhomes/index.html index be6a14b95..b8b0ce78a 100644 --- a/templates/web/emptyhomes/index.html +++ b/templates/web/emptyhomes/index.html @@ -1,68 +1,57 @@ -[% INCLUDE 'header.html', title => '' %] +[% INCLUDE 'header.html', title = '' %] -[% IF c.req.uri.host == 'reportemptyhomes.com' or c.req.uri.host == 'emptyhomes.matthew.fixmystreet.com' %] +<div class="grid-50"> + <h1 class="bl"> + <small>[% loc('Report, view, or discuss local problems') %]</small> + </h1> -<h2>Channel 4: The Great British Property Scandal</h2> + [% IF error %] + <p class="error">[% error %]</p> + [% END %] -<div class="video"><object id="flashObj" width="480" height="270" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"><param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9?isVid=1&isUI=1" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="@videoPlayer=1293919404001&playerID=1242807532001&playerKey=AQ~~,AAABIWs5YNk~,K8Yb_Dc0PlMA8gCUiCBbnEcXR1bU7HRm&domain=embed&dynamicStreaming=true" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://c.brightcove.com/services/viewer/federated_f9?isVid=1&isUI=1" bgcolor="#FFFFFF" flashVars="@videoPlayer=1293919404001&playerID=1242807532001&playerKey=AQ~~,AAABIWs5YNk~,K8Yb_Dc0PlMA8gCUiCBbnEcXR1bU7HRm&domain=embed&dynamicStreaming=true" base="http://admin.brightcove.com" name="flashObj" width="480" height="270" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" allowScriptAccess="always" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object></div> + [% PROCESS 'around/postcode_form.html' %] -<p> -Empty Homes were offical advisors to the recent empty homes TV series <strong>The Great British Property Scandal</strong>! -</p> + <div class="grid-50"> + [% INCLUDE 'front/stats.html' %] + </div> -<p> -The series highlighted the nearly two million British families who don’t have adequate housing, and the million-odd homes lying empty across the UK. -</p> - -<p> -The TV series launched a campaign for action and while this is running, our <a href="[% uri => '/' %]">www.reportemptyhomes.com</a> website has been merged with the campaign's reporting system so that all reports are gathered together and sent on to the local councils. Please use these links to report empty properties which you know of: -</p> - -<ul class="channel4"> - -<li><a href="http://www.channel4.com/programmes/the-great-british-property-scandal/articles/report-an-empty">Report an empty property</a></li> -<li><a href="http://cy.reportemptyhomes.com/">Rhoi gwybod am eiddo gwag</a></li> - -<li><a href="http://itunes.apple.com/gb/app/empty-homes-spotter/id482550587?mt=8"><img src="/i/appstore.png" hspace="5" alt="" align="right">Download the iPhone app</a> from the App Store.</li> - -</ul> - -[% ELSE %] - -[% IF error %] - <p class="error">[% error %]</p> -[% END %] - -<p id="expl"> - <strong>[% loc('Report empty properties') %]</strong> -</p> - -[% - question = loc("Enter a nearby GB postcode, or street name and area"); +[% + recent_photos = c.cobrand.recent_photos('front', 2); + probs = c.cobrand.recent(); %] +[% IF probs.size %] + <div class="grid-50"> + <h2 class="bl"><small>[% loc('Recently reported problems') %]</small></h2> + <ul id="nearby_lists"> + [% FOREACH p IN probs %] + <li> + <a href="/report/[% p.id %]">[% p.title | html %]</a> + <small>[% prettify_dt( p.confirmed, 1 ) %]</small> + </li> + [% END %] + </ul> + </div> +[% END %] -<form action="[% c.uri_for('/around') %]" method="get" name="postcodeForm" id="postcodeForm"> - <label for="pc">[% question %]:</label> - <span><input type="text" name="pc" value="" id="pc" size="10" maxlength="200"> - <input type="submit" value="[% loc('Go') %]" id="submit"> - </span> -</form> - -<div id="front_intro"> +</div> - <h2>[% loc('How to report a problem') %]</h2> - - <ol> - <li>[% question %]</li> - <li>[% loc('Locate the problem on a map of the area') %]</li> - <li>[% loc('Enter details of the problem') %]</li> - <li>[% loc('We send it to the council on your behalf') %]</li> - </ol> - - [% INCLUDE "front/stats.html" %] +<div class="grid-50"> + <div id="eha_steps"> + [% INCLUDE 'index-steps.html', + question = c.cobrand.enter_postcode_text %] + </div> + + [% IF recent_photos.size %] + <p id="front_photos"> + [% FOREACH p IN recent_photos; + photo = p.get_photo_params; + %] + <a href="/report/[% p.id %]"><img border="0" height="100" + src="[% photo.url_tn %]" alt="[% p.title | html %]" title="[% p.title | html %]"></a> + [% END %] + </p> + [% END %] </div> -[% END %] - [% INCLUDE 'footer.html' %] diff --git a/templates/web/emptyhomes/report/banner.html b/templates/web/emptyhomes/report/banner.html new file mode 100644 index 000000000..d473a777e --- /dev/null +++ b/templates/web/emptyhomes/report/banner.html @@ -0,0 +1,6 @@ +[% IF problem.is_fixed %] +<p class="banner" id="fixed"> + [% loc('This problem has been fixed') %]. +</p> +[% END %] + diff --git a/templates/web/emptyhomes/report/display.html b/templates/web/emptyhomes/report/display.html deleted file mode 100644 index 545a4ca44..000000000 --- a/templates/web/emptyhomes/report/display.html +++ /dev/null @@ -1,32 +0,0 @@ -[% - problem_title = loc('Viewing a problem'); - INCLUDE 'header.html' - title = problem_title - robots = 'noindex, nofollow' -%] - -<div id="side"> - -[% IF problem.is_fixed %] -<p class="banner" id="fixed"> - [% loc('This problem has been fixed') %]. -</p> -[% END %] - -<h1>Empty property report</h1> - -<p><em>[% problem.meta_line(c) | html %] -[% IF problem.council %] - [% IF problem.whensent %] - <small class="council_sent_info"><br>[% problem.duration_string(c) %]</small> - [% END %] -[% ELSE %] -<br><small>[% loc('Not reported to council') %]</small> -[% END %] - -</em></p> - -</div> - -[% INCLUDE 'footer.html' %] - diff --git a/templates/web/emptyhomes/report/new/councils_text_all.html b/templates/web/emptyhomes/report/new/councils_text_all.html index 8bdad1c1f..a2eae5efb 100644 --- a/templates/web/emptyhomes/report/new/councils_text_all.html +++ b/templates/web/emptyhomes/report/new/councils_text_all.html @@ -1,8 +1,8 @@ <p> [% tprintf( - loc('All the information you provide here will be sent to <strong>%s</strong>. On the site, we will show the subject and details of the problem, plus your name if you give us permission.'), - all_council_names.join( '</strong>' _ loc(' or ') _ '<strong>' ) + loc('All the information you provide here will be sent to <strong>%s</strong>.') + all_body_names.join( '</strong>' _ loc(' or ') _ '<strong>' ) ); %] </p> diff --git a/templates/web/emptyhomes/report/new/councils_text_none.html b/templates/web/emptyhomes/report/new/councils_text_none.html index dbe9cd510..088e6fa1d 100644 --- a/templates/web/emptyhomes/report/new/councils_text_none.html +++ b/templates/web/emptyhomes/report/new/councils_text_none.html @@ -3,7 +3,7 @@ nget( "We do not yet have details for the council that covers this location.", "We do not yet have details for the councils that cover this location.", - all_councils.size + all_areas.size ); %] [% loc("If you submit a report here it will be left on the site, but not reported to the council – please still leave your report, so that we can show to the council the activity in their area."); %] diff --git a/templates/web/emptyhomes/report/new/fill_in_details_form.html b/templates/web/emptyhomes/report/new/fill_in_details_form.html new file mode 100644 index 000000000..b269267e1 --- /dev/null +++ b/templates/web/emptyhomes/report/new/fill_in_details_form.html @@ -0,0 +1,157 @@ +<h1>[% loc('Reporting a problem') %]</h1> + +[% IF report.used_map %] + [% IF partial_token %] + <p id="unknown">[% loc('Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit.') %]</p> + [% END %] +<p>[% loc('You have located the problem at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. ') %]</p> +[% END %] + +[% IF js %] + <p id="councils_text">[% + tprintf( + loc('All the information you provide here will be sent to <strong>%s</strong>.'), + loc('the local council') + ); + %] + </p> +[% ELSE %] + [% PROCESS 'report/new/councils_text.html' %] +[% END %] + +<p> +[% IF report.used_map %] + [% INCLUDE 'report/new/fill_in_details_text.html' %] +[% ELSE %] + [% loc('Please fill in the form below with details of the problem, and describe the location as precisely as possible in the details box.') %] +[% END %] +</p> + +[% INCLUDE 'errors.html' %] + +<div id="problem_form"> + +[% INCLUDE 'report/new/form_heading.html' %] + +<div class="fieldset"> + +[% IF field_errors.bodies %] + <div class='form-error'>[% field_errors.bodies %]</div> +[% END %] + +<div id="form_sign_in_yes"> + +<h3>[% loc('Public information (shown on site)') %]</h3> + +<p>[% loc('Please do not give address or personal information in this section.') %]</p> + +[% IF js %] + <div class="form-field" id="form_category_row"> + <label for="form_category">[% loc('Category:') %]</label> + <select name="category" id="form_category" required><option>[% loc('Loading...') %]</option></select> + </div> +[% ELSE %] + [% IF category_options.size %] + [% IF field_errors.category %] + <div class='form-error'>[% field_errors.category %]</div> + [% END %] + + <div class="form-field"> + [% PROCESS "report/new/category.html" %] + </div> + [% END %] +[% END %] + +[% IF field_errors.title %] + <div class='form-error'>[% field_errors.title %]</div> +[% END %] + +<div class="form-field"> + <label for="form_title">[% loc('Subject:') %]</label> + <input type="text" value="[% report.title | html %]" name="title" id="form_title" size="25" required> +</div> + +[% IF field_errors.detail %] + <div class='form-error'>[% field_errors.detail %]</div> +[% END %] + +<div class="form-field"> + <label for="form_detail">[% loc('Details:') %]</label> + <textarea name="detail" id="form_detail" rows="7" cols="26" required>[% report.detail | html %]</textarea> +</div> + +[% IF c.cobrand.allow_photo_upload %] + [% IF field_errors.photo %] + <div class='form-error'>[% field_errors.photo %]</div> + [% END %] + + <div class='form-field'> + [% IF upload_fileid || report.photo %] + <p>[% loc('You have already attached a photo to this report, attaching another one will replace it.') %]</p> + [% IF upload_fileid %] + <input type="hidden" name="upload_fileid" value="[% upload_fileid %]" /> + [% END %] + [% IF report.photo %] + <img align="right" src="/photo/[% report.id %].jpeg" hspace="5"> + [% END %] + [% END %] + + <label for="form_photo">[% loc('Photo:') %]</label> + <input type="file" name="photo" id="form_photo" style="width:20em"> + </div> +[% END %] + +</div> + +<div id="form_sign_in_no"> + +<h3>[% loc('Private information (not shown on site)') %]</h3> + +[% IF field_errors.address %] + <div class='form-error'>[% field_errors.address %]</div> +[% END %] + +<div class="form-field"> + <label for="form_address">[% loc('Property address:') %]</label> + <textarea name="address" id="form_address" rows="7" cols="26">[% report.extra.address | html %]</textarea> +</div> + + [% IF field_errors.name %] + <div class='form-error'>[% field_errors.name %]</div> + [% END %] + + <div class="form-field"> + <label for="form_name">[% loc('Your name:') %]</label> + <input type="text" required value="[% report.name | html %]" name="name" id="form_name" size="25"> + </div> + + [% IF field_errors.email %] + <div class='form-error'>[% field_errors.email %]</div> + [% END %] + + <div class="form-field"> + <label for="form_email">[% loc('Your email:') %]</label> + <input type="email" value="[% report.user.email | html %]" name="email" id="form_email" size="25" required> + </div> + + <div class="form-field"> + <label for="form_phone">[% loc('Phone:') %]</label> + <input type="text" value="[% report.user.phone | html %]" name="phone" id="form_phone" size="15"> + <small>[% loc('(optional)') %]</small> + </div> + + <p> + <input type="submit" value="[% loc('Submit') %]"> + </p> + +</div> + +[% IF partial_token %] + <input type="hidden" name="partial" value="[% partial_token.token %]"> +[% END %] + +<input type="hidden" name="submit_problem" value="1"> + +</div> +</div> + diff --git a/templates/web/emptyhomes/reports/_ward-list.html b/templates/web/emptyhomes/reports/_ward-list.html new file mode 100755 index 000000000..e69de29bb --- /dev/null +++ b/templates/web/emptyhomes/reports/_ward-list.html diff --git a/templates/web/emptyhomes/reports/body.html b/templates/web/emptyhomes/reports/body.html deleted file mode 100755 index 8ba9bf1ca..000000000 --- a/templates/web/emptyhomes/reports/body.html +++ /dev/null @@ -1,73 +0,0 @@ -[% IF ward %] - [% name = "$ward.name, $council.name" - thing = loc('ward') - %] -[% ELSE %] - [% name = council.name - thing = loc('council') - %] -[% END %] - -[% - INCLUDE 'header.html', - title = tprintf(loc('%s - Summary reports'), name) - context = 'reports' -%] - -[% IF children.size %] -<h2 style="clear:right">[% loc('Wards of this council') %]</h2> -<p>[% loc('Follow a ward link to view only reports within that ward.') %]</p> -<ul> -[% FOR child IN children.values.sort('name') %] -<li><a href="[% child.url %]">[% child.name %]</a></li> -[% END %] -</ul> -[% END %] - -<div id="side"> - -[% IF council.generation_high == 10 AND c.cobrand.country == 'GB' %] -<p id="unknown">This council no longer exists. -[% IF council.name.match('Penwith|Kerrier|Carrick|Restormel|Caradon|North Cornwall') %] -Its area is now covered by <a href="/reports/Cornwall">Cornwall Council</a>. -[% ELSIF council.name.match('Durham|Easington|Sedgefield|Teesdale|Wear Valley|Derwentside|Chester le Street') %] -Its area is now covered by <a href="/reports/Durham+County">Durham County Council</a>. -[% ELSIF council.name.match('Blyth Valley|Wansbeck|Castle Morpeth|Tynedale|Alnwick|Berwick upon Tweed') %] -Its area is now covered by <a href="/reports/Northumberland">Northumberland County Council</a>. -[% ELSIF council.name.match('North Shropshire|Oswestry|Shrewsbury and Atcham|South Shropshire|Bridgnorth') %] -Its area is now covered by <a href="/reports/Shropshire">Shropshire Council</a>. -[% ELSIF council.name.match('Salisbury|West Wiltshire|Kennet|North Wiltshire') %] -Its area is now covered by <a href="/reports/Wiltshire">Wiltshire Council</a>. -[% ELSIF council.name.match('Ellesmere Port and Neston|Vale Royal|Chester') %] -Its area is now covered by <a href="/reports/Cheshire+West+and+Chester">Cheshire West and Chester Council</a>. -[% ELSIF council.name.match('Macclesfield|Congleton|Crewe and Nantwich') %] -Its area is now covered by <a href="/reports/Cheshire+East">Cheshire East Council</a>. -[% ELSIF council.name.match('Mid Bedfordshire|South Bedfordshire') %] -Its area is now covered by <a href="/reports/Central+Bedfordshire">Central Bedfordshire Council</a>. -[% ELSIF council.name.match('Cheshire') %] -Its area is now covered by <a href="/reports/Cheshire+West+and+Chester">Cheshire West and Chester Council</a> or -<a href="/reports/Cheshire+East">Cheshire East Council</a>. -[% ELSIF council.name.match('Bedfordshire') %] -Its area is now covered by <a href="/reports/Bedford">Bedford Borough Council</a> or -<a href="/reports/Central+Bedfordshire">Central Bedfordshire Council</a>. -[% END %] -</p> -[% END %] - -[% IF c.cobrand.all_councils_report %] - [% tprintf( loc('This is a summary of all reports for one %s.'), thing ) %] -[% ELSE %] - [% tprintf( loc('This is a summary of all reports for this %s.'), thing ) %] -[% END %] - -[% IF ward %] -[% tprintf( loc('You can <a href="%s">view all reports for the council</a> or <a href="/reports">show all councils</a>.'), council_url ) %] -[% ELSE %] -[% loc('You can <a href="/reports">show all councils</a>.') %] -[% END %] - -<h2>[% name %]</h2> - -</div> -[% INCLUDE 'footer.html' %] - diff --git a/templates/web/emptyhomes/reports/index.html b/templates/web/emptyhomes/reports/index.html index db506679e..8b8704134 100755 --- a/templates/web/emptyhomes/reports/index.html +++ b/templates/web/emptyhomes/reports/index.html @@ -1,8 +1,7 @@ [% INCLUDE 'header.html', title = loc('Summary reports') %] <p> -[% loc('This is a summary of all reports on this site; select a particular council to see the reports sent there.') %] -[% loc('Greyed-out lines are councils that no longer exist.') %] +[% loc("This is a summary of all reports on this site; select a particular council to see the empty homes news for that area.") %] </p> <table cellpadding="3" cellspacing="1" border="0"> @@ -10,22 +9,19 @@ <th>[% loc('Name') %]</th> <th>[% loc('New problems') %]</th> <th>[% loc('Older problems') %]</th> -<th>[% loc('Recently fixed') %]</th> -<th>[% loc('Older fixed') %]</th> </tr> -[% FOREACH area IN areas_info_sorted %] +[% FOREACH body IN bodies %] <tr align="center" -[%- IF area.generation_high == 10 %] class="gone" +[%- IF NOT body.areas.size %] class="gone" [%- ELSIF loop.count % 2 %] class="a" [%- END -%] > -<td align="left">[% area.name %]</td> -<td>[% open.${area.id}.new or 0 %]</td> -<td>[% (open.${area.id}.older or 0) + (open.${area.id}.unknown or 0) %]</td> -<td>[% fixed.${area.id}.new or 0 %]</td> -<td>[% fixed.${area.id}.old or 0 %]</td> +<td align="left"><a href="/local/[% c.cobrand.short_name(body) | lower %]/">[% body.name %]</a></td> +<td>[% open.${body.id}.new or 0 %]</td> +<td>[% (open.${body.id}.older or 0) + (open.${body.id}.unknown or 0) + (fixed.${body.id}.new or 0) + (fixed.${body.id}.old or 0) %]</td> </tr> + [% END %] </table> diff --git a/templates/web/emptyhomes/static/about-cy.html b/templates/web/emptyhomes/static/about-cy.html new file mode 100644 index 000000000..dab6cefea --- /dev/null +++ b/templates/web/emptyhomes/static/about-cy.html @@ -0,0 +1,44 @@ +[% INCLUDE 'header.html', title => loc('About us') %] + +<h1>[% loc('About us') %]</h1> + +<div style="float: left; width: 48%;"> + + <h2>Yr Asiantaeth Tai Gwag</h2> + +<p>Mae'r Asiantaeth Tai Gwag yn elusen ymgyrchu annibynnol. Nid ydym yn rhan +o'r llywodraeth, ac nid oes gennym unrhyw gysylltiadau ffurfiol â chynghorau +lleol er ein bod yn cydweithio â'r naill a'r llall. Rydym yn bodoli er mwyn +amlygu gwastraff yr eiddo gwag ac yn gweithio gyda eraill er mwyn dyfeisio a +hyrwyddo atebion cynaliadwy er mwyn adfer eiddo gwag yn eiddo y mae pobl yn byw +ynddynt eto. Rydym wedi'n lleoli yn Llundain ond rydym yn gweithio ledled +Lloegr. Rydym hefyd yn gweithio mewn partneriaeth ag elusennau eraill ledled y +DU.</p> + +</div> + +<div style="float: right; width:48%;"> + + <h2>Shelter Cymru</h2> + +<p>Shelter Cymru yw’r elusen yng Nghymru ar gyfer pobl a chartrefi ac +rydym eisiau i bawb yng Nghymru gael cartref addas. Credwn fod cartref yn hawl +sylfaenol a’i fod yn hanfodol i iechyd a lles pobl a chymunedau. Rydym +yn gweithio dros bobl sydd mewn angen am dai. Mae gennym swyddfeydd ar draws +Cymru ac rydym yn atal pobl rhag colli eu cartrefi drwy gynnig cyngor +annibynnol, cyfrinachol, am ddim. Pan fo’r angen, rydym yn herio’n +adeiladol ar ran pobl er mwyn sicrhau eu bod yn cael eu cynorthwyo’n +gywir ac i wella ymarfer a dysgu. Mae Shelter Cymru yn credu y gall gwneud +gwell defnydd o gartrefi gwag gyfrannu’n sylweddol at y ddaprariaeth o +dai fforddiadwy yng Nghymru. + + <a href="http://www.sheltercymru.org.uk/shelter/advice/pdetail.asp?cat=20"> + Gwybodaeth bellach am ein gwaith ar gartrefi gwag</a>. + + </p> + +</div> + +<br clear="both"> + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/emptyhomes/static/about-en-gb.html b/templates/web/emptyhomes/static/about-en-gb.html new file mode 100644 index 000000000..e9eeea103 --- /dev/null +++ b/templates/web/emptyhomes/static/about-en-gb.html @@ -0,0 +1,62 @@ +[% INCLUDE 'header.html', title => loc('About us') %] + +<h1>[% loc('About us') %]</h1> + +<div style="float: left; width: 31%; margin-right: 4%"> + + <h2>The Empty Homes Agency</h2> + + <p>The Empty Homes agency is an independent campaigning charity. We + are not part of government, and have no formal links with local councils + although we work in cooperation with both. We exist to highlight the waste + of empty property and work with others to devise and promote sustainable + solutions to bring empty property back into use. We are based in London but + work across England. We also work in partnership with other charities across + the UK.</p> + +</div> + +<div style="float: left; width: 31%;"> + + <h2>Shelter<br>Cymru</h2> + + <p>Shelter Cymru is Wales’ people and homes charity and wants + everyone in Wales to have a decent home. We believe a home is a fundamental + right and essential to the health and well-being of people and communities. + We work for people in housing need. We have offices all over Wales and + prevent people from losing their homes by offering free, confidential and + independent advice. When necessary we constructively challenge on behalf of + people to ensure they are properly assisted and to improve practice and + learning. We believe that bringing empty homes back into use can make a + significant contribution to the supply of affordable homes in Wales. + + <a href="http://www.sheltercymru.org.uk/shelter/advice/pdetail.asp?cat=20"> + Further information about our work on empty homes</a>. + + </p> + +</div> + +<div style="float: right; width: 31%;"> + + <h2>The Scottish Empty Homes Partnership</h2> + +<p>The Scottish Empty Homes Partnership works with Scottish Local Authorities +and their partners to help them bring the 23,000+ long term private sector +empty homes in Scotland back into use. In existence since June 2010, the +Partnership is funded by Scottish Government and hosted by Shelter Scotland. + +<p>We provide training for empty homes officers, share best practice, link +industry professionals and provide consultancy and advice to councils and +others working to bring private sector empty homes back into use. We aim to +highlight the opportunities for communities in bringing empty homes back into +use. Based on our experience we also make recommendations for changes in both +practice and policy on local and national levels. To find out more about the +work we do please +<a href="http://scotland.shelter.org.uk/housing_issues/empty_homes">visit our webpage</a>. + +</div> + +<br clear="both"> + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/emptyhomes/static/about.html b/templates/web/emptyhomes/static/about.html deleted file mode 100644 index 880f69b98..000000000 --- a/templates/web/emptyhomes/static/about.html +++ /dev/null @@ -1,43 +0,0 @@ -[% INCLUDE 'header.html', title => loc('About us') %] - -<h1>[% loc('About us') %]</h1> - -<div style="float: left; width: 48%;"> - - <h2>[% loc('The Empty Homes Agency') %]</h2> - - <p>[% loc('The Empty Homes agency is an independent campaigning charity. We - are not part of government, and have no formal links with local councils - although we work in cooperation with both. We exist to highlight the waste - of empty property and work with others to devise and promote sustainable - solutions to bring empty property back into use. We are based in London but - work across England. We also work in partnership with other charities across - the UK.') %]</p> - -</div> - -<div style="float: right; width:48%;"> - - <h2>[% loc('Shelter Cymru') %]</h2> - - <p>[% loc('Shelter Cymru is Wales’ people and homes charity and wants - everyone in Wales to have a decent home. We believe a home is a fundamental - right and essential to the health and well-being of people and communities. - We work for people in housing need. We have offices all over Wales and - prevent people from losing their homes by offering free, confidential and - independent advice. When necessary we constructively challenge on behalf of - people to ensure they are properly assisted and to improve practice and - learning. We believe that bringing empty homes back into use can make a - significant contribution to the supply of affordable homes in Wales.') %] - - <a href="http://www.sheltercymru.org.uk/shelter/advice/pdetail.asp?cat=20"> - [% loc('Further information about our work on empty homes.') %] - </a> - - </p> - -</div> - -<br clear="both"> - -[% INCLUDE 'footer.html' %]
\ No newline at end of file diff --git a/templates/web/emptyhomes/tokens/confirm_problem.html b/templates/web/emptyhomes/tokens/confirm_problem.html index 7bcf8acdf..5e77ca59f 100644 --- a/templates/web/emptyhomes/tokens/confirm_problem.html +++ b/templates/web/emptyhomes/tokens/confirm_problem.html @@ -2,7 +2,7 @@ <h1>[% loc('Confirmation') %]</h1> -[% IF problem.council %] +[% IF problem.bodies_str %] <p>[% loc( 'Thank you for reporting an empty property on ReportEmptyHomes.com. We have emailed the lead officer for empty homes in the council responsible with details, and asked them to do whatever they can to get the empty property back into use as soon as possible.' diff --git a/templates/web/emptyhomes/tracking_code.html b/templates/web/emptyhomes/tracking_code.html deleted file mode 100644 index 73526d3bd..000000000 --- a/templates/web/emptyhomes/tracking_code.html +++ /dev/null @@ -1,12 +0,0 @@ -<!-- Piwik --> -<script type="text/javascript"> -var pkBaseURL = (("https:" == document.location.protocol) ? "https://piwik.mysociety.org/" : "http://piwik.mysociety.org/"); -document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E")); -</script><script type="text/javascript"> -try { -var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 12); -piwikTracker.trackPageView(); -piwikTracker.enableLinkTracking(); -} catch( err ) {} -</script><noscript><img width=1 height=1 src="http://piwik.mysociety.org/piwik.php?idsite=12" style="border:0" alt=""></noscript> -<!-- End Piwik Tag --> diff --git a/templates/web/fiksgatami/nn/reports/index.html b/templates/web/fiksgatami/nn/reports/index.html index 3cbb2bf8d..05296ba76 100755 --- a/templates/web/fiksgatami/nn/reports/index.html +++ b/templates/web/fiksgatami/nn/reports/index.html @@ -14,18 +14,18 @@ <th>[% loc('Older fixed') %]</th> </tr> -[% FOREACH area IN areas_info_sorted %] -[% NEXT IF area.id == 301 %] +[% FOREACH body IN bodies %] +[% NEXT IF body.id == 301 %] <tr align="center" [%- IF loop.count % 2 %] class="a" [%- END -%] > -<td align="left"><a href="[% area.url %]">[% area.name %]</a></td> -<td>[% open.${area.id}.new or 0 %]</td> -<td>[% open.${area.id}.older or 0 %]</td> -<td>[% open.${area.id}.unknown or 0 %]</td> -<td>[% fixed.${area.id}.new or 0 %]</td> -<td>[% fixed.${area.id}.old or 0 %]</td> +<td align="left"><a href="[% body.url(c) %]">[% body.name %]</a></td> +<td>[% open.${body.id}.new or 0 %]</td> +<td>[% open.${body.id}.older or 0 %]</td> +<td>[% open.${body.id}.unknown or 0 %]</td> +<td>[% fixed.${body.id}.new or 0 %]</td> +<td>[% fixed.${body.id}.old or 0 %]</td> </tr> [% END %] </table> diff --git a/templates/web/fiksgatami/reports/index.html b/templates/web/fiksgatami/reports/index.html index 1ba90ece3..3235b96c4 100755 --- a/templates/web/fiksgatami/reports/index.html +++ b/templates/web/fiksgatami/reports/index.html @@ -14,17 +14,17 @@ <th>[% loc('Older fixed') %]</th> </tr> -[% FOREACH area IN areas_info_sorted %] +[% FOREACH body IN bodies %] <tr align="center" [%- IF loop.count % 2 %] class="a" [%- END -%] > -<td align="left"><a href="[% area.url %]">[% area.name %]</a></td> -<td>[% open.${area.id}.new or 0 %]</td> -<td>[% open.${area.id}.older or 0 %]</td> -<td>[% open.${area.id}.unknown or 0 %]</td> -<td>[% fixed.${area.id}.new or 0 %]</td> -<td>[% fixed.${area.id}.old or 0 %]</td> +<td align="left"><a href="[% body.url(c) %]">[% body.name %]</a></td> +<td>[% open.${body.id}.new or 0 %]</td> +<td>[% open.${body.id}.older or 0 %]</td> +<td>[% open.${body.id}.unknown or 0 %]</td> +<td>[% fixed.${body.id}.new or 0 %]</td> +<td>[% fixed.${body.id}.old or 0 %]</td> </tr> [% END %] </table> diff --git a/templates/web/fixamingata/contact/address.html b/templates/web/fixamingata/contact/address.html new file mode 100644 index 000000000..7ee7f51af --- /dev/null +++ b/templates/web/fixamingata/contact/address.html @@ -0,0 +1,9 @@ +<div class="contact-details"> +<p>FixaMinGata är en tjänst som tillhandahålls av Föreningen Sambruk, en +förening med ca 100 medlemskommuner, med gemensamt intresse av e-tjänster. +Du kan kontakta Föreningen Sambruk via post:</p> + +<p>Föreningen Sambruk<br> +c/o Sandvikens kommun<br> +811 80 Sandviken</p> +</div> diff --git a/templates/web/fixamingata/contact/blurb.html b/templates/web/fixamingata/contact/blurb.html new file mode 100644 index 000000000..2e5054bcf --- /dev/null +++ b/templates/web/fixamingata/contact/blurb.html @@ -0,0 +1,7 @@ +<p> +Rapportera <strong>inte</strong> problem i din närmiljö genom det här formuläret. Breven går till Fixa Min Gata i stället för din kommun. Vill du rapportera ett problem i din närmiljö måste du <a href="/">gå till framsidan</a> och följa instruktionerna där. +</p> + +<p> +Vi vill gärna höra vad du tycker om FixaMinGata. Fyll i formuläret nedan och skicka in. +</p> diff --git a/templates/web/fixamingata/faq/faq-sv.html b/templates/web/fixamingata/faq/faq-sv.html new file mode 100755 index 000000000..c21b3b45a --- /dev/null +++ b/templates/web/fixamingata/faq/faq-sv.html @@ -0,0 +1,120 @@ +[% INCLUDE 'header.html', title => loc('Frequently Asked Questions'), bodyclass => 'twothirdswidthpage' %] + +<div class="sticky-sidebar"> + <aside> + <ul class="plain-list"> + <li><a href="#faq">Vanliga frågor</a></li> + <li><a href="#practical">Praktiska frågor</a></li> + <li><a href="#organisation">Organisation</a></li> + <li><a href="#pul">Personuppgiftsombud</a></li> + <li><a href="/privacy">Offentlighet och kakor</a></li> + </ul> + </aside> +</div> + +<h1><a name="faq"></a>Vanliga frågor</h1> + <dl> + <dt>Vad är FixaMinGata?</dt> + <dd>FixaMinGata är en e-tjänst som hjälper människor se, diskutera och +till kommunen rapportera problem i deras närmiljö på ett enkelt sätt genom att +markera problemen på en karta. Tjänsten bygger på en förlaga från Storbritannien +där tjänsten lanserades i Februari 2007. I Norge lanserades den 2011 och i +Sverige 2013. +</dd> + <dt>Hur kommer jag i kontakt med FixaMinGata?</dt> + <dd>Använd vårt <a href="/contact">kontaktformulär</a>.</dd> + <dt>Vilken typ av problem ska jag rapportera i FixaMinGata?</dt> + <dd>FixaMinGata är främst anpassad för att rapportera fysiska +problem i din närmiljö, exempelvis sådant som är <strong>trasigt eller +smutsigt, sådant som behöver underhållas, lagas, städas eller rensas</strong>, +till exempel: + + <ul><li>Övergivna bilar och cyklar + <li>Graffiti + <li>Netskräpning + <li>Gatustädning, exempelvis trasigt glas på en cykelbana + <li>Trasiga gatulysen + <li>Hål i vägar och gångbanor + </ul> + </dd> + + <dt>Vad är inte FixaMinGata till för?</dt> + <dd>FixaMinGata är inte lämpligt för andra typer av problem än de som + anges ovan. Du måste kontakta din kommun eller fastighetsägare direkt för problem i stil + med: + + <ul> + <li>Brådskande och akuta problem + <li>Oljud i din närmiljö + <li>Brand och rök + <li>Förslag på nya vägar, farthinder, etc. + <li>Klaga på dina grannar + <li>Klaga på din kommun + <li>Droger, djurplågeri, stöld, eller andra kriminella aktiviteter. + </ul> + </dd> + + <dt>Hur använder jag e-tjänsten?</dt> + <dd>Efter att du angivit postnummer eller adress ser du en karta +över närområdet. Du kan se de problem som redan har rapporterats, eller +rapportera nya genom att klicka på kartan där problemet finns. +</dd> + <dt>Hur löses problem?</dt> + <dd>Problem som rapporteras skickas till berörd kommun via epost +eller direkt till deras datorsystem. Kommunen hanterar sedan problemet på +det sättet de vanligen arbetar med problem, exempelvis genom att delegera +det till rätt enhet inom kommunen som får i uppdrag att lösa problemet. +</dd> + <dt>Är det gratis?</dt> + <dd>Den här e-tjänsten är gratis att använda. Tjänsten tillhandahålls +av <a href="http://sambruk.se/">Föreningen Sambruk</a>, en förening för +kommunal samverkan kring e-tjänster. Totalt ingår runt 100 kommuner och +landsting i Sambruk.</dd> + + <dt>Kan jag använda FixaMinGata på min mobil?</dt> + <dd> + <p>FixaMinGata ska fungera direkt på din mobiltelefon och anpassar +storleken på skärmen automatiskt.</p> + </dd> + + </dl> + + <h2><a name="practical"></a>Praktiska frågor</h2> + <dl> + <dt>Jag arbetar på en kommun och är intresserad av att veta var ni skickar rapporter.</dt> + <dd>Du får gärna <a href="/contact">kontakta oss</a> så kan vi ge +information om var rapporter går idag. Du kan också kontakta oss för att +uppdatera de adresser vi använder.</dd> + + <dt>Jag arbetar på en kommun och vill få in rapporter från FixaMinGata i vårt verksamhetssystem.</dt> + <dd>FixaMinGata kan skicka rapporter till ert verksamhetssystem +via epost eller via ett automatiskt gränssnitt som kallas Open 311. De +flesta verksamhetssystem kan anpassas till detta för en mindre kostnad. +Du får gärna <a href="/contact">kontakta oss</a> så kan vi ge mer information +och hjälpa dig i kommunikationen med berörda parter.</dd> + </dl> + + <h2><a name="organisation"></a>Organisation</h2> + <dl> + <dt>Vem tillhandahåller FixaMinGata?</dt> + + <dd>Den här e-tjänsten tillhandahålls +av <a href="http://sambruk.se/">Föreningen Sambruk</a>, en förening för +kommunal samverkan kring e-tjänster. Totalt ingår runt 100 kommuner och +landsting i Sambruk. Tjänsten togs fram i samarbete med <a href="http://kivos.se/">KIVOS</a> och <a href="http://ffkp.se/">Föreningen fri kultur och programvara</a>.</dd> + + <dt>Finns källkoden tillgänglig?</dt> + <dd> +Programvaran bakom den här tjänsten är öppen programvara och tillgänglig +under Affero GPL (AGPL). Du kan <a href="http://github.com/mysociety/fixmystreet">ladda ner</a> källkoden och hjälpa oss utveckla den. Du är också välkommen att använda den i dina egna projekt! +</dd> + </dl> + <h2><a name="pul"></a>Personuppgiftsombud</h2> + <dl> + <dt>Vem är personuppgiftsombud för FixaMinGata?</dt> + + <dd>Personuppgiftsombud är Claes-Olof Olsson som du kan kontakta via vårt <a href="/contact">kontaktformulär.</a></dd> + </dl> + + +[% INCLUDE 'footer.html' pagefooter = 'yes' %] diff --git a/templates/web/fixamingata/footer.html b/templates/web/fixamingata/footer.html new file mode 100644 index 000000000..d196d1c6d --- /dev/null +++ b/templates/web/fixamingata/footer.html @@ -0,0 +1,76 @@ + [% IF pagefooter %] + <footer role="content-info"> + <div class="tablewrapper bordered"> + <div id="footer-mobileapps"> + </div> + <div id="footer-help"> + + <ul> + <li> + <h4>Sekretess och kakor</h4> + <p>Vill du veta mer om det juridiska? Läs vår information <a href="/privacy">om sekretess och kakor</a></p> + </li> + <li> + <h4>[% loc('Are you a developer?') %]</h4> + <p>[% loc('Would you like to contribute to FixMyStreet? Our code is open source and <a href="http://github.com/mysociety/fixmystreet">available on GitHub</a>.') %]</p> + </li> + <li> + <h4>[% loc('Are you from a council?') %]</h4> + <p>Vill du veta mer om Fixa Min Gata eller hur det kan fungera för er kommun? <a href="/kommun">Läs mer om Fixa Min Gata för kommuner</a>.</p> + </li> + </ul> + </div> + </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="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> + <li><a href="javascript:UserVoice.showPopupWidget();">Lämna förslag</a></li> + </ul> + </div> + </div> + </div> + +<!-- [% INCLUDE 'debug_footer.html' %] --> + </div> <!-- .wrapper --> +<script type="text/javascript"> + var uvOptions = {}; + (function() { + var uv = document.createElement('script'); uv.type = 'text/javascript'; uv.async = true; + uv.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'widget.uservoice.com/vflswzMnwvfytYBz1rNw.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(uv, s); + })(); +</script> +</body> + +<!-- Piwik --> +<script type="text/javascript"> +var pkBaseURL = (("https:" == document.location.protocol) ? "https://piwik.ffkp.se/" : "http://piwik.ffkp.se/"); +document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E")); +</script><script type="text/javascript"> +try { +var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 12); +piwikTracker.trackPageView(); +piwikTracker.enableLinkTracking(); +} catch( err ) {} +</script><noscript><p><img src="http://piwik.ffkp.se/piwik.php?idsite=12" style="border:0" alt="" /></p></noscript> +<!-- End Piwik Tracking Code --> +<!-- Note, Piwik really should be changed so that we have one for beta and one for www --> + +</html> diff --git a/templates/web/fixamingata/header_extra.html b/templates/web/fixamingata/header_extra.html new file mode 100644 index 000000000..b3dec58a2 --- /dev/null +++ b/templates/web/fixamingata/header_extra.html @@ -0,0 +1 @@ +<link rel="Shortcut Icon" type="image/x-icon" href="/cobrands/fixamingata/favicon.ico"> diff --git a/templates/web/fixamingata/open311/index.html b/templates/web/fixamingata/open311/index.html new file mode 100644 index 000000000..995069ed2 --- /dev/null +++ b/templates/web/fixamingata/open311/index.html @@ -0,0 +1,146 @@ +[% INCLUDE 'header.html', title => 'Open311' %] + +<h1>[% loc('Open311 API for the mySociety FixMyStreet server') %]</h1> + +[% IF error %] +<p>[% tprintf( loc('Note: <strong>%s</strong>'), error ) %]</p> +[% END %] + +<p>[% loc('At the moment only searching for and looking at reports work.') %]</p> +<p>[% loc('This API implementation is work in progress and not yet stabilized. It will change without warnings in the future.') %]</p> + +<ul> +<li><a rel="nofollow" href="http://www.open311.org/">[% loc('Open311 initiative web page') %]</a></li> +<li><a rel="nofollow" href="http://wiki.open311.org/GeoReport_v2">[% loc('Open311 specification') %]</a></li> +</ul> + +<p>[% tprintf( loc('At most %d requests are returned in each query. The returned requests are ordered by requested_datetime, so to get all requests, do several searches with rolling start_date and end_date.'), c.config.RSS_LIMIT ) %]</p> + +<p>[% loc('The following Open311 v2 attributes are returned for each request: service_request_id, description, lat, long, media_url, status, requested_datetime, updated_datetime, service_code and service_name.') %]</p> + +<p>[% loc('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).') %]</p> + +<p>[% loc('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.') %]</p> + +<p>[% tprintf( loc('With request searches, it is also possible to search for agency_responsible to limit the requests to those sent to a single administration. The search term is the administration ID provided by <a href="%s">MaPit</a>.'), c.config.MAPIT_URL ) %]</p> + +<p>[% loc('Examples:') %]</p> + +<ul> + +[% jurisdiction_id = 'fixamingata.se' %] +[% examples = [ + { + url = c.cobrand.base_url _ "/open311/v2/discovery.xml?jurisdiction_id=$jurisdiction_id", + info = 'discovery-information', + }, + { + url = c.cobrand.base_url _ "/open311/v2/services.xml?jurisdiction_id=$jurisdiction_id", + info = 'Lista alla feltyper, t ex Trasig lampa, hål i gatan osv', + }, + { + url = c.cobrand.base_url _ "/open311/v2/services.xml?jurisdiction_id=$jurisdiction_id&lat=59&long=18", + info = 'Lista feltyper för WGS84 koordinater latityd 59 longityd 18', + }, + { + url = c.cobrand.base_url _ "/open311/v2/requests/1.xml?jurisdiction_id=$jurisdiction_id", + info = 'Felrapport nummer 1', + }, + { + url = c.cobrand.base_url _ "/open311/v2/requests.xml?jurisdiction_id=$jurisdiction_id&status=open&agency_responsible=37&end_date=2013-04-10", + info = 'Alla öppna felrapporter innan 2013-04-10 för Stockholm (kommun-id 37)', + }, + { + url = c.cobrand.base_url _ "/open311/v2/requests.xml?jurisdiction_id=$jurisdiction_id&status=open&agency_responsible=37|38", + info = 'Alla öppna felrapporter för Stockholm (id 37) och Järfälla (id 38)', + }, + { + url = c.cobrand.base_url _ "/open311/v2/requests.xml?jurisdiction_id=$jurisdiction_id&service_code=Hål i gatan", + info = "Alla felrapporter av typen 'Hål i gatan'", + }, + { + url = c.cobrand.base_url _ "/open311/v2/requests.xml?jurisdiction_id=$jurisdiction_id&status=closed", + info = 'Alla stängda felrapporter', + }, +] %] +[% FOREACH examples %] + <li><a href="[% url %]">[% info %]</a> + [% IF url.match('/requests.xml') %] + [ <a href="http://maps.google.com/?q=[% url.replace('.xml', '.rss') | uri %]">[% loc('GeoRSS on Google Maps') %]</a> ] + [% END %] + <br>[% url | html %]</li> +[% END %] + +</ul> + +<h2>Searching</h2> + +<p>The following search parameters can be used:</p> + +<dl> + +<dt>service_request_id</dt> +<dd>Search for numeric ID of specific request. + Using this is identical to asking for a individual request using + the /requests/number.format URL.</dd> +<dt>service_code</dt> +<dd>Search for the given category / service type string.</dd> + +<dt>status</dt> +<dd>Search for open or closed (fixed) requests.</dd> + +<dt>start_date<dt> +<dd>Only return requests with requested_datetime set after or at the + date and time specified. The format is YYYY-MM-DDTHH:MM:SS+TZ:TZ.</dd> + +<dt>end_date<dt> +<dd>Only return requests with requested_datetime set before the date + and time specified. Same format as start_date.</dd> + +<dt>agency_responsible</dt> +<dd>ID of government body receiving the request. Several IDs can be + specified with | as a separator.</dd> + +<dt>interface_used<dt> +<dd>Name / identifier of interface used.</dd> + +<dt>has_photo<dt> +<dd>Search for entries with or without photos. Use value 'true' to +only get requests created with images, and 'false' to get those +created without images.</dd> + +<dt>max_requests</dt> +<dd>Max number of requests to return from the search. If it is larger +than the site specific max_requests value specified in the discovery +call, the value provided is ignored.</dd> + +<dl> + +<p>The search result might look like this:</p> + +<pre>[% " + <requests> + <request> + <agency_responsible> + <recipient>Stockholm</recipient> + </agency_responsible> + <agency_sent_datetime>2012-11-16T10:35:12,534712Z</agency_sent_datetime> + <description>Test: Test</description> + <detail>Test</detail> + <interface_used>Web interface</interface_used> + <lat>59.336044310435</lat> + <long>18.05058735521</long> + <requested_datetime>2012-11-16T10:31:30,702990Z</requested_datetime> + <requestor_name>Jonas Öberg</requestor_name> + <service_code>Trasig gatubelysning</service_code> + <service_name>Trasig gatubelysning</service_name> + <service_request_id>10</service_request_id> + <status>open</status> + <title>Test</title> + <updated_datetime>2012-11-16T10:35:12,534712Z</updated_datetime> + </request> + </requests> +" | html %]</pre> + +[% INCLUDE 'footer.html' %] + diff --git a/templates/web/fixamingata/report/new/fill_in_details_form.html b/templates/web/fixamingata/report/new/fill_in_details_form.html new file mode 100644 index 000000000..eea1da8d2 --- /dev/null +++ b/templates/web/fixamingata/report/new/fill_in_details_form.html @@ -0,0 +1,218 @@ +<div id="report-a-problem-main"> + <h1>[% loc('Reporting a problem') %]</h1> + + [% IF js %] + <p id="councils_text"> + [% + tprintf( + loc('All the information you provide here will be sent to <strong>%s</strong>.'), + loc('the local council') + ); + %] + [% loc('The subject and details of the problem will be public, plus your name if you give us permission.') %] + </p> + [% ELSE %] + [% PROCESS 'report/new/councils_text.html' %] + [% END %] + + [% IF c.cobrand.moniker != 'fixmybarangay' || ( c.user && c.user.from_council ) %] + <div id="report-a-problem-sidebar"> + <!-- + The text for this section needs checking, but I can't work out which bit comes from where + --> + <div class="sidebar-tips"> + [% IF report.used_map %] + [% IF partial_token %] + <p id="unknown">[% loc('Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit.') %]</p> + [% END %] + <p>[% loc('You have located the problem at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. ') %]</p> + [% END %] + + <p> + [% IF report.used_map %] + [% INCLUDE 'report/new/fill_in_details_text.html' %] + [% ELSE %] + [% loc('Please fill in the form below with details of the problem, and describe the location as precisely as possible in the details box.') %] + [% END %] + </p> + </div> + + <div class="sidebar-notes"> + [% INCLUDE 'report/new/notes.html' %] + </div> + + </div> + [% END %] + + [% INCLUDE 'errors.html' %] + <fieldset> + <div id="problem_form"> + + [% INCLUDE 'report/new/form_heading.html' %] + + + [% IF field_errors.council %] + <p class='form-error'>[% field_errors.council %]</p> + [% END %] + + + + <label for="form_title">[% loc('Subject') %]</label> + [% IF field_errors.title %] + <p class='form-error'>[% field_errors.title %]</p> + [% END %] + <input type="text" value="[% report.title | html %]" name="title" id="form_title" placeholder="[% loc('Provide a title') %]" required> + + <label for="form_detail">[% loc('Details') %]</label> + [% IF field_errors.detail %] + <p class='form-error'>[% field_errors.detail %]</p> + [% END %] + <textarea rows="7" cols="26" name="detail" id="form_detail" placeholder="[% loc('Please fill in details of the problem.') %]" required>[% report.detail | html %]</textarea> + + [% IF js %] + <div id="form_category_row"> + <label for="form_category">[% loc('Category') %]</label> + <select name="category" id="form_category" required><option>[% loc('Loading...') %]</option></select> + </div> + [% ELSE %] + [% IF category_options.size %] + [% IF field_errors.category %] + <p class='form-error'>[% field_errors.category %]</p> + [% END %] + + [% PROCESS "report/new/category.html" %] + [% END %] + [% END %] + + [%- IF category_extras %] + [% PROCESS "report/new/category_extras.html" %] + [%- END %] + + [% IF c.cobrand.allow_photo_upload %] + [% IF field_errors.photo %] + <p class='form-error'>[% field_errors.photo %]</p> + [% END %] + + + [% IF upload_fileid || report.photo %] + [% IF upload_fileid %] + <img align="right" src="/photo/[% upload_fileid %].temp.jpeg" alt=""> + <input type="hidden" name="upload_fileid" value="[% upload_fileid %]"> + [% END %] + + <p>[% loc('You have already attached a photo to this report, attaching another one will replace it.') %]</p> + + [% IF report.photo %] + <img align="right" src="/photo/[% report.id %].jpeg"> + [% END %] + [% END %] + + <label for="form_photo">[% loc('Photo') %]</label> + <input type="file" name="photo" id="form_photo"> + [% END %] + + [% IF c.user_exists %] + <div class="form-box"> + + [% INCLUDE 'report/new/extra_name.html' %] + + <label for="form_name">[% loc('Name') %]</label> + [% IF field_errors.name %] + <p class='form-error'>[% field_errors.name %]</p> + [% END %] + <input type="text" class="validName" value="[% report.name | html %]" name="name" id="form_name" placeholder="[% loc('Your name') %]"> + + [%# if there is nothing in the name field then set check box as default on form %] + <div class="checkbox-group"> + <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF !report.anonymous %]> + <label class="inline" for="form_may_show_name">[% loc('Show my name publicly') %]</label> + </div> + + [% IF c.cobrand.moniker != 'fixmybarangay' || ( c.user && c.user.from_council ) %] + <div class="general-sidebar-notes"> + <p>[% loc('We never show your email address or phone number.') %]</p> + </div> + [% END %] + + <label for="form_phone">[% loc('Phone number (optional)') %]</label> + <input class="" type="text" value="[% report.user.phone | html %]" name="phone" id="form_phone" placeholder="[% loc('Your phone number') %]"> + + <div class="form-txt-submit-box"> + <input class="green-btn" type="submit" id="submit_register" name="submit_register" value="[% loc('Submit') %]"> + </div> + </div> + [% ELSE %] + + <label for="form_email">[% loc('Your email') %]</label> + [% IF field_errors.email %] + <p class='form-error'>[% field_errors.email %]</p> + [% END %] + <input type="email" value="[% report.user.email | html %]" name="email" id="form_email" placeholder="[% loc('Please enter your email address') %]" required> + + <div id="form_sign_in"> + <h3>[% loc("Now to submit your report…") %]</h3> + + <div id="form_sign_in_no" class="form-box"> + <h5>Om du inte har ett lösenord fyller du i ditt namn och eventuellt telefonnummer och nytt lösenord (valfria) här. När du skickar din rapport får du epost med en länk som du måste klicka på för att bekräfta rapporten. Om du redan har ett lösenord fyller du i detta längre ner på sidan och behöver då inte bekräfta rapporten.</h5> + + [% INCLUDE 'report/new/extra_name.html' %] + + <label for="form_name">[% loc('Name') %]</label> + [% IF field_errors.name %] + <p class='form-error'>[% field_errors.name %]</p> + [% END %] + + <input type="text" class="form-focus-trigger validName" value="[% report.name | html %]" name="name" id="form_name" placeholder="[% loc('Your name') %]"> + + [%# if there is nothing in the name field then set check box as default on form %] + <div class="checkbox-group"> + <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF !report.anonymous %]> + <label class="inline" for="form_may_show_name">[% loc('Show my name publicly') %]</label> + </div> + + <div class="general-sidebar-notes form-focus-hidden"> + <p class="dark">[% loc('We never show your email address or phone number.') %]</p> + <p>[% loc('Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports.') %]</p> + </div> + + <label for="form_phone">[% loc('Phone number (optional)') %]</label> + <input type="text" value="[% report.user.phone | html %]" name="phone" id="form_phone" placeholder="[% loc('Your phone number') %]"> + + <label for="password_register">[% loc('Password (optional)') %]</label> + + <div class="form-txt-submit-box"> + <input type="password" name="password_register" id="password_register" value="" placeholder="[% loc('Enter a password') %]"> + <input class="green-btn" type="submit" id="submit_register" name="submit_register" value="[% loc('Submit') %]"> + </div> + </div> + <div id="form_sign_in_yes" class="form-box"> + + <h5>Jag har ett lösenord sedan tidigare:</h5> + + <label class="hidden-js n" for="password_sign_in">[% loc('Yes I have a password') %]</label> + <div class="form-txt-submit-box"> + [% IF field_errors.password %] + <p class='form-error'>[% field_errors.password %]</p> + [% END %] + <input type="password" name="password_sign_in" id="password_sign_in" placeholder="[% loc('Your password') %]" value=""> + <input class="green-btn" type="submit" id="submit_sign_in" name="submit_sign_in" value="[% loc('Submit') %]"> + </div> + + <div class="checkbox-group"> + <input type="checkbox" id="remember_me" name="remember_me" value='1'[% ' checked' IF remember_me %]> + <label class="n inline" for="remember_me">[% loc('Keep me signed in on this computer') %]</label> + </div> + </div> + + </div> + + [% END %] + </div> + </fieldset> + + [% IF partial_token %] + <input type="hidden" name="partial" value="[% partial_token.token %]"> + [% END %] + + <input type="hidden" name="submit_problem" value="1"> +</div> diff --git a/templates/web/fixamingata/report/new/notes.html b/templates/web/fixamingata/report/new/notes.html new file mode 100644 index 000000000..8f081f637 --- /dev/null +++ b/templates/web/fixamingata/report/new/notes.html @@ -0,0 +1,14 @@ +<p>[% loc("Please note:") %]</p> + +<ul class="plain-list"> + <li>[% loc("We will only use your personal information in accordance with our <a href=\"/privacy\">privacy policy.</a>") %]</li> + <li>[% loc("Please be polite, concise and to the point.") %]</li> + <li>[% loc("Please do not be abusive — abusing your council devalues the service for all users.") %]</li> + <li>[% loc("Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation.") %]</li> +[% IF all_councils.items.first > 0 %] + <li>[% id = all_councils.items.first; + tprintf("Kom ihåg att FixaMinGata primärt är avsett för att rapportera fysiska problem som kan åtgärdas. Om ditt problem inte lämpar sig för att rapportera via den här webbsidan kan du kontakta din kommun direkt via <a href='%s'>deras webbsida</a>.", all_body_urls.$id); %]</li> +[% ELSE %] + <li>[% loc("Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site remember that you can contact your council directly using their own website.") %]</li> +[% END %] +</ul> diff --git a/templates/web/fixamingata/static/council.html b/templates/web/fixamingata/static/council.html new file mode 100755 index 000000000..a3a019328 --- /dev/null +++ b/templates/web/fixamingata/static/council.html @@ -0,0 +1,214 @@ +[% INCLUDE 'header.html', title => 'För kommuner', bodyclass => 'twothirdswidthpage' %] + +<div class="sticky-sidebar"> + <aside> + <ul class="plain-list"> + <li><a href="#kommuner">Deltagande kommuner</a></li> + <li><a href="#nykommun">Checklista för nya kommuner</a></li> + <li><a href="#process">Förklaring av rapporteringsprocessen</a></li> + <li><a href="#kategorier">Kategorier av fel</a></li> + <li><a href="#integration">Integration med verksamhetssystem</a></li> + <li><a href="#kostnader">Kostnader</a></li> + <li><a href="#kontakt">Kontaktpersoner</a></li> + </ul> + </aside> +</div> + +<h1>Information för kommuner</h1> + +<p> +Fixa Min Gata är en e-tjänst som drivs av +<a href="http://sambruk.se/">Föreningen Sambruk</a> och är framtagen i +samarbete med <a href="http://kivos.se/">KIVOS</a> och +<a href="http://ffkp.se/">FFKP</a>. Invånare i medverkande kommuner kan +använda e-tjänsten för att rapportera fel i sin lokala gatumiljö. I och +med att tjänsten drivs som en molntjänst kan den snabbt driftsättas för +en ny kommun. Fel som rapporteras skickas via e-post till berörd enhet +på kommunen. För kommuner som har befintliga verksamhetssystem för +rapportering och uppföljning finns flera möjligheter att integrera +systemen med varandra. +</p> + +<h2><a name="kommuner"></a>Kommuner</h2> +<p> +Fixa Min Gata stödjer samtliga Svenska kommuner, men hur det ser ut hos +varje kommun ser lite olika ut. En del kommuner väljer att inte ta emot +rapporter via Fixa Min Gata utan hänvisar istället medborgarna till sin +egen webbsida. I dessa fall ger Fixa Min Gata en länk till kommunens +webbsida om en medborgare försöker rapportera ett fel. +</p> +<p> +Andra kommuner har valt att vara med i styrgruppen för Fixa Min Gata +vilket ger dem möjlighet att påverka utvecklingen och den framtida +inriktningen, exempelvis för att bättre kunna integrera Fixa Min Gata +i sina egna verksamhetssystem. +</p> +<p> +De kommuner som var med i den ursprungliga +referensgruppen var Alingsås, Falköping, Tidaholm, Vårgårda, Aneby, +Eksjö, Gislaved, Gnosjö, Habo, Mullsjö, Nässjö, Sävsjö, Tranås, +Vaggeryd, Vetlanda och Värnamo. +</p> + +<h2><a name="nykommun"></a>Ny kommun</h2> +<p> + Här följer en checklista som kommuner kan använda sig av när de tittar på + hur Fixa Min Gata kan användas i kommunen. Eventuella frågor eller hjälp + i processen kan fås från Fixa Min Gatas <a href="#kontakt">kontaktpersoner</a>. +</p> +<p> + <ul> + <li>Fixa Min Gata använder + <a href="http://www.openstreetmap.org/">Open Street Map</a> för sin + kartinformation. Verifiera så att de kartor som finns för kommunen + är relevanta. Om det finns fel i kartinformationen går detta att + korrigera, av kommunen själva eller i samarbete med invånarna.</li> + <li>Fixa Min Gata låter medborgarna välja position genom att ange postnummer. + Dessvärre finns det ingen publik lista över postnummer och dess + geografiska koordinater som är tillgänglig att använda för vem som helst + och en del koordinater kan därför vara fel. Verifiera genom att välja + ett par postnummer i kommunen och mata in dem i Fixa Min Gata för att + se hur det ser ut i er kommun. Om något postnummer inte centrerar på + rätt geografisk koordinat går detta att ändra. Kontakta Fixa Min Gatas + <a href="#kontakt">kontaktpersoner</a> för mer information om detta.</li> + <li>För kommuner som har ett eget verksamhetssystem finns möjlighet att + integrera Fixa Min Gata med detta. Kontakta leverantören av + verksamhetssystemet för att fråga om integration med Fixa Min Gata. + Det finns flera sätt på vilket detta kan ske och du kan få mer + information från Fixa Min Gatas <a href="#kontakt">kontaktpersoner</a>. + </li> + <li>Titta på den lista med <a href="#kategorier">kategorier</a> som finns + i Fixa Min Gata och fundera över om några förändringar behövs i den + listan. Det finns möjigheter att förändra den listan per kommun.</li> + <li>Om felrapporter från invånarna ska skickas via epost till kommunen, + bestäm vilka adresser som information ska skickas till och om det är + samma adress för samtliga kategorier eller om olika kategorier ska + skickas till olika adresser.</li> + <li>Prata med och informera de anställda som kommer att ta emot och arbeta + med felrapporter. Säkerställ att alla är på det klara med hur kommunen + arbetar med inkomna felrapporer och vikten av att fel också rapporteras + som åtgärdat när arbetet är klart.</li> + <li>Bjud in de anställda att vara med i den första testen av systemet så att + de som vill kan testa att rapportera fel och följa upp ärenden. Det kan + ske under ett par veckor innan systemet driftsätts helt för att ge + personalen möjlighet att bli komfortabel med systemet först.</li> + <li>Prata med kommunens informationsansvarige eller motsvarande för att + länka till Fixa Min Gata från kommunens hemsida. Logotyper för FixaMinGata + kan hämtas från <a + href="http://www.sambruk.se/projektnatverk/fixamingata/projektdokument.4.7b34e07a139d0d50e8b23cb.html?folder=19.7b34e07a139d0d50e8b23b1&sv.url=12.7b34e07a139d0d50e8b23d1">här</a>.</li> + <li>Följ upp löpande under den första tiden med de personer som från + kommunen tar emot felrapporter. Du kan också ta hjälp av den + <a href="/reports">statistik</a> som publiceras i Fixa Min Gata för + att se vilka problem som rapporteras samt om de markeras som åtgärdade. + </li> + </ul> +</p> + + +<h2><a name="process"></a>Rapporteringprocess</h2> +<p> + +Fixa Min Gata erbjuder ett enkelt sätt för en invånare att rapportera ett fel +vilket sedan kommuniceras till kommunen. En visuell beskrivning av processen +finns tillgänglig på <a +href="http://www.sambruk.se/projektnatverk/fixamingata/projektdokument.4.7b34e07a139d0d50e8b23cb.html?folder=19.7b34e07a139d0d50e8b23b1&sv.url=12.7b34e07a139d0d50e8b23d1"> +Sambruks projeksida för FixaMinGata</a>. + +Nedanstående flöde beskriver hur FixaMinGata fungerar utifrån invånarens +perspektiv. + +</p> +<p> + <ol> + <li>En invånare söker på postnummer eller gatuadress och får upp en karta + över närområdet.</li> + <li>Invånaren kan se befintliga felrapporter inom området.</li> + <li>Om invånaren klickar på en position på kartan ges möjlighet att rapportera ett nytt fel.</li> + <li>Invånaren väljer en av de kategorier som finns, skriver in information om felet och bifogar eventuellt ett foto.</li> + <li>Om invånaren inte tidigare har rapporterat ett fel eller om invånaren valt att inte skapa ett konto i tjänsten skickas epost till invånaren med en länk som måste klickas på för att bekräfta felet.</li> + <li>När felet är bekräftat skickas detta till kommunen.</li> + <li>Andra invånare kan se felet och bifoga uppdateringar eller kommentarer.</li> + <li>När kommunen har åtgärdat felet eller engagerat sig på annat sätt kan kommunen lämna uppdateringar eller markera felet som åtgärdat.</li> + <li>Invånaren får information via epost om att felet är åtgärdat.</li> + </ol> +</p> + +<h2><a name="kategorier"></a>Kategorier</h2> +<p> +Följande kategorier finns för alla kommuner i Fixa Min Gata. +En del kommuner väljer andra kategorier beroende på vad som passar dem +bäst. +</p> +<p> + <ul> + <li>Buss- och tågstopp + <li>Cykelställ + <li>Cykelväg + <li>Dumpat skräp + <li>Gatlyse + <li>Gator och vägar + <li>Grafitti/taggning + <li>Hål i väg + <li>Igensatt brunn + <li>Nedskräpning + <li>Offentlig toalett + <li>Oljespill + <li>Parkering + <li>Park/landskap + <li>Snöplogning + <li>Trafiklyse + <li>Trafikskylt + <li>Träd + <li>Trottoar/gångbana + <li>Vattenförsörjning + <li>Vägstädning + <li>Vägnamnsskylt + <li>Övergiven bil + <li>Övrigt + </ul> + +<h2><a name="integration"></a>Integration med verksamhetssystem</h2> +<p> + För <strong>kommuner som har ett eget verksamhetssystem</strong> + finns det flera olika sätt att integrera detta med Fixa Min Gata. + Det enklaste, vilket stödjs av i princip samtliga verksamhetssystem, är + att Fixa Min Gata skickar epost till verksamhetssystemet när någon + lämnar en rapport vilket sedan görs till ett ärende i systemet. När + rapporten är åtgärdad rapporterar kommunen detta i sitt verksamhetssystem + <strong>samt</strong> i Fixa Min Gata. +</p> +<p> + Det finns också möjlighet att på olika sätt integrera systemen så att en + rapport som avslutas i verksamhetssystemet också markeras som åtgärdad + i Fixa Min Gata. Beroende på verksamhetssystem kan en viss kostnad utgå + för detta från leverantören. Ta kontakt med din leverantör av + verksamhetssystem för att höra dig för. +</p> +<p> + Vi har också tagit fram en sida med + <a href="https://wiki.ffkp.se/index.php?title=Open311_och_annan_integration_mot_FixaMinGata">teknisk information om integration av Fixa Min Gata</a> som + kan vara lämplig att titta på för mer information. +</p> + +<h2><a name="kostnader"></a>Kostnader för medverkan</h2> +<p> + Kommuner som är med i styrgruppen för Fixa Min Gata betalar en kostnad + per invånare, vilket täcker kostnaden för drift och utveckling. För mer + information + om kostnader och deltagande, kontakta våra <a href="#kontakt">kontaktpersoner</a>. + +<h2><a name="kontakt"></a>Kontaktpersoner</h2> +<p> + Du kan alltid kontakta oss genom <a + href="mailto:info@fixamingata.se">info@fixamingata.se</a>. Vi ser då + till att din fråga behandlas och kommer till rätt person. +</p> +<p> + För frågor kring medverkan, villkor och kostnader, kontakta Claes-Olof Olsson, Sambruk via e-postadressen <a href="mailto:claes-olof.olsson@sambruk.se">claes-olof.olsson@sambruk.se</a> eller ledningen för styrgruppen på <a href="mailto:info@fixamingata.se">info@fixamingata.se</a>. +</p> +<p> + För tekniska frågor om plattformen, integration med verksamhetssystem eller + uppdaterade kontakt uppgifter, använda vårt <a href="/contact">kontaktformulär</a>. +</p> + +[% INCLUDE 'footer.html' pagefooter = 'yes' %] diff --git a/templates/web/fixamingata/static/fun.html b/templates/web/fixamingata/static/fun.html new file mode 100644 index 000000000..ff8f30e49 --- /dev/null +++ b/templates/web/fixamingata/static/fun.html @@ -0,0 +1,35 @@ +[% INCLUDE header.html + title = 'Udda och imponerande rapporter' +%] + +<h1>Udda och imponerande rapporter</h1> + +<p> +Här är några av de bästa och mest udda rapporter som har synts på +den engelska FixMyStreet. Meddela oss om du hittar några liknande +rapporter på svenska FixaMingata!</p> + +<ul class="plain-list"> + + <li><img src='http://www.fixmystreet.com/photo/9468.jpeg' align='right' hspace=8> + <h2>Dumped Piano (right)</h2> + <p>The reporter of this problem summed it up with their report, + which consisted solely of the one character “!”. — + <a href='http://www.fixmystreet.com/report/9468'>Problem report</a> + + <li><h2>Mad Seagull</h2> + <p>“A seagull is attacking various cars within this road. He starts at around 05:45 every morning and continues until around 19:30. This causes a lot of noisy banging and wakes up children.” — + <a href='http://www.fixmystreet.com/report/2722'>Problem report</a> + + <li><img src='http://www.fixmystreet.com/photo/6553.jpeg' align='right' hspace=8> + <h2>Boxes full of cheese dumped (right)</h2> + <p>“About a dozen boxes full of mozzarella cheese have been dumped opposite 3 rufford street. if it warms up we could have nasty road topping problem (seriously there is a lot of cheese)” — + <a href='http://www.fixmystreet.com/report/6553'>Problem report</a> + + <li><h2>Dangerous Nivea Billboard</h2> + <p>“The Nivea 'Oxygen is a wonderful thing' billboard here has a device on it releasing bubbles and foam. This is blowing into the road which is both distracting and dangerous to drivers. A large ball of foam hit my windscreen unexpectedly and nearly caused me to have an accident” — + <a href='http://www.fixmystreet.com/report/7552'>Problem report</a> +</ul> + +[% INCLUDE footer.html %] + diff --git a/templates/web/fixamingata/static/privacy.html b/templates/web/fixamingata/static/privacy.html new file mode 100755 index 000000000..2a3c88071 --- /dev/null +++ b/templates/web/fixamingata/static/privacy.html @@ -0,0 +1,82 @@ +[% INCLUDE 'header.html', title => loc('Vanliga Frågor'), bodyclass => 'twothirdswidthpage' %] + +<div class="sticky-sidebar"> + <aside> + <ul class="plain-list"> + <li><a href="/faq#faq">Vanliga frågor</a></li> + <li><a href="/faq#practical">Praktiska frågor</a></li> + <li><a href="/faq#organisation">Organisation</a></li> + <li><a href="/faq#pul">Personuppgiftsombud</a></li> + <li><strong>Offentlighet och kakor</strong></li> + </ul> + </aside> +</div> + +<h1>Offentlighet, kakor och tredjepartstjänster</h1> + +<p><strong>Vår användning av din information och vad du behöver veta.</strong></p> + +<p>Sammanfattning: Vi bryr oss om våra användares privatliv. Du kan läsa +mer detaljer om det här nedan. Vi gör vårt bästa för säkra den privata +information som vi har i vår databas. Precis som många andra webbplatser +använder vi ibland kakor för att hjälpa oss göra +tjänsten bättre. De här verktygen är väldigt vanliga och används av många +andra tjänster, men det finns nackdelar med dem och vi är måna om att du +förstår hur din data används.</p> + +<h2>Offentlighet och personuppgifter</h2> + <dl> + <dt>Hur hanteras mina personuppgifter?</dt> + <dd>Dina personuppgifter hanteras med största försiktighet. Din +epostadress och namn lagras i vår databas. Du har rätt att begära att få +ta del av de uppgifter som finns registrerade om dig genom att kontakta vårt +personuppgiftsombud.</dd> + + <dt>Hur hanteras min information hos Fixa Min Gata?</dt> + <dd>Vi kommer att visa en rapports ärende och information publikt. Vi kommer dock inte att visa din e-postadress eller ditt namn, om du inte ger oss tillsånt att visa ditt namn.</dd> + + <dt>Hur hanteras min information hos kommunen?</dt> + <dd>All information du anger kring ett problem kommer att skickas till berörd kommun. Alla handlingar som inkommer till en kommun betraktas som offentliga och därmed kommer också alla rapporter från Fixa Min Gata att vara offentliga via den berörda kommunen.</dd> + </dl> + +<h2>Sekretess</h2> + + <dl> + <dt>Vem ser min epostadress?</dt> + <dd>Om du rapporterar ett problem kommer vi att skicka din +information och information om problemet till den kommun som är ansvarig +för det område där du lokaliserat problemet. Förutom kommunen, som +givetvis får se din epostadress, kommer personer som är ansvariga för +tjänsten FixaMinGata att kunna se din epostadress. Ingen kommer att +använda din epostadress för något annat än för att kunna administrera +FixaMinGata. Vi kommer inte ge ut eller sälja din epostadress till någon +annan om vi inte blir tvingade till det av domstol. Ditt namn, som du +anger det, kommer inte att publiceras om du inte vill att vi publicerar +det. Observera dock att om du skriver ditt namn någon annan stans, +exempelvis i informationen om en rapport, kommer det att bli publik +synligt.</dd> + + <dt>Kommer ni att skicka spam?</dt> + <dd>Aldrig. Vi kommer att skicka brev till dig om någon lämnar +en uppdatering på ett problem som du rapporterat, och skicka dig ett +frågeformulär fyra veckor efter din rapportering där vi frågar om +uppdatering. Vi kommer endast att skicka brev i relation till ditt problem.</dd> + + </dl> + +<h2>Kakor</h2> + +<p>För att göra våra tjänster lättare och mer användbara skickar vi +ibland små datafiler till din dator eller mobiltelefon. Dessa kallas för +kakor och de flesta webbplatser använder dem. Vi använder den här +informationen för att, till exempel, komma ihåg när du har loggat in +så att du slipper göra det på varje sida, och för att mäta hur +tjänsten används så att vi kan förbättra den. Nedan ger vi en lista med +de kakor som den här tjänsten använder. + +<table cellpadding=5> +<tr align="left"><th scope="col">Namn</th><th scope="col">Innehåll</th><th scope="col">Giltighet</th></tr> +<tr><td>fixmystreet_app_session</td><td nowrap>A slumpvis sträng</td><td>Raderas när webbläsaren stängs, eller efter fyra veckor om “Håll mig inloggad” är valt</td></tr> +</table> + +[% INCLUDE 'footer.html' pagefooter = 'yes' %] diff --git a/templates/web/fixmindelo/faq/faq-pt-cv.html b/templates/web/fixmindelo/faq/faq-pt-cv.html new file mode 100644 index 000000000..cae17ebc6 --- /dev/null +++ b/templates/web/fixmindelo/faq/faq-pt-cv.html @@ -0,0 +1,121 @@ +[% 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="#practical">Practical Questions</a></li> + <li><a href="#organisation">Organisation Questions</a></li> + <li><a href="/privacy">Privacy and cookies</a></li> + <li><a href="/contact">Contact FixMyStreet</a></li> + </ul> + </aside> +</div> + +<h1><a name="faq"></a>Frequently Asked Questions</h1> + <dl> + <dt>O que é FixMyStreet?</dt> + <dd>FixMyStreet é um site para ajudar a informar as pessoas, ver ou discutir os problemas locais que encontrarem no seu conselho local, e basta localizá-los o mapa. Foi lançado no início de fevereiro de 2007.</dd> + + <dt>Como faço para entrar em contato com FixMyStreet?</dt> + <dd>Aqui está a nossa <a href="/contact">página de contato</a>.</dd> + + <dt>Que tipo de problemas que devo relatar com FixMyStreet?</dt> + <dd>FixMyStreet é principalmente para relatar coisas que <strong>estao quebradas, sujas, danificadas ou despejadas, abandonadas e precisam de conserto, limpeza e correção</strong>, tais como: + + + <ul><li>Veículos abandonados + <li>Animais na rua + <li>Grafites nas paredes + <li>Lixo ou entulho + <li>Iluminaçao deficiente, armaduras e candeeiros, quebrados, armarios partidos + <li>Postes quebrados, arvores caidas, + <li>Buracos na rua, nos passeios, jardins, calçadas + <li>Predios abandonados, pardeeiros, + <li>Lajes, varandas, em perigo + <li>Vazamentos de agua, tubagens + <li>Cabos, fios de electricidade em mau estado, caixas e portinholas, + <li>Placas de sinalizaçao, letreiros luminosos, de ruas, espaços, em mau estado + <li>Sinais de transito + </ul> + </dd> + + <dt>O que não é para ser relatado no FixMyStreet?</dt> + <dd> + FixMyStreet não é uma forma de entrar em contato com o seu conselho para todas as questões - por favor use FixMyStreet apenas para problemas como o acima. Nós muitas vezes recebemos relatórios de problemas que não dizem respeito ao Fix – directamente - e de rotas através de serviços de limpeza ou rodovias e assim usando FixMyStreet para outros assuntos pode resultar em um atraso do seu relatório de chegar ao departamento certo. Você vai precisar de contactar o seu município diretamente para problemas, tais como: + + <ul> + <li>Comportamento Anti-social + <li>Qualquer problema de urgência ou emergência + <li>A poluição sonora ou cachorros latindo + <li>Fogos e fumaça / poluição cheiro + <li>Falta recipientes para lixo ou reciclagem de caixas ou perdeu coleções de lixo + <li>Propostas para redutores de velocidade / CCTV / travessias de pedestres / novos layouts de estrada / etc + <li>Queixar-se sobre os seus vizinhos + <li>Reclamando do conselho + <li>Joy passeios, consumo de drogas, crueldade animal, ou outra atividade criminosa + </ul> + <p>Conselhos costumam ter linhas diretas para esses tipos de questões. Contacte-os directamente atravez do seu site.</p> + </dd> + + <dt>Como faço para usar o site?</dt> + <dd>Depois de inserir um código postal ou localização, zona ou lugar, é apresentado com um mapa dessa área, zona ou local.Você pode ver os problemas já relatados nesta área, ou denunciar, relatar os problemas do seu propio local, simplesmente clicando no mapa no local do problema.</dd> + + <dt>Como são resolvidos os problemas?</dt> + <dd>Eles são relatados ao conselho, do departamento responsavel, por e-mail. O conselho pode, então, resolver o problema da maneira que normalmente faria. O Conselho encaminhara para cada sector ou departamento os relatorios dos problemas a que dizem respeito. Alternativamente, você pode discutir o problema no site com os outros, e, em seguida, juntos pressionar o conselho para corrigi-lo, saber a posiçao e andamento do relatorio ou sendo possivel tentar corrigir os problemas em entre ajuda com pessoas da comunidade.O Conselho dará tambem sempre uma resposta quanto possivel sobre o problema.</dd> + + <dt>O FixMyStreet é grátis?</dt> + <dd>O site é livre para usar, sim. FixMyStreet é gerido por uma instituição sem fins lucrativos, mas se aceitam doaçoes livres. É só enviar. + </dd> + + <dt>Posso usar FixMyStreet no meu celular?</dt> + <dd> + <p> O site FixMyStreet deve funcionar em seu telefone móvel, adaptando-se ao tamanho da tela automaticamente. Estamos a preparar uma versão atualizada de um aplicativo para utilizaçao futura. + </dd> + + </dl> + + <h2><a name="practical"></a>Perguntas práticas</h2> + <dl> + <dt>Eu sou de um conselho, onde enviar os relatorios?</dt> + <dd> + Você pode deixar um relatório de ensaio no site ou entrar em contato conosco para saber o andamento e posiçao dos seus relatorios e seu acompanhamento. Contacte-nos também para atualizar o endereço ou endereços que usamos. + </dt> + <dt>Eu sou de um conselho, podemos ter FixMyStreet em nosso site?</dt> + <dd> + Sim, você pode! Nós oferecemos marca, as versões do FixMyStreet para sites locais do conselho hospedado. <a href="http://www.mysociety.org/for-councils/fixmystreet/">Detalhes completos</a>. + </dd> + <dt>Voces removem conteudo ilegal, descriminatorio ou sem conteudo de fix?</dt> + <dd>FixMyStreet não é responsável pelo conteúdo e precisão do material enviado por seus usuários. Reservamo-nos o direito de editar ou remover quaisquer problemas ou atualizações que consideramos ser impróprio ao ser informado por um usuário do site.</dd> + + <dt>Por que não posso diminuir o zoom mais no mapa de referência?</dt> + <dd>Queremos manter FixMyStreet focado localmente, de modo restringir a capacidade de mover-se radicalmente entre as áreas. O mapa em seus relatórios permitirá que você veja todos os relatórios que você fez, onde quer que estejam. Se você é do conselho, em seguida, a versão do relatório enviado por email do problema também contém a estrada, zona, lugar, mais próximo e código postal para o pino no mapa. + </dd> + + <dt>Porque não é divulgado muito o FixMyStreet, apesar da sua importancia?</dt> + <dd>Como uma pequena instituição sem fins lucrativos nóssimplesmente não temos um orçamento de publicidade, e por isso temos sempre confiado na palavra da boca para divulgar o site. Contamos consigo para essa divulgaçao. + </dd> + </dl> + + <h2><a name="organisation"></a>Organização Perguntas</h2> + <dl> + <dt>Quem construiu FixMyStreet?</dt> + <dd> + Este site foi construído por <a href="http://www.mysociety.org/">mySociety</a>, em conjunto com a <a href="http://www.youngfoundation.org.uk/">Young Foundation</a>. mySociety é o projeto de uma instituição sem fins lucrativos que cresceu fora da comunidade de voluntários que construíram sites como <a href="http://www.theyworkforyou.com/">TheyWorkForYou.com</a>. A principal missão da mySociety é a construção de projetos de Internet que dão às pessoas benefícios simples e tangíveis nos aspectos cívicos e comunidade onde vivem ou residem. Nosso primeiro projeto foi <a href="http://www.writetothem.com/">WriteToThem</a>, onde você pode escrever a qualquer um de seus representantes eleitos, de forma gratuita. A fundaçao é chamado UK Citizens Online Democracy e é o número 1076346 caridade. mySociety pode ser contactado pelo e-mail <a href="mailto:hello@mysociety.org">hello@mysociety.org</a>, ou por correio para mySociety, 483 Green Lanes, London, N13 4BS, Reino Unido. + </dd> + <dt>Você precisa de alguma ajuda com o projeto?</dt> + <dd>Sim, nós podemos usar a ajuda em todos os tipos de formas, técnicas ou não-técnicas. Por favor, consulte a nossa <a +href="http://www.mysociety.org/helpus/">página se envolver</a>. + </dd> + + <dt>Eu gostaria de um site como este para o meu próprio local / onde está o "código fonte" a este site?</dt> + <dd> +O software por trás deste site é de código aberto e disponível para você, principalmente sob a licença GNU Affero software GPL. Você pode <a href="http://github.com/mysociety/fixmystreet">baixar o código fonte</a> e nos ajudar a desenvolvê-lo. Você está convidado a usá-lo em seus próprios projetos, mas você também deve disponibilizar o código-fonte para tais projetos. <a href="http://www.fiksgatami.no/">Fiksgatami</a> é um exemplo de página de código a ser utilizado numa versão norueguesa deste local. + </dd> + + <dt>As pessoas constroem coisas, e não organizações. Quem realmente construiu?</dt> + <dd> + Matthew Somerville e Francis Irving escreveu o site, Chris Lightfoot escreveu o tileserver e mapa de corte, Richard Papa criou nossos pins, Deborah Kerr mantém as coisas up-to-date e faz suporte ao usuário, Ayesha Garrett projetou nossos cartazes e Tom Steinberg construi tudo. Agradecemos também a Yahoo! para as bibliotecas JavaScript BSD-licenciados, toda a comunidade de software livre (este projeto foi trazido a você por Perl, PostgreSQL, eo número 161,290) e <a href="http://www.bytemark.co.uk/">Bytemark</a> (que gentilmente acolheu todos os nossos servidores). Deixe-nos saber se nos esquecemeos de mencionar alguem. Nos contacte para o efeito. + </dd> + </dl> +[% INCLUDE 'footer.html' pagefooter = 'yes' %] 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 anos</td></tr> +<tr><td>__utmb</td><td>única sessão anônima ID </td><td>30 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 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 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/fixmybarangay/alert/index.html b/templates/web/fixmybarangay/alert/index.html index d9bb74ee9..8e2ce7518 100644 --- a/templates/web/fixmybarangay/alert/index.html +++ b/templates/web/fixmybarangay/alert/index.html @@ -30,9 +30,11 @@ FixMyBarangay has a RSS feeds and email alerts for local problems. <div class="sticky-sidebar" id="alert_recent"> <aside> <h2>[% loc('Some photos of recent reports') %]</h2> - [% FOREACH p IN photos %] + [% FOREACH p IN photos; + photo = p.get_photo_params + %] <a href="/report/[% p.id %]"><img border="0" height="100" - src="/photo/[% p.id %].tn.jpeg" alt="[% p.title | html %]" title="[% p.title | html %]"></a> + src="[% photo.url_tn %]" alt="[% p.title | html %]" title="[% p.title | html %]"></a> [% END %] </aside> </div> diff --git a/templates/web/fixmybarangay/around/tabbed_lists.html b/templates/web/fixmybarangay/around/tabbed_lists.html index c9f1c2a38..342b03f0e 100644 --- a/templates/web/fixmybarangay/around/tabbed_lists.html +++ b/templates/web/fixmybarangay/around/tabbed_lists.html @@ -1,4 +1,4 @@ -[% allow_creation = !c.cobrand.only_authed_can_create || (c.user && c.user.from_council); +[% allow_creation = !c.cobrand.only_authed_can_create || (c.user && c.user.from_body); IF allow_creation %] <menu id="problems-nav" class="tab-nav"> diff --git a/templates/web/fixmybarangay/auth/sign_out.html b/templates/web/fixmybarangay/auth/sign_out.html deleted file mode 100644 index 11888089a..000000000 --- a/templates/web/fixmybarangay/auth/sign_out.html +++ /dev/null @@ -1,8 +0,0 @@ -[% INCLUDE 'header.html', title = loc('Sign out'), bodyclass = 'fullwidthpage' %] - -<h1>[% loc('You have been signed out') %]</h1> - -<p>Please feel free to <a href="[% c.uri_for('/auth') %]">sign in again</a>, or -go back to the <a href="/">FixMyBarangay front page</a>.</p> - -[% INCLUDE 'footer.html' %] diff --git a/templates/web/fixmybarangay/faq/faq-en-gb.html b/templates/web/fixmybarangay/faq/faq-en-gb.html index 320a7528e..6e8893143 100644 --- a/templates/web/fixmybarangay/faq/faq-en-gb.html +++ b/templates/web/fixmybarangay/faq/faq-en-gb.html @@ -54,7 +54,8 @@ the problem.</dd> <dd> You can use your email address and set a password right away, but your account won't be enabled as a <em>staff account</em> until one of the - system administrators has checked it. TODO: contact details. + system administrators has checked it. If you're not sure who to contact, try + <a href="mailto:[% c.config.CONTACT_EMAIL %]">[% c.config.CONTACT_EMAIL %]</a>. </dd> <dt>I've forgotten my password, what do I do?</dt> <dd> @@ -68,10 +69,32 @@ the problem.</dd> or quit the browser (just closing the window without quitting the browser is not enough). </dd> <dt>Reporting</dt> - <dd>TODO</dd> + <dd><p> + To make a new report, start by clicking on the button for either barangay <em>BSN</em> or <em>Luz</em>. + </p> + <ul> + <li> + <strong>To create a standalone report</strong> simply click on the map where the problem is. + </li> + <li> + <strong>To create a report from a text message</strong> log into Message Manager (see below), + then select the message you want to use (click on the radio button). When the message has gone + green, you can click on the map and the message will automatically be used to create the report. + You can edit the text, but that report will be associated with that incoming message. + </li> + </ul> + <p> + Once you've placed the pin, but before you press <em>Submit</em>, you can drag or reposition the pin + if you want to change its position. + </p> + <p> + Choose the category for this report ‐ obviously, this helps FixMyBarangay decide to which + department the report will be sent. + </p> + </dd> <dt>How do I see the SMS messages people have sent?</dt> - <dd>When you look at the barangay problems, click on "Problems via text" - (or, if you're viewing a specific report, click "Show messages") to see the + <dd>When you look at the barangay problems, click on <em>Problems via text</em> + (or, if you're viewing a specific report, click <em>Show messages</em>) to see the currently available messages. You'll need a username and password for the Message Manager (your manager will have told you what these are). Note that you can only see messages that have not yet been used to @@ -82,31 +105,40 @@ the problem.</dd> No, it's a separate account (some FMB users don't have any access to the SMS messages). Your manager will tell you what your login for Message Manager system is, if you have one. </dd> - <dt>I tried to work with a message but it said "lock not granted". What's up?</dt> + <dt>I tried to work with a message but it said "Someone is working with that message right now!" What's up?</dt> <dd> - This means another staff member is working on the message. To prevent you both creating + This means another staff member has a "lock" on the message. To prevent you both creating a report, or sending a reply, we use a first-come-first-serve locking mechanism. Collisions like this are rare, but if they do happen, try again a few minutes later because the lock may have expired by then. </dd> <dt>Can I delete a message?</dt> <dd> - Yes. Click on the red cross when you hover over it (although really you're only hiding it). - You need an <em>administrator</em> account in the Message Manager to be able to see the + Yes. Click on the red cross when you hover over it (although really you're only hiding it so + it never gets shown within FixMyBarangay). + You need a manager's account in the Message Manager to be able to see any messages that have been hidden, so hiding them is as good as deleting them. </dd> <dt>It looks like an incoming message is wrongly shown as a reply. Can I fix it?</dt> <dd> FixMyBarangay tries to recognise SMS replies, and automatically matches them to the right thread. If it - gets this wrong, the reply may appear as a new "available" message, or a new message might be - mistaken for a reply. You need to ask an administrator to log into Message Manager to sort this out for you. + gets this wrong you can click on the <em>detach</em> button. The message will then be a new "available" + message. If Message Manager got it wrong the other way round, and missed a reply, you can fix this too + but you need to log into Message Manager with a manager's account to do it. </dd> <dt>How do the replies get back to the original sender?</dt> <dd> Although you're replying from within FixMyBarangay, the replies are sent by SMS. - There may be a delay of a few minutes between the moment you press <strong>reply</strong> + There may be a delay of a several minutes between the moment you press <strong>reply</strong> and the message's arrival. </dd> + <dt>How can I tell the original sender their problem has been fixed?</dt> + <dd> + Go to the report. If the report is marked "this report was submitted by SMS", you can send a reply. + Click on <em>Show Messages</em>. When the messages appear, click on <em>Show messages for + <strong>this</strong> report</em>. Hover over the message you want to send the message to, and + click <em>Reply</em>. + </dd> <h2><a name="organisation"></a>Organisation Questions</h2> <dl> @@ -128,7 +160,7 @@ UK</dd> <dd> The software behind this site is open source, and available to you mainly under the GNU Affero GPL software license. -See <a href="http://code.fixmystreet.com/">code.fixmystreet.com</a> for more information about setting up +See <a href="http://fixmystreet.org/">fixmystreet.org</a> for more information about setting up and running sites like these. </dd> </dl> diff --git a/templates/web/fixmybarangay/footer.html b/templates/web/fixmybarangay/footer.html index 966abacd8..5bac32e98 100644 --- a/templates/web/fixmybarangay/footer.html +++ b/templates/web/fixmybarangay/footer.html @@ -75,6 +75,29 @@ </div> </div> <div style="display:none"> + <div id="detach-form-container" class="fancybox-popup"> + <p> + Are you sure you want to detach this message? + </p> + <p> + Message Manager probably thinks this message is a reply because + it came in from a number to which we'd recently sent an outward reply. + </p> + <p> + If you detach the message, it will appear as a new, available message (instead of being a reply). + </p> + <form action="/dummy" id="detach-form" onsubmit="event.returnValue = false; return false;" method="post" accept-charset="utf-8"> + <div style="display:none;"> + <input type="hidden" name="_method" value="POST"> + </div> + <input type="hidden" name="msg_id" id="detach_msg_id"> + <div class="submit"> + <input id="detach-submit" type="submit" value="Detach Message"> + </div> + </form> + </div> + </div> + <div style="display:none"> <div id="mm-help" style="font-size:90%;"> <h2> Accessing Message Manager from FixMyBarangay (FMB)</h2> <h3> @@ -91,27 +114,57 @@ If you want to see any other messages, you'll need to have a manager or admin account on Message Manager: click on the <a href="[% c.config.MESSAGE_MANAGER_URL %]">admin</a> link to get there. </p> + <p> + [% IF global.is_fmb_creation_page %] + <h3> + Creating a new report from a message + </h3> + <p> + If you want to use a message to create a problem report, you'll need to select it first. Click on the radio button. When the message + is selected, it will go bright green. Now when you click on the map, the report will be used to create the report. + </p> + <p> + To stop two people replying to a message at the same time, if anyone else has just started working on it, you'll see a message + warning you, and you won't be able to select the radio button. Normally, if nobody works with a message, such a lock is released + after about 3 minutes. + </p> + [% ELSE %] + <p> + Click <strong>show messages for this report</strong> to see + the message (or messages) that contributed to this report. Often this will be a single message + if the problem was submitted by SMS. But it will also include any messages that have been + added as updates, as well as any replies that were sent back by barangay staff. + As well as letting you review the background to the report, this also lets you reply (for example, + to notify the original reporter that the problem has been fixed). + </p> + <h3> + Adding a message as an update to this report + </h3> + <p> + If you want to add this message's contents as an update to this report, you'll need to select it first. Click + on the radio button. When the message is selected, it will go bright green. Now when you click on the + <strong>COPY TO UPDATE</strong> button, the message text will be added to this report's update text. + You can edit the text before clicking <strong>POST</strong>. + </p> + [% END %] <h3> - Creating a new report from a message + <span class="demo_detach_btn">detach</span> Detaching a message ("not a reply") </h3> <p> - If you want to use a message to create a problem report, you'll need to select it first. Click on the radio button. When the message - is selected, it will go bright green. Now when you click on the map, the report will be used to create the report. - </p> - <p> - To stop two people replying to a message at the same time, if anyone else has just started working on it, you'll see a message - warning you, and you won't be able to select the radio button. Normally, if nobody works with a message, such a lock is released - after about 3 minutes. + Message Manager tries to notice when an incoming message is a reply. Sometimes it guesses wrong. To detach a + message from its parent — that is, to mark it as <em>not a reply</em>, hover over the message and click + <span class="demo_detach_btn">detach</span>. </p> + <h3> - Replying to a message + <span class="demo_reply_btn">reply</span> Replying to a message </h3> <p> You can send an SMS back to the original sender: just hover over the message and click <span class="demo_reply_btn">reply</span>. It will usually take a few minutes for the message to arrive. </p> <h3> - Getting message info + <span class="demo_info_btn">i</span> Getting message info </h3> <p> Hover over a message and click on its <span class="demo_info_btn">i</span> button to see when it was sent. @@ -119,7 +172,7 @@ actual number (instead the number is scrambled, but will be the <em>same scrambled number</em> on other messages they've sent). </p> <h3> - Hiding a message + <span class="demo_hide_btn">X</span> Hiding a message </h3> <p> If a message can't be used to create a report, you can hide it by hovering over it and clicking its <span class="demo_hide_btn">X</span> button. If you're not diff --git a/templates/web/fixmybarangay/header.html b/templates/web/fixmybarangay/header.html index 911a72022..06a8b71a1 100644 --- a/templates/web/fixmybarangay/header.html +++ b/templates/web/fixmybarangay/header.html @@ -11,23 +11,25 @@ <meta name="HandHeldFriendly" content="true"> <meta name="mobileoptimized" content="0"> - <link rel="stylesheet" href="[% version('/cobrands/fixmybarangay/base.css') %]"> - <link rel="stylesheet" href="[% version('/cobrands/fixmybarangay/layout.css') %]" media="(min-width:48em)"> +[% SET start = c.config.ADMIN_BASE_URL IF admin %] + + <link rel="stylesheet" href="[% start %][% version('/cobrands/fixmybarangay/base.css') %]"> + <link rel="stylesheet" href="[% start %][% version('/cobrands/fixmybarangay/layout.css') %]" media="(min-width:48em)"> [% extra_css %] <!--[if (lt IE 9) & (!IEMobile)]> - <link rel="stylesheet" href="[% version('/cobrands/fixmybarangay/layout.css') %]"> + <link rel="stylesheet" href="[% start %][% version('/cobrands/fixmybarangay/layout.css') %]"> <![endif]--> - <script src="[% version('/js/modernizr.custom.js') %]" charset="utf-8"></script> - <script src="[% version('/cobrands/fixmybarangay/position_map.js') %]" charset="utf-8"></script> + <script src="[% start %][% version('/js/modernizr.custom.js') %]" charset="utf-8"></script> + <script src="[% start %][% version('/cobrands/fixmybarangay/position_map.js') %]" charset="utf-8"></script> [% INCLUDE 'common_header_tags.html', site_title = 'FixMyBarangay', js_override = '/cobrands/fixmystreet/fixmystreet.js' %] [% extra_js %] - [% allow_creation = !c.cobrand.only_authed_can_create || (c.user && c.user.from_council); %] + [% allow_creation = !c.cobrand.only_authed_can_create || (c.user && c.user.from_body); %] [% IF allow_creation %] - <link rel="stylesheet" href="[% version('/js/fancybox/jquery.fancybox-1.3.4.css') %]"> - <script src="[% version('/js/fancybox/jquery.fancybox-1.3.4.pack.js') %]" charset="utf-8"></script> - <script src="[% version('/cobrands/fixmybarangay/message_manager_client.js') %]" charset="utf-8"></script> + <link rel="stylesheet" href="[% start %][% version('/js/fancybox/jquery.fancybox-1.3.4.css') %]"> + <script src="[% start %][% version('/js/fancybox/jquery.fancybox-1.3.4.pack.js') %]" charset="utf-8"></script> + <script src="[% start %][% version('/cobrands/fixmybarangay/message_manager_client.js') %]" charset="utf-8"></script> <script> $(document).ready(function() { diff --git a/templates/web/fixmybarangay/report/_message_manager.html b/templates/web/fixmybarangay/report/_message_manager.html index 10f627a2e..3845feeef 100644 --- a/templates/web/fixmybarangay/report/_message_manager.html +++ b/templates/web/fixmybarangay/report/_message_manager.html @@ -1,10 +1,10 @@ -[% IF c.user && c.user.from_council %] +[% IF c.user && c.user.from_body %] -[% IF problem.external_source_id && problem.external_source == c.config.MESSAGE_MANAGER_URL %] +[% IF problem.external_source_id && problem.external_source == c.config.MESSAGE_MANAGER_URL %] <p class="mm-submitted-by-sms"> [%# OK to link to Message Manager here because (currently) we're only showing this to staff users %] - <a href="[%= problem.external_source %]messages/view/[%= problem.external_source_id %]" - title="view in Message Manager admin"><img + <a href="[%= problem.external_source %]messages/view/[%= problem.external_source_id %]" + title="view in Message Manager admin"><img src="/cobrands/fixmybarangay/images/mobile-22x40.png" alt="SMS"></a> This report was submitted via SMS. </p> @@ -41,7 +41,7 @@ <input name="mm-htauth-password" id="mm-htauth-password" type="password"/> </div> <div class="submit"> - <input id="available-submit" type="submit" value="Get available messages" class="green-btn"/> + <input id="available-submit" type="submit" value="Get available messages" class="green-btn"/> </div> </div> </li> @@ -49,47 +49,50 @@ <div id="mm-message-list" style="min-height:1em;"></div> </li> </ul> - + <script type="text/javascript"> $(document).ready(function() { var $mm_message_list = $('#mm-message-list'); var mm_url = "[% c.config.MESSAGE_MANAGER_URL %]"; // from config + + [%# note that the presence of a problem id implies that this is a report view page, not a problem creation page %] var problem_id = "[% problem.id %]"; + var dummy_busy = false; var fms_username = "[% c.user.email | replace('\@.*', '') %]"; var timeout_id = 0; var can_refresh = true; // disable refresh var refresh_period = 60000 * 3; // refresh messages every three minutes var has_archive_message = false; - + function sanitise_id(css_id) { - return css_id.replace(/\D/g, ""); + return css_id.replace(/\D/g, ""); } - + // call this to push the auto-refresh timeout off so it's only triggered // if there's no activity for a while function reset_timeout() { - if (refresh_period && can_refresh) { + if (mm_url && refresh_period && can_refresh) { if (timeout_id) { clearTimeout(timeout_id); } timeout_id = setTimeout(mm_refresh_messages, refresh_period); } } - + var mm_refresh_messages = function() { $('#mm-link-to-refresh').fadeOut(); $('#available-submit').click(); } - + var mm_populate_list = function(data) { $('#mm-status-message-container').find('p').text("Accessed Message Manager as " + data['username']); $('input[name=mm_text]').prop('checked', false); // uncheck all $('#mm-link-to-refresh').delay(2000).fadeIn(); reset_timeout(); } - + var mm_selected_message = function(data) { var msg_text = ""; var service_id = ""; @@ -105,71 +108,87 @@ $(document).ready(function() { $('#form_detail').val(msg_text); $('#external_source_id').val(service_id); } - - var dummy_reply_cleanup = function(data) { + + var reply_cleanup = function(data) { reset_timeout(); $('#reply_text').val(''); dummy_busy = false; mm_refresh_messages(); } - var dummy_hide_cleanup = function(data) { + var hide_cleanup = function(data) { reset_timeout(); $('#reason_text').val(''); dummy_busy = false; } - message_manager.config({url_root: mm_url, want_nice_msgs: true}); + var detach_cleanup = function(data) { + reset_timeout(); + dummy_busy = false; + mm_refresh_messages(); // refresh because detached message now appears in the list + } + + var custom_tooltips; + if (problem_id) { // this page is viewing, not creating + custom_tooltips = {tt_radio: "Select before clicking 'Copy to Update' to add this message as an update"}; + } + message_manager.config({ + url_root: mm_url, + tooltips: custom_tooltips, + want_nice_msgs: true + }); message_manager.setup_click_listener({callback:mm_selected_message}); // problem form hidden input "external_source_id": pass the MM id into FMS, if used var $problem_form = $('#problem_form').size()? $('#problem_form') : $('#form_update_form'); $('<input type="hidden"/>').attr({ - 'id': 'external_source_id', - 'name': 'external_source_id', - }).appendTo($problem_form); + 'id': 'external_source_id', + 'name': 'external_source_id', + }).appendTo($problem_form); $('#available-submit').click(function(e){ e.preventDefault(); reset_timeout(); message_manager.get_available_messages({ - callback: mm_populate_list, + callback: mm_populate_list, suggest_username: fms_username, fms_id: problem_id, anim_duration: 500 }); }); $('#available-submit').click(); - + $mm_message_list.on('mouseover', 'li.mm-msg', function(e){ e.stopPropagation(); // because replies are nested $('.mm-msg-action', $mm_message_list).stop().fadeOut(200); $(this).find('> .mm-msg-action').stop().show(); }); - + $('#mm-message-list').on('click', '.mm-info', function(e){ reset_timeout(); message_manager.show_info(sanitise_id($(this).parent().attr('id'))); }); - + $('#mm-hide-reasons').change(function(e){ - $('#reason_text').val($(this).val()); // load reason_text with boilerplate reason + $('#reason_text').val($(this).val()); // load reason_text with boilerplate reason }); $('#mm-boilerplate-replies').change(function(e){ - $('#reply_text').val($(this).val()); // load reason_text with boilerplate reason + var old_txt = $('#reply_text').val(); + var new_txt = $(this).val().replace(/(^\.\.\.|\.\.\.$)/, old_txt); + $('#reply_text').val(new_txt); // load reply_text with boilerplate reason }); - + $('#reply-submit').click(function(e) { e.preventDefault(); // TODO: pending fancybox callbacks working, force dummy_busy here - // this is possibly overly cautious anyway - dummy_busy = false; + // this is possibly overly cautious anyway + dummy_busy = false; if (! dummy_busy) { dummy_busy = true; message_manager.reply( - $('#reply_to_msg_id').val(), - $('#reply_text').val(), - {callback:dummy_reply_cleanup}); + $('#reply_to_msg_id').val(), + $('#reply_text').val(), + {callback:reply_cleanup}); } }); @@ -177,17 +196,27 @@ $(document).ready(function() { e.preventDefault(); reset_timeout(); // TODO: pending fancybox callbacks working, force dummy_busy here - // this is possibly overly cautious anyway - dummy_busy = false; + // this is possibly overly cautious anyway + dummy_busy = false; if (! dummy_busy) { dummy_busy = true; message_manager.hide( - $('#hide_msg_id').val(), - $('#reason_text').val(), - {callback:dummy_hide_cleanup}); + $('#hide_msg_id').val(), + $('#reason_text').val(), + {callback:hide_cleanup}); + } + }); + + $('#detach-submit').click(function(e) { + e.preventDefault(); + if (! dummy_busy) { + dummy_busy = true; + message_manager.mark_as_not_a_reply( + $('#detach_msg_id').val(), + {callback:detach_cleanup}); } }); - + $("a#reply").fancybox({onClosed: function(){dummy_busy=false;}}); // only show on problem display page @@ -209,7 +238,7 @@ $(document).ready(function() { $('#external_source_id').val(id); $('#form_update').val( $(this).val() ); $('#form_update_form').on('submit', function(e) { - message_manager.assign_fms_id( $('#external_source_id').val(), problem_id, { 'is_async': false } ); + message_manager.assign_fms_id( $('#external_source_id').val(), problem_id, { 'is_async': false } ); }); }); }); @@ -223,9 +252,9 @@ $(document).ready(function() { $('#show_messages').val('Show Messages'); $('#copy_to_update').stop(true,true).fadeOut(); } - + }); - + $('#mm-link-to-refresh').on('click', function(e) { e.preventDefault(); mm_refresh_messages(); @@ -250,8 +279,8 @@ $(document).ready(function() { .attr('title', 'show all available messages (for adding updates)'); $('#mm-link-to-toggle-archive').fadeIn(); can_refresh = false; - }) - }); + }) + }); } else { $('.mm-archive', $mm_message_list).stop(true,true).slideUp(1000, function(){ message_manager.say_status("Available messages:"); @@ -264,19 +293,20 @@ $(document).ready(function() { $('.mm-empty', $mm_message_list).stop(true,true).fadeIn(); can_refresh = true; reset_timeout(); - }) - }); + }) + }); } }); - + $("a#mm-link-to-help").fancybox(); message_manager.populate_boilerplate_strings('hide-reason'); - message_manager.populate_boilerplate_strings('reply'); + message_manager.populate_boilerplate_strings('reply'); }); </script> [% global.want_fmb_hidden_dialogs = 1 %] +[% global.is_fmb_creation_page = problem.id? 0 : 1 %] [% END %] diff --git a/templates/web/fixmybarangay/report/new/councils_text.html b/templates/web/fixmybarangay/report/new/councils_text.html index 24c54ea50..0001b0e68 100644 --- a/templates/web/fixmybarangay/report/new/councils_text.html +++ b/templates/web/fixmybarangay/report/new/councils_text.html @@ -1,5 +1,5 @@ <p> The information provided here will be displayed publicly on the site as well as being sent to the -relevant authority (DPWH, DEPW, or DPS). If you select the Fix Locally category then the -information will not be sent anywhere. +relevant authority (DPWH, DEPW, or DPS). +If you select a "bgy. will fix" category, then your report will be emailed to the barangay team. </p> diff --git a/templates/web/fixmybarangay/reports/index.html b/templates/web/fixmybarangay/reports/index.html new file mode 100755 index 000000000..984e0d472 --- /dev/null +++ b/templates/web/fixmybarangay/reports/index.html @@ -0,0 +1,42 @@ +[% INCLUDE 'header.html', title = loc('Summary reports'), bodyclass => 'fullwidthpage' %] + +<h1>[% loc('All Reports') %]</h1> + +<div class="intro"> +<p> +[% loc('This is a summary of all reports on this site; select a particular barangay to see the reports sent there.') %] + +</p> +</div> + +<table cellpadding="3" cellspacing="1" border="0" class="nicetable"> +<thead> +<tr> +<th class="title">[% loc('Name') %]</th> +<th class="data">[% loc('New <br>problems') %]</th> +<th class="data">[% loc('Older <br>problems') %]</th> +<th class="data">[% loc('Old / unknown <br>problems') %]</th> +<th class="data">[% loc('Recently <br>fixed') %]</th> +<th class="data">[% loc('Older <br>fixed') %]</th> +</tr> +</thead> + +<tbody> +[% FOREACH body IN bodies %] +<tr align="center" +[%- IF ! (loop.count % 2) %] class="a" +[%- END %]> +<td class="title"><a href="[% body.url(c) %]">[% body.name %]</a></td> +<td class="data">[% open.${body.id}.new or 0 %]</td> +<td class="data">[% open.${body.id}.older or 0 %]</td> +<td class="data">[% open.${body.id}.unknown or 0 %]</td> +<td class="data">[% fixed.${body.id}.new or 0 %]</td> +<td class="data">[% fixed.${body.id}.old or 0 %]</td> +</tr> +[% TRY %][% PROCESS "reports/_extras.html" %][% CATCH file %][% END %] +[% END %] +</tbody> +</table> + + +[% INCLUDE 'footer.html', pagefooter = 'yes' %] diff --git a/templates/web/fixmystreet/around/_updates.html b/templates/web/fixmystreet/around/_updates.html index 75327c935..458983e8f 100755 --- a/templates/web/fixmystreet/around/_updates.html +++ b/templates/web/fixmystreet/around/_updates.html @@ -1,5 +1,5 @@ <div class="shadow-wrap"> <ul id="key-tools" class="singleton"> - <li><a class="feed" id="key-tool-around-updates" href="[% email_url | html %]">Get updates</a></li> + <li><a class="feed" id="key-tool-around-updates" href="[% email_url | html %]">[% loc("Get updates") %]</a></li> </ul> </div> diff --git a/templates/web/fixmystreet/around/around_index.html b/templates/web/fixmystreet/around/around_index.html index c547b7ba9..0d9d35171 100644 --- a/templates/web/fixmystreet/around/around_index.html +++ b/templates/web/fixmystreet/around/around_index.html @@ -9,7 +9,7 @@ %] [% IF location_error %] - <p class="form-error">[% location_error %]</p> + [% INCLUDE 'around/location_error.html' %] [% END %] [% IF possible_location_matches %] diff --git a/templates/web/fixmystreet/around/location_error.html b/templates/web/fixmystreet/around/location_error.html new file mode 100644 index 000000000..fc9b2b8ce --- /dev/null +++ b/templates/web/fixmystreet/around/location_error.html @@ -0,0 +1 @@ +<p class="form-error">[% location_error %]</p> diff --git a/templates/web/fixmystreet/around/postcode_form.html b/templates/web/fixmystreet/around/postcode_form.html index d48a53183..ed5d700f0 100644 --- a/templates/web/fixmystreet/around/postcode_form.html +++ b/templates/web/fixmystreet/around/postcode_form.html @@ -18,7 +18,7 @@ <label for="pc">[% question %]:</label> <div> <input type="text" name="pc" value="[% pc | html %]" id="pc" size="10" maxlength="200" placeholder="[% tprintf(loc('e.g. ‘%s’ or ‘%s’'), c.cobrand.example_places) %]"> - <input type="submit" value="[% loc('Go') %]" id="submit"> + <input type="submit" value="[% loc('Go') %]" id="sub"> </div> [% IF partial_token %] diff --git a/templates/web/fixmystreet/auth/general.html b/templates/web/fixmystreet/auth/general.html index 7fa2b57fe..b9d02c18b 100644 --- a/templates/web/fixmystreet/auth/general.html +++ b/templates/web/fixmystreet/auth/general.html @@ -50,7 +50,7 @@ <h5>[% loc('<strong>No</strong> let me sign in by email') %]</h5> <div class="general-sidebar-notes"> - <p>Providing a name and password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports.</p> + <p>[% loc('Providing a name and password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports.') %]</p> </div> <label for="name">[% loc('Name') %]</label> diff --git a/templates/web/fixmystreet/contact/address.html b/templates/web/fixmystreet/contact/address.html deleted file mode 100644 index b7ff37e5c..000000000 --- a/templates/web/fixmystreet/contact/address.html +++ /dev/null @@ -1,11 +0,0 @@ -<div class="contact-details"> -<p>FixMyStreet is a service provided by mySociety, which is the project of a -registered charity. The charity is called UK Citizens Online Democracy and is charity number 1076346.</p> -<p>mySociety can be contacted by email at <a href="mailto:hello@mysociety.org">hello@mysociety.org</a>, -or by post at:</p> -<p>mySociety<br> -483 Green Lanes<br> -London<br> -N13 4BS<br> -UK</p> -</div> diff --git a/templates/web/fixmystreet/contact/blurb.html b/templates/web/fixmystreet/contact/blurb.html new file mode 100644 index 000000000..21a4ae715 --- /dev/null +++ b/templates/web/fixmystreet/contact/blurb.html @@ -0,0 +1,15 @@ +[% IF c.cobrand.moniker == 'fixmystreet' %] +<h3>Send a message to FixMyStreet's technical support team</h3> + +<h4>If you have questions about FixMyStreet</h4> +[% END %] + +<p> +[% tprintf( loc("It's often quickest to <a href=\"%s\">check our FAQs</a> and see if the answer is there."), c.uri_for('/faq') ) %] +</p> + +<p> +[% loc('Please do <strong>not</strong> report problems through this form; messages go to +the team behind FixMyStreet, not a council. To report a problem, +please <a href="/">go to the front page</a> and follow the instructions.') %] +</p> diff --git a/templates/web/fixmystreet/contact/index.html b/templates/web/fixmystreet/contact/index.html index 368fb0628..44aa5c2e4 100644 --- a/templates/web/fixmystreet/contact/index.html +++ b/templates/web/fixmystreet/contact/index.html @@ -1,10 +1,26 @@ [% INCLUDE 'header.html', title = loc('Contact Us') robots = 'noindex,nofollow' - bodyclass => 'twothirdswidthpage' + 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><a href="/privacy">Privacy and cookies</a></li> + <li><strong>Contact FixMyStreet</strong></li> + </ul> + </aside> +</div> + +[% IF c.cobrand.moniker == 'fixmystreet' %] +<h1>FixMyStreet technical support</h1> +[% ELSE %] <h1>[% loc('Contact the team') %]</h1> +[% END %] <form method="post" action="/contact/submit" class="validate"> <fieldset> @@ -19,9 +35,9 @@ <blockquote> <p> [% IF update.anonymous %] - [% tprintf( loc('Update below added anonymously at %s'), prettify_epoch( update.confirmed_local.epoch ) ) %] + [% tprintf( loc('Update below added anonymously at %s'), prettify_dt( update.confirmed ) ) %] [% ELSE %] - [% tprintf( loc('Update below added by %s at %s'), update.name, prettify_epoch( update.confirmed_local.epoch ) ) | html %] + [% tprintf( loc('Update below added by %s at %s'), update.name, prettify_dt( update.confirmed ) ) | html %] [% END %] </p> @@ -39,13 +55,13 @@ </p> <blockquote> - <h2>[% problem.title | html %]</h2> + <h2>[% problem.title_safe | html %]</h2> <p> [% IF problem.anonymous %] - [% tprintf( loc('Reported anonymously at %s'), prettify_epoch( problem.confirmed_local.epoch ) ) %] + [% tprintf( loc('Reported anonymously at %s'), prettify_dt( problem.confirmed ) ) %] [% ELSE %] - [% tprintf( loc('Reported by %s at %s'), problem.user.name, prettify_epoch( problem.confirmed_local.epoch ) ) | html %] + [% tprintf( loc('Reported by %s at %s'), problem.user.name, prettify_dt( problem.confirmed ) ) | html %] [% END %] </p> @@ -82,6 +98,7 @@ [% END %] <input type="text" class="required" name="subject" id="form_subject" value="[% subject | html %]" size="30"> + [% INCLUDE 'contact/who.html' %] <label for="form_message">[% loc('Message') %]</label> [% IF field_errors.message %] @@ -95,6 +112,12 @@ </fieldset> </form> +<h4>[% loc("Don't like forms?") %]</h4> + +<p> +[% tprintf( loc("You can contact technical support on <a href='mailto:%s'>%s</a>"), contact_email, contact_email) %] +</p> + [% TRY %][% INCLUDE 'contact/address.html' %][% CATCH file %][% END %] [% INCLUDE 'footer.html' pagefooter = 'yes' %] diff --git a/templates/web/fixmystreet/contact/who.html b/templates/web/fixmystreet/contact/who.html new file mode 100644 index 000000000..49f22b612 --- /dev/null +++ b/templates/web/fixmystreet/contact/who.html @@ -0,0 +1,77 @@ +[% IF c.cobrand.moniker == 'fixmystreet' %] + <h4>Topic:</h4> + + [% IF field_errors.dest %] + <div class="form-error">[% field_errors.dest %]</div> + [% ELSIF field_errors.not_for_us %] + <div class="form-error">You can only contact the team behind FixMyStreet using our contact form</div> + + [% IF dest == 'council' %] + <p> + We’re not the council: we just run this website which helps you report issues + to them. + </p> + + <p> + <strong>If you want to report a street problem</strong>, return to the + FixMyStreet homepage and enter your postcode. You can then make a report. + We'll send it to your council, and publish it on FixMyStreet. + </p> + + <p> + <strong>If your problem is not a street issue</strong>, or is <strong>not + suitable for publication on the site</strong>, then FixMyStreet isn't the + right place for it. You should find contact details on your council's own + website. + </p> + [% ELSIF dest == 'update' %] + <p> + FixMyStreet is great for reporting problems, but we don't fix them - your + council oversees that. + </p> + + <p> + <strong>If you'd like to chase your report</strong>, please reply directly + to any response - or auto-reply - that your council sent you. Check that + it has your council's email address on it so that it goes to the right place. + </p> + + <p> + It's a good idea to include the URL [web address] of your original FixMyStreet + report. + </p> + + <p> + <strong>If you're not having any luck getting your community problems fixed</strong>, + you could try contacting your local councillor, using another useful mySociety site: + <a href="https://www.writetothem.com/">https://www.writetothem.com/</a>. + </p> + + [% END %] + [% END %] + + <div class="checkbox-group"> + <input name="dest" id="dest_help" type="radio" value="help" class="required"[% IF dest AND dest == 'help' %] checked[% END %]> + <label class="inline" for="dest_help">I need help using the site</label> + </div> + + <div class="checkbox-group"> + <input name="dest" id="dest_feeback" type="radio" value="feeback" class="required"[% IF dest AND dest == 'feeback' %] checked[% END %]> + <label class="inline" for="dest_feeback">I have feedback about the site</label> + </div> + + <div class="checkbox-group"> + <input name="dest" id="dest_from_council" type="radio" value="from_council" class="required"[% IF dest AND dest == 'from_council' %] checked[% END %]> + <label class="inline" for="dest_from_council">I am from a council and I have a question for the FixMyStreet team</label> + </div> + + <div class="checkbox-group"> + <input name="dest" id="dest_council" type="radio" value="council" class="required"[% IF dest AND dest == 'council' %] checked[% END %]> + <label class="inline" for="dest_council">I want to report a street problem</label> + </div> + + <div class="checkbox-group"> + <input name="dest" id="dest_update" type="radio" value="update"[% IF dest AND dest == 'update' %] checked[% END %]> + <label class="inline" for="dest_update">My street problem hasn't been fixed</label> + </div> +[% END %] diff --git a/templates/web/fixmystreet/faq/faq-en-gb.html b/templates/web/fixmystreet/faq/faq-en-gb.html index 8628085e5..b9d720dab 100755 --- a/templates/web/fixmystreet/faq/faq-en-gb.html +++ b/templates/web/fixmystreet/faq/faq-en-gb.html @@ -32,7 +32,7 @@ or clearing</strong>, such as: <li>Flytipping or litter <li>Streetcleaning, such as broken glass in a cycle lane [% IF c.cobrand.moniker != 'southampton' %] - <li>Unlit lamposts + <li>Unlit lampposts [% END %] <li>Potholes </ul> @@ -74,23 +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 + — 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 c45c3c536..cb39416f4 100644 --- a/templates/web/fixmystreet/footer.html +++ b/templates/web/fixmystreet/footer.html @@ -2,14 +2,16 @@ <footer role="content-info"> <div class="tablewrapper bordered"> <div id="footer-mobileapps"> - <h4>Mobile apps</h4> - - <ul> - <li><a class="m-app-iphone" href="http://itunes.apple.com/gb/app/fixmystreet/id297456545">iPhone</a></li> - <li><a class="m-app-droid" href="https://market.android.com/details?id=com.android.fixmystreet">Android</a></li> - <li><a class="m-app-nokia" href="http://store.ovi.com/content/107557">Nokia</a></li> - </ul> - </div> + <h4>The FixMyStreet App</h4> + <p> + <a href="https://itunes.apple.com/gb/app/fixmystreet/id297456545"> + <img alt="FixMyStreet app on the App Store" src="/cobrands/fixmystreet/images/itunes_store_logo.png" /> + </a> + <a href="https://play.google.com/store/apps/details?id=org.mysociety.FixMyStreet"> + <img alt="FixMyStreet Android app on Google Play" src="/cobrands/fixmystreet/images/google_play_logo.png" /> + </a> + </p> + </div> <div id="footer-help"> <ul> diff --git a/templates/web/fixmystreet/header.html b/templates/web/fixmystreet/header.html index 85ed2c0e1..6ed84a85d 100644 --- a/templates/web/fixmystreet/header.html +++ b/templates/web/fixmystreet/header.html @@ -11,6 +11,8 @@ <meta name="HandHeldFriendly" content="true"> <meta name="mobileoptimized" content="0"> + [% INCLUDE 'header_opengraph.html' %] + [% SET start = c.config.ADMIN_BASE_URL IF admin %] <link rel="stylesheet" href="[% start %][% version('/cobrands/' _ c.cobrand.moniker _ '/base.css') %]"> @@ -29,6 +31,7 @@ <link rel="canonical" href="http://www.fixmystreet.com[% c.req.uri.path_query %]"> [% END %] + [% TRY %][% PROCESS 'header_extra.html' %][% CATCH file %][% END %] [% INCLUDE 'tracking_code.html' %] </head> @@ -39,7 +42,7 @@ <div class="table-cell"> <header id="site-header" role="banner"> <div class="container"> - <a href="/" id="site-logo">[% c.cobrand.site_title | html %]</a> + [% INCLUDE 'header_logo.html' %] <a href="#main-nav" id="nav-link">Main Navigation</a> </div> </header> diff --git a/templates/web/fixmystreet/header_logo.html b/templates/web/fixmystreet/header_logo.html new file mode 100644 index 000000000..e5e4aae60 --- /dev/null +++ b/templates/web/fixmystreet/header_logo.html @@ -0,0 +1 @@ + <a href="/" id="site-logo">[% c.cobrand.site_title | html %]</a> diff --git a/templates/web/fixmystreet/header_opengraph.html b/templates/web/fixmystreet/header_opengraph.html new file mode 100644 index 000000000..45e7c246c --- /dev/null +++ b/templates/web/fixmystreet/header_opengraph.html @@ -0,0 +1,9 @@ + <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"> diff --git a/templates/web/fixmystreet/index.html b/templates/web/fixmystreet/index.html index 5d7d31baa..4d674a17e 100644 --- a/templates/web/fixmystreet/index.html +++ b/templates/web/fixmystreet/index.html @@ -42,13 +42,18 @@ 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"> [% FOREACH problem IN recent_photos %] - [% problem.photo = 1; # Definitely is - INCLUDE 'report/_item.html', no_fixed = 1 %] + [% INCLUDE 'report/_item.html', no_fixed = 1 %] [% END %] </ul> </section> diff --git a/templates/web/fixmystreet/my/my.html b/templates/web/fixmystreet/my/my.html index 258f147c6..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’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', @@ -57,7 +64,7 @@ END %] <li>“[% u.text | html %]” – <a href="[% c.uri_for( '/report', u.problem_id ) %]#update_[% u.id %]">[% u.problem.title | html %]</a>. <p><small class="council_sent_info"> - [% tprintf( loc("Added %s"), prettify_epoch( u.confirmed_local.epoch, 'date' ) ) %] + [% tprintf( loc("Added %s"), prettify_dt( u.confirmed, 'date' ) ) %] </small></p> </li> [% "</ul>" IF loop.last %] diff --git a/templates/web/fixmystreet/pagination.html b/templates/web/fixmystreet/pagination.html deleted file mode 100644 index 4f4d00a79..000000000 --- a/templates/web/fixmystreet/pagination.html +++ /dev/null @@ -1,15 +0,0 @@ -[% IF pager.last_page > 1 %] -<section class="full-width"> - <p class="pagination"> - [% IF pager.previous_page %] - <a class="prev" href="[% c.req.uri_with({ $param => pager.previous_page }) %]">Previous</a> - [% END %] - - [% pager.first %] to [% pager.last %] of [% pager.total_entries %] - - [% IF pager.next_page %] - <a class="next" href="[% c.req.uri_with({ $param => pager.next_page }) %]">Next</a> - [% END %] - </p> -</section> -[% END %] diff --git a/templates/web/fixmystreet/report/_item.html b/templates/web/fixmystreet/report/_item.html index 6014074e0..8e2e73a8d 100644 --- a/templates/web/fixmystreet/report/_item.html +++ b/templates/web/fixmystreet/report/_item.html @@ -1,20 +1,24 @@ <li> <a class="text" href="[% c.uri_for('/report', problem.id ) %]"> - [% IF problem.photo %] - <img class="img" height="60" width="90" src="/photo/[% problem.id %].fp.jpeg" alt=""> + [% IF problem.photo; + photo = problem.get_photo_params + %] + <img class="img" height="60" width="90" src="[% photo.url_fp %]" alt=""> [% END %] <h4>[% problem.title | html %]</h4> - <small>[% IF problem.confirmed_local %] - [%- prettify_epoch( problem.confirmed_local.epoch, 1 ) %] - [%- ELSE %] - [%- prettify_epoch( problem.confirmed, 1 ) %] - [%- END %] + <small> + [% IF c.cobrand.moniker != 'fixamingata' %] [%# Default: %] + [%- prettify_dt( problem.confirmed, 1 ) %] + [% ELSE %] [%# Swedish cobrand fixamingata: %] + [%- prettify_dt( problem.confirmed) %] + [% END %] [%- IF dist %], [% dist %]km[% END %] - [%- IF include_lastupdate AND problem.confirmed != problem.lastupdate AND problem.whensent != problem.lastupdate %], last updated [% prettify_epoch( problem.lastupdate, 1 ) %] + [%- 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.councils > 1 %] [% loc('(sent to both)') %] - [% ELSIF problem.councils == 0 %] [% loc('(not sent to council)') %] + [% 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 %] diff --git a/templates/web/fixmystreet/report/banner.html b/templates/web/fixmystreet/report/banner.html index 58712604e..83c780958 100644 --- a/templates/web/fixmystreet/report/banner.html +++ b/templates/web/fixmystreet/report/banner.html @@ -5,7 +5,7 @@ </div> [% END %] -[% IF problem.is_open AND date.now - problem.lastupdate_local.epoch > 8 * 7 * 24 * 60 * 60 %] +[% IF c.cobrand.moniker != 'bromley' AND problem.bodies_str != '2482' AND problem.is_open AND date.now - problem.lastupdate.epoch > 8 * 7 * 24 * 60 * 60 %] [% INCLUDE banner, id = 'unknown', text = loc('Unknown') %] [% END %] [% IF problem.is_fixed %] @@ -14,8 +14,8 @@ [% IF problem.is_closed %] [% INCLUDE banner, id = 'closed', text = loc('Closed') %] [% END %] -[% states = [ 'investigating', 'in progress', 'planned' ]; - IF states.grep(problem.state).size %] +[% states = [ 'investigating', 'in progress', 'planned', 'action scheduled' ]; + IF c.cobrand.moniker != 'bromley' AND problem.bodies_str != '2482' && states.grep(problem.state).size %] [% INCLUDE banner, id = 'progress', text = loc('In progress') %] [% END %] diff --git a/templates/web/fixmystreet/report/display.html b/templates/web/fixmystreet/report/display.html index 8c6498448..b75ef92bc 100644 --- a/templates/web/fixmystreet/report/display.html +++ b/templates/web/fixmystreet/report/display.html @@ -2,18 +2,22 @@ PROCESS "report/photo-js.html"; PROCESS "maps/${map.type}.html"; - problem_title = problem.title _ ' - ' _ loc('Viewing a problem'); + problem_title = problem.title_safe _ ' - ' _ loc('Viewing a problem'); INCLUDE 'header.html' title = problem_title rss = [ loc('Updates to this problem, FixMyStreet'), "/rss/$problem.id" ] robots = 'index, nofollow' bodyclass = 'mappage'; - - allow_creation = !c.cobrand.only_authed_can_create || (c.user && c.user.from_council); %] [% map_html %] + [% IF c.cobrand.moniker == 'zurich' %] + <p id='sub_map_links'> + <a class="hidden-nojs" id="map_layer_toggle" href="">Stadtplan</a> + </p> + [% END %] + </div> [% INCLUDE 'report/banner.html' %] @@ -23,23 +27,29 @@ <div class="shadow-wrap"> <ul id="key-tools"> - [% IF c.user_exists AND c.cobrand.users_can_hide AND c.user.belongs_to_council( c.cobrand.council_id ) %] - <li><form method="post" action="/report/delete/[% problem.id %]"> + [% IF c.user_exists AND c.cobrand.users_can_hide AND c.user.belongs_to_body( c.cobrand.council_id ) %] + <li><form method="post" action="/report/delete/[% problem.id %]" id="remove-from-site-form"> <input type="submit" id="key-tool-report-abuse" class="abuse" value="Remove from site"> </form></li> - [% ELSE %] + [% ELSIF c.cobrand.moniker != 'zurich' %] <li><a rel="nofollow" id="key-tool-report-abuse" class="abuse" href="[% c.uri_for( '/contact', { id => problem.id } ) %]">[% loc('Report abuse' ) %]</a></li> [% END %] + [% IF c.cobrand.moniker != 'zurich' %] <li><a rel="nofollow" id="key-tool-report-updates" class="feed" href="[% c.uri_for( '/alert/subscribe', { id => problem.id } ) %]">[% loc('Get updates' ) %]</a></li> + [% END %] [% IF c.cobrand.moniker == 'fixmystreet' %] <li><a rel="nofollow" id="key-tool-report-share" class="share" href="#report-share">[% loc('Share') %]</a></li> [% END %] + [% IF c.cobrand.moniker == 'zurich' %] + <li><a class="chevron" id="key-tool-problems-nearby" href="[% c.uri_for( '/around', { lat => short_latitude, lon => short_longitude } ) %]">[% loc( 'Problems on the map' ) %]</a></li> + [% ELSE %] <li><a class="chevron" id="key-tool-problems-nearby" href="[% c.uri_for( '/around', { lat => short_latitude, lon => short_longitude } ) %]">[% loc( 'Problems nearby' ) %]</a></li> + [% END %] </ul> [% IF c.cobrand.moniker == 'fixmystreet' %] <div id="report-share" class="hidden-js" align="center"> - <a href="https://twitter.com/share" class="twitter-share-button" data-text="I just reported ‘[% problem.title | html %]’" data-via="fixmystreet" data-related="mysociety" data-count="none" data-dnt="true">Tweet</a> + <a href="https://twitter.com/share" class="twitter-share-button" data-text="I just reported ‘[% problem.title_safe | html %]’" data-via="fixmystreet" data-related="mysociety" data-count="none" data-dnt="true">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> <iframe src="//www.facebook.com/plugins/like.php?href=[% c.req.uri | uri %]&send=false&layout=button_count&width=90&show_faces=false&action=like&colorscheme=light&font&height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:90px; height:21px;" allowTransparency="true"></iframe> </div> @@ -66,154 +76,5 @@ </div> [% INCLUDE 'report/updates.html' %] - -[% IF allow_creation %] -<div id="update_form"> - <h2>[% loc( 'Provide an update') %]</h2> - - [% IF c.cobrand.moniker != 'emptyhomes' AND c.cobrand.moniker != 'stevenage' %] - <div class="general-sidebar-notes"> - [% INCLUDE 'report/updates-sidebar-notes.html' %] - </div> - [% END %] - - [% INCLUDE 'errors.html' %] - - <form method="post" action="[% c.uri_for( '/report/update' ) %]" id="form_update_form" name="updateForm" class="validate"[% IF c.cobrand.allow_photo_upload %] enctype="multipart/form-data"[% END %]> - <fieldset> - <input type="hidden" name="submit_update" value="1"> - <input type="hidden" name="id" value="[% problem.id | html %]"> - - <label for="form_update">[% loc( 'Update' ) %]</label> - [% IF field_errors.update %] - <div class='form-error'>[% field_errors.update %]</div> - [% END %] - <textarea rows="7" cols="30" name="update" id="form_update" placeholder="[% loc('Please write your update here') %]" required>[% update.text | html %]</textarea> - - [% IF c.user && c.user.belongs_to_council( problem.council ) %] - <label for="form_state">[% loc( 'State' ) %]</label> - <select name="state" id="form_state"> - [% FOREACH state IN [ ['confirmed', loc('Open')], ['investigating', - loc('Investigating')], ['planned', loc('Planned')], ['in progress', - loc('In Progress')], ['closed', loc('Closed')], ['fixed', loc('Fixed')] ] %] - <option [% 'selected ' IF state.0 == problem.state %] value="[% state.0 %]">[% state.1 %]</option> - [% END %] - </select> - [% ELSE %] - [% IF problem.is_fixed AND c.user_exists AND c.user.id == problem.user_id %] - - <input type="checkbox" name="reopen" id="form_reopen" value="1"[% ' checked' IF update.mark_open %]> - <label class="inline" for="form_reopen">[% loc('This problem has not been fixed') %]</label> - - [% ELSIF !problem.is_fixed %] - - <div class="checkbox-group"> - <input type="checkbox" name="fixed" id="form_fixed" value="1"[% ' checked' IF update.mark_fixed %]> - <label class="inline" for="form_fixed">[% loc('This problem has been fixed') %]</label> - </div> - - [% END %] - [% END %] - - [% IF c.cobrand.allow_photo_upload %] - <div id="fileupload_normalUI"> - [% IF upload_fileid %] - <img align="right" src="/photo/[% upload_fileid %].temp.jpeg" alt=""> - <p>[% loc('You have already attached a photo to this update, attaching another one will replace it.') %]</p> - <input type="hidden" name="upload_fileid" value="[% upload_fileid %]"> - [% END %] - <label for="form_photo">[% loc('Photo') %]</label> - [% IF field_errors.photo %] - <p class='form-error'>[% field_errors.photo %]</p> - [% END %] - <input type="file" name="photo" id="form_photo"> - </div> - [% END %] - - [% IF c.user_exists %] - - [% INCLUDE name %] - - <input class="final-submit green-btn" type="submit" id="update_post" value="[% loc('Post') %]"> - - - [% ELSE %] - - <label for="form_rznvy">[% loc('Email' ) %]</label> - [% IF field_errors.email %] - <p class='form-error'>[% field_errors.email %]</p> - [% END %] - <input type="email" name="rznvy" id="form_rznvy" value="[% update.user.email | html %]" placeholder="[% loc('Your email address' ) %]" required> - - <div id="form_sign_in"> - <h3>[% loc("Now to submit your update…") %]</h3> - <h2>[% loc("Do you have a FixMyStreet password?") %]</h2> - - <div id="form_sign_in_yes" class="form-box"> - <h5>[% loc('<strong>Yes</strong> I have a password') %]</h5> - - <label class="hidden-js n" for="password_sign_in">[% loc('Yes I have a password') %]</label> - [% IF field_errors.password %] - <p class='form-error'>[% field_errors.password %]</p> - [% END %] - <div class="form-txt-submit-box"> - <input type="password" name="password_sign_in" id="password_sign_in" value="" placeholder="[% loc('Your password') %]"> - <input class="green-btn" type="submit" name="submit_sign_in" id="submit_sign_in" value="[% loc('Post') %]"> - </div> - - <div class="checkbox-group"> - <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 class="general-sidebar-notes" id="forgotten-pw"> - <p class="dark">[% loc('Forgotten your password?') %]</p> - <p>[% loc('Confirm by email below, providing a new password at that point. When you confirm, your password will be updated.') %]</p> - </div> - - </div> - <div id="form_sign_in_no" class="form-box"> - <h5>[% loc('<strong>No</strong> Let me confirm my update by email') %]</h5> - - [% INCLUDE name %] - - <div class="general-sidebar-notes"> - <p class="dark">[% loc('We never show your email') %]</p> - <p>[% loc('Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports.') %]</p> - </div> - - <label for="password_register">[% loc('Password (optional)') %]</label> - - <div class="form-txt-submit-box"> - <input type="password" name="password_register" id="password_register" value="" placeholder="[% loc('Enter a password') %]"> - <input class="green-btn" type="submit" name="submit_register" id="submit_register" value="[% loc('Post') %]"> - </div> - </div> - </div> - - [% END %] - </fieldset> - </form> -</div> -[% END %] - - +[% INCLUDE 'report/update-form.html' %] [% INCLUDE 'footer.html' %] - -[% BLOCK name %] - [% INCLUDE 'report/new/extra_name.html' %] - <label for="form_name">[% loc('Name') %]</label> - [% IF field_errors.name %] - <p class='form-error'>[% field_errors.name %]</p> - [% END %] - <input type="text" [% IF problem.council == '2482' %]class="validName" [% END %]name="name" id="form_name" value="[% update.name || c.user.name | html %]" placeholder="[% loc('Your name') %]"> - - <div class="checkbox-group"> - <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' UNLESS update.anonymous %]> - <label class="inline" for="form_may_show_name">[% loc('Show my name publicly') %]</label> - </div> - <div class="checkbox-group"> - <input type="checkbox" name="add_alert" id="form_add_alert" value="1"[% ' checked' IF add_alert %]> - <label class="inline" for="form_add_alert">[% loc( 'Alert me to future updates' ) %]</label> - </div> -[% END %] diff --git a/templates/web/fixmystreet/report/new/fill_in_details_form.html b/templates/web/fixmystreet/report/new/fill_in_details_form.html index 82f9b0da5..e2e091460 100644 --- a/templates/web/fixmystreet/report/new/fill_in_details_form.html +++ b/templates/web/fixmystreet/report/new/fill_in_details_form.html @@ -15,7 +15,7 @@ [% PROCESS 'report/new/councils_text.html' %] [% END %] - [% IF c.cobrand.moniker != 'fixmybarangay' || ( c.user && c.user.from_council ) %] + [% IF c.cobrand.moniker != 'fixmybarangay' || ( c.user && c.user.from_body ) %] <div id="report-a-problem-sidebar"> <!-- The text for this section needs checking, but I can't work out which bit comes from where @@ -51,8 +51,8 @@ [% INCLUDE 'report/new/form_heading.html' %] - [% IF field_errors.council %] - <p class='form-error'>[% field_errors.council %]</p> + [% IF field_errors.bodies %] + <p class='form-error'>[% field_errors.bodies %]</p> [% END %] @@ -125,21 +125,11 @@ [%# if there is nothing in the name field then set check box as default on form %] <div class="checkbox-group"> - <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1" - [% IF c.cobrand.moniker == 'fixmybarangay' && c.user.from_council %] - [%# - FMB staff reports are anonymous by default; so may_show_name is checked only if explicitly set to 0. - If the user has not set it (that is, it is null) TemplateToolkit sees an empty string. - %] - [% 'checked' IF report.anonymous==0 %] - [% ELSE %] - [% 'checked' IF !report.anonymous %] - [% END %] - > + <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF report.anonymous==0 OR (c.cobrand.default_show_name AND report.anonymous=='') %]> <label class="inline" for="form_may_show_name">[% loc('Show my name publicly') %] </label> </div> - [% IF c.cobrand.moniker != 'fixmybarangay' || c.user.from_council %] + [% IF c.cobrand.moniker != 'fixmybarangay' || c.user.from_body %] <div class="general-sidebar-notes"> <p>[% loc('We never show your email address or phone number.') %]</p> </div> @@ -203,7 +193,7 @@ [%# if there is nothing in the name field then set check box as default on form %] <div class="checkbox-group"> - <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF !report.anonymous %]> + <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF report.anonymous==0 OR (c.cobrand.default_show_name AND report.anonymous=='') %]> <label class="inline" for="form_may_show_name">[% loc('Show my name publicly') %]</label> </div> diff --git a/templates/web/fixmystreet/report/new/fill_in_details_text.html b/templates/web/fixmystreet/report/new/fill_in_details_text.html index b9ce7e110..05527bb24 100644 --- a/templates/web/fixmystreet/report/new/fill_in_details_text.html +++ b/templates/web/fixmystreet/report/new/fill_in_details_text.html @@ -1,9 +1,6 @@ [% IF area_ids_to_list.size != 0; - loc('The council won’t be able to help unless you leave as much -detail as you can. Please describe the exact location of the problem (e.g. on a -wall), what it is, how long it has been there, a description (and a photo of -the problem if you have one), etc.'); + loc('The council won’t be able to help unless you leave as much detail as you can. Please describe the exact location of the problem (e.g. on a wall), what it is, how long it has been there, a description (and a photo of the problem if you have one), etc.'); IF category_extras; ' ' _ loc('Some categories may require additional information.'); END; diff --git a/templates/web/fixmystreet/report/new/notes.html b/templates/web/fixmystreet/report/new/notes.html index aa73f0694..657390c79 100644 --- a/templates/web/fixmystreet/report/new/notes.html +++ b/templates/web/fixmystreet/report/new/notes.html @@ -2,8 +2,10 @@ <ul class="plain-list"> <li>[% loc("We will only use your personal information in accordance with our <a href=\"/privacy\">privacy policy.</a>") %]</li> + [% IF c.cobrand.moniker != 'zurich' %] <li>[% loc("Please be polite, concise and to the point.") %]</li> - <li>[% loc("Please do not be abusive — abusing your council devalues the service for all users.") %]</li> + <li>[% loc("Please do not be abusive — abusing your council devalues the service for all users.") %]</li> <li>[% loc("Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation.") %]</li> + [% END %] <li>[% loc("Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site remember that you can contact your council directly using their own website.") %]</li> </ul> diff --git a/templates/web/fixmystreet/report/photo-js.html b/templates/web/fixmystreet/report/photo-js.html index df0e2f92d..9075ce005 100644 --- a/templates/web/fixmystreet/report/photo-js.html +++ b/templates/web/fixmystreet/report/photo-js.html @@ -1,4 +1,4 @@ -[% IF c.cobrand.allow_photo_display %] +[% IF c.cobrand.allow_photo_display(problem) %] [% extra_css = BLOCK %] <link rel="stylesheet" href="[% version('/js/fancybox/jquery.fancybox-1.3.4.css') %]"> [% END %] diff --git a/templates/web/fixmystreet/report/update-form.html b/templates/web/fixmystreet/report/update-form.html new file mode 100644 index 000000000..add176549 --- /dev/null +++ b/templates/web/fixmystreet/report/update-form.html @@ -0,0 +1,150 @@ +[% allow_creation = !c.cobrand.only_authed_can_create || (c.user && c.user.from_body) %] +[% IF allow_creation %] +<div id="update_form"> + <h2>[% loc( 'Provide an update') %]</h2> + + [% IF c.cobrand.moniker != 'emptyhomes' AND c.cobrand.moniker != 'stevenage' %] + <div class="general-sidebar-notes"> + [% INCLUDE 'report/updates-sidebar-notes.html' %] + </div> + [% END %] + + [% INCLUDE 'errors.html' %] + + <form method="post" action="[% c.uri_for( '/report/update' ) %]" id="form_update_form" name="updateForm" class="validate"[% IF c.cobrand.allow_photo_upload %] enctype="multipart/form-data"[% END %]> + <fieldset> + <input type="hidden" name="submit_update" value="1"> + <input type="hidden" name="id" value="[% problem.id | html %]"> + + <label for="form_update">[% loc( 'Update' ) %]</label> + [% IF field_errors.update %] + <div class='form-error'>[% field_errors.update %]</div> + [% END %] + <textarea rows="7" cols="30" name="update" id="form_update" placeholder="[% loc('Please write your update here') %]" required>[% update.text | html %]</textarea> + + [% IF c.user && c.user.belongs_to_body( problem.bodies_str ) %] + <label for="form_state">[% loc( 'State' ) %]</label> + <select name="state" id="form_state"> + [% FOREACH state IN [ ['confirmed', loc('Open')], ['investigating', + loc('Investigating')], ['action scheduled', loc('Action Scheduled')], + ['in progress', loc('In Progress')], ['duplicate', loc('Duplicate')], + ['unable to fix', loc('Unable to fix')], ['not responsible', loc('Not Responsible')], + ['fixed', loc('Fixed')] ] %] + <option [% 'selected ' IF state.0 == problem.state %] value="[% state.0 %]">[% state.1 %]</option> + [% END %] + </select> + [% ELSE %] + [% IF problem.is_fixed AND c.user_exists AND c.user.id == problem.user_id %] + + <input type="checkbox" name="reopen" id="form_reopen" value="1"[% ' checked' IF update.mark_open %]> + <label class="inline" for="form_reopen">[% loc('This problem has not been fixed') %]</label> + + [% ELSIF !problem.is_fixed %] + + <div class="checkbox-group"> + <input type="checkbox" name="fixed" id="form_fixed" value="1"[% ' checked' IF update.mark_fixed %]> + <label class="inline" for="form_fixed">[% loc('This problem has been fixed') %]</label> + </div> + + [% END %] + [% END %] + + [% IF c.cobrand.allow_photo_upload %] + <div id="fileupload_normalUI"> + [% IF upload_fileid %] + <img align="right" src="/photo/[% upload_fileid %].temp.jpeg" alt=""> + <p>[% loc('You have already attached a photo to this update, attaching another one will replace it.') %]</p> + <input type="hidden" name="upload_fileid" value="[% upload_fileid %]"> + [% END %] + <label for="form_photo">[% loc('Photo') %]</label> + [% IF field_errors.photo %] + <p class='form-error'>[% field_errors.photo %]</p> + [% END %] + <input type="file" name="photo" id="form_photo"> + </div> + [% END %] + + [% IF c.user_exists %] + + [% INCLUDE name %] + + <input class="final-submit green-btn" type="submit" id="update_post" value="[% loc('Post') %]"> + + + [% ELSE %] + + <label for="form_rznvy">[% loc('Email' ) %]</label> + [% IF field_errors.email %] + <p class='form-error'>[% field_errors.email %]</p> + [% END %] + <input type="email" name="rznvy" id="form_rznvy" value="[% update.user.email | html %]" placeholder="[% loc('Your email address' ) %]" required> + + <div id="form_sign_in"> + <h3>[% loc("Now to submit your update…") %]</h3> + <h2>[% loc("Do you have a FixMyStreet password?") %]</h2> + + <div id="form_sign_in_yes" class="form-box"> + <h5>[% loc('<strong>Yes</strong> I have a password') %]</h5> + + <label class="hidden-js n" for="password_sign_in">[% loc('Yes I have a password') %]</label> + [% IF field_errors.password %] + <p class='form-error'>[% field_errors.password %]</p> + [% END %] + <div class="form-txt-submit-box"> + <input type="password" name="password_sign_in" id="password_sign_in" value="" placeholder="[% loc('Your password') %]"> + <input class="green-btn" type="submit" name="submit_sign_in" id="submit_sign_in" value="[% loc('Post') %]"> + </div> + + <div class="checkbox-group"> + <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 class="general-sidebar-notes" id="forgotten-pw"> + <p class="dark">[% loc('Forgotten your password?') %]</p> + <p>[% loc('Confirm by email below, providing a new password at that point. When you confirm, your password will be updated.') %]</p> + </div> + + </div> + <div id="form_sign_in_no" class="form-box"> + <h5>[% loc('<strong>No</strong> Let me confirm my update by email') %]</h5> + + [% INCLUDE name %] + + <div class="general-sidebar-notes"> + <p class="dark">[% loc('We never show your email') %]</p> + <p>[% loc('Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports.') %]</p> + </div> + + <label for="password_register">[% loc('Password (optional)') %]</label> + + <div class="form-txt-submit-box"> + <input type="password" name="password_register" id="password_register" value="" placeholder="[% loc('Enter a password') %]"> + <input class="green-btn" type="submit" name="submit_register" id="submit_register" value="[% loc('Post') %]"> + </div> + </div> + </div> + + [% END %] + </fieldset> + </form> +</div> +[% END %] + +[% BLOCK name %] + [% INCLUDE 'report/new/extra_name.html' %] + <label for="form_name">[% loc('Name') %]</label> + [% IF field_errors.name %] + <p class='form-error'>[% field_errors.name %]</p> + [% END %] + <input type="text" [% IF problem.bodies_str == '2482' %]class="validName" [% END %]name="name" id="form_name" value="[% update.name || c.user.name | html %]" placeholder="[% loc('Your name') %]"> + + <div class="checkbox-group"> + <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF update.anonymous==0 OR (c.cobrand.default_show_name AND update.anonymous=='') %]> + <label class="inline" for="form_may_show_name">[% loc('Show my name publicly') %]</label> + </div> + <div class="checkbox-group"> + <input type="checkbox" name="add_alert" id="form_add_alert" value="1"[% ' checked' IF add_alert %]> + <label class="inline" for="form_add_alert">[% loc( 'Alert me to future updates' ) %]</label> + </div> +[% END %] diff --git a/templates/web/fixmystreet/report/updates-sidebar-notes.html b/templates/web/fixmystreet/report/updates-sidebar-notes.html index e59d61fec..9f2420392 100644 --- a/templates/web/fixmystreet/report/updates-sidebar-notes.html +++ b/templates/web/fixmystreet/report/updates-sidebar-notes.html @@ -1,5 +1,7 @@ <p> - [% IF ( problem.council != '2482' AND !problem.council.match('2347') ) OR problem.send_method_used != 'Open311' %] + [% IF c.cobrand.moniker != 'fixamingata' %] + [% IF problem.send_method_used != 'Open311' OR c.cobrand.moniker != 'fixmystreet' OR ( problem.bodies_str != '2482' AND !problem.bodies_str.match('2347') ) %] [% loc( 'Please note that updates are not sent to the council.' ) %] [% END %] + [% END %] [% loc( 'Your information will only be used in accordance with our <a href="/privacy">privacy policy</a>' ) %]</p> diff --git a/templates/web/fixmystreet/reports/_extras.html b/templates/web/fixmystreet/reports/_extras.html index e210b9c07..258e94ce7 100755 --- a/templates/web/fixmystreet/reports/_extras.html +++ b/templates/web/fixmystreet/reports/_extras.html @@ -5,11 +5,12 @@ 'Lichfield District Council' = 'lichfielddc.fixmystreet.com' 'Reading Borough Council' = 'reading.fixmystreet.com' 'Southampton City Council' = 'southampton.fixmystreet.com' + 'Oxfordshire County Council' = 'fixmystreet.oxfordshire.gov.uk' } secure = { 'fix.bromley.gov.uk' = 's' } - site = fms_councils.${area.name} + site = fms_councils.${body.name} %] [% IF site %] <tr align="center" diff --git a/templates/web/fixmystreet/static/privacy.html b/templates/web/fixmystreet/static/privacy.html index 92e096ef4..b280624ae 100755 --- a/templates/web/fixmystreet/static/privacy.html +++ b/templates/web/fixmystreet/static/privacy.html @@ -1,12 +1,13 @@ -[% INCLUDE 'header.html', title => loc('Frequently Asked Questions'), bodyclass => 'twothirdswidthpage' %] +[% INCLUDE 'header.html', title = loc('Frequently Asked Questions'), bodyclass = 'twothirdswidthpage' %] <div class="sticky-sidebar"> <aside> <ul class="plain-list"> - <li><a href="/faq#faq">Frequently Asked Questions</a></li> + <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> diff --git a/templates/web/fixmystreet/tracking_code.html b/templates/web/fixmystreet/tracking_code.html index 52018b312..9d8c00d3c 100644 --- a/templates/web/fixmystreet/tracking_code.html +++ b/templates/web/fixmystreet/tracking_code.html @@ -1,17 +1,25 @@ [% IF c.config.BASE_URL == "http://www.fixmystreet.com" %] <script type="text/javascript"> +(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ +(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), +m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) +})(window,document,'script','//www.google-analytics.com/analytics.js','ga'); - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-660910-4']); - _gaq.push(['_setDomainName', '.fixmystreet.com']); - _gaq.push (['_gat._anonymizeIp']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); +ga('create', 'UA-660910-4', {'cookieDomain': '.fixmystreet.com'}); +ga('set', 'anonymizeIp', true); +[% IF created_report %] +ga(function(tracker) { + var page = tracker.get('location'); + var extra = ''; + if ( page.indexOf('?') != -1 ) { + extra = '&created_report=1'; + } else { + extra = '?created_report=1'; + } + tracker.set('location', page + extra); +}); +[% END %] +ga('send', 'pageview'); </script> [% ELSE %] 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’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 + — 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’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@mysociety.org">hello@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’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’ve made, wherever they are.</dd> + + <dt>I’d like a site like this for my own location/ where’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’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> + <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> + <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"> </div></a> + <li> <a href="#main-nav"><div class="menu-icon"> </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 new file mode 100644 index 000000000..68c38c030 --- /dev/null +++ b/templates/web/oxfordshire/around/intro.html @@ -0,0 +1 @@ + <h1 class="main">Find and report road or street problems</h1> diff --git a/templates/web/oxfordshire/faq/faq-en-gb.html b/templates/web/oxfordshire/faq/faq-en-gb.html new file mode 100755 index 000000000..3aa87e229 --- /dev/null +++ b/templates/web/oxfordshire/faq/faq-en-gb.html @@ -0,0 +1,234 @@ +[% 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="#practical">Practical Questions</a></li> + <li><a href="#organisation">Acknowledgement</a></li> + <li><a href="/privacy">Privacy and cookies</a></li> + <li><a href="/contact">Contact FixMyStreet</a></li> + </ul> + </aside> +</div> + +<h1><a name="faq"></a>Frequently Asked Questions</h1> +<dl> + <dt>How can I report a pothole, street or road problem?</dt> + <dd> + <p> + This easy to use web site is designed to help Oxfordshire residents to report, + view, or discuss local highway faults, including potholes, directly and quickly + to us by simply locating them on a map. You can do this by using your computer + or your mobile phone. + </p> + <p> + Please report one problem at a time; you will be given an opportunity at the end + to report another problem using the personal details previously entered. + </p> + <p> + If you are reporting an emergency please do not report it online, but ring our + Customer Service Centre on <strong>0845 310 111</strong>. + </p> + <p> + Here is a <a href="http://vimeo.com/65813425">short video</a> + about how you can use our web site to report road and street problems. + </p> + </dd> + + <dt>What sort of problems can I report?</dt> + <dd> + <p> + You can report faults linked to amenities or problems that are broken or dirty, + damaged or dumped, or need fixing, cleaning or clearing such as: + </p> + <ul> + <li>Abandoned vehicles + <li>Dog Fouling + <li>Flyposting or graffiti + <li>Flytipping or litter + <li>Streetcleaning, such as broken glass in a cycle lane + <li>Unlit lampposts + <li>Potholes + </ul> + </dd> + <dt>What isn’t it for?</dt> + <dd> + <p> + The web site is not a way of getting in touch with the council for all issues + — please use it only for problems highlighted above. + </p> + <p> + As we often route problems via our cleansing services or highways departments, + using the site for other matters may result in a delay in your report getting + to the right people. + </p> + <div style="margin-left:1.5em;"> + <p> + <strong>You will need to contact the county council directly for</strong>: + </p> + <ul> + <li>Any urgent or emergency problems + <li>Complaining about the council + <li>Proposals for speed bumps/ CCTV/ pedestrian crossings/ new road layouts/ etc. + </ul> + <p> + <strong>You will need to contact your district council directly for problems such as:</strong>: + </p> + <ul> + <li>Anti-social behaviour + <li>Noise pollution or barking dogs + <li>Fires and smoke/smell pollution + <li>Missing wheelie bins or recycling boxes or missed rubbish collections + <li>Proposals for speed bumps/ CCTV/ pedestrian crossings/ new road layouts/ etc. + <li>Complaining about your neighbours + <li>Joy riding, drug taking, animal cruelty, or other criminal activity + </ul> + </div> + </dd> + + <dt><a name="pothole"></a>Should I report a pothole on this site, or call?</dt> + <dd> + <p> + <strong>Please call us on 0845 310 1111 for urgent enquiries.</strong> + </p> + <p> + Potholes may need urgent attention if they are more than 40 millimetres in depth and/or + 120 millimetres in width, or, as a simple guide: + </p> + <ul> + <li>The depth of a milk bottle + <li>The size of a dustbin lid + <li>The depth of a tennis ball, size of a dinner plate and on a busy carriageway + <li>The depth of a coke can on a pathway or busy carriageway + <li>The depth of a coke can and the size of a dinner plate on a quiet carriageway + </ul> + <p> + If a pothole has been outlined with paint it has already been inspected by our team + and programmed to be fixed, so you don't need to report it. + </p> + <p> + All other significant potholes can be reported on the map. Uploaded photos + and locations from your smart phone or tablet, in particular, can greatly + assist our Highways department in determining pothole repair priorities. + </p> + <p> + The level of response is dependent on the location, size and risk the + pothole poses to public safety. This may result in the pothole either + being repaired within 28 days if it is identified as a safety risk; + or being repaired as part of other programmed works; or being monitored + as part of the routine inspections programme as the risk to public safety + is not sufficient to merit any immediate action. + </p> + </dd> + + <dt>How do I use the reporting tool on the site?</dt> + <dd> + After entering a postcode or location, you will then be presented with a map of + that area. You can then view problems already reported in that area, or report new + ones of your own simply by clicking on the map at the location of the problem. + </dd> + + <dt>How are the problems solved?</dt> + <dd> + They are reported to us automatically. We then resolve the problem the way we + normally would and update the fault on the map. + </dd> + + <dt>What does the map show?</dt> + <dd> + The map shows all faults submitted online. You can view the exact location of + each fault and see its current status. + </dd> + + <dt>What updates will I receive?</dt> + <dd> + <p> + When you record a fault you can sign up to receive updates and you will + receive an initial email to acknowledge the report. + </p> + <p> + You will then receive an email every time that fault is updated. This could be when + a member of the public posts an update onto the fault or when we post a status update. + </p> + <p> + Road problems that are the responsibility of our Highways department, such as potholes, + will receive automatic updates at different stages. You will receive an email when the + problem has been inspected and another one when the fault is fixed. + </p> + <p> + Some faults may be marked as referred when they are not the responsibility of Oxfordshire County Council, + for example problems such as graffiti or rubbish which are the responsibility of the District + Council for that area. + </p> + <p> + All of these updates will also be posted on the mapped fault so that anyone can see the status of any + fault recorded by clicking on it on the map. + </p> + </dd> + + <dt>How can I get an update on a fault?</dt> + <dd> + <p> + When you record a fault you can sign up to receive updates. You will then receive an initial + email to acknowledge the report. In time, you will receive a further email when the problem is + assigned for inspection, one if the problem needs to be referred to another department or + organisation, and a final email when it is fixed or requires no further work. + </p> + <p> + These updates will also be posted on the mapped fault so that anyone can see the status of + any fault recorded by clicking on it on the map. + </p> + </dd> + + <dt>Can I report a fault on my mobile?</dt> + <dd> + <p> + Yes, you can view our website on your phone or tablet and it will automatically adapt to the + size of your screen. + </p> + </dd> +</dl> + +<a name="practical"></a> +<dl> + <dt>Inappropriate use</dt> + <dd> + Oxfordshire County Council is not responsible for the content and + accuracy of material submitted by its users. Oxfordshire County Council will monitor + this website for instances of inappropriate use, and reserves the right to moderate + comments if such instances occur. + </dd> + + <dt>Why does the site use kilometres for measurements?</dt> + <dd> + The maps are from Ordnance Survey who based their grid reference + system on measurements in metres and kilometres. + </dd> + + <dt>How do I report a fault outside of Oxfordshire?</dt> + <dd> + The map only shows locations within Oxfordshire to keep it locally focussed. + </dd> +</dl> + +<a name="organisation"></a> +<dl> + <dt>Acknowledgement</dt> + <dd> + This site 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>. + FixMyStreet is the project of a registered charity mySociety which has grown out of the community of + volunteers who built sites like <a href="http://www.theyworkforyou.com/">TheyWorkForYou.com</a>. + mySociety’s primary mission is to build Internet projects which give people simple, tangible + benefits in the civic and community aspects of their lives. Their first project + was <a href="http://www.writetothem.com/">WriteToThem</a>, where you can write to any of your + elected representatives, for free. + </dd> +</dl> +<p> + You can find out more about FixMyStreet at <a href="http://www.fixmystreet.com">www.fixmystreet.com</a>. +</p> +<p> <p> + +[% INCLUDE 'footer.html' pagefooter = 'yes' %] diff --git a/templates/web/oxfordshire/footer.html b/templates/web/oxfordshire/footer.html new file mode 100644 index 000000000..29146d935 --- /dev/null +++ b/templates/web/oxfordshire/footer.html @@ -0,0 +1,49 @@ + [% IF pagefooter %] + <footer role="content-info"> + <p><a href="/privacy">Privacy and cookies</a></p> + </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/for-councils/fixmystreet/">Powered by <img src="/cobrands/oxfordshire/images/fms-logo-105x20.png" alt="FixMyStreet"></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 --> + <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 by <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/header.html b/templates/web/oxfordshire/header.html new file mode 100644 index 000000000..67afb2334 --- /dev/null +++ b/templates/web/oxfordshire/header.html @@ -0,0 +1,124 @@ +<!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"> + +[% 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)"> + [% 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/oxfordshire/position_map.js') %]" charset="utf-8"></script> + [% INCLUDE 'common_header_tags.html', js_override = '/cobrands/fixmystreet/fixmystreet.js', site_title = 'FixMyStreet' %] + [% extra_js %] + + [% 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' %] + + </head> + <body class="[% bodyclass | html IF bodyclass %]"> +<div id="oxford-wrapper"> + <div id="oxford-header" class="desk-only oxford-left"> + <a href="http://www.oxfordshire.gov.uk/" title="Home" class="logo">Oxfordshire County Council<span></span></a> + <span id="oxford-links"> + <a href="http://www.oxfordshire.gov.uk/" title="">Oxfordshire County Council home</a> + </span> + <div style="clear:both"></div> + <span class="header"><a href="/">Report a road or street problem</a></span> + <div class="oxford-user"> + <p> + [% IF c.user_exists %] + [% tprintf(loc('Hi %s'), c.user.name || c.user.email) %] + <a href="/auth/sign_out">[% loc('sign out') %]</a> + [% END %] + </p> + </div> + + + <div id="navigation"> + <div class="menubar"> + <div class="menu-inner"> + <ul class="menu"> + <li> + <[% IF c.req.uri.path == '/' %]span[% ELSE %]a href="/"[% END %]>[% "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/Oxfordshire' %]span[% ELSE %]a href="/reports/Oxfordshire"[% 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> + + + + + </div> <!-- end of oxford header --> +<!-- + <div id="oxford-main-menu" class="desk-only"> + <ul class="tabs"> + <li class="home first"></li>[% + %]<li></li>[% + %]<li></li>[% + %]<li></li>[% + %]<li class="last"></li> + </ul> + </div> +--> + + <div class="wrapper"> + + <div class="table-cell"> + <header id="site-header" role="banner"> + <div class="container"> + <a href="/" id="site-logo">Oxfordshire FixMyStreet</a> + <a href="#main-nav" id="nav-link">Main Navigation</a> + </div> + </header> + + <div id="user-meta"> + [% 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> + [% ELSE %] + <!-- <a href="/auth">[% loc('Sign in') %]</a> --> + [% END %] + </div> + + [% pre_container_extra %] + + <div class="container"> + <div class="content[% " $mainclass" | html IF mainclass %]" role="main"> + + <!-- [% INCLUDE 'debug_header.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: [% problem.external_id %] + [% ELSE %] + [% problem.external_body %] ref: [% 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 new file mode 100644 index 000000000..f205418d7 --- /dev/null +++ b/templates/web/oxfordshire/report/new/councils_text_all.html @@ -0,0 +1,5 @@ +<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/oxfordshire/report/new/fill_in_details_text.html b/templates/web/oxfordshire/report/new/fill_in_details_text.html new file mode 100644 index 000000000..065005956 --- /dev/null +++ b/templates/web/oxfordshire/report/new/fill_in_details_text.html @@ -0,0 +1,6 @@ +Oxfordshire County Council won’t be able to help unless you leave as much +detail as you can. Please describe the exact location of the problem (e.g. in +the carriageway), what it is, how long it has been there, a description and a +photo of the problem if you have one. Please be aware that you can only attach +one picture so ensure that you provide a picture that clearly shows the +location not just the fault. diff --git a/templates/web/oxfordshire/report/new/notes.html b/templates/web/oxfordshire/report/new/notes.html new file mode 100644 index 000000000..5fa154ed9 --- /dev/null +++ b/templates/web/oxfordshire/report/new/notes.html @@ -0,0 +1,10 @@ +<p>[% loc("Please note:") %]</p> + +<ul class="plain-list"> + <li>[% loc("We will only use your personal information in accordance with our <a href=\"/privacy\">privacy policy.</a>") %]</li> + <li>[% loc("Please be polite, concise and to the point.") %]</li> + <li>[% loc("Please do not be abusive — abusing your council devalues the service for all users.") %]</li> + <li>[% loc("Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation.") %]</li> + <li>Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. Remember that you can contact Oxfordshire County Council for additional issues that are not covered on this reporting facility.</li> +</ul> + diff --git a/templates/web/oxfordshire/tracking_code.html b/templates/web/oxfordshire/tracking_code.html new file mode 100644 index 000000000..1ed17651b --- /dev/null +++ b/templates/web/oxfordshire/tracking_code.html @@ -0,0 +1,22 @@ +[% IF c.config.BASE_URL == "http://www.fixmystreet.com" %] + +<script type="text/javascript"> + + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-22094787-2']); + _gaq.push(['_setDomainName', '.oxfordshire.gov.uk']); + _gaq.push(['_setCustomVar',1,'level1','Roads and transport',3]); + _gaq.push(['_setCustomVar',2,'level2','FixMyStreet',3]); + _gaq.push(['_trackPageview']); + jQuery(document).ready( function () { + jQuery.occ.gaico({ + messageIcon: '/cms/sites/all/themes/publicsite/images/gaico_exclamation.png', + permanentMessageIcon: '/cms/sites/all/themes/publicsite/images/gaico_question.png' + }); + }); + +</script> + +[% ELSE %] +<!-- Tracking code not inserted as "[% c.config.BASE_URL %]" not "http://www.fixmystreet.com" --> +[% END %] diff --git a/templates/web/reading/header.html b/templates/web/reading/header.html index 85117b57e..23bafd726 100644 --- a/templates/web/reading/header.html +++ b/templates/web/reading/header.html @@ -12,7 +12,7 @@ <link rel="stylesheet" type="text/css" href="[% version('/css/core.css') %]"> <link rel="stylesheet" type="text/css" href="[% version('/cobrands/reading/css/reading.css') %]" /> <link rel="stylesheet" type="text/css" href="[% version('/cobrands/reading/css/print3rdParty.css') %]" media="print"/> - <link rel="stylesheet" type="text/css" href="[% version('/cobrands/reading/css/css.css') %]" /> + <link rel="stylesheet" type="text/css" href="[% version('/cobrands/reading/css.css') %]" /> [% INCLUDE 'common_header_tags.html', site_title = 'Reading City Council FixMyStreet' %] diff --git a/templates/web/seesomething/auth/general.html b/templates/web/seesomething/auth/general.html new file mode 100644 index 000000000..4fe2829d3 --- /dev/null +++ b/templates/web/seesomething/auth/general.html @@ -0,0 +1,46 @@ +[% INCLUDE 'header.html', title = loc('Sign in or create an account') %] + +<h1>[% loc('Sign in') %]</h1> + +<form action="[% c.uri_for() %]" method="post" name="general_auth" class="validate"> + <fieldset> + <input type="hidden" name="r" value="[% c.req.params.r | html %]"> + + [% IF email_error; + + # other keys include fqdn, mxcheck if you'd like to write a custom error message + + errors = { + missing => loc('Please enter your email'), + other => loc('Please check your email address is correct') + }; + + loc_email_error = errors.$email_error || errors.other; + END %] + <label class="n" for="email">[% loc('Email') %]</label> + [% IF loc_email_error %] + <div class="form-error">[% loc_email_error %]</div> + [% ELSIF sign_in_error %] + <div class="form-error">[% loc('There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the ‘sign in by email’ section of the form.') %]</div> + [% END %] + <input type="email" class="required email" id="email" name="email" value="[% email | html %]" placeholder="[% loc('Your email address') %]"> + + <div class="form-txt-submit-box"> + <label class="n" for="password_sign_in">Password</label> + <input type="password" name="password_sign_in" id="password_sign_in" value="" placeholder="[% loc('Your password') %]"> + </div> + + <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 class="form-txt-submit-box"> + <input class="green-btn" type="submit" name="sign_in" value="[% loc('Sign in') %]"> + </div> + + </fieldset> +</form> + + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/seesomething/auth/sign_out.html b/templates/web/seesomething/auth/sign_out.html new file mode 100644 index 000000000..ef1d11b58 --- /dev/null +++ b/templates/web/seesomething/auth/sign_out.html @@ -0,0 +1,7 @@ +[% INCLUDE 'header.html', title = loc('Sign out'), bodyclass = 'fullwidthpage' %] + +<h1>[% loc('You have been signed out') %]</h1> + +<p>Please feel free to <a href="[% c.uri_for('/auth', { r => 'admin/stats' } ) %]">sign in again</a></p> + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/seesomething/js/translation_strings.html b/templates/web/seesomething/js/translation_strings.html new file mode 100644 index 000000000..0ae40bf97 --- /dev/null +++ b/templates/web/seesomething/js/translation_strings.html @@ -0,0 +1,15 @@ + translation_strings = { + detail: '[% loc('Please enter some details') | replace("'", "\\'") %]', + name: { + 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 transport category') | replace("'", "\\'") %]', + subcategory: '[% loc('Please choose an incident category') | replace("'", "\\'") %]', + rznvy: { + required: '[% loc('Please enter your email') | replace("'", "\\'") %]', + email: '[% loc('Please enter a valid email') | replace("'", "\\'") %]' + }, + email: { + email: '[% loc('Please enter a valid email') | replace("'", "\\'") %]' + } + }; diff --git a/templates/web/seesomething/js/validation_rules.html b/templates/web/seesomething/js/validation_rules.html index 5517cd8e8..cef5fce7e 100644 --- a/templates/web/seesomething/js/validation_rules.html +++ b/templates/web/seesomething/js/validation_rules.html @@ -6,7 +6,6 @@ $(function(){ $('#submit_noname').click( function(e) { - alert('click'); $('#form_category').addClass('required validCategory').removeClass('valid'); $('#form_subcategory').addClass('required validCategory').removeClass('valid'); }); diff --git a/templates/web/seesomething/js/validation_strings.html b/templates/web/seesomething/js/validation_strings.html deleted file mode 100644 index 64251c163..000000000 --- a/templates/web/seesomething/js/validation_strings.html +++ /dev/null @@ -1,15 +0,0 @@ - validation_strings = { - detail: '[% loc('Please enter some details') | replace("'", "\\'") %]', - name: { - 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 transport category') | replace("'", "\\'") %]', - subcategory: '[% loc('Please choose an incident category') | replace("'", "\\'") %]', - rznvy: { - required: '[% loc('Please enter your email') | replace("'", "\\'") %]', - email: '[% loc('Please enter a valid email') | replace("'", "\\'") %]' - }, - email: { - email: '[% loc('Please enter a valid email') | replace("'", "\\'") %]' - }, - }; diff --git a/templates/web/seesomething/report/new/category.html b/templates/web/seesomething/report/new/category.html index 26d750b52..8c837a047 100644 --- a/templates/web/seesomething/report/new/category.html +++ b/templates/web/seesomething/report/new/category.html @@ -3,7 +3,7 @@ [% IF category; category = category | lower; END; %] - <label for='form_category' class="select">[% category_label | html %]</label> + <label for='form_category' class="select">[% loc('Category') %]</label> <select name='category' data-theme="c" id='form_category'[% ' onchange="form_category_onchange()"' IF category_extras.size %]> [% FOREACH cat_op IN category_options %] [% cat_op_lc = cat_op | lower %] diff --git a/templates/web/southampton/front/news.html b/templates/web/southampton/front/news.html new file mode 100644 index 000000000..79d51542c --- /dev/null +++ b/templates/web/southampton/front/news.html @@ -0,0 +1,9 @@ +<div class="news"> +<p>Fix My Street is for reporting non-urgent, local problems like graffiti, fly +tipping, or broken paving slabs; reports will be reviewed within 48 working +hours.</p> + +<p>If you are reporting an urgent or dangerous matter, for example a fallen +tree or a very deep pot hole that may cause damage, please contact us +directly on 023 8083 3008</p> +</div> diff --git a/templates/web/southampton/header.html b/templates/web/southampton/header.html index e02083a99..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/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/southampton/report/new/category.html b/templates/web/southampton/report/new/category.html index 7c7748c78..0a7703bbb 100644 --- a/templates/web/southampton/report/new/category.html +++ b/templates/web/southampton/report/new/category.html @@ -1,6 +1,6 @@ [% FILTER collapse %] [% IF category_options.size %] - <label for='form_category'>[% category_label | html %]</label> + <label for='form_category'>[% loc('Category') %]</label> <select name='category' id='form_category'> [% FOREACH cat_op IN category_options %] [% NEXT IF cat_op == 'Abandoned vehicles' %] diff --git a/templates/web/stevenage/around/intro.html b/templates/web/stevenage/around/intro.html index 488b587da..9c3a117f1 100644 --- a/templates/web/stevenage/around/intro.html +++ b/templates/web/stevenage/around/intro.html @@ -1,2 +1,2 @@ <h1>[% loc('Report, view, or discuss local problems') %]</h1> - <h2>(like Graffiti, Fly Tipping and Abandoned Vehicles)</h2> + <h2>(Like Graffiti, Fly Tipping, Street Cleansing and Abandoned Vehicles)</h2> diff --git a/templates/web/trinidadtobago/footer.html b/templates/web/trinidadtobago/footer.html new file mode 100644 index 000000000..4a8144ccf --- /dev/null +++ b/templates/web/trinidadtobago/footer.html @@ -0,0 +1,38 @@ + [% IF pagefooter %] + <footer role="content-info"> + <p><a href="/privacy">Privacy and cookies</a></p> + </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>[% + %]<li><a href="http://mysociety.org/donate/">Donate</a></li>[% + %]<li><a href="http://www.mysociety.org/projects/">Our Sites</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/zerotb/around/_updates.html b/templates/web/zerotb/around/_updates.html new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/templates/web/zerotb/around/_updates.html diff --git a/templates/web/zerotb/around/around_map_list_items.html b/templates/web/zerotb/around/around_map_list_items.html new file mode 100644 index 000000000..225ddde6e --- /dev/null +++ b/templates/web/zerotb/around/around_map_list_items.html @@ -0,0 +1,9 @@ +[% IF around_map.size %] + [% FOREACH p IN around_map %] + [% INCLUDE 'report/_item.html' + problem = p.problem, + dist = tprintf("%.1f", (p.distance || 0) ) %] + [% END %] +[% ELSE %] + <li><p>[% loc('No clinics found.') %]</p></li> +[% END %] diff --git a/templates/web/zerotb/around/intro.html b/templates/web/zerotb/around/intro.html new file mode 100644 index 000000000..07d018f57 --- /dev/null +++ b/templates/web/zerotb/around/intro.html @@ -0,0 +1 @@ +<h2>[% loc('If a hospital, clinic or other health facility near you is experiencing <b>stockouts of tuberculosis drugs</b> you can use this form to report it') %]</h2> diff --git a/templates/web/zerotb/around/location_error.html b/templates/web/zerotb/around/location_error.html new file mode 100644 index 000000000..45428e723 --- /dev/null +++ b/templates/web/zerotb/around/location_error.html @@ -0,0 +1,8 @@ +<p class="form-error"> +[% IF location_error_no_areas %] + [% loc('This location seems to be outside the Dehli area.') %] +[% ELSE %] + [% location_error %] +[% END %] +</p> + diff --git a/templates/web/zerotb/around/on_map_list_items.html b/templates/web/zerotb/around/on_map_list_items.html new file mode 100644 index 000000000..838e2e9fa --- /dev/null +++ b/templates/web/zerotb/around/on_map_list_items.html @@ -0,0 +1,7 @@ +[% IF on_map.size %] + [% FOREACH problem IN on_map %] + [% INCLUDE 'report/_item.html' %] + [% END %] +[% ELSE %] + <li><p>[% loc('No clinics found.') %]</p></li> +[% END %] diff --git a/templates/web/zerotb/around/postcode_form.html b/templates/web/zerotb/around/postcode_form.html new file mode 100644 index 000000000..484f41c5c --- /dev/null +++ b/templates/web/zerotb/around/postcode_form.html @@ -0,0 +1,36 @@ +<div id="front-main"> + <div id="front-main-container"> + [% INCLUDE 'around/intro.html' %] + + [% + question = c.cobrand.enter_postcode_text || loc('Enter a nearby street name and area'); + %] + + <div id="postcodeForm"> + <form action="[% c.uri_for('/around') %]" method="get" name="postcodeForm"> + <label for="pc">[% question %]:</label> + <div> + <input type="text" name="pc" value="[% pc | html %]" id="pc" size="10" maxlength="200" placeholder="[% tprintf(loc('e.g. ‘%s’ or ‘%s’'), c.cobrand.example_places) %]"> + <input type="submit" value="[% loc('Go') %]" id="sub"> + </div> + + [% IF partial_token %] + <input type="hidden" name="partial" value="[% partial_token.token %]"> + [% END %] + + </form> + <form action="[% c.uri_for( '/report' ) %]/" method="get" name="clinicForm"> + <label for="clinic">[% loc('... or select a clinic by name' ) %]</label> + <div> + <select id="clinic" name="clinic"> + [% FOR clinic IN c.cobrand.get_clinic_list %] + <option value="[% clinic.id %]">[% clinic.title %]</option> + [% END %] + </select> + <input class="green-btn" type="submit" value="[% loc('Go') %]" id="show_report"> + </div> + </form> + </div> + + </div> +</div> diff --git a/templates/web/zerotb/around/tabbed_lists.html b/templates/web/zerotb/around/tabbed_lists.html new file mode 100644 index 000000000..8b8e8753e --- /dev/null +++ b/templates/web/zerotb/around/tabbed_lists.html @@ -0,0 +1,14 @@ +<menu id="problems-nav" class="tab-nav"> + <ul> + <li><a href="#current">[% loc('Clinics on the map') %]</a></li> + <li><a href="#current_near">[% loc( 'Clinics nearby' ) %]</a></li> + </ul> +</menu> + +<ul id="current" class="issue-list-a tab"> + [% INCLUDE "around/on_map_list_items.html" %] +</ul> + +<ul id="current_near" class="issue-list-a tab"> + [% INCLUDE "around/around_map_list_items.html" %] +</ul> diff --git a/templates/web/zerotb/faq/faq-en-gb.html b/templates/web/zerotb/faq/faq-en-gb.html new file mode 100644 index 000000000..b2607f769 --- /dev/null +++ b/templates/web/zerotb/faq/faq-en-gb.html @@ -0,0 +1,124 @@ +[% INCLUDE 'header.html', title => loc('Frequently Asked Questions') %] + +<h1>Frequently Asked Questions</h1> + <dl> + <dt>What is this website?</dt> + <dd>This site was created to help people report anti-tuberculosis drug stockouts in Delhi. It was created in response to the ongoing stockouts reported in India last year (see here). The information will be used to encourage the government to address stockouts as they arise.</dd> + <dt>What is FixMyStreet?</dt> + <dd>FixMyStreet is a site to help people report, view, or discuss local problems they’ve found by simply locating them on a map. It launched in early February 2007.</dd> + <dt>How do I get in touch with FixMyStreet?</dt> + <dd>Here’s our <a href="[% c.uri_for( '/contact' ) %]">contact page</a>.</dd> + <dt>What sort of problems should I report with this site?</dt> + <dd>This site is primarily for reporting barriers to TB treatment clinics such as drug stockouts.</dd> + <dt>How do I use the site?</dt> + <dd>You can either enter a location in Delhi or choose a specific clinic name. If you enter a location, you will be presented with a map of that area. You can then search for a TB clinic in that area to report a stockout.</dd> + <dt>How are the problems solved?</dt> + <dd>They are anonymously reported to the District TB Officer by email. They are also shared with local activists and media to generate awareness of the issue and encourage the government to take action. We respect your privacy: your name and email will NOT be given to any of these groups without your written permission.</dd> + <dt>Is it free?</dt> + <dd>The site is free to use, yes. FixMyStreet is run +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 the site on my mobile?</dt> + <dd> + <p>The website will already work on your mobile phone, adapting to + the size of your screen automatically. + </dd> + </dl> + + <h2>Practical Questions</h2> + <dl> + <dt>I work with a TB clinic, where do you send the reports?</dt> + <dd>You can contact us to find out where reports go at the moment. Also contact us to update the address or addresses we use.</dd> + <dt>Do you remove silly or illegal content?</dt> + <dd>FixMyStreet is 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>Why can’t I zoom out more on the reporting map?</dt> + <dd>We want to keep the site locally focused, so restrict the ability to + move radically between areas.</dd> + + <dt>This site is great – why aren’t you better publicised?</dt> + <dd>As a tiny charity we simply don’t have a publicity budget, and we + rely on word of mouth to advertise the site. We have a whole <a + href="posters/">array of posters, flyers and badges</a> if you’d like + to publicise us on the web or in your local area, and why not write to your + local paper to let them know about us?</dd> </dl> + + <h2><a name="privacy"></a>Privacy Questions</h2> + <dl> + <dt>Who gets to see my name and email address?</dt> + <dd> + Due to the sensitive nature of the stockout situation, if you submit a report, we will NOT share your name or email with anyone unless you give us permission. We may, however, send other information from your report (such as the clinic name and any description you write about the stockouts) to the TB officers with the government or activists in order to raise awareness issue. + The only people who will be able to see your name and email address will be the FixMyStreet administrators and team members, and they will never use it for anything other than to help administer FixMyStreet. We will never give or sell your email address to anyone else, unless we are obliged to by law. Your name, given in the name field, will not be published anywhere unless you specifically give us permission to. + </dd> + <dt>Will you send nasty, brutish spam to my email address?</dt> + <dd>Never. We will email you if someone leaves an update on a +problem you’ve reported, and send you a questionnaire email four weeks +after you submit a problem, asking for a status update; we’ll only ever +send you emails in relation to your problem.</dd> + </dl> + <h2>Organisation Questions</h2> + <dl> + <dt>Who built FixMyStreet?</dt> + <dd>This site 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.com</a>. +mySociety’s primary mission is to build Internet projects which give people simple, tangible +benefits in the civic and community aspects of their lives. Our first project +was <a href="http://www.writetothem.com/">WriteToThem</a>, where you can write to any of your +elected representatives, for free. The charity is called UK Citizens Online Democracy and is charity number 1076346. mySociety +can be contacted by email at <a href="mailto:hello@mysociety.org">hello@mysociety.org</a>, +or by post at mySociety, 483 Green Lanes, London, N13 4BS, UK.</dd> + <dt><img src="/i/moj.png" align="right" alt="Ministry of Justice" hspace="10">Who pays for it?</dt> + <dd>FixMyStreet was originally paid for via the Department for + Constitutional Affairs Innovations Fund. It is now funded by a variety of means, from commercial + work to <a href="http://www.mysociety.org/donate/">donations</a>.</dd> + <dt>Do you need any help with the project?</dt> + <dd>Yes, we can use help in all sorts of ways, technical or +non-technical. Please see our <a +href="http://www.mysociety.org/helpus/">Get Involved page</a>.</dd> + <dt>I’d like a site like this for my own location/ where’s the "source code" to this site?</dt> + <dd> +The software behind this site is open source, and available +to you mainly under the GNU Affero GPL software license. You can <a +href="http://github.com/mysociety/fixmystreet">download the +source code</a> and help us develop it. +You’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> +<dt>I’d prefer code in a different language?</dt> +<dd> +VisibleGovernment.ca wrote their own code for +<a href="http://www.fixmystreet.ca/">http://www.fixmystreet.ca/</a>, which is +written in GeoDjango and available under an MIT licence at <a +href="http://github.com/visiblegovernment/django-fixmystreet/tree/master">github</a>. +Or <a href="http://www.fixmystreet.org.nz/">FixMyStreet.org.nz</a> is written in +Drupal. +</p> +</dd> + <dt>People build things, not organisations. Who <em>actually</em> built it?</dt> + <dd>Matthew Somerville and Francis Irving wrote the site, +Chris Lightfoot wrote the tileserver and map cutter, Richard Pope created +our pins, Deborah Kerr keeps things up-to-date and does user support, +Ayesha Garrett designed our posters, and Tom Steinberg managed it all. + +Thanks also to +<a href="http://www.ordnancesurvey.co.uk">Ordnance Survey</a> (for the maps, +UK postcodes, and UK addresses – data © Crown copyright, all +rights reserved, Ministry of Justice 100037819 2008), +Yahoo! for their BSD-licensed JavaScript libraries, the entire free software +community (this particular project was brought to you by Perl, PostgreSQL, +and the number 161.290) and <a +href="http://www.bytemark.co.uk/">Bytemark</a> (who kindly host all +our servers). + +Let us know if we’ve missed anyone.</dd> + </dl> + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/zerotb/footer.html b/templates/web/zerotb/footer.html new file mode 100644 index 000000000..c46a03878 --- /dev/null +++ b/templates/web/zerotb/footer.html @@ -0,0 +1,22 @@ + + </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="main-menu"> + <li><[% IF c.req.uri.path == '/' %]span[% ELSE %]a href="/"[% END %] class="report-a-problem-btn" + >[% loc("Report a Stockout") %]</[% c.req.uri.path == '/' ? '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/zerotb/header_extra.html b/templates/web/zerotb/header_extra.html new file mode 100644 index 000000000..23f061799 --- /dev/null +++ b/templates/web/zerotb/header_extra.html @@ -0,0 +1,18 @@ +<link rel="stylesheet" href="[% start %][% version('/js/select2/select2.css') %]" /> +<script type="text/javascript" src="[% start %][% version('/js/select2/select2.min.js') %]"></script> + +<script> +$(document).ready(function() { + $("#clinic").select2({ + placeholder: '[% loc('Enter a clinic name') %]', + allowClear: true, + }); + $('#show_report').click( + function() { + var report = $('#clinic').select2('val'); + document.location = '[% c.uri_for( '/report' ) %]/' + report; + return false; + } + ); +}); +</script> diff --git a/templates/web/zerotb/header_logo.html b/templates/web/zerotb/header_logo.html new file mode 100644 index 000000000..bcc690d97 --- /dev/null +++ b/templates/web/zerotb/header_logo.html @@ -0,0 +1,6 @@ + <div id="site-logo"> + <p><a href="/">[% loc('<span class="orange">Report</span> Delhi TB drug <b>stockouts</b>') %]</a></p> + [% IF c.req.uri.path == '/' %] + <p id="brought-to-you">Brought to you by <a href="http://www.fixmystreet.org" id="fms-logo-small">FixMyStreet</a></p> + [% END %] + </div> diff --git a/templates/web/zerotb/header_opengraph.html b/templates/web/zerotb/header_opengraph.html new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/templates/web/zerotb/header_opengraph.html diff --git a/templates/web/zerotb/header_rss.html b/templates/web/zerotb/header_rss.html new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/templates/web/zerotb/header_rss.html diff --git a/templates/web/zerotb/index-steps.html b/templates/web/zerotb/index-steps.html new file mode 100644 index 000000000..2d49b8f28 --- /dev/null +++ b/templates/web/zerotb/index-steps.html @@ -0,0 +1,8 @@ +<h2>[% loc('How to report a stockout') %]</h2> + +<ol class="big-numbers"> + <li>[% loc('Enter a Delhi chest clinic or street name and area') %]</li> + <li>[% loc('Locate the clinic on a map of the area') %]</li> + <li>[% loc('Enter details of the problem (optional)') %]</li> + <li>[% loc('We will send your stockout report to the district TB officer and to local activists to ensure action is taken') %]</li> +</ol> diff --git a/templates/web/zerotb/index.html b/templates/web/zerotb/index.html new file mode 100644 index 000000000..754dcbabc --- /dev/null +++ b/templates/web/zerotb/index.html @@ -0,0 +1,45 @@ +[%# Assumes fixmystreet cobrand is using FMS map template - for bonus points preload all the right map elements. %] +[% map_js = BLOCK %] +<script> +yepnope.addPrefix( 'preload', function ( resource ) { + resource.noexec = true; + return resource; +}); +Modernizr.load({ + load: [ + "preload![% version('/js/OpenLayers.fixmystreet.js') %]", + "preload![% version('/js/map-OpenLayers.js') %]", + "preload![% version('/js/map-bing-ol.js') %]", + "preload![% version('/js/jquery.ba-hashchange.min.js') %]" + ] +}); +</script> +[% END %] + +[% pre_container_extra = PROCESS 'around/postcode_form.html' %] +[% INCLUDE 'header.html', title = '', bodyclass = 'frontpage fullwidthpage' %] + +[% IF error %] + <p class="form-error">[% error %]</p> +[% END %] + +<div class="tablewrapper"> + <div id="front-howto"> + [% INCLUDE 'index-steps.html' %] + </div> + + <div id="front-recently"> + <h2> + [% loc('About stockouts') %] + </h2> + + <section class="full-width"> + <p> + [% loc('In 2013 India faced stockouts of anti-tuberculosis medicines, threatening to leave many patients across the country without access to life-saving treatment. Some government officials have denied that these drug stockouts exist. There is no simple mechanism for gathering drug shortage data, making accountability and transparency impossible. We aim to change this by enabling anyone in Delhi to report stockouts through this website.') %] + </p> + </section> + + </div> +</div> + +[% INCLUDE 'footer.html' pagefooter = 'yes' %] diff --git a/templates/web/zerotb/report/_item.html b/templates/web/zerotb/report/_item.html new file mode 100644 index 000000000..92fb8e8d8 --- /dev/null +++ b/templates/web/zerotb/report/_item.html @@ -0,0 +1,5 @@ +<li> +<a class="text" href="[% c.uri_for('/report', problem.id ) %]"> + <h4>[% problem.title | html %]</h4> +</a> +</li> diff --git a/templates/web/zerotb/report/_main.html b/templates/web/zerotb/report/_main.html new file mode 100644 index 000000000..189b4eeb5 --- /dev/null +++ b/templates/web/zerotb/report/_main.html @@ -0,0 +1,6 @@ +<div class="problem-header cf"> + <h1>[% problem.title | html %]</h1> + + [% add_links( problem.detail ) | html_para %] + +</div> diff --git a/templates/web/zerotb/report/display.html b/templates/web/zerotb/report/display.html new file mode 100644 index 000000000..9161fb586 --- /dev/null +++ b/templates/web/zerotb/report/display.html @@ -0,0 +1,34 @@ +[% + PROCESS "report/photo-js.html"; + PROCESS "maps/${map.type}.html"; + + problem_title = problem.title_safe _ ' - ' _ loc('Viewing a Clinic'); + INCLUDE 'header.html' + title = problem_title + robots = 'index, nofollow' + bodyclass = 'mappage'; +%] + +[% map_html %] + +</div> + +[% INCLUDE 'report/banner.html' %] + +[% IF c.flash.comment_created %] +<p> +[% loc('Your report has been sent') %] +</p> +[% END %] + +[% INCLUDE 'report/_main.html' %] + +<div class="shadow-wrap"> + <ul id="key-tools"> + <li><a class="chevron" id="key-tool-problems-nearby" href="[% c.uri_for( '/around', { lat => short_latitude, lon => short_longitude } ) %]">[% loc( 'Clinics nearby' ) %]</a></li> + </ul> + +</div> + +[% INCLUDE 'report/update-form.html' %] +[% INCLUDE 'footer.html' %] diff --git a/templates/web/zerotb/report/update-form.html b/templates/web/zerotb/report/update-form.html new file mode 100644 index 000000000..b278b5f8d --- /dev/null +++ b/templates/web/zerotb/report/update-form.html @@ -0,0 +1,64 @@ +<div id="update_form"> + <h2>[% loc( 'Report a stockout') %]</h2> + + <div class="general-sidebar-notes"> + [% INCLUDE 'report/updates-sidebar-notes.html' %] + </div> + + [% INCLUDE 'errors.html' %] + + <form method="post" action="[% c.uri_for( '/report/update' ) %]" id="form_update_form" name="updateForm" class="validate"[% IF c.cobrand.allow_photo_upload %] enctype="multipart/form-data"[% END %]> + <fieldset> + <input type="hidden" name="submit_update" value="1"> + <input type="hidden" name="id" value="[% problem.id | html %]"> + + <label for="form_update">[% loc( 'Details' ) %]</label> + [% IF field_errors.update %] + <div class='form-error'>[% field_errors.update %]</div> + [% END %] + <textarea rows="7" cols="30" name="update" id="form_update" placeholder="[% loc('Please write your update here') %]" required>[% update.text | html %]</textarea> + + [% IF c.user_exists %] + + [% INCLUDE name %] + + <input class="final-submit green-btn" type="submit" id="update_post" value="[% loc('Post') %]"> + + + [% ELSE %] + + <label for="form_rznvy">[% loc('Email' ) %]</label> + + <div class="general-sidebar-notes"> + <p class="dark">[% loc('We never show your email or name') %]</p> + </div> + + [% IF field_errors.email %] + <p class='form-error'>[% field_errors.email %]</p> + [% END %] + <input type="email" name="rznvy" id="form_rznvy" value="[% update.user.email | html %]" placeholder="[% loc('Your email address' ) %]" required> + + <div id="form_sign_in"> + <div id="form_sign_in_no"> + [% INCLUDE name %] + + <div class="form-txt-submit-box"> + <input class="green-btn" type="submit" name="submit_register" id="submit_register" value="[% loc('Post') %]"> + </div> + </div> + </div> + + [% END %] + </fieldset> + </form> +</div> + +[% BLOCK name %] + [% INCLUDE 'report/new/extra_name.html' %] + <label for="form_name">[% loc('Name') %]</label> + [% IF field_errors.name %] + <p class='form-error'>[% field_errors.name %]</p> + [% END %] + <input type="text" [% IF problem.bodies_str == '2482' %]class="validName" [% END %]name="name" id="form_name" value="[% update.name || c.user.name | html %]" placeholder="[% loc('Your name') %]"> + +[% END %] diff --git a/templates/web/zerotb/report/updates-sidebar-notes.html b/templates/web/zerotb/report/updates-sidebar-notes.html new file mode 100644 index 000000000..28de7d4fa --- /dev/null +++ b/templates/web/zerotb/report/updates-sidebar-notes.html @@ -0,0 +1,3 @@ + <p> + [% loc( 'Please note that reports are sent to the clinic.' ) %] + [% loc( 'Your information will only be used in accordance with our <a href="/privacy">privacy policy</a>' ) %]</p> diff --git a/templates/web/zurich/admin/body-form.html b/templates/web/zurich/admin/body-form.html new file mode 100644 index 000000000..a31dffe7c --- /dev/null +++ b/templates/web/zurich/admin/body-form.html @@ -0,0 +1,54 @@ + <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"> + + <p> + <label for="name">[% loc('Name') %]</label> + <input type="text" name="name" id="name" value="[% body.name %]" size="50"> + </p> + + <p> + <label for="email">[% loc('Email') %]</label> + <input type="text" name="endpoint" id="email" value="[% body.endpoint %]" size="50"> + </p> + + <p> + <label for="parent">[% loc('Parent') %]</label> + <select name="parent" id="parent"> + <option value=""> -- [% loc('Select a body') %] -- </option> + [% FOR b IN bodies %] + <option value="[% b.id %]"[% ' selected' IF body.parent.id == b.id %]>[% b.name %]</option> + [% END %] + </select> + </p> + + <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> + [% END %] + </select> + </p> + + <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 %]"> + <input type="hidden" name="api_key" id="api_key" value="[% body.api_key %]"> + <input type="hidden" id="send_comments" name="send_comments" value="[% body.send_comments %]"> + <input type="hidden" name="comment_user_id" value="[% body.comment_user_id %]"> + <input type="hidden" id="suppress_alerts" name="suppress_alerts" value="[% body.suppress_alerts %]"> + <input type="hidden" id="can_be_devolved" name="can_be_devolved" value="[% body.can_be_devolved %]"> + + <p> + <input type="hidden" name="posted" value="body"> + <input type="hidden" name="token" value="[% token %]"> + <input type="submit" value="[% body ? loc('Update body') : loc('Add body') %]"> + </p> + </form> + diff --git a/templates/web/zurich/admin/body.html b/templates/web/zurich/admin/body.html new file mode 100644 index 000000000..764ad9bd8 --- /dev/null +++ b/templates/web/zurich/admin/body.html @@ -0,0 +1,67 @@ +[% INCLUDE 'admin/header.html' title=tprintf(loc('Council contacts for %s'), body.name) -%] +[% PROCESS 'admin/report_blocks.html' %] + +[% IF updated %] +<p> +<em>[% updated %]</em> +</p> +[% END %] + +[% IF admin_type == 'super' AND body.parent AND NOT body.parent.parent # A division %] + <table cellspacing="0" cellpadding="2" border="1"> + <tr> + <th>[% loc('Category') %]</th> + <th>[% loc('Email') %]</th> + <th>[% loc('Last editor') %]</th> + <th>[% loc('Note') %]</th> + <th>[% loc('When edited') %]</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>[% contact.editor %]</td> + <td>[% contact.note | html %]</td> + <td>[% PROCESS format_date this_date=contact.whenedited %]</td> + </tr> + [% END %] + </table> + + <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> + <strong>[% loc('Category:') %] </strong><input type="text" name="category" size="30"> + </p> + [% END %] + + <p> + <strong>[% loc('Email:') %] </strong><input type="text" name="email" size="30"> + </p> + + <input type="hidden" name="confirmed" value="1" id="confirmed"> + + <p> + <strong>[% loc('Note:') %] </strong> <textarea name="note" rows="3" cols="40"></textarea> + </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> + <input type="hidden" name=".cgifields" value="confirmed" > + <input type="hidden" name=".cgifields" value="deleted" > + </div> + </form> + +[% END %] + + <h2>[% loc('Edit body details') %]</h2> + [% INCLUDE 'admin/body-form.html' %] + +[% INCLUDE 'admin/footer.html' %] diff --git a/templates/web/zurich/admin/edit-league.html b/templates/web/zurich/admin/edit-league.html new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/templates/web/zurich/admin/edit-league.html diff --git a/templates/web/zurich/admin/header.html b/templates/web/zurich/admin/header.html new file mode 100644 index 000000000..281b1de23 --- /dev/null +++ b/templates/web/zurich/admin/header.html @@ -0,0 +1,34 @@ +[% + SET bodyclass = bodyclass || 'fullwidthpage'; + INCLUDE 'header.html' admin = 1, bodyclass = bodyclass _ ' admin'; + + states = { + 'unconfirmed' = loc('Submitted'), + 'confirmed' = loc('Open'), + 'in progress' = loc('In progress'), + 'planned' = loc('Planned'), + 'fixed - council' = loc('Closed'), + 'hidden' = loc('Hidden'), + 'closed' = loc('Closed'), + } +%] +<style type="text/css"> + .adminhidden { color: #666666; } + .admininternal { background-color: #eeeeff; } + .active { background-color: #ffffee; cursor: pointer; } + .error { color: red; } + .overdue { background-color: #ffcccc; } + select { width: auto; } + #fms_pan_zoom { top: 13em !important; } +</style> +<script> +$(function(){ + $('.row-link').hover(function(){ + $(this).toggleClass("active"); + }).click(function(){ + window.location = this.getElementsByTagName('a')[0]; + }).find('td:last').hide(); + $('th.edit').hide(); +}); +</script> + diff --git a/templates/web/zurich/admin/index-dm.html b/templates/web/zurich/admin/index-dm.html new file mode 100644 index 000000000..e0b62d5d2 --- /dev/null +++ b/templates/web/zurich/admin/index-dm.html @@ -0,0 +1,37 @@ +[% PROCESS 'admin/header.html' title=loc('Summary') -%] +[% PROCESS 'admin/report_blocks.html' %] + +[% status_message %] + +<h2 id="submitted">[% loc('Submitted') %]</h2> +[% INCLUDE list, problems = unconfirmed.all, hash = 'submitted' %] + +<h2 id="planned">[% loc('Planned') %]</h2> +[% INCLUDE list, problems = approval.all, hash = 'planned' %] + +<h2 id="alle">[% loc('All reports') %]</h2> +[% INCLUDE list, problems = other.all, include_subdiv = 1, hash = 'alle' %] +[% INCLUDE 'pagination.html', admin = 1, param = 'p', hash = 'alle' %] + +[% INCLUDE 'admin/footer.html' %] + +[% BLOCK list %] +<table cellspacing="0" cellpadding="2" border="1"> + <tr> + <th>[% loc('ID') %]</th> + <th>[% loc('Description') %]</th> + [% FOREACH col IN [ [ 'category', loc('Category') ], [ 'created', loc('Submitted') ], [ 'lastupdate', loc('Updated') ], [ 'state', loc('Status') ] ] %] + <th><a href="[% INCLUDE sort_link choice = col.0 %]#[% hash %]">[% col.1 %] [% INCLUDE sort_arrow choice = col.0 %]</a></th> + [% END %] + [% IF include_subdiv %] + <th>[% loc('Subdivision/Body') %]</th> + [% END %] + <th>[% loc('Photo') %]</th> + <th class='edit'>*</th> + </tr> + <tr class="filter-row"> + <td colspan="8"><input type="text" placeholder="[%= loc('Filter report list') %]" /></td> + </tr> +[% INCLUDE 'admin/problem_row.html' %] +</table> +[% END %] diff --git a/templates/web/zurich/admin/index-sdm.html b/templates/web/zurich/admin/index-sdm.html new file mode 100644 index 000000000..707bb2d9d --- /dev/null +++ b/templates/web/zurich/admin/index-sdm.html @@ -0,0 +1,34 @@ +[% PROCESS 'admin/header.html' title=loc('Summary') -%] +[% PROCESS 'admin/report_blocks.html' %] + +<h2 id="new">[% loc('New reports') %]</h2> +[% INCLUDE list, problems = reports_new.all, hash = 'new' %] + +<h2 id="wait">[% loc('Reports awaiting approval') %]</h2> +[% INCLUDE list, problems = reports_unpublished.all, no_edit = 1, hash = 'wait' %] + +<h2 id="alle">[% loc('Reports published') %]</h2> +[% INCLUDE list, problems = reports_published.all, no_edit = 1, hash = 'alle' %] +[% INCLUDE 'pagination.html', admin = 1, param = 'p', hash = 'alle' %] + +[% INCLUDE 'admin/footer.html' %] + +[% BLOCK list %] +<table cellspacing="0" cellpadding="2" border="1"> + <tr> + <th>[% loc('ID') %]</th> + <th>[% loc('Description') %]</th> + [% FOREACH col IN [ [ 'category', loc('Category') ], [ 'created', loc('Submitted') ], [ 'lastupdate', loc('Updated') ], [ 'state', loc('Status') ] ] %] + <th><a href="[% INCLUDE sort_link choice = col.0 %]#[% hash %]">[% col.1 %] [% INCLUDE sort_arrow choice = col.0 %]</a></th> + [% END %] + <th>[% loc('Photo') %]</th> + [% IF NOT no_edit %] + <th class='edit'>*</th> + [% END %] + </tr> + <tr class="filter-row"> + <td colspan="8"><input type="text" placeholder="[%= loc('Filter report list') %]" /></td> + </tr> +[% INCLUDE 'admin/problem_row.html' %] +</table> +[% END %] diff --git a/templates/web/zurich/admin/index.html b/templates/web/zurich/admin/index.html new file mode 100644 index 000000000..a51c7f6fe --- /dev/null +++ b/templates/web/zurich/admin/index.html @@ -0,0 +1,17 @@ +[% PROCESS 'admin/header.html' title=loc('Summary') -%] + +<ul> + <li>[% tprintf( loc('<strong>%d</strong> live problems'), total_problems_live ) %]; + [% tprintf( loc('from %d different users'), total_problems_users ) %]</li> + <li>[% tprintf( loc('%d council contacts – %d confirmed, %d unconfirmed'), contacts.total, contacts.1, contacts.0) %]</li> +</ul> + +<h2>[% loc('Problem breakdown by state') %]</h2> +<ul> + [% FOREACH state IN problems.keys.sort %] + [% NEXT IF NOT states.$state %] + <li>[% problems.$state %] [% states.$state %]</li> + [% END %] +</ul> + +[% INCLUDE 'admin/footer.html' %] diff --git a/templates/web/zurich/admin/list_updates.html b/templates/web/zurich/admin/list_updates.html new file mode 100644 index 000000000..2b575f27e --- /dev/null +++ b/templates/web/zurich/admin/list_updates.html @@ -0,0 +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 -%] + [% 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 new file mode 100644 index 000000000..9b395a1ac --- /dev/null +++ b/templates/web/zurich/admin/problem_row.html @@ -0,0 +1,45 @@ +[%- FOR problem IN problems %] + [% SET p_body = problem.bodies.values.0 %] + <tr[% + SET classes = []; + classes.push('adminhidden') IF problem.state == 'hidden'; + 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; + %]> + <td class="record-id"> + [% IF no_edit AND problem.is_visible %] + <a href="[% c.uri_for_email( '/report', problem.id ) %]">[% problem.id %]</a> + [% ELSE %] + [% problem.id %] + [% END %] + </td> + <td>[% PROCESS value_or_nbsp value=problem.title %]</td> + <td>[% PROCESS value_or_nbsp value=problem.category %]</td> + <td>[% PROCESS format_date this_date=problem.created %]</td> + <td>[% PROCESS format_date this_date=problem.lastupdate %]</td> + <td>[% states.${problem.state} %]</td> + + [% IF include_subdiv %] + <td> + [%- IF p_body.parent.parent.id -%][%# ...it's a subdivision %] + [% PROCESS value_or_nbsp value=p_body.name %] + [%- ELSIF problem.external_body %] + [% PROCESS value_or_nbsp value=problem.body(c).name %] + [%- ELSE -%] + + [%- END -%] + </td> + [% END %] + + <td> + [% IF problem.photo %] + <img class="img" height="60" width="90" src="[% c.cobrand.base_url %]/photo/[% problem.photo %].temp.jpeg" alt=""> + [% END %] + </td> + + [% IF NOT no_edit %] + <td><a href="[% c.uri_for( 'report_edit', problem.id ) %]">[% loc('Edit') %]</a></td> + [% END %] + </tr> +[%- END -%] diff --git a/templates/web/zurich/admin/report_edit-sdm.html b/templates/web/zurich/admin/report_edit-sdm.html new file mode 100644 index 000000000..5ff031ce2 --- /dev/null +++ b/templates/web/zurich/admin/report_edit-sdm.html @@ -0,0 +1,74 @@ +[% + PROCESS "maps/zurich.html"; + PROCESS 'admin/header.html' + title = tprintf(loc('Editing problem %d'), problem.id ), + bodyclass = 'mappage'; + PROCESS 'admin/report_blocks.html' +-%] + +[% map_html %] + <p id='sub_map_links'> + <a class="hidden-nojs" id="map_layer_toggle" href="">Stadtplan</a> + </p> +</div> + +[% status_message %] + +<form method="post" action="[% c.uri_for( 'report_edit', problem.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" > + +<p align="right"><input type="submit" name="send_back" value="[% loc('Not for my subdivision') %]"></p> + +<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>[% + SET safe = problem.extra.original_detail | html; + tprintf( loc('originally entered: “%s”'), safe ) +%] +[% END %] +</li> +<li><span class="mock-label">[% loc('Co-ordinates:') %]</span> [% problem.local_coords.join(',') %] + <input type="hidden" name="latitude" id="fixmystreet.latitude" value="[% problem.latitude %]"> + <input type="hidden" name="longitude" id="fixmystreet.longitude" value="[% problem.longitude %]"> +([% + SET safe = problem.postcode | html; + tprintf( loc('originally entered: “%s”'), safe ) +%], +[% IF problem.used_map %][% loc('used map') %][% ELSE %][% loc("didn't use map") %][% END %])</li> + +<li><span class="mock-label">[% loc('Category:') %]</span> [% problem.category | html %] </li> +<li><span class="mock-label">[% loc('Name:') %]</span> [% problem.name | html %] +<li><span class="mock-label">[% loc('Email:') %]</span> [% problem.user.email | html %] +[% IF NOT problem.extra.email_confirmed %]<span class="error">[% loc('Unconfirmed') %]</span>[% END %] +<li><span class="mock-label">[% loc('Phone:') %]</span> [% IF problem.user.phone %][% problem.user.phone | html %][% ELSE %]<em>[% loc('None') %]</em>[% END %]</li> +<li><span class="mock-label">[% loc('Created:') %]</span> [% PROCESS format_date this_date=problem.created %] [% problem.created.hms %]</li> + +[% IF problem.photo %] +<li><img alt="" src="[% c.cobrand.base_url %]/photo/[% problem.photo %].temp.jpeg"></li> +[% END %] + +<li><span class="mock-label">[% loc('State:') %]</span> [% states.${problem.state} %]</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> + +</ul> + +<p class="cf"> + <input style="float:left" type="submit" name="Submit changes" value="[% loc('Submit changes') %]" > + <input style="float:right" type="submit" name="no_more_updates" value="[% loc('No further updates') %]"> +</p> +</form> + +[% INCLUDE 'admin/list_updates.html' %] + +[% INCLUDE 'admin/footer.html' %] diff --git a/templates/web/zurich/admin/report_edit.html b/templates/web/zurich/admin/report_edit.html new file mode 100644 index 000000000..66a51f162 --- /dev/null +++ b/templates/web/zurich/admin/report_edit.html @@ -0,0 +1,231 @@ +[% + PROCESS "report/photo-js.html"; + PROCESS "maps/zurich.html"; + INCLUDE 'admin/header.html' + title = tprintf(loc('Editing problem %d'), problem.id ), + bodyclass = 'mappage'; + PROCESS 'admin/report_blocks.html' +-%] + +[% map_html %] + <p id='sub_map_links'> + <a class="hidden-nojs" id="map_layer_toggle" href="">Stadtplan</a> + </p> +</div> + +[% status_message %] + +<form method="post" action="[% c.uri_for( 'report_edit', problem.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" > + +<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 %] + <br>[% + SET detail_safe = problem.extra.original_detail | html; + tprintf( loc('originally entered: “%s”'), detail_safe ) + %] + [% END %] + </li> +[% ELSE %] + <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=5>[% problem.detail | html %]</textarea> + [% IF problem.extra.original_detail %] + [% + SET detail_safe = problem.extra.original_detail | html; + tprintf( loc('originally entered: “%s”'), detail_safe ) + %] + [% END %] + </li> +[% END %] + +<li><span class="mock-label">[% loc('Co-ordinates:') %]</span> [% problem.local_coords.join(',') %] + <input type="hidden" name="latitude" id="fixmystreet.latitude" value="[% problem.latitude %]"> + <input type="hidden" name="longitude" id="fixmystreet.longitude" value="[% problem.longitude %]"> + +([% + SET safe = problem.postcode | html; + tprintf( loc('originally entered: “%s”'), safe ) +%], +[% IF problem.used_map %][% loc('used map') %][% ELSE %][% loc("didn't use map") %][% END %])</li> + +<li><span class="mock-label">[% loc('Name:') %]</span> [% problem.name | html %] <input type='hidden' name='name' id='name' value='[% problem.name | html %]'></li> +<li><span class="mock-label">[% loc('Email:') %]</span> [% problem.user.email | html %] <input type='hidden' id='email' name='email' value='[% problem.user.email | html %]'> +[% IF NOT problem.extra.email_confirmed %]<span class="error">[% loc('Unconfirmed') %]</span>[% END %] +</li> +<li><span class="mock-label">[% loc('Phone:') %]</span> [% IF problem.user.phone %][% problem.user.phone | html %][% ELSE %]<em>[% loc('None') %]</em>[% END %]</li> +<li><span class="mock-label">[% loc('Created:') %]</span> [% PROCESS format_date this_date=problem.created %] [% problem.created.hms %]</li> + + +[% IF problem.photo %] +<li> +[% photo = problem.get_photo_params %] +<div class="update-img"> + <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') %]"> +<input type="submit" name="rotate_photo" value="[% loc('Rotate Right') %]"> +<br> +<input type="checkbox" id="publish_photo" name="publish_photo" value="1"[% ' checked' IF problem.extra.publish_photo %]> +<label class="inline" for="publish_photo">[% loc("Publish photo") %]</label></li> +[% END %] +</ul> + +<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> + [% FOREACH s IN [ + ['unconfirmed', loc('Submitted')] + ['confirmed', loc('Open')], + ['planned', loc('Planned')], + ['hidden', loc('Hidden')], + ] %] + <option [% 'selected ' IF s.0 == problem.state %] value="[% s.0 %]">[% s.1 %]</option> + [% END %] + [% IF problem.state == 'closed' %] + <option selected value="closed">[% loc('Closed') %]</option> + [% ELSIF problem.state == 'fixed - council' %] + <option selected value="fixed - council">[% loc('Closed') %]</option> + [% ELSIF problem.state == 'in progress' %] + <option selected value="in progress">[% loc('In progress') %]</option> + [% 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"> +[% list = FOR body IN bodies %] + [%- NEXT UNLESS body.parent.id == c.user.from_body.id %] + <option value="[% body.id %]"[% IF body.id == problem.bodies_str %] selected[% END %]>[% body.name %]</option> +[% END %] + [% IF admin_type != 'super' AND list %] + <li class="assignation"> + <label for="body_subdivision">[% loc('Assign to subdivision:') %]</label> + <select name="body_subdivision" id="body_subdivision"> + <option value="">--</option> + [% list %] + </select> + </li> + [% END %] + +<li class="assignation"> +<label for="category"> +[% loc('Category:') %] [% problem.category %]<br> +[% loc('Assign to different category:') %]</label> + <select name="category" id="category"> + <option value="">--</option> + [% FOREACH cat IN categories %] + <option value="[% cat %]">[% cat %]</option> + [% END %] + </select></li> + +<li class="assignation"> +<label for="body_external">[% loc('Assign to external body:') %]</label> + <select name="body_external" id="body_external"> + <option value="">--</option> + [% FOR body IN 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> + <br> + <input type="checkbox" name="third_personal" id="third_personal" value="1"[% ' checked' IF problem.extra.third_personal %]> + <label for="third_personal" class="inline">[% loc('Include reporter personal details') %]</label> + +</ul> + +<script type="text/javascript"> +$(function(){ + $('.assignation select').change(function(){ + if (this.value == "") { + $('.assignation').css('color', '#000'); + } else { + var a = $(this).closest('li').css('color', '#000'); + $('.assignation select').not(this).val(""); + $('.assignation').not(a).css('color', '#999'); + } + }); +}); +</script> + +[% ELSIF problem.state == 'planned' %] + +<ul class="no-bullets"> +[% list = FOR body IN bodies %] + [%- NEXT UNLESS body.parent.id == c.user.from_body.id %] + <option value="[% body.id %]">[% body.name %]</option> +[% END %] + [% IF admin_type != 'super' AND list %] + <li class="assignation"> + <label for="body_subdivision">[% loc('Assign to subdivision:') %]</label> + <select name="body_subdivision" id="body_subdivision"> + <option value="" selected>--</option> + [% list %] + </select> + </li> + [% END %] + + <li><label for="status_update">[% loc('Public response:') %]</label> + + <textarea name='status_update' id='status_update' cols=60 rows=5> + [%- IF problem.extra.public_response -%] + [%- problem.extra.public_response | html -%] + [%- ELSE -%] + +Freundliche Grüsse + +Ihre Stadt Zürich + [%- END %]</textarea> + </li> +</ul> + +[% ELSIF problem.state == 'fixed - council' %] + +<p><span class="mock-label">[% loc('Public response:') %]</span> +[% problem.extra.public_response | html %] +</p> + +[% END %] + +<p align="right"> +[% IF problem.state == 'planned' %] +<input type="submit" name="publish_response" value="[% loc('Publish the response') %]"> +[% END %] +<input type="submit" name="Submit changes" value="[% loc('Submit changes') %]" > +</p> + +</form> + +[% INCLUDE 'admin/list_updates.html' %] + +[% INCLUDE 'admin/footer.html' %] diff --git a/templates/web/zurich/admin/reports.html b/templates/web/zurich/admin/reports.html new file mode 100644 index 000000000..68f98c44a --- /dev/null +++ b/templates/web/zurich/admin/reports.html @@ -0,0 +1,28 @@ +[% PROCESS 'admin/header.html' title=loc('Search Reports') %] +[% PROCESS 'admin/report_blocks.html' %] + +<form method="get" action="[% c.uri_for('reports') %]" 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> + +[% IF problems.size %] +<table cellspacing="0" cellpadding="2" border="1"> + <tr> + <th>[% loc('ID') %]</th> + <th>[% loc('Description') %]</th> + [% 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' %] +</table> + +[% INCLUDE 'pagination.html', admin = 1, param = 'p' IF pager %] + +[% END %] + +[% INCLUDE 'admin/list_updates.html' %] + +[% INCLUDE 'admin/footer.html' %] diff --git a/templates/web/zurich/admin/stats.html b/templates/web/zurich/admin/stats.html new file mode 100644 index 000000000..52b33ebc4 --- /dev/null +++ b/templates/web/zurich/admin/stats.html @@ -0,0 +1,54 @@ +[% INCLUDE 'admin/header.html' title=loc('Stats') %] +[% PROCESS 'admin/report_blocks.html' %] +[% USE date %] + +<p style="float:right"><a href="[% c.uri_with( { export=1 } ) %]">[% loc('All Reports') %]</a></p> + +[% IF start_date AND end_date %] +<p><strong>[% tprintf( loc( 'All reports between %s and %s' ), start_date.ymd, end_date.ymd ) | html %]</strong></p> +[% END %] + +<form method="get" action="[% c.uri_for('stats') %]"> +<p><select name="ym"> + <option value="">[% loc('All reports') %]</option> + [% FOR y IN [ 2013 .. date.format(date.now, '%Y') ]; + SET max = 12; + 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; + %] + <option[% ' selected' IF v == ym %]>[% v %]</option> + [% END %] + [% END %] +</select> + +<input type="submit" value="[% loc('Go') %]"> +</form> + +<ul> +<li>[% loc('Total') %]: [% reports_total || 0 %] +<li>[% loc('Closed') %]: [% reports_solved || 0 %] +<li>[% loc('Hidden') %]: [% reports_spam || 0 %] +<li>Externe Adressen: [% reports_assigned || 0 %] +<li>[% loc('Moderated by division within one working day') %]: [% reports_moderated || 0 %] +<li>[% loc('Dealt with by subdivision within 5 working days') %]: [% reports_dealtwith || 0 %] +<li>[% loc('Assign to different category:') %] [% reports_category_changed || 0 %] +<li>[% loc('Photo') %]: [% pictures_taken || 0 %] +<li>[% loc('Publish photo') %]: [% pictures_published || 0 %] +<!-- <li>[% loc('Phone:') %] [% users_phone || 0 %] --> +<li>[% loc('Confirmed') %]: [% email_confirmed || 0 %] +<li>[% loc('Name:') %] [% name_provided || 0 %] +</ul> + +<table> +<tr><th>[% loc('Service:') %]</th><th>[% loc('Count') %]</th></tr> +[% WHILE ( s = per_service.next ) %]<tr><td>[% s.service || 'Web' %]</td><td>[% s.get_column('c') %]</td></tr>[% END %] +</table> + +<table> +<tr><th>[% loc('Category') %]</th><th>[% loc('Count') %]</th></tr> +[% WHILE ( c = per_category.next ) %]<tr><td>[% c.category %]</td><td>[% c.get_column('c') %]</td></tr>[% END %] +</table> + +[% INCLUDE 'admin/footer.html' %] diff --git a/templates/web/zurich/admin/update_edit.html b/templates/web/zurich/admin/update_edit.html new file mode 100644 index 000000000..ab40981a5 --- /dev/null +++ b/templates/web/zurich/admin/update_edit.html @@ -0,0 +1,40 @@ +[% INCLUDE 'admin/header.html' title=tprintf(loc('Editing update %d'), update.id ) -%] +[% PROCESS 'admin/report_blocks.html' %] + +[% status_message %] + +<form method="post" action="[% c.uri_for( 'update_edit', update.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" > +<ul> +<li><a href="[% c.uri_for_email( '/report', update.problem_id ) %]#update_[% update.id %]">[% loc('View report on site' )%]</a></li> + +<li><label for='detail'>[% loc('Text:') %]</label> +<textarea name='text' id='text' cols=60 rows=5>[% update.text | html %]</textarea></li> + +<input type="hidden" name="anonymous" value="[% update.anonymous %]"> + +<li>[% loc('State:') %] <select name="state" id="state"> + [% FOREACH state IN [ ['confirmed', loc('Open')], ['hidden', loc('Hidden')], ['unconfirmed',loc('Unconfirmed')] ] %] + <option [% 'selected ' IF state.0 == update.state %] value="[% state.0 %]">[% state.1 %]</option> + [% END %] +</select></li> +<input type='hidden' name='name' id='name' value='[% update.name | html %]'> +<input type='hidden' id='email' name='email' value='[% update.user.email | html %]'> +[% IF update.problem_state %] +<li>[% tprintf(loc('Update changed problem state to %s'), update.problem_state) %]</li> +[% END %] +</li> + +<li>[% loc('Created:') %] [% PROCESS format_date this_date=update.created %] [% update.created.hms %]</li> + +[% IF update.photo %] +[% photo = update.get_photo_params %] +<li><img alt="" height="[% photo.height %]" width="[% photo.width %]" src="[% photo.url %]"> +<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 %] +</ul> +<input type="submit" name="Submit changes" value="[% loc('Submit changes') %]" ></form> + +[% INCLUDE 'admin/footer.html' %] diff --git a/templates/web/zurich/around/_updates.html b/templates/web/zurich/around/_updates.html new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/templates/web/zurich/around/_updates.html diff --git a/templates/web/zurich/around/intro.html b/templates/web/zurich/around/intro.html new file mode 100644 index 000000000..04edcd3a7 --- /dev/null +++ b/templates/web/zurich/around/intro.html @@ -0,0 +1,12 @@ + <h1>[% loc('Report, view, or discuss local problems') %]</h1> + <h2>(Pilot bis März 2014)</h2> + +<!-- FIXME Better place for this --> +<script> + $(function() { + $( "#pc" ).autocomplete({ + minLength: 3, + source: "/ajax/geocode" + }); + }); +</script> diff --git a/templates/web/zurich/auth/general.html b/templates/web/zurich/auth/general.html new file mode 100644 index 000000000..11c729fde --- /dev/null +++ b/templates/web/zurich/auth/general.html @@ -0,0 +1,73 @@ +[% INCLUDE 'header.html', title = loc('Sign in or create an account') %] + +[% IF email_error; + + # other keys include fqdn, mxcheck if you'd like to write a custom error message + + errors = { + missing => loc('Please enter your email'), + other => loc('Please check your email address is correct') + }; + + loc_email_error = errors.$email_error || errors.other; +END %] + +<form action="[% c.uri_for() %]" method="post" name="general_auth_login" class="validate"> + <fieldset> + + <h1>[% loc('Sign in') %]</h1> + + <input type="hidden" name="r" value="[% c.req.params.r | html %]"> + + <div id="form_sign_in_yes" class="form-box"> + + <label class="n" for="email">[% loc('Email') %]</label> + [% IF loc_email_error %] + <div class="form-error">[% loc_email_error %]</div> + [% ELSIF sign_in_error %] + <div class="form-error">[% loc('There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the ‘sign in by email’ section of the form.') %]</div> + [% END %] + <input type="email" class="required email" id="email" name="email" value="[% email | html %]" placeholder="[% loc('Your email address') %]"> + + <label for="password_sign_in">[% loc('Password (optional)') %]</label> + <div class="form-txt-submit-box"> + <input type="password" class="required" name="password_sign_in" id="password_sign_in" value="" placeholder="[% loc('Your password') %]"> + <input class="green-btn" type="submit" name="sign_in" value="[% loc('Sign in') %]"> + </div> + + <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> +</form> + +<form action="[% c.uri_for() %]" method="post" name="general_auth_register" class="validate"> + <fieldset> + <input type="hidden" name="r" value="[% c.req.params.r | html %]"> + + <h1>[% loc('<strong>No</strong> let me sign in by email') %]</h1> + <div id="form_sign_in_no" class="form-box"> + + <label class="n" for="email2">[% loc('Email') %]</label> + [% IF loc_email_error %] + <div class="form-error">[% loc_email_error %]</div> + [% END %] + <input type="email" class="required email" id="email2" name="email" value="[% email | html %]" placeholder="[% loc('Your email address') %]"> + + <label for="name">[% loc('Name') %]</label> + <input type="text" class="required" name="name" value="" placeholder="[% loc('Your name') %]"> + + <label for="password_register">[% loc('Password (optional)') %]</label> + <div class="form-txt-submit-box"> + <input type="password" class="required" name="password_register" id="password_register" value="" placeholder="[% loc('Enter a password') %]"> + <input class="green-btn" type="submit" name="email_sign_in" value="Registrieren"> + </div> + + </div> + </fieldset> +</form> + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/zurich/auth/sign_out.html b/templates/web/zurich/auth/sign_out.html new file mode 100644 index 000000000..644118f63 --- /dev/null +++ b/templates/web/zurich/auth/sign_out.html @@ -0,0 +1,7 @@ +[% INCLUDE 'header.html', title = loc('Sign out'), bodyclass = 'fullwidthpage' %] + +<h1>[% loc('You have been signed out') %]</h1> + +<p>[% tprintf( loc('Please feel free to <a href="%s">sign in again</a>, or go back to the <a href="/">front page</a>.'), c.uri_for('/admin') ) %]</p> + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/zurich/faq/faq-de-ch.html b/templates/web/zurich/faq/faq-de-ch.html new file mode 100644 index 000000000..c7e284194 --- /dev/null +++ b/templates/web/zurich/faq/faq-de-ch.html @@ -0,0 +1,88 @@ +[% INCLUDE 'header.html', title => loc('Help'), bodyclass => 'fullwidthpage' %] + +<h1><a name="faq"></a>Hilfe</h1> + + <dl> + +<dt>Was ist «Züri wie neu»</dt> +<dd> +«Züri wie neu» ist eine Online-Plattform, über die die Einwohnerinnen und +Einwohner der Stadt Zürich auf Mängel und Schäden der städtischen Infrastruktur +hinweisen können. «Züri wie neu» wird von der Stadtverwaltung moderiert und +transparent geführt. Die Meldungen werden innerhalb von einem Arbeitstag den zuständigen Fachstellen +zugewiesen und innert fünf Arbeitstagen abschliessend beantwortet. Fällt eine +Meldung nicht in den Zuständigkeitsbereich der Stadtverwaltung, wird die +Meldung anonymisiert der zuständigen dritten Stelle per E-Mail zugestellt. +</dd> + +<dt>Welche Probleme kann ich über «Züri wie neu» melden?</dt> +<dd> +<p>Gemeldet werden können sämtliche Schäden an der Infrastruktur der Stadt Zürich. +Dabei kann es sich um ein Loch im Strassenbelag, ein Graffiti am Stadthaus oder +eine durch Vandalen beschädigte Parkbank handeln. + +<p>Es können Probleme zu folgenden Kategorien gemeldet werden: + +<ul> +<li>Abfall / Sammelstellen</li> +<li>Beleuchtung</li> +<li>Graffiti</li> +<li>Spielplatz / Sitzbank</li> +<li>Strasse / Trottoir / Platz</li> +<li>Tiere / Grünflächen</li> +</ul> + +</dd> + +<dt>Was kann ich nicht über «Züri wie neu» melden?</dt> +<dd> +<ul> +<li>Mängel die nicht auf Stadtgebiet liegen.</li> +<li>Melden Sie «Züri wie neu» KEINE Notfälle. Die Notrufnummern lauten: + <br>Medizinisch - 144 Polizei - 117 Feuer - 118 Allgemein - 112</li> +<li>Allgemeine Verschönerungs- und Verbesserungsvorschläge</li> +</ul> +</dd> + +<dt>Wie verwende ich die Webseite?</dt> +<dd> +<p> +Geben Sie zuerst eine Adresse an oder lassen Sie Ihren Standort automatisch +über den entsprechenden Link lokalisieren. Mittels Mausklick in die danach +angezeigte Karte können Sie den exakten Ort des Mangels angeben. Als letzten +Schritt füllen Sie die Felder des Formulars aus und schicken die Meldung ab. +</p> +<p> +Weiter können Sie bestehende Meldungen sowie auch die Rückmeldungen der +Verwaltung betrachten. +</p> +</dd> + +<dt>Wie werden die Probleme gelöst?</dt> +<dd> +Die Meldungen werden innerhalb von einem Arbeitstag den zuständigen Fachstellen +zugewiesen und innert fünf Arbeitstagen von den dafür zuständigen +Fachstellen bearbeitet sowie mit einer entsprechenden Rückmeldung versehen. +</dd> + +<dt>Kann ich «Züri wie neu» auf meinem Smartphone nutzen?</dt> +<dd> +Ja, sowohl über die für mobile Geräte optimierte Webseite, als auch über die +<a href="https://itunes.apple.com/ch/app/zuri-wie-neu/id631302236">iOS</a>- und <a href="https://play.google.com/store/apps/details?id=ch.zueriwieneu.zueriwieneu">Android-App</a>. +</dd> + +<dt>Kann ich auch Probleme ausserhalb von Zürich melden?</dt> +<dd>Nein.</dd> + +<dt>Werden meine E-Mail-Adresse, mein Name und meine Telefonnummer vertraulich behandelt?</dt> +<dd> +Die Kontaktinformationen werden nur stadtintern für Rückfragen verwendet. Sie +werden weder im Internet publiziert noch an Dritte weitergegeben. +</dd> + +<dt>Wer hat «Züri wie neu» programmiert?</dt> +<dd>«Züri wie neu» wurde von <a href="http://www.mysociety.org/">mySociety</a> entwickelt.</dd> + +</dl> + +[% INCLUDE 'footer.html' pagefooter = 'yes' %] diff --git a/templates/web/zurich/faq/faq-de.html b/templates/web/zurich/faq/faq-de.html deleted file mode 100755 index a739f1b74..000000000 --- a/templates/web/zurich/faq/faq-de.html +++ /dev/null @@ -1,192 +0,0 @@ -[% 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="#practical">Practical Questions</a></li> - <li><a href="#organisation">Organisation Questions</a></li> - <li><a href="/privacy">Privacy and cookies</a></li> - </ul> - </aside> -</div> - -<h1><a name="faq"></a>Frequently Asked Questions</h1> - <dl> - <dt>What is FixMyStreet?</dt> - <dd>FixMyStreet is a site to help people report, view, -or discuss local problems they’ve found to their local council by -simply locating them on a map. It launched in early February -2007.</dd> - <dt>What sort of problems should I report with FixMyStreet?</dt> - <dd>FixMyStreet is primarily for reporting things which are -<strong>broken or dirty or damaged or dumped, and need fixing, cleaning -or clearing</strong>, such as: - - <ul><li>Abandoned vehicles - <li>Dog Fouling - <li>Flyposting or graffiti - <li>Flytipping or litter - <li>Streetcleaning, such as broken glass in a cycle lane - [% IF c.cobrand.moniker != 'southampton' %] - <li>Unlit lamposts - [% END %] - <li>Potholes - </ul> - </dd> - - <dt>What isn’t FixMyStreet for?</dt> - <dd>FixMyStreet is not a way of getting in touch with [% c.cobrand.is_council ? 'the' : 'your' %] council for all - issues – please use FixMyStreet only for problems such as the above. We - often route problem reports via cleansing services or highways and so using - FixMyStreet for other matters may result in a delay in your report getting - to the right department. <strong>You will need to contact [% c.cobrand.is_council ? 'the' : 'your' %] council - directly for problems such as</strong>: - - <ul><li>Anti-social behaviour - <li>Any urgent or emergency problems - <li>Noise pollution or barking dogs - <li>Fires and smoke/smell pollution - <li>Missing wheelie bins or recycling boxes or missed rubbish collections - <li>Proposals for speed bumps/ CCTV/ pedestrian crossings/ new road layouts/ etc. - <li>Complaining about your neighbours - <li>Complaining about the council - <li>Joy riding, drug taking, animal cruelty, or other criminal activity - </ul> - <p>Councils often have direct hotlines for these sorts of issues.</p> - </dd> - - <dt>How do I use the site?</dt> - <dd>After entering a postcode or location, you are presented -with a map of that area. You can view problems already reported in that area, -or report ones of your own simply by clicking on the map at the location of -the problem.</dd> - <dt>How are the problems solved?</dt> - <dd>They are reported to the [% IF !c.cobrand.is_council %]relevant[% END %] council by email. The -council can then resolve the problem the way they normally would. -Alternatively, you can discuss the problem on the website with others[% IF c.cobrand.moniker != 'southampton' %], and -then together lobby the council to fix it, or fix it directly yourselves[% END %].</dd> - <dt>Is it free?</dt> - <dd>The site is free to use, yes. FixMyStreet is run -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> - - </dl> - - <h2><a name="practical"></a>Practical Questions</h2> - <dl> - <dt>I’m from a council, where do you send the reports?</dt> - <dd>You can either leave a test report or <a href="/contact">contact us</a> -to find out where reports go at the moment. Also <a href="/contact">contact us</a> -to update the address or addresses we use.</dd> - <dt>I’m from a council, can we have FixMyStreet on our website?</dt> - <dd>Yes you can! We offer branded, hosted versions of FixMyStreet for local council websites. <a href="http://www.mysociety.org/for-councils/fixmystreet/">Full details</a>.</dd> - <dt>Do you remove silly or illegal content?</dt> - <dd>FixMyStreet is 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>Why does the site use kilometres for measurements?</dt> - <dd>Thanks for asking politely – we never quite understand why some of the rudest - emails we receive are on this topic. 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’t I zoom out more on the reporting map?</dt> - <dd>We want to keep FixMyStreet locally focused, so restrict the ability to - move radically between areas. The map on Your Reports will let you see all - the reports you’ve made, wherever they are. If you’re from the - council then the emailed version of the problem report also contains the - closest road and postcode to the pin on the map.</dd> - - <dt>This site is great – why aren’t you better publicised?</dt> - <dd>As a tiny charity we simply don’t have a publicity budget, and we - rely on word of mouth to advertise the site. We have a whole <a - href="posters/">array of posters, flyers and badges</a> if you’d like - to publicise us on the web or in your local area, and why not write to your - local paper to let them know about us?</dd> </dl> - - <h2><a name="organisation"></a>Organisation Questions</h2> - <dl> - <dt>Who built FixMyStreet?</dt> - <dd>This site 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.com</a>. -mySociety’s primary mission is to build Internet projects which give people simple, tangible -benefits in the civic and community aspects of their lives. Our first project -was <a href="http://www.writetothem.com/">WriteToThem</a>, where you can write to any of your -elected representatives, for free. The charity is called UK Citizens Online Democracy and is charity number 1076346. mySociety -can be contacted by email at <a href="mailto:hello@mysociety.org">hello@mysociety.org</a>, -or by post at mySociety, 483 Green Lanes, London, N13 4BS, UK.</dd> - <dt><img src="/i/moj.png" align="right" alt="Ministry of Justice" hspace="10">Who pays for it?</dt> - <dd>FixMyStreet was originally paid for via the Department for - Constitutional Affairs Innovations Fund. It is now funded by a variety of means, from commercial - work to <a href="http://www.mysociety.org/donate/">donations</a>.</dd> - <dt><a name="nfi"></a>Wasn’t this site called Neighbourhood Fix-It?</dt> - <dd>Yes, we changed the name mid June 2007. We decided -Neighbourhood Fix-It was a bit of a mouthful, hard to spell, and hard to publicise (does the URL have a dash in it or not?). The domain FixMyStreet became available, and everyone liked the name.</dd> - <dt>Do you need any help with the project?</dt> - <dd>Yes, we can use help in all sorts of ways, technical or -non-technical. Please see our <a -href="http://www.mysociety.org/helpus/">Get Involved page</a>.</dd> - <dt>I’d like a site like this for my own location/ where’s the "source code" to this site?</dt> - <dd> -The software behind this site is open source, and available -to you mainly under the GNU Affero GPL software license. You can <a -href="http://github.com/mysociety/fixmystreet">download the -source code</a> and help us develop it. -You’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> -<dt>I’d prefer code in a different language?</dt> -<dd> -VisibleGovernment.ca wrote their own code for -<a href="http://www.fixmystreet.ca/">http://www.fixmystreet.ca/</a>, which is -written in GeoDjango and available under an MIT licence at <a -href="http://github.com/visiblegovernment/django-fixmystreet/tree/master">github</a>. -Or <a href="http://www.fixmystreet.org.nz/">FixMyStreet.org.nz</a> is written in -Drupal. -</p> -</dd> - <dt>People build things, not organisations. Who <em>actually</em> built it?</dt> - <dd>Matthew Somerville and Francis Irving wrote the site, -Chris Lightfoot wrote the tileserver and map cutter, Richard Pope created -our pins, Deborah Kerr keeps things up-to-date and does user support, -Ayesha Garrett designed our posters, and Tom Steinberg managed it all. - -Thanks also to -<a href="http://www.ordnancesurvey.co.uk">Ordnance Survey</a> (for the maps, -UK postcodes, and UK addresses – data © Crown copyright, all -rights reserved, Ministry of Justice 100037819 2008), -Yahoo! for their BSD-licensed JavaScript libraries, the entire free software -community (this particular project was brought to you by Perl, PostgreSQL, -and the number 161.290) and <a -href="http://www.bytemark.co.uk/">Bytemark</a> (who kindly host all -our servers). - -Let us know if we’ve missed anyone.</dd> - </dl> -[% INCLUDE 'footer.html' pagefooter = 'yes' %] diff --git a/templates/web/zurich/footer.html b/templates/web/zurich/footer.html new file mode 100644 index 000000000..2304c048e --- /dev/null +++ b/templates/web/zurich/footer.html @@ -0,0 +1,40 @@ + </div><!-- .content role=main --> + </div><!-- .container --> + </div><!-- .table-cell --> + + <div class="nav-wrapper"> + <div class="nav-wrapper-2"> + <div class="nav-wrapper-3"> + <div id="main-nav" role="navigation"> + [% IF c.user_exists %] + <p> + [% tprintf(loc('Hi %s'), c.user.name || c.user.email) %] + </p><p><a href="/admin">[% loc('Summary') %]</a> | <a href="/auth/sign_out">[% loc('sign out') %]</a> + </p> + [% END %] + <ul id="main-menu" class="mob-only"> + <li><[% IF c.req.uri.path == '/' %]a onclick="$('html, body').animate({scrollTop:0}, 500); return false;" href="#site-header"[% ELSE %]a href="/"[% END %] + >[% loc("Report a problem") %]</[% c.req.uri.path == '/' ? 'a' : '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 == '/faq' %]span[% ELSE %]a href="/faq"[% END + %]>[% loc("Help") %]</[% c.req.uri.path == '/faq' ? 'span' : 'a' %]></li> + </ul> + </div> + </div> + </div> + </div> + +<!-- [% INCLUDE 'debug_footer.html' %] --> + </div> <!-- .wrapper --> + + <div id="zurich-footer-wrapper" class="desk-only"> + <div id="zurich-footer"> + © 2013 Stadt Zürich + <span class="hidden">|</span> <a href="http://www.stadt-zuerich.ch/content/portal/de/index/footer/rechtliche_hinweise.html">Rechtliche Hinweise</a> + <span class="hidden">|</span> <a href="http://www.stadt-zuerich.ch/content/portal/de/index/footer/impressum.html">Impressum</a> + </div> + </div> + +</body> +</html> diff --git a/templates/web/zurich/header.html b/templates/web/zurich/header.html index 9fa43f3fa..891c6f1d3 100644 --- a/templates/web/zurich/header.html +++ b/templates/web/zurich/header.html @@ -11,21 +11,23 @@ <meta name="HandHeldFriendly" content="true"> <meta name="mobileoptimized" content="0"> - <link rel="stylesheet" href="[% version('/cobrands/' _ c.cobrand.moniker _ '/base.css') %]"> - <link rel="stylesheet" href="[% version('/cobrands/' _ c.cobrand.moniker _ '/layout.css') %]" media="(min-width:48em)"> +[% 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)"> [% extra_css %] <!--[if (lt IE 9) & (!IEMobile)]> - <link rel="stylesheet" href="[% version('/cobrands/' _ c.cobrand.moniker _ '/layout.css') %]"> + <link rel="stylesheet" href="[% start %][% version('/cobrands/' _ c.cobrand.moniker _ '/layout.css') %]"> <![endif]--> - <script src="[% version('/js/modernizr.custom.js') %]" charset="utf-8"></script> - <script src="[% version('/cobrands/fixmystreet/position_map.js') %]" charset="utf-8"></script> - [% INCLUDE 'common_header_tags.html', js_override = '/cobrands/fixmystreet/fixmystreet.js', site_title = 'FixMyZürich' %] + <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/themes/redmond/jquery-ui.css"> + + <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 = 'Züri wie neu' %] [% extra_js %] - - [% IF c.req.uri.host == 'osm.fixmystreet.com' %] - <link rel="canonical" href="http://www.fixmystreet.com[% c.req.uri.path_query %]"> - [% END %] + + <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js" charset="utf-8"></script> [% INCLUDE 'tracking_code.html' %] @@ -36,25 +38,56 @@ <div class="table-cell"> <header id="site-header" role="banner"> <div class="container"> - <a href="/" id="site-logo">FixMyStreet</a> + <a href="/" id="site-logo-text">Züri wie neu</a> + <a href="http://www.stadt-zuerich.ch/" id="site-logo">Stadt Zürich</a> <a href="#main-nav" id="nav-link">Main Navigation</a> </div> </header> - <div id="user-meta"> - [% 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> - [% ELSE %] - <!-- <a href="/auth">[% loc('Sign in') %]</a> --> - [% END %] - </div> + <div class="container"> - [% pre_container_extra %] +[% IF admin %] + <div class="admin-nav-wrapper"> + <div class="admin-nav"> + <ul> + [% pagename = c.req.uri.path %] + [% pagename = pagename.replace('/admin/?(\w*).*', '$1') %] + + <li [% IF pagename == 'summary' OR pagename == '' %]class="current"[% END %]> + <a href="/admin/summary">[% loc('Summary') %]</a> + </li> + <li [% IF pagename == 'reports' OR pagename == 'report_edit' %]class="current"[% END %]> + <a href="/admin/reports">[% loc('Reports') %]</a> + </li> + [% IF admin_type == 'dm' OR admin_type == 'super' %] + <li [% IF pagename == 'bodies' OR pagename == 'body' %]class="current"[% END %]> + <a href="/admin/bodies">[% loc('Bodies') %]</a> + </li> + [% END %] + [% IF admin_type == 'super' %] + <li [% IF pagename == 'users' OR pagename == 'user_edit' %]class="current"[% END %]> + <a href="/admin/users">[% loc('Users') %]</a> + </li> + <li [% IF pagename == 'stats' %]class="current"[% END %]> + <a href="/admin/stats">[% loc('Stats') %]</a> + </li> + [% END %] + <li class="search-box"> + <form method="get" action="[% c.uri_for('reports') %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8"> + <input type="text" name="search" size="20" id="search" placeholder="[% loc('Search reports') %]"> + </form> + + </li> + </ul> + </div> + </div> +[% END %] - <div class="container"> <div class="content[% " $mainclass" | html IF mainclass %]" role="main"> + [% IF NOT admin %] + [% INCLUDE 'nav_over_content.html' %] + [% END %] + + [% pre_container_extra %] <!-- [% INCLUDE 'debug_header.html' %] --> 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/maps/zurich.html b/templates/web/zurich/maps/zurich.html new file mode 100644 index 000000000..492ccc556 --- /dev/null +++ b/templates/web/zurich/maps/zurich.html @@ -0,0 +1,14 @@ +[% map_js = BLOCK %] +<script type="text/javascript" src="[% version('/js/OpenLayers.2.11.zurich.js') %]"></script> +<script type="text/javascript" src="[% version('/js/OpenLayers.Projection.CH1903.js') %]"></script> +<script type="text/javascript" src="[% version('/js/map-OpenLayers.js') %]"></script> +<script type="text/javascript" src="[% version('/js/map-wmts-zurich.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/zurich/nav_over_content.html b/templates/web/zurich/nav_over_content.html new file mode 100644 index 000000000..4dbe87652 --- /dev/null +++ b/templates/web/zurich/nav_over_content.html @@ -0,0 +1,10 @@ + <div id="zurich-main-nav" class="desk-only"> + <ul> + <li><[% IF c.req.uri.path == '/around' || c.req.uri.path == '/' %]span[% ELSE %]a href="/"[% END %] + >[% loc("Report a problem") %]</[% c.req.uri.path == '/around' ? '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 == '/faq' %]span[% ELSE %]a href="/faq"[% END + %]>[% loc("Help") %]</[% c.req.uri.path == '/faq' ? 'span' : 'a' %]></li> + </ul> + </div> diff --git a/templates/web/zurich/report/_item.html b/templates/web/zurich/report/_item.html new file mode 100644 index 000000000..22b39a2c8 --- /dev/null +++ b/templates/web/zurich/report/_item.html @@ -0,0 +1,24 @@ +<li> +<a class="text" href="[% c.uri_for('/report', problem.id ) %]"> + [% IF problem.state != 'unconfirmed' AND problem.photo AND c.cobrand.allow_photo_display(problem); + photo = problem.get_photo_params + %] + <img class="img" height="60" width="90" src="[% photo.url_fp %]" alt=""> + [% END %] + [% IF problem.state != 'unconfirmed' %] + <h4>[% problem.title | html %]</h4> + [% ELSE %] + <h4><em>[% loc('Awaiting moderation') %]</em></h4> + [% END %] + <small>[% prettify_dt( problem.created, 'zurich' ) %] + [%- IF dist %], [% dist %]km[% END %] + [%- IF include_lastupdate AND problem.created != problem.lastupdate AND problem.whensent != problem.lastupdate %], + [% tprintf(loc('last updated %s'), prettify_dt( problem.lastupdate, 'zurich' ) ) %] + [%- 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/zurich/report/_main.html b/templates/web/zurich/report/_main.html new file mode 100644 index 000000000..d80eeb9a4 --- /dev/null +++ b/templates/web/zurich/report/_main.html @@ -0,0 +1,17 @@ +<div class="problem-header cf"> + <h1>[% tprintf( loc('Reported in the %s category'), problem.category ) %]</h1> + <p class="sub"> + [% prettify_dt( problem.created, 'zurich' ) %] + [%- IF !problem.used_map %]<br>[% loc('there is no pin shown as the user did not use the map') %][% END %] + </p> + + [% IF problem.state != 'unconfirmed' %] + [% IF c.cobrand.allow_photo_display(problem) %] + [% INCLUDE 'report/photo.html' object=problem %] + [% END %] + [% add_links( problem.detail ) | html_para %] + [% ELSE %] + [% loc('This report is awaiting moderation.') %] + [% END %] + +</div> diff --git a/templates/web/zurich/report/banner.html b/templates/web/zurich/report/banner.html new file mode 100644 index 000000000..eda70a0de --- /dev/null +++ b/templates/web/zurich/report/banner.html @@ -0,0 +1,17 @@ +[% USE date %] +[% BLOCK banner %] + <div class="banner"> + <p id="[% id %]">[% text %]</p> + </div> +[% END %] + +[% IF problem.state == 'unconfirmed' %] + [% INCLUDE banner, id = 'closed', text = loc('Submitted') %] +[% ELSIF problem.state == 'confirmed' %] + [% INCLUDE banner, id = 'closed', text = loc('Open') %] +[% ELSIF problem.is_fixed OR problem.is_closed %] + [% INCLUDE banner, id = 'fixed', text = loc('Closed') %] +[% ELSIF problem.state == 'in progress' OR problem.state == 'planned' %] + [% INCLUDE banner, id = 'progress', text = loc('In progress') %] +[% END %] + diff --git a/templates/web/zurich/report/new/councils_text_all.html b/templates/web/zurich/report/new/councils_text_all.html new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/templates/web/zurich/report/new/councils_text_all.html diff --git a/templates/web/zurich/report/new/fill_in_details_form.html b/templates/web/zurich/report/new/fill_in_details_form.html new file mode 100644 index 000000000..076536601 --- /dev/null +++ b/templates/web/zurich/report/new/fill_in_details_form.html @@ -0,0 +1,125 @@ +<div id="report-a-problem-main"> + <h1>[% loc('Reporting a problem') %]</h1> + + <div id="report-a-problem-sidebar"> + <!-- + The text for this section needs checking, but I can't work out which bit comes from where + --> + <div class="sidebar-tips"> + [% IF report.used_map %] + [% IF partial_token %] + <p id="unknown">[% loc('Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit.') %]</p> + [% END %] + <p>[% loc('You have located the problem at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. ') %]</p> + [% END %] + + <p> + [% IF report.used_map %] + [% INCLUDE 'report/new/fill_in_details_text.html' %] + [% ELSE %] + [% loc('Please fill in the form below with details of the problem, and describe the location as precisely as possible in the details box.') %] + [% END %] + </p> + </div> + + <div class="sidebar-notes"> + [% INCLUDE 'report/new/notes.html' %] + </div> + + </div> + + [% INCLUDE 'errors.html' %] + <fieldset> + <div id="problem_form"> + + [% INCLUDE 'report/new/form_heading.html' %] + + + [% IF field_errors.bodies %] + <p class='form-error'>[% field_errors.bodies %]</p> + [% END %] + + <label for="form_detail">[% loc('Details') %]</label> + [% IF field_errors.detail %] + <p class='form-error'>[% field_errors.detail %]</p> + [% END %] + <textarea rows="7" cols="26" name="detail" id="form_detail" placeholder="[% loc('Please fill in details of the problem.') %]" required>[% report.detail | html %]</textarea> + + [% IF js %] + <div id="form_category_row"> + <label for="form_category">[% loc('Category') %]</label> + <select name="category" id="form_category" required><option>[% loc('Loading...') %]</option></select> + </div> + [% ELSE %] + [% IF category_options.size %] + [% IF field_errors.category %] + <p class='form-error'>[% field_errors.category %]</p> + [% END %] + + [% PROCESS "report/new/category.html" %] + [% END %] + [% END %] + + [%- IF category_extras %] + [% PROCESS "report/new/category_extras.html" %] + [%- END %] + + [% IF c.cobrand.allow_photo_upload %] + <label for="form_photo">[% loc('Photo') %]</label> + [% IF upload_fileid || report.photo %] + [% IF upload_fileid %] + <img align="right" src="/photo/[% upload_fileid %].temp.jpeg" alt=""> + <input type="hidden" name="upload_fileid" value="[% upload_fileid %]"> + [% END %] + + <p>[% loc('You have already attached a photo to this report, attaching another one will replace it.') %]</p> + + [% IF report.photo %] + <img align="right" src="/photo/[% report.id %].jpeg"> + [% END %] + [% END %] + + [% IF field_errors.photo %] + <p class='form-error'>[% field_errors.photo %]</p> + [% END %] + <input type="file" name="photo" id="form_photo"> + [% END %] + + <label for="form_email">[% loc('Your email') %]</label> + [% IF field_errors.email %] + <p class='form-error'>[% field_errors.email %]</p> + [% END %] + <input type="email" value="[% report.user.email | html %]" name="email" id="form_email" placeholder="[% loc('Please enter your email address') %]" required> + + <!-- + <div class="general-sidebar-notes"> + <p class="dark">[% loc('We never show your email address or phone number.') %]</p> + </div> + --> + + <label for="form_name">[% loc('Name') %] [% loc('(optional)') %]</label> + [% IF field_errors.name %] + <p class='form-error'>[% field_errors.name %]</p> + [% END %] + <input type="text" value="[% report.name | html %]" name="name" id="form_name" placeholder="[% loc('Your name') %]"> + + <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"> + [%# ID of submit_sign_in so name can be option, name of submit_register so it doesn't try and sign us in %] + <p><input class="green-btn" type="submit" id="submit_sign_in" name="submit_register" value="[% loc('Submit') %]"> + </div> + + </div> + </fieldset> + + [% IF partial_token %] + <input type="hidden" name="partial" value="[% partial_token.token %]"> + [% END %] + + <input type="hidden" name="submit_problem" value="1"> +</div> 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/templates/web/zurich/report/update-form.html b/templates/web/zurich/report/update-form.html new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/templates/web/zurich/report/update-form.html diff --git a/templates/web/zurich/report/updates.html b/templates/web/zurich/report/updates.html new file mode 100644 index 000000000..786ecd582 --- /dev/null +++ b/templates/web/zurich/report/updates.html @@ -0,0 +1,17 @@ +[% IF problem.state == 'fixed - council' OR problem.state == 'closed' %] + <h4 class="static-with-rule">[% loc('Updates') %]</h4> + <ul class="issue-list"> + <li> + <div class="update-wrap"> + <div class="update-text"> + <p class="meta-2">[% prettify_dt( problem.lastupdate, 'zurich' ) %]</p> + [% IF problem.state == 'fixed - council' %] + [% add_links( problem.extra.public_response ) | html_para %] + [% ELSIF problem.state == 'closed' AND problem.external_body %] + <p>[% tprintf( loc('Assigned to %s'), problem.body(c).name ) %]</p> + [% END %] + </div> + </div> + </li> + </ul> +[% END %] diff --git a/templates/web/zurich/reports/index.html b/templates/web/zurich/reports/index.html new file mode 100755 index 000000000..670746753 --- /dev/null +++ b/templates/web/zurich/reports/index.html @@ -0,0 +1,33 @@ +[% + PROCESS "maps/${map.type}.html"; + INCLUDE 'header.html', + title = loc('Summary reports'), + bodyclass = 'mappage'; +%] +[% map_html %] + <p id='sub_map_links'> + <a class="hidden-nojs" id="map_layer_toggle" href="">Stadtplan</a> + </p> +</div> + +<div id="side"> + +<h1>[% loc('All Reports') %]</h1> + +[% INCLUDE 'pagination.html', param = 'p' %] + +<section class="full-width"> + [% IF problems.0 %] + <ul class="issue-list-a"> + [% FOREACH problem IN problems.0 %] + [% INCLUDE 'reports/_list-entry.html' %] + [% END %] + </ul> + [% END %] +</section> + +[% INCLUDE 'pagination.html', param = 'p' %] + +</div> +[% INCLUDE 'footer.html' %] + diff --git a/templates/web/zurich/tokens/confirm_problem.html b/templates/web/zurich/tokens/confirm_problem.html new file mode 100644 index 000000000..d61cf3ffa --- /dev/null +++ b/templates/web/zurich/tokens/confirm_problem.html @@ -0,0 +1,15 @@ +[% INCLUDE 'header.html', title = loc('Confirmation') %] + +<h1>[% loc('Confirmation') %]</h1> + +[% + loc('You have successfully confirmed your email address.'); + tprintf( + loc( 'You can <a href="%s%s">view the problem on this site</a>.' ), + c.cobrand.base_url_for_report( problem ), + problem.url + ); +%] +</p> + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/zurich/tracking_code.html b/templates/web/zurich/tracking_code.html new file mode 100644 index 000000000..bffd0fd6f --- /dev/null +++ b/templates/web/zurich/tracking_code.html @@ -0,0 +1,18 @@ +[% + SET ga_code = 'UA-38427437-1'; + SET ga_code = 'UA-39223200-1' IF c.config.BASE_URL == "https://www.zueriwieneu.ch"; +%] +<script type="text/javascript"> + + var _gaq = _gaq || []; + _gaq.push(['_setAccount', '[% ga_code %]']); + _gaq.push (['_gat._anonymizeIp']); + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + +</script> diff --git a/web/cobrands/barnet/_colours.scss b/web/cobrands/barnet/_colours.scss index 2f5ccc42b..2a00dab90 100644 --- a/web/cobrands/barnet/_colours.scss +++ b/web/cobrands/barnet/_colours.scss @@ -4,6 +4,15 @@ $primary: #E9E9EA; $primary_b: #000000; $primary_text: #3E3D44; -$contrast1: #E1E3E4; -$contrast1_dark: darken(#E1E3E4, 10%); -$contrast2: #AA8D11; +/* 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%); + +$col_fixed_label: #00BD08; +$col_fixed_label_dark: #4B8304; diff --git a/web/cobrands/barnet/base.scss b/web/cobrands/barnet/base.scss index 0447c6779..bc1642e22 100644 --- a/web/cobrands/barnet/base.scss +++ b/web/cobrands/barnet/base.scss @@ -1,9 +1,9 @@ -@import "../fixmystreet/_h5bp"; +@import "../sass/h5bp"; @import "./_colours"; -@import "../fixmystreet/_mixins"; +@import "../sass/mixins"; @import "compass"; -@import "../fixmystreet/_base"; +@import "../sass/base"; #mast, #breadcrumb, @@ -26,7 +26,7 @@ background: url('/cobrands/barnet/img/barnet-skipnav.png') no-repeat; } -#front-main #postcodeForm div input#submit, +#front-main #postcodeForm div input#sub, .green-btn, button.green-btn, input.green-btn, diff --git a/web/cobrands/barnet/layout.scss b/web/cobrands/barnet/layout.scss index 483f1f20f..4c035386c 100644 --- a/web/cobrands/barnet/layout.scss +++ b/web/cobrands/barnet/layout.scss @@ -1,5 +1,5 @@ @import "_colours"; -@import "../fixmystreet/_layout"; +@import "../sass/layout"; #mast, #breadcrumb, @@ -21,15 +21,11 @@ } #front-main { - background: $primary; @include border-radius(1em 1em 0 0); margin-bottom: 1em; padding-top: 0; width: 678px; // layout sets this because base has it slightly lighter - h2 { - color: $primary_text; - } #front-main-container { padding: 1em; } @@ -250,7 +246,6 @@ ol.big-numbers > li::before { } p#fixed { padding-top: 4em; - background: #00BD08; } } 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 e178c9db2..5627929a0 100644 --- a/web/cobrands/bromley/_colours.scss +++ b/web/cobrands/bromley/_colours.scss @@ -1,9 +1,20 @@ /* COLOURS */ -$primary: rgb(91,120,147); +$bromley_blue: rgb(91,120,147); + +$primary: $bromley_blue; $primary_b: #000000; $primary_text: #ffffff; -$contrast1: rgb(91,120,147); -$contrast1_dark: darken(rgb(91,120,147), 10%); -$contrast2: #AA8D11; +$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; +$col_fixed_label_dark: darken($bromley_blue, 10%); diff --git a/web/cobrands/bromley/base.scss b/web/cobrands/bromley/base.scss index 9c5ff2b0f..7975197ff 100644 --- a/web/cobrands/bromley/base.scss +++ b/web/cobrands/bromley/base.scss @@ -1,9 +1,9 @@ -@import "../fixmystreet/_h5bp"; +@import "../sass/h5bp"; @import "./_colours"; -@import "../fixmystreet/_mixins"; +@import "../sass/mixins"; @import "compass"; -@import "../fixmystreet/_base"; +@import "../sass/base"; a, a:visited { color: #369; 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 eef0ee679..f5e6e9801 100644 --- a/web/cobrands/bromley/layout.scss +++ b/web/cobrands/bromley/layout.scss @@ -1,7 +1,6 @@ @import "_colours"; -@import "../fixmystreet/_layout"; +@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; } @@ -44,17 +43,9 @@ body.twothirdswidthpage .content { } #front-main { - background: $primary; @include border-radius(1em 1em 0 0); margin: 2em 1em 0; padding-top: 0; - // layout sets this because base has it slightly lighter - h2 { - color: $primary_text; - } - a#geolocate_link { - color: $primary_text; - } } // Don't want gap that normal site has @@ -121,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 2c044a6e7..e8c12f98e 100644 --- a/web/cobrands/default/_colours.scss +++ b/web/cobrands/default/_colours.scss @@ -1,9 +1,21 @@ /* COLOURS */ -$primary: #ff9900; +$orange: #ff9900; +$bluey: #6688ff; + +$primary: $orange; $primary_b: #000000; $primary_text: #222222; -$contrast1: #6688ff; -$contrast1_dark: darken(#6688ff, 10%); -$contrast2: #AA8D11; +$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/default/base.scss b/web/cobrands/default/base.scss index 4594f832f..9fccf92db 100644 --- a/web/cobrands/default/base.scss +++ b/web/cobrands/default/base.scss @@ -1,7 +1,7 @@ -@import "../fixmystreet/_h5bp"; +@import "../sass/h5bp"; @import "./_colours"; -@import "../fixmystreet/_mixins"; +@import "../sass/mixins"; @import "compass"; -@import "../fixmystreet/_base"; +@import "../sass/base"; diff --git a/web/cobrands/default/layout.scss b/web/cobrands/default/layout.scss index 93a3f7120..69e455aa5 100644 --- a/web/cobrands/default/layout.scss +++ b/web/cobrands/default/layout.scss @@ -1,60 +1,2 @@ @import "_colours"; -@import "../fixmystreet/_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: #6688ff; -} - -#front-main { - color: $primary_text; - background: $primary; - // layout sets this because base has it slightly lighter - h2 { - color: $primary_text; - } - a#geolocate_link { - color: $primary_text; - } -} - -.nav-wrapper { - .nav-wrapper-2 { - border-top: 4px solid $primary; - @include border-image(none); - } -} -body.mappage { - .nav-wrapper { - .nav-wrapper-2 { - background: $contrast1; - } - } -} - -#main-nav { - ul { - li { - a, span { - color: #000; - } - } - &#main-menu { - li { - a:hover { - background: $primary; - } - } - } - &#mysoc-menu { - background: $primary; - } - } -} - +@import "../sass/layout"; diff --git a/web/i/SEHPlogo-bwS.png b/web/cobrands/emptyhomes/SEHPlogo-bwS.png Binary files differindex 496d43115..496d43115 100644 --- a/web/i/SEHPlogo-bwS.png +++ b/web/cobrands/emptyhomes/SEHPlogo-bwS.png diff --git a/web/i/Sheltercymru47.gif b/web/cobrands/emptyhomes/Sheltercymru47.gif Binary files differindex b7eb2c4ff..b7eb2c4ff 100644 --- a/web/i/Sheltercymru47.gif +++ b/web/cobrands/emptyhomes/Sheltercymru47.gif diff --git a/web/i/Sheltercymru47s.png b/web/cobrands/emptyhomes/Sheltercymru47s.png Binary files differindex 5547be1e0..5547be1e0 100644 --- a/web/i/Sheltercymru47s.png +++ b/web/cobrands/emptyhomes/Sheltercymru47s.png diff --git a/web/cobrands/emptyhomes/app.png b/web/cobrands/emptyhomes/app.png Binary files differnew file mode 100644 index 000000000..8f422b08d --- /dev/null +++ b/web/cobrands/emptyhomes/app.png diff --git a/web/cobrands/emptyhomes/c4logo.png b/web/cobrands/emptyhomes/c4logo.png Binary files differnew file mode 100644 index 000000000..783385e30 --- /dev/null +++ b/web/cobrands/emptyhomes/c4logo.png diff --git a/web/cobrands/emptyhomes/css.css b/web/cobrands/emptyhomes/css.css deleted file mode 100644 index ba761814a..000000000 --- a/web/cobrands/emptyhomes/css.css +++ /dev/null @@ -1,236 +0,0 @@ -/* Smaller map */ -/* -#map_box { - width: 380px; -} -#map, #drag { - width: 378px; - height: 378px; -} - -p#fixed, p#unknown { - margin-right: 400px; - width: auto; -} -*/ - -/* Generics */ - -body { - font-family: Geneva, Helvetica, Arial, sans-serif; - margin: 0; - padding: 0; - /* color: #a9aeb0; */ -} - -h1 { - margin: 0; - font-size: 165%; - padding: 3px; - color: #FFFFFF; - background-color: #9999CC; - background-color: #30517A; - -} -h2 { - font-size: 140%; - background-color: #B1BECF; - color: #30517A; - padding: 3px; -} - -h3 { - color: #30517A; -} - -a:link { - color: #30517A; -} -a:visited { - color: #354664; -} -a:hover, a:active { - background-color: #B1BECF; -} - -#mysociety blockquote { - border-left: solid 4px #013B63; -} - -#mysociety .a { - color: #000000; - background-color: #DCDCED; /* #427499; */ - background-color: #B1BECF; -} - -/* Site layout */ - -#header { - margin: 0; - padding: 5px 0; - float: left; -} - -#header img { - margin-left: 0.5em; -} - -#header #eha-logo { - float: left; - margin-right: 1em; -} - -#header div { - float: left; - margin-top: 0.5em; -} - -#mysociety { - width: 100%; /* Must specify a width or IE goes crazy wrong! */ - position: relative; - margin: 0 auto; - max-width: 60em; -} - -/* Can't put the margin in #mysociety because of above IE craziness */ -#wrapper { - clear: both; - margin: 0 2em 2em; - padding-top: 0.5em; -} - -#navigation { - float: right; - padding: 0; - margin: 0; - list-style-type: none; - font-size: 83%; -} -#navigation ul { - padding: 0; - margin: 0; -} -#navigation li { - display: inline; - padding: 0; - margin: 0; -} - -#navigation a { - display: -moz-inline-box; - display: inline-block; - padding: 0.5em 0.5em; -} -#navigation a:link, #navigation a:visited { - color: #30517A; -} -#navigation a:hover, #navigation a:active { - background-color: #DCDCED; - background-color: #9999CC; - background-color: #B1BECF; - - color: #ffffff; - color: #30517A; -} - -#nav_new a { - background-image: url("/i/new.png"); - background-repeat: no-repeat; - background-position: 100% 0; -} - -#meta { - clear: right; - float: right; - list-style-type: none; - margin: 0.25em 0.5em 0 1em; - padding: 0; - font-size: 83%; -} -#meta li { - display: inline; - margin: 0; - padding: 0 0 0 0.25em; - border-left: solid 1px #B1BECF; -} -#meta li:first-child { - border-left: none; -} - -#logo { - border: none; - position: absolute; - top: 4em; - right: 10px; -} - -#emptyhomes-footer { - clear: both; - font-size: 83%; - border-top: solid 2em #ffffff; - background-color: #80AE7D; - color: #FFFFFF; - margin: 2em 0 1em 0; - padding: 20px; - overflow: auto; -} - -.ie6 #emptyhomes-footer { - zoom: 1; -} - -#emptyhomes-footer div { - float: left; - margin-right: 2em; -} - -#emptyhomes-footer a { - color: #FFFFFF; -} - -#mysociety #postcodeForm { - background-color: #80AE7D; - color: #000000; - font-size: 130%; -} - -#mysociety #front_stats div { - background-color: #80AE7D; - color: #000000; - /*padding: 0.5em 0; */ - width: 9em; -} - -#mysociety #problem_form { - clear: both; -} - -#mysociety #alert_links_area { - margin-top: 1px; -} - -#mysociety #eha_advert { - clear: both; - width: 55%; - margin: 0 auto; - padding: 0.5em; - text-align: center; - background-color: #ffeecc; - border: solid 1px #ff9900; -} - -#mysociety #front_intro { - margin-bottom: 1em; -} - -.video { - float: right; - margin-left: 35px; -} - -.channel4 { - font-size: 125%; -} -.channel4 > li:first-child + li { - margin-bottom: 1em; -} diff --git a/web/cobrands/emptyhomes/css/css.css b/web/cobrands/emptyhomes/css/css.css new file mode 100644 index 000000000..829986f59 --- /dev/null +++ b/web/cobrands/emptyhomes/css/css.css @@ -0,0 +1,318 @@ +/* Smaller map */ +/* +#map_box { + width: 380px; +} +#map, #drag { + width: 378px; + height: 378px; +} + +p#fixed, p#unknown { + margin-right: 400px; + width: auto; +} +*/ + +/* Generics */ + +body { + font-family: Geneva, Helvetica, Arial, sans-serif; + margin: 0; + padding: 0; + /* color: #a9aeb0; */ +} + +h1 { + margin: 0; + font-size: 165%; + padding: 3px; + color: #FFFFFF; + background-color: #9999CC; + background-color: #30517A; + +} +h2 { + font-size: 140%; + background-color: #B1BECF; + color: #30517A; + padding: 3px; +} + +h3 { + color: #30517A; +} + +a:link { + color: #30517A; +} +a:visited { + color: #354664; +} +a:hover, a:active { + background-color: #B1BECF; +} + +#mysociety blockquote { + border-left: solid 4px #013B63; +} + +#mysociety .a { + color: #000000; + background-color: #DCDCED; /* #427499; */ + background-color: #B1BECF; +} + +/* Site layout */ + +#header { + margin: 0; + padding: 5px 0; + float: left; +} + +#header img { + margin-left: 0.5em; +} + +#header #eha-logo { + float: left; + margin-right: 1em; +} + +#header div { + float: left; + margin-top: 0.5em; +} + +#mysociety { + width: 100%; /* Must specify a width or IE goes crazy wrong! */ + position: relative; + margin: 0 auto; + max-width: 60em; +} + +/* Can't put the margin in #mysociety because of above IE craziness */ +#wrapper { + clear: both; + margin: 0 2em 2em; + padding-top: 2em; +} + +#navigation { + float: right; + padding: 0; + margin: 0; + list-style-type: none; + font-size: 83%; +} +#navigation ul { + padding: 0; + margin: 0; +} +#navigation li { + display: inline; + padding: 0; + margin: 0; +} + +#navigation a { + display: -moz-inline-box; + display: inline-block; + padding: 0.5em 0.5em; +} +#navigation a:link, #navigation a:visited { + color: #30517A; +} +#navigation a:hover, #navigation a:active { + background-color: #DCDCED; + background-color: #9999CC; + background-color: #B1BECF; + + color: #ffffff; + color: #30517A; +} + +#nav_new a { + background-image: url("/i/new.png"); + background-repeat: no-repeat; + background-position: 100% 0; +} + +#meta { + clear: right; + float: right; + list-style-type: none; + margin: 0.25em 0.5em 0 1em; + padding: 0; + font-size: 83%; +} +#meta li { + display: inline; + margin: 0; + padding: 0 0 0 0.25em; + border-left: solid 1px #B1BECF; +} +#meta li:first-child { + border-left: none; +} + +#logo { + border: none; + position: absolute; + top: 4em; + right: 10px; +} + +#emptyhomes-footer { + clear: both; + font-size: 83%; + border-top: solid 2em #ffffff; + background-color: #B1BECF; + color: #000; + margin: 2em 0 1em 0; + padding: 20px; + overflow: auto; +} + +.ie6 #emptyhomes-footer { + zoom: 1; +} + +#emptyhomes-footer div { + float: left; + margin-right: 2em; +} + +#emptyhomes-footer a { + color: #000; +} + +#mysociety #postcodeForm { + background-color: #fe6500; + color: #000000; + font-size: 130%; +} + +#mysociety #postcodeForm a, #mysociety #postcodeForm a:hover { + color: #000000; + background-color: inherit; +} + +#mysociety #front_stats { + display: block; +} +#mysociety #front_stats div { + vertical-align: middle; + background-color: #fe6500; + color: #000000; + padding: 0.5em; + width: auto; + display: block; + margin-bottom: 0.5em; +} +#mysociety #front_stats div a { + color: #000000; + background-color: inherit; +} +#mysociety #front_stats div big { + display: inline; +} + +#mysociety #front_stats div#eha-app-link { + padding-top: 16px; + padding-left: 120px; + color: #fe6500; + background-color: #fff; + background-image: url("/cobrands/emptyhomes/app.png"); + background-repeat: no-repeat; +} +#mysociety #front_stats div#eha-app-link a { + color: #fe6500; + background-color: #000; +} + +#mysociety #problem_form { + clear: both; +} + +#mysociety #alert_links_area { + margin-top: 1px; +} + +#mysociety #eha_advert { + clear: both; + width: 55%; + margin: 0 auto; + padding: 0.5em; + text-align: center; + background-color: #ffeecc; + border: solid 1px #ff9900; +} + +#mysociety #front_intro { + margin-bottom: 1em; +} + +.video { + float: right; + margin-left: 35px; +} + +.channel4 { + font-size: 125%; +} +.channel4 > li:first-child + li { + margin-bottom: 1em; +} + +/* Front page how to report big */ + +#eha_steps { + background-image: url("/cobrands/emptyhomes/street-r.jpeg"); + background-repeat: no-repeat; + padding: 0.5em 2% 0.5em 8%; +} +#eha_steps h2 { + color: #000; + background-color: #fe6500; + margin-top: 0; + margin-bottom: 0.4em; +} +#eha_steps ol { + list-style-position: inside; + padding: 0 0 0 40%; + margin: 0; +} +#eha_steps li { + color: #fff; + background-color: #000; + padding: 0.25em; + margin-bottom: 0.5em; +} + +.bl { + color: #fff; + background-color: #000; +} + +/* Noddy half grid */ + +.grid-50 { + float: right; + width: 48%; + margin-right: 2%; +} +.grid-50:first-child { + margin-right: 0; +} +.grid-50 > h2:first-child { + margin-top: 0; +} +@media all and (max-width: 50em) { + #mysociety .grid-50 { + float: none; + width: auto; + } +} + diff --git a/web/i/eha-logo.jpeg b/web/cobrands/emptyhomes/eha-logo.jpeg Binary files differindex 250be8502..250be8502 100644 --- a/web/i/eha-logo.jpeg +++ b/web/cobrands/emptyhomes/eha-logo.jpeg diff --git a/web/i/eha-logo.png b/web/cobrands/emptyhomes/eha-logo.png Binary files differindex 5cc912521..5cc912521 100644 --- a/web/i/eha-logo.png +++ b/web/cobrands/emptyhomes/eha-logo.png diff --git a/web/i/eha.jpg b/web/cobrands/emptyhomes/eha.jpg Binary files differindex 56e767b86..56e767b86 100644 --- a/web/i/eha.jpg +++ b/web/cobrands/emptyhomes/eha.jpg diff --git a/web/i/eha.png b/web/cobrands/emptyhomes/eha.png Binary files differindex 8c17db486..8c17db486 100644 --- a/web/i/eha.png +++ b/web/cobrands/emptyhomes/eha.png diff --git a/web/cobrands/emptyhomes/street-r.jpeg b/web/cobrands/emptyhomes/street-r.jpeg Binary files differnew file mode 100644 index 000000000..722738de8 --- /dev/null +++ b/web/cobrands/emptyhomes/street-r.jpeg diff --git a/web/cobrands/emptyhomes/tiger-aspect.png b/web/cobrands/emptyhomes/tiger-aspect.png Binary files differnew file mode 100644 index 000000000..53e8d5311 --- /dev/null +++ b/web/cobrands/emptyhomes/tiger-aspect.png diff --git a/web/cobrands/fiksgatami/css.scss b/web/cobrands/fiksgatami/css.scss index f0a9bc91c..2c1144858 100644 --- a/web/cobrands/fiksgatami/css.scss +++ b/web/cobrands/fiksgatami/css.scss @@ -21,7 +21,7 @@ $header_darker: #0a3f6f; } -@import "../../css/_main"; +@import "../../css/main-import"; // Overrides of main.css diff --git a/web/cobrands/fixamingata/_colours.scss b/web/cobrands/fixamingata/_colours.scss new file mode 100644 index 000000000..45138e5a1 --- /dev/null +++ b/web/cobrands/fixamingata/_colours.scss @@ -0,0 +1,17 @@ +/* COLOURS */ + +$primary: #00b1da; +$primary_b: #0087a6; +$primary_text: #222; + +$base_bg: #eee url(/cobrands/fixamingata/images/tile.jpg) 0 0 repeat; +$base_fg: $primary_text; + +$map_nav_bg: #eee; +$nav_fg: $primary_text; +$nav_fg_hover: #444; + +$col_click_map: #00BD08; +$col_click_map_dark: #4B8304; +$col_fixed_label: #00BD08; +$col_fixed_label_dark: #4B8304; diff --git a/web/cobrands/fixamingata/base.scss b/web/cobrands/fixamingata/base.scss new file mode 100644 index 000000000..73ef7ea13 --- /dev/null +++ b/web/cobrands/fixamingata/base.scss @@ -0,0 +1,31 @@ +/* Base stylesheet for FixMyStreet look + * + * In a mobile first way, this contains the look of the site, and a basic + * layout for browsers that can't handle media queries. Baseline grid of 1.5em. + */ + +$image-sprite: '/cobrands/fixamingata/images/sprite.png'; + +@import "../sass/h5bp"; +@import "./_colours"; +@import "../sass/mixins"; +@import "compass"; + +@import "../sass/base"; + +#site-header { + @include background(linear-gradient(#000, #ccc 10%, #ccc 90%, #000)); +} + +#site-logo { + width: 185px; + margin-top: 8px; + margin-left: 10px; + background: url('/cobrands/fixamingata/images/fms-logo.png') no-repeat; +} + +#front-main { + a#geolocate_link { + font-size: 0.9em; + } +} diff --git a/web/cobrands/fixamingata/config.rb b/web/cobrands/fixamingata/config.rb new file mode 100644 index 000000000..471b4b008 --- /dev/null +++ b/web/cobrands/fixamingata/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
\ No newline at end of file diff --git a/web/cobrands/fixamingata/favicon.ico b/web/cobrands/fixamingata/favicon.ico Binary files differnew file mode 100644 index 000000000..f7dfd0697 --- /dev/null +++ b/web/cobrands/fixamingata/favicon.ico diff --git a/web/cobrands/fixamingata/favicon.png b/web/cobrands/fixamingata/favicon.png Binary files differnew file mode 100644 index 000000000..2c9ad9f68 --- /dev/null +++ b/web/cobrands/fixamingata/favicon.png diff --git a/web/cobrands/fixamingata/images/fms-logo.png b/web/cobrands/fixamingata/images/fms-logo.png Binary files differnew file mode 100644 index 000000000..92634c173 --- /dev/null +++ b/web/cobrands/fixamingata/images/fms-logo.png diff --git a/web/cobrands/fixamingata/images/sprite.png b/web/cobrands/fixamingata/images/sprite.png Binary files differnew file mode 100644 index 000000000..ebfd420b5 --- /dev/null +++ b/web/cobrands/fixamingata/images/sprite.png diff --git a/web/cobrands/fixamingata/images/tile-y-border.jpg b/web/cobrands/fixamingata/images/tile-y-border.jpg Binary files differnew file mode 100644 index 000000000..cc679f5e1 --- /dev/null +++ b/web/cobrands/fixamingata/images/tile-y-border.jpg diff --git a/web/cobrands/fixamingata/images/tile-y.jpg b/web/cobrands/fixamingata/images/tile-y.jpg Binary files differnew file mode 100644 index 000000000..1dfb6f017 --- /dev/null +++ b/web/cobrands/fixamingata/images/tile-y.jpg diff --git a/web/cobrands/fixamingata/images/tile.jpg b/web/cobrands/fixamingata/images/tile.jpg Binary files differnew file mode 100644 index 000000000..3e6deaf2f --- /dev/null +++ b/web/cobrands/fixamingata/images/tile.jpg diff --git a/web/cobrands/fixamingata/layout.scss b/web/cobrands/fixamingata/layout.scss new file mode 100644 index 000000000..a50de3694 --- /dev/null +++ b/web/cobrands/fixamingata/layout.scss @@ -0,0 +1,113 @@ +$image-sprite: '/cobrands/fixamingata/images/sprite.png'; + +@font-face { + font-family: 'MuseoSans'; + src: url('../fixmystreet/fonts/MuseoSans_300-webfont.eot'); + src: url('../fixmystreet/fonts/MuseoSans_300-webfont.eot?#iefix') format('embedded-opentype'), + url('../fixmystreet/fonts/MuseoSans_300-webfont.woff') format('woff'), + url('../fixmystreet/fonts/MuseoSans_300-webfont.ttf') format('truetype'), + url('../fixmystreet/fonts/MuseoSans_300-webfont.svg#MuseoSans300') format('svg'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'MuseoSans'; + src: url('../fixmystreet/fonts/MuseoSans_300_Italic-webfont.eot'); + src: url('../fixmystreet/fonts/MuseoSans_300_Italic-webfont.eot?#iefix') format('embedded-opentype'), + url('../fixmystreet/fonts/MuseoSans_300_Italic-webfont.woff') format('woff'), + url('../fixmystreet/fonts/MuseoSans_300_Italic-webfont.ttf') format('truetype'), + url('../fixmystreet/fonts/MuseoSans_300_Italic-webfont.svg#MuseoSans300Italic') format('svg'); + font-weight: normal; + font-style: italic; +} + +@font-face { + font-family: 'MuseoSans'; + src: url('../fixmystreet/fonts/MuseoSans_500-webfont.eot'); + src: url('../fixmystreet/fonts/MuseoSans_500-webfont.eot?#iefix') format('embedded-opentype'), + url('../fixmystreet/fonts/MuseoSans_500-webfont.woff') format('woff'), + url('../fixmystreet/fonts/MuseoSans_500-webfont.ttf') format('truetype'), + url('../fixmystreet/fonts/MuseoSans_500-webfont.svg#MuseoSans500') format('svg'); + font-weight: bold; + font-style: normal; +} + +@font-face { + font-family: 'MuseoSans'; + src: url('../fixmystreet/fonts/MuseoSans_500_Italic-webfont.eot'); + src: url('../fixmystreet/fonts/MuseoSans_500_Italic-webfont.eot?#iefix') format('embedded-opentype'), + url('../fixmystreet/fonts/MuseoSans_500_Italic-webfont.woff') format('woff'), + url('../fixmystreet/fonts/MuseoSans_500_Italic-webfont.ttf') format('truetype'), + url('../fixmystreet/fonts/MuseoSans_500_Italic-webfont.svg#MuseoSans500Italic') format('svg'); + font-weight: bold; + font-style: italic; +} + +@font-face { + font-family: 'Museo300-display'; + src: url('../fixmystreet/fonts/Museo300-Regular-webfont.eot'); + src: url('../fixmystreet/fonts/Museo300-Regular-webfont.eot?#iefix') format('embedded-opentype'), + url('../fixmystreet/fonts/Museo300-Regular-webfont.woff') format('woff'), + url('../fixmystreet/fonts/Museo300-Regular-webfont.ttf') format('truetype'), + url('../fixmystreet/fonts/Museo300-Regular-webfont.svg#Museo300') format('svg'); + font-weight: normal; + font-style: normal; +} + +/* Opera has a bug (from around 10.5 upwards to current 11.6) with showing the + * table caption *at all* if the header is set to a font-face :( */ +noindex:-o-prefocus, #site-header { + font-family: sans-serif; +} + +h3, h4 { + font-weight: bold; +} + +@import "_colours"; +@import "../sass/layout"; + +.nav-wrapper { + .nav-wrapper-2 { + border-top: 0; + } +} + +#front-main { + background: $primary url(/cobrands/fixamingata/images/tile-y.jpg); +} + +.tablewrapper { + >div { + width: auto; + } +} +.ie6, .ie7 { + .tablewrapper { + div { + width: auto; + } + } +} + +#footer-help { + ul { + li { + width: 30%; + border-right: 1.25em solid transparent; + &:last-child { + border-left: none; + } + } + } +} +.ie6, .ie7 { + #footer-help { + ul { + li { + width: 33%; + } + } + } +} diff --git a/web/cobrands/fixmindelo/_colours.scss b/web/cobrands/fixmindelo/_colours.scss new file mode 100644 index 000000000..ac39f72e3 --- /dev/null +++ b/web/cobrands/fixmindelo/_colours.scss @@ -0,0 +1,24 @@ +/* COLOURS */ + +$orange: #ff9900; +$bluey: #6688ff; + +$mindelo_blue: #0855a3; +$mindelo_green: #76c044; + +$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%); + +$col_fixed_label: #00BD08; +$col_fixed_label_dark: #4B8304; diff --git a/web/cobrands/fixmindelo/base.scss b/web/cobrands/fixmindelo/base.scss new file mode 100644 index 000000000..4d3a53f0a --- /dev/null +++ b/web/cobrands/fixmindelo/base.scss @@ -0,0 +1,59 @@ +@import "../sass/h5bp"; +@import "./_colours"; +@import "../sass/mixins"; +@import "compass"; + +$image-sprite: 'images/sprite.png'; + +@import "../sass/base"; + + +#site-logo{ + width: 225px !important; + background: url($image-sprite) -3px -3px no-repeat; +} + +#site-header { + background: url('images/fixmindelo-header.png') 30% 0% repeat-x; +} + +#front-main-container #postcodeForm, #front-howto #front_stats { + color: #fff; + border-top: 3px solid $mindelo_green; + border-bottom: 3px solid $mindelo_green; +} + +#nav-link { + top: -6x; + background: url('images/sprite.png') -8px -915px no-repeat; +} + +#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/config.rb b/web/cobrands/fixmindelo/config.rb new file mode 100644 index 000000000..471b4b008 --- /dev/null +++ b/web/cobrands/fixmindelo/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
\ No newline at end of file diff --git a/web/cobrands/fixmindelo/images/fixmindelo-header.png b/web/cobrands/fixmindelo/images/fixmindelo-header.png Binary files differnew file mode 100644 index 000000000..5fc855154 --- /dev/null +++ b/web/cobrands/fixmindelo/images/fixmindelo-header.png diff --git a/web/cobrands/fixmindelo/images/link_sprites.png b/web/cobrands/fixmindelo/images/link_sprites.png Binary files differnew file mode 100644 index 000000000..bf4d982fe --- /dev/null +++ b/web/cobrands/fixmindelo/images/link_sprites.png diff --git a/web/cobrands/fixmindelo/images/sprite.png b/web/cobrands/fixmindelo/images/sprite.png Binary files differnew file mode 100644 index 000000000..0c6268f63 --- /dev/null +++ b/web/cobrands/fixmindelo/images/sprite.png diff --git a/web/cobrands/fixmindelo/images/tropical-sea-pattern.jpg b/web/cobrands/fixmindelo/images/tropical-sea-pattern.jpg Binary files differnew file mode 100644 index 000000000..56c869c99 --- /dev/null +++ b/web/cobrands/fixmindelo/images/tropical-sea-pattern.jpg diff --git a/web/cobrands/fixmindelo/layout.scss b/web/cobrands/fixmindelo/layout.scss new file mode 100644 index 000000000..8dfea7acd --- /dev/null +++ b/web/cobrands/fixmindelo/layout.scss @@ -0,0 +1,71 @@ +@import "_colours"; + +$image-sprite: 'images/sprite.png'; + +@import "../sass/layout"; + + +body { + .wrapper{ + background-color: #fff; + background: url('images/fixmindelo-header.png') 30% 0% repeat-x; + } + #site-logo { + left:8px; + } +} + +#main-nav { + ul { + &#main-menu { + li { + a.report-a-problem-btn { + color: #fff; + } + } + } + } +} + +body.frontpage { + #site-logo { + width: 370px !important; + height: 70px; + background: url('images/sprite.png') -3px -106px no-repeat; + top: 2em; + left: 1em; + } + + .wrapper { + background: url('images/fixmindelo-header.png') 30% 0% repeat-x; + } + + #front-main-container { + color: #fff; + #postcodeForm { + border-top: none; + border-bottom: none; + } + } + + #front-main { + border-top: 3px solid $mindelo_green; + border-bottom: 3px solid $mindelo_green; + } +} + +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 fcaba8924..d5544ff07 100644 --- a/web/cobrands/fixmybarangay/_colours.scss +++ b/web/cobrands/fixmybarangay/_colours.scss @@ -4,6 +4,18 @@ $primary: #fff; //E6DBD6 $primary_b: #000000; $primary_text: #222222; -$contrast1: #00BD08; -$contrast1_dark: #4B8304; -$contrast2: #AA8D11; +$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; +$col_fixed_label_dark: #4B8304; + +$fmb_base_blue: #046AAA; +$fmb_dark_blue: #084E7A; +$fmb_tab_yellow: #FFD000; diff --git a/web/cobrands/fixmybarangay/base.scss b/web/cobrands/fixmybarangay/base.scss index 71c2d8205..81cf4785d 100644 --- a/web/cobrands/fixmybarangay/base.scss +++ b/web/cobrands/fixmybarangay/base.scss @@ -1,13 +1,15 @@ -@import "../fixmystreet/_h5bp"; +@import "../sass/h5bp"; @import "./_colours"; -@import "../fixmystreet/_mixins"; +@import "../sass/mixins"; @import "compass"; -@import "../fixmystreet/_base"; +$image-sprite: 'images/sprite.png'; + +@import "../sass/base"; #site-logo{ width: 225px !important; - background: url('images/sprite.png') -3px -3px no-repeat; + background: url($image-sprite) -3px -3px no-repeat; } #barangay_buttons { @@ -24,33 +26,44 @@ input.yellow-btn{ } } -body.mappage .nav-wrapper div.nav-wrapper-2 { - background: url('images/city6.png') 30% 0% repeat-x; - border-bottom: 2px solid #333; -} #main-nav ul#main-menu li a.report-a-problem-btn:hover { background: #fff; } +.ie6 #site-logo { + background-image: url('images/ie_logo.png'); +} + +// #site-header creates grey bar in mobile +// .nav-wrapper-2 is used on desktop +#site-header{ + border-top: 0.25em solid $fmb_tab_yellow; + @include background(linear-gradient($fmb_dark_blue, $fmb_base_blue 10%, $fmb_base_blue 90%, $fmb_dark_blue)); +} -// Replace Sprite with cobrand sprite -.ie6 #site-logo, -.ie7 #site-logo, -.ie6 body.frontpage #site-logo, -.ie6 #main-nav ul#mysoc-menu li a#mysoc-logo, -.ie7 #main-nav ul#mysoc-menu li a#mysoc-logo, -#fms_pan_zoom_panup, #fms_pan_zoom_pandown, -#fms_pan_zoom_panleft, -#fms_pan_zoom_panright, -#fms_pan_zoom_zoomin, -#fms_pan_zoom_zoomout, -.button-right, -a.button-right, -:hover.button-right, -a:hover.button-right, -.button-left, -a.button-left, -:hover.button-left, -a:hover.button-left { - background-image: url('images/sprite.png'); -}
\ No newline at end of file +ul#promo-list { + margin: 0.5em; + li { + list-style:none; + } +} +.promo-big, .promo-bigger { + font-size: 130%; + font-weight: bold; + padding: 0 0.2em; +} +.promo-bigger { + font-size: 150%; +} +.promo-example { + font-size: 90%; + font-style: italic; + border: 1px solid #aaa; + background-color:#f0ebe8; // pale tone of background image + padding: 0.666em; + margin: 1em 1em 1em 0; + div { + font-style: normal; + font-family: monospace; + } +} diff --git a/web/cobrands/fixmybarangay/images/city6.png b/web/cobrands/fixmybarangay/images/city6.png Binary files differdeleted file mode 100644 index 63d7e674c..000000000 --- a/web/cobrands/fixmybarangay/images/city6.png +++ /dev/null diff --git a/web/cobrands/fixmybarangay/images/city7.png b/web/cobrands/fixmybarangay/images/city7.png Binary files differdeleted file mode 100644 index cea65cb82..000000000 --- a/web/cobrands/fixmybarangay/images/city7.png +++ /dev/null diff --git a/web/cobrands/fixmybarangay/images/fmb-header.png b/web/cobrands/fixmybarangay/images/fmb-header.png Binary files differnew file mode 100644 index 000000000..c3c45e009 --- /dev/null +++ b/web/cobrands/fixmybarangay/images/fmb-header.png diff --git a/web/cobrands/fixmybarangay/layout.scss b/web/cobrands/fixmybarangay/layout.scss index ccbf00748..4a662754d 100644 --- a/web/cobrands/fixmybarangay/layout.scss +++ b/web/cobrands/fixmybarangay/layout.scss @@ -1,5 +1,8 @@ @import "_colours"; -@import "../fixmystreet/_layout"; + +$image-sprite: 'images/sprite.png'; + +@import "../sass/layout"; @mixin box_round($radius) { -webkit-border-radius: $radius; /* Safari 3-4, iOS 1-3.2, Android ≤1.6 */ @@ -10,31 +13,41 @@ } body { - background: #C7B299; - background-image: url(images/pat3.png); - .wrapper{ - background: url('images/city7.png') 30% 0% repeat-x; + background: url('images/fmb-header.png') 30% 0% repeat-x; + } + #site-logo { + left:8px; } } - body.frontpage { - #site-logo{ - width: 370px !important; - height: 70px; - background: url('images/sprite.png') -3px -106px no-repeat; - } - - .wrapper{ - background: url('images/city7.png') 30% 0% repeat-x; - } +body.frontpage { + #site-logo { + width: 370px !important; + height: 70px; + background: url('images/sprite.png') -3px -106px no-repeat; + top: 2em; + left: 1em; + } + + .wrapper { + background: url('images/fmb-header.png') 30% 0% repeat-x; + } +} + +.ie6 body.frontpage #site-logo { + 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="); } #front-main { - color: $primary_text; background: rgba(255,255,255,0.1); margin-top: 70px; @@ -52,32 +65,13 @@ body { } } -.nav-wrapper { - .nav-wrapper-2 { - border-top: solid 4px $primary; - @include border-image(none); - } -} #main-nav { ul { &#mysoc-menu { - background:$primary; padding: 1px 0.5em; } &#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); - } - } - } } } @@ -132,4 +126,4 @@ body #main-nav ul#main-menu li span } } -@import "message_manager";
\ No newline at end of file +@import "message_manager"; diff --git a/web/cobrands/fixmybarangay/message_manager.scss b/web/cobrands/fixmybarangay/message_manager.scss index d2b7739c2..9af6c80ee 100644 --- a/web/cobrands/fixmybarangay/message_manager.scss +++ b/web/cobrands/fixmybarangay/message_manager.scss @@ -16,12 +16,10 @@ $color_bg_mm_list: #F6F6F6; $color_bg_btn_hide: #ff0000; $color_bg_btn_reply: #008000; $color_bg_btn_info: #0000ff; - +$color_bg_btn_detach: #FFA500; $weak_text_color: #666; - - p.mm-submitted-by-sms { color: $weak_text_color; font-style: italic; @@ -42,7 +40,7 @@ p.mm-submitted-by-sms { margin: -0.5em 0 0 0; text-align: right; font-size:80%; - padding:4px 8px 4px 0; + padding:4px 0; a { padding: 0.25em 0.5em; border:1px solid $mm_border_color; @@ -53,8 +51,15 @@ p.mm-submitted-by-sms { &:hover { background-color: #fff; } + #mm-link-to-toggle-archive { + border-color: green; + } } #message-control { + background-color: #fff; + &:hover { + background-color: #fff; + } #mm-username-container { display: none; // hidden during dev padding: 8px; @@ -97,9 +102,6 @@ p.mm-submitted-by-sms { #mm-message-list { ul { - &.mm-archive { - display: none; // archive only shown on interaction - } list-style-type: none; padding: 0; margin: 0; @@ -108,7 +110,6 @@ p.mm-submitted-by-sms { clear: both; margin: 4px 0 0 0; padding: 0; - cursor: pointer; background-color: $color_bg_mm_list; p { background-color: inherit; @@ -146,14 +147,15 @@ p.mm-submitted-by-sms { &.msg-is-busy { background-color: #ffd;} &.msg-is-owned { background-color: #dfd;} &.msg-is-active { - background-color: $contrast1; color:#fff; - p:hover { background-color: $contrast1; color:#fff; } // fix for mouseover on p + background-color: $col_click_map; color:#fff; + p:hover { background-color: $col_click_map; color:#fff; } // fix for mouseover on p p.mm-reply:hover {background-color: #eef; color:#000;} // fix for mouseover on p } span.msg-tag { width: 3em; float:left; } + .mm-radio-filler, input[type=radio] { display: block; float: left; @@ -163,6 +165,10 @@ p.mm-submitted-by-sms { font-weight: normal; margin: 0.1em 0 0.1em 4.5em; } + .mm-radio-filler { + margin:0; + padding:0; + } .mm-msg-action { display: none; padding: 0.2em 0.4em; @@ -175,14 +181,28 @@ p.mm-submitted-by-sms { .mm-hide { right:0px; background-color: $color_bg_btn_hide; + cursor: pointer; } .mm-info { right:1.5em; background-color: $color_bg_btn_info; + cursor: pointer; } .mm-rep { right:2.6em; background-color: $color_bg_btn_reply; + cursor: pointer; + } + .mm-detach { + right:5.65em; + background-color: $color_bg_btn_detach; + cursor: pointer; + } + } + &.mm-archive { + display: none; // archive only shown on interaction + li label { + cursor: default; } } } @@ -201,10 +221,13 @@ p.mm-submitted-by-sms { width: 11em; // hack to stop adjacent button hopping when button message changes } +#detach-form-container, #reply-form-container, #hide-form-container { p { color: #000; + max-width: 25em; + margin: 1em; } #hide-form, #reply-form{ @@ -218,9 +241,13 @@ p.mm-submitted-by-sms { overflow: hidden; display: none; } + select { + width: 100%; + max-width: 25em; + } } #mm-help { - .demo_hide_btn, .demo_reply_btn, .demo_info_btn { + .demo_hide_btn, .demo_reply_btn, .demo_info_btn, .demo_detach_btn { color: #fff; font-weight: bold; padding: 0.2em 0.4em; @@ -228,4 +255,12 @@ p.mm-submitted-by-sms { .demo_hide_btn { background-color: $color_bg_btn_hide; } .demo_reply_btn { background-color: $color_bg_btn_reply; } .demo_info_btn { background-color: $color_bg_btn_info; } + .demo_detach_btn{ background-color: $color_bg_btn_detach; } + h3 { + border-top: 1px solid $color_reply_bg; + padding-top: 0.8em; + } + p { + margin: 1em; + } } diff --git a/web/cobrands/fixmybarangay/message_manager_client.js b/web/cobrands/fixmybarangay/message_manager_client.js index e9a5c8d6b..06ea7a909 100644 --- a/web/cobrands/fixmybarangay/message_manager_client.js +++ b/web/cobrands/fixmybarangay/message_manager_client.js @@ -28,6 +28,13 @@ * * want_nice_msgs don't use language like "lock granted" * + * tooltips hash of tooltips: override the items you want, keys are: + * tt_hide, tt_info, tt_reply, tt_radio + * + * want_radio_btns normally MM clients show a radio button, but for archive + * messages this might be unneccessary: default is true, but + * pass in false to suppress this. + * * *_selector these are the jQuery selects that will be used to find * the respective elements: * @@ -63,7 +70,16 @@ var message_manager = (function() { var _mm_name = "Message Manager"; var _use_fancybox = true; // note: currently *must* have fancybox! var _want_nice_msgs = false; - + var _want_radio_btns = true; + + var _tooltips = { + tt_hide : "Hide message", + tt_info : "Get info", + tt_reply : "Send SMS reply", + tt_radio : "Select message before clicking on map to create report", + tt_detach: "Detach this message because it is not a reply" + }; + // cached jQuery elements, populated by the (mandatory) call to config() var $message_list_element; var $status_element; @@ -82,12 +98,6 @@ var message_manager = (function() { var msg_lock_granted_ok = ["Lock granted OK", "Checking message... OK"]; var msg_lock_denied = ["", "Someone is working with that message right now!"]; - // tooltips currently hardcoded, but maybe hide if don't _want_nice_msgs? - var tooltip_hide = "Hide message"; - var tooltip_info = "Get info"; - var tooltip_reply = "Send SMS reply"; - var tooltip_radio = "Select message before clicking on map to create report"; - function get_msg(msg) { return msg[_want_nice_msgs? 1 : 0]; } @@ -127,6 +137,16 @@ var message_manager = (function() { if (typeof settings.want_nice_msgs !== 'undefined') { _want_nice_msgs = settings.want_nice_msgs; } + if (typeof settings.want_radio_btns !== 'undefined') { + _want_radio_btns = settings.want_radio_btns; + } + if (settings.tooltips) { + for (var key in settings.tooltips) { + if (settings.tooltips.hasOwnProperty(key)) { + _tooltips[key]=settings.tooltips[key]; + } + } + } } $message_list_element = $(selectors.message_list_selector); $status_element = $(selectors.status_selector); @@ -207,7 +227,7 @@ var message_manager = (function() { $login_element.stop(true,true).slideDown(); }; - var say_status = function (msg, show_spinner) { + var say_status = function (msg, show_spinner, allow_html) { if ($status_element) { if (show_spinner) { // slow fade in so that spinner only appears if there's a long delay @@ -215,52 +235,68 @@ var message_manager = (function() { } else { $status_element.find('#mm-spinner').stop(true,true).hide(); } - $status_element.stop(true,true).show().find('p').text(msg); + $status_element.stop(true,true).show(); + if (allow_html) { + $status_element.find('p').html(msg); + } else { + $status_element.find('p').text(msg); + } } }; - var extract_replies = function(replies, depth) { + var extract_replies = function(replies, depth, is_archive) { var $ul = ""; if (replies && replies.length > 0) { $ul = $('<ul class="mm-reply-thread"/>'); for (var i=0; i<replies.length; i++) { - $ul.append(get_message_li(replies[i], depth)); + $ul.append(get_message_li(replies[i], depth, is_archive)); } } return $ul; }; - var get_message_li = function(message_root, depth) { + var get_message_li = function(message_root, depth, is_archive) { var msg = message_root.Message; // or use label value var lockkeeper = message_root.Lockkeeper.username; var escaped_text = $('<div/>').text(msg.message).html(); var $p = $('<p/>'); - var $hide_button = $('<a class="mm-msg-action mm-hide" id="mm-hide-' + msg.id + '" href="#hide-form-container" title="' + tooltip_hide + '">X</a>'); - var $info_button = $('<span class="mm-msg-action mm-info" id="mm-info-' + msg.id + '" title="' + tooltip_info + '">i</span>'); - var $reply_button = $('<a class="mm-msg-action mm-rep" id="mm-rep-' + msg.id + '" href="#reply-form-container" title="' + tooltip_reply + '">reply</a>'); + var $hide_button = $('<a class="mm-msg-action mm-hide" id="mm-hide-' + msg.id + '" href="#hide-form-container" title="' + _tooltips.tt_hide + '">X</a>'); + var $info_button = $('<span class="mm-msg-action mm-info" id="mm-info-' + msg.id + '" title="' + _tooltips.tt_info + '">i</span>'); + var $reply_button = $('<a class="mm-msg-action mm-rep" id="mm-rep-' + msg.id + '" href="#reply-form-container" title="' + _tooltips.tt_reply + '">reply</a>'); + var $detach_button = $('<a class="mm-msg-action mm-detach" id="mm-rep-' + msg.id + '" href="#detach-form-container" title="' + _tooltips.tt_detach + '">detach</a>'); + var is_radio_btn = _want_radio_btns && depth === 0 && ! is_archive; if (_use_fancybox) { $reply_button.fancybox(); $hide_button.fancybox(); + $detach_button.fancybox(); } if (depth === 0) { var tag = (!msg.tag || msg.tag === 'null')? ' ' : msg.tag; tag = $('<span class="msg-tag"/>').html(tag); - var radio = depth > 0? null : $('<input type="radio"/>').attr({ - 'id': 'mm_text_' + msg.id, - 'name': 'mm_text', - 'value': escaped_text, - 'title': tooltip_radio - }).wrap('<p/>').parent().html(); + var radio = null; + if (is_radio_btn) { + radio = $('<input type="radio"/>').attr({ + 'id': 'mm_text_' + msg.id, + 'name': 'mm_text', + 'value': escaped_text, + 'title': is_radio_btn? _tooltips.tt_radio : "" + }).wrap('<p/>').parent().html(); + } else { + radio = $("<p>–</p>").addClass('mm-radio-filler'); + } var label = $('<label />').attr({ 'class': 'msg-text', 'for': 'mm_text_' + msg.id, - 'title': tooltip_radio + 'title': is_radio_btn? _tooltips.tt_radio : "" }).text(escaped_text).wrap('<p/>').parent().html(); $p.append(tag).append(radio).append(label); } else { $p.text(escaped_text).addClass('mm-reply mm-reply-' + depth); } var $litem = $('<li id="' + _msg_prefix + msg.id + '" class="mm-msg">').append($p).append($hide_button).append($info_button); + if (depth > 0 && depth % 2 === 0) { // only even-numbered depths are incoming replies that can be detached + $litem.append($detach_button); + } if (msg.is_outbound != 1) { $litem.append($reply_button); } @@ -275,7 +311,7 @@ var message_manager = (function() { } $p.append('<div class="msg-info-box" id="msg-info-box-' + msg.id + '">' + info_text + '</div>'); if (message_root.children) { - $litem.append(extract_replies(message_root.children, depth+1)); + $litem.append(extract_replies(message_root.children, depth+1, is_archive)); } return $litem; }; @@ -303,7 +339,7 @@ var message_manager = (function() { if (archive instanceof Array) { var $arch_ul = $('<ul class="mm-root mm-archive"/>'); for(i=0; i< archive.length; i++) { - litem = get_message_li(archive[i], 0); + litem = get_message_li(archive[i], 0, true); $arch_ul.append(litem); } $output.append($arch_ul); @@ -316,7 +352,7 @@ var message_manager = (function() { $output.append('<p class="mm-empty">No messages available.</p>'); } else { for(i=0; i< messages.length; i++) { - litem = get_message_li(messages[i], 0); + litem = get_message_li(messages[i], 0, false); $ul.append(litem); } } @@ -354,6 +390,10 @@ var message_manager = (function() { $('#hide_msg_id').val($(this).closest('li').attr('id').replace(_msg_prefix, '')); // $('#hide-form-message-text').val(TODO); }); + // clicking the detach button loads the id into the (modal/fancybox) detach form + $message_list_element.on('click', '.mm-detach', function(event) { + $('#detach_msg_id').val($(this).closest('li').attr('id').replace(_msg_prefix, '')); + }); }; // gets messages or else requests login @@ -415,7 +455,8 @@ var message_manager = (function() { } }, error: function(jqXHR, textStatus, errorThrown) { - var st = jqXHR.status; + var st = jqXHR.status; + var msg_is_html = false; if (st == 401 || st == 403) { var msg = (st == 401 ? "Invalid username or password for" : "Access denied: please log in to") + " " + _mm_name; say_status(msg); @@ -423,11 +464,17 @@ var message_manager = (function() { } else { var err_msg = "Unable to load messages: "; if (st === 0 && textStatus === 'error') { // x-domain hard to detect, sometimes intermittent? - err_msg += "maybe try refreshing page?"; + if (_url_root.indexOf('https')===0 && ! location.protocol != 'https:') { + var surl = location.href.replace(/^http:/, 'https:'); + err_msg += 'this is an insecure URL.<br/><a href="' + surl + '">Try from HTTPS instead?</a>'; + msg_is_html = true; + } else { + err_msg += "maybe try refreshing page?"; + } } else { err_msg += textStatus + " (" + st + ")"; } - say_status(err_msg); + say_status(err_msg, false, msg_is_html); } } }); @@ -652,6 +699,56 @@ var message_manager = (function() { } }; + var mark_as_not_a_reply = function(msg_id, options) { + if (_use_fancybox){ + $.fancybox.close(); + } + var callback = null; + var check_li_exists = false; + if (options) { + if (typeof(options.callback) === 'function') { + callback = options.callback; + } + if (typeof(options.check_li_exists) !== undefined && options.check_li_exists !== undefined) { + check_li_exists = true; // MM dummy + } + } + var $li = $('#' + _msg_prefix + msg_id); + if (check_li_exists) { + if ($li.size() === 0) { + say_status("Couldn't find message with ID " + msg_id); + return; + } + } + $li.addClass('msg-is-busy'); + $.ajax({ + dataType:"json", + type:"post", + data: {}, + url: _url_root +"messages/mark_as_not_a_reply/" + msg_id + ".json", + beforeSend: function (xhr){ + xhr.setRequestHeader('Authorization', get_current_auth_credentials()); + xhr.withCredentials = true; + }, + success:function(data, textStatus) { + if (data.success) { + $li.removeClass('msg-is-busy msg-is-locked').addClass('msg-is-owned').fadeOut('slow'); // no longer available + say_status("Message no longer marked as a reply"); + if (typeof(callback) === "function") { + callback.call($(this), data.data); + } + } else { + $li.removeClass('msg-is-busy').addClass('msg-is-locked'); + say_status("Hide failed: " + data.error); + } + }, + error: function(jqXHR, textStatus, errorThrown) { + say_status("Detach error: " + textStatus + ": " + errorThrown); + $li.removeClass('msg-is-busy'); + } + }); + }; + // if boilerplate is not already in local storage, make ajax call and load them // otherwise, populate the boilerplate select lists: these are currently the // reasons for hiding a message, and pre-loaded replies.message-manager.dev.mysociety.org @@ -747,6 +844,7 @@ var message_manager = (function() { show_info: show_info, sign_out: sign_out, populate_boilerplate_strings: populate_boilerplate_strings, - say_status: say_status + say_status: say_status, + mark_as_not_a_reply: mark_as_not_a_reply }; })(); diff --git a/web/cobrands/fixmystreet/_base.scss b/web/cobrands/fixmystreet/_base.scss deleted file mode 100644 index 189db4222..000000000 --- a/web/cobrands/fixmystreet/_base.scss +++ /dev/null @@ -1,1553 +0,0 @@ -/* HEADINGS and TYPOGRAPHY */ - -body { - font-family: MuseoSans, Helmet, Freesans, sans-serif; - margin:0; - font-size:1em; - line-height:1.5; - color: #222; - background-color: #fff; -} - - -p { - font-size: 1em; - font-weight: normal; - margin:0 0 1em 0; -} - -small{ - font-family: Helmet, Freesans, sans-serif; - font-style: italic; - font-size: 0.8125em; - line-height: 1.2307em; -} - -h1 { - font-family: 'Museo300-display', MuseoSans, Helmet, Freesans, sans-serif; - font-size: 2em; - line-height: 1em; - font-weight: normal; - margin-top: 0.5em; - margin-bottom: 0.5em; -} -h1#reports_heading span { - display: none; -} -h1#reports_heading a { - display: block; - font-size: 50%; -} - -h2 { - font-family:'Museo300-display', MuseoSans, Helmet, Freesans, sans-serif; - font-size: 1.5em; /*24px*/ - line-height: 1.3333em; /*32px*/ - font-weight: normal; - margin-top: 1.333333333em; /*32px*/ - margin-bottom: 0.666666666em; /*16px*/ -} - -h3 { - font-size: 1.25em; - line-height: 1.20em; - margin-top: 1.2em; - margin-bottom: 0.8em; - font-weight: normal; -} - -h4 { - font-size: 1em; - font-weight: normal; - margin-bottom: 1em; -} - -// default list styles -ul, ol { - font-size: 1em; - margin-bottom: 2em; - margin-left: 2em; - padding:0; -} - -li{ - margin-bottom: 0.5em; -} - -ul li{ - list-style: square; -} - -ol li { - list-style:decimal; -} - -// lets you have a traditional ol but with nicely styled numbers -// for older browsers it just falls back to the normal ol -ol.big-numbers { - padding: 0; - margin: 0; - counter-reset: li; // reset counter to be 'li' instead of a number - > li { - position: relative; - list-style: none; - padding:0 0 0 2.5em; - margin-bottom:2em; - &:before { - content: counter(li); // set the content to be whatever the 'li' var is - counter-increment: li; // add to the counter var - position: absolute; - left: 0; - top:-0.2em; - color:#ccc; - line-height:1; - font: { - family: Helmet, Freesans, sans-serif; - weight:bold; - size:2.5em; - } - } - } -} - -dl { - margin: 0; - padding: 0; - dt { - font-size: 1em; - line-height: 1.5em; - font-weight: bold; - } - dd { - font-weight: 1em; - line-height: 1.5em; - margin:0 0 1em 0; - } -} - -blockquote { - p:before { - content: '“'; - } - p:after { - content: '”'; - } -} - -pre { - font-family: monospace; -} - -img { - //do this otherwise IE will just not display - //any img without a height defined - height:auto; - max-width: 100%; -} -// So that map popups display correctly -#popup img { - max-width: none; -} - -select, input, textarea { - font-size: 99%; - max-width: 95%; -} -.ie7 { - select, input, textarea { - max-width: none; - } -} - -// To deal with bug from drop-down being wider than holder -select { - width: 100%; -} - -// links -a, -a:visited { - text-decoration:none; - color:#0BA7D1; - &:hover, - &:active { - text-decoration:underline; - color:#0D7CCE; - } -} - -// custom type -.small-print { - @extend small; - margin-bottom: 1.2307em; - color:#666666; -} -.meta{ - color:#555555; - font-style: italic; - margin-bottom: 0px; -} -.meta-2{ - font-family: Helmet, Freesans, sans-serif; - color:#666666; - font-style: italic; - font-size: 0.75em; -} - -h4.static{ - font-family: Helmet, Freesans, sans-serif; - text-transform: uppercase; - font-size: 0.875em; - line-height: 1.71428em; - color:#666; - margin-top: 2em; -} -h4.static-with-rule{ - @extend.static; - background: #f6f6f6; - border-top: 0.25em solid $primary; - margin-bottom:0.25em; - padding: 0.5em 1em; -} - -/* FORMS */ - -// input placeholders, these need to be on separate lines as if the browser -// can't understand a selector it will invalidate the whole line. -::-webkit-input-placeholder { - color: #666666; - font: { - style:italic; - size:0.9375em; - } -} -:-moz-placeholder { - color:#666666; - font: { - style:italic; - size:0.9375em; - } -} -:-ms-placeholder { - color:#666666; - font: { - style:italic; - size:0.9375em; - } -} -//this only gets used when the browser doesn't support @placeholder -.placeholder { - color:#666666; - font: { - style:italic; - size:0.9375em; - } -} - -// wrap anything inside the form in a fieldset to give -// us the right spacing -fieldset { - margin: 1em; -} - -input[type=text], -input[type=password], -input[type=email], -input[type=file], -textarea { - @include box-sizing(border-box); - width: 100%; - // adjust so the sides line up - padding: 0.5em; -} -.ie7 { - input[type=text], - input[type=password], - input[type=email], - input[type=file], - textarea { - max-width: 95%; - } - // In order to work around the IE7 specific issue of inheriting left margins - // http://techblog.willshouse.com/2009/07/12/ie6ie7-form-element-margin-inheritance-bug/ - fieldset > input[type=text], - fieldset > input[type=password], - fieldset > input[type=email], - fieldset > textarea { - margin-left: -1em; - } -} - -textarea { - border: 0.125em solid #888888; - @include border-radius(0.25em); - display: block; - font-size: 1em; - line-height: 1.5em; - font-family: Helmet, Freesans, sans-serif; - min-height:8em; -} - -input[type=text], -input[type=password], -input[type=email], -input[type=file] { - border: 0.125em solid #888888; - @include border-radius(0.25em); - display: block; - font-size: 1em; - line-height: 1em; -} -input[type=file] { - margin-bottom:1em; -} - -label{ - display: block; - margin-top: 1.25em; - margin-bottom: 0.25em; - font-weight: bold; - &.inline{ - display: inline; - padding: 0 2em 0 1em; - font-weight: normal; - } -} - -// grey background, full width box -.form-box { - margin: 0 -2em 0.25em -2em; - background:#eeeeee; - padding:1em 2em 1em 2em; - >input[type=text] { - margin-bottom:1em; - } - .title { - font-size:1.25em; - margin:0.5em 0; - } - h5 { - margin:0 0 1em; - font: { - size:1.125em; - weight:normal; - } - strong { - font-size:2em; - margin-right:0.25em; - } - } -} -// IE6 doesn't extend the grey box back with the above negative margins, and -// the password box falls off screen for some reason. Just have boring margins, -// it looks okay. -.ie6 .form-box { - margin: 0 0 0.25em 0; - padding: 1em; -} -// Prevent grey displaying oddly by giving it a width, and stop odd left margin issue -.ie7 .form-box { - width: 100%; - > input[type=text] { - margin-left: 2em; - } -} - -.form-txt-submit-box { - min-height:3em; - input[type=password], - input[type=text], - input[type=email] { - width: 65%; - float:left; - } - input[type=submit] { - float:right; - width:28%; - margin-right:0.25em; - padding-top:0.7em; - padding-bottom:0.6em; - } -} - -.checkbox-group { - margin:1em 0; -} - - -// form errors -div.form-error, -p.form-error { - @include inline-block; - background:#ff0000; - color:#fff; - padding:0 0.5em; - @include border-radius(0.25em 0.25em 0 0); - a { - color: white; - text-decoration: underline; - } - a:hover { - text-decoration: none; - } -} - -input.form-error, -textarea.form-error { - border-color:#ff0000; - @include border-radius(0 0.25em 0.25em 0.25em); -} - -ul.error { - background:#ff0000; - color:#fff; - padding:0 0.5em; - @include border-radius(0.25em); -} - -// don't display valid error boxes as now the page jump -// won't be until the user submits, which is fine -div.label-valid, -p.label-valid { - display:none !important; - visibility: hidden; -} - - - -/*** LAYOUT ***/ - -// Padding creates page margins on mobile -.container{ - padding: 0 1em 1em; -} - -// Use full width to reverse .container margins -.full-width { - margin: 0 -1em; -} - -// #site-header creates grey bar in mobile -// .nav-wrapper-2 is used on desktop -#site-header{ - border-top: 0.25em solid $primary; - height: 3em; - @include background(linear-gradient(#000, #222 10%, #222 90%, #000)); - .container { - min-height:4em; - } -} -#site-logo{ - display: block; - width: 175px; - height: 40px; - top: 0.4em; - background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK8AAAAoCAYAAACIJ6oVAAAACW9GRnMAAAADAAAAAwB3k5ejAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAF5AAAQZgCwCYXlAAAABmJLR0QA/wD/AP+gvaeTAAAag0lEQVR42u1cB1RWx7YeBBW7YAOViL0bNSomdsWADVsQbEHFiAUUMYmiokEUWzQiiQ0VNSC2gFiJmthbiF1jwxaNGr0pKra8t1be3r/frLc99/zwo7nv3rzFWWuv/z9zZs6ZM/PtPd/eM3OUyj1yj9wj98g9co/cI/fIPXKP3MPaYQfJY6Po/LlH7vFvBa09ST6SIiROJM7ZiBPy5kPZXBDnHv8W0OYHGCuSeJB4kniReFsRL+TxQBkngDhPbpPmHv8XRx4AjoFXiaQFSUDXrl2XxMfHp585c+b2nyZHZmbmM742b968gx4eHvO5DElzkgokhXKtcO7xrz7sAbQKAF7AoEGDEk+ePPnznzk8tm3bdhUg7kFSE5QiJ1bY7jXkrxyB/pX5/4o2yD0EcKuQdHdzc5t14MCBm3++5rFy5cqjdL9AKMMbJAWzAbB0DLlODlmIPeSvdBrNnFNr97LmyL4OsOQ97bNoA/nuf1eA/yX1zCOA69uxY8eEhw8f/mEGxrt37z5OS0vLWLZs2QmS4yzr168/d/Xq1V+sAfjKlSu/kjLMpHv7AMD5TCprJ7h2XvDtAqgXS2EhOq0g8jgiv5Z8ooNtbRj5fAfcI5+VexkBlhf5XvXZRsXVz3fEOxrbQL+7I/LlNVFio2Lb/YeBNqt62uXkRvlAFboDuP9lQgOudenSZRmsqI+Js+bj6en58erVq/cT/31uLH/p0qUHAHALUAj7LJzEQuDcpUlcScqRlBfC52VJypCUElEOluIkRdG5OYl4GJ9fVNyrENKlpcsD0DgiulIczy+G/DmNtkjFLYj7lCRxsfL+Lnh3JwC6gEGBHYVS531FZfpXWVppoMzqabOy2aMBmjNHNVrcCxcuPPL29l4D0LYkqQzQlICUhJSB5W5ZtWrV4KNHj14xs8C4T010cB4rIbkycBbrkLyF6EVTIU1IGpHUJ6lFUg31qowoR3nUqbCNIJLALQqleQP3egPnRXHdwQAyZ4CpEp5fAfmLCMDb2QjcfKgzg9Id79YQ7/82yTv49UC71EWblxdALo46lUT/FLeifLZSjFelIXZZjFTaQBQX+HFGGxdA22YLYDvciBs+4NSpUy85ZhcvXnxUtmzZhXTNTzhdjrh5ATxMx3eLocNKIK9fbGzsXiOAU1JSTsKJqyDogx1AUQgdX33RRDX84EqV8G2cWrdzkfpqx0KVzML/dy5WX1H6+n3LVdKsUPUR5W/DFn3BeBV8ap2KS5hmUZBK6NBC2TSGUXHY0tc4s0EtObFWLW3R0HLvGkgvIqhBQbwrP6dB0gwVfixJLY+brIYivwuAmF1H2IkITxGU4/LvvPnmm73IZ1hAo9axe/fu3dBtyP8vX76cnpSUFPPWW291pbyNAXStwNXQBzWggC7oH0dh3ewNw7Y138HeRPKYgNnOCl+3N3B3R9TFBW3H9ayNOruhTQvZAmBtdVtOnz59i9HiAri+JFVFRxhjv+1I2nIHwmLqYZTL+JoBGFGI5riPvei8orB0jffHq9V/nlR/2iLV3dUQKtNrz1K1ls/TE9UKWGU3aLcjGi6PlUbOJxWHFUHfmxUEI051XC8M4DrBOjauV035PU9XmSJ/M1jEElByBxM+Z2diccsAhG0GDx4c/vTp0yfZOcTPnj17PGnSpEjE2LmeLVJTU2fytT/++OPR2rVrxwIc5dAWBcVQbSb5BdfXfkdBIVnxbAcDHSggRPP34qhL7QEDBrz3+PHju1xXUsY0KGEVWOKCot2scl0GYYDkqcx5GzZsuAoWVwL3pTAaNfCqmJiY/dOmTdtepUqVkRjGCgsrymX9jBSCoxiIA1cUw1l+vJgltuzdTI0a5quWaBD17ahS+3dWyQFd1PoAH7V2YFeV9Mte9RtfG9lbxVKZYUsi1PKbX6sf1sxU8zDEVhVDfgHhTDkYnKLCAFpF0BJf/dzf96t/QIGbAqzOqCdb4noknbZ+rjbr/Fti1Rb4BA0wnBcXzzZyZiNVYOvTysvLa/QTOnIS1RkzZswcKtufhQGt02/dunUOxqUOlLm0GKpL4rlaSor3K442KQUr6WrCsx0NQC8oRuNSUMYy4t6l0CZcl3a7du3aIN/Bx8cnCLSokhjlTWlXHjyo6cyZM1PlTRYvXnxWcFMJXEsYjfNLsGdkZPzm7u4+AR1WWHQM/6/JjpzRiYP19YCV1p1YHABi5ehHMlGDgv4vImFQstMXTTLtYqq6xtdG+CkeIUJJRpAMIunJIEAjVUCjlxDOV0HhlDmjgSvAWncK7afmScv+ebj6ktOhnOVxvyp6AufXfS+UiOXgCnUcINLWuhyeXUTwOQfh7GmOXVkrzqFDh743gvO77777nQzFtfnz51/ZvXv3P8Xdjx07dpHKch9EyHTqmwy0ZRu8n6YTtdA+daGEdZFWHe9WFXnrgXc3wm8dXC8HQBaDOKNdKkAJ6+J59fFfP/dNKFP/DRs27JJ1DQkJ+ZzxBT5fDm2W18z62kMTOh0+fPiatLrly5efi8Z3FhaKh/NuNCQdN/Dih+XKlfuCrnVFHkcxdORHx7XcsmXLd7Icz8RhKtlJOEBFAI5GAOAYAd5Z3DEkYSRs5UcBsKMgnBZM8gFGjHehHPXQcFVQP1eA1RXnVdBpDdDB/Yf0VMv5mZmH1XP+ZQtP6e8DrDVQhvN3mT/2Bb3ReS9sVDcofTjA7mHo7BIiMqCpRzncsyksdsiNGzfuybaaM2fObUrn9tpFso1kO1naMzIP9eF1Sud+WCTTf/jhBx7lPibpizq9O3r06BHdu3dn49SN/Y8uXboMjYyMjECaN/qlPeevXbt2/wkTJkSNHz9+6sSJE6d07dr1A1xvjHatiBGpGoDavH79+j2nTJkykekMCyxqJ1CbzlDu8BUrVqTLugYEBKxD27VHm5REW9mbOWqs7YPkDQhk12F1KyNPHoCqyZAhQ5YbeHEm8eI4QS+KoHNc8ELa4lRh6yvL8lQyGspZEPoCsEK1AL4PBHiZuzG37Q1g98RzuSEGX9umLl3dqi6nr1aH331bjYFT6H1vtzpJVOJAYrTFKjUBmGvDAniwk8V5yNFLpvP3GDxMS/iZqTHq1t1v1GP+/8lQtRwK2hSWgYH+/i+wultj1XX+/SFFMVj4+X1C+6pgvvf5FLUWHasjNU5oG1aeeuMDVeC5ZPXt9e2KrecUo1Ul0Nyi9H0kTEk2QFK++OKLi3rka9u27ba4uLhT1mjF7du3f2Jg7N279xudRqBMSEtLO2Ri/UIqVqw4jhTie7N7Xbt27RJhYSzA2Bwc35OBfvz48QNWYv0Z/v7+bIBC33777bnEdZ+Z5SO29DQiIiISylFeWN+XwMuJHrxmwVD5HdCSUoKjcWN7Hjly5KoB6GxlhsG6FMMQyB3Uvm7dur0BwqLoMJ+ff/75kVwLIcCrCb/kvdwofQV4QxgQJB0x7LSBBejC6XKY3xRjsU4DjenEoT/Eu/FzO++Gg8fCXBlKGx7zsdrPafR7Lay/Osv/iaKwUg+G5eBO8x3ZR8XytZ+/VY/oPJn/39+jHtD/8axo4YFqmr7/jkUW2uMhvGp3KJDn5c0qXbxnjNl0/DfffHM/Ojr6LLXrJsqTSLKahEOYrBjsJGY7jc90S57L/tDH8uXLvyfOvd4auCTIevfuPR2+S0CbNm0mZOdg8j3p3mup3Las8q2hg+7ZGlgqjpH/Jb5rAWTfvn1TDaQ5DtalqAAVA8ybAWcSt+0HE18WYPWdPXt2CvG2Y2JCgs1/B+OiHhPwaurgho7uJTo1FEO3D0DbCuIFCxw8O+wFgDZ8qr4BleCw1fBdi9VeTv9tv/oFvHhonw7UkZT29Kh60ruDmg6rzkNWRPwU9T3Ay4DdTdY3E+BfAgBzPYZf2vSCc48frA7R+TpR14mgMcNH9VHzOe3BQXUfitZU8MG27Jjy9SdH1dNypVUMpS0MDw8/klXn3r17N5PXjgwdOnQv5Wc+vpLF19f3W+K+L810Mg08ceLEPZ4JpTyLs7rvo0eP/qhVq9aeS5cuPZTp5PQ9Jyucyb8y/dy5czwicNtFG6kO5X1Gxu4R0ZYnxsmqUqVK7SJl/IfxfkxB2UBWqlTpI1CHqsBpfiN4LYAkLdhqANRwkHZHEX8tExwcHGpFm9nK9AJ/GkpcZ6fgWu2FV+vNDZgFePWzCoMHNpZeP1mnK0wN2ELe3qXOkLU7xUMy7sHgHTm4u1rFedfMVNypH4EDM4gnEhe1DOuJ09UBOp9B97nL53GTLVZ6NMDLYJ+wYor6jq9FjVAXmGdGh6gzfL47TrEjO4mt8wc91ApOozo8BHhWCfBGCD4+lhy6Xzn9owEW3t4FSsejhy+PEnxtzzJ1hs4/ZctLsiwxMTHDligDWc9MomSpXAZA3iyvp6en/waawbQn3lj+/Pnzj4lrniOjdYKu7xk1atRlQ2TomZOTE1M8ph03k5KSXrLWrVu33kUU4qBMO3v2LJfhUZkxcHP16tUvlSHacJrSj82aNeu+TO/Wrdt3lB6LfmiTleW1Bbw6YlCLONV4s8a7fPny79u3b88g/nRw+vTppw2TEZ5iFs57xIgRu3II3l7ZxXhxDw5lhQQCvEkzLPyQKUIQGiK8UW21+PER9Yyvpy1Qly38NNnSuJPxzv0wBH6Ynqgy+HqPdhagby7trLZoh6xBDZVAaZ+TNb/A58sjFY8wbJEXE2e9z2lvuKhpAC5TnbEzQ9VGTj+9wQLQQeDWrPBBGtidW6p4Op9KEgUQx/fo0eMQ04XsAMyRnPbt26dwGZL1higEh/o47LmAJM5YFqBlLr2RncHk5OS78vrmzZufR0VFPWGZOnXqk4SEhKfyOjlkNzZs2HDfUOYZ5X3M+Vm+/PLLpyYO6AkC70vWumfPnvvZsMCPaYoR+J84r1Xa4OHhEYuCxcRkgx87ZmZrHqwd48aNW4uhX8/RdyAivs8G8BYCBWkkLS/9j4Q11U6bDyy7J8Irwwf3UCuF5R2l4574P2POGHVU34/B2LCmZTIjHKDtBiUI5ogB5+n1rtoJbpm0eOIL7rv1c3WtbhW1Rd/DtaQFMBz2m8fOGqcHvWexgiOhOKPdXNT0J0fUU77WvIFlmGXqEhwx5IWy/UijADtqJOPwjmy5OeLD9UvhYXbAgAFn4uPjf6LDlIsePHjwBqxvgkwnHnwPwGWFiDUZOdkqL0UoMsFIO7I7ZsyY8Ss9O0cxaQIvW/H0Tz/99I5M79Wr1y5Qru5wrMsgKmNvk8M2cuTINPDI8rDAvjzTxjNutlbu9OnTd8ELK+LhFodt3bp1P2ThsJmBt6ch2sBg8IfT1RoTEc1wPuSDnjQsUt61s9QeWNNeiEow4KM8PdQmfT/msRiixiCfFxTiA81l+3VSKTr85FJCJT06pJ6T/EFD/U1QjpMY5hmQM86nqB85fUhPC6BDYGXZoR2/ef4Lpwy0hYE65ViSushp00daLN8ETTWaNWs2kxc4YaIoHg7aWljHHdWrVz9u5JIAIoN3hUw7deoU98VnHBdnhTApswD14RFoHoM9J0D8+OOPf2NqkZMykydPvkrP2j937txbMt3f3387RswOwF4JEfHKPlTGAINlY1D4M3B5jYOtFeOlke7u7hGYKXECeDnOGZiRkfG7lVCZGXg5IN5NgDcIw20bALsO4oz1YX0H6fgswDsM+bshijDl6lb1C19/SADk35VR6qgBvMxHA/VQjg7/BMP5fLrveWm5yeouxzUG3ifMW/nauEGWKEAwrD5b9dAmddQXfI2pCysD0w9xPgWdFtKiRYso2Z59+vTZzJQEws9bzzy8Y8eOF02A+E+8FuCdBwX7zKTMVCgajwafkOF5yRrSkK8pQCZ+Lf+jo6MfBgUFsRN6hSzvU0OZ56JM5rRp0zj/A+a4zKlpJGGHOi0mJua6LMdRCPSHF6IyzmbgtTpJwR4nhugxrq6uy2y1uBwGWbNmzV6yCkMBXBfEbS2TFLycMotJCiN4XTEJ4CPA2xtOTj1YdL1MsBomVAJouF4qwDsCjhxTgSCmEnzt+Br1j5qV1F62onze09NiOd8XtCFIPPMjPcTzcEY0I15f+2qOhb9OR2NbuO3qGS9CbKAtwXj+e1CeieeS1S2+Hh6ojiyJeAH01HmWGTkdnQg2zjoxn61fv34SLORCOGXbiGteN+aD5V1mQhsWA8ALTcA7DgrGijaGOO9LsWIC3iM4axxZuEWO2E9jx479NTw8nO/LjteJuLi4+4YyPKrdRpmbVOZHzk+08UcGLRRwQ2xsbIbB8qahPp0RuSopfC/bpod59oa0Ywd5opnWwMr8t1+/filhYWFzQkJCRoF/yo2XeoEOW8dAXg+cxfSwnQl4LVO1AkjdkF+vFtNz7+5Qlr5Dfckh+V/wcARhAIufl5oFa/msThW1lWOys0LVMU67tUPdAfgGIgw2WjxT0xRfXP+IhvjNidHqYNN6lqF4JIDPMlIriADve6A0DOLRYf1VKl/fu0zdvoPJD3YkoQD87KE8cWDmkPEGgKVLl57kqXuz6WFymq+Cty42hr849IaIRKIJeEdj5OFJnaCBAwcmGfOQI/5b48aNf/Lz87vLkQSdHhkZeZnK7CSak25WpnLlyjepzB1ZhrB2AkoWv3DhwvPGrWODBw9eWbNmzYGYCHIFHhyyXJjDIRd9kwcPHvy3fKAZcDt06JCITqklZo2KiEXFhbWzxyDPYmGO2bJIF1hYbwGkjrDG5eAE6kUgOjLhN9xPLcJs11FwZLaaI27vVD9x+vyxlijEIkQHFmlLuG62+panUJvVVzPIKiZx2u1dFqsRAP7VGjN+vrCiQbjWA9d55m3wp2HqK1j3C6P6Wix6Tyh1Z0xbR/OEhn6nQ6ssceRIMaXNEY8xHGbMCYdkgMI68+Kcz+7du2c6WrZq1Wq3CXiHgy55QVF5Zu26Lc/FGhgOE65OSEi4aksZcjq/Rz1jrM0IkqJuxCSVO/o4b46WRNoAXLlU0sGwLE4D1+LsGaMU7CQalkQqAd6CmCLmKdx2ArztkFZGLK4uhHOeqeqqJwREmbCNn6k0/n8pVV0Dt5wEbz6SeaiOAnRppZbqYZ+Fp5phkVpAkd6E5W+NurTCeSP89wv2f8FrxfN7gKO3BzAj5n6oDuvroX0tjloYLHR7WGm2Op8QfThrS3/cuXPncfv27ZOxWIlj7pM2btx43Cxvy5Yt93F+fX7z5s07GJ084fwygAe5ubnNJh77Y3a+TaNGjZYitMfPXrB169ZrWZUhpXrYpEmTzxHhmUQOabzZrhu6z2a0sekkhU2L0c2A6+XltQ4aWh2W1sGwQt5ZL0Y3c/asLEaXi8IdQQe44m8f+VKtYgE1qCrWyOYTnLo6+PD7q6aq5OS5ageDlukATwIQr9zu722ZIBgq+B0P06ETBqsEGub3MB0Y1E0lcoyYZ+j6d7YAvROsvd6dUQHOZzWxa6MygM0dP2DlVJWS8pn6evsXKhUWWYPdYtW83nkxJY3JjSkAT1sMk01gyblukQ0aNEhYsmTJaZ4h41k1uYpv//79t4hiHECYbiIc1AGIrIyLior6+tChQze4T3mkGzZsGFOZhHbt2m2h9Ovp6emXaUifjb7wELtWvDESRJGzuIWfw7F8rSh8v8mTJ+/mDbqgTYNQX6Y+M8jp2sIgNpYhH+cAlZmB0VDXM5wNIQcJOA878VT2KO/EQZtkCd5stwFJKsGai0o2Ewu9C8O0l0JHsvMUyFuHbt++/dTGbUByR0F+0AI3TKN6QOoirZjYjqMXsLshOuENkASAh/bDaqo+GCk6wRK2BA14D40fgvf6EJZwCIb8ZmJNcHE828mwZ64UQNwI1KYPnu2H83aoF9dlPCnVCQZv7DiLUxkm1v7qXRD1Ubf3cT0SK+rmCJmNSMh4gMEfz2gL8PfGO0UgX7SYAIkUDqI/Ro2aYtuTfP4YKNhsPHcWyoehjTujPdviPQaiDbMq0wWWXrfVSNQzCr8jhEJVQJvne60NmGvWrHmAEEckXlqvKHoLvwyMQBoWFhidMxs3YCpBOwrC03wD4KmK/3qFfV6xraQA7ueul+QBMJ5il0crWO76WIdRFZZGfwXIB0D2FTz2HXSq3v5j3KGcXyxkL4nRqyEsrTc6pyM6mOnHcDcXNVPP8vF/dHZLWHO9SLw8/Agdv9bKOAiKHwjL1QdOrCcsdm28W13UXc889jUosb9Q5OZil4Xek2jt+QOFUuqy9TAKVcPo0wLva61MC7HvsB7q2QH16YN8nZFeQ1BEh9fe+s7Wd9OmTTd5Kphn5tgzDQoKWsa/c+fOPbxv376fXmPru3E/WSGAsjTE2bArVy7mkRshK4NG1IBUB1h1eK0UOkkvQK8uFly/BStYB2B0Mdl4adzbpeuqlzjWBpjadG+rAu/vUdenBatFHMb7MU39LNYxhGEmqQHi2kXFAvnSOdiAWRWAKy12PbiLGHgjOLSN8V+/Y23xjsXENh+z5zcRG18bIr2iWORfAv8r2lCmrNgVbqxnQyttb/93+uiIvdhpIPdO5TX5foJxC7qTYVdzCbG1pbDYU6WBUkI0ptlWl+x23UoFchKWq/mCCS9WrklhAL/hahkiB8BKVzVsbM33Clvfi4hvWBRC2RJi0X1Zw/uVMXnHvIKKGZ9fVnxuwEXsoCgk9r4VsqFMcbEH0KyeLugLY9vbvA3+3/25JzvDxzekmH2Uwvjxj/xWNhbmEx1kb9jDVkA0aEHxDQRbvndgBLDeC8cWx4ccv8iv5qidHPudGWpx4sLh4HTEUOtq2GWc04+O5M/Be0kpYPKthOyeb/zYiYNhZ7AtZfKa7CEskEW9cvStif+UD+3l5NNFdla+wmKfxRdZrH1S6VW+NGPcvu6K4a8N+O4QTFoMA//sgOG7AqxRfisjyqt+7slaG2TXJsqG59v6XFvK2NJXr/Rlk7/rJ07tXhH4r/uNLxnqc9JbfOCQdRA7MHTcuAJGI7013i6Hdcuujn/FRwn/6ue+rpF6pQ7J/bi07dZXR0D05soqcI7qiA2LLmJLvIP6z/uW2P+7jsn9rL/tAJYOpLP4LoLx80u5wLXx+B+cTUKEm3GYQAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMi0wNS0wMlQxOTo0Njo1MSswMTowMBx1tHgAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTItMDUtMDJUMTk6NDY6NTErMDE6MDBtKAzEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg==') no-repeat; - text-indent: -999999px; - position: absolute; - z-index:2; -} -.ie6 #site-logo { - background: url('/cobrands/fixmystreet/images/ie_logo.gif') 0 -5px no-repeat; -} -.ie7 #site-logo { - background: url('/cobrands/fixmystreet/images/sprite.png') -3px -3px no-repeat; -} - -// this is a skip to nav for mobile users only -#nav-link { - width: 50px; - height: 48px; - background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAwCAMAAABkKdmIAAAACW9GRnMAAAAFAAADlACdjNY6AAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAF5AAAQZgCwCYXlAAABEVBMVEUAAAAiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsJAAAAABPQAAAAAAlHgBnVAAAAACSdwAAAAAAAAAaFQAAAAAAAAAAAAAAAACRdgCqigAAAAAAAABHOgDCnwAAAACriwCAaAApIQDOqABIOwCgggBqVwB8ZQDVrgCwkADjuQCafgDftgDetQCqigDrwADHogDGoQDFoAD1yADzxgDyxQDwxAD/0AD///+ZbHkYAAAAWXRSTlMAAAECAwQFBgkLDA0OEBESExQVFxgeHyEkJSkqMTI2Oj0/Q0RHSEpOT1FSVVtmZmxsdX6Kj5ebnp+goaenqKmru7y9vsTY3uPk5OTl5+zs7e7x9PX3+Pr7/fI8qpUAAAABYktHRFoDu6WiAAABMklEQVRIx+3T2VLCMBSA4ZjU1hhpUKgWlaq0VSuutYg7IJuIogKKvv+LSM2AelNOuHCGGf77b7KcBKGwT2AzYej/CIYSPCBEhRKVCILVBJQkVCwIS0NJmglCYhkoycSIINyBEocPiAsl7ljkeypTMhHko9tpD+t0QavUSjcX+bDzy9vSPYj0zg523LDtvaNCD3aWh11ziXMeT64fP0OPX1xbmCVEXdyqwm/sNEWJMr96LXHJb4fLczR1IjWXx83kyv6r3CiLG05VdvpXd9IP5n36XyaStGCiNSS6XYaRsq0LgpnlNyGi6VsMC6IZXlAfLeqBZ2iCIELNbFBpvLQjempUgqxJxb76KdT0/Fw+spzvmVRB6McYlu24ETm2ZfwW/b1pTOeR6Uwj6E8YkxFhjMbuC8zPYpEN6mT7AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDEyLTA1LTAyVDE5OjQ2OjUxKzAxOjAwHHW0eAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxMi0wNS0wMlQxOTo0Njo1MSswMTowMG0oDMQAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAAElFTkSuQmCC') no-repeat; - display: block; - text-indent: -999999px; - position: absolute; - right:2em; - top:-2px; - &:hover { - top:2px; - } -} - - -#main-nav{ - ul{ - @include list-reset-soft; - li{ - a, span { - display: block; - padding: 0.5em 1em; - background:#f6f6f6; - color:#333; - font-size: 1.25em; - border-bottom: 0.25em solid #333; - } - a:hover, span.hover { - background: #333; - color:#fff; - text-decoration: none; - } - span { - background-color: #ccc; - } - } - &#mysoc-menu{ - li { - a { - color: $primary_text; - background: $primary; - &#mysoc-logo { - background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIkAAAAyCAMAAABf9whNAAAACW9GRnMAAADwAAAAJgAMZizzAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAF5AAAQZgCwCYXlAAAANlBMVEUAAAAiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiL///90WH2CAAAAEHRSTlMADx8vP09fb3+Pn6+/z9/v+t8hjgAAAAFiS0dEEeK1PboAAAGqSURBVFjD7ZbNjtwgEAY/oIE2YKj3f9ocPDOZ3eN6FCUKdWsJQ+H+saXNZrPZbDabzf/GovwdIhH8LUzHn/PqI32Jcw1v0fjidQf30EZPqmMURXeT5F5kbYwqSQbeWpAU6xg961pT+mgm+WR4Ke6SzG9JwQRWB6iaTClCzQBLknT0AibZAnCBSx2ALACGQ5JOznsmq1TA82LKIalC6Jwh5seaMGdUWKxiJQpclWVqLNlJsxThUIB6z8Qft3FQgEODrs4qUuj9qoljpAr2euKkmxVIjzrpTBUI90xMGgzJQGrMAEUGrGKQn6c7/HbngT1MMqRO1wdNDA6WpNgW5Ld38s1kuLt7fPbO5Lg7Z76ZaLJoV3WAa6wsxbmiyrMMruyMVxc3SaqvAv+YSQWS1Fs9oAi8jQKmsGB4zwJXgdO9VWnAkaUAHJ81CTAkLYAm5ZbB/QhSmm9d7Ff7Splr5jaI90zMgpQsScHsGmRFUsheH6O1jecR5m5BZlFSzF5NkpJ7lMJ85etDlPWjHdMJ6aMiFdYPdgzw6Q90Yvwo2+fM+3dps9lsNpvNP8gvi7UYry9B6TcAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTItMDUtMDJUMTk6NDY6NTErMDE6MDAcdbR4AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEyLTA1LTAyVDE5OjQ2OjUxKzAxOjAwbSgMxAAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII='); - background-repeat:no-repeat; - text-indent:-999999px; - } - } - } - } - } -} -.ie6 #main-nav ul#mysoc-menu li a#mysoc-logo { - background: url('/cobrands/fixmystreet/images/ie_mysoc_logo.gif') center no-repeat; -} -.ie7 #main-nav ul#mysoc-menu li a#mysoc-logo { - background: url('/cobrands/fixmystreet/images/sprite.png') -240px -38px no-repeat; -} - -//defines where the table caption is (login stuff on mob, nav menu on desktop) -.wrapper { - width:100%; - display:table; - caption-side:bottom; -} -// this is the user's logged in details or the login link etc -#user-meta { - p { - position: relative; - color: $primary_text; - background: $primary; - padding:1em 6em 1em 1em; - a { - position: absolute; - right:1em; - @include inline-block; - text-transform:uppercase; - font-size:0.75em; - background:#333; - padding:0.25em 0.75em; - color:#fff; - @include border-radius(0.25em); - } - } -} - - -// #key-tools is the list that's pulled out an stick to the bottom of the page of desktop, below is mostly just aesthetic -.shadow-wrap { - @extend .full-width; - ul#key-tools{ - @include list-reset-soft; - margin-bottom: 1em; - display: table; - width:100%; - li{ - display: table-cell; - vertical-align: bottom; - text-align: center; - border-right:0.25em solid #fff; - &:last-child { - border-right:none; - } - input[type=submit] { - width: 100%; - border: none; - } - a, input[type=submit] { - display: block; - background-color: #f5f5f5; - background-repeat: no-repeat; - color:#333; - padding:4em 2em 1em 2em; - text-transform:uppercase; - font: { - size:0.6875em; - family: Helmet, Freesans, sans-serif; - } - &:hover, &.hover { - text-decoration:none; - background-color:#333; - color:#fff; - } - &.abuse { - background-image:url('/cobrands/fixmystreet/images/sprite.png'); - background-position:center -2424px; - } - &.feed { - background-image:url('/cobrands/fixmystreet/images/sprite.png'); - background-position:center -2563px; - } - &.share { - background-image: url('/cobrands/fixmystreet/images/share.png'); - background-position: center 25%; - } - &.chevron { - background-image:url('/cobrands/fixmystreet/images/sprite.png'); - background-position:center -2716px; - } - &.hover { - background-image:url('/cobrands/fixmystreet/images/sprite.png'); - background-position:center -2064px; - } - } - } - } -} - -//because display:table doesn't work we float -.ie6, .ie7 { - .shadow-wrap { - ul#key-tools{ - background:#f5f5f5; - li{ - float:left; - a { - padding-left:1.5em; - padding-right:3em; - } - } - } - } -} -.ie6 .shadow-wrap ul#key-tools li a { - &.abuse { - background-image:url('/cobrands/fixmystreet/images/ie_key_tools_sprite.gif'); - background-position: right 0px; - } - &.feed { - background-image:url('/cobrands/fixmystreet/images/ie_key_tools_sprite.gif'); - background-position: right -58px; - } - &.chevron { - background-image:url('/cobrands/fixmystreet/images/ie_key_tools_sprite.gif'); - background-position: right -116px; - } - &:hover { - background-image:url('/cobrands/fixmystreet/images/ie_key_tools_sprite_dark.gif'); - } -} - -#report-updates-data img { - float: right; -} - -#report-share iframe { - vertical-align: top; -} - -//footer blocks -footer { - margin-top: 1em; -} - -#footer-mobileapps { - @extend .full-width; - padding: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; - } - } - } -} - -#footer-help { - ul { - @include list-reset-soft; - li { - border-bottom:1px solid #AFAFAF; - &:last-child { - border-bottom:none; - } - h4 { - margin:0.75em 0 0.25em 0; - } - p { - font-size:0.75em; - } - } - } -} - - - -/*BUTTONS*/ - -// Default style set for buttons, inputs and .btn class. Red and green class available. - -button, input[type=submit],.btn{ - @include button-reset; -} - -.green-btn, -button.green-btn, -input.green-btn{ - @include button-reset(#9FDE23, #7FB900, #5B9700, #fff, #9FDE23, #7FB900, #5B9700, #fff); -} - -.red-btn, -button.red-btn, -input.red-btn{ - @include button-reset(#FF0038, #BF002A, #80001C, #fff, #FF0038, #BF002A, #80001C, #fff); -} - -.final-submit, -input.final-submit { - margin:1em 0.5em; - float:right; -} - -.button-right, -.button-left, -a.button-right, -a.button-left { - @include inline-block; - cursor:pointer; - font-size: 1em; - line-height: 1; - margin:0; - border:1px solid #999; - color:#333; - background: #eee; - @include border-radius(4px); - &:hover{ - color:#fff; - background:#777; - text-decoration: none; - border:1px solid #666; - } -} -.button-right, -a.button-right, -:hover.button-right, -a:hover.button-right { - padding:1em 3em 1em 1em; - background-image: url('/cobrands/fixmystreet/images/sprite.png'); - background-repeat:no-repeat; - background-position:right -686px; -} - -.button-left, -a.button-left, -:hover.button-left, -a:hover.button-left { - padding:1em 1em 1em 3em; - background-image: url('/cobrands/fixmystreet/images/sprite.png'); - background-repeat:no-repeat; - background-position:-18px -802px; -} - -.big-green-banner { - position: relative; - z-index:1000; - top:-1.75em; - background: $contrast1; - color: #fff; - padding:1em; - text: { - transform:uppercase; - align:center; - } - font-size:0.875em; - &:before { - content: ""; - left:-0.5em; - top:0; - position: absolute; - width: 0; - height: 0; - border-left: 0.5em solid transparent; - border-bottom: 0.5em solid $contrast1_dark; - } -} - -.banner { - position: relative; - z-index:1100; - p { - position: absolute; - top:-1.95em; - right:0; - @include inline-block; - font-size:0.6875em;//11px - line-height:1em; - padding:0.5em 1em; - margin:0; - color:#1a1a1a; - background: #ccc; - text: { - transform:uppercase; - align:center; - } - &:before { - content: ""; - left:-0.5em; - top:0; - position: absolute; - width: 0; - height: 0; - border-left: 0.5em solid transparent; - border-bottom: 0.5em solid #888; - } - &#fixed { - color:#fff; - background: $contrast1; - &:before { - border-bottom: 0.5em solid $contrast1_dark; - } - } - } -} - -/*OTHER*/ - -.plain-list { - @include list-reset-soft; - li { - margin-bottom:1em; - } -} - -.issue-list{ - margin: 0 0 1em 0; - padding: 0; - border-bottom: 0.25em solid $primary; - li{ - list-style: none; - background: #f6f6f6; - margin: 0.25em 0 0 0; - padding: 0.5em 1em; - display:block; - .update-wrap { - display:table; - width:100%; - .update-text, - .update-img { - display:table-cell; - vertical-align:top; - p { - margin-bottom: 0.5em; - } - } - .update-img { - text-align:right; - img { - margin:-0.5em -1em 0 0.5em; - height:auto; - } - } - } - } -} -//display:table fixes -.ie7, .ie7 { - .issue-list li .update-wrap { - .update-text { - float:left; - width:19em; - } - .update-img { - float:right; - } - } -} - -.issue-list-a { - margin: 0 0 1em 0; - padding: 0; - border-bottom: 0.25em solid $primary; - li { - list-style: none; - margin:0; - padding:0; - margin: 0.25em 0 0 0; - /* see note below about this */ - display:table; - background: #f6f6f6; - color:#222222; - width:100%; - &:hover { - text-decoration:none; - color:#222222; - background:#e6e6e6; - } - a { - color:#222222; - } - a:hover { - color:#222222; - background:#e6e6e6; - text-decoration: none; - } - .text { - /* this is and the display:table above are required otherwise - on iphone the rows end up being slightly wider than the screen */ - display: table-cell; - width: 100%; - vertical-align:top; - padding: 0px 0px 0px 1em; - .img { - width: 90px; - float: right; - height:auto; - } - h4 { - padding-right: 1em; - padding-top: 0.25em; - margin:0; - } - small { - color:#666; - display: block; - padding-right: 1em; - padding-top: 0.25em; - padding-bottom: 0.25em; - } - } - >p { - margin: 0.25em 0 0 0; - padding: 0.5em 1em; - background: #f6f6f6; - } - } -} -.list-a { - @extend .issue-list-a; - a { - padding:0.5em 1em; - font-weight:bold; - } -} -//display:table fixes -.ie6, .ie7 { - .issue-list-a { - overflow:hidden; - li { - clear:both; - width:100%; - display:block; - overflow:hidden; - .text { - float:left; - } - } - } -} -.ie6 .issue-list-a li a { - height:5.5em; - .img { - height:60px; - } -} - -// fancybox gallery images have a magnifying glass in the corner -.update-img { - a { - @include inline-block; - position:relative; - span { - position:absolute; - top:0; - right:0; - display:block; - width:20px; - height:20px; - opacity: 0.5; - background:#fff url(/cobrands/fixmystreet/images/sprite.png) -16px -1098px no-repeat; - //hide text - http://nicolasgallagher.com/another-css-image-replacement-technique/ - font: 0/0 a; - color: transparent; - } - &:hover span { - opacity: 1; - } - } -} -//bit of a hack - as we can't use em's, push the span out to the right -//by how much it would be if the user did not resize the text -.issue-list li .update-wrap .update-img a span { - right:-16px; - top:-8px; -} - -.problem-header { - margin-bottom:1em; -} -.problem-header .update-img { - float: right; - margin-left: 0.5em; - margin-bottom: 0.5em; -} - -// map stuff -#map_box{ - @extend .full-width; - background: #333; - height: 29em; - margin-bottom: 1em; - overflow: hidden; - position: relative; - #map { - width:100%; - height:100%; - } -} - -// OpenLayers fix for navigation being top right -// Left and right so that zoom can be left, pan right. -#fms_pan_zoom { - right: 0.5em !important; - top: 0.5em !important; - 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; -} - -// Openlayers map controls (overrides) -#fms_pan_zoom_panup, -#fms_pan_zoom_pandown, -#fms_pan_zoom_panleft, -#fms_pan_zoom_panright, -#fms_pan_zoom_zoomin, -#fms_pan_zoom_zoomout { - width:36px !important; - height:36px !important; - text-indent:-999999px; - opacity:0.85; - background:url('/cobrands/fixmystreet/images/sprite.png') no-repeat; - &:hover { - opacity:1; - } - filter: none !important; // Override OpenLayers PNG handling of the navigation -} - -#fms_pan_zoom_zoomworld { - display:none !important; - visibility:none !important; -} - -#fms_pan_zoom_panup { - background-position:-42px -222px; - right:30px !important; - left: auto !important; - top:0 !important; -} -#fms_pan_zoom_pandown { - background-position:-42px -282px; - right:30px !important; - left: auto !important; - top:72px !important; -} -#fms_pan_zoom_panleft { - background-position:-12px -252px; - width:48px !important; - right:48px !important; - left: auto !important; - top:36px !important; -} -#fms_pan_zoom_panright { - background-position:-60px -252px; - width:48px !important; - right:0 !important; - left: auto !important; - top:36px !important; -} -#fms_pan_zoom_zoomin { - background-position:-152px -223px; - height:44px !important; - left:0 !important; - top:0 !important; -} -#fms_pan_zoom_zoomout { - background-position:-152px -259px; - height:44px !important; - left:0 !important; - top:44px !important; -} - -//hide pins, show old reports etc -#sub_map_links { - position: absolute; - left: 0; - right:0; - bottom: 0; - z-index: 1100; - background:#333; - background:rgba(0, 0, 0, 0.7); - margin:0; - a { - @include inline-block; - font-size:0.6875em; - color:#fff; - padding:0.6em 3em 0.5em 1em; - background-repeat:no-repeat; - &#hide_pins_link { - background-image:url('/cobrands/fixmystreet/images/sprite.png'); - background-position: right -3976px; - } - &#all_pins_link { - background-image:url('/cobrands/fixmystreet/images/sprite.png'); - background-position: right -4022px; - } - &#map_permalink { - background-image:url('/cobrands/fixmystreet/images/sprite.png'); - background-position: right -4070px; - } - &.feed { - background-image:url('/cobrands/fixmystreet/images/sprite.png'); - background-position: right -3936px; - } - &:hover { - background-color:#000; - text-decoration:none; - } - } -} - -.ie6 #sub_map_links a { - &#hide_pins_link { - background-image:url('/cobrands/fixmystreet/images/ie_sub_map_links_sprite.gif'); - background-position: right 1px; - } - &#all_pins_link { - background-image:url('/cobrands/fixmystreet/images/ie_sub_map_links_sprite.gif'); - background-position: right -45px; - } - &#map_permalink { - background-image:url('/cobrands/fixmystreet/images/ie_sub_map_links_sprite.gif'); - background-position: right -93px; - } -} - -#mob_sub_map_links { - position: absolute; - z-index:1100; - bottom:0; - display:table; - margin:0; - width:100%; - background:rgba(0, 0, 0, 0.7); - a { - color:#fff; - width:50%; - padding:0.5em 0; - font-size:1em; - display:table-cell; - text-align:center; - &:hover { - background:#000; - text-decoration:none; - } - } - &.map_complete { - height: 100%; - background: none; - display: block; - border-bottom: 4px solid #fff; - a#try_again { - position: absolute; - display: block; - left: 25%; - bottom: 0; - margin-bottom: 6em; - background: rgba(0, 0, 0, 0.8); - @include border-radius(0.5em); - } - a#mob_ok { - position: absolute; - display: block; - right: 1em; - bottom: 0; - height: 20px; - padding-top: 30px; - width: 4em; - background: #fff url('/cobrands/fixmystreet/images/sprite.png') 12px -4140px no-repeat; - color: #000; - } - } -} - -.mobile-map-banner { - margin:0; - position: absolute; - top:0; - left:0; - right:0; - font-size:0.75em; - background:rgba(0, 0, 0, 0.7); - padding:0.75em 30px; - a { - @include button-reset(#333, #1a1a1a, #1a1a1a, #fff, #333, #1a1a1a, #1a1a1a, #fff); - font: { - weight:normal; - size:0.875em; - } - line-height:1; - padding:0.5em 0.75em; - position:absolute; - left:0.3em; - top:0.3em; - } -} - -.olControlAttribution { - bottom: 3.25em !important; - right: 0.25em !important; - left: 0.25em !important; - color: #222222; - font-size:0.75em !important; -} -.olControlAttribution img { - vertical-align: bottom; -} -.olControlPermalink { - bottom: 3px !important; - right: 3px; -} - -/* Drag is only present in noscript form. XXX Copy from core. */ -#drag { - input, img { - position: absolute; - border: none; - max-width: none; - } - input { - cursor: crosshair; - background-color: #cccccc; - } - img { - cursor: move; - } - img.pin { - z-index: 100; - background-color: inherit; - } - a img.pin { - cursor: pointer; - cursor: hand; - } -} - -// only on mobile, this is a sidebar on desk (#report-a-problem-sidebar) -a.rap-notes-trigger, -a:hover.rap-notes-trigger { - display:block; - width:90%; - padding-left:5%; - padding-right:5%; -} -.rap-notes { - margin:1em 0; -} - -//report a problem tabs -#problems-nav { - padding:0 1em; - overflow:hidden; - border-bottom:0.25em solid #333; - ul { - @include list-reset-soft; - display:table; - width:100%; - li { - display:table-cell; - border-right:0.25em solid #fff; - &:last-child { - border-right:none; - } - a { - display:block; - background:#e2e2e2; - color:#333; - padding:1em; - text: { - transform:uppercase; - align:center; - } - &:hover { - text-decoration:none; - background:#e6e6e6; - } - &.active { - background:#333; - color:#fff; - } - } - } - } -} - -//display:table fixes -.ie6, .ie7 { - #problems-nav { - clear:both; - margin:0; - padding:0; - ul li { - float:left; - } - } -} - - -table.nicetable { - width:100%; - margin-bottom:2em; - thead { - border-bottom:0.25em solid #ccc; - th { - font-size:0.75em; - } - } - tr { - &.a { - background:#f6f6f6; - } - &.gone { - color: #666666; - background-color: #cccccc; - } - &:hover { - background:#FFF5CC; - cursor:pointer; - } - td { - padding:0.25em; - a { - &:hover { - text-decoration:none; - } - } - } - } - .title { - text-align:left; - } - .data { - width:12%; - } -} - -.promo { - @extend .full-width; - color: $primary_text; - background: $primary; - padding:1em; - margin-bottom:1em; - overflow:hidden; - position: relative; - .close-promo { - position:absolute; - top:0.5em; - right:0.5em; - display:block; - width:16px; - height:16px; - text-indent:-999999px; - background:url(/cobrands/fixmystreet/images/sprite.png) -341px -263px no-repeat; - @include border-radius(4px); - &:hover { - background:#222 url(/cobrands/fixmystreet/images/sprite.png) -341px -223px no-repeat; - } - } -} - -.alert { - @extend .full-width; - background:#ff0000; - padding:1em; - margin-bottom:1em; - color:#fff; - a, a:hover { - color:$primary; - } -} - -.pagination { - text-align:center; - padding:0.5em 1em; - background:#eee; - position:relative; - .prev { - position:absolute; - left:0.5em; - } - .next { - position:absolute; - right:0.5em; - } - a { - @include inline-block; - color: $primary_text; - background: $primary; - padding-left:0.5em; - padding-right:0.5em; - color:#1a1a1a; - &:hover { - color:#1a1a1a; - text-decoration:none; - background:$primary/1.1; - } - } -} - -// this is a bit of a hack to get some differentation between desk and mobile -.desk-only { - display:none; -} - -// hide anything with this class if js is working -.js .hidden-js { - display: none; - visibility: hidden; -} - -// hide anything with this class if js is NOT working -.no-js .hidden-nojs { - display: none !important; - visibility: hidden; -} - - -/* Front page */ -#front-main { - text-align:center; - margin: 1em; - h2 { - font: { - style:italic; - family: Helmet, Freesans, sans-serif; - size:1.1875em; - } - color:#4d4d4d; - } - p { - margin: 0.5em 0 0; - } - #postcodeForm { - @extend .full-width; - padding:1em; - color: $primary_text; - background: $primary; - font-family: Helmet, Freesans, sans-serif; - label { - margin:0; - } - div { - display:table; - width:100%; - background:#fff; - border:1px solid $primary_b; - input#pc { - display:table-cell; - margin:0; - padding:0.25em 2%; - width:86%; - border:none; - background:none; - line-height:1.5em; - } - input#submit { - display:table-cell; - border:none; - padding:0; - margin:0; - width:14%; - height:35px; - background:#000; - color:#fff; - text-transform:uppercase; - @include border-radius(0); - &:hover { - background:#333; - } - } - } - } - a#geolocate_link { - @include inline-block; - vertical-align:top; - background:#1a1a1a; - color:#C8C8C8; - padding:0.5em; - font: { - family: Helmet, Freesans, sans-serif; - size:0.8125em; - } - @include border-radius(0 0 0.25em 0.25em); - &:hover { - text-decoration:none; - background:#2a2a2a; - } - } -} - -#front-howto { - #front_stats { - display:table; - width:100%; - color: $primary_text; - background: $primary; - font-family: Helmet, Freesans, sans-serif; - div { - display:table-cell; - text-align:center; - padding:1em; - line-height:1.25em; - font: { - size:0.8125em; - weight:bold; - } - big { - display:block; - margin-bottom:0.5em; - font-size:1.5385em; - } - } - } -} - -#front-recently { - .issue-list-a { - border-bottom:none; - } -} - -#alerts { - ul { - margin-bottom: 1em; - } - li { - padding: 0em; - margin-bottom: 0.5em; - } - .a { - background: #f6f6f6; - } - img[width="16"] { - float: right; - } -} - diff --git a/web/cobrands/fixmystreet/_colours.scss b/web/cobrands/fixmystreet/_colours.scss index 1a62d0282..29b18be1f 100644 --- a/web/cobrands/fixmystreet/_colours.scss +++ b/web/cobrands/fixmystreet/_colours.scss @@ -1,9 +1,21 @@ /* COLOURS */ $primary: #FFD000; -$primary_b: #F3B11E; +$primary_b: #F3B11E; // For the box around the front page postcode form only $primary_text: #222; -$contrast1: #00BD08; -$contrast1_dark: #4B8304; -$contrast2: #AA8D11; +// 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; + +// The "fixed" message on a report page +$col_fixed_label: #00BD08; +$col_fixed_label_dark: #4B8304; diff --git a/web/cobrands/fixmystreet/_layout.scss b/web/cobrands/fixmystreet/_layout.scss deleted file mode 100644 index 855e453b8..000000000 --- a/web/cobrands/fixmystreet/_layout.scss +++ /dev/null @@ -1,1069 +0,0 @@ -@import "compass"; -@import "_mixins"; - -//hacks for desk/mob only stuff -.desk-only { - display: block; -} -.mob-only { - display: none; -} - -body { - background: #1A1A1A url(/cobrands/fixmystreet/images/tile.jpg) 0 0 repeat; -} - -h1 { - margin-top: 0; -} - -// Page wrapper and header bits follow - -.container{ - margin: 0 auto; - padding: 0em; - width: 60em; - position: relative; - z-index:1; -} - -//z-index stack order gets reset to 0 in ie6/7 if you position anything, -//so to fix things we give it a high value (don't ask me why) -//see: http://brenelz.com/blog/squish-the-internet-explorer-z-index-bug/ -//this affects #site-logo -.ie6, .ie7 { - .container { - z-index:100; - } -} - -.wrapper{ - display: table; - caption-side: top; - width: 100%; - .table-cell { - display:table-cell; - } -} - -//pad the top of the wrapper to allow space for the menu to fit in -//when its positioned absolute below -.ie6, .ie7 { - .wrapper { - padding-top:4em; - } -} - -.nav-wrapper{ - display: table-caption; - .nav-wrapper-2{ - width: 100%; - min-height: 4em; - position: absolute; - border-top:4px solid #1a1a1a; - @include border-image(url(/cobrands/fixmystreet/images/tile-y-border.jpg) 4 0 0 0); - border-left:0; - border-right:0; - z-index:2; - } -} - -//position absolute the menu as ie doesn't like display:table -.ie6, .ie7 { - .nav-wrapper { - position: absolute; - top:0; - left:0; - width:100%; - .nav-wrapper-2 { - // position static as well so we fix lots of the z-index issues - position:static; - } - } -} - -// Resets a lot of the mobile styling. #site-header only used to help position logo on desktop -#site-header { - height: auto; - background: none; - border-top: 0px; - .container { - position: static;//reset position so the nav links become clickable - } -} -#site-logo { - top: 0.9em; - position: absolute; - z-index: 3; -} -.ie6, .ie7 { - #site-header { - height:3em; - .container { - //ie broken z-index bug: the site-logo won't appear if we don't do this - //doesn't seem to render the nav link unclickable like in other browsers - position: relative; - } - } - #site-logo { - position: absolute; - top:-3.25em; - } -} -#nav-link { - left:-999999px; -} -#main-nav{ - margin: 0 auto; - padding: 0em; - width: 60em; - ul{ - list-style: none; - padding: 0px; - margin: 0px; - float:right; - li{ - list-style: none; - display: inline; - margin: 0px; - padding: 0px; - float:left; - a, - span { - display: block; - color:#fff; - background: none; - border-bottom: none; - } - } - &#main-menu{ - li{ - a, span{ - padding: 0.75em; - font-size: 0.9em; - } - a:hover{ - background:#444; - @include background(linear-gradient(#000, #444 10%, #444 95%, #111)); - } - a.report-a-problem-btn { - color: $primary_text; - background: $primary; - padding:0.25em; - margin:0.5em; - color:#333; - @include border-radius(0.25em); - &:hover { - background:$primary/1.1; - } - } - span { - color:$primary; - } - } - } - &#mysoc-menu{ - padding: 0em 0.5em; - margin-left: 0.25em; - background:$primary url(/cobrands/fixmystreet/images/tile-y.jpg); - @include border-radius(0 0 0.375em 0.375em); - li{ - a{ - background:none; - color:#000; - text-transform: uppercase; - font-size: 0.6875em; - padding: 1.3em 0.7em 1em 0.7em; - &#mysoc-logo { - width:84px; - height:16px; - background-position: -20px -5px; - opacity: 0.8; - &:hover { - opacity: 1; - } - } - &:hover{ - color:#fff; - } - } - } - } - } -} -.ie7 #main-nav ul#mysoc-menu li a#mysoc-logo { - background-position: -260px -43px; -} - -// .content Is the white box - -// The narrow single column box -.content { - width: 27em; - margin-top: 3em; - margin-bottom: -1em; - margin-left: 0.5em; - padding: 1em 1em 10em; - background: #fff; - @include box-shadow(0px 0px 6px 1px #000); -} -.ie6, .ie7, .ie8 { - .content { - // 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; - } -} - -// map page - has fixed header and different styling -body.mappage { - .container { - width: auto; - } - .content { - float:left; - } - #main-nav ul#main-menu li a, - #main-nav ul#main-menu li span { - padding: 1.4em 0.75em 1.35em 0.75em; - } - #main-nav ul#main-menu li a.report-a-problem-btn { - padding: 0.5em; - margin:0.9em 0.25em 0.85em 0.25em; - } - .nav-wrapper{ - .nav-wrapper-2{ - position: fixed; - background: #222; - @include background(linear-gradient(#000, #222 10%, #222 90%, #000)); - } - } - #site-logo{ - position: fixed; - } -} -.ie6, .ie7 { - body.mappage { - // The below is *mandatory* to allow pins/zoom to be clickable in IE6/7. Do NOT remove. - .container { - float: left; - width: 27em; - margin-left: 0.7em; - } - .nav-wrapper{ - z-index:1; - .nav-wrapper-2 { - position:static; - } - } - #site-logo { - position: absolute; - } - } -} -//ie8 needs different stuff on .nav-wrapper so we -//have to define all the rest of it again as this resets -//the z-index base yet again :S -.ie8 { - body.mappage { - .nav-wrapper{ - position: relative; - z-index:0; - .nav-wrapper-2 { - position:static; - } - } - #site-logo { - position: absolute; - } - } -} - - - -// full width page -body.fullwidthpage { - .content { - width: 57em; - } - .intro { - width:40em; - } -} -// two thirds width page, also has option for a sidebar which can be sticky or not -body.twothirdswidthpage { - .content { - width:40em; - position: relative; - aside { - background:#eee; - position:absolute; - left:42em; - top:0; - z-index: -1; - width:13em; - padding:1em; - @include box-shadow(0px 0px 6px 1px #000); - h2 { - margin-top: 0; - } - img { - margin-bottom: 0.25em; - } - } - .sticky-sidebar { - position: absolute; - left:42em; - z-index: -1; - aside { - position: fixed; - top:7em; - left:auto; - } - } - } -} -//as ie6 doesn't like 'fixed' we will make it absolute again -.ie6 body.twothirdswidthpage .content .sticky-sidebar { - position:static; - aside { - position:absolute; - left:42em; - top:0; - } -} - - -// table wrapper - this enables anything to become a -// table with div children as table cells -.tablewrapper { - display:table; - width:100%; - padding:0 0 1em 0; - >div { - display:table-cell; - width:50%; - } - .full-width { - width:auto; - margin:0; - } -} - -//fix table to be a block for ie, float the children -.ie6, .ie7 { - .tablewrapper { - display:block; - div {//ie6 doesn't support '>div', so we'll go with the somewhat risker 'div' - width:48%; - display:block; - float: left; - border:none !important; - } - } -} - -// adds border to the top and goes full width -.bordered { - margin:0 -1em; - padding:0 1em; - width:auto; - border-top:0.25em solid $primary; -} - -//footer blocks -#footer-mobileapps { - border-right:1em solid #fff; - background:none; - padding:0; - @include box-shadow(inset rgba(0, 0, 0, 0) 0 0 0); - h2 { - 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(/cobrands/fixmystreet/images/sprite.png) -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; - } - } - } - } -} -.ie6, .ie7 { - #footer-mobileapps { - margin:0 0.5em; - 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 #fff; - ul { - display:table; - li { - display:table-cell; - border-bottom:none; - &:last-child { - border-left:1.25em solid #fff; - } - } - } -} -.ie6, .ie7 { - #footer-help { - margin-left:2%; - ul { - width:100%; - li { - float:left; - width:45% - } - } - } -} - - -// map box (fallback for non js really as most users -// will have fullscreen map) -#map_box{ - position: absolute; - height: 29em; - width: 29em; - right: 1em; - top: 3em; - 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; - right:30px; - top:130px !important; -} -#fms_pan_zoom_zoomout { - left:auto !important; - right:30px; - top:174px !important; -} - -.olControlAttribution { - bottom:0.5em !important; - left: auto !important; -} - -#sub_map_links { - left:auto; - bottom:auto; - bottom:2em; - #map_links_toggle { - display:block; - cursor: pointer; - position:absolute; - left:-1em; - width:1em; - height:100%; - background:#000 url(/cobrands/fixmystreet/images/sprite.png) right -4119px no-repeat; - @include border-radius(0.25em 0 0 0.25em); - &:hover { - left:-1.5em; - //use border so we don't have to redefine the background-position - border-right:0.5em solid #000; - } - &.closed { - background-position: right -4159px; - } - } -} -.ie6 #sub_map_links #map_links_toggle { - height:1.75em; - background:#000 url('images/ie_sub_map_links_sprite.gif') center -143px no-repeat; - &.closed { - background-position: center -183px; - } -} - -// log in bit, pokes above the .content div -#user-meta{ - display:block; - position: relative; - max-width: 57em; - margin:0 auto; - p { - @include inline-block; - position:absolute; - top:1em; - height:2em; - padding:0.25em 6em 0.5em 0.5em; - @include box-shadow(rgba(0, 0, 0, 0.6) 0px 0px 4px 1px); - a { - top:0.5em; - right:0.5em; - font-size:0.6875em; - padding:0.5em 0.75em; - line-height:1em; - &:hover { - text-decoration:none; - background:#444; - } - } - } -} -.ie6, .ie7 { - #user-meta { - z-index:1; - p { - top:-2em; - } - } -} -.ie6 #user-meta { - width:57em; //ie6 doesn't like max-width -} - - - -// Wraps around #key-tools box - sticks to the bottom of the screen on desktop -.shadow-wrap { - position:fixed; - z-index:10; //this is just to ensure anythign inside .content that has position set goes sites it - bottom: 0; - width: 29em; - overflow: hidden; - padding-top: 3em; - ul#key-tools { - border-top: 0.25em solid $primary; - margin: 0; - @include box-shadow(-0em 0px 1em 1em #fff); - li { - border:none; - a, input[type=submit] { - font-size: 0.75em; - color:#666; - padding: 0.5em 1.5em 0.5em 0; - text-transform:none; - &.abuse { - background-image:url(/cobrands/fixmystreet/images/sprite.png); - background-position:right -2935px; - } - &.feed { - background-image:url(/cobrands/fixmystreet/images/sprite.png); - background-position:right -3074px; - } - &.share { - min-width: 5em; - background-image: url(/cobrands/fixmystreet/images/share.png); - background-position: 90% 50%; - } - &.chevron { - background-image:url(/cobrands/fixmystreet/images/sprite.png); - background-position:right -3225px; - } - &.hover { - background-image:url(/cobrands/fixmystreet/images/sprite.png); - background-position:right -1876px; - } - } - } - &.singleton { - li { - text-align:right; - a { - padding-right:3em; - } - } - } - } - &.static { - padding:0 0 1em 0; - position: static; - } -} -// The padding is for the fading out when it's fixed positioned, which it isn't in IE6. -.ie6 .shadow-wrap { - padding-top: 0; -} - -// If JS is disabled, these are still CSS positioned, so don't want behind shining through. -#report-share, #report-updates-data { - background-color: #fff; -} -// Prevent gap in non-JS, and looks better with JS, due to some padding/margin effect. -#report-updates-data fieldset { - margin-bottom: 0; -} - -// pokes over the RHS with a little triangle -.big-green-banner { - top:auto; - right:-1.25em; - margin-left:-2em; - font-size:1.375em; - padding:1em 3em 1em 1em; - background: $contrast1 url(/cobrands/fixmystreet/images/sprite.png) right -2188px no-repeat; - &:before { - right:0; - left:auto; - top:-0.5em; - position: absolute; - border-top: 0.5em solid transparent; - border-left: 0.5em solid $contrast1_dark; - border-bottom:none; - } - span { - display: block; - font-size: 80%; - padding-top: 0.5em; - } -} -.ie6 .big-green-banner { - background: $contrast1 url(/cobrands/fixmystreet/images/ie_green_chevron.gif) right center no-repeat; -} - -.banner { - // state banners - p { - top:-2.25em; - padding:1em; - &:before { - left:-0.75em; - border-left: 0.75em solid transparent; - border-bottom: 0.75em solid #888; - } - &#fixed { - padding-top:5em; - background-image:url(/cobrands/fixmystreet/images/sprite.png); - background-position:-324px -326px; - background-repeat:no-repeat; - &:before { - border-bottom: 0.75em solid $contrast1_dark; - } - } - } -} -.ie6 .banner p { - top:-1.5em; - &#fixed { - background-image:url(/cobrands/fixmystreet/images/ie_fixed.gif); - background-position:center 0.75em; - } -} - - -// for pulling elements fullwidth regardless -// of .contents' padding -.full-width{ - margin: 0 0 0em -1em; - width: 29em; -} - -/*FORMS*/ -input[type=text], -input[type=password], -input[type=email], -textarea{ - max-width: 25em; -} - -/* form errors */ -div.form-error, -p.form-error { - display:block; -} - -input.form-error, -textarea.form-error { - @include border-radius(0 0 0.25em 0.25em); -} - - -// 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; - padding:1em; - font-size:0.75em; - } - .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. - } -} - -.no-js .general-sidebar-notes, -.no-js #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; - } -} - -// 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; - padding:0.75em; - margin:0; - &.dark { - background:#333333; - color:#ffffff; - } - } -} - -/* Adjust the above so text flow can be different from display */ -#forgotten-pw { - position: relative; - left: 27em; - top: -7em; - margin-bottom: -7em; // So no gap in main flow -} - -// Frontpage - -body.frontpage { - .table-cell { - .content { - margin: 1em auto 0; - } - } - .nav-wrapper-2{ - height:6em; - } - #site-header{ - height:8em; - } - #site-logo{ - top:3em; - width: 300px; - height: 60px; - background: url('/cobrands/fixmystreet/images/sprite.png') -2px -108px no-repeat; - } - #user-meta { - z-index:10; - p { - top:-4em; - right:0; - color:$primary; - background:none; - @include box-shadow(rgba(0, 0, 0, 0) 0 0 0); - a { - background:#fff; - color:#1a1a1a; - &:hover { - background:#ddd; - } - } - } - } -} -//logo fix -.ie6, .ie7, .ie8 { - body.frontpage { - #site-logo { - position:relative; - width:60em; - margin:0 auto; - } - } -} -.ie6, .ie7 { - body.frontpage { - #site-header { - height:4em; - } - #site-logo { - top:-1em; - } - #user-meta p { - top:-2em; - } - } -} -.ie6 body.frontpage #site-logo { - background:url(/cobrands/fixmystreet/images/ie_front_logo.gif) 0 0 no-repeat; -} - -// big yellow bit full screen width -#front-main { - color: $primary_text; - background: $primary url(/cobrands/fixmystreet/images/tile-y.jpg); - margin: 0; - padding: 1em; - #front-main-container { - max-width: 57em; - margin:0 auto; - } - h2 { - font-style:normal; - margin:0; - color:#222; - } - #postcodeForm { - background:none; - overflow:hidden; - padding-bottom: 0; - margin-right:0.5em; - label { - margin:0.5em 0; - } - div { - display:block; - margin:0 auto; - width:20em; - overflow:hidden; - input#pc { - display:block; - float:left; - padding:0.25em 0.5em; - height:2em; - width:17em; - } - input#submit { - display:block; - float:right; - width:3em; - height:2.3em; - padding-top:0.2em; - } - } - } - a { - color: $primary_text; - text-decoration: underline; - &:hover { - text-decoration: none; - } - } - a#geolocate_link { - background:none; - color:#222; - text-decoration: none; - padding-bottom: 0; - &:hover { - text-decoration:underline; - background:none; - } - } -} -.ie7 #front-main { - #postcodeForm { - div { - input#pc { - height:1.5em; - width:16em; - } - } - } -} - -#front-howto { - border-right:1em solid #fff; - #front_stats { - background:none; - color: #222; - border-top:0.25em solid $primary; - padding-top:1em; - div { - big { - color:$primary; - font-size:3.2308em; - } - } - } -} -.ie6, .ie7 { - #front_stats { - div { - width:8em; - float:left; - } - } -} - -#front-recently { - border-left:1em solid #fff; -} - -#front-howto h2, -#front-recently h2 { - margin-top:0; -} - - -.ie6, .ie7 { - .tablewrapper { - #front-howto { - margin-right:2%; - } - #front-recently { - margin-left:2%; - } - } -} - - - - -/* MEDIA QUERIES */ -@media only screen and (min-width: 48em) and (max-width: 61em) { - .container { - width: 100%; - } - /*FORMS*/ - input[type=text], - input[type=password], - input[type=email], - textarea{ - width: 95%; - } - - // Remove central positioning of mainmenu and float right. - // Left padding is to ensure no overlap of the site-logo - // Background styling replicates header styling - - #main-nav{ - width: auto; - float:right; - padding-left: 180px; - } - .nav-wrapper { - // width:auto; - .nav-wrapper-2 { - // width:auto; - } - } - - //Main menu drops below logo and my-soc menu - #main-menu{ - margin-top: 3em; - } - //therefore header needs to open up - #site-header { - height:6em; - } - // Pull OpenLayers navigation down a bit more - #fms_pan_zoom { - 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; - width:auto; - } - - //put the RAP notes into the main copy area - // Note: Also used for the non-JS case. - #report-a-problem-sidebar, - .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; - } - } - - //Revert to mobile use of the .full-width class - .full-width{ - width: auto; - 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 { - .content { - width:30em; - .sticky-sidebar { - left:32em; - top:30em; - aside { - top:9em; - } - } - } - } -} diff --git a/web/cobrands/fixmystreet/base.scss b/web/cobrands/fixmystreet/base.scss index 21cc16cb4..044abed64 100644 --- a/web/cobrands/fixmystreet/base.scss +++ b/web/cobrands/fixmystreet/base.scss @@ -4,9 +4,9 @@ * layout for browsers that can't handle media queries. Baseline grid of 1.5em. */ -@import "_h5bp"; +@import "../sass/h5bp"; @import "_colours"; -@import "_mixins"; +@import "../sass/mixins"; @import "compass"; -@import "_base"; +@import "../sass/base"; 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 714699386..ef74ebff4 100644 --- a/web/cobrands/fixmystreet/fixmystreet.js +++ b/web/cobrands/fixmystreet/fixmystreet.js @@ -10,14 +10,14 @@ * elem2: target element * offset: this will be added (if present) to the final value, useful for height errors */ -function heightFix(elem1, elem2, offset){ +function heightFix(elem1, elem2, offset, force) { var h1 = $(elem1).height(), h2 = $(elem2).height(); - if(offset === undefined){ + if (offset === undefined) { offset = 0; } - if(h1 > h2){ - $(elem2).css({'min-height':h1+offset}); + if (h1 > h2 || force) { + $(elem2).css( { 'min-height': h1+offset } ); } } @@ -53,9 +53,10 @@ function tabs(elem, indirect) { $(function(){ var $html = $('html'); - var cobrand; - if (window.location.href.indexOf('bromley') != -1) { - cobrand = 'bromley'; + var cobrand = $('meta[name="cobrand"]').attr('content'); + var is_small_map = false; + if (cobrand === 'bromley') { + is_small_map = true; } // Deal with switching between mobile and desktop versions on resize @@ -88,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="/">Home</a> Place pin on map'); + .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); @@ -104,7 +107,7 @@ $(function(){ $html.removeClass('mobile'); position_map_box(); if (typeof fixmystreet !== 'undefined') { - if (cobrand == 'bromley') { + if (is_small_map) { //$('#bromley-footer').hide(); } else { fixmystreet.state_map = 'full'; @@ -112,19 +115,20 @@ $(function(){ } if (typeof fixmystreet !== 'undefined' && fixmystreet.page == 'around') { // Remove full-screen-ness - var banner_text; + var banner_text = translation_strings.report_problem_heading; if (cobrand == 'bromley') { - banner_text = 'Click map to report a problem<span>Yellow pins show existing reports</span>'; - } else { + banner_text += '<span>Yellow pins show existing reports</span>'; + } + if (! is_small_map && cobrand !== 'oxfordshire') { $('#site-header').show(); - banner_text = 'Click map to report a problem'; + 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; @@ -139,7 +143,7 @@ $(function(){ } //show/hide notes on mobile - $('.mobile #report-a-problem-sidebar').after('<a href="#" class="rap-notes-trigger button-right">How to send successful reports</a>').hide(); + $('.mobile #report-a-problem-sidebar').after('<a href="#" class="rap-notes-trigger button-right">' + translation_strings.how_to_send + '</a>').hide(); $('.rap-notes-trigger').click(function(e){ e.preventDefault(); //check if we've already moved the notes @@ -150,7 +154,7 @@ $(function(){ }else{ //if not, move them and show, hiding .content $('.content').after('<div class="content rap-notes"></div>').hide(); - $('#report-a-problem-sidebar').appendTo('.rap-notes').show().after('<a href="#" class="rap-notes-close button-left">Back</a>'); + $('#report-a-problem-sidebar').appendTo('.rap-notes').show().after('<a href="#" class="rap-notes-close button-left">' + translation_strings.back + '</a>'); } $('html, body').scrollTop($('#report-a-problem-sidebar').offset().top); location.hash = 'rap-notes'; @@ -370,7 +374,10 @@ $.fn.drawer = function(id, ajax) { }); //add permalink on desktop, force hide on mobile - $('#sub_map_links').append('<a href="#" id="map_permalink">Permalink</a>'); + if (cobrand != 'zurich') { + $('#sub_map_links').append('<a href="#" id="map_permalink">' + translation_strings.permalink + '</a>'); + } + if($('.mobile').length){ $('#map_permalink').hide(); $('#key-tools a.feed').appendTo('#sub_map_links'); @@ -433,11 +440,11 @@ $.fn.drawer = function(id, ajax) { */ if (!$('html.mobile').length) { if (!($('body').hasClass('frontpage'))){ - var offset = -176; + var offset = -18 * 16; if (cobrand == 'bromley') { offset = -110; } - heightFix(window, '.content', offset); + heightFix(window, '.content', offset, 1); // in case we have a map that isn't full screen map_fix(); } diff --git a/web/cobrands/fixmystreet/fms-og_image.png b/web/cobrands/fixmystreet/fms-og_image.png Binary files differnew file mode 100644 index 000000000..5bda935f8 --- /dev/null +++ b/web/cobrands/fixmystreet/fms-og_image.png diff --git a/web/cobrands/fixmystreet/images/google_play_logo.png b/web/cobrands/fixmystreet/images/google_play_logo.png Binary files differnew file mode 100644 index 000000000..9891cbbd3 --- /dev/null +++ b/web/cobrands/fixmystreet/images/google_play_logo.png diff --git a/web/cobrands/fixmystreet/images/itunes_store_logo.png b/web/cobrands/fixmystreet/images/itunes_store_logo.png Binary files differnew file mode 100644 index 000000000..b37f4c230 --- /dev/null +++ b/web/cobrands/fixmystreet/images/itunes_store_logo.png diff --git a/web/cobrands/fixmystreet/images/spinner-white.gif b/web/cobrands/fixmystreet/images/spinner-white.gif Binary files differnew file mode 100644 index 000000000..7db88b06b --- /dev/null +++ b/web/cobrands/fixmystreet/images/spinner-white.gif diff --git a/web/cobrands/fixmystreet/layout.scss b/web/cobrands/fixmystreet/layout.scss index ff7080c11..d7f4257c1 100644 --- a/web/cobrands/fixmystreet/layout.scss +++ b/web/cobrands/fixmystreet/layout.scss @@ -64,5 +64,33 @@ h3, h4 { } @import "_colours"; -@import "_layout"; +@import "../sass/layout"; +// Tiled background stripe, not plain colour +#front-main { + 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(images/tile-y.jpg); + } +} +.nav-wrapper { + .nav-wrapper-2 { + @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/fixmystreet/position_map.js b/web/cobrands/fixmystreet/position_map.js index 4a18d9f9a..71794e8d6 100644 --- a/web/cobrands/fixmystreet/position_map.js +++ b/web/cobrands/fixmystreet/position_map.js @@ -1,14 +1,14 @@ function position_map_box() { var $html = $('html'); if ($html.hasClass('ie6')) { - $('#map_box').prependTo('.wrapper').css({ + $('#map_box').prependTo('body').css({ zIndex: 0, position: 'absolute', top: 0, left: 0, right: 0, bottom: 0, width: '100%', height: $(window).height(), margin: 0 }); } else { - $('#map_box').prependTo('.wrapper').css({ + $('#map_box').prependTo('body').css({ zIndex: 0, position: 'fixed', top: 0, left: 0, right: 0, bottom: 0, width: '100%', height: '100%', 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 Binary files differnew file mode 100755 index 000000000..931c39316 --- /dev/null +++ b/web/cobrands/hart/facebook-logo.png diff --git a/web/cobrands/hart/favicon.ico b/web/cobrands/hart/favicon.ico Binary files differnew file mode 100644 index 000000000..a960bae0a --- /dev/null +++ b/web/cobrands/hart/favicon.ico diff --git a/web/cobrands/hart/favicon.png b/web/cobrands/hart/favicon.png Binary files differnew file mode 100644 index 000000000..0acd804e7 --- /dev/null +++ b/web/cobrands/hart/favicon.png diff --git a/web/cobrands/hart/fms-logo.png b/web/cobrands/hart/fms-logo.png Binary files differnew file mode 100644 index 000000000..23bea6b0f --- /dev/null +++ b/web/cobrands/hart/fms-logo.png diff --git a/web/cobrands/hart/gov-logo.png b/web/cobrands/hart/gov-logo.png Binary files differnew file mode 100755 index 000000000..d5fc93455 --- /dev/null +++ b/web/cobrands/hart/gov-logo.png diff --git a/web/cobrands/hart/hart-logo-inverse-small.gif b/web/cobrands/hart/hart-logo-inverse-small.gif Binary files differnew file mode 100644 index 000000000..899567e6d --- /dev/null +++ b/web/cobrands/hart/hart-logo-inverse-small.gif diff --git a/web/cobrands/hart/hart-logo-mobile.png b/web/cobrands/hart/hart-logo-mobile.png Binary files differnew file mode 100755 index 000000000..0c779121e --- /dev/null +++ b/web/cobrands/hart/hart-logo-mobile.png diff --git a/web/cobrands/hart/hart-logo.png b/web/cobrands/hart/hart-logo.png Binary files differnew file mode 100755 index 000000000..7dd453c3e --- /dev/null +++ b/web/cobrands/hart/hart-logo.png 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 Binary files differnew file mode 100755 index 000000000..a0a568b3d --- /dev/null +++ b/web/cobrands/hart/home_mobile.png 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 Binary files differnew file mode 100644 index 000000000..80c11c782 --- /dev/null +++ b/web/cobrands/hart/main-menu-hover-home-right.gif diff --git a/web/cobrands/hart/main-menu1.gif b/web/cobrands/hart/main-menu1.gif Binary files differnew file mode 100644 index 000000000..21ab45668 --- /dev/null +++ b/web/cobrands/hart/main-menu1.gif diff --git a/web/cobrands/hart/menu_mobile.png b/web/cobrands/hart/menu_mobile.png Binary files differnew file mode 100755 index 000000000..61c1c0cf8 --- /dev/null +++ b/web/cobrands/hart/menu_mobile.png 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 Binary files differnew file mode 100644 index 000000000..62e6285b7 --- /dev/null +++ b/web/cobrands/hart/tab-blue.png diff --git a/web/cobrands/hart/twitter-logo.png b/web/cobrands/hart/twitter-logo.png Binary files differnew file mode 100755 index 000000000..7e10506e2 --- /dev/null +++ b/web/cobrands/hart/twitter-logo.png diff --git a/web/cobrands/oxfordshire/_colours.scss b/web/cobrands/oxfordshire/_colours.scss new file mode 100644 index 000000000..900f96d3d --- /dev/null +++ b/web/cobrands/oxfordshire/_colours.scss @@ -0,0 +1,29 @@ +/* COLOURS */ + +$oxfordshire_dk_green: #114500; +$oxfordshire_lt_green: #339E00; + +$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; + +$col_fixed_label: $oxfordshire_lt_green; +$col_fixed_label_dark: $primary_text; + +// Oxfordshire have toasty orange buttons + +$oxfordshire_button_base: #F35A0E; +$oxfordshire_button_top: #EC6816; +$oxfordshire_button_bottom: #FE4602; +$oxfordshire_button_border: #CCC; diff --git a/web/cobrands/oxfordshire/base.scss b/web/cobrands/oxfordshire/base.scss new file mode 100644 index 000000000..cf20374da --- /dev/null +++ b/web/cobrands/oxfordshire/base.scss @@ -0,0 +1,51 @@ +@import "../sass/h5bp"; +@import "./_colours"; +@import "../sass/mixins"; +@import "compass"; + +@import "../sass/base"; + + +// Colour tab to match colour scheme +#nav-link { + width: 50px; + height: 48px; + background: url('/cobrands/oxfordshire/images/tab-green.png') 0 0 no-repeat; +} + +#site-header { + background: none; + background-color: $oxfordshire_dk_green; + height: 60px; +} + +#site-logo { + margin-top:4px; + background-image: url('/cobrands/oxfordshire/images/logo.jpg'); + background-repeat: no-repeat; + background-position: 0px 0px; + border: 4px solid $oxfordshire_dk_green; + width: 173px; + height: 38px; +} + +#main-nav ul#mysoc-menu li a#mysoc-logo { + background-image: none; + text-indent: 0; + img { + display: inline; + height: 20px; + width: 105px; + } +} + +.oxfordshire-preamble { + background: #E0E0E0; + margin: 0em auto 1em auto; + padding: 1em 1em 0.5em 1em; +} + +dd, p { + line-height: 1.4em; +} + diff --git a/web/cobrands/oxfordshire/config.rb b/web/cobrands/oxfordshire/config.rb new file mode 100644 index 000000000..471b4b008 --- /dev/null +++ b/web/cobrands/oxfordshire/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
\ No newline at end of file diff --git a/web/cobrands/oxfordshire/images/bg-y.jpg b/web/cobrands/oxfordshire/images/bg-y.jpg Binary files differnew file mode 100755 index 000000000..b623bc784 --- /dev/null +++ b/web/cobrands/oxfordshire/images/bg-y.jpg diff --git a/web/cobrands/oxfordshire/images/bg.jpg b/web/cobrands/oxfordshire/images/bg.jpg Binary files differnew file mode 100755 index 000000000..e670c0f7d --- /dev/null +++ b/web/cobrands/oxfordshire/images/bg.jpg diff --git a/web/cobrands/oxfordshire/images/divider1x32.png b/web/cobrands/oxfordshire/images/divider1x32.png Binary files differnew file mode 100644 index 000000000..fffea7e24 --- /dev/null +++ b/web/cobrands/oxfordshire/images/divider1x32.png diff --git a/web/cobrands/oxfordshire/images/dot6x6.jpg b/web/cobrands/oxfordshire/images/dot6x6.jpg Binary files differnew file mode 100755 index 000000000..73a9c72f4 --- /dev/null +++ b/web/cobrands/oxfordshire/images/dot6x6.jpg diff --git a/web/cobrands/oxfordshire/images/fms-logo-105x20.png b/web/cobrands/oxfordshire/images/fms-logo-105x20.png Binary files differnew file mode 100644 index 000000000..286f22ded --- /dev/null +++ b/web/cobrands/oxfordshire/images/fms-logo-105x20.png diff --git a/web/cobrands/oxfordshire/images/fms-logo-inverse.png b/web/cobrands/oxfordshire/images/fms-logo-inverse.png Binary files differnew file mode 100644 index 000000000..77417c3e9 --- /dev/null +++ b/web/cobrands/oxfordshire/images/fms-logo-inverse.png diff --git a/web/cobrands/oxfordshire/images/footer.jpg b/web/cobrands/oxfordshire/images/footer.jpg Binary files differnew file mode 100755 index 000000000..8bd0758eb --- /dev/null +++ b/web/cobrands/oxfordshire/images/footer.jpg diff --git a/web/cobrands/oxfordshire/images/header.jpg b/web/cobrands/oxfordshire/images/header.jpg Binary files differnew file mode 100755 index 000000000..f642adfc4 --- /dev/null +++ b/web/cobrands/oxfordshire/images/header.jpg diff --git a/web/cobrands/oxfordshire/images/logo.jpg b/web/cobrands/oxfordshire/images/logo.jpg Binary files differnew file mode 100755 index 000000000..9ab24d2c4 --- /dev/null +++ b/web/cobrands/oxfordshire/images/logo.jpg diff --git a/web/cobrands/oxfordshire/images/tab-green.png b/web/cobrands/oxfordshire/images/tab-green.png Binary files differnew file mode 100644 index 000000000..7837fed00 --- /dev/null +++ b/web/cobrands/oxfordshire/images/tab-green.png diff --git a/web/cobrands/oxfordshire/images/tabs-featured-on.png b/web/cobrands/oxfordshire/images/tabs-featured-on.png Binary files differnew file mode 100644 index 000000000..94fe089c6 --- /dev/null +++ b/web/cobrands/oxfordshire/images/tabs-featured-on.png diff --git a/web/cobrands/oxfordshire/images/tabs-featured.png b/web/cobrands/oxfordshire/images/tabs-featured.png Binary files differnew file mode 100644 index 000000000..99b823faf --- /dev/null +++ b/web/cobrands/oxfordshire/images/tabs-featured.png diff --git a/web/cobrands/oxfordshire/layout.scss b/web/cobrands/oxfordshire/layout.scss new file mode 100644 index 000000000..ff7f9b373 --- /dev/null +++ b/web/cobrands/oxfordshire/layout.scss @@ -0,0 +1,240 @@ +@import "_colours"; +@import "../sass/layout"; + +body, body a { + font-family:"Trebuchet MS",Arial, Helvetica, sans-serif; +} + +#front-main { + background-color: $primary; + background-image: none; + @include border-radius(1em 1em 0 0); + margin: 2em 1em 0; + padding-top: 1em; + h1 { + margin: 0 auto 0 auto; + } + h2 { + color: $primary_text; + } + a#geolocate_link { + color: $primary_text; + } +} + +// Currently hide the nav-wrapper, because it's in going into Oxfordshire's own nav +// likewise with user-meta +.nav-wrapper, #user-meta { + display: none; +} + +// hide the site-header, currently has council logo at top of page +#site-header { + display: none; +} + +// White background, so no shadow or margin needed. +.content { + margin: 0; + @include box-shadow(none); +} +.ie6, .ie7, .ie8 { + .content { + margin: 0; + border: none; + } +} + +// Fix location of aside sidebar +body.twothirdswidthpage { + .content { + aside { + @include box-shadow(none); + } + .sticky-sidebar { + aside { + position: fixed; + top: 10em; + li { // from occ website + padding-left: 19px; + font: 0.813em "Trebuchet MS"; + background: url("/cobrands/oxfordshire/images/dot6x6.jpg") no-repeat 0 5px; + } + } + } + } +} + +//------------------------------------------------- +// following declarations concern the map display: +//------------------------------------------------- +// So that map appears underneath the header +.wrapper { + position: relative; + .table-cell { + padding-left: 13px; // added 13px to match Oxfordshire's normal look + padding-right: 13px; + } +} +.ie6, .ie7 { + .wrapper { + padding-top: 1em; + } +} + +// 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 { + 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 +.container { width: auto; } +.full-width { width: 464px; } +.shadow-wrap { width: 464px; } + +#map_box { + width: 956px; + height: 600px; +} +.content { width: 432px; } + +body.fullwidthpage .content { width: auto; } +body.twothirdswidthpage .content { + width: 640px; + aside { + left: 672px; + width: 208px; + padding: 16px; + } + .sticky-sidebar { + left: 672px; + aside { + top:10em; + } + } +} + +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; + margin-left: 0; + } +} + +// As map can scroll and isn't at the top, give it an edge +#map_box { + border: solid 1px #999; + top: 1em; + right: 0; + left: 0; + margin: 0 1em; +} + +// Perhaps fix map location (should be in central?) +.ie6 #map_box, .ie7 #map_box { + right: -480px; +} + +// So as not to interfere with the Oxfordshire footer, make the fixed nav ("get updates" etc) static. +.shadow-wrap { + position: static; + padding-top: 0; + margin-bottom: 1em; + ul#key-tools { + border-top: none; + border-bottom: 1px solid $primary; + } +} + +#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: + +#front-main #postcodeForm div input#sub, +.green-btn, +button.green-btn, +input.green-btn{ + @include button-reset( + $oxfordshire_button_top, $oxfordshire_button_bottom, $oxfordshire_button_border, #fff, + $oxfordshire_button_top, $oxfordshire_button_bottom, $oxfordshire_button_border, #fff + ); + text-transform:capitalize; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + font-weight: normal; + cursor: pointer; +} + +.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/oxfordshire.scss b/web/cobrands/oxfordshire/oxfordshire.scss new file mode 100644 index 000000000..d6b31586c --- /dev/null +++ b/web/cobrands/oxfordshire/oxfordshire.scss @@ -0,0 +1,254 @@ +/* Parts of oxfordshire's main CSS needed for its header/footer and adjusted (see + * bottom) to not be affected by main FixMyStreet CSS. Not very sustainable; + * perhaps we should wrap all council CSS within a SCSS #council ID? Hmm. + */ + + @import "_colours"; + + +body { + font-family:"Trebuchet MS",Arial, Helvetica, sans-serif; + line-height:18px; + a {text-decoration:none; color:#0c62ba} + a { font-size: 1em; } // mySociety + a:hover {text-decoration:underline} + margin:0; + background:#E0E0E0 url("/cobrands/oxfordshire/images/bg.jpg") repeat-y top center; + + #oxford-wrapper { + background: url("/cobrands/oxfordshire/images/bg-y.jpg") repeat-y scroll 0 0 #FFFFFF; + clear: both; + display: block; + margin: 0 auto; + padding: 0 8px; + width: 990px; + } + +} + +#oxford-header { + padding:0 16px 7px 16px; + clear:both; + overflow:hidden; + position:relative; + width:958px; + + /* note================= */ + height: 133px; + height:auto !important; + min-height:133px; + /* note================= */ + + background: $oxfordshire_lt_green url("/cobrands/oxfordshire/images/header.jpg") no-repeat 0 0; + + a.logo:hover {cursor:pointer;cursor:hand} + a.logo {float:left; display:inline; margin:3px 0 6px 10px; position:relative; overflow:hidden} + a.logo span {display:block; position:absolute; top:0; left:0; z-index:10} + a.logo, a.logo span {width:173px; height:38px; background: url("/cobrands/oxfordshire/images/logo.jpg") no-repeat 0 0;} + + h1 { + float:left; padding:8px 0 0 10px; margin:0; font-size:1.25em; line-height:normal; + font-weight:bold; color:#ffffff; white-space:nowrap;font-family:"Trebuchet MS",Tahoma,Arial,sans-serif; + } + span.header { + float:left; padding:8px 0 0 10px; margin:0; font-size:1.25em; line-height:normal; font-weight:bold; + color:#ffffff; white-space:nowrap + } + a { + color:#ffffff; + } + #oxford-links { + padding: 10px 3px 0px 0px; float:right;color:#ffffff; + a { + font-size:0.75em; // mySociety putting this back (switched off in body) + margin: 0px 5px 0px 5px + } + } + .oxford-user { + float: right; + p { + padding: 0.25em; + margin: 0.5em 0; + a { + margin: 0 0.5em; + } + } + } +} + + + +#oxford-main-menu { + clear: both; + margin: 0; + padding: 0; + font-size: 1em; + position: relative; + ul { + margin: 0 0 0 330px; + position: relative; + li { + margin: 0; + list-style-type: none; + float:left; + width:126px; + text-align:center; + background: #e0e0e0; + padding: 8px 0; + margin: 0 0 0 2px; + } + } + // from occ.css (client site): #main .view-features-for-homepage ul.tabs + ul.tabs { + float:left; + position:relative; + padding:0; + margin:0.5em 0 0 0; + z-index:10; + width: 990px; + //width:635px; + min-height:32px; + overflow:hidden; + clear:both; + background: #939393 url("/cobrands/oxfordshire/images/tabs-featured.png") repeat 0 0; + li { + float:left; + padding:0 0 0px 1px; + margin:0; + font:0.813em/27px "Trebuchet MS"; + color:#ffffff; + height:32px; + background: #666 url("/cobrands/oxfordshire/images/divider1x32.png") no-repeat 0 0; + } + li.first {padding:0; background:none} + span, // mySociety + a { + display:block; + position:relative; + padding:8px 0 0 0; + font:bold 1em "Trebuchet MS"; + height:24px; + color:#ffffff; + text-align:center; + background: #939393 url("/cobrands/oxfordshire/images/tabs-featured.png") repeat-x 0 0; + white-space:nowrap; + } + a:hover, + a:focus { + background: none #EA6C18; + background:-moz-linear-gradient(100% 100% 90deg, #ff4401, #EA6C18); + background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#EA6C18), to(#ff4401)); + color: #ffffff; + } + li span, // mySociety + li.active a { + text-decoration:none; + background: #4c4c4c url("/cobrands/oxfordshire/images/tabs-featured-on.png") repeat-x 0 0; + } + li.active a:hover, + li.active a:focus {color: #ffffff;} + li.first a {} + li.last a {border-right:1px solid #666;} + a {padding:8px 0 0 0;} + } +} + +#oxford-footer { + float:left; + display:inline; + margin:0 -8px 0 -8px; + padding:10px 25px 30px 21px; + clear:both; + overflow:hidden; + width:960px; + background:#000000 url(/cobrands/oxfordshire/images/footer.jpg) no-repeat bottom left; + address {float:left; padding:11px 0 0 0; margin:0; color:#989898; font:0.813em arial} + a {font:1em arial; color:#ffffff; margin:0px 5px 0px 5px} + address a {font:1em arial; color:#ffffff; margin:0px 0px 0px 0px} + ul {float:right; padding:5px 0 0 55px; margin:0} + ul li {float:left; padding:0; font:0.813em/27px arial; color:#ffffff; overflow:hidden} + /* contact-the-team */ + li { + margin-left: 0.5em; + padding: 6px; + &.powered-by-fms { + // @include border-radius(6px); + min-width: 200px; + img { + display: inline; + height:20px; + width: 105px; + } + &:hover { + background-color:#2c2c2c; + } + a:hover { + text-decoration: none; + } + } + } +} + + /* --------------------------------------------------------------------------------- + oxfordshire nav menubar from e.g., + http://fisd.oxfordshire.gov.uk/kb5/oxfordshire/fsd/includes/css/wireframe/navbar.css + ---------------------------------------------------------------------------------*/ + +#navigation { + position: absolute; + left: 0; + top: 90px; + .menubar { + width: 972px; + padding: 0 0 0 18px; + border-top: 1px solid #004300; + font-size: 13px; /* explicit; it was implicit from OCC's styles */ + color: #999999; + overflow: visible; + /*width: @gridWidth; only needed for contained menu*/ + display: inline-block; + z-index: 100; + .menu-inner { + background-color: #004300; + background-repeat: repeat-x; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 -1px 0 rgba(0, 0, 0, 0.1) inset; + .menu { + left: 0; + margin: 0 10px 0 0; + padding: 0; + position: relative; + list-style: none outside none; + > li { + list-style: none outside none; + float: left; + > a, > span { + color: #ffffff; + float: none; + line-height: 19px; + padding: 10px 10px 11px; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + display: block; + text-decoration: none; + &:hover { + color: #FFFFFF; + } + } + } + } + } + } + .menubar-fixed-top { + left: 0; + margin-bottom: 0; + position: fixed; + right: 0; + z-index: 1000; + } +} +.oxford-left { + float: left !important; +} + diff --git a/web/cobrands/oxfordshire/position_map.js b/web/cobrands/oxfordshire/position_map.js new file mode 100644 index 000000000..9e299ea72 --- /dev/null +++ b/web/cobrands/oxfordshire/position_map.js @@ -0,0 +1,28 @@ +/** + * 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; + if ($html.hasClass('ie6') || $html.hasClass('ie7')) { + oxfordshire_right = '-480px'; + } else { + oxfordshire_right = '0em'; + } + + var map_box_width = "956px"; + var map_box_height = "600px"; + // Do the same as CSS (in case resized from mobile). + $('#map_box').prependTo('.wrapper').css({ + zIndex: 1, position: 'absolute', + top: '1em', left: '', right: oxfordshire_right, bottom: '', + width: map_box_width, height: map_box_height, + margin: "0 1em" + }); +} + +function map_fix() {} +var slide_wards_down = 1; diff --git a/web/cobrands/reading/css.scss b/web/cobrands/reading/css.scss new file mode 100644 index 000000000..96e0fcbba --- /dev/null +++ b/web/cobrands/reading/css.scss @@ -0,0 +1,93 @@ +// Generics + +$header_back: #ecf5fd; +$header_back_lighter: #ecf5fd; +$header_colour: #439DC2; +$header_darker: #ecf5fd; + +$map_width: 420px; + +@import "../../css/main-import"; + +p.thirdParty#reading-logo { + margin-top: 0px; + padding-bottom: 0px; +} + +div#header { + border-bottom: solid 1px #CCC; +} + +#header a:link, #header a:visited, div#header { + background-color: transparent; +} + +a { + color: #9C2161; +} + +body { + font-family: Helvetica, Arial, sans-serif; + font-size: 13.5px; + color: black; +} + +#navigation { + margin-top: 8px; + a { + font-weight: bold; + } +} + +#mysociety { + + #map_box { + width: $map_width + 2; + } + + #map { + width: $map_width; + height: $map_width; + } + + dd { + margin-left: 40px; + } + + div { + padding-top: 0.2em; + padding-bottom: 0.2em; + } + + h3 { + font-size: 1.17em; + font-weight: bold; + margin: 1em 0em 1em 0em; + } + + h2 { + font-weight: bold; + margin: 1em 0em 1em 0em; + } + + ul, ol { + padding-left: 2em; + } + + label { + width: 6em; + } + + .fieldset div.checkbox, #problem_submit { + padding-left: 6.5em; + } + + table { + border-collapse: separate; + border-spacing: 1px; + } + + td { + padding: 3px; + } +} diff --git a/web/cobrands/reading/css/css.scss b/web/cobrands/reading/css/css.scss deleted file mode 100644 index 81ab69fd2..000000000 --- a/web/cobrands/reading/css/css.scss +++ /dev/null @@ -1,93 +0,0 @@ -// Generics - -$header_back: #ecf5fd; -$header_back_lighter: #ecf5fd; -$header_colour: #439DC2; -$header_darker: #ecf5fd; - -$map_width: 420px; - -@import "../../../css/_main.scss"; - -p.thirdParty#reading-logo { - margin-top: 0px; - padding-bottom: 0px; -} - -div#header { - border-bottom: solid 1px #CCC; -} - -#header a:link, #header a:visited, div#header { - background-color: transparent; -} - -a { - color: #9C2161; -} - -body { - font-family: Helvetica, Arial, sans-serif; - font-size: 13.5px; - color: black; -} - -#navigation { - margin-top: 8px; - a { - font-weight: bold; - } -} - -#mysociety { - - #map_box { - width: $map_width + 2; - } - - #map { - width: $map_width; - height: $map_width; - } - - dd { - margin-left: 40px; - } - - div { - padding-top: 0.2em; - padding-bottom: 0.2em; - } - - h3 { - font-size: 1.17em; - font-weight: bold; - margin: 1em 0em 1em 0em; - } - - h2 { - font-weight: bold; - margin: 1em 0em 1em 0em; - } - - ul, ol { - padding-left: 2em; - } - - label { - width: 6em; - } - - .fieldset div.checkbox, #problem_submit { - padding-left: 6.5em; - } - - table { - border-collapse: separate; - border-spacing: 1px; - } - - td { - padding: 3px; - } -} diff --git a/web/cobrands/sass/_base.scss b/web/cobrands/sass/_base.scss new file mode 100644 index 000000000..669b7c385 --- /dev/null +++ b/web/cobrands/sass/_base.scss @@ -0,0 +1,1546 @@ +/* HEADINGS and TYPOGRAPHY */ + +$body-font: MuseoSans, Helmet, Freesans, sans-serif !default; +$meta-font: Helmet, Freesans, sans-serif !default; +$heading-font: 'Museo300-display', MuseoSans, Helmet, Freesans, sans-serif !default; +$image-sprite: '/cobrands/fixmystreet/images/sprite.png' !default; + +body { + font-family: $body-font; + margin:0; + font-size:1em; + line-height:1.5; + color: #222; + background-color: #fff; +} + + +p { + font-size: 1em; + font-weight: normal; + margin:0 0 1em 0; +} + +small{ + font-family: $meta-font; + font-style: italic; + font-size: 0.8125em; + line-height: 1.2307em; +} + +h1 { + font-family: $heading-font; + font-size: 2em; + line-height: 1em; + font-weight: normal; + margin-top: 0.5em; + margin-bottom: 0.5em; +} +h1#reports_heading span { + display: none; +} +h1#reports_heading a { + display: block; + font-size: 50%; +} + +h2 { + font-family: $heading-font; + font-size: 1.5em; /*24px*/ + line-height: 1.3333em; /*32px*/ + font-weight: normal; + margin-top: 1.333333333em; /*32px*/ + margin-bottom: 0.666666666em; /*16px*/ +} + +h3 { + font-size: 1.25em; + line-height: 1.20em; + margin-top: 1.2em; + margin-bottom: 0.8em; + font-weight: normal; +} + +h4 { + font-size: 1em; + font-weight: normal; + margin-bottom: 1em; +} + +// default list styles +ul, ol { + font-size: 1em; + margin-bottom: 2em; + margin-left: 2em; + padding:0; +} + +li{ + margin-bottom: 0.5em; +} + +ul li{ + list-style: square; +} + +ol li { + list-style:decimal; +} + +// lets you have a traditional ol but with nicely styled numbers +// for older browsers it just falls back to the normal ol +ol.big-numbers { + padding: 0; + margin: 0; + counter-reset: li; // reset counter to be 'li' instead of a number + > li { + position: relative; + list-style: none; + padding:0 0 0 2.5em; + margin-bottom:2em; + &:before { + content: counter(li); // set the content to be whatever the 'li' var is + counter-increment: li; // add to the counter var + position: absolute; + left: 0; + top:-0.2em; + color:#ccc; + line-height:1; + font: { + family: $meta-font; + weight:bold; + size:2.5em; + } + } + } +} + +dl { + margin: 0; + padding: 0; + dt { + font-size: 1em; + line-height: 1.5em; + font-weight: bold; + } + dd { + font-weight: 1em; + line-height: 1.5em; + margin:0 0 1em 0; + } +} + +blockquote { + p:before { + content: '“'; + } + p:after { + content: '”'; + } +} + +pre { + font-family: monospace; +} + +img { + //do this otherwise IE will just not display + //any img without a height defined + height:auto; + max-width: 100%; +} +// So that map popups display correctly +#popup img { + max-width: none; +} + +select, input, textarea { + font-size: 99%; + max-width: 95%; +} +.ie7 { + select, input, textarea { + max-width: none; + } +} + +// To deal with bug from drop-down being wider than holder +select { + width: 100%; +} + +// links +a, +a:visited { + text-decoration:none; + color:#0BA7D1; + &:hover, + &:active { + text-decoration:underline; + color:#0D7CCE; + } +} + +// custom type +.small-print { + @extend small; + margin-bottom: 1.2307em; + color:#666666; +} +.meta{ + color:#555555; + font-style: italic; + margin-bottom: 0px; +} +.meta-2{ + font-family: $meta-font; + color:#666666; + font-style: italic; + font-size: 0.75em; +} + +h4.static{ + font-family: $meta-font; + text-transform: uppercase; + font-size: 0.875em; + line-height: 1.71428em; + color:#666; + margin-top: 2em; +} +h4.static-with-rule{ + @extend.static; + background: #f6f6f6; + border-top: 0.25em solid $primary; + margin-bottom:0.25em; + padding: 0.5em 1em; +} + +/* FORMS */ + +// input placeholders, these need to be on separate lines as if the browser +// can't understand a selector it will invalidate the whole line. +::-webkit-input-placeholder { + color: #666666; + font: { + style:italic; + size:0.9375em; + } +} +:-moz-placeholder { + color:#666666; + font: { + style:italic; + size:0.9375em; + } +} +:-ms-placeholder { + color:#666666; + font: { + style:italic; + size:0.9375em; + } +} +//this only gets used when the browser doesn't support @placeholder +.placeholder { + color:#666666; + font: { + style:italic; + size:0.9375em; + } +} + +// wrap anything inside the form in a fieldset to give +// us the right spacing +fieldset { + margin: 1em; +} + +input[type=file] { + width: 100%; +} + +input[type=text], +input[type=password], +input[type=email], +textarea { + @include box-sizing(border-box); + width: 100%; + // adjust so the sides line up + padding: 0.5em; +} +.ie7 { + input[type=text], + input[type=password], + input[type=email], + textarea { + max-width: 95%; + } + // In order to work around the IE7 specific issue of inheriting left margins + // http://techblog.willshouse.com/2009/07/12/ie6ie7-form-element-margin-inheritance-bug/ + fieldset > input[type=text], + fieldset > input[type=password], + fieldset > input[type=email], + fieldset > textarea { + margin-left: -1em; + } +} + +textarea { + border: 0.125em solid #888888; + @include border-radius(0.25em); + display: block; + font-size: 1em; + line-height: 1.5em; + font-family: $meta-font; + min-height:8em; +} + +input[type=text], +input[type=password], +input[type=email] { + border: 0.125em solid #888888; + @include border-radius(0.25em); + display: block; + font-size: 1em; + line-height: 1em; +} + +label{ + display: block; + margin-top: 1.25em; + margin-bottom: 0.25em; + font-weight: bold; + &.inline{ + display: inline; + padding: 0 2em 0 1em; + font-weight: normal; + } +} + +// grey background, full width box +.form-box { + margin: 0 -2em 0.25em -2em; + background:#eeeeee; + padding:1em 2em 1em 2em; + >input[type=text] { + margin-bottom:1em; + } + .title { + font-size:1.25em; + margin:0.5em 0; + } + h5 { + margin:0 0 1em; + font: { + size:1.125em; + weight:normal; + } + strong { + font-size:2em; + margin-right:0.25em; + } + } +} +// IE6 doesn't extend the grey box back with the above negative margins, and +// the password box falls off screen for some reason. Just have boring margins, +// it looks okay. +.ie6 .form-box { + margin: 0 0 0.25em 0; + padding: 1em; +} +// Prevent grey displaying oddly by giving it a width, and stop odd left margin issue +.ie7 .form-box { + width: 100%; + > input[type=text] { + margin-left: 2em; + } +} + +.form-txt-submit-box { + min-height:3em; + input[type=password], + input[type=text], + input[type=email] { + width: 65%; + float:left; + } + input[type=submit] { + float:right; + width:28%; + margin-right:0.25em; + padding-top:0.7em; + padding-bottom:0.6em; + } +} + +.checkbox-group { + margin:1em 0; +} + + +// form errors +div.form-error, +p.form-error { + @include inline-block; + background:#ff0000; + color:#fff; + padding:0 0.5em; + @include border-radius(0.25em 0.25em 0 0); + a { + color: white; + text-decoration: underline; + } + a:hover { + text-decoration: none; + } +} + +input.form-error, +textarea.form-error { + border-color:#ff0000; + @include border-radius(0 0.25em 0.25em 0.25em); +} + +ul.error { + background:#ff0000; + color:#fff; + padding:0 0.5em; + @include border-radius(0.25em); +} + +// don't display valid error boxes as now the page jump +// won't be until the user submits, which is fine +div.label-valid, +p.label-valid { + display:none !important; + visibility: hidden; +} + + + +/*** LAYOUT ***/ + +// Padding creates page margins on mobile +.container{ + padding: 0 1em 1em; +} + +// Use full width to reverse .container margins +.full-width { + margin: 0 -1em; +} + +// #site-header creates grey bar in mobile +// .nav-wrapper-2 is used on desktop +#site-header{ + border-top: 0.25em solid $primary; + height: 3em; + @include background(linear-gradient(#000, #222 10%, #222 90%, #000)); + .container { + min-height:4em; + } +} +#site-logo{ + display: block; + width: 175px; + height: 40px; + top: 0.4em; + background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK8AAAAoCAYAAACIJ6oVAAAACW9GRnMAAAADAAAAAwB3k5ejAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAF5AAAQZgCwCYXlAAAABmJLR0QA/wD/AP+gvaeTAAAag0lEQVR42u1cB1RWx7YeBBW7YAOViL0bNSomdsWADVsQbEHFiAUUMYmiokEUWzQiiQ0VNSC2gFiJmthbiF1jwxaNGr0pKra8t1be3r/frLc99/zwo7nv3rzFWWuv/z9zZs6ZM/PtPd/eM3OUyj1yj9wj98g9co/cI/fIPXKP3MPaYQfJY6Po/LlH7vFvBa09ST6SIiROJM7ZiBPy5kPZXBDnHv8W0OYHGCuSeJB4kniReFsRL+TxQBkngDhPbpPmHv8XRx4AjoFXiaQFSUDXrl2XxMfHp585c+b2nyZHZmbmM742b968gx4eHvO5DElzkgokhXKtcO7xrz7sAbQKAF7AoEGDEk+ePPnznzk8tm3bdhUg7kFSE5QiJ1bY7jXkrxyB/pX5/4o2yD0EcKuQdHdzc5t14MCBm3++5rFy5cqjdL9AKMMbJAWzAbB0DLlODlmIPeSvdBrNnFNr97LmyL4OsOQ97bNoA/nuf1eA/yX1zCOA69uxY8eEhw8f/mEGxrt37z5OS0vLWLZs2QmS4yzr168/d/Xq1V+sAfjKlSu/kjLMpHv7AMD5TCprJ7h2XvDtAqgXS2EhOq0g8jgiv5Z8ooNtbRj5fAfcI5+VexkBlhf5XvXZRsXVz3fEOxrbQL+7I/LlNVFio2Lb/YeBNqt62uXkRvlAFboDuP9lQgOudenSZRmsqI+Js+bj6en58erVq/cT/31uLH/p0qUHAHALUAj7LJzEQuDcpUlcScqRlBfC52VJypCUElEOluIkRdG5OYl4GJ9fVNyrENKlpcsD0DgiulIczy+G/DmNtkjFLYj7lCRxsfL+Lnh3JwC6gEGBHYVS531FZfpXWVppoMzqabOy2aMBmjNHNVrcCxcuPPL29l4D0LYkqQzQlICUhJSB5W5ZtWrV4KNHj14xs8C4T010cB4rIbkycBbrkLyF6EVTIU1IGpHUJ6lFUg31qowoR3nUqbCNIJLALQqleQP3egPnRXHdwQAyZ4CpEp5fAfmLCMDb2QjcfKgzg9Id79YQ7/82yTv49UC71EWblxdALo46lUT/FLeifLZSjFelIXZZjFTaQBQX+HFGGxdA22YLYDvciBs+4NSpUy85ZhcvXnxUtmzZhXTNTzhdjrh5ATxMx3eLocNKIK9fbGzsXiOAU1JSTsKJqyDogx1AUQgdX33RRDX84EqV8G2cWrdzkfpqx0KVzML/dy5WX1H6+n3LVdKsUPUR5W/DFn3BeBV8ap2KS5hmUZBK6NBC2TSGUXHY0tc4s0EtObFWLW3R0HLvGkgvIqhBQbwrP6dB0gwVfixJLY+brIYivwuAmF1H2IkITxGU4/LvvPnmm73IZ1hAo9axe/fu3dBtyP8vX76cnpSUFPPWW291pbyNAXStwNXQBzWggC7oH0dh3ewNw7Y138HeRPKYgNnOCl+3N3B3R9TFBW3H9ayNOruhTQvZAmBtdVtOnz59i9HiAri+JFVFRxhjv+1I2nIHwmLqYZTL+JoBGFGI5riPvei8orB0jffHq9V/nlR/2iLV3dUQKtNrz1K1ls/TE9UKWGU3aLcjGi6PlUbOJxWHFUHfmxUEI051XC8M4DrBOjauV035PU9XmSJ/M1jEElByBxM+Z2diccsAhG0GDx4c/vTp0yfZOcTPnj17PGnSpEjE2LmeLVJTU2fytT/++OPR2rVrxwIc5dAWBcVQbSb5BdfXfkdBIVnxbAcDHSggRPP34qhL7QEDBrz3+PHju1xXUsY0KGEVWOKCot2scl0GYYDkqcx5GzZsuAoWVwL3pTAaNfCqmJiY/dOmTdtepUqVkRjGCgsrymX9jBSCoxiIA1cUw1l+vJgltuzdTI0a5quWaBD17ahS+3dWyQFd1PoAH7V2YFeV9Mte9RtfG9lbxVKZYUsi1PKbX6sf1sxU8zDEVhVDfgHhTDkYnKLCAFpF0BJf/dzf96t/QIGbAqzOqCdb4noknbZ+rjbr/Fti1Rb4BA0wnBcXzzZyZiNVYOvTysvLa/QTOnIS1RkzZswcKtufhQGt02/dunUOxqUOlLm0GKpL4rlaSor3K442KQUr6WrCsx0NQC8oRuNSUMYy4t6l0CZcl3a7du3aIN/Bx8cnCLSokhjlTWlXHjyo6cyZM1PlTRYvXnxWcFMJXEsYjfNLsGdkZPzm7u4+AR1WWHQM/6/JjpzRiYP19YCV1p1YHABi5ehHMlGDgv4vImFQstMXTTLtYqq6xtdG+CkeIUJJRpAMIunJIEAjVUCjlxDOV0HhlDmjgSvAWncK7afmScv+ebj6ktOhnOVxvyp6AufXfS+UiOXgCnUcINLWuhyeXUTwOQfh7GmOXVkrzqFDh743gvO77777nQzFtfnz51/ZvXv3P8Xdjx07dpHKch9EyHTqmwy0ZRu8n6YTtdA+daGEdZFWHe9WFXnrgXc3wm8dXC8HQBaDOKNdKkAJ6+J59fFfP/dNKFP/DRs27JJ1DQkJ+ZzxBT5fDm2W18z62kMTOh0+fPiatLrly5efi8Z3FhaKh/NuNCQdN/Dih+XKlfuCrnVFHkcxdORHx7XcsmXLd7Icz8RhKtlJOEBFAI5GAOAYAd5Z3DEkYSRs5UcBsKMgnBZM8gFGjHehHPXQcFVQP1eA1RXnVdBpDdDB/Yf0VMv5mZmH1XP+ZQtP6e8DrDVQhvN3mT/2Bb3ReS9sVDcofTjA7mHo7BIiMqCpRzncsyksdsiNGzfuybaaM2fObUrn9tpFso1kO1naMzIP9eF1Sud+WCTTf/jhBx7lPibpizq9O3r06BHdu3dn49SN/Y8uXboMjYyMjECaN/qlPeevXbt2/wkTJkSNHz9+6sSJE6d07dr1A1xvjHatiBGpGoDavH79+j2nTJkykekMCyxqJ1CbzlDu8BUrVqTLugYEBKxD27VHm5REW9mbOWqs7YPkDQhk12F1KyNPHoCqyZAhQ5YbeHEm8eI4QS+KoHNc8ELa4lRh6yvL8lQyGspZEPoCsEK1AL4PBHiZuzG37Q1g98RzuSEGX9umLl3dqi6nr1aH331bjYFT6H1vtzpJVOJAYrTFKjUBmGvDAniwk8V5yNFLpvP3GDxMS/iZqTHq1t1v1GP+/8lQtRwK2hSWgYH+/i+wultj1XX+/SFFMVj4+X1C+6pgvvf5FLUWHasjNU5oG1aeeuMDVeC5ZPXt9e2KrecUo1Ul0Nyi9H0kTEk2QFK++OKLi3rka9u27ba4uLhT1mjF7du3f2Jg7N279xudRqBMSEtLO2Ri/UIqVqw4jhTie7N7Xbt27RJhYSzA2Bwc35OBfvz48QNWYv0Z/v7+bIBC33777bnEdZ+Z5SO29DQiIiISylFeWN+XwMuJHrxmwVD5HdCSUoKjcWN7Hjly5KoB6GxlhsG6FMMQyB3Uvm7dur0BwqLoMJ+ff/75kVwLIcCrCb/kvdwofQV4QxgQJB0x7LSBBejC6XKY3xRjsU4DjenEoT/Eu/FzO++Gg8fCXBlKGx7zsdrPafR7Lay/Osv/iaKwUg+G5eBO8x3ZR8XytZ+/VY/oPJn/39+jHtD/8axo4YFqmr7/jkUW2uMhvGp3KJDn5c0qXbxnjNl0/DfffHM/Ojr6LLXrJsqTSLKahEOYrBjsJGY7jc90S57L/tDH8uXLvyfOvd4auCTIevfuPR2+S0CbNm0mZOdg8j3p3mup3Las8q2hg+7ZGlgqjpH/Jb5rAWTfvn1TDaQ5DtalqAAVA8ybAWcSt+0HE18WYPWdPXt2CvG2Y2JCgs1/B+OiHhPwaurgho7uJTo1FEO3D0DbCuIFCxw8O+wFgDZ8qr4BleCw1fBdi9VeTv9tv/oFvHhonw7UkZT29Kh60ruDmg6rzkNWRPwU9T3Ay4DdTdY3E+BfAgBzPYZf2vSCc48frA7R+TpR14mgMcNH9VHzOe3BQXUfitZU8MG27Jjy9SdH1dNypVUMpS0MDw8/klXn3r17N5PXjgwdOnQv5Wc+vpLF19f3W+K+L810Mg08ceLEPZ4JpTyLs7rvo0eP/qhVq9aeS5cuPZTp5PQ9Jyucyb8y/dy5czwicNtFG6kO5X1Gxu4R0ZYnxsmqUqVK7SJl/IfxfkxB2UBWqlTpI1CHqsBpfiN4LYAkLdhqANRwkHZHEX8tExwcHGpFm9nK9AJ/GkpcZ6fgWu2FV+vNDZgFePWzCoMHNpZeP1mnK0wN2ELe3qXOkLU7xUMy7sHgHTm4u1rFedfMVNypH4EDM4gnEhe1DOuJ09UBOp9B97nL53GTLVZ6NMDLYJ+wYor6jq9FjVAXmGdGh6gzfL47TrEjO4mt8wc91ApOozo8BHhWCfBGCD4+lhy6Xzn9owEW3t4FSsejhy+PEnxtzzJ1hs4/ZctLsiwxMTHDligDWc9MomSpXAZA3iyvp6en/waawbQn3lj+/Pnzj4lrniOjdYKu7xk1atRlQ2TomZOTE1M8ph03k5KSXrLWrVu33kUU4qBMO3v2LJfhUZkxcHP16tUvlSHacJrSj82aNeu+TO/Wrdt3lB6LfmiTleW1Bbw6YlCLONV4s8a7fPny79u3b88g/nRw+vTppw2TEZ5iFs57xIgRu3II3l7ZxXhxDw5lhQQCvEkzLPyQKUIQGiK8UW21+PER9Yyvpy1Qly38NNnSuJPxzv0wBH6Ynqgy+HqPdhagby7trLZoh6xBDZVAaZ+TNb/A58sjFY8wbJEXE2e9z2lvuKhpAC5TnbEzQ9VGTj+9wQLQQeDWrPBBGtidW6p4Op9KEgUQx/fo0eMQ04XsAMyRnPbt26dwGZL1higEh/o47LmAJM5YFqBlLr2RncHk5OS78vrmzZufR0VFPWGZOnXqk4SEhKfyOjlkNzZs2HDfUOYZ5X3M+Vm+/PLLpyYO6AkC70vWumfPnvvZsMCPaYoR+J84r1Xa4OHhEYuCxcRkgx87ZmZrHqwd48aNW4uhX8/RdyAivs8G8BYCBWkkLS/9j4Q11U6bDyy7J8Irwwf3UCuF5R2l4574P2POGHVU34/B2LCmZTIjHKDtBiUI5ogB5+n1rtoJbpm0eOIL7rv1c3WtbhW1Rd/DtaQFMBz2m8fOGqcHvWexgiOhOKPdXNT0J0fUU77WvIFlmGXqEhwx5IWy/UijADtqJOPwjmy5OeLD9UvhYXbAgAFn4uPjf6LDlIsePHjwBqxvgkwnHnwPwGWFiDUZOdkqL0UoMsFIO7I7ZsyY8Ss9O0cxaQIvW/H0Tz/99I5M79Wr1y5Qru5wrMsgKmNvk8M2cuTINPDI8rDAvjzTxjNutlbu9OnTd8ELK+LhFodt3bp1P2ThsJmBt6ch2sBg8IfT1RoTEc1wPuSDnjQsUt61s9QeWNNeiEow4KM8PdQmfT/msRiixiCfFxTiA81l+3VSKTr85FJCJT06pJ6T/EFD/U1QjpMY5hmQM86nqB85fUhPC6BDYGXZoR2/ef4Lpwy0hYE65ViSushp00daLN8ETTWaNWs2kxc4YaIoHg7aWljHHdWrVz9u5JIAIoN3hUw7deoU98VnHBdnhTApswD14RFoHoM9J0D8+OOPf2NqkZMykydPvkrP2j937txbMt3f3387RswOwF4JEfHKPlTGAINlY1D4M3B5jYOtFeOlke7u7hGYKXECeDnOGZiRkfG7lVCZGXg5IN5NgDcIw20bALsO4oz1YX0H6fgswDsM+bshijDl6lb1C19/SADk35VR6qgBvMxHA/VQjg7/BMP5fLrveWm5yeouxzUG3ifMW/nauEGWKEAwrD5b9dAmddQXfI2pCysD0w9xPgWdFtKiRYso2Z59+vTZzJQEws9bzzy8Y8eOF02A+E+8FuCdBwX7zKTMVCgajwafkOF5yRrSkK8pQCZ+Lf+jo6MfBgUFsRN6hSzvU0OZ56JM5rRp0zj/A+a4zKlpJGGHOi0mJua6LMdRCPSHF6IyzmbgtTpJwR4nhugxrq6uy2y1uBwGWbNmzV6yCkMBXBfEbS2TFLycMotJCiN4XTEJ4CPA2xtOTj1YdL1MsBomVAJouF4qwDsCjhxTgSCmEnzt+Br1j5qV1F62onze09NiOd8XtCFIPPMjPcTzcEY0I15f+2qOhb9OR2NbuO3qGS9CbKAtwXj+e1CeieeS1S2+Hh6ojiyJeAH01HmWGTkdnQg2zjoxn61fv34SLORCOGXbiGteN+aD5V1mQhsWA8ALTcA7DgrGijaGOO9LsWIC3iM4axxZuEWO2E9jx479NTw8nO/LjteJuLi4+4YyPKrdRpmbVOZHzk+08UcGLRRwQ2xsbIbB8qahPp0RuSopfC/bpod59oa0Ywd5opnWwMr8t1+/filhYWFzQkJCRoF/yo2XeoEOW8dAXg+cxfSwnQl4LVO1AkjdkF+vFtNz7+5Qlr5Dfckh+V/wcARhAIufl5oFa/msThW1lWOys0LVMU67tUPdAfgGIgw2WjxT0xRfXP+IhvjNidHqYNN6lqF4JIDPMlIriADve6A0DOLRYf1VKl/fu0zdvoPJD3YkoQD87KE8cWDmkPEGgKVLl57kqXuz6WFymq+Cty42hr849IaIRKIJeEdj5OFJnaCBAwcmGfOQI/5b48aNf/Lz87vLkQSdHhkZeZnK7CSak25WpnLlyjepzB1ZhrB2AkoWv3DhwvPGrWODBw9eWbNmzYGYCHIFHhyyXJjDIRd9kwcPHvy3fKAZcDt06JCITqklZo2KiEXFhbWzxyDPYmGO2bJIF1hYbwGkjrDG5eAE6kUgOjLhN9xPLcJs11FwZLaaI27vVD9x+vyxlijEIkQHFmlLuG62+panUJvVVzPIKiZx2u1dFqsRAP7VGjN+vrCiQbjWA9d55m3wp2HqK1j3C6P6Wix6Tyh1Z0xbR/OEhn6nQ6ssceRIMaXNEY8xHGbMCYdkgMI68+Kcz+7du2c6WrZq1Wq3CXiHgy55QVF5Zu26Lc/FGhgOE65OSEi4aksZcjq/Rz1jrM0IkqJuxCSVO/o4b46WRNoAXLlU0sGwLE4D1+LsGaMU7CQalkQqAd6CmCLmKdx2ArztkFZGLK4uhHOeqeqqJwREmbCNn6k0/n8pVV0Dt5wEbz6SeaiOAnRppZbqYZ+Fp5phkVpAkd6E5W+NurTCeSP89wv2f8FrxfN7gKO3BzAj5n6oDuvroX0tjloYLHR7WGm2Op8QfThrS3/cuXPncfv27ZOxWIlj7pM2btx43Cxvy5Yt93F+fX7z5s07GJ084fwygAe5ubnNJh77Y3a+TaNGjZYitMfPXrB169ZrWZUhpXrYpEmTzxHhmUQOabzZrhu6z2a0sekkhU2L0c2A6+XltQ4aWh2W1sGwQt5ZL0Y3c/asLEaXi8IdQQe44m8f+VKtYgE1qCrWyOYTnLo6+PD7q6aq5OS5ageDlukATwIQr9zu722ZIBgq+B0P06ETBqsEGub3MB0Y1E0lcoyYZ+j6d7YAvROsvd6dUQHOZzWxa6MygM0dP2DlVJWS8pn6evsXKhUWWYPdYtW83nkxJY3JjSkAT1sMk01gyblukQ0aNEhYsmTJaZ4h41k1uYpv//79t4hiHECYbiIc1AGIrIyLior6+tChQze4T3mkGzZsGFOZhHbt2m2h9Ovp6emXaUifjb7wELtWvDESRJGzuIWfw7F8rSh8v8mTJ+/mDbqgTYNQX6Y+M8jp2sIgNpYhH+cAlZmB0VDXM5wNIQcJOA878VT2KO/EQZtkCd5stwFJKsGai0o2Ewu9C8O0l0JHsvMUyFuHbt++/dTGbUByR0F+0AI3TKN6QOoirZjYjqMXsLshOuENkASAh/bDaqo+GCk6wRK2BA14D40fgvf6EJZwCIb8ZmJNcHE828mwZ64UQNwI1KYPnu2H83aoF9dlPCnVCQZv7DiLUxkm1v7qXRD1Ubf3cT0SK+rmCJmNSMh4gMEfz2gL8PfGO0UgX7SYAIkUDqI/Ro2aYtuTfP4YKNhsPHcWyoehjTujPdviPQaiDbMq0wWWXrfVSNQzCr8jhEJVQJvne60NmGvWrHmAEEckXlqvKHoLvwyMQBoWFhidMxs3YCpBOwrC03wD4KmK/3qFfV6xraQA7ueul+QBMJ5il0crWO76WIdRFZZGfwXIB0D2FTz2HXSq3v5j3KGcXyxkL4nRqyEsrTc6pyM6mOnHcDcXNVPP8vF/dHZLWHO9SLw8/Agdv9bKOAiKHwjL1QdOrCcsdm28W13UXc889jUosb9Q5OZil4Xek2jt+QOFUuqy9TAKVcPo0wLva61MC7HvsB7q2QH16YN8nZFeQ1BEh9fe+s7Wd9OmTTd5Kphn5tgzDQoKWsa/c+fOPbxv376fXmPru3E/WSGAsjTE2bArVy7mkRshK4NG1IBUB1h1eK0UOkkvQK8uFly/BStYB2B0Mdl4adzbpeuqlzjWBpjadG+rAu/vUdenBatFHMb7MU39LNYxhGEmqQHi2kXFAvnSOdiAWRWAKy12PbiLGHgjOLSN8V+/Y23xjsXENh+z5zcRG18bIr2iWORfAv8r2lCmrNgVbqxnQyttb/93+uiIvdhpIPdO5TX5foJxC7qTYVdzCbG1pbDYU6WBUkI0ptlWl+x23UoFchKWq/mCCS9WrklhAL/hahkiB8BKVzVsbM33Clvfi4hvWBRC2RJi0X1Zw/uVMXnHvIKKGZ9fVnxuwEXsoCgk9r4VsqFMcbEH0KyeLugLY9vbvA3+3/25JzvDxzekmH2Uwvjxj/xWNhbmEx1kb9jDVkA0aEHxDQRbvndgBLDeC8cWx4ccv8iv5qidHPudGWpx4sLh4HTEUOtq2GWc04+O5M/Be0kpYPKthOyeb/zYiYNhZ7AtZfKa7CEskEW9cvStif+UD+3l5NNFdla+wmKfxRdZrH1S6VW+NGPcvu6K4a8N+O4QTFoMA//sgOG7AqxRfisjyqt+7slaG2TXJsqG59v6XFvK2NJXr/Rlk7/rJ07tXhH4r/uNLxnqc9JbfOCQdRA7MHTcuAJGI7013i6Hdcuujn/FRwn/6ue+rpF6pQ7J/bi07dZXR0D05soqcI7qiA2LLmJLvIP6z/uW2P+7jsn9rL/tAJYOpLP4LoLx80u5wLXx+B+cTUKEm3GYQAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMi0wNS0wMlQxOTo0Njo1MSswMTowMBx1tHgAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTItMDUtMDJUMTk6NDY6NTErMDE6MDBtKAzEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg==') no-repeat; + text-indent: -999999px; + position: absolute; + z-index:2; +} +.ie6 #site-logo { + background: url('/cobrands/fixmystreet/images/ie_logo.gif') 0 -5px no-repeat; +} +.ie7 #site-logo { + background: url($image-sprite) -3px -3px no-repeat; +} + +// this is a skip to nav for mobile users only +#nav-link { + width: 50px; + height: 48px; + background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAwCAMAAABkKdmIAAAACW9GRnMAAAAFAAADlACdjNY6AAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAF5AAAQZgCwCYXlAAABEVBMVEUAAAAiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsJAAAAABPQAAAAAAlHgBnVAAAAACSdwAAAAAAAAAaFQAAAAAAAAAAAAAAAACRdgCqigAAAAAAAABHOgDCnwAAAACriwCAaAApIQDOqABIOwCgggBqVwB8ZQDVrgCwkADjuQCafgDftgDetQCqigDrwADHogDGoQDFoAD1yADzxgDyxQDwxAD/0AD///+ZbHkYAAAAWXRSTlMAAAECAwQFBgkLDA0OEBESExQVFxgeHyEkJSkqMTI2Oj0/Q0RHSEpOT1FSVVtmZmxsdX6Kj5ebnp+goaenqKmru7y9vsTY3uPk5OTl5+zs7e7x9PX3+Pr7/fI8qpUAAAABYktHRFoDu6WiAAABMklEQVRIx+3T2VLCMBSA4ZjU1hhpUKgWlaq0VSuutYg7IJuIogKKvv+LSM2AelNOuHCGGf77b7KcBKGwT2AzYej/CIYSPCBEhRKVCILVBJQkVCwIS0NJmglCYhkoycSIINyBEocPiAsl7ljkeypTMhHko9tpD+t0QavUSjcX+bDzy9vSPYj0zg523LDtvaNCD3aWh11ziXMeT64fP0OPX1xbmCVEXdyqwm/sNEWJMr96LXHJb4fLczR1IjWXx83kyv6r3CiLG05VdvpXd9IP5n36XyaStGCiNSS6XYaRsq0LgpnlNyGi6VsMC6IZXlAfLeqBZ2iCIELNbFBpvLQjempUgqxJxb76KdT0/Fw+spzvmVRB6McYlu24ETm2ZfwW/b1pTOeR6Uwj6E8YkxFhjMbuC8zPYpEN6mT7AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDEyLTA1LTAyVDE5OjQ2OjUxKzAxOjAwHHW0eAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxMi0wNS0wMlQxOTo0Njo1MSswMTowMG0oDMQAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAAElFTkSuQmCC') no-repeat; + display: block; + text-indent: -999999px; + position: absolute; + right:2em; + top:-2px; + &:hover { + top:2px; + } +} + + +#main-nav{ + ul{ + @include list-reset-soft; + li{ + a, span { + display: block; + padding: 0.5em 1em; + background:#f6f6f6; + color:#333; + font-size: 1.25em; + border-bottom: 0.25em solid #333; + } + a:hover, span.hover { + background: #333; + color:#fff; + text-decoration: none; + } + span { + background-color: #ccc; + } + } + &#mysoc-menu{ + li { + a { + color: $primary_text; + background: $primary; + &#mysoc-logo { + background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIkAAAAyCAMAAABf9whNAAAACW9GRnMAAADwAAAAJgAMZizzAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAF5AAAQZgCwCYXlAAAANlBMVEUAAAAiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiL///90WH2CAAAAEHRSTlMADx8vP09fb3+Pn6+/z9/v+t8hjgAAAAFiS0dEEeK1PboAAAGqSURBVFjD7ZbNjtwgEAY/oIE2YKj3f9ocPDOZ3eN6FCUKdWsJQ+H+saXNZrPZbDabzf/GovwdIhH8LUzHn/PqI32Jcw1v0fjidQf30EZPqmMURXeT5F5kbYwqSQbeWpAU6xg961pT+mgm+WR4Ke6SzG9JwQRWB6iaTClCzQBLknT0AibZAnCBSx2ALACGQ5JOznsmq1TA82LKIalC6Jwh5seaMGdUWKxiJQpclWVqLNlJsxThUIB6z8Qft3FQgEODrs4qUuj9qoljpAr2euKkmxVIjzrpTBUI90xMGgzJQGrMAEUGrGKQn6c7/HbngT1MMqRO1wdNDA6WpNgW5Ld38s1kuLt7fPbO5Lg7Z76ZaLJoV3WAa6wsxbmiyrMMruyMVxc3SaqvAv+YSQWS1Fs9oAi8jQKmsGB4zwJXgdO9VWnAkaUAHJ81CTAkLYAm5ZbB/QhSmm9d7Ff7Splr5jaI90zMgpQsScHsGmRFUsheH6O1jecR5m5BZlFSzF5NkpJ7lMJ85etDlPWjHdMJ6aMiFdYPdgzw6Q90Yvwo2+fM+3dps9lsNpvNP8gvi7UYry9B6TcAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTItMDUtMDJUMTk6NDY6NTErMDE6MDAcdbR4AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEyLTA1LTAyVDE5OjQ2OjUxKzAxOjAwbSgMxAAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII='); + background-repeat:no-repeat; + text-indent:-999999px; + } + } + } + } + } +} +.ie6 #main-nav ul#mysoc-menu li a#mysoc-logo { + background: url('/cobrands/fixmystreet/images/ie_mysoc_logo.gif') center no-repeat; +} +.ie7 #main-nav ul#mysoc-menu li a#mysoc-logo { + background: url($image-sprite) -240px -38px no-repeat; +} + +//defines where the table caption is (login stuff on mob, nav menu on desktop) +.wrapper { + width:100%; + display:table; + caption-side:bottom; +} +// this is the user's logged in details or the login link etc +#user-meta { + p { + position: relative; + color: $primary_text; + background: $primary; + padding:1em 6em 1em 1em; + a { + position: absolute; + right:1em; + @include inline-block; + text-transform:uppercase; + font-size:0.75em; + background:#333; + padding:0.25em 0.75em; + color:#fff; + @include border-radius(0.25em); + } + } +} + + +// #key-tools is the list that's pulled out an stick to the bottom of the page of desktop, below is mostly just aesthetic +.shadow-wrap { + @extend .full-width; + ul#key-tools{ + @include list-reset-soft; + margin-bottom: 1em; + display: table; + width:100%; + li{ + display: table-cell; + vertical-align: bottom; + text-align: center; + border-right:0.25em solid #fff; + &:last-child { + border-right:none; + } + input[type=submit] { + width: 100%; + border: none; + } + a, input[type=submit] { + display: block; + background-color: #f5f5f5; + background-repeat: no-repeat; + color:#333; + padding:4em 2em 1em 2em; + text-transform:uppercase; + font: { + size:0.6875em; + family: $meta-font; + } + &:hover, &.hover { + text-decoration:none; + background-color:#333; + color:#fff; + } + &.abuse { + background-image:url($image-sprite); + background-position:center -2424px; + } + &.feed { + background-image:url($image-sprite); + background-position:center -2563px; + } + &.share { + background-image: url('/cobrands/fixmystreet/images/share.png'); + background-position: center 25%; + } + &.chevron { + background-image:url($image-sprite); + background-position:center -2716px; + } + &.hover { + background-image:url($image-sprite); + background-position:center -2064px; + } + } + } + } +} + +//because display:table doesn't work we float +.ie6, .ie7 { + .shadow-wrap { + ul#key-tools{ + background:#f5f5f5; + li{ + float:left; + a { + padding-left:1.5em; + padding-right:3em; + } + } + } + } +} +.ie6 .shadow-wrap ul#key-tools li a { + &.abuse { + background-image:url('/cobrands/fixmystreet/images/ie_key_tools_sprite.gif'); + background-position: right 0px; + } + &.feed { + background-image:url('/cobrands/fixmystreet/images/ie_key_tools_sprite.gif'); + background-position: right -58px; + } + &.chevron { + background-image:url('/cobrands/fixmystreet/images/ie_key_tools_sprite.gif'); + background-position: right -116px; + } + &:hover { + background-image:url('/cobrands/fixmystreet/images/ie_key_tools_sprite_dark.gif'); + } +} + +#report-updates-data img { + float: right; +} + +#report-share iframe { + vertical-align: top; +} + +//footer blocks +footer { + margin-top: 1em; +} + +#footer-mobileapps { + @extend .full-width; + padding:1em 1em 0 1em; + h4 { + margin:0; + } + p { + font-size: 0.75em; + padding-bottom: 0; + border-bottom:1px solid #AFAFAF; + } +} + +#footer-help { + ul { + @include list-reset-soft; + li { + border-bottom:1px solid #AFAFAF; + &:last-child { + border-bottom:none; + } + h4 { + margin:0.75em 0 0.25em 0; + } + p { + font-size:0.75em; + margin-bottom: 0; + } + } + } +} + + + +/*BUTTONS*/ + +// Default style set for buttons, inputs and .btn class. Red and green class available. + +button, input[type=submit],.btn{ + @include button-reset; +} + +.green-btn, +button.green-btn, +input.green-btn{ + @include button-reset(#9FDE23, #7FB900, #5B9700, #fff, #9FDE23, #7FB900, #5B9700, #fff); +} + +.red-btn, +button.red-btn, +input.red-btn{ + @include button-reset(#FF0038, #BF002A, #80001C, #fff, #FF0038, #BF002A, #80001C, #fff); +} + +.final-submit, +input.final-submit { + margin:1em 0.5em; + float:right; +} + +.button-right, +.button-left, +a.button-right, +a.button-left { + @include inline-block; + cursor:pointer; + font-size: 1em; + line-height: 1; + margin:0; + border:1px solid #999; + color:#333; + background: #eee; + @include border-radius(4px); + &:hover{ + color:#fff; + background:#777; + text-decoration: none; + border:1px solid #666; + } +} +.button-right, +a.button-right, +:hover.button-right, +a:hover.button-right { + padding:1em 3em 1em 1em; + background-image: url($image-sprite); + background-repeat:no-repeat; + background-position:right -686px; +} + +.button-left, +a.button-left, +:hover.button-left, +a:hover.button-left { + padding:1em 1em 1em 3em; + background-image: url($image-sprite); + background-repeat:no-repeat; + background-position:-18px -802px; +} + +.big-green-banner { + position: relative; + z-index:1000; + top:-1.75em; + background: $col_click_map; + color: #fff; + padding:1em; + text: { + transform:uppercase; + align:center; + } + font-size:0.875em; + &:before { + content: ""; + left:-0.5em; + top:0; + position: absolute; + width: 0; + height: 0; + border-left: 0.5em solid transparent; + border-bottom: 0.5em solid $col_click_map_dark; + } +} + +.banner { + position: relative; + z-index:1100; + p { + position: absolute; + top:-1.95em; + right:0; + @include inline-block; + font-size:0.6875em;//11px + line-height:1em; + padding:0.5em 1em; + margin:0; + color:#1a1a1a; + background: #ccc; + text: { + transform:uppercase; + align:center; + } + &:before { + content: ""; + left:-0.5em; + top:0; + position: absolute; + width: 0; + height: 0; + border-left: 0.5em solid transparent; + border-bottom: 0.5em solid #888; + } + &#fixed { + color:#fff; + background: $col_fixed_label; + &:before { + border-bottom: 0.5em solid $col_fixed_label_dark; + } + } + } +} + +/*OTHER*/ + +.plain-list { + @include list-reset-soft; + li { + margin-bottom:1em; + } +} + +.issue-list{ + margin: 0 0 1em 0; + padding: 0; + border-bottom: 0.25em solid $primary; + li{ + list-style: none; + background: #f6f6f6; + margin: 0.25em 0 0 0; + padding: 0.5em 1em; + display:block; + .update-wrap { + display:table; + width:100%; + .update-text, + .update-img { + display:table-cell; + vertical-align:top; + p { + margin-bottom: 0.5em; + } + } + .update-img { + text-align:right; + img { + margin:-0.5em -1em 0 0.5em; + height:auto; + } + } + } + } +} +//display:table fixes +.ie7, .ie7 { + .issue-list li .update-wrap { + .update-text { + float:left; + width:19em; + } + .update-img { + float:right; + } + } +} + +.issue-list-a { + margin: 0 0 1em 0; + padding: 0; + border-bottom: 0.25em solid $primary; + li { + list-style: none; + margin:0; + padding:0; + margin: 0.25em 0 0 0; + /* see note below about this */ + display:table; + background: #f6f6f6; + color:#222222; + width:100%; + &:hover { + text-decoration:none; + color:#222222; + background:#e6e6e6; + } + a { + color:#222222; + } + a:hover { + color:#222222; + background:#e6e6e6; + text-decoration: none; + } + .text { + /* this is and the display:table above are required otherwise + on iphone the rows end up being slightly wider than the screen */ + display: table-cell; + width: 100%; + vertical-align:top; + padding: 0px 0px 0px 1em; + .img { + width: 90px; + float: right; + height:auto; + } + h4 { + padding-right: 1em; + padding-top: 0.25em; + margin:0; + } + small { + color:#666; + display: block; + padding-right: 1em; + padding-top: 0.25em; + padding-bottom: 0.25em; + } + } + >p { + margin: 0.25em 0 0 0; + padding: 0.5em 1em; + background: #f6f6f6; + } + } +} +.list-a { + @extend .issue-list-a; + a { + padding:0.5em 1em; + font-weight:bold; + } +} +//display:table fixes +.ie6, .ie7 { + .issue-list-a { + overflow:hidden; + li { + clear:both; + width:100%; + display:block; + overflow:hidden; + .text { + float:left; + } + } + } +} +.ie6 .issue-list-a li a { + height:5.5em; + .img { + height:60px; + } +} + +// fancybox gallery images have a magnifying glass in the corner +.update-img { + a { + @include inline-block; + position:relative; + span { + position:absolute; + top:0; + right:0; + display:block; + width:20px; + height:20px; + opacity: 0.5; + background:#fff url($image-sprite) -16px -1098px no-repeat; + //hide text - http://nicolasgallagher.com/another-css-image-replacement-technique/ + font: 0/0 a; + color: transparent; + } + &:hover span { + opacity: 1; + } + } +} +//bit of a hack - as we can't use em's, push the span out to the right +//by how much it would be if the user did not resize the text +.issue-list li .update-wrap .update-img a span { + right:-16px; + top:-8px; +} + +.problem-header { + margin-bottom:1em; +} +.problem-header .update-img { + float: right; + margin-left: 0.5em; + margin-bottom: 0.5em; +} + +// map stuff +#map_box{ + @extend .full-width; + background: #333; + height: 29em; + margin-bottom: 1em; + overflow: hidden; + position: relative; + #map { + width:100%; + height:100%; + } +} + +// OpenLayers fix for navigation being top right +// Left and right so that zoom can be left, pan right. +#fms_pan_zoom { + right: 0.5em !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. +.ie6 #fms_pan_zoom { + left: auto !important; +} + +// Openlayers map controls (overrides) +#fms_pan_zoom_panup, +#fms_pan_zoom_pandown, +#fms_pan_zoom_panleft, +#fms_pan_zoom_panright, +#fms_pan_zoom_zoomin, +#fms_pan_zoom_zoomout { + width:36px !important; + height:36px !important; + text-indent:-999999px; + opacity:0.85; + background:url($image-sprite) no-repeat; + &:hover { + opacity:1; + } + filter: none !important; // Override OpenLayers PNG handling of the navigation +} + +#fms_pan_zoom_zoomworld { + display:none !important; + visibility:none !important; +} + +#fms_pan_zoom_panup { + background-position:-42px -222px; + right:30px !important; + left: auto !important; + top:0 !important; +} +#fms_pan_zoom_pandown { + background-position:-42px -282px; + right:30px !important; + left: auto !important; + top:72px !important; +} +#fms_pan_zoom_panleft { + background-position:-12px -252px; + width:48px !important; + right:48px !important; + left: auto !important; + top:36px !important; +} +#fms_pan_zoom_panright { + background-position:-60px -252px; + width:48px !important; + right:0 !important; + left: auto !important; + top:36px !important; +} +#fms_pan_zoom_zoomin { + background-position:-152px -223px; + height:44px !important; + left:0 !important; + top:0 !important; +} +#fms_pan_zoom_zoomout { + background-position:-152px -259px; + height:44px !important; + left:0 !important; + top:44px !important; +} + +//hide pins, show old reports etc +#sub_map_links { + position: absolute; + left: 0; + right:0; + bottom: 0; + z-index: 1100; + background:#333; + background:rgba(0, 0, 0, 0.7); + margin:0; + a { + @include inline-block; + font-size:0.6875em; + color:#fff; + padding:0.6em 3em 0.5em 1em; + background-repeat:no-repeat; + &#hide_pins_link { + background-image:url($image-sprite); + background-position: right -3976px; + } + &#all_pins_link { + background-image:url($image-sprite); + background-position: right -4022px; + } + &#map_permalink { + background-image:url($image-sprite); + background-position: right -4070px; + } + &.feed { + background-image:url($image-sprite); + background-position: right -3936px; + } + &:hover { + background-color:#000; + text-decoration:none; + } + } +} + +.ie6 #sub_map_links a { + &#hide_pins_link { + background-image:url('/cobrands/fixmystreet/images/ie_sub_map_links_sprite.gif'); + background-position: right 1px; + } + &#all_pins_link { + background-image:url('/cobrands/fixmystreet/images/ie_sub_map_links_sprite.gif'); + background-position: right -45px; + } + &#map_permalink { + background-image:url('/cobrands/fixmystreet/images/ie_sub_map_links_sprite.gif'); + background-position: right -93px; + } +} + +#mob_sub_map_links { + position: absolute; + z-index:1100; + bottom:0; + display:table; + margin:0; + width:100%; + background:rgba(0, 0, 0, 0.7); + a { + color:#fff; + width:50%; + padding:0.5em 0; + font-size:1em; + display:table-cell; + text-align:center; + &:hover { + background:#000; + text-decoration:none; + } + } + &.map_complete { + height: 100%; + background: none; + display: block; + border-bottom: 4px solid #fff; + a#try_again { + position: absolute; + display: block; + left: 25%; + bottom: 0; + margin-bottom: 6em; + background: rgba(0, 0, 0, 0.8); + @include border-radius(0.5em); + } + a#mob_ok { + position: absolute; + display: block; + right: 1em; + bottom: 0; + height: 20px; + padding-top: 30px; + width: 4em; + background: #fff url($image-sprite) 12px -4140px no-repeat; + color: #000; + } + } +} + +.mobile-map-banner { + margin:0; + position: absolute; + top:0; + left:0; + right:0; + font-size:0.75em; + background:rgba(0, 0, 0, 0.7); + padding:0.75em 30px; + a { + @include button-reset(#333, #1a1a1a, #1a1a1a, #fff, #333, #1a1a1a, #1a1a1a, #fff); + font: { + weight:normal; + size:0.875em; + } + line-height:1; + padding:0.5em 0.75em; + position:absolute; + left:0.3em; + top:0.3em; + } +} + +.olControlAttribution { + bottom: 3.25em !important; + right: 0.25em !important; + left: 0.25em !important; + color: #222222; + font-size:0.75em !important; +} +.olControlAttribution img { + vertical-align: bottom; +} +.olControlPermalink { + bottom: 3px !important; + right: 3px; +} + +/* Drag is only present in noscript form. XXX Copy from core. */ +#drag { + input, img { + position: absolute; + border: none; + max-width: none; + } + input { + cursor: crosshair; + background-color: #cccccc; + } + img { + cursor: move; + } + img.pin { + z-index: 100; + background-color: inherit; + } + a img.pin { + cursor: pointer; + cursor: hand; + } +} + +// only on mobile, this is a sidebar on desk (#report-a-problem-sidebar) +a.rap-notes-trigger, +a:hover.rap-notes-trigger { + display:block; + width:90%; + padding-left:5%; + padding-right:5%; +} +.rap-notes { + margin:1em 0; +} + +//report a problem tabs +#problems-nav { + padding:0 1em; + overflow:hidden; + border-bottom:0.25em solid #333; + ul { + @include list-reset-soft; + display:table; + width:100%; + li { + display:table-cell; + border-right:0.25em solid #fff; + &:last-child { + border-right:none; + } + a { + display:block; + background:#e2e2e2; + color:#333; + padding:1em; + text: { + transform:uppercase; + align:center; + } + &:hover { + text-decoration:none; + background:#e6e6e6; + } + &.active { + background:#333; + color:#fff; + } + } + } + } +} + +//display:table fixes +.ie6, .ie7 { + #problems-nav { + clear:both; + margin:0; + padding:0; + ul li { + float:left; + } + } +} + + +table.nicetable { + width:100%; + margin-bottom:2em; + thead { + border-bottom:0.25em solid #ccc; + th { + font-size:0.75em; + } + } + tr { + &.a { + background:#f6f6f6; + } + &.gone { + color: #666666; + background-color: #cccccc; + } + &:hover { + background:#FFF5CC; + cursor:pointer; + } + td { + padding:0.25em; + a { + &:hover { + text-decoration:none; + } + } + } + } + .title { + text-align:left; + } + .data { + width:12%; + } +} + +.promo { + @extend .full-width; + color: $primary_text; + background: $primary; + padding:1em; + margin-bottom:1em; + overflow:hidden; + position: relative; + .close-promo { + position:absolute; + top:0.5em; + right:0.5em; + display:block; + width:16px; + height:16px; + text-indent:-999999px; + background:url($image-sprite) -341px -263px no-repeat; + @include border-radius(4px); + &:hover { + background:#222 url($image-sprite) -341px -223px no-repeat; + } + } +} + +.alert { + @extend .full-width; + background:#ff0000; + padding:1em; + margin-bottom:1em; + color:#fff; + a, a:hover { + color:$primary; + } +} + +.pagination { + text-align:center; + padding:0.5em 1em; + background:#eee; + position:relative; + .prev { + position:absolute; + left:0.5em; + } + .next { + position:absolute; + right:0.5em; + } + a { + @include inline-block; + color: $primary_text; + background: $primary; + padding-left:0.5em; + padding-right:0.5em; + &:hover { + text-decoration:none; + background:$primary/1.1; + } + } +} + +// this is a bit of a hack to get some differentation between desk and mobile +.desk-only { + display:none; +} + +// hide anything with this class if js is working +.js .hidden-js { + display: none; + visibility: hidden; +} + +// hide anything with this class if js is NOT working +.no-js .hidden-nojs { + display: none !important; + visibility: hidden; +} + + +/* Front page */ +#front-main { + text-align:center; + margin: 1em; + h2 { + font: { + style:italic; + family: $meta-font; + size:1.1875em; + } + color:#4d4d4d; + } + p { + margin: 0.5em 0 0; + } + #postcodeForm { + @extend .full-width; + padding:1em; + color: $primary_text; + background: $primary; + font-family: $meta-font; + label { + margin:0; + } + div { + display:table; + width:100%; + background:#fff; + border:1px solid $primary_b; + input#pc { + display:table-cell; + margin:0; + padding:0.25em 2%; + width:86%; + border:none; + background:none; + line-height:1.5em; + } + input#sub { + display:table-cell; + border:none; + padding:0; + margin:0; + width:14%; + height:35px; + background:#000; + color:#fff; + text-transform:uppercase; + @include border-radius(0); + &:hover { + background:#333; + } + } + } + } + a#geolocate_link { + @include inline-block; + vertical-align:top; + background:#1a1a1a; + color:#C8C8C8; + padding:0.5em; + font: { + family: $meta-font; + size:0.8125em; + } + @include border-radius(0 0 0.25em 0.25em); + &:hover { + text-decoration:none; + background:#2a2a2a; + } + } +} + +#front-howto { + #front_stats { + display:table; + width:100%; + color: $primary_text; + background: $primary; + font-family: $meta-font; + div { + display:table-cell; + text-align:center; + padding:1em; + line-height:1.25em; + font: { + size:0.8125em; + weight:bold; + } + big { + display:block; + margin-bottom:0.5em; + font-size:1.5385em; + } + } + } +} + +#front-recently { + .issue-list-a { + border-bottom:none; + } +} + +#alerts { + ul { + margin-bottom: 1em; + } + li { + padding: 0em; + margin-bottom: 0.5em; + } + .a { + background: #f6f6f6; + } + img[width="16"] { + float: right; + } +} + diff --git a/web/cobrands/fixmystreet/_h5bp.scss b/web/cobrands/sass/_h5bp.scss index f4078cca6..f4078cca6 100644 --- a/web/cobrands/fixmystreet/_h5bp.scss +++ b/web/cobrands/sass/_h5bp.scss diff --git a/web/cobrands/sass/_layout.scss b/web/cobrands/sass/_layout.scss new file mode 100644 index 000000000..781832609 --- /dev/null +++ b/web/cobrands/sass/_layout.scss @@ -0,0 +1,1173 @@ +@import "compass"; +@import "_mixins"; + +$image-sprite: '/cobrands/fixmystreet/images/sprite.png' !default; + +//hacks for desk/mob only stuff +.desk-only { + display: block; +} +.mob-only { + display: none; +} + +body { + color: $base_fg; + background: $base_bg; +} + +/* The OpenLayers popup sets a background image with a white background without setting the CSS colours correctly. */ +#popup { + color: #000; +} + +h1 { + margin-top: 0; +} + +// Page wrapper and header bits follow + +.container{ + margin: 0 auto; + padding: 0em; + width: 60em; + position: relative; +} + +//z-index stack order gets reset to 0 in ie6/7 if you position anything, +//so to fix things we give it a high value (don't ask me why) +//see: http://brenelz.com/blog/squish-the-internet-explorer-z-index-bug/ +//this affects #site-logo +.ie6, .ie7 { + .container { + z-index:100; + } +} + +.wrapper{ + display: table; + caption-side: top; + width: 100%; + .table-cell { + display:table-cell; + } +} + +//pad the top of the wrapper to allow space for the menu to fit in +//when its positioned absolute below +.ie6, .ie7 { + .wrapper { + padding-top:4em; + } +} + +.nav-wrapper { + display: table-caption; + .nav-wrapper-2 { + width: 100%; + min-height: 4em; + position: absolute; + border-top: 4px solid $primary; + border-left: 0; + border-right: 0; + z-index: 2; + } +} + +//position absolute the menu as ie doesn't like display:table +.ie6, .ie7 { + .nav-wrapper { + position: absolute; + top:0; + left:0; + width:100%; + .nav-wrapper-2 { + // position static as well so we fix lots of the z-index issues + position:static; + } + } +} + +// Resets a lot of the mobile styling. #site-header only used to help position logo on desktop +#site-header { + height: auto; + background: none; + border-top: 0px; + .container { + position: static;//reset position so the nav links become clickable + } +} +#site-logo { + top: 0.9em; + position: absolute; + z-index: 3; +} +.ie6, .ie7 { + #site-header { + height:3em; + .container { + //ie broken z-index bug: the site-logo won't appear if we don't do this + //doesn't seem to render the nav link unclickable like in other browsers + position: relative; + } + } + #site-logo { + position: absolute; + top:-3.25em; + } +} +#nav-link { + left:-999999px; +} +#main-nav{ + margin: 0 auto; + padding: 0em; + width: 60em; + ul{ + list-style: none; + padding: 0px; + margin: 0px; + float:right; + li{ + list-style: none; + display: inline; + margin: 0px; + padding: 0px; + float:left; + a, + span { + display: block; + color: $nav_fg; + background: none; + border-bottom: none; + } + } + &#main-menu{ + li{ + a, span{ + padding: 0.75em; + font-size: 0.9em; + } + a:hover{ + background: $nav_fg_hover; + } + a.report-a-problem-btn { + color: $primary_text; + background: $primary; + padding:0.25em; + margin:0.5em; + @include border-radius(0.25em); + &:hover { + background:$primary/1.1; + } + } + span { + color:$primary; + } + } + } + &#mysoc-menu{ + padding: 0em 0.5em; + margin-left: 0.25em; + background: $primary; + @include border-radius(0 0 0.375em 0.375em); + li{ + a{ + background:none; + color: $primary_text; + text-transform: uppercase; + font-size: 0.6875em; + padding: 1.3em 0.7em 1em 0.7em; + &#mysoc-logo { + width:84px; + height:16px; + background-position: -20px -5px; + opacity: 0.8; + &:hover { + opacity: 1; + } + } + &:hover{ + color:#fff; + } + } + } + } + } +} +.ie7 #main-nav ul#mysoc-menu li a#mysoc-logo { + background-position: -260px -43px; +} + +// .content Is the white box + +// The narrow single column box +.content { + width: 27em; + margin: 3em 0.5em -1em; + padding: 1em 1em 3em; + background: #fff; + color: #222; + @include box-shadow(0px 0px 6px 1px #000); +} +.ie6, .ie7, .ie8 { + .content { + // 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.5em; + } +} + +// map page - has fixed header and different styling +body.mappage { + .container { + width: auto; + } + .content { + float:left; + padding: 1em 1em 10em; + } + #main-nav ul#main-menu li a, + #main-nav ul#main-menu li span { + padding: 1.4em 0.75em 1.35em 0.75em; + } + #main-nav ul#main-menu li a.report-a-problem-btn { + padding: 0.5em; + margin:0.9em 0.25em 0.85em 0.25em; + } + .nav-wrapper{ + .nav-wrapper-2{ + position: fixed; + background: $map_nav_bg; + } + } + #site-logo{ + position: fixed; + } + #user-meta { + max-width: none; + } +} +.ie6, .ie7 { + body.mappage { + // The below is *mandatory* to allow pins/zoom to be clickable in IE6/7. Do NOT remove. + .container { + float: left; + width: 27em; + margin-left: 0.7em; + } + .nav-wrapper{ + z-index:1; + .nav-wrapper-2 { + position:static; + } + } + #site-logo { + position: absolute; + } + #user-meta { + margin-left: 2em; + } + } +} +//ie8 needs different stuff on .nav-wrapper so we +//have to define all the rest of it again as this resets +//the z-index base yet again :S +.ie8 { + body.mappage { + .nav-wrapper{ + position: relative; + z-index:0; + .nav-wrapper-2 { + position:static; + } + } + #site-logo { + position: absolute; + } + } +} + + + +// full width page +body.fullwidthpage { + .content { + 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; + aside { + background:#eee; + position:absolute; + left:42em; + top:0; + z-index: -1; + width:13em; + padding:1em; + @include box-shadow(0px 0px 6px 1px #000); + h2 { + margin-top: 0; + } + img { + margin-bottom: 0.25em; + } + } + .sticky-sidebar { + position: absolute; + left:42em; + z-index: -1; + aside { + position: fixed; + top:7em; + left:auto; + } + } + } +} +//as ie6 doesn't like 'fixed' we will make it absolute again +.ie6 body.twothirdswidthpage .content .sticky-sidebar { + position:static; + aside { + position:absolute; + left:42em; + top:0; + } +} + + +// table wrapper - this enables anything to become a +// table with div children as table cells +.tablewrapper { + display:table; + width:100%; + padding:0 0 1em 0; + >div { + display:table-cell; + width:50%; + } + .full-width { + width:auto; + margin:0; + } +} + +//fix table to be a block for ie, float the children +.ie6, .ie7 { + .tablewrapper { + display:block; + div {//ie6 doesn't support '>div', so we'll go with the somewhat risker 'div' + width:48%; + display:block; + float: left; + border:none !important; + } + } +} + +// adds border to the top and goes full width +.bordered { + margin:0 -1em; + padding:0 1em; + width:auto; + border-top:0.25em solid $primary; +} + +//footer blocks +#footer-mobileapps { + border-right:1em solid transparent; + background:none; + padding:0; + @include box-shadow(inset rgba(0, 0, 0, 0) 0 0 0); + h2 { + color:#222; + margin-top:0; + } + p { + border-bottom:none; + } +} +.ie6, .ie7 { + #footer-mobileapps { + margin:0 0.5em; + margin-right:2%; + } +} + +#footer-help { + border-left:1em solid transparent; + ul { + display:table; + li { + display:table-cell; + border-bottom:none; + &:last-child { + border-left:1.25em solid transparent; + } + } + } +} +.ie6, .ie7 { + #footer-help { + margin-left:2%; + ul { + width:100%; + li { + float:left; + width:45% + } + } + } +} + + +// map box (fallback for non js really as most users +// will have fullscreen map) +#map_box{ + position: absolute; + height: 29em; + width: 29em; + right: 1em; + top: 3em; + z-index:1; +} + +// push zoom back over to right +#fms_pan_zoom_zoomin { + left:auto !important; + right:30px; + top:130px !important; +} +#fms_pan_zoom_zoomout { + left:auto !important; + right:30px; + top:174px !important; +} + +.olControlAttribution { + bottom:0.5em !important; + left: auto !important; +} + +#sub_map_links { + left:auto; + bottom:auto; + bottom:2em; + #map_links_toggle { + display:block; + cursor: pointer; + position:absolute; + left:-1em; + width:1em; + height:100%; + background:#000 url($image-sprite) right -4119px no-repeat; + @include border-radius(0.25em 0 0 0.25em); + &:hover { + left:-1.5em; + //use border so we don't have to redefine the background-position + border-right:0.5em solid #000; + } + &.closed { + background-position: right -4159px; + } + } +} +.ie6 #sub_map_links #map_links_toggle { + height:1.75em; + background:#000 url('images/ie_sub_map_links_sprite.gif') center -143px no-repeat; + &.closed { + background-position: center -183px; + } +} + +// log in bit, pokes above the .content div +#user-meta{ + display:block; + position: relative; + max-width: 60em; + margin: 0 auto; + p { + @include inline-block; + 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); + a { + top:0.5em; + right:0.5em; + font-size:0.6875em; + padding:0.5em 0.75em; + line-height:1em; + &:hover { + text-decoration:none; + background:#444; + } + } + } +} +.ie6, .ie7 { + #user-meta { + z-index:1; + p { + top:-2em; + } + } +} +.ie6 #user-meta { + 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; + z-index:10; //this is just to ensure anythign inside .content that has position set goes sites it + bottom: 0; + width: 29em; + overflow: hidden; + padding-top: 3em; + ul#key-tools { + border-top: 0.25em solid $primary; + margin: 0; + @include box-shadow(-0em 0px 1em 1em #fff); + li { + border:none; + a, input[type=submit] { + font-size: 0.75em; + color:#666; + padding: 0.5em 1.5em 0.5em 0; + text-transform:none; + &.abuse { + background-image:url($image-sprite); + background-position:right -2935px; + } + &.feed { + background-image:url($image-sprite); + background-position:right -3074px; + } + &.share { + min-width: 5em; + background-image: url(/cobrands/fixmystreet/images/share.png); + background-position: 90% 50%; + } + &.chevron { + background-image:url($image-sprite); + background-position:right -3225px; + } + &.hover { + background-image:url($image-sprite); + background-position:right -1876px; + } + } + } + &.singleton { + li { + text-align:right; + a { + padding-right:3em; + } + } + } + } + &.static { + padding:0 0 1em 0; + position: static; + } +} +// The padding is for the fading out when it's fixed positioned, which it isn't in IE6. +.ie6 .shadow-wrap { + padding-top: 0; +} + +// If JS is disabled, these are still CSS positioned, so don't want behind shining through. +#report-share, #report-updates-data { + background-color: #fff; +} +// Prevent gap in non-JS, and looks better with JS, due to some padding/margin effect. +#report-updates-data fieldset { + margin-bottom: 0; +} + +// pokes over the RHS with a little triangle +.big-green-banner { + top:auto; + right:-1.25em; + margin-left:-2em; + font-size:1.375em; + padding:1em 3em 1em 1em; + background: $col_click_map url($image-sprite) right -2188px no-repeat; + &:before { + right:0; + left:auto; + top:-0.5em; + position: absolute; + border-top: 0.5em solid transparent; + border-left: 0.5em solid $col_click_map_dark; + border-bottom:none; + } + span { + display: block; + font-size: 80%; + padding-top: 0.5em; + } +} +.ie6 .big-green-banner { + background: $col_click_map url(/cobrands/fixmystreet/images/ie_green_chevron.gif) right center no-repeat; +} + +.banner { + // state banners + p { + top:-2.25em; + padding:1em; + &:before { + left:-0.75em; + border-left: 0.75em solid transparent; + border-bottom: 0.75em solid #888; + } + &#fixed { + padding-top:5em; + background-image:url($image-sprite); + background-position:-324px -326px; + background-repeat:no-repeat; + &:before { + border-bottom: 0.75em solid $col_fixed_label_dark; + } + } + &#closed { + padding-top:5em; + background-image:url(/cobrands/fixmystreet/images/sprite.png); + background-position:-318px -326px; + background-repeat:no-repeat; + &:before { + border-bottom: 0.75em solid #666; + } + } + } +} +.ie6 .banner p { + top:-1.5em; + &#fixed { + background-image:url(/cobrands/fixmystreet/images/ie_fixed.gif); + background-position:center 0.75em; + } +} + + +// for pulling elements fullwidth regardless +// of .contents' padding +.full-width{ + margin: 0 0 0em -1em; + width: 29em; +} + +/*FORMS*/ +input[type=text], +input[type=password], +input[type=email], +textarea{ + max-width: 25em; +} + +/* form errors */ +div.form-error, +p.form-error { + display:block; +} + +input.form-error, +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 { + top:5em; + div { + padding:1em; + font-size:0.75em; + background:#eeeeee; + } + .sidebar-notes { + background:#333333; + color:#ffffff; + } +} +.ie6, .ie7 { + #report-a-problem-sidebar, .general-sidebar-notes { + left: 28.5em; // 0.5em left margin gone on .content in IE6/7, so reduce this accordingly. + z-index: 1; + } +} + +.no-js .general-sidebar-notes, +.no-js #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; + } +} + +// More general sidebar notes +.general-sidebar-notes { + p { + background:#eeeeee; + font-size:0.75em; + padding:0.75em; + margin:0; + &.dark { + background:#333333; + color:#ffffff; + } + } +} + +/* Adjust the above so text flow can be different from display */ +#forgotten-pw { + position: relative; + left: 26.5em; + top: -7em; + margin-bottom: -7em; // So no gap in main flow +} + +// Frontpage + +body.frontpage { + .table-cell { + .content { + margin: 1em 0.5em 0; + } + } + .nav-wrapper-2{ + height:6em; + } + #site-header{ + height:8em; + } + #site-logo{ + top:3em; + width: 300px; + height: 60px; + background: url($image-sprite) -2px -108px no-repeat; + } + #user-meta { + z-index:10; + p { + top: -4em; + left: auto; + right: 0; + color:$primary; + background:none; + @include box-shadow(rgba(0, 0, 0, 0) 0 0 0); + a { + background:#fff; + color:#1a1a1a; + &:hover { + background:#ddd; + } + } + } + } +} +//logo fix +.ie6, .ie7, .ie8 { + body.frontpage { + #site-logo { + position:relative; + width:60em; + margin:0 auto; + } + } +} +.ie6, .ie7 { + body.frontpage { + #site-header { + height:4em; + } + #site-logo { + top:-1em; + } + } +} +.ie6 body.frontpage #site-logo { + background:url(/cobrands/fixmystreet/images/ie_front_logo.gif) 0 0 no-repeat; +} + +// big yellow bit full screen width +#front-main { + color: $primary_text; + background: $primary; + margin: 0; + padding: 1em; + #front-main-container { + max-width: 60em; + margin: 0 auto; + } + h2 { + font-style:normal; + margin:0; + color: inherit; + } + #postcodeForm { + color: inherit; + background:none; + overflow:hidden; + padding-bottom: 0; + margin-right:0.5em; + label { + margin:0.5em 0; + } + div { + display:block; + margin:0 auto; + width:20em; + overflow:hidden; + input#pc { + display:block; + float:left; + padding:0.25em 0.5em; + height:2em; + width:17em; + } + input#sub { + display:block; + float:right; + width:3em; + height:2.3em; + padding-top:0.2em; + } + } + } + a { + color: inherit; + text-decoration: underline; + &:hover { + text-decoration: none; + } + } + a#geolocate_link { + color: inherit; + background:none; + text-decoration: none; + padding-bottom: 0; + &:hover { + text-decoration:underline; + background:none; + } + } +} +.ie7 #front-main { + #postcodeForm { + div { + input#pc { + height:1.5em; + width:16em; + } + } + } +} + +#front-howto { + border-right:1em solid transparent; + #front_stats { + background:none; + color: #222; + border-top:0.25em solid $primary; + padding-top:1em; + div { + big { + color:$primary; + font-size:3.2308em; + } + } + } +} +.ie6, .ie7 { + #front_stats { + div { + width:8em; + float:left; + } + } +} + +#front-recently { + border-left:1em solid transparent; +} + +#front-howto h2, +#front-recently h2 { + margin-top:0; +} + + +.ie6, .ie7 { + .tablewrapper { + #front-howto { + margin-right:2%; + } + #front-recently { + margin-left:2%; + } + } +} + +// Admin tables + +$table_border_color: #ccc; +$table_heading_bg_col: #595959; +$table_heading_border_col: #7a7a7a; +$table_heading_col: #fff; +$table_heading_underline_col: #393939; +$button_col: #fff; +$button_bg_col: #a1a1a1; // also search bar (tables) + +.admin { + table { + width: 100%; + font-size: 0.9em; + border: 1px solid $table_border_color; + border-collapse: collapse; + margin-bottom: 1em; + th, td { + padding: 0.666em 0.5em; + border: 1px solid $table_border_color; + } + th { + color: white; + background-color: $table_heading_bg_col; + border-bottom: 2px solid $table_heading_underline_col; + border-left: 1px solid $table_heading_border_col; + border-right: 1px solid $table_heading_border_col; + a:link, a:visited { + color: white; + } + } + td.record-id { + text-align: center; + font-weight: bold; + } + tr.filter-row td { + display: none; /* TODO: reveal when filtering is implemented */ + padding: 4px 4px 4px 40px; + background-color: $button_bg_col; + background-image: url('search-icon-white.png'); + background-position: 14px center; + background-repeat: no-repeat; + border-bottom: 2px solid $table_border_color; + } + tr.filter-row td input[type=text] { + background-color: #e1e1e1; + width: 16em; + @include border-radius(4px); + 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 { + width: 100%; + } + /*FORMS*/ + input[type=text], + input[type=password], + input[type=email], + textarea{ + width: 95%; + } + + // Remove central positioning of mainmenu and float right. + // Left padding is to ensure no overlap of the site-logo + // Background styling replicates header styling + + #main-nav{ + width: auto; + float:right; + padding-left: 180px; + } + .nav-wrapper { + // width:auto; + .nav-wrapper-2 { + // width:auto; + } + } + + //Main menu drops below logo and my-soc menu + #main-menu{ + margin-top: 3em; + } + //therefore header needs to open up + #site-header { + height:6em; + } + // Pull OpenLayers navigation down a bit more + #fms_pan_zoom { + top: 7em !important; + } + + //Map becomes percentage width + #map_box{ + left: 32em; + width:auto; + } + + //put the RAP notes into the main copy area + // Note: Also used for the non-JS case. + #report-a-problem-sidebar, + .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; + } + } + + //Revert to mobile use of the .full-width class + .full-width{ + width: auto; + margin: 0em -1em 0 -1em; + } + + //make twothirdswidthpage nearly as small as main + //.content: just enough to still fit the sidebar in + body.twothirdswidthpage { + .content { + width:30em; + .sticky-sidebar { + left:32em; + top:30em; + aside { + top:9em; + } + } + } + } +} diff --git a/web/cobrands/fixmystreet/_mixins.scss b/web/cobrands/sass/_mixins.scss index 4c7bc5af8..4c7bc5af8 100644 --- a/web/cobrands/fixmystreet/_mixins.scss +++ b/web/cobrands/sass/_mixins.scss diff --git a/web/cobrands/southampton/css.scss b/web/cobrands/southampton/css.scss index 592e72f2b..2fc569190 100644 --- a/web/cobrands/southampton/css.scss +++ b/web/cobrands/southampton/css.scss @@ -68,4 +68,8 @@ $darker: #768EB5; .update-img { text-align: left; } + + .news { + padding: 1em 1em 0em 1em; + } } diff --git a/web/cobrands/southampton/css/style.css b/web/cobrands/southampton/css/style.css new file mode 100644 index 000000000..8bdf19aa6 --- /dev/null +++ b/web/cobrands/southampton/css/style.css @@ -0,0 +1,87 @@ +body {font-family:Verdana, Geneva, sans-serif; font-size:62.5%;}
+
+a {text-decoration:none; color:#1c4384; font-weight:bold;}
+
+a:hover {text-decoration:underline;}
+
+p {margin:0 0 10px 0;}
+
+/* ******* Start of Header ******* */
+
+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;}
+#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;}
+
+a.mctv {float:right; height:37px; width:104px; margin:15px 7px 0 0;}
+a.mctv img {border:none;}
+
+#searchWrap {width:210px; height:auto; float:right; margin:10px 30px 0 0;}
+#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;}
+
+.moreInfo {margin:0 0 -2px 2px;}
+.text {width:109px; color:#999;}
+.text2 {width:137px; color:#999;}
+
+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: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:first-child {background:none;}
+ul#contacts li a {font-size:1.2em; padding:0 8px 0 10px; font-weight:400;}
+
+/* ******* End of Header ******* */
+
+
+
+/* ******* Start of Left Menu Bar ******* */
+
+#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 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 a {color:#fff}
+ul#leftMenu li.selected {background:url(../bullet.gif) no-repeat; background-position:10px 8px; color:#fff; padding:0;}
+
+/* ******* End of Left Menu Bar ******* */
+
+
+
+/* ******* Start of Main Content Area ******* */
+
+#contentArea {width:640px; height:auto; float:left; padding-bottom:25px; font-size:1.1em; margin:15px 0 0 0; padding:15px 0 20px 25px;}
+
+/* ******* End of Main Content Area ******* */
+
+
+
+/* ******* Start of Footer ******* */
+
+#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;}
+
+ul#bottomMenu {float:left; margin:10px 0 0 10px;}
+ul#bottomMenu li {float:left; list-style-type:none;}
+ul#bottomMenu a {padding:0 4px 2px 4px; font-size:0.9em; color:#000; font-weight:400;}
+
+/* ******* End of Footer ******* */
diff --git a/web/cobrands/southampton/style.css b/web/cobrands/southampton/style.css deleted file mode 100644 index cd4c0f490..000000000 --- a/web/cobrands/southampton/style.css +++ /dev/null @@ -1,87 +0,0 @@ -body {font-family:Verdana, Geneva, sans-serif; font-size:62.5%;}
-
-a {text-decoration:none; color:#1c4384; font-weight:bold;}
-
-a:hover {text-decoration:underline;}
-
-p {margin:0 0 10px 0;}
-
-/* ******* Start of Header ******* */
-
-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;}
-#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;}
-
-a.mctv {float:right; height:37px; width:104px; margin:15px 7px 0 0;}
-a.mctv img {border:none;}
-
-#searchWrap {width:210px; height:auto; float:right; margin:10px 30px 0 0;}
-#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;}
-
-.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 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 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:first-child {background:none;}
-ul#contacts li a {font-size:1.2em; padding:0 8px 0 10px; font-weight:400;}
-
-/* ******* End of Header ******* */
-
-
-
-/* ******* Start of Left Menu Bar ******* */
-
-#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 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 a {color:#fff}
-ul#leftMenu li.selected {background:url(bullet.gif) no-repeat; background-position:10px 8px; color:#fff; padding:0;}
-
-/* ******* End of Left Menu Bar ******* */
-
-
-
-/* ******* Start of Main Content Area ******* */
-
-#contentArea {width:640px; height:auto; float:left; padding-bottom:25px; font-size:1.1em; margin:15px 0 0 0; padding:15px 0 20px 25px;}
-
-/* ******* End of Main Content Area ******* */
-
-
-
-/* ******* Start of Footer ******* */
-
-#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;}
-
-ul#bottomMenu {float:left; margin:10px 0 0 10px;}
-ul#bottomMenu li {float:left; list-style-type:none;}
-ul#bottomMenu a {padding:0 4px 2px 4px; font-size:0.9em; color:#000; font-weight:400;}
-
-/* ******* End of Footer ******* */
diff --git a/web/cobrands/stevenage/_colours.scss b/web/cobrands/stevenage/_colours.scss index 72027c302..6b0d1bcdd 100644 --- a/web/cobrands/stevenage/_colours.scss +++ b/web/cobrands/stevenage/_colours.scss @@ -2,9 +2,17 @@ $primary: #066539; -$primary_b: lighten($primary, 20%); -$primary_text: #333; +$primary_b: $primary; +$primary_text: #fff; -$contrast1: #00BD08; -$contrast1_dark: #4B8304; -$contrast2: #AA8D11; +$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; +$col_fixed_label_dark: #4B8304; diff --git a/web/cobrands/stevenage/_fmsbase.scss b/web/cobrands/stevenage/_fmsbase.scss deleted file mode 100644 index 79481250d..000000000 --- a/web/cobrands/stevenage/_fmsbase.scss +++ /dev/null @@ -1,1537 +0,0 @@ -/* HEADINGS and TYPOGRAPHY */ - -body { - font-family: 'PTSansRegular',PT Sans,Verdana,Arial,Sans-Serif; - margin:0; - font-size:1em; - line-height:1.5; - color: #222; - background-color: #fff; -} - - -p { - font-size: 1em; - font-weight: normal; - margin:0 0 1em 0; -} - -small{ - font-family: 'PTSansRegular',PT Sans,Verdana,Arial,Sans-Serif; - font-style: italic; - font-size: 0.8125em; - line-height: 1.2307em; -} - -h1 { - font-family: 'PTSansCaptionRegular', PT Sans Caption, Verdana, Arial, Sans-Serif; - font-size: 2em; - line-height: 1em; - font-weight: normal; - margin-top: 0.5em; - margin-bottom: 0.5em; -} -h1#reports_heading span { - display: none; -} -h1#reports_heading a { - display: block; - font-size: 50%; -} - -h2 { - font-family: 'PTSansCaptionRegular', PT Sans Caption, Verdana, Arial, Sans-Serif; - font-size: 1.5em; /*24px*/ - line-height: 1.3333em; /*32px*/ - font-weight: normal; - margin-top: 1.333333333em; /*32px*/ - margin-bottom: 0.666666666em; /*16px*/ -} - -h3 { - font-size: 1.25em; - line-height: 1.20em; - margin-top: 1.2em; - margin-bottom: 0.8em; - font-weight: normal; -} - -h4 { - font-size: 1em; - font-weight: normal; - margin-bottom: 1em; -} - -// default list styles -ul, ol { - font-size: 1em; - margin-bottom: 2em; - margin-left: 2em; - padding:0; -} - -li{ - margin-bottom: 0.5em; -} - -ul li{ - list-style: square; -} - -ol li { - list-style:decimal; -} - -// lets you have a traditional ol but with nicely styled numbers -// for older browsers it just falls back to the normal ol -ol.big-numbers { - padding: 0; - margin: 0; - counter-reset: li; // reset counter to be 'li' instead of a number - > li { - position: relative; - list-style: none; - padding:0 0 0 2.5em; - margin-bottom:2em; - &:before { - content: counter(li); // set the content to be whatever the 'li' var is - counter-increment: li; // add to the counter var - position: absolute; - left: 0; - top:-0.2em; - color:#ccc; - line-height:1; - font: { - font-family: 'PTSansRegular',PT Sans,Verdana,Arial,Sans-Serif; - weight:bold; - size:2.5em; - } - } - } -} - -dl { - margin: 0; - padding: 0; - dt { - font-size: 1em; - line-height: 1.5em; - font-weight: bold; - } - dd { - font-weight: 1em; - line-height: 1.5em; - margin:0 0 1em 0; - } -} - -blockquote { - p:before { - content: '“'; - } - p:after { - content: '”'; - } -} - -pre { - font-family: monospace; -} - -img { - //do this otherwise IE will just not display - //any img without a height defined - height:auto; - max-width: 100%; -} -// So that map popups display correctly -#popup img { - max-width: none; -} - -select, input, textarea { - font-size: 99%; - max-width: 95%; -} -.ie7 { - select, input, textarea { - max-width: none; - } -} - -// To deal with bug from drop-down being wider than holder -select { - width: 100%; -} - -// links -a, -a:visited { - text-decoration:none; - color:#0BA7D1; - &:hover, - &:active { - text-decoration:underline; - color:#0D7CCE; - } -} - -// custom type -.small-print { - @extend small; - margin-bottom: 1.2307em; - color:#666666; -} -.meta{ - color:#555555; - font-style: italic; - margin-bottom: 0px; -} -.meta-2{ - font-family: 'PTSansRegular',PT Sans,Verdana,Arial,Sans-Serif; - color:#666666; - font-style: italic; - font-size: 0.75em; -} - -h4.static{ - font-family: 'PTSansRegular',PT Sans,Verdana,Arial,Sans-Serif; - text-transform: uppercase; - font-size: 0.875em; - line-height: 1.71428em; - color:#666; - margin-top: 2em; -} -h4.static-with-rule{ - @extend.static; - background: #f6f6f6; - border-top: 0.25em solid $primary; - margin-bottom:0.25em; - padding: 0.5em 1em; -} - -/* FORMS */ - -// input placeholders, these need to be on separate lines as if the browser -// can't understand a selector it will invalidate the whole line. -::-webkit-input-placeholder { - color: #666666; - font: { - style:italic; - size:0.9375em; - } -} -:-moz-placeholder { - color:#666666; - font: { - style:italic; - size:0.9375em; - } -} -:-ms-placeholder { - color:#666666; - font: { - style:italic; - size:0.9375em; - } -} -//this only gets used when the browser doesn't support @placeholder -.placeholder { - color:#666666; - font: { - style:italic; - size:0.9375em; - } -} - -// wrap anything inside the form in a fieldset to give -// us the right spacing -fieldset { - margin: 1em; -} - -input[type=text], -input[type=password], -input[type=email], -input[type=file], -textarea { - @include box-sizing(border-box); - width: 100%; - // adjust so the sides line up - padding: 0.5em; -} -.ie7 { - input[type=text], - input[type=password], - input[type=email], - input[type=file], - textarea { - max-width: 95%; - } - // In order to work around the IE7 specific issue of inheriting left margins - // http://techblog.willshouse.com/2009/07/12/ie6ie7-form-element-margin-inheritance-bug/ - fieldset > input[type=text], - fieldset > input[type=password], - fieldset > input[type=email], - fieldset > textarea { - margin-left: -1em; - } -} - -textarea { - border: 0.125em solid #888888; - @include border-radius(0.25em); - display: block; - font-size: 1em; - line-height: 1.5em; - font-family: 'PTSansRegular',PT Sans,Verdana,Arial,Sans-Serif; - min-height:8em; -} - -input[type=text], -input[type=password], -input[type=email], -input[type=file] { - border: 0.125em solid #888888; - @include border-radius(0.25em); - display: block; - font-size: 1em; - line-height: 1em; -} -input[type=file] { - margin-bottom:1em; -} - -label{ - display: block; - margin-top: 1.25em; - margin-bottom: 0.25em; - font-weight: bold; - &.inline{ - display: inline; - padding: 0 2em 0 1em; - font-weight: normal; - } -} - -// grey background, full width box -.form-box { - margin: 0 -2em 0.25em -2em; - background:#eeeeee; - padding:1em 2em 1em 2em; - >input[type=text] { - margin-bottom:1em; - } - .title { - font-size:1.25em; - margin:0.5em 0; - } - h5 { - margin:0 0 1em; - font: { - size:1.125em; - weight:normal; - } - strong { - font-size:2em; - margin-right:0.25em; - } - } -} -// IE6 doesn't extend the grey box back with the above negative margins, and -// the password box falls off screen for some reason. Just have boring margins, -// it looks okay. -.ie6 .form-box { - margin: 0 0 0.25em 0; - padding: 1em; -} -// Prevent grey displaying oddly by giving it a width, and stop odd left margin issue -.ie7 .form-box { - width: 100%; - > input[type=text] { - margin-left: 2em; - } -} - -.form-txt-submit-box { - min-height:3em; - input[type=password], - input[type=text], - input[type=email] { - width: 65%; - float:left; - } - input[type=submit] { - float:right; - width:28%; - margin-right:0.25em; - padding-top:0.7em; - padding-bottom:0.6em; - } -} - -.checkbox-group { - margin:1em 0; -} - - -// form errors -div.form-error, -p.form-error { - @include inline-block; - background:#ff0000; - color:#fff; - padding:0 0.5em; - @include border-radius(0.25em 0.25em 0 0); - a { - color: white; - text-decoration: underline; - } - a:hover { - text-decoration: none; - } -} - -input.form-error, -textarea.form-error { - border-color:#ff0000; - @include border-radius(0 0.25em 0.25em 0.25em); -} - -ul.error { - background:#ff0000; - color:#fff; - padding:0 0.5em; - @include border-radius(0.25em); -} - -// don't display valid error boxes as now the page jump -// won't be until the user submits, which is fine -div.label-valid, -p.label-valid { - display:none !important; - visibility: hidden; -} - - - -/*** LAYOUT ***/ - -// Padding creates page margins on mobile -.container{ - padding: 0 1em 1em; -} - -// Use full width to reverse .container margins -.full-width { - margin: 0 -1em; -} - -// #site-header creates grey bar in mobile -// .nav-wrapper-2 is used on desktop -#site-header{ - border-top: 0.25em solid $primary; - height: 3em; - @include background(linear-gradient(#000, #222 10%, #222 90%, #000)); - .container { - min-height:4em; - } -} -#site-logo{ - display: block; - width: 175px; - height: 40px; - top: 0.4em; - background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK8AAAAoCAYAAACIJ6oVAAAACW9GRnMAAAADAAAAAwB3k5ejAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAF5AAAQZgCwCYXlAAAABmJLR0QA/wD/AP+gvaeTAAAag0lEQVR42u1cB1RWx7YeBBW7YAOViL0bNSomdsWADVsQbEHFiAUUMYmiokEUWzQiiQ0VNSC2gFiJmthbiF1jwxaNGr0pKra8t1be3r/frLc99/zwo7nv3rzFWWuv/z9zZs6ZM/PtPd/eM3OUyj1yj9wj98g9co/cI/fIPXKP3MPaYQfJY6Po/LlH7vFvBa09ST6SIiROJM7ZiBPy5kPZXBDnHv8W0OYHGCuSeJB4kniReFsRL+TxQBkngDhPbpPmHv8XRx4AjoFXiaQFSUDXrl2XxMfHp585c+b2nyZHZmbmM742b968gx4eHvO5DElzkgokhXKtcO7xrz7sAbQKAF7AoEGDEk+ePPnznzk8tm3bdhUg7kFSE5QiJ1bY7jXkrxyB/pX5/4o2yD0EcKuQdHdzc5t14MCBm3++5rFy5cqjdL9AKMMbJAWzAbB0DLlODlmIPeSvdBrNnFNr97LmyL4OsOQ97bNoA/nuf1eA/yX1zCOA69uxY8eEhw8f/mEGxrt37z5OS0vLWLZs2QmS4yzr168/d/Xq1V+sAfjKlSu/kjLMpHv7AMD5TCprJ7h2XvDtAqgXS2EhOq0g8jgiv5Z8ooNtbRj5fAfcI5+VexkBlhf5XvXZRsXVz3fEOxrbQL+7I/LlNVFio2Lb/YeBNqt62uXkRvlAFboDuP9lQgOudenSZRmsqI+Js+bj6en58erVq/cT/31uLH/p0qUHAHALUAj7LJzEQuDcpUlcScqRlBfC52VJypCUElEOluIkRdG5OYl4GJ9fVNyrENKlpcsD0DgiulIczy+G/DmNtkjFLYj7lCRxsfL+Lnh3JwC6gEGBHYVS531FZfpXWVppoMzqabOy2aMBmjNHNVrcCxcuPPL29l4D0LYkqQzQlICUhJSB5W5ZtWrV4KNHj14xs8C4T010cB4rIbkycBbrkLyF6EVTIU1IGpHUJ6lFUg31qowoR3nUqbCNIJLALQqleQP3egPnRXHdwQAyZ4CpEp5fAfmLCMDb2QjcfKgzg9Id79YQ7/82yTv49UC71EWblxdALo46lUT/FLeifLZSjFelIXZZjFTaQBQX+HFGGxdA22YLYDvciBs+4NSpUy85ZhcvXnxUtmzZhXTNTzhdjrh5ATxMx3eLocNKIK9fbGzsXiOAU1JSTsKJqyDogx1AUQgdX33RRDX84EqV8G2cWrdzkfpqx0KVzML/dy5WX1H6+n3LVdKsUPUR5W/DFn3BeBV8ap2KS5hmUZBK6NBC2TSGUXHY0tc4s0EtObFWLW3R0HLvGkgvIqhBQbwrP6dB0gwVfixJLY+brIYivwuAmF1H2IkITxGU4/LvvPnmm73IZ1hAo9axe/fu3dBtyP8vX76cnpSUFPPWW291pbyNAXStwNXQBzWggC7oH0dh3ewNw7Y138HeRPKYgNnOCl+3N3B3R9TFBW3H9ayNOruhTQvZAmBtdVtOnz59i9HiAri+JFVFRxhjv+1I2nIHwmLqYZTL+JoBGFGI5riPvei8orB0jffHq9V/nlR/2iLV3dUQKtNrz1K1ls/TE9UKWGU3aLcjGi6PlUbOJxWHFUHfmxUEI051XC8M4DrBOjauV035PU9XmSJ/M1jEElByBxM+Z2diccsAhG0GDx4c/vTp0yfZOcTPnj17PGnSpEjE2LmeLVJTU2fytT/++OPR2rVrxwIc5dAWBcVQbSb5BdfXfkdBIVnxbAcDHSggRPP34qhL7QEDBrz3+PHju1xXUsY0KGEVWOKCot2scl0GYYDkqcx5GzZsuAoWVwL3pTAaNfCqmJiY/dOmTdtepUqVkRjGCgsrymX9jBSCoxiIA1cUw1l+vJgltuzdTI0a5quWaBD17ahS+3dWyQFd1PoAH7V2YFeV9Mte9RtfG9lbxVKZYUsi1PKbX6sf1sxU8zDEVhVDfgHhTDkYnKLCAFpF0BJf/dzf96t/QIGbAqzOqCdb4noknbZ+rjbr/Fti1Rb4BA0wnBcXzzZyZiNVYOvTysvLa/QTOnIS1RkzZswcKtufhQGt02/dunUOxqUOlLm0GKpL4rlaSor3K442KQUr6WrCsx0NQC8oRuNSUMYy4t6l0CZcl3a7du3aIN/Bx8cnCLSokhjlTWlXHjyo6cyZM1PlTRYvXnxWcFMJXEsYjfNLsGdkZPzm7u4+AR1WWHQM/6/JjpzRiYP19YCV1p1YHABi5ehHMlGDgv4vImFQstMXTTLtYqq6xtdG+CkeIUJJRpAMIunJIEAjVUCjlxDOV0HhlDmjgSvAWncK7afmScv+ebj6ktOhnOVxvyp6AufXfS+UiOXgCnUcINLWuhyeXUTwOQfh7GmOXVkrzqFDh743gvO77777nQzFtfnz51/ZvXv3P8Xdjx07dpHKch9EyHTqmwy0ZRu8n6YTtdA+daGEdZFWHe9WFXnrgXc3wm8dXC8HQBaDOKNdKkAJ6+J59fFfP/dNKFP/DRs27JJ1DQkJ+ZzxBT5fDm2W18z62kMTOh0+fPiatLrly5efi8Z3FhaKh/NuNCQdN/Dih+XKlfuCrnVFHkcxdORHx7XcsmXLd7Icz8RhKtlJOEBFAI5GAOAYAd5Z3DEkYSRs5UcBsKMgnBZM8gFGjHehHPXQcFVQP1eA1RXnVdBpDdDB/Yf0VMv5mZmH1XP+ZQtP6e8DrDVQhvN3mT/2Bb3ReS9sVDcofTjA7mHo7BIiMqCpRzncsyksdsiNGzfuybaaM2fObUrn9tpFso1kO1naMzIP9eF1Sud+WCTTf/jhBx7lPibpizq9O3r06BHdu3dn49SN/Y8uXboMjYyMjECaN/qlPeevXbt2/wkTJkSNHz9+6sSJE6d07dr1A1xvjHatiBGpGoDavH79+j2nTJkykekMCyxqJ1CbzlDu8BUrVqTLugYEBKxD27VHm5REW9mbOWqs7YPkDQhk12F1KyNPHoCqyZAhQ5YbeHEm8eI4QS+KoHNc8ELa4lRh6yvL8lQyGspZEPoCsEK1AL4PBHiZuzG37Q1g98RzuSEGX9umLl3dqi6nr1aH331bjYFT6H1vtzpJVOJAYrTFKjUBmGvDAniwk8V5yNFLpvP3GDxMS/iZqTHq1t1v1GP+/8lQtRwK2hSWgYH+/i+wultj1XX+/SFFMVj4+X1C+6pgvvf5FLUWHasjNU5oG1aeeuMDVeC5ZPXt9e2KrecUo1Ul0Nyi9H0kTEk2QFK++OKLi3rka9u27ba4uLhT1mjF7du3f2Jg7N279xudRqBMSEtLO2Ri/UIqVqw4jhTie7N7Xbt27RJhYSzA2Bwc35OBfvz48QNWYv0Z/v7+bIBC33777bnEdZ+Z5SO29DQiIiISylFeWN+XwMuJHrxmwVD5HdCSUoKjcWN7Hjly5KoB6GxlhsG6FMMQyB3Uvm7dur0BwqLoMJ+ff/75kVwLIcCrCb/kvdwofQV4QxgQJB0x7LSBBejC6XKY3xRjsU4DjenEoT/Eu/FzO++Gg8fCXBlKGx7zsdrPafR7Lay/Osv/iaKwUg+G5eBO8x3ZR8XytZ+/VY/oPJn/39+jHtD/8axo4YFqmr7/jkUW2uMhvGp3KJDn5c0qXbxnjNl0/DfffHM/Ojr6LLXrJsqTSLKahEOYrBjsJGY7jc90S57L/tDH8uXLvyfOvd4auCTIevfuPR2+S0CbNm0mZOdg8j3p3mup3Las8q2hg+7ZGlgqjpH/Jb5rAWTfvn1TDaQ5DtalqAAVA8ybAWcSt+0HE18WYPWdPXt2CvG2Y2JCgs1/B+OiHhPwaurgho7uJTo1FEO3D0DbCuIFCxw8O+wFgDZ8qr4BleCw1fBdi9VeTv9tv/oFvHhonw7UkZT29Kh60ruDmg6rzkNWRPwU9T3Ay4DdTdY3E+BfAgBzPYZf2vSCc48frA7R+TpR14mgMcNH9VHzOe3BQXUfitZU8MG27Jjy9SdH1dNypVUMpS0MDw8/klXn3r17N5PXjgwdOnQv5Wc+vpLF19f3W+K+L810Mg08ceLEPZ4JpTyLs7rvo0eP/qhVq9aeS5cuPZTp5PQ9Jyucyb8y/dy5czwicNtFG6kO5X1Gxu4R0ZYnxsmqUqVK7SJl/IfxfkxB2UBWqlTpI1CHqsBpfiN4LYAkLdhqANRwkHZHEX8tExwcHGpFm9nK9AJ/GkpcZ6fgWu2FV+vNDZgFePWzCoMHNpZeP1mnK0wN2ELe3qXOkLU7xUMy7sHgHTm4u1rFedfMVNypH4EDM4gnEhe1DOuJ09UBOp9B97nL53GTLVZ6NMDLYJ+wYor6jq9FjVAXmGdGh6gzfL47TrEjO4mt8wc91ApOozo8BHhWCfBGCD4+lhy6Xzn9owEW3t4FSsejhy+PEnxtzzJ1hs4/ZctLsiwxMTHDligDWc9MomSpXAZA3iyvp6en/waawbQn3lj+/Pnzj4lrniOjdYKu7xk1atRlQ2TomZOTE1M8ph03k5KSXrLWrVu33kUU4qBMO3v2LJfhUZkxcHP16tUvlSHacJrSj82aNeu+TO/Wrdt3lB6LfmiTleW1Bbw6YlCLONV4s8a7fPny79u3b88g/nRw+vTppw2TEZ5iFs57xIgRu3II3l7ZxXhxDw5lhQQCvEkzLPyQKUIQGiK8UW21+PER9Yyvpy1Qly38NNnSuJPxzv0wBH6Ynqgy+HqPdhagby7trLZoh6xBDZVAaZ+TNb/A58sjFY8wbJEXE2e9z2lvuKhpAC5TnbEzQ9VGTj+9wQLQQeDWrPBBGtidW6p4Op9KEgUQx/fo0eMQ04XsAMyRnPbt26dwGZL1higEh/o47LmAJM5YFqBlLr2RncHk5OS78vrmzZufR0VFPWGZOnXqk4SEhKfyOjlkNzZs2HDfUOYZ5X3M+Vm+/PLLpyYO6AkC70vWumfPnvvZsMCPaYoR+J84r1Xa4OHhEYuCxcRkgx87ZmZrHqwd48aNW4uhX8/RdyAivs8G8BYCBWkkLS/9j4Q11U6bDyy7J8Irwwf3UCuF5R2l4574P2POGHVU34/B2LCmZTIjHKDtBiUI5ogB5+n1rtoJbpm0eOIL7rv1c3WtbhW1Rd/DtaQFMBz2m8fOGqcHvWexgiOhOKPdXNT0J0fUU77WvIFlmGXqEhwx5IWy/UijADtqJOPwjmy5OeLD9UvhYXbAgAFn4uPjf6LDlIsePHjwBqxvgkwnHnwPwGWFiDUZOdkqL0UoMsFIO7I7ZsyY8Ss9O0cxaQIvW/H0Tz/99I5M79Wr1y5Qru5wrMsgKmNvk8M2cuTINPDI8rDAvjzTxjNutlbu9OnTd8ELK+LhFodt3bp1P2ThsJmBt6ch2sBg8IfT1RoTEc1wPuSDnjQsUt61s9QeWNNeiEow4KM8PdQmfT/msRiixiCfFxTiA81l+3VSKTr85FJCJT06pJ6T/EFD/U1QjpMY5hmQM86nqB85fUhPC6BDYGXZoR2/ef4Lpwy0hYE65ViSushp00daLN8ETTWaNWs2kxc4YaIoHg7aWljHHdWrVz9u5JIAIoN3hUw7deoU98VnHBdnhTApswD14RFoHoM9J0D8+OOPf2NqkZMykydPvkrP2j937txbMt3f3387RswOwF4JEfHKPlTGAINlY1D4M3B5jYOtFeOlke7u7hGYKXECeDnOGZiRkfG7lVCZGXg5IN5NgDcIw20bALsO4oz1YX0H6fgswDsM+bshijDl6lb1C19/SADk35VR6qgBvMxHA/VQjg7/BMP5fLrveWm5yeouxzUG3ifMW/nauEGWKEAwrD5b9dAmddQXfI2pCysD0w9xPgWdFtKiRYso2Z59+vTZzJQEws9bzzy8Y8eOF02A+E+8FuCdBwX7zKTMVCgajwafkOF5yRrSkK8pQCZ+Lf+jo6MfBgUFsRN6hSzvU0OZ56JM5rRp0zj/A+a4zKlpJGGHOi0mJua6LMdRCPSHF6IyzmbgtTpJwR4nhugxrq6uy2y1uBwGWbNmzV6yCkMBXBfEbS2TFLycMotJCiN4XTEJ4CPA2xtOTj1YdL1MsBomVAJouF4qwDsCjhxTgSCmEnzt+Br1j5qV1F62onze09NiOd8XtCFIPPMjPcTzcEY0I15f+2qOhb9OR2NbuO3qGS9CbKAtwXj+e1CeieeS1S2+Hh6ojiyJeAH01HmWGTkdnQg2zjoxn61fv34SLORCOGXbiGteN+aD5V1mQhsWA8ALTcA7DgrGijaGOO9LsWIC3iM4axxZuEWO2E9jx479NTw8nO/LjteJuLi4+4YyPKrdRpmbVOZHzk+08UcGLRRwQ2xsbIbB8qahPp0RuSopfC/bpod59oa0Ywd5opnWwMr8t1+/filhYWFzQkJCRoF/yo2XeoEOW8dAXg+cxfSwnQl4LVO1AkjdkF+vFtNz7+5Qlr5Dfckh+V/wcARhAIufl5oFa/msThW1lWOys0LVMU67tUPdAfgGIgw2WjxT0xRfXP+IhvjNidHqYNN6lqF4JIDPMlIriADve6A0DOLRYf1VKl/fu0zdvoPJD3YkoQD87KE8cWDmkPEGgKVLl57kqXuz6WFymq+Cty42hr849IaIRKIJeEdj5OFJnaCBAwcmGfOQI/5b48aNf/Lz87vLkQSdHhkZeZnK7CSak25WpnLlyjepzB1ZhrB2AkoWv3DhwvPGrWODBw9eWbNmzYGYCHIFHhyyXJjDIRd9kwcPHvy3fKAZcDt06JCITqklZo2KiEXFhbWzxyDPYmGO2bJIF1hYbwGkjrDG5eAE6kUgOjLhN9xPLcJs11FwZLaaI27vVD9x+vyxlijEIkQHFmlLuG62+panUJvVVzPIKiZx2u1dFqsRAP7VGjN+vrCiQbjWA9d55m3wp2HqK1j3C6P6Wix6Tyh1Z0xbR/OEhn6nQ6ssceRIMaXNEY8xHGbMCYdkgMI68+Kcz+7du2c6WrZq1Wq3CXiHgy55QVF5Zu26Lc/FGhgOE65OSEi4aksZcjq/Rz1jrM0IkqJuxCSVO/o4b46WRNoAXLlU0sGwLE4D1+LsGaMU7CQalkQqAd6CmCLmKdx2ArztkFZGLK4uhHOeqeqqJwREmbCNn6k0/n8pVV0Dt5wEbz6SeaiOAnRppZbqYZ+Fp5phkVpAkd6E5W+NurTCeSP89wv2f8FrxfN7gKO3BzAj5n6oDuvroX0tjloYLHR7WGm2Op8QfThrS3/cuXPncfv27ZOxWIlj7pM2btx43Cxvy5Yt93F+fX7z5s07GJ084fwygAe5ubnNJh77Y3a+TaNGjZYitMfPXrB169ZrWZUhpXrYpEmTzxHhmUQOabzZrhu6z2a0sekkhU2L0c2A6+XltQ4aWh2W1sGwQt5ZL0Y3c/asLEaXi8IdQQe44m8f+VKtYgE1qCrWyOYTnLo6+PD7q6aq5OS5ageDlukATwIQr9zu722ZIBgq+B0P06ETBqsEGub3MB0Y1E0lcoyYZ+j6d7YAvROsvd6dUQHOZzWxa6MygM0dP2DlVJWS8pn6evsXKhUWWYPdYtW83nkxJY3JjSkAT1sMk01gyblukQ0aNEhYsmTJaZ4h41k1uYpv//79t4hiHECYbiIc1AGIrIyLior6+tChQze4T3mkGzZsGFOZhHbt2m2h9Ovp6emXaUifjb7wELtWvDESRJGzuIWfw7F8rSh8v8mTJ+/mDbqgTYNQX6Y+M8jp2sIgNpYhH+cAlZmB0VDXM5wNIQcJOA878VT2KO/EQZtkCd5stwFJKsGai0o2Ewu9C8O0l0JHsvMUyFuHbt++/dTGbUByR0F+0AI3TKN6QOoirZjYjqMXsLshOuENkASAh/bDaqo+GCk6wRK2BA14D40fgvf6EJZwCIb8ZmJNcHE828mwZ64UQNwI1KYPnu2H83aoF9dlPCnVCQZv7DiLUxkm1v7qXRD1Ubf3cT0SK+rmCJmNSMh4gMEfz2gL8PfGO0UgX7SYAIkUDqI/Ro2aYtuTfP4YKNhsPHcWyoehjTujPdviPQaiDbMq0wWWXrfVSNQzCr8jhEJVQJvne60NmGvWrHmAEEckXlqvKHoLvwyMQBoWFhidMxs3YCpBOwrC03wD4KmK/3qFfV6xraQA7ueul+QBMJ5il0crWO76WIdRFZZGfwXIB0D2FTz2HXSq3v5j3KGcXyxkL4nRqyEsrTc6pyM6mOnHcDcXNVPP8vF/dHZLWHO9SLw8/Agdv9bKOAiKHwjL1QdOrCcsdm28W13UXc889jUosb9Q5OZil4Xek2jt+QOFUuqy9TAKVcPo0wLva61MC7HvsB7q2QH16YN8nZFeQ1BEh9fe+s7Wd9OmTTd5Kphn5tgzDQoKWsa/c+fOPbxv376fXmPru3E/WSGAsjTE2bArVy7mkRshK4NG1IBUB1h1eK0UOkkvQK8uFly/BStYB2B0Mdl4adzbpeuqlzjWBpjadG+rAu/vUdenBatFHMb7MU39LNYxhGEmqQHi2kXFAvnSOdiAWRWAKy12PbiLGHgjOLSN8V+/Y23xjsXENh+z5zcRG18bIr2iWORfAv8r2lCmrNgVbqxnQyttb/93+uiIvdhpIPdO5TX5foJxC7qTYVdzCbG1pbDYU6WBUkI0ptlWl+x23UoFchKWq/mCCS9WrklhAL/hahkiB8BKVzVsbM33Clvfi4hvWBRC2RJi0X1Zw/uVMXnHvIKKGZ9fVnxuwEXsoCgk9r4VsqFMcbEH0KyeLugLY9vbvA3+3/25JzvDxzekmH2Uwvjxj/xWNhbmEx1kb9jDVkA0aEHxDQRbvndgBLDeC8cWx4ccv8iv5qidHPudGWpx4sLh4HTEUOtq2GWc04+O5M/Be0kpYPKthOyeb/zYiYNhZ7AtZfKa7CEskEW9cvStif+UD+3l5NNFdla+wmKfxRdZrH1S6VW+NGPcvu6K4a8N+O4QTFoMA//sgOG7AqxRfisjyqt+7slaG2TXJsqG59v6XFvK2NJXr/Rlk7/rJ07tXhH4r/uNLxnqc9JbfOCQdRA7MHTcuAJGI7013i6Hdcuujn/FRwn/6ue+rpF6pQ7J/bi07dZXR0D05soqcI7qiA2LLmJLvIP6z/uW2P+7jsn9rL/tAJYOpLP4LoLx80u5wLXx+B+cTUKEm3GYQAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMi0wNS0wMlQxOTo0Njo1MSswMTowMBx1tHgAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTItMDUtMDJUMTk6NDY6NTErMDE6MDBtKAzEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg==') no-repeat; - text-indent: -999999px; - position: absolute; - z-index:2; -} -.ie6 #site-logo { - background: url('/cobrands/fixmystreet/images/ie_logo.gif') 0 -5px no-repeat; -} -.ie7 #site-logo { - background: url('/cobrands/fixmystreet/images/sprite.png') -3px -3px no-repeat; -} - -// this is a skip to nav for mobile users only -#nav-link { - width: 50px; - height: 48px; - background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAwCAMAAABkKdmIAAAACW9GRnMAAAAFAAADlACdjNY6AAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAF5AAAQZgCwCYXlAAABEVBMVEUAAAAiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsJAAAAABPQAAAAAAlHgBnVAAAAACSdwAAAAAAAAAaFQAAAAAAAAAAAAAAAACRdgCqigAAAAAAAABHOgDCnwAAAACriwCAaAApIQDOqABIOwCgggBqVwB8ZQDVrgCwkADjuQCafgDftgDetQCqigDrwADHogDGoQDFoAD1yADzxgDyxQDwxAD/0AD///+ZbHkYAAAAWXRSTlMAAAECAwQFBgkLDA0OEBESExQVFxgeHyEkJSkqMTI2Oj0/Q0RHSEpOT1FSVVtmZmxsdX6Kj5ebnp+goaenqKmru7y9vsTY3uPk5OTl5+zs7e7x9PX3+Pr7/fI8qpUAAAABYktHRFoDu6WiAAABMklEQVRIx+3T2VLCMBSA4ZjU1hhpUKgWlaq0VSuutYg7IJuIogKKvv+LSM2AelNOuHCGGf77b7KcBKGwT2AzYej/CIYSPCBEhRKVCILVBJQkVCwIS0NJmglCYhkoycSIINyBEocPiAsl7ljkeypTMhHko9tpD+t0QavUSjcX+bDzy9vSPYj0zg523LDtvaNCD3aWh11ziXMeT64fP0OPX1xbmCVEXdyqwm/sNEWJMr96LXHJb4fLczR1IjWXx83kyv6r3CiLG05VdvpXd9IP5n36XyaStGCiNSS6XYaRsq0LgpnlNyGi6VsMC6IZXlAfLeqBZ2iCIELNbFBpvLQjempUgqxJxb76KdT0/Fw+spzvmVRB6McYlu24ETm2ZfwW/b1pTOeR6Uwj6E8YkxFhjMbuC8zPYpEN6mT7AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDEyLTA1LTAyVDE5OjQ2OjUxKzAxOjAwHHW0eAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxMi0wNS0wMlQxOTo0Njo1MSswMTowMG0oDMQAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAAElFTkSuQmCC') no-repeat; - display: block; - text-indent: -999999px; - position: absolute; - right:2em; - top:-2px; - &:hover { - top:2px; - } -} - - -#main-nav{ - ul{ - @include list-reset-soft; - li{ - a, span { - display: block; - padding: 0.5em 1em; - background:#f6f6f6; - color:#333; - font-size: 1.25em; - border-bottom: 0.25em solid #333; - } - a:hover, span.hover { - background: #333; - color:#fff; - text-decoration: none; - } - span { - background-color: #ccc; - } - } - &#mysoc-menu{ - li { - a { - color: $primary_text; - background: $primary; - &#mysoc-logo { - background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIkAAAAyCAMAAABf9whNAAAACW9GRnMAAADwAAAAJgAMZizzAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAF5AAAQZgCwCYXlAAAANlBMVEUAAAAiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiL///90WH2CAAAAEHRSTlMADx8vP09fb3+Pn6+/z9/v+t8hjgAAAAFiS0dEEeK1PboAAAGqSURBVFjD7ZbNjtwgEAY/oIE2YKj3f9ocPDOZ3eN6FCUKdWsJQ+H+saXNZrPZbDabzf/GovwdIhH8LUzHn/PqI32Jcw1v0fjidQf30EZPqmMURXeT5F5kbYwqSQbeWpAU6xg961pT+mgm+WR4Ke6SzG9JwQRWB6iaTClCzQBLknT0AibZAnCBSx2ALACGQ5JOznsmq1TA82LKIalC6Jwh5seaMGdUWKxiJQpclWVqLNlJsxThUIB6z8Qft3FQgEODrs4qUuj9qoljpAr2euKkmxVIjzrpTBUI90xMGgzJQGrMAEUGrGKQn6c7/HbngT1MMqRO1wdNDA6WpNgW5Ld38s1kuLt7fPbO5Lg7Z76ZaLJoV3WAa6wsxbmiyrMMruyMVxc3SaqvAv+YSQWS1Fs9oAi8jQKmsGB4zwJXgdO9VWnAkaUAHJ81CTAkLYAm5ZbB/QhSmm9d7Ff7Splr5jaI90zMgpQsScHsGmRFUsheH6O1jecR5m5BZlFSzF5NkpJ7lMJ85etDlPWjHdMJ6aMiFdYPdgzw6Q90Yvwo2+fM+3dps9lsNpvNP8gvi7UYry9B6TcAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTItMDUtMDJUMTk6NDY6NTErMDE6MDAcdbR4AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEyLTA1LTAyVDE5OjQ2OjUxKzAxOjAwbSgMxAAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII='); - background-repeat:no-repeat; - text-indent:-999999px; - } - } - } - } - } -} -.ie6 #main-nav ul#mysoc-menu li a#mysoc-logo { - background: url('/cobrands/fixmystreet/images/ie_mysoc_logo.gif') center no-repeat; -} -.ie7 #main-nav ul#mysoc-menu li a#mysoc-logo { - background: url('/cobrands/fixmystreet/images/sprite.png') -240px -38px no-repeat; -} - -//defines where the table caption is (login stuff on mob, nav menu on desktop) -.wrapper { - width:100%; - display:table; - caption-side:bottom; -} -// this is the user's logged in details or the login link etc -#user-meta { - p { - position: relative; - color: #fff; - background: $primary; - padding:1em 6em 1em 1em; - a { - position: absolute; - right:1em; - @include inline-block; - text-transform:uppercase; - font-size:0.75em; - background:#333; - padding:0.25em 0.75em; - color:#fff; - @include border-radius(0.25em); - } - } -} - - -// #key-tools is the list that's pulled out an stick to the bottom of the page of desktop, below is mostly just aesthetic -.shadow-wrap { - @extend .full-width; - ul#key-tools{ - @include list-reset-soft; - margin-bottom: 1em; - display: table; - width:100%; - li{ - display: table-cell; - vertical-align: bottom; - text-align: center; - border-right:0.25em solid #fff; - &:last-child { - border-right:none; - } - input[type=submit] { - width: 100%; - border: none; - } - a, input[type=submit] { - display: block; - background-color: #f5f5f5; - background-repeat: no-repeat; - color:#333; - padding:4em 2em 1em 2em; - text-transform:uppercase; - font: { - size:0.6875em; - font-family: 'PTSansRegular',PT Sans,Verdana,Arial,Sans-Serif; - } - &:hover, &.hover { - text-decoration:none; - background-color:#333; - color:#fff; - } - &.abuse { - background-image:url('/cobrands/fixmystreet/images/sprite.png'); - background-position:center -2424px; - } - &.feed { - background-image:url('/cobrands/fixmystreet/images/sprite.png'); - background-position:center -2563px; - } - &.chevron { - background-image:url('/cobrands/fixmystreet/images/sprite.png'); - background-position:center -2716px; - } - &.hover { - background-image:url('/cobrands/fixmystreet/images/sprite.png'); - background-position:center -2064px; - } - } - } - } -} - -//because display:table doesn't work we float -.ie6, .ie7 { - .shadow-wrap { - ul#key-tools{ - background:#f5f5f5; - li{ - float:left; - a { - padding-left:1.5em; - padding-right:3em; - } - } - } - } -} -.ie6 .shadow-wrap ul#key-tools li a { - &.abuse { - background-image:url('/cobrands/fixmystreet/images/ie_key_tools_sprite.gif'); - background-position: right 0px; - } - &.feed { - background-image:url('/cobrands/fixmystreet/images/ie_key_tools_sprite.gif'); - background-position: right -58px; - } - &.chevron { - background-image:url('/cobrands/fixmystreet/images/ie_key_tools_sprite.gif'); - background-position: right -116px; - } - &:hover { - background-image:url('/cobrands/fixmystreet/images/ie_key_tools_sprite_dark.gif'); - } -} - - -//footer blocks -#footer-mobileapps { - @extend .full-width; - padding: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; - } - } - } -} - -#footer-help { - ul { - @include list-reset-soft; - li { - border-bottom:1px solid #AFAFAF; - &:last-child { - border-bottom:none; - } - h4 { - margin:0.75em 0 0.25em 0; - } - p { - font-size:0.75em; - } - } - } -} - - - -/*BUTTONS*/ - -// Default style set for buttons, inputs and .btn class. Red and green class available. - -button, input[type=submit],.btn{ - @include button-reset; -} - -.green-btn, -button.green-btn, -input.green-btn{ - @include button-reset(#9FDE23, #7FB900, #5B9700, #fff, #9FDE23, #7FB900, #5B9700, #fff); -} - -.red-btn, -button.red-btn, -input.red-btn{ - @include button-reset(#FF0038, #BF002A, #80001C, #fff, #FF0038, #BF002A, #80001C, #fff); -} - -.final-submit, -input.final-submit { - margin:1em 0.5em; - float:right; -} - -.button-right, -.button-left, -a.button-right, -a.button-left { - @include inline-block; - cursor:pointer; - font-size: 1em; - line-height: 1; - margin:0; - border:1px solid #999; - color:#333; - background: #eee; - @include border-radius(4px); - &:hover{ - color:#fff; - background:#777; - text-decoration: none; - border:1px solid #666; - } -} -.button-right, -a.button-right, -:hover.button-right, -a:hover.button-right { - padding:1em 3em 1em 1em; - background-image: url('/cobrands/fixmystreet/images/sprite.png'); - background-repeat:no-repeat; - background-position:right -686px; -} - -.button-left, -a.button-left, -:hover.button-left, -a:hover.button-left { - padding:1em 1em 1em 3em; - background-image: url('/cobrands/fixmystreet/images/sprite.png'); - background-repeat:no-repeat; - background-position:-18px -802px; -} - -.big-green-banner { - position: relative; - z-index:1000; - top:-1.75em; - background: $contrast1; - color: #fff; - padding:1em; - text: { - transform:uppercase; - align:center; - } - font-size:0.875em; - &:before { - content: ""; - left:-0.5em; - top:0; - position: absolute; - width: 0; - height: 0; - border-left: 0.5em solid transparent; - border-bottom: 0.5em solid $contrast1_dark; - } -} - -.banner { - position: relative; - z-index:1100; - p { - position: absolute; - top:-1.95em; - right:0; - @include inline-block; - font-size:0.6875em;//11px - line-height:1em; - padding:0.5em 1em; - margin:0; - color:#1a1a1a; - background: #ccc; - text: { - transform:uppercase; - align:center; - } - &:before { - content: ""; - left:-0.5em; - top:0; - position: absolute; - width: 0; - height: 0; - border-left: 0.5em solid transparent; - border-bottom: 0.5em solid #888; - } - &#fixed { - color:#fff; - background: $contrast1; - &:before { - border-bottom: 0.5em solid $contrast1_dark; - } - } - } -} - -/*OTHER*/ - -.plain-list { - @include list-reset-soft; - li { - margin-bottom:1em; - } -} - -.issue-list{ - margin: 0 0 1em 0; - padding: 0; - border-bottom: 0.25em solid $primary; - li{ - list-style: none; - background: #f6f6f6; - margin: 0.25em 0 0 0; - padding: 0.5em 1em; - display:block; - .update-wrap { - display:table; - width:100%; - .update-text, - .update-img { - display:table-cell; - vertical-align:top; - p { - margin-bottom: 0.5em; - } - } - .update-img { - text-align:right; - img { - margin:-0.5em -1em 0 0.5em; - height:auto; - } - } - } - } -} -//display:table fixes -.ie7, .ie7 { - .issue-list li .update-wrap { - .update-text { - float:left; - width:19em; - } - .update-img { - float:right; - } - } -} - -.issue-list-a { - margin: 0 0 1em 0; - padding: 0; - border-bottom: 0.25em solid $primary; - li { - list-style: none; - margin:0; - padding:0; - margin: 0.25em 0 0 0; - /* see note below about this */ - display:table; - background: #f6f6f6; - color:#222222; - width:100%; - &:hover { - text-decoration:none; - color:#222222; - background:#e6e6e6; - } - a { - color:#222222; - } - a:hover { - color:#222222; - background:#e6e6e6; - text-decoration: none; - } - .text { - /* this is and the display:table above are required otherwise - on iphone the rows end up being slightly wider than the screen */ - display: table-cell; - width: 100%; - vertical-align:top; - padding: 0px 0px 0px 1em; - .img { - width: 90px; - float: right; - height:auto; - } - h4 { - padding-right: 1em; - padding-top: 0.25em; - margin:0; - } - small { - color:#666; - display: block; - padding-right: 1em; - padding-top: 0.25em; - padding-bottom: 0.25em; - } - } - >p { - margin: 0.25em 0 0 0; - padding: 0.5em 1em; - background: #f6f6f6; - } - } -} -.list-a { - @extend .issue-list-a; - a { - padding:0.5em 1em; - font-weight:bold; - } -} -//display:table fixes -.ie6, .ie7 { - .issue-list-a { - overflow:hidden; - li { - clear:both; - width:100%; - display:block; - overflow:hidden; - .text { - float:left; - } - } - } -} -.ie6 .issue-list-a li a { - height:5.5em; - .img { - height:60px; - } -} - -// fancybox gallery images have a magnifying glass in the corner -.update-img { - a { - @include inline-block; - position:relative; - span { - position:absolute; - top:0; - right:0; - display:block; - width:20px; - height:20px; - opacity: 0.5; - background:#fff url(/cobrands/fixmystreet/images/sprite.png) -16px -1098px no-repeat; - //hide text - http://nicolasgallagher.com/another-css-image-replacement-technique/ - font: 0/0 a; - color: transparent; - } - &:hover span { - opacity: 1; - } - } -} -//bit of a hack - as we can't use em's, push the span out to the right -//by how much it would be if the user did not resize the text -.issue-list li .update-wrap .update-img a span { - right:-16px; - top:-8px; -} - -.problem-header { - margin-bottom:1em; -} -.problem-header .update-img { - float: right; - margin-left: 0.5em; - margin-bottom: 0.5em; -} - -// map stuff -#map_box{ - @extend .full-width; - background: #333; - height: 29em; - margin-bottom: 1em; - overflow: hidden; - position: relative; - #map { - width:100%; - height:100%; - } -} - -// OpenLayers fix for navigation being top right -// Left and right so that zoom can be left, pan right. -#fms_pan_zoom { - right: 0.5em !important; - top: 0.5em !important; - 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; -} - -// Openlayers map controls (overrides) -#fms_pan_zoom_panup, -#fms_pan_zoom_pandown, -#fms_pan_zoom_panleft, -#fms_pan_zoom_panright, -#fms_pan_zoom_zoomin, -#fms_pan_zoom_zoomout { - width:36px !important; - height:36px !important; - text-indent:-999999px; - opacity:0.85; - background:url('/cobrands/fixmystreet/images/sprite.png') no-repeat; - &:hover { - opacity:1; - } - filter: none !important; // Override OpenLayers PNG handling of the navigation -} - -#fms_pan_zoom_zoomworld { - display:none !important; - visibility:none !important; -} - -#fms_pan_zoom_panup { - background-position:-42px -222px; - right:30px !important; - left: auto !important; - top:0 !important; -} -#fms_pan_zoom_pandown { - background-position:-42px -282px; - right:30px !important; - left: auto !important; - top:72px !important; -} -#fms_pan_zoom_panleft { - background-position:-12px -252px; - width:48px !important; - right:48px !important; - left: auto !important; - top:36px !important; -} -#fms_pan_zoom_panright { - background-position:-60px -252px; - width:48px !important; - right:0 !important; - left: auto !important; - top:36px !important; -} -#fms_pan_zoom_zoomin { - background-position:-152px -223px; - height:44px !important; - left:0 !important; - top:0 !important; -} -#fms_pan_zoom_zoomout { - background-position:-152px -259px; - height:44px !important; - left:0 !important; - top:44px !important; -} - -//hide pins, show old reports etc -#sub_map_links { - position: absolute; - left: 0; - right:0; - bottom: 0; - z-index: 1100; - background:#333; - background:rgba(0, 0, 0, 0.7); - margin:0; - a { - @include inline-block; - font-size:0.6875em; - color:#fff; - padding:0.6em 3em 0.5em 1em; - background-repeat:no-repeat; - &#hide_pins_link { - background-image:url('/cobrands/fixmystreet/images/sprite.png'); - background-position: right -3976px; - } - &#all_pins_link { - background-image:url('/cobrands/fixmystreet/images/sprite.png'); - background-position: right -4022px; - } - &#map_permalink { - background-image:url('/cobrands/fixmystreet/images/sprite.png'); - background-position: right -4070px; - } - &.feed { - background-image:url('/cobrands/fixmystreet/images/sprite.png'); - background-position: right -3936px; - } - &:hover { - background-color:#000; - text-decoration:none; - } - } -} - -.ie6 #sub_map_links a { - &#hide_pins_link { - background-image:url('/cobrands/fixmystreet/images/ie_sub_map_links_sprite.gif'); - background-position: right 1px; - } - &#all_pins_link { - background-image:url('/cobrands/fixmystreet/images/ie_sub_map_links_sprite.gif'); - background-position: right -45px; - } - &#map_permalink { - background-image:url('/cobrands/fixmystreet/images/ie_sub_map_links_sprite.gif'); - background-position: right -93px; - } -} - -#mob_sub_map_links { - position: absolute; - z-index:1100; - bottom:0; - display:table; - margin:0; - width:100%; - background:rgba(0, 0, 0, 0.7); - a { - color:#fff; - width:50%; - padding:0.5em 0; - font-size:1em; - display:table-cell; - text-align:center; - &:hover { - background:#000; - text-decoration:none; - } - } - &.map_complete { - background:none; - display:block; - border-bottom:4px solid #fff; - a#try_again { - display:block; - margin:0 auto 6em auto; - background:rgba(0, 0, 0, 0.8); - @include border-radius(0.5em); - } - a#mob_ok { - position:absolute; - right:1em; - bottom:0; - height:20px; - padding-top:30px; - display:block; - width:4em; - background:#fff url('/cobrands/fixmystreet/images/sprite.png') 12px -4140px no-repeat; - color:#000; - } - } -} - -.mobile-map-banner { - margin:0; - position: absolute; - top:0; - left:0; - right:0; - font-size:0.75em; - background:rgba(0, 0, 0, 0.7); - padding:0.75em 30px; - a { - @include button-reset(#333, #1a1a1a, #1a1a1a, #fff, #333, #1a1a1a, #1a1a1a, #fff); - font: { - weight:normal; - size:0.875em; - } - line-height:1; - padding:0.5em 0.75em; - position:absolute; - left:0.3em; - top:0.3em; - } -} - -.olControlAttribution { - bottom: 3.25em !important; - right: 0.25em !important; - left: 0.25em !important; - color: #222222; - font-size:0.75em !important; -} -.olControlAttribution img { - vertical-align: bottom; -} -.olControlPermalink { - bottom: 3px !important; - right: 3px; -} - -/* Drag is only present in noscript form. XXX Copy from core. */ -#drag { - input, img { - position: absolute; - border: none; - max-width: none; - } - input { - cursor: crosshair; - background-color: #cccccc; - } - img { - cursor: move; - } - img.pin { - z-index: 100; - background-color: inherit; - } - a img.pin { - cursor: pointer; - cursor: hand; - } -} - -// only on mobile, this is a sidebar on desk (#report-a-problem-sidebar) -a.rap-notes-trigger, -a:hover.rap-notes-trigger { - display:block; - width:90%; - padding-left:5%; - padding-right:5%; -} -.rap-notes { - margin:1em 0; -} - -//report a problem tabs -#problems-nav { - padding:0 1em; - overflow:hidden; - border-bottom:0.25em solid #333; - ul { - @include list-reset-soft; - display:table; - width:100%; - li { - display:table-cell; - border-right:0.25em solid #fff; - &:last-child { - border-right:none; - } - a { - display:block; - background:#e2e2e2; - color:#333; - padding:1em; - text: { - transform:uppercase; - align:center; - } - &:hover { - text-decoration:none; - background:#e6e6e6; - } - &.active { - background:#333; - color:#fff; - } - } - } - } -} - -//display:table fixes -.ie6, .ie7 { - #problems-nav { - clear:both; - margin:0; - padding:0; - ul li { - float:left; - } - } -} - - -table.nicetable { - width:100%; - margin-bottom:2em; - thead { - border-bottom:0.25em solid #ccc; - th { - font-size:0.75em; - } - } - tr { - &.a { - background:#f6f6f6; - } - &:nth-child(even) { - background:#f6f6f6; - } - &.gone { - color: #666666; - background-color: #cccccc; - } - &:hover { - background:#FFF5CC; - cursor:pointer; - } - td { - padding:0.25em; - a { - &:hover { - text-decoration:none; - } - } - } - } - .title { - text-align:left; - } - .data { - width:12%; - } -} - -.promo { - @extend .full-width; - color: $primary_text; - background: $primary; - padding:1em; - margin-bottom:1em; - overflow:hidden; - position: relative; - .close-promo { - position:absolute; - top:0.5em; - right:0.5em; - display:block; - width:16px; - height:16px; - text-indent:-999999px; - background:url(/cobrands/fixmystreet/images/sprite.png) -341px -263px no-repeat; - @include border-radius(4px); - &:hover { - background:#222 url(/cobrands/fixmystreet/images/sprite.png) -341px -223px no-repeat; - } - } -} - -.alert { - @extend .full-width; - background:#ff0000; - padding:1em; - margin-bottom:1em; - color:#fff; - a, a:hover { - color:$primary; - } -} - -.pagination { - text-align:center; - padding:0.5em 1em; - background:#eee; - position:relative; - .prev { - position:absolute; - left:0.5em; - } - .next { - position:absolute; - right:0.5em; - } - a { - @include inline-block; - color: $primary_text; - background: $primary; - padding-left:0.5em; - padding-right:0.5em; - color:#1a1a1a; - &:hover { - color:#1a1a1a; - text-decoration:none; - background:$primary/1.1; - } - } -} - -// this is a bit of a hack to get some differentation between desk and mobile -.desk-only { - display:none; -} - -// hide anything with this class if js is working -.js .hidden-js { - display: none; - visibility: hidden; -} - -// hide anything with this class if js is NOT working -.no-js .hidden-nojs { - display: none !important; - visibility: hidden; -} - - -/* Front page */ -#front-main { - text-align:center; - margin: 1em; - h2 { - font: { - style:italic; - font-family: 'PTSansRegular',PT Sans,Verdana,Arial,Sans-Serif; - size:1.1875em; - } - color:#4d4d4d; - } - p { - margin: 0.5em 0 0; - } - #postcodeForm { - @extend .full-width; - padding:1em; - color: $primary_text; - background: $primary; - font-family: 'PTSansRegular',PT Sans,Verdana,Arial,Sans-Serif; - label { - margin:0; - } - div { - display:table; - width:100%; - background:#fff; - border:1px solid $primary; - input#pc { - display:table-cell; - margin:0; - padding:0.25em 2%; - width:86%; - border:none; - background:none; - line-height:1.5em; - } - input#submit { - display:table-cell; - border:none; - padding:0; - margin:0; - width:14%; - height:35px; - background:$primary; - color:#fff; - text-transform:uppercase; - @include border-radius(0); - &:hover { - background:lighten($primary, 10%); - } - } - } - } - a#geolocate_link { - @include inline-block; - vertical-align:top; - background:#1a1a1a; - color:#C8C8C8; - padding:0.5em; - font: { - font-family: 'PTSansRegular',PT Sans,Verdana,Arial,Sans-Serif; - size:0.8125em; - } - @include border-radius(0 0 0.25em 0.25em); - &:hover { - text-decoration:none; - background:#2a2a2a; - } - } -} - -#front-howto { - #front_stats { - display:table; - width:100%; - color: $primary_text; - background: $primary; - font-family: 'PTSansRegular',PT Sans,Verdana,Arial,Sans-Serif; - div { - display:table-cell; - text-align:center; - padding:1em; - line-height:1.25em; - font: { - size:0.8125em; - weight:bold; - } - big { - display:block; - margin-bottom:0.5em; - font-size:1.5385em; - } - } - } -} - -#front-recently { - .issue-list-a { - border-bottom:none; - } -} - -#alerts { - ul { - margin-bottom: 1em; - } - li { - padding: 0em; - margin-bottom: 0.5em; - } - .a { - background: #f6f6f6; - } - img[width="16"] { - float: right; - } -} - diff --git a/web/cobrands/stevenage/_h5bp.scss b/web/cobrands/stevenage/_h5bp.scss deleted file mode 100644 index f4078cca6..000000000 --- a/web/cobrands/stevenage/_h5bp.scss +++ /dev/null @@ -1,271 +0,0 @@ -/* - * HTML5 ✰ Boilerplate, with minor tweaks. - * - * What follows is the result of much research on cross-browser styling. - * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal, - * Kroc Camen, and the H5BP dev community and team. - * - * Detailed information about this CSS: h5bp.com/css - * - * ==|== normalize ========================================================== - */ - - -/* ============================================================================= - HTML5 display definitions - ========================================================================== */ - -article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; } -audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; } -audio:not([controls]) { display: none; } -[hidden] { display: none; } - - -/* ============================================================================= - Base - ========================================================================== */ - -/* - * 1. Correct text resizing oddly in IE6/7 when body font-size is set using em units - * 2. Force vertical scrollbar in non-IE - mySociety removed. - * 3. Prevent iOS text size adjust on device orientation change, without disabling user zoom: h5bp.com/g - */ - -html { font-size: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } - -/* mySociety change: line-height from 1.4 */ -body { margin: 0; font-size: 1em; line-height: 1.5; } - -/* mySociety addition: background colour */ -body, button, input, select, textarea { - font-family: sans-serif; - color: #222; - background-color: #fff -} - -/* - * Remove text-shadow in selection highlight: h5bp.com/i - * These selection declarations have to be separate - * mySociety change: background colour from #fe57a1 - */ - -::-moz-selection { background: #ffeeaa; color: #000; text-shadow: none; } -::selection { background: #ffeeaa; color: #000; text-shadow: none; } - - -/* ============================================================================= - Links - ========================================================================== */ - -/* mySociety removal: link colours specified elsewhere */ -a:focus { outline: thin dotted; } - -/* Improve readability when focused and hovered in all browsers: h5bp.com/h */ -a:hover, a:active { outline: 0; } - - -/* ============================================================================= - Typography - ========================================================================== */ - -abbr[title] { border-bottom: 1px dotted; } - -b, strong { font-weight: bold; } - -/* mySociety change: from 1em 40px; */ -blockquote { margin: 1.5em 2em; } - -dfn { font-style: italic; } - -hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; } - -ins { background: #ff9; color: #000; text-decoration: none; } - -mark { background: #ff0; color: #000; font-style: italic; font-weight: bold; } - -/* Redeclare monospace font family: h5bp.com/j */ -pre, code, kbd, samp { font-family: monospace, serif; _font-family: 'courier new', monospace; font-size: 1em; } - -/* Improve readability of pre-formatted text in all browsers */ -pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; } - -q { quotes: none; } -q:before, q:after { content: ""; content: none; } - -small { font-size: 85%; } - -/* Position subscript and superscript content without affecting line-height: h5bp.com/k */ -sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } -sup { top: -0.5em; } -sub { bottom: -0.25em; } - - -/* ============================================================================= - Lists - ========================================================================== */ - -/* mySociety change: left 40px, top/bottom 1em */ -ul, ol { margin: 0 0 1.5em; padding: 0 0 0 2em; } -dd { margin: 0 0 0 2em; } -nav ul, nav ol { list-style: none; list-style-image: none; margin: 0; padding: 0; } - - -/* ============================================================================= - Embedded content - ========================================================================== */ - -/* - * 1. Improve image quality when scaled in IE7: h5bp.com/d - * 2. Remove the gap between images and borders on image containers: h5bp.com/e - */ - -img { border: 0; -ms-interpolation-mode: bicubic; vertical-align: middle; } - -/* - * Correct overflow not hidden in IE9 - */ - -svg:not(:root) { overflow: hidden; } - - -/* ============================================================================= - Figures - ========================================================================== */ - -figure { margin: 0; } - - -/* ============================================================================= - Forms - ========================================================================== */ - -form { margin: 0; } -fieldset { border: 0; margin: 0; padding: 0; } - -/* Indicate that 'label' will shift focus to the associated form element */ -label { cursor: pointer; } - -/* - * 1. Correct color not inheriting in IE6/7/8/9 - * 2. Correct alignment displayed oddly in IE6/7 - */ - -legend { border: 0; *margin-left: -7px; padding: 0; } - -/* - * 1. Correct font-size not inheriting in all browsers - * 2. Remove margins in FF3/4 S5 Chrome - * 3. Define consistent vertical alignment display in all browsers - */ - -button, input, select, textarea { font-size: 100%; margin: 0; vertical-align: baseline; *vertical-align: middle; } - -/* - * 1. Define line-height as normal to match FF3/4 (set using !important in the UA stylesheet) - */ - -button, input { line-height: normal; } - -/* - * 1. Display hand cursor for clickable form elements - * 2. Allow styling of clickable form elements in iOS - * 3. Correct inner spacing displayed oddly in IE7 (doesn't effect IE6) - */ - -button, input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; -webkit-appearance: button; *overflow: visible; } - -/* - * Consistent box sizing and appearance - */ - -input[type="checkbox"], input[type="radio"] { box-sizing: border-box; padding: 0; } -input[type="search"] { -webkit-appearance: textfield; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; box-sizing: content-box; } -input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } - -/* - * Remove inner padding and border in FF3/4: h5bp.com/l - */ - -button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } - -/* - * 1. Remove default vertical scrollbar in IE6/7/8/9 - * 2. Allow only vertical resizing - */ - -textarea { overflow: auto; vertical-align: top; resize: vertical; } - - -/* ============================================================================= - Tables - ========================================================================== */ - -table { border-collapse: collapse; border-spacing: 0; } -td { vertical-align: top; } - - -/* ==|== primary styles ===================================================== - Author: - ========================================================================== */ - - - - - - - - - - - - - - - - -/* ==|== non-semantic helper classes ======================================== - Please define your styles before this section. - ========================================================================== */ - -/* For image replacement */ -.ir { display: block; border: 0; text-indent: -999em; overflow: hidden; background-color: transparent; background-repeat: no-repeat; text-align: left; direction: ltr; *line-height: 0; } -.ir br { display: none; } - -/* Hide from both screenreaders and browsers: h5bp.com/u */ -.hidden { display: none !important; visibility: hidden; } - -/* Hide only visually, but have it available for screenreaders: h5bp.com/v */ -.visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } - -/* Extends the .visuallyhidden class to allow the element to be focusable when navigated to via the keyboard: h5bp.com/p */ -.visuallyhidden.focusable:active, .visuallyhidden.focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } - -/* Hide visually and from screenreaders, but maintain layout */ -.invisible { visibility: hidden; } - -/* Contain floats: h5bp.com/q */ -/* mySociety change: rename to cf */ -.cf:before, .cf:after { content: ""; display: table; } -.cf:after { clear: both; } -.cf { *zoom: 1; } - - - -/* ==|== print styles ======================================================= - Print styles. - Inlined to avoid required HTTP connection: h5bp.com/r - ========================================================================== */ - -/* mySociety removal: bits of * and :after */ -@media print { - * { box-shadow:none !important; text-shadow: none !important; filter:none !important; -ms-filter: none !important; } /* Black prints faster: h5bp.com/s */ - a, a:visited { text-decoration: underline; } - abbr[title]:after { content: " (" attr(title) ")"; } - pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } - thead { display: table-header-group; } /* h5bp.com/t */ - tr, img { page-break-inside: avoid; } - img { max-width: 100% !important; } - @page { margin: 0.5cm; } - p, h2, h3 { orphans: 3; widows: 3; } - h2, h3 { page-break-after: avoid; } -} diff --git a/web/cobrands/stevenage/_layout.scss b/web/cobrands/stevenage/_layout.scss deleted file mode 100644 index 5b2123280..000000000 --- a/web/cobrands/stevenage/_layout.scss +++ /dev/null @@ -1,1100 +0,0 @@ -@import "compass"; -@import "../fixmystreet/_mixins"; - -//hacks for desk/mob only stuff -.desk-only { - display: block; -} -.mob-only { - display: none; -} - -body { - background: #dddddb; //#1A1A1A url(/cobrands/fixmystreet/images/tile.jpg) 0 0 repeat; -} - -h1 { - margin-top: 0; -} - -// Page wrapper and header bits follow - -.container{ - margin: 0 auto; - padding: 0em; - width: 60em; - position: relative; - z-index:1; -} - -//z-index stack order gets reset to 0 in ie6/7 if you position anything, -//so to fix things we give it a high value (don't ask me why) -//see: http://brenelz.com/blog/squish-the-internet-explorer-z-index-bug/ -//this affects #site-logo -.ie6, .ie7 { - .container { - z-index:100; - } -} - -.wrapper{ - display: table; - caption-side: top; - width: 100%; - .table-cell { - display:table-cell; - } -} - -//pad the top of the wrapper to allow space for the menu to fit in -//when its positioned absolute below -.ie6, .ie7 { - .wrapper { - padding-top:4em; - } -} - -.nav-wrapper{ - display: table-caption; - .nav-wrapper-2{ - width: 100%; - min-height: min-intrinsic; - position: absolute; - top:9.5em; - border-top: none; - border-left:0; - border-right:0; - z-index:2; - padding-top: 0.75em; - padding-bottom: 0.25em; - background-color: #6b6969; - background-image: -webkit-gradient(linear, left top, left bottom, from(#6b6969), to(#555454)); /* Safari 4+, Chrome */ - background-image: -webkit-linear-gradient(top, #6b6969, #555454); /* Chrome 10+, Safari 5.1+, iOS 5+ */ - background-image: -moz-linear-gradient(top, #6b6969, #555454); /* Firefox 3.6-15 */ - background-image: -o-linear-gradient(top, #6b6969, #555454); /* Opera 11.10-12.00 */ - background-image: linear-gradient(to bottom, #6b6969, #555454); /* Firefox 16+, IE10, Opera 12.50+ */ - } -} - -//position absolute the menu as ie doesn't like display:table -.ie6, .ie7 { - #stevenage_cc_header { - position:absolute; - top:0; - } - .nav-wrapper { - position: absolute; - top:0; - left:0; - width:100%; - .nav-wrapper-2 { - // position static as well so we fix lots of the z-index issues - //position:static; - } - } -} - -// Resets a lot of the mobile styling. #site-header only used to help position logo on desktop -#site-header { - height: auto; - background: none; - border-top: 0px; - .container { - position: static;//reset position so the nav links become clickable - } -} -#site-logo { - top: 0.9em; - position: absolute; - z-index: 3; -} -.ie6, .ie7 { - #site-header { - height:3em; - .container { - //ie broken z-index bug: the site-logo won't appear if we don't do this - //doesn't seem to render the nav link unclickable like in other browsers - position: relative; - } - } - #site-logo { - position: absolute; - top:-3.25em; - } -} -#nav-link { - left:-999999px; -} -#main-nav{ - margin: 0 auto; - padding: 0em; - width: 60em; - ul{ - list-style: none; - padding: 0px; - margin: 0px; - float:none; - li{ - list-style: none; - display: inline; - margin: 0px; - padding: 0px; - float:left; - a, - span { - display: block; - color:#fff; - background: none; - border-bottom: none; - margin: 0; - margin-right: 2px; - font-family: 'PTSansRegular',PT Sans,Verdana,Arial,Sans-Serif; - } - } - &#main-menu{ - li{ - a, span{ - padding: 0.5em 0.75em; - font-size: 0.8em; - margin: 0; - @include border-radius(0.25em); - } - a:hover{ - background:#444; - } - a.report-a-problem-btn { - color: $primary_text; - background: $primary; - padding:0.5em 0.75em; - margin:0; - margin-bottom: 0; - margin-left: 0.25em; - color:#fff; - @include border-radius(0.25em); - &:hover { - background:$primary/1.1; - } - } - span { - color: #fff; - background-color: #066539; - } - } - } - &#mysoc-menu{ - padding: 0em 0.5em; - margin-left: 0.25em; - background:$primary url(/cobrands/fixmystreet/images/tile-y.jpg); - @include border-radius(0 0 0.375em 0.375em); - li{ - a{ - background:none; - color:#000; - text-transform: uppercase; - font-size: 0.6875em; - padding: 1.3em 0.7em 1em 0.7em; - &#mysoc-logo { - width:84px; - height:16px; - background-position: -20px -5px; - opacity: 0.8; - &:hover { - opacity: 1; - } - } - &:hover{ - color:#fff; - } - } - } - } - } -} -.ie7 #main-nav ul#mysoc-menu li a#mysoc-logo { - background-position: -260px -43px; -} - -// .content Is the white box - -// The narrow single column box -.content { - width: 27em; - margin-top: 3em; - margin-bottom: -1em; - margin-left: 0.5em; - padding: 1em 1em 3em; - background: #fff; - @include box-shadow(0px 0px 6px 1px #000); -} -.ie6, .ie7, .ie8 { - .content { - // 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; - } -} - -// map page - has fixed header and different styling -body.mappage { - #stevenage_cc_header{ - position: fixed; - } - .container { - width: auto; - } - .content { - float:left; - margin-top: 9em; - } -/* - #main-nav ul#main-menu li a, - #main-nav ul#main-menu li span { - padding: 1.4em 0.75em 1.35em 0.75em; - } - #main-nav ul#main-menu li a.report-a-problem-btn { - padding: 0.5em; - margin:0.9em 0.25em 0.85em 0.25em; - } -*/ - .nav-wrapper{ - .nav-wrapper-2{ - position: absolute; - top: 11em; - bottom: auto; - left: 0.5em; - width: 29em; - padding-top: 0.15em; - z-index: 0; - } - - } - #site-logo{ - position: fixed; - } -} -.ie6, .ie7 { - body.mappage { - #stevenage_cc_header { - position:absolute; - top:0; - } - .content{ - margin-top:6em; - } - // The below is *mandatory* to allow pins/zoom to be clickable in IE6/7. Do NOT remove. - .container { - float: left; - width: 27em; - margin-left: 0.7em; - } - .nav-wrapper{ - z-index:1; - .nav-wrapper-2 { - //position:static; - } - } - #site-logo { - position: absolute; - } - } -} -//ie8 needs different stuff on .nav-wrapper so we -//have to define all the rest of it again as this resets -//the z-index base yet again :S -.ie8 { - body.mappage { - #stevenage_cc_header{ - position:absolute; - top:0; - } - .nav-wrapper{ - position: relative; - z-index:0; - .nav-wrapper-2{ - position:absolute; - } - - } - #site-logo { - position: absolute; - } - } -} - - - -// full width page -body.fullwidthpage { - .content { - width: 57em; - box-shadow: none; - -webkit-box-shadow: none; - -moz-box-shadow:none; - -o-box-shadow:none; - background: none; - } - .intro { - width:40em; - } -} -// two thirds width page, also has option for a sidebar which can be sticky or not -body.twothirdswidthpage { - .content { - width:40em; - position: relative; - aside { - background:#eee; - position:absolute; - left:42em; - top:0; - z-index: -1; - width:13em; - padding:1em; - @include box-shadow(0px 0px 6px 1px #000); - h2 { - margin-top: 0; - } - img { - margin-bottom: 0.25em; - } - } - .sticky-sidebar { - position: absolute; - left:42em; - z-index: -1; - aside { - position: fixed; - top:19em; - left:auto; - } - } - } -} -//as ie6 doesn't like 'fixed' we will make it absolute again -.ie6 body.twothirdswidthpage .content .sticky-sidebar { - position:static; - aside { - position:absolute; - left:42em; - top:0; - } -} - - -// table wrapper - this enables anything to become a -// table with div children as table cells -.tablewrapper { - display:table; - width:100%; - padding:0 0 1em 0; - >div { - display:table-cell; - width:50%; - } - .full-width { - width:auto; - margin:0; - } -} - -//fix table to be a block for ie, float the children -.ie6, .ie7 { - .tablewrapper { - display:block; - div {//ie6 doesn't support '>div', so we'll go with the somewhat risker 'div' - width:48%; - display:block; - float: left; - border:none !important; - } - } -} - -// adds border to the top and goes full width -.bordered { - margin:0 -1em; - padding:0 1em; - width:auto; - border-top:0.25em solid $primary; -} - -//footer blocks -#footer-mobileapps { - border-right:1em solid transparent; - background:none; - padding:0; - @include box-shadow(inset rgba(0, 0, 0, 0) 0 0 0); - h2 { - 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(/cobrands/fixmystreet/images/sprite.png) -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; - } - } - } - } -} -.ie6, .ie7 { - #footer-mobileapps { - margin:0 0.5em; - 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; - ul { - display:table; - li { - display:table-cell; - border-bottom:none; - &:last-child { - border-left:1.25em solid transparent; - } - } - } -} -.ie6, .ie7 { - #footer-help { - margin-left:2%; - ul { - width:100%; - li { - float:left; - width:45% - } - } - } -} - - -// map box (fallback for non js really as most users -// will have fullscreen map) -#map_box{ - position: absolute; - height: 29em; - width: 29em; - right: 1em; - top: 140px; - z-index:1; -} - -// Pull OpenLayers navigation down a bit -#fms_pan_zoom { - top: 190px !important; -} - -// push zoom back over to right -#fms_pan_zoom_zoomin { - left:auto !important; - right:30px; - top:130px !important; -} -#fms_pan_zoom_zoomout { - left:auto !important; - right:30px; - top:174px !important; -} - -.olControlAttribution { - bottom:0.5em !important; - left: auto !important; -} - -#sub_map_links { - left:auto; - bottom:auto; - bottom:2em; - #map_links_toggle { - display:block; - cursor: pointer; - position:absolute; - left:-1em; - width:1em; - height:100%; - background:#000 url(/cobrands/fixmystreet/images/sprite.png) right -4119px no-repeat; - @include border-radius(0.25em 0 0 0.25em); - &:hover { - left:-1.5em; - //use border so we don't have to redefine the background-position - border-right:0.5em solid #000; - } - &.closed { - background-position: right -4159px; - } - } -} -.ie6 #sub_map_links #map_links_toggle { - height:1.75em; - background:#000 url('images/ie_sub_map_links_sprite.gif') center -143px no-repeat; - &.closed { - background-position: center -183px; - } -} - -// log in bit, pokes above the .content div -#user-meta{ - display:block; - position: relative; - max-width: 57em; - margin:0 auto; - p { - @include inline-block; - position:absolute; - top:1em; - height:2em; - padding:0.25em 6em 0.5em 0.5em; - @include box-shadow(rgba(0, 0, 0, 0.6) 0px 0px 4px 1px); - a { - top:0.5em; - right:0.5em; - font-size:0.6875em; - padding:0.5em 0.75em; - line-height:1em; - &:hover { - text-decoration:none; - background:#444; - } - } - } -} -.ie6, .ie7 { - #user-meta { - z-index:1; - p { - top:-2em; - } - } -} -.ie6 #user-meta { - width:57em; //ie6 doesn't like max-width -} - - - -// Wraps around #key-tools box - sticks to the bottom of the screen on desktop -.shadow-wrap { - position:fixed; - z-index:10; //this is just to ensure anythign inside .content that has position set goes sites it - bottom: 0; - width: 29em; - overflow: hidden; - padding-top: 3em; - ul#key-tools { - border-top: 0.25em solid $primary; - margin: 0; - @include box-shadow(-0em 0px 1em 1em #fff); - li { - border:none; - a, input[type=submit] { - font-size: 0.75em; - color:#666; - padding: 0.5em 1.5em 0.5em 0; - text-transform:none; - &.abuse { - background-image:url(/cobrands/fixmystreet/images/sprite.png); - background-position:right -2935px; - } - &.feed { - background-image:url(/cobrands/fixmystreet/images/sprite.png); - background-position:right -3074px; - } - &.chevron { - background-image:url(/cobrands/fixmystreet/images/sprite.png); - background-position:right -3225px; - } - &.hover { - background-image:url(/cobrands/fixmystreet/images/sprite.png); - background-position:right -1876px; - } - } - } - &.singleton { - li { - text-align:right; - a { - padding-right:3em; - } - } - } - } - &.static { - padding:0 0 1em 0; - position: static; - } -} -// The padding is for the fading out when it's fixed positioned, which it isn't in IE6. -.ie6 .shadow-wrap { - padding-top: 0; -} - -// pokes over the RHS with a little triangle -.big-green-banner { - top:auto; - right:-1.25em; - margin-left:-2em; - font-size:1.375em; - padding:1em 3em 1em 1em; - background: $contrast1 url(/cobrands/fixmystreet/images/sprite.png) right -2188px no-repeat; - &:before { - right:0; - left:auto; - top:-0.5em; - position: absolute; - border-top: 0.5em solid transparent; - border-left: 0.5em solid $contrast1_dark; - border-bottom:none; - } - span { - display: block; - font-size: 80%; - padding-top: 0.5em; - } -} -.ie6 .big-green-banner { - background: $contrast1 url(/cobrands/fixmystreet/images/ie_green_chevron.gif) right center no-repeat; -} - -.banner { - // state banners - p { - top:-2.25em; - padding:1em; - &:before { - left:-0.75em; - border-left: 0.75em solid transparent; - border-bottom: 0.75em solid #888; - } - &#fixed { - padding-top:5em; - background-image:url(/cobrands/fixmystreet/images/sprite.png); - background-position:-324px -326px; - background-repeat:no-repeat; - &:before { - border-bottom: 0.75em solid $contrast1_dark; - } - } - } -} -.ie6 .banner p { - top:-1.5em; - &#fixed { - background-image:url(/cobrands/fixmystreet/images/ie_fixed.gif); - background-position:center 0.75em; - } -} - - -// for pulling elements fullwidth regardless -// of .contents' padding -.full-width{ - margin: 0 0 0em -1em; - width: 29em; -} - -/*FORMS*/ -input[type=text], -input[type=password], -input[type=email], -textarea{ - max-width: 25em; -} - -/* form errors */ -div.form-error, -p.form-error { - display:block; -} - -input.form-error, -textarea.form-error { - @include border-radius(0 0 0.25em 0.25em); -} - - -// 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:9em; - width:15em; - @include box-shadow(rgba(0, 0, 0, 0.6) 0px 0px 4px 1px); - .sidebar-tips { - background:#eeeeee; - padding:1em; - font-size:0.75em; - } - .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. - } -} - -.no-js .general-sidebar-notes, -.no-js #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; - } -} - -// 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; - padding:0.75em; - margin:0; - &.dark { - background:#333333; - color:#ffffff; - } - } -} - -// Frontpage - -body.frontpage { - .table-cell { - .content { - margin: 1em auto 0; - } - } - .nav-wrapper-2{ - height:auto; - } - #site-header{ - height:auto; - } - #site-logo{ - top:3em; - width: 300px; - height: 60px; - background: url('/cobrands/fixmystreet/images/sprite.png') -2px -108px no-repeat; - } - #user-meta { - z-index:10; - p { - top:-4em; - right:0; - color: #fff; - background:none; - @include box-shadow(rgba(0, 0, 0, 0) 0 0 0); - a { - background:#fff; - color:#1a1a1a; - &:hover { - background:#ddd; - } - } - } - } -} -//logo fix -.ie6, .ie7, .ie8 { - body.frontpage { - #site-logo { - position:relative; - width:60em; - margin:0 auto; - } - } -} -.ie6, .ie7 { - body.frontpage { - #site-header { - height:4em; - } - #site-logo { - top:-1em; - } - #user-meta p { - top:-2em; - } - } -} -.ie6 body.frontpage #site-logo { - background:url(/cobrands/fixmystreet/images/ie_front_logo.gif) 0 0 no-repeat; -} - -// big yellow bit full screen width -#front-main { - color: $primary_text; - background: #fff; - margin: 0 auto; - margin-top: 1.5em; - padding: 1em; - max-width: 60em; - #front-main-container { - max-width: 57em; - margin:0 auto; - } - h2 { - font-style:normal; - margin:0; - color:#222; - } - #postcodeForm { - background:none; - overflow:hidden; - padding-bottom: 0; - margin-right:0.5em; - label { - margin:0.5em 0; - } - div { - display:block; - margin:0 auto; - width:20em; - overflow:hidden; - input#pc { - display:block; - float:left; - padding:0.25em 0.5em; - height:2em; - width:17em; - } - input#submit { - display:block; - float:right; - width:3em; - height:2.3em; - padding-top:0.2em; - } - } - } - a { - color: $primary_text; - text-decoration: underline; - &:hover { - text-decoration: none; - } - } - a#geolocate_link { - background:none; - color:#222; - text-decoration: none; - padding-bottom: 0; - &:hover { - text-decoration:underline; - background:none; - } - } -} -.ie7 #front-main { - #postcodeForm { - div { - input#pc { - height:1.5em; - width:16em; - } - } - } -} - -#front-howto { - border-right:1em solid transparent; - #front_stats { - background:none; - color: #222; - border-top:0.25em solid $primary; - padding-top:1em; - div { - big { - color:$primary; - font-size:3.2308em; - } - } - } -} -.ie6, .ie7 { - #front-main { - margin-top: 5.5em; - } - #front_stats { - div { - width:8em; - float:left; - } - } -} - -#front-recently { - border-left:1em solid transparent; -} - -#front-howto h2, -#front-recently h2 { - margin-top:0; -} - - -.ie6, .ie7 { - .tablewrapper { - #front-howto { - margin-right:2%; - } - #front-recently { - margin-left:2%; - } - } -} - - - - -/* MEDIA QUERIES */ -@media only screen and (min-width: 48em) and (max-width: 61em) { - .container { - width: 100%; - } - /*FORMS*/ - input[type=text], - input[type=password], - input[type=email], - textarea{ - width: 95%; - } - - // Remove central positioning of mainmenu and float right. - // Left padding is to ensure no overlap of the site-logo - // Background styling replicates header styling - - #main-nav{ - width: auto; - float:left; - padding-left: 180px; - } - .nav-wrapper { - // width:auto; - .nav-wrapper-2 { - // width:auto; - @include background(linear-gradient(#222, #555 30%, #555 60%, #222)); - } - } - - //Main menu drops below logo and my-soc menu - #main-menu{ - margin-top: 3em; - } - //therefore header needs to open up - #site-header { - height:6em; - } - // Pull OpenLayers navigation down a bit more - #fms_pan_zoom { - 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; - width:auto; - } - - //put the RAP notes into the main copy area - // Note: Also used for the non-JS case. - #report-a-problem-sidebar, - .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; - } - } - - //Revert to mobile use of the .full-width class - .full-width{ - width: auto; - 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 { - .content { - width:30em; - .sticky-sidebar { - left:32em; - top:30em; - aside { - top:19em; - } - } - } - } -} diff --git a/web/cobrands/stevenage/base.scss b/web/cobrands/stevenage/base.scss index b1ceac384..f17061356 100644 --- a/web/cobrands/stevenage/base.scss +++ b/web/cobrands/stevenage/base.scss @@ -1,8 +1,13 @@ -@import "h5bp"; -@import "colours"; -@import "../fixmystreet/_mixins"; +@import "../sass/h5bp"; +@import "./_colours"; +@import "../sass/mixins"; @import "compass"; -@import "fmsbase"; +$body-font: 'PTSansRegular', "PT Sans", Verdana, Arial, sans-serif; +$meta-font: $body-font; +$heading-font: 'PTSansCaptionRegular', "PT Sans Caption", Verdana, Arial, sans-serif; + +@import "../sass/base"; + @import "council_header"; diff --git a/web/cobrands/stevenage/fonts/Museo300-Regular-webfont.eot b/web/cobrands/stevenage/fonts/Museo300-Regular-webfont.eot Binary files differdeleted file mode 100755 index 15be4441c..000000000 --- a/web/cobrands/stevenage/fonts/Museo300-Regular-webfont.eot +++ /dev/null diff --git a/web/cobrands/stevenage/fonts/Museo300-Regular-webfont.svg b/web/cobrands/stevenage/fonts/Museo300-Regular-webfont.svg deleted file mode 100755 index 71109b80b..000000000 --- a/web/cobrands/stevenage/fonts/Museo300-Regular-webfont.svg +++ /dev/null @@ -1,229 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > -<svg xmlns="http://www.w3.org/2000/svg"> -<metadata> -This is a custom SVG webfont generated by Fontspring. -</metadata> -<defs> -<font id="Museo300" horiz-adv-x="1241" > -<font-face units-per-em="2048" ascent="1536" descent="-512" /> -<missing-glyph horiz-adv-x="557" /> -<glyph unicode=" " horiz-adv-x="557" /> -<glyph unicode="	" horiz-adv-x="557" /> -<glyph unicode=" " horiz-adv-x="557" /> -<glyph unicode="!" horiz-adv-x="608" d="M227 0v158h158v-158h-158zM231 1440h144l-6 -1063h-131z" /> -<glyph unicode=""" horiz-adv-x="638" d="M135 1114v346h121v-346h-121zM383 1114v346h121v-346h-121z" /> -<glyph unicode="#" horiz-adv-x="1460" d="M84 399l20 115h289l72 401h-289l19 115h290l72 410h125l-72 -410h355l71 410h125l-71 -410h286l-20 -115h-287l-70 -401h285l-18 -115h-287l-70 -399h-125l70 399h-354l-70 -399h-125l70 399h-291zM520 514h352l72 401h-354z" /> -<glyph unicode="$" horiz-adv-x="1089" d="M94 246l107 86q4 -8 14 -23.5t44 -54.5t72 -67.5t101.5 -53t132.5 -24.5q127 0 206 73.5t79 182.5q0 72 -39 128t-101.5 94t-138 72.5t-152.5 73.5t-139.5 86t-101.5 120t-39 167q0 135 100.5 233.5t266.5 118.5v195h117v-191q129 -12 232 -71.5t103 -173.5v-103h-135v68 q0 63 -70.5 106t-170.5 43q-135 0 -215 -64.5t-80 -158.5q0 -80 52 -140.5t132 -96t171 -81t171 -91.5t132 -131t52 -197q0 -150 -103 -262.5t-271 -128.5v-191h-117v191q-80 8 -151.5 38.5t-116.5 67.5t-80 74t-49 61z" /> -<glyph unicode="%" horiz-adv-x="1521" d="M127 1180q0 117 84 200.5t202.5 83.5t203.5 -84t85 -200q0 -119 -83.5 -202t-204.5 -83q-119 0 -203 83t-84 202zM139 0l1098 1440h145l-1095 -1440h-148zM248 1180q0 -72 48 -121t117.5 -49t119 49t49.5 121q0 70 -49.5 120t-119 50t-117.5 -50t-48 -120zM819 258 q0 119 84 203t203 84t204 -84t85 -203q0 -117 -85 -200t-204 -83t-203 83t-84 200zM942 260q0 -72 47 -121t117 -49t119 49t49 121q0 70 -49 120t-119 50t-117 -50t-47 -120z" /> -<glyph unicode="&" horiz-adv-x="1277" d="M94 401q0 127 68.5 233.5t191.5 141.5v4q-8 2 -21.5 8.5t-47 31t-60 57t-48 92t-21.5 131.5q0 162 115.5 263t310.5 101q35 0 76.5 -5t66.5 -11l25 -6l-41 -117q-68 14 -119 14q-125 0 -206 -68.5t-81 -178.5q0 -43 11.5 -82t41 -83t96 -70t160.5 -26h299v199h142v-199 h190v-126h-190v-211q0 -252 -126 -385.5t-347 -133.5q-213 0 -349.5 122t-136.5 304zM240 406q0 -127 92 -212t247.5 -85t243.5 95t88 294v207h-295q-184 0 -280 -80t-96 -219z" /> -<glyph unicode="'" horiz-adv-x="391" d="M135 1114v346h121v-346h-121z" /> -<glyph unicode="(" horiz-adv-x="632" d="M174 680q0 461 221 815h131q-223 -377 -223 -805q0 -473 236 -885h-129q-236 386 -236 875z" /> -<glyph unicode=")" horiz-adv-x="632" d="M94 -195q236 412 236 885q0 428 -224 805h132q221 -360 221 -815q0 -489 -236 -875h-129z" /> -<glyph unicode="*" horiz-adv-x="976" d="M94 1104l41 129l295 -109l-12 316h139l-14 -316l299 107l41 -125l-303 -88v-4l192 -246l-106 -80l-177 260h-4l-174 -258l-108 78l192 246v4z" /> -<glyph unicode="+" d="M86 522v119h473v522h125v-522h471v-119h-471v-522h-125v522h-473z" /> -<glyph unicode="," horiz-adv-x="440" d="M47 -199l117 367h149l-149 -367h-117z" /> -<glyph unicode="-" horiz-adv-x="884" d="M152 518v127h581v-127h-581z" /> -<glyph unicode="." horiz-adv-x="440" d="M141 0v164h158v-164h-158z" /> -<glyph unicode="/" horiz-adv-x="665" d="M6 -86l520 1606h129l-518 -1606h-131z" /> -<glyph unicode="0" horiz-adv-x="1232" d="M121 721q0 743 495 743q180 0 295 -102t159 -262t44 -379q0 -745 -498 -746q-495 1 -495 746zM266 721q0 -612 350.5 -612t350.5 612q0 610 -350.5 610t-350.5 -610z" /> -<glyph unicode="1" horiz-adv-x="974" d="M131 0v127h322v1057l2 80h-4q-14 -31 -72 -86l-154 -154l-90 92l326 324h135v-1313h315v-127h-780z" /> -<glyph unicode="2" horiz-adv-x="1155" d="M86 141q0 147 79 257t190.5 176.5t223 129t190.5 150.5t79 205t-81 193.5t-214 76.5q-106 0 -181 -47t-75 -108v-68h-135v106q0 66 40 116t102.5 79t128 43t124.5 14q201 0 319.5 -115.5t118.5 -287.5q0 -139 -78.5 -245.5t-190.5 -174.5t-223.5 -130t-190.5 -148.5 t-79 -194.5q0 -41 48 -41h602q45 0 45 45v96h133v-143q0 -66 -30 -95.5t-95 -29.5h-721q-72 0 -100.5 32.5t-28.5 108.5z" /> -<glyph unicode="3" horiz-adv-x="1081" d="M53 176l86 107q6 -6 17.5 -18.5t49.5 -42t79 -52.5t104.5 -41t126.5 -18q131 0 228.5 88t97.5 223q0 139 -102.5 221t-247.5 82h-101l-33 84l355 426q35 47 73 80v4q-41 -6 -116 -6h-375q-45 0 -45 -45v-97h-133v144q0 68 27.5 96.5t93.5 28.5h731v-94l-424 -498 q74 -4 146.5 -27.5t142 -71t112.5 -131t43 -194.5q0 -184 -136 -316.5t-339 -132.5q-80 0 -156.5 20.5t-129 50.5t-94.5 59.5t-60 50.5z" /> -<glyph unicode="4" horiz-adv-x="1150" d="M31 397v95l700 948h154v-916h229v-127h-229v-397h-144v397h-710zM197 518q57 6 118 6h428v588l7 139h-5q-35 -59 -73 -110l-400 -529l-75 -90v-4z" /> -<glyph unicode="5" horiz-adv-x="1165" d="M111 180l90 101q4 -6 13 -18.5t40 -41t65.5 -51.5t93 -41t122.5 -18q154 0 256 96t102 239q0 147 -107.5 242.5t-265.5 95.5q-72 0 -141.5 -19.5t-102.5 -39.5l-32 -20l-74 30l61 580q6 68 34 96.5t91 28.5h473q66 0 94.5 -30t28.5 -95v-144h-133v97q0 45 -45 45h-364 q-39 0 -45 -45l-37 -326l-13 -82h4q90 53 218 53q217 0 360 -136t143 -333q0 -195 -144 -332t-361 -137q-80 0 -154 21.5t-121 51.5t-83 59.5t-50 52.5z" /> -<glyph unicode="6" horiz-adv-x="1146" d="M88 633q0 113 22.5 227.5t72.5 224t122 193.5t179.5 135t236.5 51q70 0 136.5 -15t96.5 -30l31 -14l-53 -125q-90 51 -209 51q-143 0 -250.5 -89t-162 -219t-68.5 -284h4q49 82 149.5 128t216.5 46q197 0 323 -128t126 -328q0 -219 -129 -350.5t-324 -131.5 q-231 0 -375.5 185.5t-144.5 472.5zM242 541q0 -154 106.5 -293t257.5 -139q143 0 226 97t83 249q0 150 -89 240.5t-236 90.5q-139 0 -243.5 -77.5t-104.5 -167.5z" /> -<glyph unicode="7" horiz-adv-x="1048" d="M61 1171v144q0 66 29 95.5t94 29.5h850v-99l-712 -1341h-160l626 1180l80 133v4q-37 -4 -108 -4h-518q-45 0 -45 -45v-97h-136z" /> -<glyph unicode="8" horiz-adv-x="1167" d="M96 406q0 70 27 135t64.5 108t74.5 76t64 47l26 14v5q-8 4 -21.5 11t-47 33.5t-59 58.5t-47 84t-21.5 109q0 158 116.5 267.5t317.5 109.5t320.5 -106.5t119.5 -276.5q0 -61 -19.5 -120.5t-48 -100.5t-57 -72.5t-49.5 -46.5l-18 -16v-4q113 -57 172 -134t59 -196 q0 -170 -140.5 -293t-342.5 -123q-201 0 -345.5 117t-144.5 314zM244 412q0 -135 101 -219t241 -84q133 0 234.5 80.5t101.5 203.5q0 102 -68 158.5t-207 112.5q-135 57 -168 57q-55 0 -145 -95t-90 -214zM299 1087q0 -102 68.5 -156t207.5 -106q104 -39 130 -39 q45 0 113.5 94.5t68.5 196.5q0 115 -83 184.5t-214 69.5q-133 0 -212 -70t-79 -174z" /> -<glyph unicode="9" horiz-adv-x="1146" d="M88 983q0 219 128 350t323 131q231 0 375.5 -185t144.5 -472q0 -143 -38 -285.5t-110.5 -267.5t-198.5 -202t-286 -77q-70 0 -136.5 14.5t-96.5 30.5l-31 15l53 125q90 -51 209 -51q143 0 251.5 90t163 220t66.5 283h-4q-49 -82 -150.5 -129t-215.5 -47q-197 0 -322 128 t-125 329zM231 985q0 -150 89.5 -241t236.5 -91q139 0 243.5 78t104.5 168q0 154 -106.5 293t-257.5 139q-143 0 -226.5 -97t-83.5 -249z" /> -<glyph unicode=":" horiz-adv-x="579" d="M211 0v164h158v-164h-158zM211 866v164h158v-164h-158z" /> -<glyph unicode=";" horiz-adv-x="579" d="M111 -199l98 367h149l-131 -367h-116zM211 866v164h158v-164h-158z" /> -<glyph unicode="<" d="M141 530v103l926 414v-138l-752 -325v-4l752 -326v-137z" /> -<glyph unicode="=" d="M143 344v119h955v-119h-955zM143 700v119h955v-119h-955z" /> -<glyph unicode=">" d="M158 117v137l751 326v4l-751 325v138l925 -414v-103z" /> -<glyph unicode="?" horiz-adv-x="882" d="M80 1350q14 12 40.5 31.5t112.5 52t177 32.5q176 0 292.5 -102t116.5 -260q0 -94 -38 -170t-92 -126t-107.5 -97t-91 -109.5t-37.5 -136.5v-88h-140v92q0 90 37 164t89.5 125t105.5 99t90 109.5t37 131.5q0 100 -76 167.5t-193 67.5q-135 -2 -247 -88zM305 0v158h158 v-158h-158z" /> -<glyph unicode="@" horiz-adv-x="1513" d="M84 495.5q0 313.5 214 532.5t515 219q258 0 380 -110.5t122 -276.5v-645h145v-115h-551q-174 0 -291.5 116t-117.5 277.5t116.5 277.5t292.5 116h267q-4 102 -92.5 170.5t-260.5 68.5q-250 0 -423 -185t-173 -445q0 -264 173 -445.5t434 -181.5v-123q-317 0 -533.5 218 t-216.5 531.5zM643 495.5q0 -116.5 81 -198.5t198 -82h254v563h-250q-121 0 -202 -83t-81 -199.5z" /> -<glyph unicode="A" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186z" /> -<glyph unicode="B" d="M82 1313v127h612q172 0 280.5 -98.5t108.5 -264.5q0 -223 -184 -313v-4q111 -31 176.5 -128t65.5 -229q0 -186 -122 -294.5t-308 -108.5h-371q-66 0 -95.5 29.5t-29.5 95.5v1188h-133zM358 815h334q109 0 176.5 69.5t67.5 182.5q0 111 -66.5 178.5t-179.5 67.5h-332v-498 zM358 172q0 -45 45 -45h308q131 0 205.5 76t74.5 205t-77.5 206.5t-204.5 77.5h-351v-520z" /> -<glyph unicode="C" horiz-adv-x="1421" d="M78 731q0 311 203.5 522t506.5 211q82 0 171.5 -17t174.5 -52t139 -96.5t54 -139.5v-119h-135v80q0 94 -129 151.5t-270 57.5q-242 0 -404 -169t-162 -429t164 -440t408 -180q250 0 438 170l33 32l82 -104q-8 -10 -23.5 -25.5t-69 -55.5t-114 -70.5t-154.5 -56.5 t-194 -26q-313 0 -516 218.5t-203 537.5z" /> -<glyph unicode="D" horiz-adv-x="1464" d="M86 1313v127h578q330 0 526 -191.5t196 -527.5q0 -340 -196.5 -530.5t-525.5 -190.5h-320q-66 0 -95.5 29.5t-29.5 95.5v1188h-133zM362 172q0 -45 46 -45h241q270 0 429 154.5t159 439.5q0 283 -158.5 437.5t-429.5 154.5h-287v-1141z" /> -<glyph unicode="E" horiz-adv-x="1142" d="M86 1313v127h823q66 0 95.5 -30t29.5 -95v-144h-135v97q0 45 -45 45h-492v-525h541v-126h-541v-490q0 -45 46 -45h505q45 0 45 45v96h134v-143q0 -66 -30 -95.5t-95 -29.5h-623q-66 0 -95.5 29.5t-29.5 95.5v1188h-133z" /> -<glyph unicode="F" horiz-adv-x="1021" d="M86 1313v127h766q66 0 94.5 -30t28.5 -95v-144h-133v97q0 45 -45 45h-435v-541h523v-127h-523v-645h-143v1313h-133z" /> -<glyph unicode="G" horiz-adv-x="1495" d="M80 723q0 311 207 526t512 215q285 0 475 -151l29 -25l-84 -106q-18 16 -52 40.5t-143 65.5t-223 41q-244 0 -408 -173t-164 -433q0 -264 162 -438t408 -174q80 0 155.5 21.5t128 52t92 62.5t58.5 52l20 23v178q0 45 -45 45h-88v127h144q66 0 95.5 -30t29.5 -95v-547 h-132v109l3 61h-5q-6 -8 -19 -21.5t-58 -46t-96.5 -58.5t-132.5 -47.5t-165 -21.5q-297 0 -500.5 213t-203.5 535z" /> -<glyph unicode="H" horiz-adv-x="1550" d="M86 1313v127h152q66 0 95 -30t29 -95v-531h828v531q0 66 28.5 95.5t94.5 29.5h153v-127h-88q-45 0 -45 -45v-1268h-143v657h-828v-657h-143v1268q0 45 -45 45h-88z" /> -<glyph unicode="I" horiz-adv-x="600" d="M94 0v127h135v1186h-135v127h412v-127h-137v-1186h137v-127h-412z" /> -<glyph unicode="J" horiz-adv-x="1034" d="M49 403v58h144v-49q0 -158 76.5 -229.5t187.5 -71.5q109 0 184.5 71.5t75.5 225.5v860q0 45 -45 45h-357v127h420q66 0 95.5 -30t29.5 -95v-912q0 -217 -118.5 -322.5t-286.5 -105.5t-287 106.5t-119 321.5z" /> -<glyph unicode="K" horiz-adv-x="1208" d="M86 1313v127h152q66 0 95 -30t29 -95v-500h173q90 0 120 51l349 574h163l-370 -604q-37 -59 -74 -80v-4q35 -12 70 -82l249 -496q14 -31 37 -39t68 -8h41v-127h-76q-90 0 -127 19.5t-72 89.5l-262 526q-25 53 -131 53h-158v-688h-143v1268q0 45 -45 45h-88z" /> -<glyph unicode="L" horiz-adv-x="1085" d="M86 1313v127h152q66 0 95 -30t29 -95v-1143q0 -45 46 -45h477q45 0 45 45v96h135v-143q0 -66 -29.5 -95.5t-95.5 -29.5h-596q-66 0 -95.5 29.5t-29.5 95.5v1143q0 45 -45 45h-88z" /> -<glyph unicode="M" horiz-adv-x="1730" d="M45 0v127h76q43 0 45 45l100 1268h146l381 -838l71 -170h4q37 96 70 170l381 838h145l101 -1268q2 -45 45 -45h78v-127h-140q-66 0 -93.5 28.5t-31.5 96.5l-67 874l-6 201h-4q-39 -127 -74 -201l-342 -731h-129l-340 731l-76 205h-4q0 -127 -6 -205l-68 -874 q-4 -68 -31.5 -96.5t-93.5 -28.5h-137z" /> -<glyph unicode="N" horiz-adv-x="1556" d="M86 0v127h88q45 0 45 45v1268h131l735 -1026l117 -189h4q-10 113 -10 189v901q0 66 29.5 95.5t95.5 29.5h152v-127h-89q-45 0 -45 -45v-1268h-131l-735 1026l-119 186h-4q12 -111 12 -186v-901q0 -66 -29.5 -95.5t-94.5 -29.5h-152z" /> -<glyph unicode="O" horiz-adv-x="1619" d="M78 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5q-307 0 -520 219.5t-213 534.5zM227 729q0 -260 170 -439t414 -179q242 0 413 179t171 439q0 254 -170 427t-414 173t-414 -173t-170 -427z" /> -<glyph unicode="P" horiz-adv-x="1185" d="M86 1313v127h608q195 0 320 -119t125 -315q0 -199 -125 -320t-320 -121h-332v-565h-143v1313h-133zM362 692h314q143 0 229 84t86 230q0 143 -85 225t-228 82h-316v-621z" /> -<glyph unicode="Q" horiz-adv-x="1619" d="M78 729q0 309 212 522t517 213q311 0 524 -213t213 -522q0 -283 -180 -496l176 -176l-88 -92l-176 178q-197 -168 -469 -168q-305 0 -517 219.5t-212 534.5zM227 729q0 -260 168 -439t412 -179q205 0 356 120l13 11l-172 174l88 92l170 -176q133 170 133 397 q0 254 -169 426t-419 172q-246 0 -413 -172t-167 -426z" /> -<glyph unicode="R" horiz-adv-x="1239" d="M86 1313v127h610q182 0 298 -111.5t116 -298.5q0 -158 -82 -259t-197 -126v-4q29 -16 50 -57l206 -410q14 -31 37 -39t66 -8h29v-127h-64q-90 0 -127 19.5t-72 89.5l-206 411q-29 55 -56.5 70.5t-89.5 15.5h-242v-606h-143v1313h-133zM362 733h320q129 0 204 79t75 214 q0 133 -75 210t-202 77h-322v-580z" /> -<glyph unicode="S" horiz-adv-x="1060" d="M76 180l88 105q6 -6 17.5 -18.5t48 -43t77.5 -53.5t103.5 -42t126.5 -19q121 0 202.5 71.5t81.5 184.5q0 98 -72.5 167.5t-177 116.5t-210 97.5t-178 138.5t-72.5 211q0 154 122.5 261t317.5 107q82 0 165 -20.5t153.5 -79.5t70.5 -147v-103h-135v68q0 63 -75 106 t-177 43q-135 0 -215 -67.5t-80 -163.5q0 -59 30.5 -107.5t81 -80t114 -64.5t130 -59.5t130 -65.5t113.5 -83t81 -112.5t31 -154.5q0 -168 -120 -283t-317 -115q-82 0 -159.5 21.5t-128.5 51.5t-91 59.5t-59 52.5z" /> -<glyph unicode="T" horiz-adv-x="1269" d="M31 1171v152q0 66 25.5 91.5t90.5 25.5h975q66 0 91.5 -25.5t25.5 -91.5v-152h-133v97q0 45 -45 45h-354v-1313h-144v1313h-356q-45 0 -45 -45v-97h-131z" /> -<glyph unicode="U" horiz-adv-x="1468" d="M70 1313v127h151q66 0 95.5 -30t29.5 -95v-815q0 -180 105.5 -284.5t281.5 -104.5q178 0 283.5 105.5t105.5 287.5v811q0 66 30 95.5t95 29.5h152v-127h-88q-45 0 -45 -45v-774q0 -233 -146.5 -376t-384 -143t-385 142.5t-147.5 376.5v774q0 45 -45 45h-88z" /> -<glyph unicode="V" horiz-adv-x="1337" d="M25 1313v127h63q78 0 109.5 -22.5t58.5 -96.5l354 -969l56 -186h4q29 113 55 186l354 969q27 74 59.5 96.5t110.5 22.5h62v-127h-19q-57 0 -73 -45l-474 -1268h-153l-473 1268q-16 45 -74 45h-20z" /> -<glyph unicode="W" horiz-adv-x="1935" d="M35 1313v127h63q82 0 119 -23.5t55 -95.5l250 -993l31 -154h4q18 80 39 154l317 1106h142l288 -1106l33 -154h4q14 80 33 154l250 993q18 72 55 95.5t119 23.5h64v-127h-23q-63 0 -76 -45l-332 -1268h-170l-268 1001l-47 213h-4q-25 -119 -51 -210l-295 -1004h-170 l-330 1268q-12 45 -76 45h-24z" /> -<glyph unicode="X" horiz-adv-x="1167" d="M31 0l458 752l-311 508q-33 53 -102 53h-43v127h76q78 0 116.5 -22.5t81.5 -92.5l185 -309l92 -164h4q43 90 88 164l184 309q43 70 82 92.5t117 22.5h76v-127h-43q-70 0 -103 -53l-313 -508l461 -752h-164l-299 496l-92 157h-4q-41 -86 -86 -159l-297 -494h-164z" /> -<glyph unicode="Y" horiz-adv-x="1212" d="M20 1313v127h56q76 0 113.5 -20.5t82.5 -94.5l244 -407l88 -162h4q43 86 88 162l244 407q45 74 83 94.5t114 20.5h55v-127h-33q-63 0 -94 -53l-387 -633v-627h-143v627l-385 633q-33 53 -97 53h-33z" /> -<glyph unicode="Z" horiz-adv-x="1177" d="M39 0v100l772 1082q25 33 50.5 65.5t39.5 48.5l14 17v4q-35 -4 -104 -4h-573q-45 0 -45 -45v-97h-134v144q0 66 30 95.5t95 29.5h908v-101l-770 -1081q-25 -33 -51.5 -65.5t-41.5 -49.5l-14 -16v-4q35 4 107 4h620q45 0 45 45v96h133v-143q0 -66 -29.5 -95.5t-95.5 -29.5 h-956z" /> -<glyph unicode="[" horiz-adv-x="620" d="M207 -70v1440q0 66 29.5 95.5t95.5 29.5h151v-115h-102q-45 0 -45 -45v-1370q0 -45 45 -45h102v-115h-151q-66 0 -95.5 29.5t-29.5 95.5z" /> -<glyph unicode="\" horiz-adv-x="649" d="M10 1520h131l518 -1606h-129z" /> -<glyph unicode="]" horiz-adv-x="620" d="M137 -80h103q45 0 45 45v1370q0 45 -45 45h-103v115h152q66 0 95.5 -29.5t29.5 -95.5v-1440q0 -66 -30 -95.5t-95 -29.5h-152v115z" /> -<glyph unicode="^" d="M150 512l405 928h96l406 -928h-133l-320 758l-319 -758h-135z" /> -<glyph unicode="_" horiz-adv-x="1077" d="M10 0h1057v-119h-1057v119z" /> -<glyph unicode="`" horiz-adv-x="737" d="M190 1784h156l143 -244h-120z" /> -<glyph unicode="a" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM225 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97z" /> -<glyph unicode="b" horiz-adv-x="1196" d="M41 1319v121h145q66 0 95.5 -30t29.5 -95v-373l-4 -84h4q4 8 11.5 21.5t36 47.5t65.5 59.5t100.5 47t137.5 21.5q205 0 326.5 -149.5t121.5 -391.5t-130 -390.5t-335 -148.5q-203 0 -315 162l-23 37h-4q4 -35 4 -84v-90h-135v1274q0 45 -45 45h-86zM307 512 q0 -168 86 -291t242 -123q141 0 236.5 113t95.5 303q0 186 -91.5 300t-234.5 114q-141 0 -237.5 -104.5t-96.5 -311.5z" /> -<glyph unicode="c" horiz-adv-x="1081" d="M82 514q0 236 155.5 388.5t387.5 152.5q49 0 107.5 -11.5t118.5 -34t100 -68.5t40 -105v-93h-131v60q0 59 -79 93t-156 34q-170 0 -285 -116t-115 -300t118 -298t286 -114q186 0 317 131l15 15l65 -105q-6 -6 -16.5 -17t-49 -41t-81.5 -51.5t-113 -40t-143 -18.5 q-233 0 -387 150.5t-154 388.5z" /> -<glyph unicode="d" horiz-adv-x="1204" d="M86 516q0 242 129 390.5t334 148.5q207 0 315 -158l21 -35h4q-4 35 -4 78v334q0 45 -45 45h-86v121h145q66 0 95.5 -30t29.5 -95v-1149q0 -45 45 -45h86v-121h-143q-123 0 -123 115l4 65h-4l-11 -22q-7 -14 -36 -49t-66 -62t-101.5 -49.5t-139.5 -22.5q-205 0 -327 149.5 t-122 391.5zM229 516.5q0 -188.5 90.5 -302.5t235.5 -114q141 0 237.5 104.5t96.5 311.5q0 170 -86 292t-242 122q-141 0 -236.5 -112.5t-95.5 -301z" /> -<glyph unicode="e" horiz-adv-x="1122" d="M82 514q0 246 146.5 393.5t361.5 147.5q205 0 318.5 -136.5t113.5 -338.5l-4 -70h-791q2 -188 118 -299t282 -111q170 0 299 117l10 10l68 -104q-16 -16 -48 -41t-131.5 -66t-203.5 -41q-231 0 -385 151.5t-154 387.5zM233 621h646q-6 154 -88 235.5t-203 81.5 q-133 0 -231.5 -83.5t-123.5 -233.5z" /> -<glyph unicode="f" horiz-adv-x="624" d="M51 913v117h129v37q0 119 38 202t98.5 118.5t112.5 49t106 13.5l63 -4v-125q-18 4 -49 4q-37 0 -70 -9t-72.5 -32.5t-63.5 -80t-24 -136.5v-37h263v-117h-263v-913h-139v913h-129z" /> -<glyph unicode="g" horiz-adv-x="1185" d="M86 534.5q0 233.5 121 377t325 143.5q78 0 141.5 -18.5t99.5 -44t60.5 -51.5t32.5 -44l8 -18h5v39q0 113 116 112h144v-121h-84q-45 0 -45 -45v-839q0 -229 -142.5 -342t-353.5 -113q-176 0 -336 82l53 117q127 -72 279 -72q162 0 261 80t99 243v91l2 73h-4 q-96 -178 -323 -178q-207 0 -333 147.5t-126 381zM229 536.5q0 -184.5 92.5 -295t243.5 -110.5q137 0 222 95.5t85 308.5q0 393 -325 393q-150 0 -234 -103.5t-84 -288z" /> -<glyph unicode="h" horiz-adv-x="1239" d="M41 1319v121h145q66 0 95.5 -29t29.5 -92v-436l-4 -84h4q37 92 144.5 174t263.5 82q186 0 266 -100.5t80 -299.5v-489q0 -45 45 -45h86v-121h-145q-66 0 -95.5 29.5t-29.5 95.5v493q0 70 -7.5 118t-30 94.5t-69.5 70t-119 23.5q-131 0 -234.5 -82t-137.5 -211 q-16 -55 -17 -137v-494h-139v1274q0 45 -45 45h-86z" /> -<glyph unicode="i" horiz-adv-x="514" d="M57 909v121h146q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v739q0 45 -45 45h-86zM184 1264v176h135v-176h-135z" /> -<glyph unicode="j" horiz-adv-x="548" d="M-43 -295q18 -2 45 -2q37 0 72 9t74.5 34t63.5 82t24 139v897q0 45 -46 45h-86v121h146q66 0 95.5 -29.5t29.5 -95.5v-944q0 -121 -38 -203t-99.5 -117.5t-113.5 -49t-108 -13.5l-59 6v121zM233 1264v176h134v-176h-134z" /> -<glyph unicode="k" horiz-adv-x="1019" d="M41 1319v121h145q68 0 96.5 -27t28.5 -92v-684h107q78 0 117 49l264 344h170l-297 -377q-23 -29 -42.5 -47t-27.5 -22l-8 -4v-5q31 -14 63 -75l187 -334q14 -27 33.5 -36t60.5 -9h55v-121h-96q-78 0 -110.5 19.5t-67.5 82.5l-205 369q-25 45 -108 45h-95v-516h-139v1274 q0 45 -45 45h-86z" /> -<glyph unicode="l" horiz-adv-x="501" d="M45 1319v121h145q66 0 95.5 -30t29.5 -95v-1149q0 -45 45 -45h86v-121h-145q-66 0 -95.5 29.5t-29.5 95.5v1149q0 45 -45 45h-86z" /> -<glyph unicode="m" horiz-adv-x="1906" d="M47 909v121h143q125 0 125 -115v-47l-4 -73h4q39 106 146.5 183t226.5 77q272 0 320 -258h4q43 109 147.5 183.5t231.5 74.5q182 0 262 -100.5t80 -299.5v-489q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v496q0 145 -47 226t-176 81q-113 0 -203 -86 t-123 -205q-18 -57 -18 -150v-487h-139v621q0 68 -7.5 114.5t-28 95t-66.5 73t-115 24.5q-121 0 -211 -88t-125 -215q-16 -57 -17 -138v-487h-139v864q0 45 -45 45h-86z" /> -<glyph unicode="n" horiz-adv-x="1245" d="M47 909v121h143q125 0 125 -115v-47l-4 -73h4q37 94 142.5 177t267.5 83q186 0 266 -100.5t80 -299.5v-489q0 -45 45 -45h86v-121h-145q-66 0 -95.5 29.5t-29.5 95.5v493q0 145 -44 225.5t-179 80.5q-131 0 -235.5 -81t-139.5 -210q-16 -57 -17 -139v-494h-139v864 q0 45 -45 45h-86z" /> -<glyph unicode="o" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q227 0 385.5 -153.5t158.5 -381.5q0 -231 -158.5 -388t-383.5 -157q-227 0 -386 157t-159 388zM225 520q0 -178 117 -299t285 -121q166 0 282.5 121t116.5 299q0 174 -116.5 291t-282.5 117q-168 0 -285 -117t-117 -291z" /> -<glyph unicode="p" horiz-adv-x="1202" d="M47 909v121h141q123 0 123 -108l-2 -70h4q4 8 11.5 21.5t36 49t64.5 62.5t101.5 48.5t141.5 21.5q205 0 326.5 -149.5t121.5 -391.5t-129 -390.5t-332 -148.5q-70 0 -131 20.5t-97 49.5t-62.5 56.5t-36.5 48.5l-11 20h-4q4 -37 4 -90v-490h-139v1274q0 45 -45 45h-86z M313 512q0 -168 87 -291t241 -123q141 0 236.5 113t95.5 303q0 188 -90 301t-236 113q-141 0 -237.5 -104.5t-96.5 -311.5z" /> -<glyph unicode="q" horiz-adv-x="1204" d="M88 516q0 242 129 390.5t334 148.5q70 0 131 -20.5t98 -50.5t63.5 -58.5t37.5 -48.5l10 -21h4q-2 29 -2 68q0 106 123 106h141v-121h-86q-45 0 -45 -45v-1274h-139v494l4 90h-4q-4 -8 -11.5 -21.5t-36 -47t-65.5 -60.5t-100.5 -48.5t-136.5 -21.5q-205 0 -327 149.5 t-122 391.5zM229 516.5q0 -188.5 91.5 -302.5t236.5 -114q141 0 237.5 104.5t96.5 311.5q0 170 -86 292t-242 122q-141 0 -237.5 -112.5t-96.5 -301z" /> -<glyph unicode="r" horiz-adv-x="741" d="M47 909v121h143q125 0 125 -117v-69l-4 -78h4q39 123 124 198.5t202 75.5l55 -6v-137q-25 4 -51 4q-106 0 -185 -73.5t-114 -192.5q-29 -92 -29 -201v-434h-139v864q0 45 -45 45h-86z" /> -<glyph unicode="s" horiz-adv-x="901" d="M59 156l80 96q4 -6 13.5 -16.5t40 -38t64.5 -48t88 -37t112 -16.5q92 0 154.5 43t62.5 121q0 61 -59.5 106.5t-144.5 78t-170 69.5t-144.5 103.5t-59.5 158.5q0 135 102.5 207t264.5 72q45 0 94 -9.5t100.5 -29t85 -58t33.5 -90.5v-88h-131v49q0 51 -57.5 78t-120.5 27 q-229 0 -229 -150q0 -63 59 -108t144 -77t170 -68.5t144.5 -104.5t59.5 -162q0 -127 -102.5 -208t-257.5 -81q-227 0 -373 154z" /> -<glyph unicode="t" horiz-adv-x="686" d="M55 913v117h138v285h137v-285h258v-117h-258v-524q0 -70 17.5 -121t42 -79.5t57 -45t59 -21.5t55.5 -5l47 4v-125q-25 -4 -59 -4q-43 0 -84 6t-93.5 29.5t-90 62.5t-64.5 112.5t-27 172.5v538h-135z" /> -<glyph unicode="u" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-4q-39 -94 -144.5 -177.5t-257.5 -83.5q-180 0 -263 98.5t-83 301.5v489q0 45 -45 45h-86z " /> -<glyph unicode="v" horiz-adv-x="1060" d="M29 909v121h55q74 0 105.5 -21.5t58.5 -90.5l248 -644l34 -120h5q16 70 34 120l248 644q27 70 58.5 91t103.5 21h53v-121h-18q-55 0 -72 -47l-336 -862h-151l-336 862q-18 47 -72 47h-18z" /> -<glyph unicode="w" horiz-adv-x="1708" d="M20 909v121h72q76 0 107.5 -21.5t54.5 -93.5l211 -653l31 -110h4q16 61 32 110l252 764h140l252 -764l32 -110h4q12 59 29 110l213 653q23 72 54.5 93.5t107.5 21.5h72v-121h-29q-55 0 -72 -47l-295 -862h-153l-252 733l-31 111h-4q-14 -59 -33 -111l-250 -733h-155 l-295 862q-16 47 -72 47h-27z" /> -<glyph unicode="x" horiz-adv-x="976" d="M37 909v121h76q78 0 111.5 -20.5t80.5 -91.5l148 -230l34 -61h5q18 35 32 61l150 230q47 72 80.5 92t111.5 20h74v-121h-41q-70 0 -96 -41l-223 -331l360 -537h-164l-252 383l-32 57h-5q-16 -29 -34 -57l-252 -383h-162l358 537l-223 329q-31 43 -94 43h-43z" /> -<glyph unicode="y" horiz-adv-x="1103" d="M16 -330l66 103q0 -4 18.5 -21.5t57.5 -37t78 -19.5q121 0 190 168l61 141l-362 858q-20 47 -72 47h-20v121h63q70 0 99.5 -21.5t58.5 -90.5l264 -644l37 -110h4q14 59 35 110l254 644q27 70 57.5 91t102.5 21h63v-121h-20q-53 0 -72 -47l-444 -1077 q-41 -100 -118 -157.5t-177 -57.5q-133 0 -220 94z" /> -<glyph unicode="z" horiz-adv-x="1021" d="M80 0v90l579 723l82 94v4q-35 -4 -102 -4h-377q-45 0 -45 -45v-80h-131v123q0 66 29.5 95.5t95.5 29.5h715v-92l-578 -721l-86 -94v-4q37 4 105 4h426q45 0 45 45v80h131v-123q0 -66 -30 -95.5t-95 -29.5h-764z" /> -<glyph unicode="{" horiz-adv-x="667" d="M68 598v127q6 0 18 3t42 18.5t53.5 38t42 69.5t18.5 107v167q0 96 24.5 168t58 109t80 58.5t78 26.5t64.5 5h31v-115h-19q-27 0 -52.5 -7t-60 -30.5t-55 -79t-20.5 -139.5v-200q0 -55 -16.5 -103.5t-41 -76t-49 -47t-41.5 -25.5l-16 -8v-5q6 -2 17.5 -7t40 -24.5t50 -46 t39 -74.5t17.5 -108v-225q0 -82 21.5 -138t55 -79t59 -31t52.5 -8h19v-115q-12 -2 -31 -2q-33 0 -64.5 5.5t-78 28t-80 59t-58 108.5t-24.5 168v195q0 59 -18.5 105t-43 69.5t-50.5 38t-44 16.5z" /> -<glyph unicode="|" horiz-adv-x="583" d="M227 -322v1936h129v-1936h-129z" /> -<glyph unicode="}" horiz-adv-x="667" d="M90 -82h21q25 0 50 8t59 31t55.5 79t21.5 138v225q0 59 16.5 107.5t41 75t49 46t40.5 25.5l17 6v5q-6 2 -17.5 7t-40 26.5t-50 48t-39 74.5t-17.5 104v200q0 84 -20.5 139.5t-55.5 79t-59.5 30.5t-50.5 7h-21v115h33q31 0 62.5 -5t77.5 -27.5t80 -58.5t58.5 -107.5 t24.5 -168.5v-167q0 -174 137 -226l37 -10v-127q-6 0 -18.5 -3t-42 -18.5t-53 -38t-42 -68.5t-18.5 -105v-195q0 -96 -24.5 -168t-58.5 -108.5t-80 -59t-77.5 -28t-62.5 -5.5l-33 2v115z" /> -<glyph unicode="~" d="M137 428q0 162 69.5 239.5t190.5 77.5q61 0 110.5 -21.5t81.5 -53t61.5 -63.5t68.5 -53.5t86 -21.5q82 0 113.5 63.5t31.5 141.5h121q0 -162 -69.5 -239.5t-190.5 -77.5q-76 0 -134.5 33.5t-89 72.5t-78.5 73t-106 34q-82 0 -113.5 -63.5t-31.5 -141.5h-121z" /> -<glyph unicode="¡" horiz-adv-x="608" d="M223 872v158h158v-158h-158zM231 -410l7 1063h131l6 -1063h-144z" /> -<glyph unicode="¢" horiz-adv-x="1116" d="M113 720.5q0 231.5 108.5 390.5t302.5 181v228h117v-228q248 -29 367 -303l-131 -49q-94 221 -287 221q-162 0 -247 -123t-85 -317q0 -197 84 -318.5t248 -121.5q193 0 287 221l131 -51q-125 -281 -367 -304v-227h-117v227q-195 23 -303 182.5t-108 391z" /> -<glyph unicode="£" horiz-adv-x="1191" d="M111 0v127h129v541h-93v112h93v305q0 162 119.5 270.5t302.5 108.5q178 0 313 -110l8 -6l-88 -103q-98 86 -233 86q-129 0 -204 -72.5t-75 -181.5v-297h391v-112h-391v-541h539q45 0 45 45v96h133v-143q0 -66 -30 -95.5t-95 -29.5h-864z" /> -<glyph unicode="¥" horiz-adv-x="1243" d="M35 1313v127h49q78 0 119 -21.5t84 -93.5l243 -407l88 -160h5q43 84 88 160l245 407q41 72 83 93.5t120 21.5h47v-127h-24q-72 0 -99 -45l-266 -439v-4h205v-104h-272l-56 -94v-84h328v-107h-328v-436h-143v436h-332v107h332v84l-59 94h-281v104h215v4l-268 439 q-27 45 -99 45h-24z" /> -<glyph unicode="§" horiz-adv-x="849" d="M123 -41l72 98q72 -61 168 -61t159.5 60.5t63.5 162.5q0 35 -8 66l-134 878h123l140 -889q8 -53 8 -71q0 -143 -98.5 -236.5t-256.5 -93.5q-137 2 -237 86zM150 1135q0 143 97 236t255 93q137 -2 237 -86l-71 -96q-70 59 -166 59t-161 -58t-65 -161q0 -33 9 -63l135 -885 h-123l-139 889q-8 33 -8 72z" /> -<glyph unicode="¨" horiz-adv-x="1009" d="M322 1608v176h120v-176h-120zM629 1608v176h121v-176h-121z" /> -<glyph unicode="©" horiz-adv-x="1624" d="M84 721q0 309 212 526t511 217q305 0 519 -217t214 -526q0 -313 -213 -529.5t-520 -216.5q-301 0 -512 217.5t-211 528.5zM205 721q0 -268 174 -451.5t428 -183.5q260 0 437 183.5t177 451.5q0 266 -177 449.5t-437 183.5q-254 0 -428 -183.5t-174 -449.5zM406 717 q0 172 114.5 297t306.5 125q63 0 121 -19.5t94.5 -47.5t65.5 -56.5t41 -48.5l12 -19l-94 -63l-10 15q-6 9 -28.5 33.5t-48.5 43t-66 34t-83 15.5q-141 0 -223 -90t-82 -217t81 -217t224 -90q135 0 226 127l10 14l94 -64q-4 -8 -13 -20t-40 -45t-66.5 -58.5t-93 -46 t-121.5 -20.5q-195 0 -308 124t-113 294z" /> -<glyph unicode="ª" horiz-adv-x="847" d="M119 541v96h620v-96h-620zM123 979q0 225 389 225h27q-2 86 -35 122t-111 36q-106 0 -106 -41v-49h-109v80q0 41 45 67.5t89 33.5t83 7q143 0 199.5 -66.5t56.5 -185.5v-290q0 -18 19 -19h59v-104h-96q-84 0 -86 79v25h-4q-6 -12 -18.5 -31.5t-62.5 -52.5t-114 -33 q-92 0 -158.5 53.5t-66.5 143.5zM240 985q0 -43 32.5 -73.5t89.5 -30.5q80 0 127.5 68.5t51.5 164.5h-25q-276 0 -276 -129z" /> -<glyph unicode="«" horiz-adv-x="1069" d="M78 578l336 421h149l-336 -421l336 -420h-149zM444 578l336 421h152l-336 -421l336 -420h-152z" /> -<glyph unicode="¬" d="M143 700v119h955v-495h-125v376h-830z" /> -<glyph unicode="­" horiz-adv-x="884" d="M152 518v127h581v-127h-581z" /> -<glyph unicode="®" horiz-adv-x="1624" d="M84 721q0 309 212 526t511 217q305 0 519 -217t214 -526q0 -313 -213 -529.5t-520 -216.5q-301 0 -512 217.5t-211 528.5zM205 721q0 -268 174 -451.5t428 -183.5q260 0 437 183.5t177 451.5q0 266 -177 449.5t-437 183.5q-254 0 -428 -183.5t-174 -449.5zM492 1024v96 h358q106 0 173 -65.5t67 -171.5q0 -84 -44.5 -140.5t-105.5 -70.5v-4q23 -8 41 -43l92 -185q12 -27 55 -26h21v-92h-59q-47 0 -71 11t-44 50l-111 217q-25 45 -73 45h-111v-323h-115v702h-73zM680 735h149q66 0 104 39t38 109q0 68 -38 104.5t-104 36.5h-149v-289z" /> -<glyph unicode="¯" horiz-adv-x="944" d="M229 1608v110h504v-110h-504z" /> -<glyph unicode="ˉ" horiz-adv-x="944" d="M229 1608v110h504v-110h-504z" /> -<glyph unicode="°" horiz-adv-x="784" d="M104 1178q0 117 84 200.5t203 83.5t204 -84t85 -200q0 -119 -84 -202t-205 -83q-119 0 -203 83t-84 202zM227 1178q0 -72 47.5 -121t117 -49t118.5 49t49 121q0 70 -49 120t-118.5 50t-117 -50t-47.5 -120z" /> -<glyph unicode="±" d="M86 522v119h473v522h125v-522h471v-119h-471v-522h-125v522h-473zM123 -213h995v-119h-995v119z" /> -<glyph unicode="²" horiz-adv-x="837" d="M104 645q0 63 20.5 113.5t64.5 91.5t77 62.5t97 58.5q66 37 100.5 60.5t67 68.5t32.5 98q0 63 -44 105.5t-118 42.5q-57 0 -98 -25t-41 -57v-54h-110v80q0 80 82.5 123t166.5 43q131 0 206 -72.5t75 -185.5q0 -61 -20.5 -109.5t-68.5 -89.5t-77 -59t-96.5 -57t-100 -61.5 t-65.5 -66.5t-33 -93q0 -12 19 -13h358q12 0 12 15v71h111v-102q0 -47 -21.5 -68.5t-68.5 -21.5h-434q-51 0 -72 22.5t-21 79.5z" /> -<glyph unicode="³" horiz-adv-x="837" d="M102 674l82 80q10 -12 29.5 -32t78 -52.5t116.5 -32.5q72 0 126 50t54 126t-56.5 121t-136.5 45h-71l-21 70l197 239l47 49v4q-35 -6 -74 -6h-194q-20 0 -21 -22v-58h-111v88q0 53 20.5 75t76.5 22h452v-80l-241 -283q96 -8 174 -78.5t78 -187.5q0 -123 -89.5 -204 t-211.5 -81q-80 0 -156 37t-111 74z" /> -<glyph unicode="´" horiz-adv-x="759" d="M236 1540l143 244h156l-179 -244h-120z" /> -<glyph unicode="µ" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-6q-4 -10 -12.5 -28t-42.5 -63t-74.5 -79.5t-113.5 -62.5t-157 -28q-76 0 -133 21.5 t-76 44.5l-18 20h-4q14 -104 14 -155v-316h-129v1274q0 45 -45 45h-86z" /> -<glyph unicode="μ" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-6q-4 -10 -12.5 -28t-42.5 -63t-74.5 -79.5t-113.5 -62.5t-157 -28q-76 0 -133 21.5 t-76 44.5l-18 20h-4q14 -104 14 -155v-316h-129v1274q0 45 -45 45h-86z" /> -<glyph unicode="¶" horiz-adv-x="1175" d="M88 968.5q0 198.5 143.5 335t343.5 136.5h490v-127h-371v-1415h-116v596q-201 0 -345.5 138t-144.5 336.5zM821 -102v1292h119v-1292h-119z" /> -<glyph unicode="·" horiz-adv-x="440" d="M141 508v164h158v-164h-158z" /> -<glyph unicode="∙" horiz-adv-x="440" d="M141 508v164h158v-164h-158z" /> -<glyph unicode="¸" horiz-adv-x="845" d="M227 -311q39 -12 86 -13q104 0 104.5 70t-116.5 70l-31 -2l54 227l82 -14v-17l-25 -123q66 -10 105.5 -48t39.5 -97q0 -82 -57 -122t-141 -40l-101 10v99z" /> -<glyph unicode="¹" horiz-adv-x="837" d="M162 1231l209 209h104v-791h191v-106h-502v106h192v563l2 70h-4q-10 -20 -26 -37l-92 -90z" /> -<glyph unicode="º" horiz-adv-x="933" d="M125 1126q0 141 100.5 238.5t241.5 97.5t241.5 -97t100.5 -239q0 -145 -99.5 -243.5t-242.5 -98.5t-242.5 98.5t-99.5 243.5zM160 541v96h620v-96h-620zM238 1126q0 -102 66.5 -169.5t162.5 -67.5t162.5 67.5t66.5 169.5q0 100 -66.5 167t-162.5 67t-162.5 -67 t-66.5 -167z" /> -<glyph unicode="»" horiz-adv-x="1069" d="M135 158l336 420l-336 421h152l336 -421l-336 -420h-152zM504 158l336 420l-336 421h151l336 -421l-336 -420h-151z" /> -<glyph unicode="¼" horiz-adv-x="1822" d="M158 1231l209 209h102v-791h188v-106h-497v106h192v563l2 70h-4q-10 -20 -26 -37l-93 -90zM551 0l608 1440h127l-606 -1440h-129zM1016 240v75l426 582h123v-551h137v-106h-137v-240h-117v240h-432zM1155 344q29 2 43 2h252v313l2 80h-4q-14 -29 -33 -55l-231 -305 l-29 -33v-2z" /> -<glyph unicode="½" horiz-adv-x="1822" d="M158 1231l209 209h102v-791h188v-106h-497v106h192v563l2 70h-4q-10 -20 -26 -37l-93 -90zM528 0l609 1440h127l-607 -1440h-129zM1063 102q0 63 20.5 114.5t64.5 91.5t78 62.5t95 57.5q66 37 100.5 60.5t67.5 68.5t33 98q0 63 -44 105.5t-118 42.5q-57 0 -98 -24.5 t-41 -57.5v-51h-111v78q0 82 83 123.5t167 41.5q131 0 205.5 -72.5t74.5 -185.5q0 -61 -20.5 -109t-67.5 -88t-77.5 -60.5t-96.5 -57.5q-49 -29 -74.5 -46.5t-59.5 -46t-48 -59t-14 -67.5q0 -14 16 -15h358q12 0 13 15v72h110v-103q0 -90 -90 -90h-434q-51 0 -71.5 22.5 t-20.5 79.5z" /> -<glyph unicode="¾" horiz-adv-x="1822" d="M127 674l82 80q10 -12 29.5 -32t78 -52.5t115.5 -32.5q72 0 126 50t54 126t-56 121t-136 45h-72l-20 70l196 239l47 49v4q-35 -6 -73 -6h-195q-20 0 -20 -22v-58h-111v88q0 53 20.5 75t75.5 22h453v-80l-242 -283q96 -8 174 -78.5t78 -187.5q0 -123 -89 -204t-212 -81 q-80 0 -155.5 37t-110.5 74zM549 0l608 1440h127l-606 -1440h-129zM1016 240v75l426 582h123v-551h137v-106h-137v-240h-117v240h-432zM1155 344q29 2 43 2h252v313l2 80h-4q-14 -29 -33 -55l-231 -305l-29 -33v-2z" /> -<glyph unicode="¿" horiz-adv-x="882" d="M63 -68q0 94 38 169t91.5 126.5t107.5 98.5t92 109.5t38 135.5v82h137v-88q0 -90 -36.5 -163.5t-89 -124t-104.5 -98.5t-89 -109.5t-37 -130.5q0 -100 75.5 -168t192.5 -68q61 0 124 21.5t93 42.5l31 22l76 -102q-14 -12 -41 -32t-113 -52.5t-176 -32.5q-176 0 -293 102 t-117 260zM420 872v158h158v-158h-158z" /> -<glyph unicode="À" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186zM434 1784h156l143 -244h-121z" /> -<glyph unicode="Á" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186zM612 1540l144 244h155l-178 -244h-121z " /> -<glyph unicode="Â" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186zM432 1540l170 244h143l170 -244h-129 l-110 166h-4l-111 -166h-129z" /> -<glyph unicode="Ã" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM350 1546q0 240 191 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h108q0 -240 -190 -240 q-59 0 -104.5 37t-81 73t-74.5 36q-82 0 -82 -140h-107zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186z" /> -<glyph unicode="Ä" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186zM461 1608v176h121v-176h-121zM768 1608 v176h121v-176h-121z" /> -<glyph unicode="Å" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186zM522 1662.5q0 63.5 44 104.5t107.5 41 t107.5 -41t44 -104.5t-44 -104t-107.5 -40.5t-107.5 40.5t-44 104zM606 1663q0 -29 18.5 -48.5t49.5 -19.5q29 0 48 19.5t19 48.5q0 31 -19.5 50.5t-48 19.5t-48 -19.5t-19.5 -50.5z" /> -<glyph unicode="Æ" horiz-adv-x="1685" d="M25 127h18q57 0 74 45l487 1268h848q66 0 95.5 -30t29.5 -95v-144h-135v97q0 45 -45 45h-475v-525h524v-126h-524v-490q0 -27 13 -36t44 -9h477q45 0 45 45v96h135v-143q0 -66 -29.5 -95.5t-95.5 -29.5h-589q-80 0 -112 25.5t-32 99.5v537h-325l-205 -543 q-27 -74 -58.5 -96.5t-109.5 -22.5h-55v127zM500 788h278v525h-82z" /> -<glyph unicode="Ç" horiz-adv-x="1421" d="M78 731q0 311 203.5 522t506.5 211q82 0 171.5 -17.5t174.5 -52t139 -96t54 -139.5v-119h-135v80q0 94 -129 151.5t-270 57.5q-242 0 -404 -169t-162 -429t161 -440t405 -180q84 0 162.5 20.5t134 50t97.5 59t62 50.5l21 20l82 -102l-24 -24q-15 -15 -67.5 -55 t-110.5 -69.5t-151.5 -56.5t-191.5 -29l-19 -88q66 -10 105 -48t39 -97q0 -84 -56.5 -123t-140.5 -39l-100 10v99q39 -12 86 -13q102 0 102 70t-116 70l-29 -2l39 166q-285 27 -462 238.5t-177 512.5z" /> -<glyph unicode="È" horiz-adv-x="1142" d="M86 1313v127h823q66 0 95.5 -30t29.5 -95v-144h-135v97q0 45 -45 45h-492v-525h541v-126h-541v-490q0 -45 46 -45h505q45 0 45 45v96h134v-143q0 -66 -30 -95.5t-95 -29.5h-623q-66 0 -95.5 29.5t-29.5 95.5v1188h-133zM362 1784h156l144 -244h-121z" /> -<glyph unicode="É" horiz-adv-x="1142" d="M86 1313v127h823q66 0 95.5 -30t29.5 -95v-144h-135v97q0 45 -45 45h-492v-525h541v-126h-541v-490q0 -45 46 -45h505q45 0 45 45v96h134v-143q0 -66 -30 -95.5t-95 -29.5h-623q-66 0 -95.5 29.5t-29.5 95.5v1188h-133zM541 1540l143 244h156l-178 -244h-121z" /> -<glyph unicode="Ê" horiz-adv-x="1142" d="M86 1313v127h823q66 0 95.5 -30t29.5 -95v-144h-135v97q0 45 -45 45h-492v-525h541v-126h-541v-490q0 -45 46 -45h505q45 0 45 45v96h134v-143q0 -66 -30 -95.5t-95 -29.5h-623q-66 0 -95.5 29.5t-29.5 95.5v1188h-133zM360 1540l170 244h144l170 -244h-129l-111 166h-4 l-111 -166h-129z" /> -<glyph unicode="Ë" horiz-adv-x="1142" d="M86 1313v127h823q66 0 95.5 -30t29.5 -95v-144h-135v97q0 45 -45 45h-492v-525h541v-126h-541v-490q0 -45 46 -45h505q45 0 45 45v96h134v-143q0 -66 -30 -95.5t-95 -29.5h-623q-66 0 -95.5 29.5t-29.5 95.5v1188h-133zM389 1608v176h121v-176h-121zM696 1608v176h121 v-176h-121z" /> -<glyph unicode="Ì" horiz-adv-x="600" d="M59 1784h156l143 -244h-120zM94 0v127h135v1186h-135v127h412v-127h-137v-1186h137v-127h-412z" /> -<glyph unicode="Í" horiz-adv-x="600" d="M94 0v127h135v1186h-135v127h412v-127h-137v-1186h137v-127h-412zM238 1540l143 244h156l-179 -244h-120z" /> -<glyph unicode="Î" horiz-adv-x="600" d="M57 1540l170 244h144l170 -244h-129l-111 166h-4l-111 -166h-129zM94 0v127h135v1186h-135v127h412v-127h-137v-1186h137v-127h-412z" /> -<glyph unicode="Ï" horiz-adv-x="600" d="M86 1608v176h121v-176h-121zM94 0v127h135v1186h-135v127h412v-127h-137v-1186h137v-127h-412zM393 1608v176h121v-176h-121z" /> -<glyph unicode="Ð" horiz-adv-x="1464" d="M86 1313v127h578q330 0 526 -191.5t196 -527.5q0 -340 -196.5 -530.5t-525.5 -190.5h-320q-66 0 -95.5 29.5t-29.5 95.5v537h-102v122h102v529h-133zM362 172q0 -45 46 -45h241q270 0 429 154.5t159 439.5q0 283 -158.5 437.5t-429.5 154.5h-287v-529h336v-122h-336v-490 z" /> -<glyph unicode="Ñ" horiz-adv-x="1556" d="M86 0v127h88q45 0 45 45v1268h131l735 -1026l117 -189h4q-10 113 -10 189v901q0 66 29.5 95.5t95.5 29.5h152v-127h-89q-45 0 -45 -45v-1268h-131l-735 1026l-119 186h-4q12 -111 12 -186v-901q0 -66 -29.5 -95.5t-94.5 -29.5h-152zM477 1546q0 240 191 240q59 0 103 -37 t81 -74t74 -37q82 0 82 142h108q0 -240 -190 -240q-59 0 -104.5 37t-81 73t-74.5 36q-82 0 -82 -140h-107z" /> -<glyph unicode="Ò" horiz-adv-x="1619" d="M78 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5q-307 0 -520 219.5t-213 534.5zM227 729q0 -260 170 -439t414 -179q242 0 413 179t171 439q0 254 -170 427t-414 173t-414 -173t-170 -427zM565 1784h156l143 -244h-121z" /> -<glyph unicode="Ó" horiz-adv-x="1619" d="M78 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5q-307 0 -520 219.5t-213 534.5zM227 729q0 -260 170 -439t414 -179q242 0 413 179t171 439q0 254 -170 427t-414 173t-414 -173t-170 -427zM743 1540l144 244h155l-178 -244h-121z" /> -<glyph unicode="Ô" horiz-adv-x="1619" d="M78 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5q-307 0 -520 219.5t-213 534.5zM227 729q0 -260 170 -439t414 -179q242 0 413 179t171 439q0 254 -170 427t-414 173t-414 -173t-170 -427zM563 1540l170 244h144l170 -244h-129 l-111 166h-4l-111 -166h-129z" /> -<glyph unicode="Õ" horiz-adv-x="1619" d="M78 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5q-307 0 -520 219.5t-213 534.5zM227 729q0 -260 170 -439t414 -179q242 0 413 179t171 439q0 254 -170 427t-414 173t-414 -173t-170 -427zM481 1546q0 240 191 240q59 0 103 -37t81 -74 t74 -37q82 0 82 142h108q0 -240 -190 -240q-59 0 -104.5 37t-81 73t-74.5 36q-82 0 -82 -140h-107z" /> -<glyph unicode="Ö" horiz-adv-x="1619" d="M78 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5q-307 0 -520 219.5t-213 534.5zM227 729q0 -260 170 -439t414 -179q242 0 413 179t171 439q0 254 -170 427t-414 173t-414 -173t-170 -427zM592 1608v176h121v-176h-121zM899 1608v176 h121v-176h-121z" /> -<glyph unicode="×" d="M98 84l443 498l-443 497l84 84l439 -493l438 493l84 -84l-445 -497l445 -498l-84 -84l-438 494l-439 -494z" /> -<glyph unicode="Ø" horiz-adv-x="1626" d="M80 729q0 309 213 522t520 213q209 0 387 -110l98 137l84 -61l-96 -136q260 -223 260 -565q0 -315 -214 -534.5t-519 -219.5q-215 0 -391 115l-98 -139l-86 59l100 142q-121 104 -189.5 254.5t-68.5 322.5zM229 729q0 -283 195 -461l696 973q-143 88 -307 88 q-244 0 -414 -173t-170 -427zM504 203q145 -92 309 -92q244 0 414 179t170 439q0 272 -197 447z" /> -<glyph unicode="Ù" horiz-adv-x="1468" d="M70 1313v127h151q66 0 95.5 -30t29.5 -95v-815q0 -180 105.5 -284.5t281.5 -104.5q178 0 283.5 105.5t105.5 287.5v811q0 66 30 95.5t95 29.5h152v-127h-88q-45 0 -45 -45v-774q0 -233 -146.5 -376t-384 -143t-385 142.5t-147.5 376.5v774q0 45 -45 45h-88zM498 1784h155 l144 -244h-121z" /> -<glyph unicode="Ú" horiz-adv-x="1468" d="M70 1313v127h151q66 0 95.5 -30t29.5 -95v-815q0 -180 105.5 -284.5t281.5 -104.5q178 0 283.5 105.5t105.5 287.5v811q0 66 30 95.5t95 29.5h152v-127h-88q-45 0 -45 -45v-774q0 -233 -146.5 -376t-384 -143t-385 142.5t-147.5 376.5v774q0 45 -45 45h-88zM676 1540 l143 244h156l-178 -244h-121z" /> -<glyph unicode="Û" horiz-adv-x="1468" d="M70 1313v127h151q66 0 95.5 -30t29.5 -95v-815q0 -180 105.5 -284.5t281.5 -104.5q178 0 283.5 105.5t105.5 287.5v811q0 66 30 95.5t95 29.5h152v-127h-88q-45 0 -45 -45v-774q0 -233 -146.5 -376t-384 -143t-385 142.5t-147.5 376.5v774q0 45 -45 45h-88zM496 1540 l170 244h143l170 -244h-129l-111 166h-4l-110 -166h-129z" /> -<glyph unicode="Ü" horiz-adv-x="1468" d="M70 1313v127h151q66 0 95.5 -30t29.5 -95v-815q0 -180 105.5 -284.5t281.5 -104.5q178 0 283.5 105.5t105.5 287.5v811q0 66 30 95.5t95 29.5h152v-127h-88q-45 0 -45 -45v-774q0 -233 -146.5 -376t-384 -143t-385 142.5t-147.5 376.5v774q0 45 -45 45h-88zM524 1608v176 h121v-176h-121zM831 1608v176h121v-176h-121z" /> -<glyph unicode="Ý" horiz-adv-x="1212" d="M20 1313v127h56q76 0 113.5 -20.5t82.5 -94.5l244 -407l88 -162h4q43 86 88 162l244 407q45 74 83 94.5t114 20.5h55v-127h-33q-63 0 -94 -53l-387 -633v-627h-143v627l-385 633q-33 53 -97 53h-33zM547 1540l143 244h156l-178 -244h-121z" /> -<glyph unicode="Þ" horiz-adv-x="1196" d="M86 1313v127h152q66 0 95 -30t29 -95v-131h332q195 0 320 -119t125 -317q0 -197 -126 -318t-323 -121h-328v-309h-143v1268q0 45 -45 45h-88zM362 436h314q143 0 229 83t86 228.5t-85 227.5t-228 82h-316v-621z" /> -<glyph unicode="ß" horiz-adv-x="1142" d="M41 0v121h84q45 0 45 45v921q0 174 123 275.5t289 101.5q160 0 259 -90t99 -215q0 -68 -36 -128t-78 -95t-77.5 -79t-35.5 -85q0 -49 62.5 -103.5t137 -100.5t137 -126t62.5 -174q0 -139 -96 -216t-236 -77q-178 0 -309 111l-8 8l51 109q12 -12 34.5 -28.5t90.5 -45.5 t131 -29q86 0 143.5 43t57.5 129q0 68 -62.5 131.5t-138.5 107.5t-138.5 112.5t-62.5 144.5q0 57 36 110.5t78 89.5t78 86t36 103q0 72 -58.5 126t-163.5 54q-106 0 -186 -69.5t-80 -190.5v-952q0 -66 -29.5 -95.5t-95.5 -29.5h-143z" /> -<glyph unicode="à" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM225 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97zM293 1440h156l143 -244h-121z" /> -<glyph unicode="á" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM225 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97zM471 1196l143 244h156l-178 -244h-121z" /> -<glyph unicode="â" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM225 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97zM291 1196l170 244h143l170 -244h-129l-110 166h-5 l-110 -166h-129z" /> -<glyph unicode="ã" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM209 1202q0 240 190 240q59 0 103.5 -37t81.5 -74t73 -37q82 0 82 142h109q0 -240 -191 -240q-59 0 -104 37t-81 72.5t-75 35.5q-82 0 -82 -139h-106zM225 289q0 -78 60.5 -136.5t169.5 -58.5 q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97z" /> -<glyph unicode="ä" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM225 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97zM319 1264v176h121v-176h-121zM627 1264v176h121v-176h-121 z" /> -<glyph unicode="å" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM225 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97zM381 1318.5q0 63.5 44 104.5t107.5 41t107.5 -41 t44 -104.5t-44 -104t-107.5 -40.5t-107.5 40.5t-44 104zM465 1319q0 -29 18.5 -48.5t48.5 -19.5q29 0 48.5 19.5t19.5 48.5q0 31 -19.5 50.5t-48 19.5t-48 -19.5t-19.5 -50.5z" /> -<glyph unicode="æ" horiz-adv-x="1783" d="M82 281q0 70 23.5 124t58.5 89.5t90 61.5t105.5 39t120 20.5t113.5 8.5t107 1h68v22q0 160 -61.5 225.5t-202.5 65.5q-66 0 -133.5 -20.5t-67.5 -69.5v-66h-133v99q0 86 104.5 130t231.5 44q289 0 356 -213h4q127 213 389 213q201 0 312.5 -132t111.5 -317l-4 -92h-772 q4 -197 111.5 -305.5t273.5 -108.5q170 0 301 119l8 8l66 -104q-16 -16 -47 -41t-130.5 -66t-203.5 -41q-158 0 -276.5 76t-176.5 211h-4q-6 -23 -19 -51.5t-46 -72.5t-73 -77.5t-106.5 -59.5t-144.5 -26q-150 0 -252 81.5t-102 224.5zM225 289q0 -80 61.5 -137.5 t170.5 -57.5q139 0 226 120t87 265v35h-121q-82 0 -142.5 -6t-132 -26.5t-110.5 -69.5t-39 -123zM913 625h625q-6 152 -89 231.5t-200 79.5q-131 0 -222 -80.5t-114 -230.5z" /> -<glyph unicode="ç" horiz-adv-x="1081" d="M82 514q0 236 155.5 388.5t387.5 152.5q49 0 107.5 -11.5t118.5 -34t100 -68.5t40 -105v-93h-131v60q0 59 -79 93t-156 34q-170 0 -285 -116t-115 -300t118 -298t286 -114q186 0 317 131l15 15l65 -105q-6 -6 -16.5 -17t-49 -40t-82.5 -51.5t-114 -41t-146 -18.5l-16 -88 q66 -10 104.5 -48t38.5 -97q0 -84 -56 -123t-140 -39l-103 10v99q39 -12 86 -13q104 0 104.5 70t-116.5 70l-31 -2l39 170q-197 29 -321.5 173t-124.5 357z" /> -<glyph unicode="è" horiz-adv-x="1122" d="M82 514q0 246 146.5 393.5t361.5 147.5q205 0 318.5 -136.5t113.5 -338.5l-4 -70h-791q2 -188 118 -299t282 -111q170 0 299 117l10 10l68 -104q-16 -16 -48 -41t-131.5 -66t-203.5 -41q-231 0 -385 151.5t-154 387.5zM233 621h646q-6 154 -88 235.5t-203 81.5 q-133 0 -231.5 -83.5t-123.5 -233.5zM346 1440h156l143 -244h-121z" /> -<glyph unicode="é" horiz-adv-x="1122" d="M82 514q0 246 146.5 393.5t361.5 147.5q205 0 318.5 -136.5t113.5 -338.5l-4 -70h-791q2 -188 118 -299t282 -111q170 0 299 117l10 10l68 -104q-16 -16 -48 -41t-131.5 -66t-203.5 -41q-231 0 -385 151.5t-154 387.5zM233 621h646q-6 154 -88 235.5t-203 81.5 q-133 0 -231.5 -83.5t-123.5 -233.5zM524 1196l144 244h155l-178 -244h-121z" /> -<glyph unicode="ê" horiz-adv-x="1122" d="M82 514q0 246 146.5 393.5t361.5 147.5q205 0 318.5 -136.5t113.5 -338.5l-4 -70h-791q2 -188 118 -299t282 -111q170 0 299 117l10 10l68 -104q-16 -16 -48 -41t-131.5 -66t-203.5 -41q-231 0 -385 151.5t-154 387.5zM233 621h646q-6 154 -88 235.5t-203 81.5 q-133 0 -231.5 -83.5t-123.5 -233.5zM344 1196l170 244h143l170 -244h-129l-110 166h-4l-111 -166h-129z" /> -<glyph unicode="ë" horiz-adv-x="1122" d="M82 514q0 246 146.5 393.5t361.5 147.5q205 0 318.5 -136.5t113.5 -338.5l-4 -70h-791q2 -188 118 -299t282 -111q170 0 299 117l10 10l68 -104q-16 -16 -48 -41t-131.5 -66t-203.5 -41q-231 0 -385 151.5t-154 387.5zM233 621h646q-6 154 -88 235.5t-203 81.5 q-133 0 -231.5 -83.5t-123.5 -233.5zM373 1264v176h121v-176h-121zM680 1264v176h121v-176h-121z" /> -<glyph unicode="ì" horiz-adv-x="516" d="M6 1440h156l141 -244h-121zM59 909v121h146q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v739q0 45 -45 45h-86z" /> -<glyph unicode="í" horiz-adv-x="516" d="M59 909v121h146q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v739q0 45 -45 45h-86zM182 1196l144 244h155l-178 -244h-121z" /> -<glyph unicode="î" horiz-adv-x="516" d="M2 1196l172 244h141l172 -244h-129l-110 166h-4l-113 -166h-129zM59 909v121h146q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v739q0 45 -45 45h-86z" /> -<glyph unicode="ï" horiz-adv-x="516" d="M51 1264v176h123v-176h-123zM59 909v121h146q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v739q0 45 -45 45h-86zM309 1264v176h121v-176h-121z" /> -<glyph unicode="ð" horiz-adv-x="1157" d="M76 475q0 197 130 339t359 142q178 0 287 -102l8 -8h4q-70 199 -254 325l-360 -163l-27 98l277 129q-131 68 -291 104l41 119q236 -59 401 -158l269 121l26 -98l-198 -92q309 -242 309 -672q0 -106 -30 -206.5t-89 -186.5t-159.5 -138.5t-229.5 -52.5q-215 0 -344 149.5 t-129 350.5zM219 473q0 -152 90 -262.5t244 -110.5q176 0 268 132.5t92 299.5q0 133 -92 219.5t-241 86.5q-174 0 -267.5 -107.5t-93.5 -257.5z" /> -<glyph unicode="ñ" horiz-adv-x="1245" d="M47 909v121h143q125 0 125 -115v-47l-4 -73h4q37 94 142.5 177t267.5 83q186 0 266 -100.5t80 -299.5v-489q0 -45 45 -45h86v-121h-145q-66 0 -95.5 29.5t-29.5 95.5v493q0 145 -44 225.5t-179 80.5q-131 0 -235.5 -81t-139.5 -210q-16 -57 -17 -139v-494h-139v864 q0 45 -45 45h-86zM326 1202q0 240 190 240q59 0 103.5 -37t81 -74t73.5 -37q82 0 82 142h109q0 -240 -191 -240q-59 0 -104 37t-81 72.5t-75 35.5q-82 0 -82 -139h-106z" /> -<glyph unicode="ò" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q227 0 385.5 -153.5t158.5 -381.5q0 -231 -158.5 -388t-383.5 -157q-227 0 -386 157t-159 388zM225 520q0 -178 117 -299t285 -121q166 0 282.5 121t116.5 299q0 174 -116.5 291t-282.5 117q-168 0 -285 -117t-117 -291zM387 1440h156 l143 -244h-121z" /> -<glyph unicode="ó" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q227 0 385.5 -153.5t158.5 -381.5q0 -231 -158.5 -388t-383.5 -157q-227 0 -386 157t-159 388zM225 520q0 -178 117 -299t285 -121q166 0 282.5 121t116.5 299q0 174 -116.5 291t-282.5 117q-168 0 -285 -117t-117 -291zM565 1196 l144 244h155l-178 -244h-121z" /> -<glyph unicode="ô" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q227 0 385.5 -153.5t158.5 -381.5q0 -231 -158.5 -388t-383.5 -157q-227 0 -386 157t-159 388zM225 520q0 -178 117 -299t285 -121q166 0 282.5 121t116.5 299q0 174 -116.5 291t-282.5 117q-168 0 -285 -117t-117 -291zM385 1196 l170 244h143l170 -244h-129l-110 166h-4l-111 -166h-129z" /> -<glyph unicode="õ" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q227 0 385.5 -153.5t158.5 -381.5q0 -231 -158.5 -388t-383.5 -157q-227 0 -386 157t-159 388zM225 520q0 -178 117 -299t285 -121q166 0 282.5 121t116.5 299q0 174 -116.5 291t-282.5 117q-168 0 -285 -117t-117 -291zM303 1202 q0 240 191 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h108q0 -240 -190 -240q-59 0 -104.5 37t-81.5 72.5t-74 35.5q-82 0 -82 -139h-107z" /> -<glyph unicode="ö" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q227 0 385.5 -153.5t158.5 -381.5q0 -231 -158.5 -388t-383.5 -157q-227 0 -386 157t-159 388zM225 520q0 -178 117 -299t285 -121q166 0 282.5 121t116.5 299q0 174 -116.5 291t-282.5 117q-168 0 -285 -117t-117 -291zM414 1264v176 h121v-176h-121zM721 1264v176h121v-176h-121z" /> -<glyph unicode="÷" d="M102 522v119h1004v-119h-1004zM526 125v151h154v-151h-154zM526 887v151h154v-151h-154z" /> -<glyph unicode="ø" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q154 0 280 -76l80 113l84 -62l-80 -110q180 -158 180 -400q0 -231 -158.5 -388t-383.5 -157q-145 0 -265 66l-77 -109l-84 62l75 104q-194 162 -194 422zM225 520q0 -186 129 -311l475 663q-94 55 -202 56q-168 0 -285 -117t-117 -291z M438 150q88 -49 189 -50q166 0 282.5 121t116.5 299q0 172 -119 287z" /> -<glyph unicode="ù" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-4q-39 -94 -144.5 -177.5t-257.5 -83.5q-180 0 -263 98.5t-83 301.5v489q0 45 -45 45h-86z M365 1440h155l144 -244h-121z" /> -<glyph unicode="ú" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-4q-39 -94 -144.5 -177.5t-257.5 -83.5q-180 0 -263 98.5t-83 301.5v489q0 45 -45 45h-86z M543 1196l143 244h156l-178 -244h-121z" /> -<glyph unicode="û" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-4q-39 -94 -144.5 -177.5t-257.5 -83.5q-180 0 -263 98.5t-83 301.5v489q0 45 -45 45h-86z M362 1196l170 244h144l170 -244h-129l-111 166h-4l-110 -166h-130z" /> -<glyph unicode="ü" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-4q-39 -94 -144.5 -177.5t-257.5 -83.5q-180 0 -263 98.5t-83 301.5v489q0 45 -45 45h-86z M391 1264v176h121v-176h-121zM698 1264v176h121v-176h-121z" /> -<glyph unicode="ý" horiz-adv-x="1103" d="M16 -330l66 103q0 -4 18.5 -21.5t57.5 -37t78 -19.5q121 0 190 168l61 141l-362 858q-20 47 -72 47h-20v121h63q70 0 99.5 -21.5t58.5 -90.5l264 -644l37 -110h4q14 59 35 110l254 644q27 70 57.5 91t102.5 21h63v-121h-20q-53 0 -72 -47l-444 -1077 q-41 -100 -118 -157.5t-177 -57.5q-133 0 -220 94zM487 1196l144 244h155l-178 -244h-121z" /> -<glyph unicode="þ" horiz-adv-x="1196" d="M41 1319v121h145q66 0 95.5 -30t29.5 -95v-367l-4 -90h4q100 197 346 197q209 0 331 -148.5t122 -390.5t-122 -391.5t-331 -149.5q-74 0 -136 19.5t-99 48.5t-63.5 57.5t-36.5 46.5l-11 21h-4q4 -37 4 -90v-488h-139v1684q0 45 -45 45h-86zM307 514q0 -211 96.5 -312.5 t239.5 -101.5q145 0 234.5 114t89.5 302q0 186 -89.5 299t-234.5 113q-147 0 -241.5 -100.5t-94.5 -313.5z" /> -<glyph unicode="ÿ" horiz-adv-x="1103" d="M16 -330l66 103q0 -4 18.5 -21.5t57.5 -37t78 -19.5q121 0 190 168l61 141l-362 858q-20 47 -72 47h-20v121h63q70 0 99.5 -21.5t58.5 -90.5l264 -644l37 -110h4q14 59 35 110l254 644q27 70 57.5 91t102.5 21h63v-121h-20q-53 0 -72 -47l-444 -1077 q-41 -100 -118 -157.5t-177 -57.5q-133 0 -220 94zM336 1264v176h121v-176h-121zM643 1264v176h121v-176h-121z" /> -<glyph unicode="Œ" horiz-adv-x="1863" d="M78 721q0 313 197.5 526t496.5 213q51 0 153.5 -10t137.5 -10h565q66 0 95.5 -30t29.5 -95v-144h-133v97q0 45 -45 45h-477v-525h524v-126h-524v-535h536q45 0 45 45v96h133v-143q0 -125 -114 -125h-633q-35 0 -138.5 -10t-154.5 -10q-299 0 -496.5 213t-197.5 528z M227 721q0 -262 150.5 -433t394.5 -171q119 0 182 14v1176q-72 16 -182 16q-242 0 -393.5 -171t-151.5 -431z" /> -<glyph unicode="œ" horiz-adv-x="2068" d="M82 512q0 240 157.5 391.5t385.5 151.5q154 0 276.5 -74t190.5 -203h4q59 131 174.5 204t265.5 73q205 0 318.5 -136.5t113.5 -338.5l-4 -70h-790q8 -193 121.5 -301.5t277.5 -108.5q170 0 299 117l10 10l68 -104q-16 -16 -48 -41t-131.5 -66t-203.5 -41q-160 0 -283 75 t-186 206h-4q-66 -131 -189 -206t-280 -75q-227 0 -385 149.5t-158 387.5zM225 512q0 -182 116 -297t284 -115t283.5 117t115.5 303q0 182 -116.5 295t-282.5 113q-168 0 -284 -116t-116 -300zM1180 621h645q-8 154 -89 235.5t-202 81.5q-133 0 -231 -83.5t-123 -233.5z" /> -<glyph unicode="Ÿ" horiz-adv-x="1212" d="M20 1313v127h56q76 0 113.5 -20.5t82.5 -94.5l244 -407l88 -162h4q43 86 88 162l244 407q45 74 83 94.5t114 20.5h55v-127h-33q-63 0 -94 -53l-387 -633v-627h-143v627l-385 633q-33 53 -97 53h-33zM395 1608v176h121v-176h-121zM702 1608v176h121v-176h-121z" /> -<glyph unicode="ˆ" horiz-adv-x="962" d="M240 1540l170 244h143l170 -244h-129l-111 166h-4l-110 -166h-129z" /> -<glyph unicode="˜" horiz-adv-x="1007" d="M182 1546q0 240 191 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h108q0 -240 -190 -240q-59 0 -104.5 37t-81 73t-74.5 36q-82 0 -82 -140h-107z" /> -<glyph unicode="–" horiz-adv-x="1314" d="M145 522v119h1024v-119h-1024z" /> -<glyph unicode="—" horiz-adv-x="1724" d="M145 522v119h1434v-119h-1434z" /> -<glyph unicode="‘" horiz-adv-x="434" d="M104 1106l115 352h111l-80 -352h-146z" /> -<glyph unicode="’" horiz-adv-x="434" d="M104 1108l80 352h146l-115 -352h-111z" /> -<glyph unicode="‚" horiz-adv-x="434" d="M104 -184l80 352h146l-115 -352h-111z" /> -<glyph unicode="“" horiz-adv-x="675" d="M104 1106l115 352h111l-80 -352h-146zM346 1106l115 352h110l-79 -352h-146z" /> -<glyph unicode="”" horiz-adv-x="675" d="M104 1108l80 352h146l-115 -352h-111zM346 1108l80 352h145l-114 -352h-111z" /> -<glyph unicode="„" horiz-adv-x="675" d="M104 -184l80 352h146l-115 -352h-111zM346 -184l80 352h145l-114 -352h-111z" /> -<glyph unicode="•" horiz-adv-x="899" d="M158 596q0 121 86 207t206.5 86t205.5 -86t85 -207t-85 -207t-205.5 -86t-206.5 86t-86 207z" /> -<glyph unicode="…" horiz-adv-x="1673" d="M276 0v164h158v-164h-158zM758 0v164h157v-164h-157zM1239 0v164h158v-164h-158z" /> -<glyph unicode="‹" horiz-adv-x="702" d="M78 578l336 421h149l-336 -421l336 -420h-149z" /> -<glyph unicode="›" horiz-adv-x="702" d="M135 158l336 420l-336 421h152l336 -421l-336 -420h-152z" /> -<glyph unicode="€" horiz-adv-x="1208" d="M80 545v104h117q-4 37 -4 72l4 94h-117v105h135q61 242 249.5 393t438.5 151q49 0 96.5 -6t69.5 -12l23 -6l-33 -133q-74 23 -158 22q-195 0 -337 -111.5t-195 -297.5h620l-20 -105h-623q-8 -41 -8 -90l4 -76h596l-18 -104h-553q47 -195 193.5 -314.5t344.5 -119.5 q47 0 93 7t69 13l23 8l32 -131q-94 -33 -219 -33q-258 0 -447.5 159t-244.5 411h-131z" /> -<glyph unicode="™" horiz-adv-x="1998" d="M88 1251v95q0 53 20.5 73.5t75.5 20.5h566q55 0 75.5 -20.5t20.5 -73.5v-95h-107v62q0 20 -20 20h-195v-790h-116v790h-193q-20 0 -20 -20v-62h-107zM858 647h51q20 0 23 21l59 772h107l235 -514q18 -39 29 -84h4q10 45 29 84l235 514h107l59 -772q2 -20 23 -21h51v-104 h-88q-55 0 -74.5 19.5t-24.5 74.5l-41 514l3 59h-5l-229 -499h-94l-230 499h-4l2 -59l-41 -514q-4 -55 -23.5 -74.5t-74.5 -19.5h-88v104z" /> -<glyph unicode="" horiz-adv-x="1030" d="M0 1030h1030v-1030h-1030v1030z" /> -<glyph unicode="fi" horiz-adv-x="1118" d="M51 913v117h129v37q0 119 38 202t98.5 118.5t112.5 49t106 13.5l63 -4v-125q-20 4 -51 4q-37 0 -70 -9t-71.5 -32.5t-62.5 -80t-24 -136.5v-37h488q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-145q-66 0 -95.5 29.5t-29.5 95.5v743q0 45 -45 45h-429v-913 h-139v913h-129zM788 1264v176h136v-176h-136z" /> -<glyph unicode="fl" horiz-adv-x="1105" d="M51 913v117h129v37q0 96 26.5 169t64.5 109.5t90.5 60.5t91.5 29t82 5h260q66 0 95.5 -30t29.5 -95v-1149q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v1149q0 45 -45 45h-186q-229 0 -230 -252v-37h263v-117h-263v-913h-139v913h-129z" /> -<glyph unicode="ffi" horiz-adv-x="1722" d="M51 913v117h129v37q0 119 38 202t98.5 118.5t112.5 49t106 13.5l63 -4v-125q-20 4 -49 4q-37 0 -71 -9t-72.5 -34t-62.5 -80t-24 -137v-35h465v37q0 119 38 202t98.5 118.5t112.5 49t106 13.5l63 -4v-125q-20 4 -49 4q-37 0 -70.5 -9t-72.5 -34t-62.5 -80t-23.5 -137v-35 h487q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-145q-66 0 -95.5 29.5t-29.5 95.5v743q0 45 -45 45h-428v-913h-140v913h-465v-913h-139v913h-129zM1393 1264v176h135v-176h-135z" /> -<glyph unicode="ffl" horiz-adv-x="1708" d="M51 913v117h129v43q0 117 36 198t96.5 116.5t111.5 49t106 13.5l68 -4v-125q-23 4 -53 4q-37 0 -71 -9t-71.5 -34t-60.5 -79t-23 -132v-41h465v37q0 96 27 169t64.5 109.5t90 60.5t91.5 29t82 5h260q66 0 95.5 -30t29.5 -95v-1149q0 -45 45 -45h86v-121h-146 q-66 0 -95.5 29.5t-29.5 95.5v1149q0 45 -45 45h-186q-229 0 -229 -252v-37h262v-117h-262v-913h-140v913h-465v-913h-139v913h-129z" /> -</font> -</defs></svg>
\ No newline at end of file diff --git a/web/cobrands/stevenage/fonts/Museo300-Regular-webfont.ttf b/web/cobrands/stevenage/fonts/Museo300-Regular-webfont.ttf Binary files differdeleted file mode 100755 index 072e9a4e0..000000000 --- a/web/cobrands/stevenage/fonts/Museo300-Regular-webfont.ttf +++ /dev/null diff --git a/web/cobrands/stevenage/fonts/Museo300-Regular-webfont.woff b/web/cobrands/stevenage/fonts/Museo300-Regular-webfont.woff Binary files differdeleted file mode 100755 index f8a9dff96..000000000 --- a/web/cobrands/stevenage/fonts/Museo300-Regular-webfont.woff +++ /dev/null diff --git a/web/cobrands/stevenage/fonts/MuseoSans_300-webfont.eot b/web/cobrands/stevenage/fonts/MuseoSans_300-webfont.eot Binary files differdeleted file mode 100755 index 5287827df..000000000 --- a/web/cobrands/stevenage/fonts/MuseoSans_300-webfont.eot +++ /dev/null diff --git a/web/cobrands/stevenage/fonts/MuseoSans_300-webfont.svg b/web/cobrands/stevenage/fonts/MuseoSans_300-webfont.svg deleted file mode 100755 index 9a04e92bc..000000000 --- a/web/cobrands/stevenage/fonts/MuseoSans_300-webfont.svg +++ /dev/null @@ -1,227 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > -<svg xmlns="http://www.w3.org/2000/svg"> -<metadata> -This is a custom SVG webfont generated by Fontspring. -</metadata> -<defs> -<font id="MuseoSans300" horiz-adv-x="1064" > -<font-face units-per-em="2048" ascent="1536" descent="-512" /> -<missing-glyph horiz-adv-x="550" /> -<glyph unicode=" " horiz-adv-x="550" /> -<glyph unicode="	" horiz-adv-x="550" /> -<glyph unicode=" " horiz-adv-x="550" /> -<glyph unicode="!" horiz-adv-x="628" d="M238 0v158h157v-158h-157zM242 1440h143l-6 -1063h-131z" /> -<glyph unicode=""" horiz-adv-x="651" d="M141 1114v346h121v-346h-121zM389 1114v346h121v-346h-121z" /> -<glyph unicode="#" horiz-adv-x="1482" d="M96 399l21 115h289l71 401h-289l19 115h291l71 410h125l-71 -410h354l72 410h125l-72 -410h287l-21 -115h-287l-69 -401h284l-18 -115h-287l-69 -399h-125l69 399h-354l-70 -399h-125l70 399h-291zM532 514h353l71 401h-354z" /> -<glyph unicode="$" horiz-adv-x="1140" d="M125 160l86 108l17 -17q11 -11 49 -38t79 -47.5t104.5 -37.5t127.5 -17q123 0 205 68.5t82 180.5q0 96 -75 165t-181.5 115t-213 95t-181 135t-74.5 207q0 143 104 252t272 129v195h115v-191q201 -10 332 -129l10 -8l-70 -119q-14 14 -40.5 35t-109.5 54.5t-165 33.5 q-135 0 -219 -73.5t-84 -174.5q0 -76 53 -135t134 -94t174.5 -79t174 -89t134 -128t53.5 -191q0 -152 -102.5 -260.5t-274.5 -124.5v-191h-115v191q-115 8 -215 53t-143 86z" /> -<glyph unicode="%" horiz-adv-x="1495" d="M115 1180q0 117 84 200.5t202.5 83.5t203.5 -84t85 -200q0 -119 -84 -202t-205 -83q-119 0 -202.5 83t-83.5 202zM127 0l1098 1440h145l-1096 -1440h-147zM236 1180q0 -72 48 -121t117.5 -49t118.5 49t49 121q0 70 -49 120t-118.5 50t-117.5 -50t-48 -120zM807 258 q0 119 84 203t202.5 84t203.5 -84t85 -203q0 -117 -85 -200t-203.5 -83t-202.5 83t-84 200zM930 260q0 -72 47 -121t116.5 -49t119 49t49.5 121q0 70 -49.5 120t-119 50t-116.5 -50t-47 -120z" /> -<glyph unicode="&" horiz-adv-x="1380" d="M123 397q0 129 69.5 235.5t192.5 143.5v4q-8 2 -21.5 8.5t-48 31t-61.5 57t-48.5 92t-21.5 131.5q0 166 118 265t314 99l164 -20l-41 -119q-68 14 -118 14q-125 0 -207 -66.5t-82 -180.5q0 -43 11 -82t41 -83t96.5 -70t160.5 -26h303v203h141v-203h195v-126h-195v-211 q0 -252 -128 -385.5t-349 -133.5q-215 0 -350 120t-135 302zM268 406q0 -127 92.5 -212t247.5 -85q336 0 336 389v207h-303q-182 0 -277.5 -80t-95.5 -219z" /> -<glyph unicode="'" horiz-adv-x="403" d="M141 1114v346h121v-346h-121z" /> -<glyph unicode="(" horiz-adv-x="593" d="M164 690q0 428 231 805h129q-231 -391 -231 -805q0 -469 231 -885h-129q-231 398 -231 885z" /> -<glyph unicode=")" horiz-adv-x="591" d="M70 -195q231 412 231 885q0 414 -231 805h129q231 -377 231 -805q0 -487 -231 -885h-129z" /> -<glyph unicode="*" horiz-adv-x="964" d="M88 1104l41 129l295 -109l-12 316h139l-14 -316l299 107l41 -125l-304 -88v-4l193 -246l-107 -80l-176 260h-4l-174 -258l-108 78l192 246v4z" /> -<glyph unicode="+" horiz-adv-x="1409" d="M170 522v119h473v522h125v-522h471v-119h-471v-522h-125v522h-473z" /> -<glyph unicode="," horiz-adv-x="499" d="M74 -199l116 367h154l-151 -367h-119z" /> -<glyph unicode="-" horiz-adv-x="1007" d="M213 518v127h582v-127h-582z" /> -<glyph unicode="." horiz-adv-x="505" d="M172 0v164h162v-164h-162z" /> -<glyph unicode="/" horiz-adv-x="802" d="M84 -86l520 1606h129l-518 -1606h-131z" /> -<glyph unicode="0" horiz-adv-x="1280" d="M143 721q0 219 44 379t159 262t295 102q496 0 496 -743q0 -745 -496 -746q-498 1 -498 746zM291 721q0 -612 350 -612q348 0 348 612q0 610 -348 610q-350 0 -350 -610z" /> -<glyph unicode="1" horiz-adv-x="954" d="M115 0v127h323v1057l2 80h-4q-14 -31 -71 -86l-154 -154l-90 92l325 324h132v-1313h317v-127h-780z" /> -<glyph unicode="2" horiz-adv-x="1157" d="M123 92q0 102 41 191.5t105.5 154t143.5 122.5t157.5 111.5t143 108t105.5 125t41 148.5q0 121 -83 198.5t-216 77.5q-59 0 -113.5 -20.5t-91.5 -49t-64.5 -57.5t-39.5 -49l-12 -20l-107 71l16.5 27.5t49.5 62.5t85 80t122.5 62.5t162.5 27.5q201 0 320 -114.5 t119 -288.5q0 -98 -40 -183t-104.5 -147.5t-142.5 -119t-155 -108.5t-141.5 -106.5t-105 -123t-40.5 -146.5h751v-127h-899q-8 43 -8 92z" /> -<glyph unicode="3" horiz-adv-x="1150" d="M92 172l86 109q16 -18 47 -47t127.5 -76t194.5 -47q133 0 231.5 88t98.5 223q0 145 -105.5 226t-257.5 81h-98l-35 84l360 422l76 80v4q-41 -6 -117 -6h-540v127h841v-94l-430 -496q76 -4 149 -27.5t143.5 -70.5t114.5 -131t44 -195q0 -186 -135 -318.5t-338 -132.5 q-80 0 -156 20.5t-128 49.5t-93 57.5t-61 49.5z" /> -<glyph unicode="4" horiz-adv-x="1222" d="M70 399v93l708 948h154v-916h205v-125h-205v-399h-141v399h-721zM242 524h549v602l6 136h-4q-33 -57 -72 -109l-479 -625v-4z" /> -<glyph unicode="5" horiz-adv-x="1142" d="M111 180l90 99q4 -6 12 -17.5t39 -41.5t65.5 -51.5t91 -39.5t117.5 -18q152 0 255.5 96t103.5 241.5t-104.5 241.5t-260.5 96q-150 0 -262 -77l-90 32l78 699h696v-127h-573l-41 -369l-15 -82h4q90 55 220 56q215 0 355 -136.5t140 -332.5q0 -199 -144.5 -336.5 t-355.5 -137.5q-238 0 -393 168z" /> -<glyph unicode="6" horiz-adv-x="1218" d="M133 651q0 141 38 280.5t110.5 260.5t198.5 196.5t286 75.5q72 0 137.5 -15t95.5 -30l31 -14l-53 -125q-90 51 -209 51q-143 0 -250.5 -88t-162 -214t-66.5 -275h4q51 76 151.5 122t212.5 46q197 0 323 -130t126 -335q0 -219 -129 -350.5t-324 -131.5 q-233 0 -376.5 190.5t-143.5 485.5zM287 549q0 -156 106.5 -298t257.5 -142q143 0 226.5 97t83.5 249q0 154 -89.5 247t-236.5 93q-139 0 -243.5 -78t-104.5 -168z" /> -<glyph unicode="7" d="M78 1313v127h936v-99l-668 -1341h-147l581 1180q16 35 37 67l31 49l12 17v4q-37 -4 -108 -4h-674z" /> -<glyph unicode="8" horiz-adv-x="1232" d="M131 414q0 80 31 153.5t77 123.5t75.5 76t52.5 40q-178 117 -179 293q0 152 114 258t321 106q201 0 320.5 -102t119.5 -272q0 -92 -45 -189.5t-76 -136.5t-55 -64q209 -119 209 -309q0 -172 -136.5 -294t-341.5 -122q-203 0 -345 120t-142 319zM276 420 q0 -139 102.5 -226.5t239.5 -87.5q133 0 232.5 82t99.5 205q0 53 -25.5 96t-81 80t-101.5 60.5t-132 59.5t-127 56q-25 -14 -52.5 -37.5t-66 -64.5t-63.5 -100.5t-25 -122.5zM332 1098q0 -45 20.5 -85t45 -65.5t78.5 -56.5t86 -45.5t105.5 -45t102.5 -42.5q25 23 52.5 57.5 t62.5 112.5t35 155q0 115 -83 182.5t-214 67.5q-133 0 -212 -67.5t-79 -167.5z" /> -<glyph unicode="9" horiz-adv-x="1216" d="M113 983q0 219 128 350t322 131q233 0 376.5 -190.5t143.5 -485.5q0 -141 -37.5 -279t-110.5 -260t-199 -198t-285 -76q-70 0 -136.5 14.5t-97.5 30.5l-31 15l54 125q90 -51 209 -51q211 0 334.5 171t146.5 406h-4q-53 -76 -153.5 -122t-213.5 -46q-197 0 -321.5 130 t-124.5 335zM256 985q0 -154 89 -247t237 -93q141 0 244.5 78t103.5 168q0 156 -106.5 298t-258.5 142q-143 0 -226 -97t-83 -249z" /> -<glyph unicode=":" horiz-adv-x="600" d="M219 0v164h162v-164h-162zM219 866v164h162v-164h-162z" /> -<glyph unicode=";" horiz-adv-x="600" d="M127 -199l100 367h154l-135 -367h-119zM227 866v164h162v-164h-162z" /> -<glyph unicode="<" horiz-adv-x="1161" d="M102 530v103l926 414v-138l-752 -325v-4l752 -326v-137z" /> -<glyph unicode="=" horiz-adv-x="1400" d="M223 344v119h955v-119h-955zM223 700v119h955v-119h-955z" /> -<glyph unicode=">" horiz-adv-x="1161" d="M133 117v137l752 326v4l-752 325v138l926 -414v-103z" /> -<glyph unicode="?" horiz-adv-x="985" d="M82 1350q14 12 41 31.5t113 52t176 32.5q176 0 292.5 -102t116.5 -260q0 -94 -38 -170t-91 -126t-107.5 -97t-92 -109.5t-37.5 -136.5v-88h-140v92q0 90 37 164t89.5 124t105.5 97t90 109.5t37 134.5q0 100 -76 167.5t-192 67.5q-135 -2 -248 -88zM307 0v158h158v-158 h-158z" /> -<glyph unicode="@" horiz-adv-x="1648" d="M133 495.5q0 313.5 214 532.5t515 219q258 0 380 -110.5t122 -276.5v-645h145v-115h-551q-174 0 -291.5 116t-117.5 277.5t116.5 277.5t292.5 116h267q-4 102 -92.5 170.5t-260.5 68.5q-250 0 -423 -185t-173 -445q0 -264 173.5 -445.5t433.5 -181.5v-123 q-317 0 -533.5 218t-216.5 531.5zM692 495.5q0 -116.5 81 -198.5t198 -82h254v563h-250q-121 0 -202 -83t-81 -199.5z" /> -<glyph unicode="A" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186z" /> -<glyph unicode="B" horiz-adv-x="1282" d="M209 0v1440h491q174 0 282 -98.5t108 -264.5q0 -221 -183 -313v-4q111 -31 176.5 -128t65.5 -229q0 -186 -123 -294.5t-309 -108.5h-508zM350 127h369q131 0 206.5 76t75.5 205t-78.5 206.5t-205.5 77.5h-367v-565zM350 815h350q109 0 176.5 69.5t67.5 182.5t-65.5 179.5 t-180.5 66.5h-348v-498z" /> -<glyph unicode="C" horiz-adv-x="1490" d="M113 729q0 313 206.5 524t516.5 211q96 0 185 -19.5t146.5 -46t101.5 -54t64 -46.5l21 -20l-76 -104q-6 6 -19.5 17t-57.5 38.5t-91 48t-121 38t-149 17.5q-252 0 -416 -173t-164 -429q0 -262 165 -443.5t419 -181.5q82 0 159.5 19.5t131 48.5t95.5 57.5t60 47.5l21 20 l82 -100l-24 -24q-15 -15 -68.5 -54t-113 -67.5t-153.5 -53.5t-192 -25q-315 0 -522 217.5t-207 536.5z" /> -<glyph unicode="D" horiz-adv-x="1515" d="M209 0v1440h465q328 0 525.5 -191.5t197.5 -527.5q0 -340 -196.5 -530.5t-526.5 -190.5h-465zM350 127h309q270 0 430 154.5t160 439.5q0 283 -159.5 437.5t-430.5 154.5h-309v-1186z" /> -<glyph unicode="E" horiz-adv-x="1169" d="M209 0v1440h811v-127h-670v-525h547v-126h-547v-535h707v-127h-848z" /> -<glyph unicode="F" horiz-adv-x="1052" d="M209 0v1440h758v-127h-617v-541h529v-127h-529v-645h-141z" /> -<glyph unicode="G" horiz-adv-x="1552" d="M113 721q0 313 207.5 528t517.5 215q147 0 275 -42t181 -83l56 -43l-76 -106q-18 16 -54 39.5t-147.5 63.5t-228.5 40q-258 0 -421 -175t-163 -435q0 -266 163 -441.5t408 -175.5q125 0 238 53.5t164 106.5l51 51v244h-246v127h381v-688h-131v109l2 61h-4 q-6 -8 -19.5 -21.5t-58.5 -46t-95 -58.5t-131 -47.5t-165 -21.5q-297 0 -500.5 213.5t-203.5 532.5z" /> -<glyph unicode="H" horiz-adv-x="1536" d="M209 0v1440h141v-656h836v656h141v-1440h-141v657h-836v-657h-141z" /> -<glyph unicode="I" horiz-adv-x="559" d="M209 0v1440h141v-1440h-141z" /> -<glyph unicode="J" horiz-adv-x="1073" d="M72 403v58h141v-53q0 -154 77 -228t187 -74q109 0 185.5 72t76.5 225v910h-352v127h494v-1037q0 -217 -119 -322.5t-287 -105.5q-166 0 -284.5 106.5t-118.5 321.5z" /> -<glyph unicode="K" horiz-adv-x="1230" d="M209 0v1440h141v-625h244l387 625h162l-430 -680v-4l458 -756h-165l-412 688h-244v-688h-141z" /> -<glyph unicode="L" horiz-adv-x="1060" d="M209 0v1440h141v-1313h668v-127h-809z" /> -<glyph unicode="M" horiz-adv-x="1748" d="M164 0l115 1440h147l377 -846l69 -176h5q39 102 71 176l377 846h145l115 -1440h-141l-80 1008l-4 200h-4q-43 -127 -76 -200l-338 -740h-133l-338 740l-78 204h-4q2 -127 -4 -204l-80 -1008h-141z" /> -<glyph unicode="N" horiz-adv-x="1542" d="M209 0v1440h137l735 -1037l119 -194h4q-12 119 -12 194v1037h141v-1440h-137l-735 1036l-119 195h-4q12 -119 12 -195v-1036h-141z" /> -<glyph unicode="O" horiz-adv-x="1687" d="M111 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5t-519 219.5t-214 534.5zM258 729q0 -262 170 -442.5t416 -180.5q244 0 415 180.5t171 442.5q0 256 -171.5 430t-414.5 174q-246 0 -416 -174t-170 -430z" /> -<glyph unicode="P" horiz-adv-x="1224" d="M209 0v1440h498q197 0 320.5 -119t123.5 -315q0 -199 -124 -320t-320 -121h-357v-565h-141zM350 692h338q145 0 231.5 84t86.5 230q0 143 -85 225t-231 82h-340v-621z" /> -<glyph unicode="Q" horiz-adv-x="1710" d="M111 729q0 309 212 522t517 213q311 0 524 -213t213 -522q0 -285 -180 -496l178 -178l-86 -88l-176 178q-199 -170 -473 -170q-305 0 -517 219.5t-212 534.5zM258 729q0 -262 168 -442.5t414 -180.5q215 0 372 136l-176 180l86 88l174 -178q133 170 134 397 q0 258 -170 431t-420 173q-246 0 -414 -173t-168 -431z" /> -<glyph unicode="R" horiz-adv-x="1286" d="M209 0v1440h426q180 0 270 -39q102 -45 159.5 -142.5t57.5 -228.5q0 -145 -74.5 -249.5t-197.5 -139.5v-4q14 -18 37 -57l313 -580h-162l-325 606h-363v-606h-141zM350 733h342q131 0 208 79t77 214q0 182 -131 252q-66 35 -205 35h-291v-580z" /> -<glyph unicode="S" horiz-adv-x="1101" d="M102 160l84 108l18 -17q11 -11 49 -38t79 -47.5t104.5 -37.5t126.5 -17q123 0 205 68.5t82 180.5q0 98 -74 168t-179 114t-211.5 92t-180.5 134t-74 209q0 160 127 273.5t322 113.5q221 0 370 -125l15 -14l-70 -119q-14 14 -41 35t-108.5 54.5t-165.5 33.5 q-133 0 -218.5 -73.5t-85.5 -174.5q0 -94 74 -158.5t179.5 -107.5t212 -91t180 -138t73.5 -221q0 -166 -118.5 -278t-317.5 -112q-131 0 -244.5 46.5t-162.5 93.5z" /> -<glyph unicode="T" horiz-adv-x="1204" d="M14 1313v127h1176v-127h-516v-1313h-142v1313h-518z" /> -<glyph unicode="U" horiz-adv-x="1482" d="M190 502v938h144v-936q0 -184 110.5 -291t296.5 -107q188 0 299 108t111 294v932h141v-938q0 -238 -151.5 -382.5t-397.5 -144.5q-248 0 -400.5 144.5t-152.5 382.5z" /> -<glyph unicode="V" horiz-adv-x="1265" d="M25 1440h151l399 -1094l56 -186h4q29 113 55 186l400 1094h151l-534 -1440h-148z" /> -<glyph unicode="W" horiz-adv-x="1898" d="M80 1440h147l279 -1118l33 -154h4l4 20q4 23 12 62t16 72l304 1118h135l303 -1118q8 -33 16 -72t13 -62l4 -20h4q14 80 32 154l289 1118h148l-383 -1440h-170l-275 1014l-47 215h-4q-23 -123 -47 -215l-274 -1014h-170z" /> -<glyph unicode="X" horiz-adv-x="1212" d="M53 0l459 752l-418 688h166l252 -426l94 -166h4q41 92 86 166l254 426h168l-422 -688l461 -752h-164l-299 498l-90 159h-4q-43 -86 -88 -161l-295 -496h-164z" /> -<glyph unicode="Y" horiz-adv-x="1175" d="M31 1440h162l305 -522q43 -74 88 -173h4q43 96 88 173l305 522h160l-484 -822v-618h-143v618z" /> -<glyph unicode="Z" horiz-adv-x="1218" d="M88 0v100l743 1082q53 76 101 131v4q-35 -4 -105 -4h-700v127h981v-101l-743 -1081q-53 -78 -103 -131v-4q37 4 107 4h745v-127h-1026z" /> -<glyph unicode="[" horiz-adv-x="577" d="M219 -195v1690h277v-115h-148v-1460h148v-115h-277z" /> -<glyph unicode="\" horiz-adv-x="804" d="M70 1520h131l518 -1606h-129z" /> -<glyph unicode="]" horiz-adv-x="577" d="M82 -80h147v1460h-147v115h276v-1690h-276v115z" /> -<glyph unicode="^" horiz-adv-x="1241" d="M150 512l405 928h96l406 -928h-133l-320 758l-319 -758h-135z" /> -<glyph unicode="_" horiz-adv-x="1196" d="M70 0h1056v-119h-1056v119z" /> -<glyph unicode="`" horiz-adv-x="1032" d="M365 1784h161l142 -244h-127z" /> -<glyph unicode="a" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131z" /> -<glyph unicode="b" horiz-adv-x="1206" d="M168 0v1440h139v-500l-4 -84h4q4 8 11.5 21.5t36 47t65.5 60.5t100.5 48.5t136.5 21.5q205 0 327 -149.5t122 -391.5t-130 -390.5t-335 -148.5q-70 0 -129 20.5t-96 50.5t-63.5 59.5t-37.5 50.5l-12 20h-4q4 -35 4 -84v-92h-135zM303 512q0 -168 86 -291t242 -123 q141 0 236.5 113t95.5 303q0 188 -90.5 301t-235.5 113q-141 0 -237.5 -104.5t-96.5 -311.5z" /> -<glyph unicode="c" horiz-adv-x="1124" d="M96 514q0 236 156 388.5t385 152.5q221 0 360 -131l17 -17l-72 -104q-12 14 -36.5 34.5t-103.5 55.5t-161 35q-172 0 -286.5 -116t-114.5 -298q0 -180 116.5 -297t288.5 -117q59 0 114.5 15.5t92.5 36t66.5 42t44.5 35.5l12 17l63 -109q-6 -6 -16 -17t-49 -39t-82 -49.5 t-111.5 -39t-142.5 -17.5q-231 0 -386 150.5t-155 388.5z" /> -<glyph unicode="d" horiz-adv-x="1206" d="M100 516q0 242 129 390.5t334 148.5q207 0 316 -158l20 -37h4q-4 35 -4 78v502h139v-1440h-135v109l4 73h-4l-11 -22q-7 -14 -36 -50t-65.5 -63t-101 -49.5t-140.5 -22.5q-205 0 -327 149.5t-122 391.5zM244 516.5q0 -188.5 90 -302.5t235 -114q141 0 237.5 104.5 t96.5 311.5q0 170 -86 292t-242 122q-141 0 -236 -112.5t-95 -301z" /> -<glyph unicode="e" horiz-adv-x="1132" d="M96 514q0 246 146.5 393.5t361.5 147.5q205 0 317.5 -136.5t112.5 -338.5l-4 -72h-790q4 -190 117.5 -299t281.5 -109q172 0 305 117l8 8l64 -106q-16 -16 -48 -40t-131.5 -64t-201.5 -40q-231 0 -385 151.5t-154 387.5zM246 623h647q-6 154 -88 234.5t-205 80.5 q-135 0 -232 -82.5t-122 -232.5z" /> -<glyph unicode="f" horiz-adv-x="655" d="M86 901v117h129v49q0 119 38 202t99.5 118.5t112.5 49t106 13.5l64 -4v-125q-20 4 -49 4q-37 0 -71 -9t-74 -32.5t-63.5 -80t-23.5 -136.5v-49h264v-117h-264v-901h-139v901h-129z" /> -<glyph unicode="g" horiz-adv-x="1191" d="M100 534.5q0 233.5 121 377t326 143.5q76 0 139.5 -17.5t99 -43t60 -51t33.5 -42.5l8 -18h4q-2 12 -2 35v112h135v-1005q0 -229 -142.5 -342t-351.5 -113q-178 0 -337 82l53 115q127 -72 278 -72q162 0 261.5 80t99.5 243v95l4 73h-4q-96 -180 -326 -180 q-207 0 -333 147.5t-126 381zM244 536.5q0 -184.5 92 -295t246 -110.5q135 0 220 95.5t85 308.5q0 393 -326 393q-150 0 -233.5 -103.5t-83.5 -288z" /> -<glyph unicode="h" horiz-adv-x="1214" d="M168 0v1440h139v-557l-4 -84h4q37 92 144.5 174t265.5 82q184 0 264 -100.5t80 -299.5v-655h-139v618q0 145 -44 225.5t-180 80.5q-131 0 -235.5 -82t-138.5 -211q-16 -55 -17 -137v-494h-139z" /> -<glyph unicode="i" horiz-adv-x="475" d="M164 1266v174h145v-174h-145zM168 0v1030h139v-1030h-139z" /> -<glyph unicode="j" horiz-adv-x="475" d="M-113 -295q18 -2 45 -2q37 0 72 9t75 34t64.5 82t24.5 139v1063h139v-1069q0 -121 -38 -203t-100.5 -117.5t-113.5 -49t-106 -13.5l-62 6v121zM166 1266v174h143v-174h-143z" /> -<glyph unicode="k" horiz-adv-x="1028" d="M168 0v1440h139v-803h164l309 393h168l-358 -448v-4l393 -578h-166l-344 516h-166v-516h-139z" /> -<glyph unicode="l" horiz-adv-x="505" d="M158 244v1196h139v-1166q0 -156 115 -155l34 2v-125q-25 -4 -51 -4q-237 0 -237 252z" /> -<glyph unicode="m" horiz-adv-x="1875" d="M168 1030h137v-153l-4 -82h4q37 106 145.5 183t227.5 77q272 0 319 -258h4q43 109 147.5 183.5t231.5 74.5q182 0 262 -100.5t80 -299.5v-655h-139v621q0 145 -47 226t-176 81q-115 0 -205 -86t-121 -205q-18 -57 -18 -150v-487h-139v621q0 68 -7.5 114.5t-28 95 t-66.5 73t-116 24.5q-121 0 -212 -88t-125 -215q-14 -59 -15 -138v-487h-139v1030z" /> -<glyph unicode="n" horiz-adv-x="1214" d="M168 1030h137v-153l-4 -82h4q37 94 143.5 177t268.5 83q184 0 264 -100.5t80 -299.5v-655h-139v618q0 145 -44 225.5t-180 80.5q-131 0 -235.5 -81t-138.5 -210q-16 -57 -17 -139v-494h-139v1030z" /> -<glyph unicode="o" horiz-adv-x="1273" d="M92 520q0 227 159 381t386 154t386 -153.5t159 -381.5q0 -231 -159 -388t-386 -157t-386 157t-159 388zM236 520q0 -178 116.5 -299t284.5 -121t284.5 121t116.5 299q0 174 -116.5 291t-284.5 117t-284.5 -117t-116.5 -291z" /> -<glyph unicode="p" horiz-adv-x="1206" d="M168 -410v1440h133v-100l-4 -80h4l11 22q7 14 36 49t66 62t102.5 49.5t140.5 22.5q205 0 327 -149.5t122 -391.5t-129 -390.5t-332 -148.5q-70 0 -130 20.5t-96 49.5t-62.5 57.5t-37.5 49.5l-12 20h-4q4 -37 4 -90v-492h-139zM303 512q0 -166 88 -290t240 -124 q141 0 236.5 113t95.5 303q0 188 -90.5 301t-235.5 113q-141 0 -237.5 -104.5t-96.5 -311.5z" /> -<glyph unicode="q" horiz-adv-x="1206" d="M100 516q0 242 129 390.5t334 148.5q207 0 318 -162l20 -37h4q-2 33 -2 78v96h135v-1440h-139v496l4 90h-4q-4 -8 -11 -21.5t-36 -48t-65.5 -61.5t-100 -48.5t-137.5 -21.5q-205 0 -327 149.5t-122 391.5zM244 516.5q0 -188.5 90 -302.5t235 -114q141 0 237.5 104.5 t96.5 311.5q0 170 -86 292t-242 122q-141 0 -236 -112.5t-95 -301z" /> -<glyph unicode="r" horiz-adv-x="729" d="M168 0v1030h137v-182l-4 -82h4q39 123 124 198.5t202 75.5l55 -6v-137q-25 4 -51 4q-106 0 -185 -73.5t-114 -192.5q-29 -92 -29 -201v-434h-139z" /> -<glyph unicode="s" horiz-adv-x="907" d="M84 125l76 100q12 -14 36.5 -34.5t104.5 -55.5t166 -35q88 0 147.5 43t59.5 121q0 61 -57.5 105.5t-138.5 75t-163 66.5t-139 101.5t-57 157.5q0 133 102.5 209t249.5 76q61 0 115.5 -11.5t90.5 -28t62.5 -33.5t38.5 -28l10 -12l-63 -106q-10 10 -29.5 25.5t-86 42 t-142.5 26.5q-86 0 -145.5 -40t-59.5 -120q0 -61 57.5 -105t139.5 -74t162.5 -66t138 -101.5t57.5 -159.5q0 -127 -98 -208t-254 -81q-70 0 -135.5 15.5t-107.5 37t-74.5 44t-49.5 39.5z" /> -<glyph unicode="t" horiz-adv-x="686" d="M72 901v117h137v297h137v-297h258v-117h-258v-512q0 -70 17.5 -121t42 -79.5t57.5 -45t59.5 -21.5t55.5 -5l47 4v-125q-23 -4 -60 -4q-43 0 -84 6t-93 29.5t-90 62.5t-64.5 112.5t-26.5 172.5v526h-135z" /> -<glyph unicode="u" horiz-adv-x="1204" d="M154 375v655h139v-618q0 -145 44 -225.5t179 -80.5q170 0 275.5 127t105.5 304v493h139v-1030h-135v154l4 82h-4q-39 -94 -144.5 -177.5t-258.5 -83.5q-180 0 -262 98.5t-82 301.5z" /> -<glyph unicode="v" horiz-adv-x="993" d="M27 1030h147l287 -756l35 -122h4q16 70 37 122l284 756h146l-394 -1030h-151z" /> -<glyph unicode="w" horiz-adv-x="1640" d="M35 1030h147l250 -768l31 -110h4q14 61 31 110l254 764h137l254 -764l31 -110h4q14 59 30 110l250 768h148l-349 -1030h-151l-252 733l-33 111h-4q-14 -59 -31 -111l-251 -733h-152z" /> -<glyph unicode="x" horiz-adv-x="1005" d="M51 0l363 537l-332 493h164l221 -346l35 -59h2q18 33 35 59l221 346h164l-332 -493l362 -537h-163l-250 387l-35 57h-4h-2q-16 -31 -35 -57l-250 -387h-164z" /> -<glyph unicode="y" horiz-adv-x="1021" d="M14 -369l54 111q57 -47 122 -47q121 0 195 168l64 145l-431 1022h154l303 -751l37 -109h4q14 57 35 109l297 751h151l-507 -1245q-41 -100 -119 -157.5t-178 -57.5q-105 0 -181 61z" /> -<glyph unicode="z" horiz-adv-x="1042" d="M86 0v90l576 723l81 94v4q-35 -4 -102 -4h-530v123h821v-92l-576 -721l-84 -94v-4q37 4 105 4h575v-123h-866z" /> -<glyph unicode="{" horiz-adv-x="688" d="M109 598v127q6 0 18 3t42 18.5t53.5 38t42 69.5t18.5 107v167q0 96 24.5 168t58 109t80 58.5t78 26.5t64.5 5h30v-115h-18q-27 0 -52.5 -7t-60 -30.5t-55 -79t-20.5 -139.5v-200q0 -55 -16.5 -103.5t-41 -76t-49 -47t-41.5 -25.5l-16 -8v-5q6 -2 17 -7t40 -24.5t50.5 -46 t39 -74.5t17.5 -108v-225q0 -82 21.5 -138t55 -79t59 -31t52.5 -8h18v-115q-12 -2 -30 -2q-33 0 -64.5 5.5t-78 28t-80 59t-58 108.5t-24.5 168v195q0 59 -18.5 105t-43 69.5t-50.5 38t-44 16.5z" /> -<glyph unicode="|" horiz-adv-x="563" d="M217 -322v1936h129v-1936h-129z" /> -<glyph unicode="}" horiz-adv-x="688" d="M70 -82h20q25 0 50.5 8t59 31t55 79t21.5 138v225q0 59 16.5 107.5t41 75t49.5 46t41 25.5l16 6v5q-6 2 -17 7t-40 26.5t-50.5 48t-39 74.5t-17.5 104v200q0 84 -20 139.5t-55 79t-59.5 30.5t-51.5 7h-20v115h32q31 0 63 -5t78 -27.5t79.5 -58.5t58.5 -107.5t25 -168.5 v-167q0 -174 137 -226l37 -10v-127q-6 0 -18.5 -3t-42.5 -18.5t-53.5 -38t-41.5 -68.5t-18 -105v-195q0 -96 -25 -168t-58.5 -108.5t-79.5 -59t-78 -28t-63 -5.5l-32 2v115z" /> -<glyph unicode="~" horiz-adv-x="1232" d="M152 428q0 162 69.5 239.5t190.5 77.5q61 0 110 -21.5t81 -53t61.5 -63.5t68.5 -53.5t86 -21.5q82 0 114 63.5t32 141.5h120q0 -162 -69.5 -239.5t-190.5 -77.5q-76 0 -134 33.5t-89 72.5t-79 73t-105 34q-82 0 -114 -63.5t-32 -141.5h-120z" /> -<glyph unicode="¡" horiz-adv-x="561" d="M201 872v158h157v-158h-157zM209 -410l6 1063h131l6 -1063h-143z" /> -<glyph unicode="¢" horiz-adv-x="1171" d="M123 720.5q0 231.5 113.5 390.5t316.5 181v172h115v-172q262 -31 383 -303l-131 -49q-102 221 -304 221q-170 0 -259 -123t-89 -317q0 -197 88 -318.5t260 -121.5q203 0 304 221l131 -51q-57 -127 -154.5 -209t-228.5 -95v-174h-115v174q-203 23 -316.5 182.5t-113.5 391 z" /> -<glyph unicode="£" horiz-adv-x="1206" d="M121 0v127h129v541h-90v112h90v305q0 162 119.5 270.5t304.5 108.5q86 0 166 -29.5t116 -58.5l37 -28l-86 -103q-100 86 -233 86q-131 0 -206 -72.5t-75 -181.5v-297h393v-112h-393v-541h694v-127h-966z" /> -<glyph unicode="¥" horiz-adv-x="1230" d="M70 1440h161l293 -510q47 -82 88 -185h4q41 102 89 185l294 510h162l-360 -619h215v-104h-273l-55 -99v-79h328v-107h-328v-432h-143v432h-334v107h334v79l-58 99h-276v104h217z" /> -<glyph unicode="§" horiz-adv-x="843" d="M113 -41l71 98q72 -61 168.5 -61t159.5 60.5t63 162.5q0 35 -8 66l-133 878h123l139 -889q8 -53 9 -71q0 -143 -98.5 -236.5t-256.5 -93.5q-137 2 -237 86zM139 1135q0 143 97.5 236t255.5 93q137 -2 237 -86l-72 -96q-70 59 -166 59t-160.5 -58t-64.5 -161q0 -33 8 -63 l136 -885h-123l-140 889q-8 33 -8 72z" /> -<glyph unicode="¨" horiz-adv-x="1032" d="M299 1608v176h125v-176h-125zM608 1608v176h127v-176h-127z" /> -<glyph unicode="©" horiz-adv-x="1701" d="M123 721q0 309 212 526t511 217q305 0 519 -217t214 -526q0 -313 -213 -529.5t-520 -216.5q-301 0 -512 217.5t-211 528.5zM244 721q0 -268 174 -451.5t428 -183.5q260 0 437 183.5t177 451.5q0 266 -177 449.5t-437 183.5q-254 0 -428 -183.5t-174 -449.5zM444 717 q0 172 115 297t307 125q63 0 120.5 -19.5t94.5 -47.5t66 -56.5t41 -48.5l12 -19l-94 -63l-10 15q-6 9 -29 33.5t-48.5 43t-65.5 34t-83 15.5q-141 0 -223 -90t-82 -217t81 -217t224 -90q135 0 226 127l10 14l94 -64q-4 -8 -13 -20t-40 -45t-67 -58.5t-93 -46t-121 -20.5 q-195 0 -308.5 124t-113.5 294z" /> -<glyph unicode="ª" horiz-adv-x="874" d="M166 541v96h541v-96h-541zM170 977q0 227 391 227h27v8q0 152 -146 152q-41 0 -84 -14.5t-65 -30.5l-23 -14l-53 79q90 76 236 76q121 0 183 -64.5t62 -187.5v-413h-106v100h-4q-6 -12 -19.5 -30.5t-63.5 -50.5t-110 -32q-90 0 -157.5 51.5t-67.5 143.5zM285 987 q0 -45 33.5 -75.5t93.5 -30.5q78 0 126 66.5t48 148.5v18h-25q-276 0 -276 -127z" /> -<glyph unicode="«" horiz-adv-x="1071" d="M102 578l336 421h150l-336 -421l336 -420h-150zM469 578l336 421h151l-335 -421l335 -420h-151z" /> -<glyph unicode="¬" horiz-adv-x="1275" d="M150 700v119h954v-495h-125v376h-829z" /> -<glyph unicode="­" horiz-adv-x="884" d="M152 518v127h581v-127h-581z" /> -<glyph unicode="®" horiz-adv-x="1701" d="M123 721q0 309 212 526t511 217q305 0 519 -217t214 -526q0 -313 -213 -529.5t-520 -216.5q-301 0 -512 217.5t-211 528.5zM244 721q0 -268 174 -451.5t428 -183.5q260 0 437 183.5t177 451.5q0 266 -177 449.5t-437 183.5q-254 0 -428 -183.5t-174 -449.5zM604 1120h285 q106 0 172.5 -65.5t66.5 -171.5q0 -84 -44 -140.5t-105 -70.5v-4q8 -10 27 -45l153 -301h-127l-160 323h-153v-323h-115v798zM719 735h149q66 0 104 39t38 109q0 68 -38 104.5t-104 36.5h-149v-289z" /> -<glyph unicode="¯" horiz-adv-x="1032" d="M264 1608v112h504v-112h-504z" /> -<glyph unicode="°" horiz-adv-x="780" d="M102 1178q0 117 84 200.5t203 83.5t204 -84t85 -200q0 -119 -84 -202t-205 -83q-119 0 -203 83t-84 202zM225 1178q0 -72 47 -121t117 -49t119 49t49 121q0 70 -49 120t-119 50t-117 -50t-47 -120z" /> -<glyph unicode="±" horiz-adv-x="1409" d="M170 522v119h473v522h125v-522h471v-119h-471v-522h-125v522h-473zM207 -213h995v-119h-995v119z" /> -<glyph unicode="²" horiz-adv-x="782" d="M102 930q0 94 46.5 167.5t112 121t130 88.5t110.5 93t46 116q0 66 -47 111.5t-121 45.5q-100 0 -178 -96l-4 -4l-74 72q10 14 29.5 36.5t87 59.5t143.5 37q127 0 203 -74t76 -186q0 -84 -44.5 -149.5t-108 -108.5t-127 -82t-109.5 -92.5t-50 -116.5h455v-103h-569 q-7 35 -7 64z" /> -<glyph unicode="³" horiz-adv-x="782" d="M88 981l72 78q8 -12 25.5 -29.5t73.5 -47.5t118 -30q74 0 133 52.5t59 130t-60 125t-140 47.5h-68l-29 63l203 236l51 51v4q-39 -6 -75 -6h-316v102h539v-74l-244 -282q102 -12 178 -78t76 -188q0 -119 -88 -204t-217 -85q-55 0 -105.5 14.5t-82 33.5t-56 38.5 t-37.5 34.5z" /> -<glyph unicode="´" horiz-adv-x="1032" d="M365 1540l141 244h162l-176 -244h-127z" /> -<glyph unicode="µ" horiz-adv-x="1247" d="M182 -410v1440h140v-618q0 -145 45 -225.5t180 -80.5q168 0 273.5 128t105.5 303v493h139v-1030h-135v156l4 80h-4q-4 -10 -13.5 -28t-43 -63t-74.5 -79.5t-114 -62.5t-157 -28q-76 0 -133 21.5t-76 44.5l-18 20h-4q14 -104 14 -155v-316h-129z" /> -<glyph unicode="μ" horiz-adv-x="1247" d="M182 -410v1440h140v-618q0 -145 45 -225.5t180 -80.5q168 0 273.5 128t105.5 303v493h139v-1030h-135v156l4 80h-4q-4 -10 -13.5 -28t-43 -63t-74.5 -79.5t-114 -62.5t-157 -28q-76 0 -133 21.5t-76 44.5l-18 20h-4q14 -104 14 -155v-316h-129z" /> -<glyph unicode="¶" horiz-adv-x="1173" d="M100 968.5q0 198.5 143.5 335t344.5 136.5h489v-127h-370v-1415h-117v596q-201 0 -345.5 138t-144.5 336.5zM834 -102v1292h118v-1292h-118z" /> -<glyph unicode="·" horiz-adv-x="555" d="M199 508v164h157v-164h-157z" /> -<glyph unicode="¸" horiz-adv-x="1032" d="M367 -311q39 -12 86 -13q104 0 104 70t-117 70l-30 -2l53 227l82 -14v-17l-23 -123q63 -10 103.5 -48t40.5 -97q0 -84 -56.5 -123t-140.5 -39l-102 10v99z" /> -<glyph unicode="¹" horiz-adv-x="782" d="M150 1556l202 201h107v-788h190v-103h-497v103h194v592l2 49h-2q-8 -16 -43 -51l-82 -78z" /> -<glyph unicode="º" horiz-adv-x="970" d="M141 1126q0 141 100.5 238.5t242 97.5t241.5 -97t100 -239q0 -145 -99 -243.5t-242.5 -98.5t-243 98.5t-99.5 243.5zM176 541v96h621v-96h-621zM254 1126q0 -102 66.5 -169.5t163 -67.5t163 67.5t66.5 169.5q0 100 -66.5 167t-163 67t-163 -67t-66.5 -167z" /> -<glyph unicode="»" horiz-adv-x="1073" d="M115 158l336 420l-336 421h151l336 -421l-336 -420h-151zM483 158l336 420l-336 421h152l336 -421l-336 -420h-152z" /> -<glyph unicode="¼" horiz-adv-x="1933" d="M127 1239l203 201h106v-789h191v-102h-498v102h195v592l2 49h-2q-8 -16 -43 -51l-82 -78zM528 0l689 1440h118l-686 -1440h-121zM1147 233v78l434 580h113v-555h133v-103h-133v-233h-113v233h-434zM1286 336h295v278l6 127h-4q-33 -55 -65 -100l-232 -301v-4z" /> -<glyph unicode="½" horiz-adv-x="1929" d="M127 1239l203 201h106v-789h191v-102h-498v102h195v592l2 49h-2q-8 -16 -43 -51l-82 -78zM530 0l689 1440h118l-686 -1440h-121zM1206 63q0 94 46 168t112 121t130.5 88t110.5 93.5t46 115.5q0 66 -47.5 112t-120.5 46q-100 0 -178 -96l-5 -4l-73 71q10 14 29.5 37 t87 59.5t143.5 36.5q127 0 202.5 -73.5t75.5 -186.5q0 -84 -44 -149.5t-107.5 -108.5t-127 -82t-109.5 -92t-50 -117h455v-102h-570q-6 32 -6 63z" /> -<glyph unicode="¾" horiz-adv-x="1966" d="M96 664l72 77q8 -12 25.5 -29.5t74 -47t117.5 -29.5q74 0 133.5 52t59.5 130t-60.5 125t-140.5 47h-68l-28 64l202 235l52 51v4q-39 -6 -76 -6h-316v103h539v-74l-244 -283q102 -12 178 -77.5t76 -188.5q0 -119 -88 -204t-217 -85q-55 0 -105.5 14.5t-82 34t-56 39 t-37.5 33.5zM561 0l688 1440h119l-686 -1440h-121zM1180 233v78l434 580h112v-555h134v-103h-134v-233h-112v233h-434zM1319 336h295v278l6 127h-4q-33 -55 -66 -100l-231 -301v-4z" /> -<glyph unicode="¿" horiz-adv-x="901" d="M92 -68q0 94 38 169t91 126.5t107.5 98.5t92.5 109.5t38 135.5v82h137v-88q0 -88 -37 -160.5t-89 -124t-104.5 -99.5t-89 -109.5t-36.5 -132.5q0 -100 75.5 -168t192.5 -68q61 0 123.5 21.5t93.5 42.5l31 22l75 -102q-14 -12 -40.5 -32t-112.5 -52.5t-176 -32.5 q-176 0 -293 102t-117 260zM449 872v158h157v-158h-157z" /> -<glyph unicode="À" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186zM393 1784h162l141 -244h-127z" /> -<glyph unicode="Á" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186zM565 1540l142 244h161l-176 -244h-127z" /> -<glyph unicode="Â" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186zM383 1540l170 244h154l172 -244h-136l-110 166h-4l-111 -166h-135z" /> -<glyph unicode="Ã" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM311 1546q0 240 189 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h110q0 -240 -188 -240q-59 0 -103.5 37t-81 73t-73.5 36q-80 0 -80 -140h-113zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186z " /> -<glyph unicode="Ä" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186zM414 1608v176h125v-176h-125zM723 1608v176h127v-176h-127z" /> -<glyph unicode="Å" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186zM477 1662.5q0 63.5 45 104.5t108.5 41t109.5 -41t46 -104.5t-46 -104t-109.5 -40.5t-108.5 40.5t-45 104zM565 1663q0 -29 18.5 -48.5t47.5 -19.5 q31 0 49 19.5t18 48.5q0 31 -18 50.5t-49 19.5q-29 0 -47.5 -19.5t-18.5 -50.5z" /> -<glyph unicode="Æ" horiz-adv-x="1746" d="M20 0l592 1440h985v-127h-669v-525h547v-126h-547v-535h706v-127h-848v664h-348l-268 -664h-150zM489 786h297v527h-84z" /> -<glyph unicode="Ç" horiz-adv-x="1492" d="M115 729q0 313 206.5 524t516.5 211q96 0 185 -19.5t146.5 -46t101.5 -54t64 -46.5l21 -20l-76 -104q-6 6 -19.5 17t-57.5 38.5t-91 48t-120.5 38t-149.5 17.5q-252 0 -416 -173t-164 -429q0 -262 165 -443.5t419 -181.5q82 0 159.5 19.5t131 48.5t95.5 57.5t62 47.5 l19 20l82 -100l-23 -23q-14 -14 -65.5 -52t-108.5 -67.5t-148.5 -54.5t-185.5 -27l-16 -88q63 -10 103 -48t40 -97q0 -84 -56 -123t-140 -39l-103 10v99q39 -12 86 -13q104 0 104.5 70t-116.5 70l-31 -2l39 166q-291 25 -475 236.5t-184 512.5z" /> -<glyph unicode="È" horiz-adv-x="1169" d="M209 0v1440h811v-127h-670v-525h547v-126h-547v-535h707v-127h-848zM399 1784h162l141 -244h-127z" /> -<glyph unicode="É" horiz-adv-x="1169" d="M209 0v1440h811v-127h-670v-525h547v-126h-547v-535h707v-127h-848zM571 1540l142 244h161l-176 -244h-127z" /> -<glyph unicode="Ê" horiz-adv-x="1169" d="M209 0v1440h811v-127h-670v-525h547v-126h-547v-535h707v-127h-848zM391 1540l170 244h154l172 -244h-135l-111 166h-4l-111 -166h-135z" /> -<glyph unicode="Ë" horiz-adv-x="1169" d="M209 0v1440h811v-127h-670v-525h547v-126h-547v-535h707v-127h-848zM422 1608v176h125v-176h-125zM731 1608v176h127v-176h-127z" /> -<glyph unicode="Ì" horiz-adv-x="559" d="M43 1784h162l141 -244h-127zM209 0v1440h141v-1440h-141z" /> -<glyph unicode="Í" horiz-adv-x="559" d="M209 0v1440h141v-1440h-141zM213 1540l141 244h162l-176 -244h-127z" /> -<glyph unicode="Î" horiz-adv-x="559" d="M33 1540l170 244h153l172 -244h-135l-110 166h-4l-111 -166h-135zM209 0v1440h141v-1440h-141z" /> -<glyph unicode="Ï" horiz-adv-x="559" d="M63 1608v176h125v-176h-125zM209 0v1440h141v-1440h-141zM373 1608v176h127v-176h-127z" /> -<glyph unicode="Ð" horiz-adv-x="1544" d="M119 662v122h123v656h463q330 0 526 -191.5t196 -527.5q0 -340 -196.5 -530.5t-525.5 -190.5h-463v662h-123zM383 127h307q270 0 430 154.5t160 439.5q0 283 -159.5 437.5t-430.5 154.5h-307v-529h342v-122h-342v-535z" /> -<glyph unicode="Ñ" horiz-adv-x="1542" d="M209 0v1440h137l735 -1037l119 -194h4q-12 119 -12 194v1037h141v-1440h-137l-735 1036l-119 195h-4q12 -119 12 -195v-1036h-141zM453 1546q0 240 188 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h111q0 -240 -189 -240q-59 0 -103 37t-81 73t-74 36q-80 0 -80 -140 h-112z" /> -<glyph unicode="Ò" horiz-adv-x="1687" d="M111 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5t-519 219.5t-214 534.5zM258 729q0 -262 170 -442.5t416 -180.5q244 0 415 180.5t171 442.5q0 256 -171.5 430t-414.5 174q-246 0 -416 -174t-170 -430zM604 1784h162l141 -244h-127z " /> -<glyph unicode="Ó" horiz-adv-x="1687" d="M111 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5t-519 219.5t-214 534.5zM258 729q0 -262 170 -442.5t416 -180.5q244 0 415 180.5t171 442.5q0 256 -171.5 430t-414.5 174q-246 0 -416 -174t-170 -430zM776 1540l142 244h161 l-176 -244h-127z" /> -<glyph unicode="Ô" horiz-adv-x="1687" d="M111 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5t-519 219.5t-214 534.5zM258 729q0 -262 170 -442.5t416 -180.5q244 0 415 180.5t171 442.5q0 256 -171.5 430t-414.5 174q-246 0 -416 -174t-170 -430zM596 1540l170 244h154l172 -244 h-136l-110 166h-4l-111 -166h-135z" /> -<glyph unicode="Õ" horiz-adv-x="1687" d="M111 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5t-519 219.5t-214 534.5zM258 729q0 -262 170 -442.5t416 -180.5q244 0 415 180.5t171 442.5q0 256 -171.5 430t-414.5 174q-246 0 -416 -174t-170 -430zM524 1546q0 240 189 240 q59 0 103 -37t81 -74t74 -37q82 0 82 142h110q0 -240 -188 -240q-59 0 -103.5 37t-81 73t-73.5 36q-80 0 -80 -140h-113z" /> -<glyph unicode="Ö" horiz-adv-x="1687" d="M111 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5t-519 219.5t-214 534.5zM258 729q0 -262 170 -442.5t416 -180.5q244 0 415 180.5t171 442.5q0 256 -171.5 430t-414.5 174q-246 0 -416 -174t-170 -430zM627 1608v176h125v-176h-125z M936 1608v176h127v-176h-127z" /> -<glyph unicode="×" horiz-adv-x="1341" d="M147 84l443 498l-443 497l84 84l439 -493l438 493l84 -84l-444 -497l444 -498l-84 -84l-438 494l-439 -494z" /> -<glyph unicode="Ø" horiz-adv-x="1693" d="M115 729q0 309 213 522t520 213q207 0 387 -108l96 135l84 -61l-96 -136q123 -102 192.5 -249.5t69.5 -315.5q0 -315 -214 -534.5t-519 -219.5q-215 0 -393 115l-99 -139l-86 59l101 142q-121 104 -188.5 254.5t-67.5 322.5zM262 729q0 -279 191 -463l702 979 q-143 88 -307 88q-246 0 -416 -174t-170 -430zM535 201q143 -94 313 -95q244 0 415 180.5t171 442.5q0 274 -195 453z" /> -<glyph unicode="Ù" horiz-adv-x="1482" d="M190 502v938h144v-936q0 -184 110.5 -291t296.5 -107q188 0 299 108t111 294v932h141v-938q0 -238 -151.5 -382.5t-397.5 -144.5q-248 0 -400.5 144.5t-152.5 382.5zM504 1784h162l141 -244h-127z" /> -<glyph unicode="Ú" horiz-adv-x="1482" d="M190 502v938h144v-936q0 -184 110.5 -291t296.5 -107q188 0 299 108t111 294v932h141v-938q0 -238 -151.5 -382.5t-397.5 -144.5q-248 0 -400.5 144.5t-152.5 382.5zM676 1540l141 244h162l-176 -244h-127z" /> -<glyph unicode="Û" horiz-adv-x="1482" d="M190 502v938h144v-936q0 -184 110.5 -291t296.5 -107q188 0 299 108t111 294v932h141v-938q0 -238 -151.5 -382.5t-397.5 -144.5q-248 0 -400.5 144.5t-152.5 382.5zM494 1540l170 244h153l172 -244h-135l-111 166h-4l-110 -166h-135z" /> -<glyph unicode="Ü" horiz-adv-x="1482" d="M190 502v938h144v-936q0 -184 110.5 -291t296.5 -107q188 0 299 108t111 294v932h141v-938q0 -238 -151.5 -382.5t-397.5 -144.5q-248 0 -400.5 144.5t-152.5 382.5zM524 1608v176h125v-176h-125zM834 1608v176h127v-176h-127z" /> -<glyph unicode="Ý" horiz-adv-x="1175" d="M31 1440h162l305 -522q43 -74 88 -173h4q43 96 88 173l305 522h160l-484 -822v-618h-143v618zM520 1540l142 244h161l-176 -244h-127z" /> -<glyph unicode="Þ" horiz-adv-x="1226" d="M209 0v1440h141v-256h357q195 0 319.5 -119t124.5 -317q0 -197 -126 -318t-323 -121h-352v-309h-141zM350 436h338q145 0 230.5 83t85.5 228.5t-84 227.5t-230 82h-340v-621z" /> -<glyph unicode="ß" horiz-adv-x="1173" d="M168 0v1087q0 174 123 275.5t289 101.5q160 0 259 -90t99 -215q0 -72 -36 -134t-78 -99t-77.5 -82t-35.5 -88q0 -45 62.5 -97.5t137 -96.5t137 -119.5t62.5 -163.5q0 -139 -96 -216t-236 -77q-86 0 -161.5 16t-108.5 33l-33 16v133q123 -74 293 -73q84 0 142.5 44 t58.5 128q0 63 -62.5 123.5t-138.5 101.5t-138.5 106.5t-62.5 137.5q0 59 36 114.5t78 92t78 90t36 108.5q0 72 -58.5 126t-163.5 54q-106 0 -186 -69.5t-80 -190.5v-1077h-139z" /> -<glyph unicode="à" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131zM291 1440h162l141 -244h-127z" /> -<glyph unicode="á" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131zM461 1196l141 244h162l-176 -244h-127z" /> -<glyph unicode="â" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131zM283 1196l170 244h153l172 -244h-135l-111 166h-4l-110 -166h-135z" /> -<glyph unicode="ã" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM211 1202q0 240 188 240q59 0 103.5 -37t81.5 -74t73 -37q82 0 82 142h111q0 -240 -189 -240q-59 0 -103 37t-81 72.5t-74 35.5q-80 0 -79 -139h-113zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59 q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131z" /> -<glyph unicode="ä" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131zM313 1264v176h125v-176h-125zM623 1264v176h127v-176h-127z" /> -<glyph unicode="å" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131zM375 1318.5q0 63.5 45 104.5t108.5 41t109.5 -41t46 -104.5t-46 -104t-109.5 -40.5t-108.5 40.5t-45 104z M463 1319q0 -29 18.5 -48.5t46.5 -19.5q31 0 49.5 19.5t18.5 48.5q0 31 -18.5 50.5t-49.5 19.5q-29 0 -47 -19.5t-18 -50.5z" /> -<glyph unicode="æ" horiz-adv-x="1781" d="M84 281q0 70 23.5 125t58.5 90.5t91 62.5t105.5 40t119 20.5t113.5 8.5t107 1h68v35q0 266 -262 266q-154 0 -281 -94l-4 -5l-63 105q14 12 42.5 32.5t121 53.5t192.5 33q281 0 348 -213h4q127 213 389 213q199 0 312.5 -134.5t113.5 -328.5l-4 -78h-774 q4 -199 110.5 -306.5t274.5 -107.5q82 0 160 32t115 63l37 30l63 -106q-16 -16 -47 -40t-130 -64t-204 -40q-158 0 -276.5 76t-176.5 211h-4q-6 -23 -19 -51.5t-46 -72.5t-73 -77.5t-106.5 -59.5t-144.5 -26q-150 0 -252 81.5t-102 224.5zM227 289q0 -80 61.5 -137.5 t170.5 -57.5q139 0 226 120t87 265v35h-121q-82 0 -142 -6t-132 -26.5t-111 -69.5t-39 -123zM913 629h629q-6 152 -89 229.5t-202 77.5q-133 0 -223 -78.5t-115 -228.5z" /> -<glyph unicode="ç" horiz-adv-x="1126" d="M98 514q0 236 156 388.5t385 152.5q221 0 360 -131l17 -17l-72 -104q-12 14 -36.5 34.5t-103.5 55.5t-161 35q-172 0 -286.5 -116t-114.5 -298q0 -180 116.5 -297t288.5 -117q59 0 114.5 15.5t92.5 36t66.5 42t42.5 35.5l14 17l63 -109q-14 -16 -43.5 -42.5t-129 -70.5 t-210.5 -49l-16 -88q63 -10 103 -48t40 -97q0 -84 -56 -123t-140 -39l-103 10v99q39 -12 86 -13q104 0 104.5 70t-116.5 70l-31 -2l39 166q-207 23 -338 170t-131 364z" /> -<glyph unicode="è" horiz-adv-x="1132" d="M96 514q0 246 146.5 393.5t361.5 147.5q205 0 317.5 -136.5t112.5 -338.5l-4 -72h-790q4 -190 117.5 -299t281.5 -109q172 0 305 117l8 8l64 -106q-16 -16 -48 -40t-131.5 -64t-201.5 -40q-231 0 -385 151.5t-154 387.5zM246 623h647q-6 154 -88 234.5t-205 80.5 q-135 0 -232 -82.5t-122 -232.5zM369 1440h161l142 -244h-127z" /> -<glyph unicode="é" horiz-adv-x="1132" d="M96 514q0 246 146.5 393.5t361.5 147.5q205 0 317.5 -136.5t112.5 -338.5l-4 -72h-790q4 -190 117.5 -299t281.5 -109q172 0 305 117l8 8l64 -106q-16 -16 -48 -40t-131.5 -64t-201.5 -40q-231 0 -385 151.5t-154 387.5zM246 623h647q-6 154 -88 234.5t-205 80.5 q-135 0 -232 -82.5t-122 -232.5zM539 1196l141 244h162l-176 -244h-127z" /> -<glyph unicode="ê" horiz-adv-x="1132" d="M96 514q0 246 146.5 393.5t361.5 147.5q205 0 317.5 -136.5t112.5 -338.5l-4 -72h-790q4 -190 117.5 -299t281.5 -109q172 0 305 117l8 8l64 -106q-16 -16 -48 -40t-131.5 -64t-201.5 -40q-231 0 -385 151.5t-154 387.5zM246 623h647q-6 154 -88 234.5t-205 80.5 q-135 0 -232 -82.5t-122 -232.5zM358 1196l170 244h154l172 -244h-135l-111 166h-4l-110 -166h-136z" /> -<glyph unicode="ë" horiz-adv-x="1132" d="M96 514q0 246 146.5 393.5t361.5 147.5q205 0 317.5 -136.5t112.5 -338.5l-4 -72h-790q4 -190 117.5 -299t281.5 -109q172 0 305 117l8 8l64 -106q-16 -16 -48 -40t-131.5 -64t-201.5 -40q-231 0 -385 151.5t-154 387.5zM246 623h647q-6 154 -88 234.5t-205 80.5 q-135 0 -232 -82.5t-122 -232.5zM389 1264v176h125v-176h-125zM698 1264v176h127v-176h-127z" /> -<glyph unicode="ì" horiz-adv-x="475" d="M0 1440h162l141 -244h-127zM168 0v1030h139v-1030h-139z" /> -<glyph unicode="í" horiz-adv-x="475" d="M168 0v1030h139v-1030h-139zM172 1196l141 244h162l-176 -244h-127z" /> -<glyph unicode="î" horiz-adv-x="475" d="M-8 1196l170 244h153l172 -244h-135l-110 166h-4l-111 -166h-135zM168 0v1030h139v-1030h-139z" /> -<glyph unicode="ï" horiz-adv-x="475" d="M23 1264v176h124v-176h-124zM168 0v1030h139v-1030h-139zM332 1264v176h127v-176h-127z" /> -<glyph unicode="ð" horiz-adv-x="1204" d="M100 475q0 197 130 339t360 142q178 0 287 -102l8 -8h4q-70 199 -254 325l-361 -163l-26 98l276 129q-131 68 -291 104l41 119q236 -59 402 -158l268 121l27 -98l-199 -92q309 -242 309 -672q0 -106 -29.5 -206.5t-89 -186.5t-160 -138.5t-229.5 -52.5q-215 0 -344 149.5 t-129 350.5zM244 473q0 -152 90 -262.5t244 -110.5q176 0 268 132.5t92 299.5q0 133 -92 219.5t-242 86.5q-174 0 -267 -107.5t-93 -257.5z" /> -<glyph unicode="ñ" horiz-adv-x="1214" d="M168 1030h137v-153l-4 -82h4q37 94 143.5 177t268.5 83q184 0 264 -100.5t80 -299.5v-655h-139v618q0 145 -44 225.5t-180 80.5q-131 0 -235.5 -81t-138.5 -210q-16 -57 -17 -139v-494h-139v1030zM317 1202q0 240 189 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h110 q0 -240 -188 -240q-59 0 -103 37t-81 72.5t-74 35.5q-80 0 -80 -139h-113z" /> -<glyph unicode="ò" horiz-adv-x="1273" d="M92 520q0 227 159 381t386 154t386 -153.5t159 -381.5q0 -231 -159 -388t-386 -157t-386 157t-159 388zM236 520q0 -178 116.5 -299t284.5 -121t284.5 121t116.5 299q0 174 -116.5 291t-284.5 117t-284.5 -117t-116.5 -291zM399 1440h162l141 -244h-127z" /> -<glyph unicode="ó" horiz-adv-x="1273" d="M92 520q0 227 159 381t386 154t386 -153.5t159 -381.5q0 -231 -159 -388t-386 -157t-386 157t-159 388zM236 520q0 -178 116.5 -299t284.5 -121t284.5 121t116.5 299q0 174 -116.5 291t-284.5 117t-284.5 -117t-116.5 -291zM571 1196l142 244h161l-176 -244h-127z" /> -<glyph unicode="ô" horiz-adv-x="1273" d="M92 520q0 227 159 381t386 154t386 -153.5t159 -381.5q0 -231 -159 -388t-386 -157t-386 157t-159 388zM236 520q0 -178 116.5 -299t284.5 -121t284.5 121t116.5 299q0 174 -116.5 291t-284.5 117t-284.5 -117t-116.5 -291zM389 1196l170 244h154l172 -244h-135l-111 166 h-4l-111 -166h-135z" /> -<glyph unicode="õ" horiz-adv-x="1273" d="M92 520q0 227 159 381t386 154t386 -153.5t159 -381.5q0 -231 -159 -388t-386 -157t-386 157t-159 388zM236 520q0 -178 116.5 -299t284.5 -121t284.5 121t116.5 299q0 174 -116.5 291t-284.5 117t-284.5 -117t-116.5 -291zM317 1202q0 240 189 240q59 0 103 -37t81 -74 t74 -37q82 0 82 142h110q0 -240 -188 -240q-59 0 -103 37t-81 72.5t-74 35.5q-80 0 -80 -139h-113z" /> -<glyph unicode="ö" horiz-adv-x="1273" d="M92 520q0 227 159 381t386 154t386 -153.5t159 -381.5q0 -231 -159 -388t-386 -157t-386 157t-159 388zM236 520q0 -178 116.5 -299t284.5 -121t284.5 121t116.5 299q0 174 -116.5 291t-284.5 117t-284.5 -117t-116.5 -291zM420 1264v176h125v-176h-125zM729 1264v176 h127v-176h-127z" /> -<glyph unicode="÷" horiz-adv-x="1323" d="M160 522v119h1003v-119h-1003zM584 125v151h153v-151h-153zM584 887v151h153v-151h-153z" /> -<glyph unicode="ø" horiz-adv-x="1277" d="M94 520q0 227 159 381t386 154q150 0 279 -74l79 111l84 -62l-77 -110q180 -158 180 -400q0 -231 -159 -388t-386 -157q-139 0 -264 66l-78 -109l-84 62l76 104q-195 162 -195 422zM238 520q0 -188 129 -311l475 663q-94 55 -203 56q-168 0 -284.5 -117t-116.5 -291z M451 147q84 -47 188 -47q168 0 284.5 121t116.5 299q0 172 -116 289z" /> -<glyph unicode="ù" horiz-adv-x="1204" d="M154 375v655h139v-618q0 -145 44 -225.5t179 -80.5q170 0 275.5 127t105.5 304v493h139v-1030h-135v154l4 82h-4q-39 -94 -144.5 -177.5t-258.5 -83.5q-180 0 -262 98.5t-82 301.5zM358 1440h162l142 -244h-127z" /> -<glyph unicode="ú" horiz-adv-x="1204" d="M154 375v655h139v-618q0 -145 44 -225.5t179 -80.5q170 0 275.5 127t105.5 304v493h139v-1030h-135v154l4 82h-4q-39 -94 -144.5 -177.5t-258.5 -83.5q-180 0 -262 98.5t-82 301.5zM528 1196l142 244h161l-176 -244h-127z" /> -<glyph unicode="û" horiz-adv-x="1204" d="M154 375v655h139v-618q0 -145 44 -225.5t179 -80.5q170 0 275.5 127t105.5 304v493h139v-1030h-135v154l4 82h-4q-39 -94 -144.5 -177.5t-258.5 -83.5q-180 0 -262 98.5t-82 301.5zM348 1196l170 244h154l172 -244h-135l-111 166h-4l-111 -166h-135z" /> -<glyph unicode="ü" horiz-adv-x="1204" d="M154 375v655h139v-618q0 -145 44 -225.5t179 -80.5q170 0 275.5 127t105.5 304v493h139v-1030h-135v154l4 82h-4q-39 -94 -144.5 -177.5t-258.5 -83.5q-180 0 -262 98.5t-82 301.5zM379 1264v176h125v-176h-125zM688 1264v176h127v-176h-127z" /> -<glyph unicode="ý" horiz-adv-x="1021" d="M14 -369l54 111q57 -47 122 -47q121 0 195 168l64 145l-431 1022h154l303 -751l37 -109h4q14 57 35 109l297 751h151l-507 -1245q-41 -100 -119 -157.5t-178 -57.5q-105 0 -181 61zM446 1196l142 244h162l-177 -244h-127z" /> -<glyph unicode="þ" horiz-adv-x="1206" d="M168 -410v1850h139v-498l-2 -84h4l13 19q12 18 26 38.5t44 46t65 45t87 34t111 14.5q207 0 329 -149.5t122 -389.5q0 -242 -129 -391.5t-332 -149.5q-70 0 -131 20.5t-97 49.5t-62.5 57.5t-37.5 49.5l-10 20h-4q4 -37 4 -90v-492h-139zM303 514q0 -174 89 -294t241 -120 q141 0 235.5 114t94.5 302q0 184 -90.5 298t-233.5 114q-145 0 -240.5 -102.5t-95.5 -311.5z" /> -<glyph unicode="ÿ" horiz-adv-x="1021" d="M14 -369l54 111q57 -47 122 -47q121 0 195 168l64 145l-431 1022h154l303 -751l37 -109h4q14 57 35 109l297 751h151l-507 -1245q-41 -100 -119 -157.5t-178 -57.5q-105 0 -181 61zM297 1264v176h125v-176h-125zM606 1264v176h127v-176h-127z" /> -<glyph unicode="Œ" horiz-adv-x="1951" d="M113 721q0 313 207.5 526t525.5 213q45 0 129 -10t115 -10h710v-127h-667v-525h544v-126h-544v-535h704v-127h-745q-29 0 -115 -10t-131 -10q-317 0 -525 213t-208 528zM260 721q0 -262 163 -437t423 -175l143 14v1192q-66 16 -143 16q-260 0 -423 -174t-163 -436z" /> -<glyph unicode="œ" horiz-adv-x="2074" d="M94 512q0 240 158 391.5t383 151.5q154 0 275.5 -74t189.5 -203h4q59 131 175 204t265 73q205 0 318.5 -136.5t113.5 -338.5l-4 -72h-790q8 -195 121.5 -301.5t277.5 -106.5q84 0 162 32t112 63l37 30l66 -106q-16 -16 -48 -40t-131.5 -64t-203.5 -40q-160 0 -283 75 t-186 206h-4q-66 -131 -188.5 -206t-278.5 -75q-225 0 -383 149.5t-158 387.5zM238 512q0 -182 115.5 -297t283.5 -115t283.5 117t115.5 303q0 182 -116.5 295t-282.5 113q-168 0 -283.5 -116t-115.5 -300zM1188 623h645q-6 154 -87 234.5t-204 80.5q-135 0 -232 -82.5 t-122 -232.5z" /> -<glyph unicode="Ÿ" horiz-adv-x="1175" d="M31 1440h162l305 -522q43 -74 88 -173h4q43 96 88 173l305 522h160l-484 -822v-618h-143v618zM360 1608v176h125v-176h-125zM670 1608v176h127v-176h-127z" /> -<glyph unicode="ˆ" horiz-adv-x="1032" d="M268 1540l170 244h154l172 -244h-135l-111 166h-4l-111 -166h-135z" /> -<glyph unicode="˜" horiz-adv-x="1032" d="M197 1546q0 240 188 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h111q0 -240 -189 -240q-59 0 -103 37t-81 73t-74 36q-80 0 -80 -140h-112z" /> -<glyph unicode="–" horiz-adv-x="1449" d="M213 522v119h1024v-119h-1024z" /> -<glyph unicode="—" horiz-adv-x="1859" d="M213 522v119h1434v-119h-1434z" /> -<glyph unicode="‘" horiz-adv-x="440" d="M115 1106l116 352h111l-80 -352h-147z" /> -<glyph unicode="’" horiz-adv-x="428" d="M117 1108l80 352h147l-115 -352h-112z" /> -<glyph unicode="‚" horiz-adv-x="487" d="M104 -184l80 352h146l-115 -352h-111z" /> -<glyph unicode="“" horiz-adv-x="686" d="M115 1106l116 352h111l-80 -352h-147zM360 1106l115 352h113l-80 -352h-148z" /> -<glyph unicode="”" horiz-adv-x="673" d="M117 1108l80 352h147l-115 -352h-112zM362 1108l80 352h148l-115 -352h-113z" /> -<glyph unicode="„" horiz-adv-x="729" d="M104 -184l80 352h146l-115 -352h-111zM346 -184l80 352h145l-114 -352h-111z" /> -<glyph unicode="•" horiz-adv-x="821" d="M119 596q0 121 86 207t206.5 86t205.5 -86t85 -207t-85 -207t-205.5 -86t-206.5 86t-86 207z" /> -<glyph unicode="…" horiz-adv-x="1464" d="M172 0v164h158v-164h-158zM653 0v164h158v-164h-158zM1135 0v164h157v-164h-157z" /> -<glyph unicode="‹" horiz-adv-x="702" d="M102 578l336 421h150l-336 -421l336 -420h-150z" /> -<glyph unicode="›" horiz-adv-x="704" d="M115 158l336 420l-336 421h151l336 -421l-336 -420h-151z" /> -<glyph unicode="€" horiz-adv-x="1208" d="M84 545v104h113q-12 72 0 166h-113v105h131q61 242 249.5 393t438.5 151l195 -24l-35 -133q-76 23 -162 22q-195 0 -338 -112.5t-196 -296.5h626l-20 -105h-629q-12 -78 -2 -166h600l-20 -104h-557q49 -195 195.5 -314.5t344.5 -119.5q45 0 91 7t69 13l22 8l33 -133 q-94 -31 -217 -31q-258 0 -447.5 159t-244.5 411h-127z" /> -<glyph unicode="™" horiz-adv-x="1908" d="M55 1333v107h758v-107h-321v-790h-117v790h-320zM887 543l71 897h107l235 -514q18 -39 29 -84h4q10 45 29 84l235 514h107l70 -897h-113l-51 608l2 59h-4l-230 -499h-94l-229 499h-4l2 -59l-52 -608h-114z" /> -<glyph unicode="" horiz-adv-x="1030" d="M0 1030h1030v-1030h-1030v1030z" /> -<glyph unicode="fi" horiz-adv-x="1130" d="M86 913v117h129v37q0 119 38 202t99.5 118.5t112.5 49t106 13.5l64 -4v-125q-20 4 -49 4q-37 0 -71 -9t-74 -32.5t-63.5 -80t-23.5 -136.5v-37h609v-1030h-140v913h-469v-913h-139v913h-129zM819 1266v174h146v-174h-146z" /> -<glyph unicode="fl" horiz-adv-x="1161" d="M86 901v117h129v49q0 119 38 202t99.5 118.5t112.5 49t106 13.5l64 -4v-125q-20 4 -49 4q-37 0 -71 -9t-74 -32.5t-63.5 -80t-23.5 -136.5v-49h264v-117h-264v-901h-139v901h-129zM813 244v1196h139v-1166q0 -156 115 -155l35 2v-125q-25 -4 -51 -4q-238 0 -238 252z" /> -<glyph unicode="ffi" horiz-adv-x="1785" d="M86 913v117h129v37q0 119 38 202t99.5 118.5t112.5 49t106 13.5l64 -4v-125q-20 4 -49 4q-37 0 -71 -9t-74 -32.5t-63.5 -80t-23.5 -136.5v-37h516v37q0 119 38 202t99.5 118.5t112.5 49t107 13.5l63 -4v-125q-20 4 -49 4q-37 0 -70.5 -9t-73.5 -32.5t-63.5 -80 t-23.5 -136.5v-37h608v-1030h-139v913h-469v-913h-140v913h-516v-913h-139v913h-129zM1475 1266v174h145v-174h-145z" /> -<glyph unicode="ffl" horiz-adv-x="1816" d="M86 913v117h129v37q0 119 38 202t99.5 118.5t112.5 49t106 13.5l64 -4v-125q-20 4 -49 4q-37 0 -71 -9t-74 -32.5t-63.5 -80t-23.5 -136.5v-37h516v37q0 119 38 202t99.5 118.5t112.5 49t107 13.5l63 -4v-125q-20 4 -49 4q-37 0 -70.5 -9t-73.5 -32.5t-63.5 -80 t-23.5 -136.5v-37h264v-117h-264v-913h-140v913h-516v-913h-139v913h-129zM1468 244v1196h140v-1166q0 -156 114 -155l35 2v-125q-25 -4 -51 -4q-238 0 -238 252z" /> -</font> -</defs></svg>
\ No newline at end of file diff --git a/web/cobrands/stevenage/fonts/MuseoSans_300-webfont.ttf b/web/cobrands/stevenage/fonts/MuseoSans_300-webfont.ttf Binary files differdeleted file mode 100755 index 0a4444b76..000000000 --- a/web/cobrands/stevenage/fonts/MuseoSans_300-webfont.ttf +++ /dev/null diff --git a/web/cobrands/stevenage/fonts/MuseoSans_300-webfont.woff b/web/cobrands/stevenage/fonts/MuseoSans_300-webfont.woff Binary files differdeleted file mode 100755 index 22110a14e..000000000 --- a/web/cobrands/stevenage/fonts/MuseoSans_300-webfont.woff +++ /dev/null diff --git a/web/cobrands/stevenage/fonts/MuseoSans_300_Italic-webfont.eot b/web/cobrands/stevenage/fonts/MuseoSans_300_Italic-webfont.eot Binary files differdeleted file mode 100755 index 3a35076a1..000000000 --- a/web/cobrands/stevenage/fonts/MuseoSans_300_Italic-webfont.eot +++ /dev/null diff --git a/web/cobrands/stevenage/fonts/MuseoSans_300_Italic-webfont.svg b/web/cobrands/stevenage/fonts/MuseoSans_300_Italic-webfont.svg deleted file mode 100755 index b848d3756..000000000 --- a/web/cobrands/stevenage/fonts/MuseoSans_300_Italic-webfont.svg +++ /dev/null @@ -1,227 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > -<svg xmlns="http://www.w3.org/2000/svg"> -<metadata> -This is a custom SVG webfont generated by Fontspring. -</metadata> -<defs> -<font id="MuseoSans300Italic" horiz-adv-x="1255" > -<font-face units-per-em="2048" ascent="1536" descent="-512" /> -<missing-glyph horiz-adv-x="555" /> -<glyph unicode=" " horiz-adv-x="555" /> -<glyph unicode="	" horiz-adv-x="555" /> -<glyph unicode=" " horiz-adv-x="555" /> -<glyph unicode="!" horiz-adv-x="632" d="M117 0l33 162h161l-32 -162h-162zM205 377l201 1063h145l-215 -1063h-131z" /> -<glyph unicode=""" horiz-adv-x="647" d="M236 1114l67 346h119l-66 -346h-120zM485 1114l66 346h121l-68 -346h-119z" /> -<glyph unicode="#" horiz-adv-x="1480" d="M53 399l43 115h287l149 401h-286l41 115h286l152 410h129l-152 -410h355l151 410h127l-151 -410h284l-41 -115h-284l-150 -401h283l-41 -115h-285l-147 -399h-129l149 399h-354l-147 -399h-129l149 399h-289zM512 514h352l150 401h-355z" /> -<glyph unicode="$" horiz-adv-x="1142" d="M41 160l96 100q4 -6 14.5 -16.5t43 -36t70.5 -45t98.5 -35.5t125.5 -16q135 0 238.5 82.5t103.5 212.5q0 80 -61 140t-149.5 102t-175.5 88t-148 123t-61 181q0 160 132 284t324 138l39 191h115l-37 -193q94 -10 172 -44t109 -62l30 -29l-84 -108q-12 12 -35.5 30.5 t-101.5 50t-162 31.5q-150 0 -253 -90t-103 -199q0 -72 61.5 -127t149.5 -97t175 -90t148.5 -129t61.5 -191q0 -168 -131 -294t-328 -137l-35 -186h-114l34 193q-111 12 -200.5 56t-124.5 83z" /> -<glyph unicode="%" horiz-adv-x="1505" d="M18 0l1360 1440h160l-1364 -1440h-156zM221 1147q0 121 102.5 219t231.5 98q113 0 182.5 -69.5t69.5 -180.5q0 -125 -101.5 -222t-230.5 -97q-117 0 -185.5 68.5t-68.5 183.5zM344 1145q0 -57 39 -96t100 -39q80 0 140.5 61.5t60.5 142.5q0 57 -38 96.5t-99 39.5 q-80 0 -141.5 -62.5t-61.5 -142.5zM741 227q0 121 102.5 219.5t231.5 98.5q115 0 183.5 -69.5t68.5 -180.5q0 -125 -101.5 -222.5t-230.5 -97.5q-115 0 -184.5 68.5t-69.5 183.5zM864 225q0 -59 39 -97t101 -38q80 0 140 60.5t60 142.5q0 59 -38 98t-99 39 q-78 0 -140.5 -62.5t-62.5 -142.5z" /> -<glyph unicode="&" horiz-adv-x="1378" d="M76 342q0 145 97 270t249 164v4q-6 2 -16.5 7.5t-35 24.5t-44 45t-36 73t-16.5 104q0 188 140.5 309t349.5 121l176 -26l-57 -113q-68 14 -119 14q-141 0 -242.5 -85t-101.5 -222q0 -201 266 -201h303l41 203h139l-39 -203h195l-25 -126h-194l-43 -211 q-104 -518 -553 -519q-205 0 -319.5 100.5t-114.5 266.5zM223 346q0 -104 77 -170.5t212 -66.5q334 0 412 389l41 207h-303q-182 0 -310.5 -94.5t-128.5 -264.5z" /> -<glyph unicode="'" horiz-adv-x="401" d="M236 1114l67 346h121l-66 -346h-122z" /> -<glyph unicode="(" horiz-adv-x="587" d="M143 350q0 637 418 1145h135q-424 -535 -424 -1149q0 -289 97 -541h-125q-101 258 -101 545z" /> -<glyph unicode=")" horiz-adv-x="589" d="M-94 -195q424 535 424 1149q0 289 -97 541h125q100 -258 101 -545q0 -637 -418 -1145h-135z" /> -<glyph unicode="*" horiz-adv-x="956" d="M178 1108l64 125l274 -109l49 316h140l-76 -316l319 107l19 -129l-324 -90v-4l141 -242l-114 -78l-127 260h-4l-226 -258l-100 80l242 250v4z" /> -<glyph unicode="+" horiz-adv-x="1390" d="M143 522l23 119h471l104 522h125l-102 -522h471l-23 -119h-471l-102 -522h-125l102 522h-473z" /> -<glyph unicode="," horiz-adv-x="507" d="M-78 -199l191 367h157l-223 -367h-125z" /> -<glyph unicode="-" horiz-adv-x="999" d="M190 518l23 127h582l-25 -127h-580z" /> -<glyph unicode="." horiz-adv-x="497" d="M51 0l33 170h166l-33 -170h-166z" /> -<glyph unicode="/" horiz-adv-x="804" d="M-53 -86l831 1606h140l-832 -1606h-139z" /> -<glyph unicode="0" horiz-adv-x="1290" d="M137 440q0 119 20.5 249t69.5 270.5t121 251t186.5 182t253.5 71.5q406 0 406 -467q0 -119 -19.5 -249t-68.5 -270t-121 -249.5t-186.5 -181.5t-255.5 -72q-406 0 -406 465zM285 440q0 -332 262 -331q106 0 194 62t143.5 158.5t93.5 218.5t53.5 234.5t15.5 212.5 q0 336 -263 336q-125 0 -226 -88t-157.5 -226t-86 -287t-29.5 -290z" /> -<glyph unicode="1" horiz-adv-x="954" d="M4 0l23 127h323l203 1042l18 80h-4q-20 -29 -90 -86l-178 -147l-78 100l393 324h134l-259 -1313h318l-25 -127h-778z" /> -<glyph unicode="2" horiz-adv-x="1161" d="M18 0q2 123 56.5 227.5t137.5 179t182.5 141t198.5 127t181 122t133 140.5t51 169q0 102 -66.5 162.5t-184.5 60.5q-59 0 -119 -20.5t-102 -48t-75.5 -56t-50.5 -49.5l-16 -20l-100 79q8 10 22.5 26.5t62.5 59.5t100 77t132 60.5t160 26.5q182 0 285.5 -95t103.5 -253 q0 -141 -86 -259t-213 -201t-256 -158.5t-232.5 -171t-125.5 -199.5h745l-24 -127h-900z" /> -<glyph unicode="3" horiz-adv-x="1159" d="M8 172l96 98q4 -6 13.5 -17t41 -39t69.5 -48.5t99.5 -37.5t129.5 -17q150 0 269.5 108.5t119.5 263.5q0 119 -87 182.5t-222 63.5h-107l-18 84l440 422l90 80v4q-41 -6 -117 -6h-530l24 127h842l-18 -94l-525 -498q47 -2 94.5 -13.5t99.5 -39t91 -66.5t64.5 -102.5 t25.5 -141.5q0 -205 -159.5 -357.5t-376.5 -152.5q-88 0 -166 20.5t-127 49.5t-86 57.5t-53 49.5z" /> -<glyph unicode="4" horiz-adv-x="1226" d="M33 399l18 93l879 948h166l-178 -916h204l-24 -125h-205l-78 -399h-141l78 399h-719zM240 524h536l117 602l33 136h-4l-13 -17q-12 -16 -34.5 -43.5t-43.5 -48.5z" /> -<glyph unicode="5" horiz-adv-x="1157" d="M31 180l102 92q4 -6 11.5 -17t34 -39t58 -49.5t87 -38.5t118.5 -17q164 0 295 118.5t131 286.5q0 119 -86 194.5t-223 75.5q-152 0 -276 -77l-88 32l213 699h700l-25 -127h-571l-115 -365l-28 -82h4q94 51 217 52q190 0 308 -112t118 -286q0 -225 -173 -385t-401 -160 q-252 0 -385 166z" /> -<glyph unicode="6" horiz-adv-x="1228" d="M127 494q0 106 31.5 233t97.5 258t157 237.5t222 174t278 67.5q78 0 146.5 -15t99.5 -30l31 -14l-72 -119q-84 45 -203 45q-211 0 -368.5 -171t-224.5 -406h4q66 78 168 123t208 45q178 0 283 -103.5t105 -275.5q0 -217 -147.5 -392.5t-379.5 -175.5q-203 0 -319.5 141.5 t-116.5 377.5zM274 467q0 -141 77 -249.5t210 -108.5q162 0 273.5 125.5t111.5 304.5q0 119 -71.5 187.5t-200.5 68.5q-137 0 -268.5 -95.5t-131.5 -232.5z" /> -<glyph unicode="7" horiz-adv-x="1071" d="M66 0l813 1180q25 35 50 67.5t40 48.5l14 17v4q-37 -4 -109 -4h-661l25 127h936l-19 -99l-930 -1341h-159z" /> -<glyph unicode="8" horiz-adv-x="1247" d="M90 356q0 94 44 180.5t109.5 145.5t105.5 88t69 43q-135 100 -135 244q0 160 136 283.5t353 123.5q188 0 292.5 -86t104.5 -235q0 -76 -33.5 -156t-86 -143.5t-84 -95t-60.5 -56.5q162 -104 162 -260q0 -190 -161 -323.5t-382 -133.5q-190 0 -312 102.5t-122 278.5z M240 360q0 -117 83 -185.5t203 -68.5q152 0 272 91.5t120 232.5q0 45 -22 83t-68 70.5t-84.5 54t-110.5 55.5t-107 52q-37 -20 -75.5 -47.5t-91 -77t-86 -118t-33.5 -142.5zM430 1057q0 -37 16.5 -71t37 -57.5t65.5 -51t72.5 -41t88 -42t85.5 -40.5q229 190 229 381 q0 92 -69.5 145t-186.5 53q-145 0 -241.5 -81.5t-96.5 -194.5z" /> -<glyph unicode="9" horiz-adv-x="1228" d="M82 35l72 119q86 -45 204 -45q143 0 268.5 88t203 214t120.5 275h-4q-61 -74 -163.5 -121t-211.5 -47q-180 0 -284.5 102.5t-104.5 276.5q0 217 148.5 392t380.5 175q203 0 318.5 -141t115.5 -377q0 -106 -32 -233t-97.5 -258t-156.5 -237.5t-222 -174.5t-279 -68 q-78 0 -146.5 14.5t-98.5 30.5zM326 901q0 -119 71.5 -187.5t196.5 -68.5q137 0 271 95.5t134 232.5q0 141 -77.5 249.5t-208.5 108.5q-162 0 -274.5 -126t-112.5 -304z" /> -<glyph unicode=":" horiz-adv-x="600" d="M98 0l33 170h166l-33 -170h-166zM266 860l33 170h166l-33 -170h-166z" /> -<glyph unicode=";" horiz-adv-x="608" d="M-41 -199l188 367h160l-223 -367h-125zM279 860l32 170h166l-33 -170h-165z" /> -<glyph unicode="<" horiz-adv-x="1206" d="M94 530v103l926 414v-138l-752 -325v-4l752 -326v-137z" /> -<glyph unicode="=" horiz-adv-x="1406" d="M215 344v119h954v-119h-954zM215 700v119h954v-119h-954z" /> -<glyph unicode=">" horiz-adv-x="1181" d="M150 117v137l751 326v4l-751 325v138l925 -414v-103z" /> -<glyph unicode="?" horiz-adv-x="976" d="M180 0l33 162h160l-33 -162h-160zM213 1358q16 12 47 30.5t120 48t173 29.5q162 0 260 -86t98 -225q0 -100 -45 -183t-112.5 -140.5t-137 -109.5t-127 -117.5t-71.5 -139.5l-19 -88h-137l19 92q18 94 75.5 173t124 132t131 105.5t107.5 118t43 143.5q0 84 -60.5 138 t-162.5 54q-66 0 -132.5 -21.5t-99.5 -43.5l-35 -23z" /> -<glyph unicode="@" horiz-adv-x="1624" d="M96 358q0 231 125 438.5t327 329t421 121.5q236 0 342 -89t106 -234q0 -27 -8 -80l-123 -629h146l-23 -115h-530q-162 0 -260.5 95.5t-98.5 240.5q0 174 142.5 312.5t330.5 138.5h285q4 25 4 39q0 88 -77 144t-230 56q-291 0 -513 -231t-222 -533q0 -217 136 -356 t363 -139l-22 -121q-268 0 -444.5 174t-176.5 438zM664 438q0 -96 63.5 -159.5t167.5 -63.5h254l108 563h-249q-135 0 -239.5 -103.5t-104.5 -236.5z" /> -<glyph unicode="A" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186z" /> -<glyph unicode="B" horiz-adv-x="1284" d="M90 0l281 1440h463q104 0 172 -27q182 -72 182 -276q0 -131 -68.5 -230.5t-181.5 -146.5v-4q82 -29 130 -103.5t48 -179.5q0 -152 -79 -265.5t-206 -168.5q-92 -39 -204 -39h-537zM256 127h369q86 0 149 29q88 41 141.5 125t53.5 192q0 102 -63.5 160.5t-172.5 58.5h-366 zM391 815h348q123 0 212 88t89 221q0 88 -53 138.5t-151 50.5h-349z" /> -<glyph unicode="C" horiz-adv-x="1488" d="M121 594q0 233 119.5 435t317.5 318.5t417 116.5q297 0 477 -155l31 -31l-90 -100q-6 6 -17.5 16t-50.5 36.5t-83 47t-115.5 37t-147.5 16.5q-287 0 -499 -218t-212 -515q0 -215 130 -352t347 -137q129 0 255 48t188 95l61 47l70 -111q-10 -8 -28.5 -22t-78 -51t-123 -66 t-158.5 -51.5t-190 -22.5q-285 0 -452.5 172.5t-167.5 446.5z" /> -<glyph unicode="D" horiz-adv-x="1511" d="M90 0l281 1440h436q293 0 459 -146.5t166 -412.5q0 -369 -241 -625t-611 -256h-490zM254 127h309q311 0 516 214t205 531q0 211 -130 326t-359 115h-308z" /> -<glyph unicode="E" horiz-adv-x="1163" d="M90 0l281 1440h811l-27 -127h-668l-102 -525h547l-25 -126h-545l-106 -535h705l-23 -127h-848z" /> -<glyph unicode="F" horiz-adv-x="1056" d="M90 0l281 1440h757l-24 -127h-617l-104 -541h528l-24 -127h-529l-127 -645h-141z" /> -<glyph unicode="G" horiz-adv-x="1550" d="M119 578q0 236 118.5 440.5t318.5 325t425 120.5q152 0 276.5 -42t176.5 -83l49 -41l-90 -102q-6 6 -17.5 15.5t-50.5 32t-83 41t-114.5 32.5t-144.5 14q-293 0 -505 -223t-212 -524q0 -213 129 -344t338 -131q80 0 161 22.5t139.5 56t104.5 66.5t70 55l23 23l47 229 h-246l25 127h379l-133 -688h-132l23 111l14 61h-4q-8 -8 -22.5 -21.5t-64.5 -47t-103 -59.5t-134 -47.5t-163 -21.5q-264 0 -431 168.5t-167 434.5z" /> -<glyph unicode="H" horiz-adv-x="1536" d="M90 0l281 1440h141l-127 -656h834l129 656h141l-281 -1440h-143l129 657h-834l-129 -657h-141z" /> -<glyph unicode="I" horiz-adv-x="559" d="M90 0l281 1440h141l-281 -1440h-141z" /> -<glyph unicode="J" horiz-adv-x="1060" d="M14 301q0 51 11 107l10 53h141l-8 -51q-10 -51 -10 -88q0 -213 213 -213q68 0 129 25.5t115.5 95t74.5 173.5l174 910h-350l25 127h491l-203 -1051q-41 -213 -170 -313.5t-288 -100.5q-152 0 -253.5 81t-101.5 245z" /> -<glyph unicode="K" horiz-adv-x="1228" d="M90 0l281 1440h141l-121 -625h234l518 625h168l-572 -686v-4l314 -750h-154l-283 688h-249l-136 -688h-141z" /> -<glyph unicode="L" horiz-adv-x="1044" d="M90 0l281 1440h141l-256 -1313h668l-27 -127h-807z" /> -<glyph unicode="M" horiz-adv-x="1746" d="M43 0l395 1440h144l211 -846l36 -176h5q57 100 104 176l543 846h149l-166 -1440h-139l119 1008q4 35 11 85t13.5 82.5t8.5 32.5h-4q-66 -127 -115 -200l-481 -740h-134l-196 740l-39 204h-4q-20 -127 -41 -204l-279 -1008h-141z" /> -<glyph unicode="N" horiz-adv-x="1529" d="M90 0l281 1440h127l532 -1037q37 -72 80 -194h4q10 119 25 194l202 1037h142l-281 -1440h-127l-532 1036l-82 195h-4q-10 -119 -25 -195l-201 -1036h-141z" /> -<glyph unicode="O" horiz-adv-x="1683" d="M119 598q0 227 124 429t323.5 319.5t416.5 117.5q279 0 453 -170t174 -436q0 -231 -125 -437t-326 -326t-416 -120q-279 0 -451.5 174.5t-172.5 448.5zM264 602q0 -217 134 -355t347 -138q272 0 494.5 222t222.5 521q0 211 -134 345t-347 134q-276 0 -496.5 -217 t-220.5 -512z" /> -<glyph unicode="P" horiz-adv-x="1228" d="M90 0l281 1440h471q141 0 227 -49q170 -92 170 -304q0 -164 -86 -292.5t-223 -188.5q-100 -41 -209 -41h-379l-111 -565h-141zM367 692h340q94 0 167 33q98 45 158 137t60 219q0 111 -70 171.5t-197 60.5h-338z" /> -<glyph unicode="Q" horiz-adv-x="1708" d="M119 598q0 227 124 429t324.5 319.5t417.5 117.5q279 0 452 -170t173 -436q0 -365 -285 -633l139 -174l-94 -84l-139 178q-225 -170 -486 -170q-279 0 -452.5 174.5t-173.5 448.5zM266 602q0 -217 134.5 -355t344.5 -138q215 0 402 141l-143 182l94 84l143 -186 q221 225 221 522q0 211 -133 345t-346 134q-276 0 -496.5 -217t-220.5 -512z" /> -<glyph unicode="R" horiz-adv-x="1282" d="M90 0l281 1440h473q125 0 200 -39q170 -82 170 -291q0 -170 -101 -301t-263 -168v-4q10 -18 24 -59l205 -578h-151l-211 606h-367l-117 -606h-143zM375 733h334q152 0 256 101.5t104 261.5q0 102 -64.5 159.5t-177.5 57.5h-340z" /> -<glyph unicode="S" horiz-adv-x="1101" d="M20 160l95 100q4 -6 14 -16.5t43 -36t71 -45t98 -35.5t126 -16q135 0 238.5 82.5t103.5 212.5q0 80 -61.5 140t-149.5 102t-175 88t-148.5 123t-61.5 181q0 170 147.5 297t354.5 127q117 0 212 -34.5t134 -69.5l37 -35l-84 -108q-12 12 -36 30.5t-100.5 50t-160.5 31.5 q-152 0 -255.5 -89t-103.5 -200q0 -72 61.5 -127t148.5 -97t175 -90t149.5 -129t61.5 -191q0 -174 -140 -302.5t-347 -128.5q-258 0 -420 156z" /> -<glyph unicode="T" horiz-adv-x="1191" d="M143 1313l23 127h1173l-22 -127h-518l-254 -1313h-144l256 1313h-514z" /> -<glyph unicode="U" horiz-adv-x="1476" d="M156 393q0 55 12 117l182 930h142l-183 -934q-10 -49 -10 -96q0 -143 90 -222t252 -79q186 0 317.5 107.5t167.5 293.5l183 930h143l-188 -948q-47 -240 -215 -378.5t-410 -138.5q-219 0 -351 111.5t-132 306.5z" /> -<glyph unicode="V" horiz-adv-x="1259" d="M178 1440h146l184 -1094q12 -74 18 -186h4l15 28q14 31 36.5 79t41.5 79l612 1094h160l-813 -1440h-154z" /> -<glyph unicode="W" horiz-adv-x="1908" d="M236 1440h145l63 -1118l2 -154h5q33 80 67 154l537 1118h141l72 -1118l4 -154h4q31 82 61 154l498 1118h156l-654 -1440h-172l-69 1014l-4 215h-5q-51 -121 -94 -213l-491 -1016h-168z" /> -<glyph unicode="X" horiz-adv-x="1198" d="M-66 0l605 758l-285 682h154l170 -422l63 -164h4q57 86 117 162l340 424h170l-561 -697l319 -743h-151l-207 492l-60 159h-4q-55 -82 -114 -155l-396 -496h-164z" /> -<glyph unicode="Y" horiz-adv-x="1155" d="M176 1440h152l202 -522l58 -173h4q59 94 119 170l405 525h172l-649 -826l-121 -614h-141l123 618z" /> -<glyph unicode="Z" horiz-adv-x="1210" d="M-35 0l21 100l942 1082q68 78 127 131v4q-33 -4 -105 -4h-690l27 127h979l-21 -101l-944 -1081q-68 -78 -127 -131v-4q35 4 105 4h737l-25 -127h-1026z" /> -<glyph unicode="[" horiz-adv-x="581" d="M59 -195l330 1690h277l-23 -115h-149l-281 -1460h147l-22 -115h-279z" /> -<glyph unicode="\" horiz-adv-x="790" d="M242 1520h125l206 -1606h-124z" /> -<glyph unicode="]" horiz-adv-x="569" d="M-82 -195l23 115h149l283 1460h-150l23 115h278l-327 -1690h-279z" /> -<glyph unicode="^" horiz-adv-x="1241" d="M31 512l405 928h96l406 -928h-133l-320 758l-319 -758h-135z" /> -<glyph unicode="_" horiz-adv-x="1187" d="M-76 -119l23 119h1057l-23 -119h-1057z" /> -<glyph unicode="`" horiz-adv-x="1032" d="M281 1784h151l96 -244h-118z" /> -<glyph unicode="a" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268z" /> -<glyph unicode="b" horiz-adv-x="1210" d="M51 0l279 1440h139l-96 -498l-27 -94h4q55 92 157.5 149.5t215.5 57.5q180 0 279.5 -110.5t99.5 -303.5q0 -287 -169 -476.5t-392 -189.5q-117 0 -204 55.5t-120 155.5h-4q0 -43 -10 -92l-19 -94h-133zM274 391q0 -127 64.5 -209t193.5 -82q162 0 294 147.5t132 383.5 q0 139 -69.5 218t-190.5 79q-182 0 -303 -164t-121 -373z" /> -<glyph unicode="c" horiz-adv-x="1124" d="M68 414q0 272 191.5 456.5t440.5 184.5q115 0 208 -37t128 -74l37 -37l-84 -94q-10 12 -31.5 31.5t-95.5 51.5t-155 32q-193 0 -344.5 -145.5t-151.5 -356.5q0 -145 93 -235.5t243 -90.5q188 0 346 133l14 13l43 -117q-6 -6 -18 -16.5t-54 -37t-86 -47t-113 -37 t-138 -16.5q-211 0 -342 121t-131 318z" /> -<glyph unicode="d" horiz-adv-x="1210" d="M70 389q0 287 169 476.5t396 189.5q113 0 199 -52.5t118 -152.5h4q0 43 9 86l98 504h139l-278 -1440h-136l21 109l22 81h-4q-55 -90 -154.5 -152.5t-219.5 -62.5q-184 0 -283.5 110.5t-99.5 303.5zM213 397q0 -139 69.5 -218t192.5 -79q182 0 302 167t120 370 q0 127 -64.5 209t-191.5 82q-162 0 -295 -147.5t-133 -383.5z" /> -<glyph unicode="e" horiz-adv-x="1132" d="M70 410q0 258 172 451.5t426 193.5q186 0 281 -102.5t95 -270.5q0 -35 -8 -79t-16 -71l-6 -24h-791q-8 -41 -8 -88q0 -139 86 -229.5t244 -90.5q82 0 166 32t127 63l43 30l45 -114q-18 -14 -52 -37t-135.5 -61t-197.5 -38q-211 0 -341 120t-130 315zM250 623h645 q6 35 6 71q0 119 -64.5 181.5t-168.5 62.5q-133 0 -249 -84t-169 -231z" /> -<glyph unicode="f" horiz-adv-x="661" d="M102 0l177 903h-129l22 119h129l10 53q23 117 75 198t118.5 115.5t119 48t103.5 13.5l76 -4l-27 -125q-18 4 -47 4t-56.5 -4t-63.5 -20.5t-65.5 -43t-56 -75.5t-38.5 -115l-11 -45h264l-22 -119h-262l-176 -903h-140z" /> -<glyph unicode="g" horiz-adv-x="1193" d="M10 -344l68 106q115 -68 270 -67q158 0 272.5 81t149.5 242l21 95l22 82h-4q-127 -188 -342 -189q-182 0 -286.5 111.5t-104.5 298.5q0 152 60.5 294t187.5 243.5t292 101.5q117 0 207 -43t121 -140h4q-2 23 2 46l23 112h135l-199 -1018q-45 -229 -197.5 -335.5 t-353.5 -106.5q-188 0 -348 86zM219 424q0 -137 70.5 -215t200 -78t223.5 90t135 211t41 246q0 250 -262 250q-186 0 -297 -152.5t-111 -351.5z" /> -<glyph unicode="h" horiz-adv-x="1216" d="M49 0l281 1440h139l-107 -557l-24 -92h4q49 94 173 179t278 85q141 0 216.5 -67.5t75.5 -199.5q0 -55 -16 -137l-125 -651h-139l119 616q16 94 16 138q0 84 -47 127t-129 43q-170 0 -308.5 -132.5t-174.5 -314.5l-93 -477h-139z" /> -<glyph unicode="i" horiz-adv-x="475" d="M49 0l201 1030h139l-201 -1030h-139zM289 1266l37 174h149l-35 -174h-151z" /> -<glyph unicode="j" horiz-adv-x="475" d="M-309 -416l24 121q16 -2 45 -2q37 0 73 9t80 34t80 82t52 139l205 1063h139l-207 -1067q-23 -121 -74 -204t-115.5 -118.5t-115.5 -49t-104 -13.5zM289 1266l35 174h149l-33 -174h-151z" /> -<glyph unicode="k" horiz-adv-x="1026" d="M49 0l283 1440h139l-158 -803h160l385 393h176l-448 -455v-4l280 -571h-153l-246 514h-176l-103 -514h-139z" /> -<glyph unicode="l" horiz-adv-x="505" d="M80 182q0 35 8 74l231 1184h140l-228 -1166q-6 -33 -6 -63q0 -41 16.5 -62.5t35 -25.5t45.5 -4l30 2l-26 -125q-23 -4 -47 -4q-78 0 -138.5 42t-60.5 148z" /> -<glyph unicode="m" horiz-adv-x="1875" d="M51 0l199 1030h137l-29 -151q-4 -20 -11 -43t-11 -37l-4 -13h4q59 113 178 191t248 78q137 0 200.5 -65.5t69.5 -192.5h4q61 111 178 184.5t244 73.5q141 0 214 -68.5t73 -200.5q0 -57 -16 -139l-125 -647h-140l119 608q16 78 16 142q0 178 -178 178 q-156 0 -275.5 -136.5t-152.5 -304.5l-96 -487h-139l119 608q16 78 16 146q0 174 -170 174q-154 0 -280 -135.5t-158 -307.5l-95 -485h-139z" /> -<glyph unicode="n" horiz-adv-x="1216" d="M49 0l201 1030h135l-27 -147l-26 -97h4q49 96 174 182.5t281 86.5q141 0 217.5 -67.5t76.5 -199.5q0 -55 -16 -137l-127 -651h-139l119 616q16 76 16 138q0 170 -176 170q-170 0 -307.5 -132.5t-173.5 -314.5l-93 -477h-139z" /> -<glyph unicode="o" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q209 0 340 -125t131 -320q0 -260 -194.5 -447.5t-437.5 -187.5q-209 0 -340 126t-131 325zM211 430q0 -145 91 -237.5t239 -92.5q186 0 336.5 148.5t150.5 355.5q0 143 -92 233.5t-238 90.5q-188 0 -337.5 -146.5t-149.5 -351.5z " /> -<glyph unicode="p" horiz-adv-x="1210" d="M-29 -410l279 1440h133l-18 -100l-25 -88h4q59 92 156.5 152.5t220.5 60.5q180 0 280.5 -110.5t100.5 -303.5q0 -287 -168 -476.5t-389 -189.5q-117 0 -203 52.5t-121 154.5h-4q-2 -45 -12 -98l-96 -494h-138zM274 397q0 -129 66 -213t192 -84q162 0 294 147.5t132 383.5 q0 139 -68.5 218t-191.5 79q-180 0 -302 -165t-122 -366z" /> -<glyph unicode="q" horiz-adv-x="1210" d="M70 387q0 289 170 478.5t397 189.5q117 0 201 -53.5t116 -153.5h4q2 33 11 78l20 104h133l-278 -1440h-139l96 496l26 98h-4q-53 -88 -149 -148.5t-221 -60.5q-182 0 -282.5 111t-100.5 301zM213 397q0 -137 70.5 -217t191.5 -80q182 0 303 167t121 370q0 127 -64.5 209 t-191.5 82q-164 0 -297 -147.5t-133 -383.5z" /> -<glyph unicode="r" horiz-adv-x="729" d="M51 0l199 1030h137l-37 -182l-24 -90h4q57 121 156.5 201.5t220.5 80.5q37 0 61 -6l-27 -137q-29 4 -51 4q-154 0 -271.5 -163t-154.5 -353l-74 -385h-139z" /> -<glyph unicode="s" horiz-adv-x="905" d="M-6 125l84 92q12 -12 33.5 -31.5t97.5 -52.5t162 -33q94 0 168.5 50.5t74.5 138.5q0 51 -48 90t-116.5 67.5t-137 62.5t-117 93.5t-48.5 138.5q0 145 115 229.5t264 84.5q98 0 177 -28t110 -56l31 -29l-78 -98q-8 10 -25.5 24.5t-80 38t-136.5 23.5q-92 0 -165.5 -46 t-73.5 -139q0 -61 73.5 -109t160.5 -79t161 -99.5t74 -168.5q0 -135 -113 -224.5t-268 -89.5q-72 0 -137.5 15.5t-107.5 37t-73.5 44t-46.5 39.5z" /> -<glyph unicode="t" horiz-adv-x="681" d="M127 903l23 119h137l57 293h137l-59 -293h260l-23 -119h-258l-98 -510q-10 -57 -10 -92q0 -184 176 -184l59 4l-24 -125q-25 -4 -53 -4q-299 0 -299 291q0 41 10 112l100 508h-135z" /> -<glyph unicode="u" horiz-adv-x="1206" d="M94 242q0 55 17 137l125 651h139l-119 -612q-14 -74 -14 -142q0 -82 40 -126t140 -44q166 0 299 137.5t168 313.5l92 473h139l-200 -1030h-138l29 147l27 97h-4q-53 -98 -173 -183.5t-278 -85.5q-127 0 -208 65t-81 202z" /> -<glyph unicode="v" horiz-adv-x="978" d="M96 1030h140l135 -760l12 -125h4q33 72 64 125l430 760h151l-594 -1030h-147z" /> -<glyph unicode="w" horiz-adv-x="1642" d="M115 1030h139l100 -772l8 -111h5q29 59 55 111l399 768h140l104 -768l10 -111h4q25 57 51 111l402 772h149l-546 -1030h-152l-111 739l-10 111h-4q-27 -61 -53 -111l-391 -739h-152z" /> -<glyph unicode="x" horiz-adv-x="1001" d="M-63 0l471 543l-250 487h155l162 -342l25 -61h2q23 31 45 57l289 346h168l-435 -500l269 -530h-150l-186 383l-27 59h-4q-16 -27 -39 -55l-330 -387h-165z" /> -<glyph unicode="y" horiz-adv-x="1021" d="M-184 -369l69 105q43 -41 115 -41q125 0 229 166l93 149l-234 1020h145l160 -770l19 -108h2q29 57 57 106l447 772h157l-753 -1249q-125 -211 -318 -211q-114 0 -188 61z" /> -<glyph unicode="z" horiz-adv-x="1034" d="M-33 0l17 90l706 723l98 94v4q-33 -4 -98 -4h-524l24 123h820l-19 -92l-708 -721l-101 -94v-4q35 4 103 4h567l-23 -123h-862z" /> -<glyph unicode="{" horiz-adv-x="686" d="M102 598l25 127q8 0 20.5 3t45 18.5t59.5 38t54.5 69.5t39.5 107l35 174q72 360 375 360h30l-20 -115h-18q-25 0 -50.5 -7t-65.5 -28.5t-74 -79t-50 -141.5l-41 -206q-12 -59 -38 -107.5t-55.5 -74t-57 -43t-46.5 -23.5l-18 -6v-5q12 -6 32.5 -19t53.5 -66.5t33 -120.5 q0 -27 -6 -60l-43 -219q-10 -57 -11 -90q0 -72 32 -112t60.5 -47t59.5 -7h18l-22 -115q-12 -2 -33 -2q-31 0 -64.5 9.5t-77.5 33t-73 80t-29 137.5q0 49 13 115l36 189q6 33 7 61q0 70 -34 113t-69 51z" /> -<glyph unicode="|" horiz-adv-x="630" d="M256 -322v1936h129v-1936h-129z" /> -<glyph unicode="}" horiz-adv-x="679" d="M-90 -197l22 115h19q27 0 52.5 7t64 28.5t71.5 78t49 142.5l45 229q18 98 72.5 163t100.5 81l43 17v4q-12 6 -33 19t-53.5 64.5t-32.5 116.5q0 25 6 60l39 196q10 57 10 90q0 72 -31.5 112t-60.5 47t-60 7h-18l23 115q14 2 32 2q31 0 65 -9t78 -32.5t72.5 -80 t28.5 -138.5q0 -49 -12 -115l-33 -164q-6 -37 -6 -63q0 -70 33.5 -113t68.5 -51l33 -8l-25 -127q-6 0 -18 -3t-45 -17.5t-60.5 -38t-55 -69.5t-40.5 -108l-39 -196q-72 -362 -374 -363z" /> -<glyph unicode="~" horiz-adv-x="1206" d="M131 428q0 162 69.5 239.5t190.5 77.5q61 0 110.5 -21.5t81 -53t61.5 -63.5t69 -53.5t86 -21.5q82 0 113.5 63.5t31.5 141.5h121q0 -162 -69.5 -239.5t-190.5 -77.5q-76 0 -134.5 33.5t-89 72.5t-78.5 73t-106 34q-82 0 -113.5 -63.5t-31.5 -141.5h-121z" /> -<glyph unicode="¡" horiz-adv-x="557" d="M8 -410l215 1063h131l-202 -1063h-144zM248 868l33 162h161l-34 -162h-160z" /> -<glyph unicode="¢" horiz-adv-x="1173" d="M129 586q0 258 156.5 473t398.5 233l35 172h115l-33 -176q213 -33 299 -231l22 -68l-131 -49q-2 8 -6 23.5t-22.5 53.5t-45 67.5t-78 53t-116.5 23.5q-199 0 -324 -171t-125 -408q0 -139 70 -220t209 -81q186 0 324 180l26 39l127 -54q-6 -12 -18.5 -31.5t-55.5 -68.5 t-92 -89t-127 -73.5t-159 -40.5l-33 -170h-115l33 177q-154 25 -244 139.5t-90 296.5z" /> -<glyph unicode="£" horiz-adv-x="1187" d="M2 0l25 127h127l104 541h-90l22 112h89l63 318q31 156 164 261t309 105q184 0 305 -112l10 -11l-98 -92q-8 8 -25.5 22.5t-75 37t-118.5 22.5q-131 0 -220 -72.5t-110 -181.5l-59 -297h393l-22 -112h-392l-106 -541h694l-24 -127h-965z" /> -<glyph unicode="¥" horiz-adv-x="1224" d="M170 432l18 105h334l19 79l-39 101h-277l21 104h217l-238 619h154l192 -512q31 -80 60 -183h4q55 100 119 183l393 512h170l-479 -619h215l-21 -104h-274l-74 -101l-18 -79h329l-18 -105h-330l-86 -432h-143l86 432h-334z" /> -<glyph unicode="§" horiz-adv-x="849" d="M-8 -37l84 88q57 -55 155 -55q123 0 196 80t77 200l39 887h123l-39 -897q-6 -164 -113.5 -278.5t-282.5 -114.5q-68 0 -128 22.5t-87 45.5zM201 174l37 897q6 164 113.5 278.5t283.5 114.5q68 0 128 -22.5t85 -44.5l26 -23l-83 -88q-59 55 -158 55q-121 0 -194.5 -79.5 t-78.5 -202.5l-36 -885h-123z" /> -<glyph unicode="¨" horiz-adv-x="1032" d="M176 1608l35 176h125l-33 -176h-127zM485 1608l35 176h127l-35 -176h-127z" /> -<glyph unicode="©" horiz-adv-x="1722" d="M152 721q0 309 211.5 526t510.5 217q305 0 519.5 -217t214.5 -526q0 -313 -213 -529.5t-521 -216.5q-301 0 -511.5 217.5t-210.5 528.5zM272 721q0 -268 174.5 -451.5t427.5 -183.5q260 0 437.5 183.5t177.5 451.5q0 266 -177 449.5t-438 183.5q-254 0 -428 -183.5 t-174 -449.5zM473 717q0 172 114.5 297t307.5 125q63 0 120.5 -19.5t94.5 -47.5t65.5 -56.5t41.5 -48.5l12 -19l-94 -63l-11 15q-6 9 -28.5 33.5t-48 43t-65.5 34t-83 15.5q-141 0 -223 -90t-82 -217t81 -217t224 -90q135 0 225 127l11 14l94 -64q-4 -8 -13.5 -20t-40 -45 t-66.5 -58.5t-93.5 -46t-120.5 -20.5q-195 0 -308.5 124t-113.5 294z" /> -<glyph unicode="ª" horiz-adv-x="870" d="M150 541l18 96h539l-19 -96h-538zM233 952q0 57 24 102.5t64.5 71t85 43t98.5 24.5t87 9t70 2h36q8 35 9 53q0 106 -119 107q-41 0 -88 -14.5t-74 -28.5l-25 -14l-39 84q102 70 242 69q215 0 215 -190q0 -33 -12 -90l-76 -385h-108l20 100h-4q-4 -4 -9 -12.5t-26.5 -27.5 t-44 -33.5t-59.5 -27t-74 -12.5q-74 0 -133.5 44t-59.5 126zM352 965q0 -37 28 -60.5t79 -23.5q76 0 141.5 73.5t77.5 141.5l4 18h-27q-303 1 -303 -149z" /> -<glyph unicode="«" horiz-adv-x="1062" d="M90 582l393 417h160l-407 -428l258 -413h-140zM451 582l421 417h162l-440 -428l260 -413h-141z" /> -<glyph unicode="¬" horiz-adv-x="1306" d="M166 700v119h954v-495h-125v376h-829z" /> -<glyph unicode="­" horiz-adv-x="884" d="M20 518l23 127h582l-25 -127h-580z" /> -<glyph unicode="®" horiz-adv-x="1722" d="M152 721q0 309 211.5 526t510.5 217q305 0 519.5 -217t214.5 -526q0 -313 -213 -529.5t-521 -216.5q-301 0 -511.5 217.5t-210.5 528.5zM272 721q0 -268 174.5 -451.5t427.5 -183.5q260 0 437.5 183.5t177.5 451.5q0 266 -177 449.5t-438 183.5q-254 0 -428 -183.5 t-174 -449.5zM633 1120h285q106 0 172.5 -65.5t66.5 -171.5q0 -84 -44 -140.5t-105 -70.5v-4q8 -10 26 -45l154 -301h-127l-160 323h-153v-323h-115v798zM748 735h149q66 0 103.5 39t37.5 109q0 68 -37.5 104.5t-103.5 36.5h-149v-289z" /> -<glyph unicode="¯" horiz-adv-x="1032" d="M147 1608l21 112h506l-21 -112h-506z" /> -<glyph unicode="°" horiz-adv-x="778" d="M205 1141q0 125 101.5 223t228.5 98q111 0 182 -70.5t71 -177.5q0 -125 -102 -223t-227 -98q-113 0 -183.5 69.5t-70.5 178.5zM326 1145q0 -59 38.5 -98t102.5 -39q78 0 139.5 61t61.5 141q0 59 -39 98.5t-101 39.5q-78 0 -140 -61.5t-62 -141.5z" /> -<glyph unicode="±" horiz-adv-x="1437" d="M158 522v119h473v522h125v-522h471v-119h-471v-522h-125v522h-473zM195 -213h995v-119h-995v119z" /> -<glyph unicode="²" horiz-adv-x="782" d="M0 866q2 113 62.5 200t143.5 141.5t166 101.5t140 106.5t57 130.5q0 55 -38.5 91t-102.5 36q-49 0 -99 -25.5t-77 -50.5l-27 -24l-65 78q12 14 36.5 35.5t96.5 56.5t141 35q117 0 184.5 -61.5t67.5 -162.5q0 -90 -49 -160.5t-124 -117.5t-150.5 -89t-139 -97.5 t-82.5 -120.5h449l-21 -103h-569z" /> -<glyph unicode="³" horiz-adv-x="782" d="M16 981l78 72q8 -10 24.5 -27.5t74 -45.5t120.5 -28q86 0 152.5 61.5t66.5 151.5q0 66 -51 104t-121 38h-67l-19 63l248 236l62 51v4q-39 -6 -76 -6h-311l18 102h539l-15 -74l-299 -284q78 -10 143.5 -66.5t65.5 -163.5q0 -127 -98 -225t-240 -98q-170 0 -284 123z" /> -<glyph unicode="´" horiz-adv-x="1032" d="M223 1540l191 244h172l-228 -244h-135z" /> -<glyph unicode="µ" horiz-adv-x="1245" d="M-16 -410l278 1440h139l-118 -612q-16 -86 -17 -142q0 -170 183 -170q166 0 299 137.5t167 313.5l91 473h139l-199 -1030h-137l29 147l26 97h-4q-55 -98 -174 -183.5t-276 -85.5q-150 0 -213 88h-4q-8 -106 -19 -157l-63 -316h-127z" /> -<glyph unicode="μ" horiz-adv-x="1245" d="M-16 -410l278 1440h139l-118 -612q-16 -86 -17 -142q0 -170 183 -170q166 0 299 137.5t167 313.5l91 473h139l-199 -1030h-137l29 147l26 97h-4q-55 -98 -174 -183.5t-276 -85.5q-150 0 -213 88h-4q-8 -106 -19 -157l-63 -316h-127z" /> -<glyph unicode="¶" horiz-adv-x="1173" d="M160 903q0 215 174 376t389 161h512l-23 -127h-370l-275 -1415h-118l114 596q-162 0 -282.5 117.5t-120.5 291.5zM694 -102l250 1292h117l-250 -1292h-117z" /> -<glyph unicode="·" horiz-adv-x="559" d="M174 504l33 170h164l-31 -170h-166z" /> -<glyph unicode="¸" horiz-adv-x="1032" d="M201 -408l20 95q35 -10 82 -11q119 0 119 80q0 59 -105 60l-30 -2l98 227l78 -14l-2 -17l-47 -123q49 -8 83.5 -42.5t34.5 -90.5q0 -86 -67.5 -130t-153.5 -44z" /> -<glyph unicode="¹" horiz-adv-x="782" d="M53 866l21 103h192l113 583l14 50h-4q-10 -16 -49 -50l-96 -77l-60 81l244 201h107l-154 -788h188l-18 -103h-498z" /> -<glyph unicode="º" horiz-adv-x="966" d="M160 541l18 96h621l-19 -96h-620zM233 1067q0 160 122 277.5t274 117.5q131 0 214 -79.5t83 -200.5q0 -164 -122 -281t-276 -117q-131 0 -213 79t-82 204zM346 1075q0 -84 51.5 -135t134.5 -51q109 0 195 84t86 203q0 82 -52 133t-136 51q-109 0 -194 -84t-85 -201z" /> -<glyph unicode="»" horiz-adv-x="1062" d="M16 158l439 428l-260 413h141l264 -424l-422 -417h-162zM406 158l409 428l-260 413h141l265 -424l-394 -417h-161z" /> -<glyph unicode="¼" horiz-adv-x="1933" d="M113 549l20 102h193l112 584l15 49h-4q-10 -16 -50 -49l-96 -78l-59 82l243 201h107l-154 -789h189l-19 -102h-497zM406 0l966 1440h127l-964 -1440h-129zM1069 233l14 78l545 580h119l-109 -555h134l-19 -103h-133l-47 -233h-113l45 233h-436zM1235 336h291l53 278 q4 25 13.5 56.5t13.5 50.5l6 20h-4q-43 -55 -86 -100l-287 -301v-4z" /> -<glyph unicode="½" horiz-adv-x="1906" d="M113 549l20 102h193l112 584l15 49h-4q-10 -16 -50 -49l-96 -78l-59 82l243 201h107l-154 -789h189l-19 -102h-497zM408 0l966 1440h127l-964 -1440h-129zM1090 0q2 113 62 200t143 141t166 101t140.5 106.5t57.5 131.5q0 55 -39 91t-102 36q-49 0 -99.5 -24.5 t-77.5 -49.5l-26 -26l-66 77q12 14 37 36t96.5 56.5t141.5 34.5q117 0 184.5 -61.5t67.5 -161.5q0 -90 -49.5 -160.5t-124 -118t-150.5 -89t-139.5 -97t-81.5 -121.5h448l-20 -102h-569z" /> -<glyph unicode="¾" horiz-adv-x="1959" d="M98 664l78 71q8 -10 24.5 -27.5t74 -45t120.5 -27.5q86 0 152.5 61.5t66.5 151.5q0 66 -51 103.5t-121 37.5h-67l-19 64l248 235l62 51v4q-39 -6 -76 -6h-311l18 103h539l-15 -74l-299 -285q78 -10 143.5 -66.5t65.5 -162.5q0 -127 -98 -225.5t-240 -98.5 q-170 0 -284 123zM432 0l967 1440h127l-965 -1440h-129zM1096 233l14 78l545 580h119l-109 -555h133l-18 -103h-133l-48 -233h-112l45 233h-436zM1262 336h290l54 278q4 25 13 56.5t15 50.5l4 20h-4q-43 -55 -86 -100l-286 -301v-4z" /> -<glyph unicode="¿" horiz-adv-x="899" d="M-43 -119q0 100 45 183t112.5 140.5t137.5 110t126 118t73 138.5l18 82h137l-18 -88q-20 -94 -77.5 -172t-124.5 -131t-130 -105.5t-106.5 -118t-43.5 -142.5q0 -84 60.5 -138.5t163.5 -54.5q66 0 132 21.5t99 42.5l35 22l59 -113q-16 -12 -46.5 -29.5t-120 -47 t-173.5 -29.5q-162 0 -260 85t-98 226zM496 868l32 162h160l-33 -162h-159z" /> -<glyph unicode="À" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186zM623 1784h151l96 -244h-118z" /> -<glyph unicode="Á" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186zM741 1540l191 244h172l-227 -244h-136z" /> -<glyph unicode="Â" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186zM559 1540l219 244h154l123 -244h-129l-78 166h-4l-144 -166h-141z" /> -<glyph unicode="Ã" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186zM510 1546q45 240 217 240q45 0 79 -22.5t51 -51.5t42 -51.5t53 -22.5q78 0 105 142h110q-47 -240 -219 -240q-55 0 -93 37t-67.5 73t-64.5 36 q-41 0 -66.5 -43.5t-35.5 -96.5h-111z" /> -<glyph unicode="Ä" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186zM610 1608l35 176h125l-33 -176h-127zM920 1608l34 176h127l-34 -176h-127z" /> -<glyph unicode="Å" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186zM680 1645q0 68 52 115.5t120 47.5q66 0 103.5 -33.5t37.5 -95.5q0 -66 -53 -113.5t-118.5 -47.5t-103.5 34t-38 93zM768 1647q0 -51 55 -52 q35 0 58.5 25t23.5 59q0 23 -15.5 38.5t-39.5 15.5q-33 0 -57.5 -24.5t-24.5 -61.5z" /> -<glyph unicode="Æ" horiz-adv-x="1755" d="M-92 0l870 1440h996l-25 -127h-670l-102 -525h547l-25 -126h-547l-104 -535h706l-24 -127h-848l129 664h-346l-397 -664h-160zM539 786h295l104 527h-82z" /> -<glyph unicode="Ç" horiz-adv-x="1492" d="M125 594q0 233 120 435t317.5 318.5t416.5 116.5q297 0 477 -155l31 -31l-90 -100q-6 6 -17.5 16t-50.5 36.5t-83 47t-115.5 37t-147.5 16.5q-287 0 -499 -218t-212 -515q0 -215 130 -352t348 -137q129 0 254.5 48t187.5 95l61 47l70 -111q-10 -8 -28.5 -22t-78 -51 t-123 -66t-158.5 -51.5t-190 -22.5h-4l-32 -88q49 -8 83.5 -42.5t34.5 -90.5q0 -86 -67.5 -130t-153.5 -44l-110 12l20 95q35 -10 82 -11q119 0 119 80q0 59 -105 60l-30 -2l71 168q-246 27 -387 194.5t-141 417.5z" /> -<glyph unicode="È" horiz-adv-x="1163" d="M90 0l281 1440h811l-27 -127h-668l-102 -525h547l-25 -126h-545l-106 -535h705l-23 -127h-848zM627 1784h151l96 -244h-118z" /> -<glyph unicode="É" horiz-adv-x="1163" d="M90 0l281 1440h811l-27 -127h-668l-102 -525h547l-25 -126h-545l-106 -535h705l-23 -127h-848zM748 1540l190 244h172l-227 -244h-135z" /> -<glyph unicode="Ê" horiz-adv-x="1163" d="M90 0l281 1440h811l-27 -127h-668l-102 -525h547l-25 -126h-545l-106 -535h705l-23 -127h-848zM565 1540l219 244h154l123 -244h-129l-78 166h-4l-143 -166h-142z" /> -<glyph unicode="Ë" horiz-adv-x="1163" d="M90 0l281 1440h811l-27 -127h-668l-102 -525h547l-25 -126h-545l-106 -535h705l-23 -127h-848zM616 1608l35 176h125l-33 -176h-127zM926 1608l35 176h126l-34 -176h-127z" /> -<glyph unicode="Ì" horiz-adv-x="559" d="M90 0l281 1440h141l-281 -1440h-141zM272 1784h152l96 -244h-119z" /> -<glyph unicode="Í" horiz-adv-x="559" d="M90 0l281 1440h141l-281 -1440h-141zM389 1540l191 244h172l-228 -244h-135z" /> -<glyph unicode="Î" horiz-adv-x="559" d="M90 0l281 1440h141l-281 -1440h-141zM209 1540l219 244h154l123 -244h-130l-77 166h-4l-144 -166h-141z" /> -<glyph unicode="Ï" horiz-adv-x="559" d="M90 0l281 1440h141l-281 -1440h-141zM260 1608l35 176h125l-33 -176h-127zM569 1608l35 176h127l-35 -176h-127z" /> -<glyph unicode="Ð" horiz-adv-x="1540" d="M117 0l129 662h-121l25 122h120l129 656h437q293 0 458.5 -146.5t165.5 -412.5q0 -369 -240.5 -625t-613.5 -256h-489zM283 127h309q311 0 516 214t205 531q0 211 -130 326t-360 115h-307l-104 -529h344l-25 -122h-344z" /> -<glyph unicode="Ñ" horiz-adv-x="1529" d="M90 0l281 1440h127l532 -1037q37 -72 80 -194h4q10 119 25 194l202 1037h142l-281 -1440h-127l-532 1036l-82 195h-4q-10 -119 -25 -195l-201 -1036h-141zM641 1546q45 240 217 240q45 0 79 -22.5t51.5 -51.5t42 -51.5t52.5 -22.5q78 0 105 142h110q-47 -240 -219 -240 q-55 0 -93 37t-67.5 73t-64.5 36q-41 0 -66.5 -43.5t-35.5 -96.5h-111z" /> -<glyph unicode="Ò" horiz-adv-x="1683" d="M119 598q0 227 124 429t323.5 319.5t416.5 117.5q279 0 453 -170t174 -436q0 -231 -125 -437t-326 -326t-416 -120q-279 0 -451.5 174.5t-172.5 448.5zM264 602q0 -217 134 -355t347 -138q272 0 494.5 222t222.5 521q0 211 -134 345t-347 134q-276 0 -496.5 -217 t-220.5 -512zM827 1784h152l96 -244h-119z" /> -<glyph unicode="Ó" horiz-adv-x="1683" d="M119 598q0 227 124 429t323.5 319.5t416.5 117.5q279 0 453 -170t174 -436q0 -231 -125 -437t-326 -326t-416 -120q-279 0 -451.5 174.5t-172.5 448.5zM264 602q0 -217 134 -355t347 -138q272 0 494.5 222t222.5 521q0 211 -134 345t-347 134q-276 0 -496.5 -217 t-220.5 -512zM946 1540l191 244h172l-228 -244h-135z" /> -<glyph unicode="Ô" horiz-adv-x="1683" d="M119 598q0 227 124 429t323.5 319.5t416.5 117.5q279 0 453 -170t174 -436q0 -231 -125 -437t-326 -326t-416 -120q-279 0 -451.5 174.5t-172.5 448.5zM264 602q0 -217 134 -355t347 -138q272 0 494.5 222t222.5 521q0 211 -134 345t-347 134q-276 0 -496.5 -217 t-220.5 -512zM764 1540l219 244h154l123 -244h-130l-77 166h-4l-144 -166h-141z" /> -<glyph unicode="Õ" horiz-adv-x="1683" d="M119 598q0 227 124 429t323.5 319.5t416.5 117.5q279 0 453 -170t174 -436q0 -231 -125 -437t-326 -326t-416 -120q-279 0 -451.5 174.5t-172.5 448.5zM264 602q0 -217 134 -355t347 -138q272 0 494.5 222t222.5 521q0 211 -134 345t-347 134q-276 0 -496.5 -217 t-220.5 -512zM715 1546q45 240 217 240q45 0 78.5 -22.5t51 -51.5t42 -51.5t53.5 -22.5q78 0 105 142h110q-47 -240 -219 -240q-55 0 -93 37t-67.5 73t-64.5 36q-41 0 -66.5 -43.5t-36.5 -96.5h-110z" /> -<glyph unicode="Ö" horiz-adv-x="1683" d="M119 598q0 227 124 429t323.5 319.5t416.5 117.5q279 0 453 -170t174 -436q0 -231 -125 -437t-326 -326t-416 -120q-279 0 -451.5 174.5t-172.5 448.5zM264 602q0 -217 134 -355t347 -138q272 0 494.5 222t222.5 521q0 211 -134 345t-347 134q-276 0 -496.5 -217 t-220.5 -512zM815 1608l35 176h125l-33 -176h-127zM1124 1608l35 176h127l-35 -176h-127z" /> -<glyph unicode="×" horiz-adv-x="1421" d="M184 84l443 498l-443 497l84 84l439 -493l438 493l84 -84l-445 -497l445 -498l-84 -84l-438 494l-439 -494z" /> -<glyph unicode="Ø" horiz-adv-x="1689" d="M121 598q0 227 124 429t324.5 319.5t417.5 117.5q223 0 383 -114l129 141l78 -66l-129 -141q164 -168 164 -426q0 -231 -125 -437t-324.5 -326t-414.5 -120q-227 0 -392 119l-131 -143l-80 63l136 148q-160 172 -160 436zM268 602q0 -197 113 -332l893 975 q-121 86 -289 86q-276 0 -496.5 -217t-220.5 -512zM453 201q125 -92 295 -92q274 0 495 222t221 521q0 190 -114 326z" /> -<glyph unicode="Ù" horiz-adv-x="1476" d="M156 393q0 55 12 117l182 930h142l-183 -934q-10 -49 -10 -96q0 -143 90 -222t252 -79q186 0 317.5 107.5t167.5 293.5l183 930h143l-188 -948q-47 -240 -215 -378.5t-410 -138.5q-219 0 -351 111.5t-132 306.5zM727 1784h152l96 -244h-119z" /> -<glyph unicode="Ú" horiz-adv-x="1476" d="M156 393q0 55 12 117l182 930h142l-183 -934q-10 -49 -10 -96q0 -143 90 -222t252 -79q186 0 317.5 107.5t167.5 293.5l183 930h143l-188 -948q-47 -240 -215 -378.5t-410 -138.5q-219 0 -351 111.5t-132 306.5zM846 1540l190 244h172l-227 -244h-135z" /> -<glyph unicode="Û" horiz-adv-x="1476" d="M156 393q0 55 12 117l182 930h142l-183 -934q-10 -49 -10 -96q0 -143 90 -222t252 -79q186 0 317.5 107.5t167.5 293.5l183 930h143l-188 -948q-47 -240 -215 -378.5t-410 -138.5q-219 0 -351 111.5t-132 306.5zM664 1540l219 244h153l123 -244h-129l-78 166h-4 l-143 -166h-141z" /> -<glyph unicode="Ü" horiz-adv-x="1476" d="M156 393q0 55 12 117l182 930h142l-183 -934q-10 -49 -10 -96q0 -143 90 -222t252 -79q186 0 317.5 107.5t167.5 293.5l183 930h143l-188 -948q-47 -240 -215 -378.5t-410 -138.5q-219 0 -351 111.5t-132 306.5zM715 1608l35 176h124l-32 -176h-127zM1024 1608l35 176 h127l-35 -176h-127z" /> -<glyph unicode="Ý" horiz-adv-x="1155" d="M176 1440h152l202 -522l58 -173h4q59 94 119 170l405 525h172l-649 -826l-121 -614h-141l123 618zM676 1540l190 244h172l-227 -244h-135z" /> -<glyph unicode="Þ" horiz-adv-x="1230" d="M90 0l283 1440h141l-51 -256h332q141 0 227 -49q168 -90 168 -304q0 -164 -86 -292.5t-221 -188.5q-94 -41 -211 -41h-377l-62 -309h-143zM317 436h340q94 0 168 33q98 43 157.5 135t59.5 221q0 109 -69.5 170.5t-194.5 61.5h-340z" /> -<glyph unicode="ß" horiz-adv-x="1175" d="M51 0l213 1104q33 166 167 263t290 97q154 0 243 -75.5t89 -192.5q0 -68 -33 -126t-78 -98t-91 -76t-79 -75t-33 -80q0 -43 49.5 -92t107.5 -90t107.5 -108.5t49.5 -141.5q0 -133 -111 -228t-258 -95q-88 0 -167 16t-114 33l-34 16l26 129q111 -70 281 -69q88 0 160.5 51 t72.5 145q0 57 -49 113.5t-108.5 95.5t-108.5 97.5t-49 119.5q0 70 49 133.5t107.5 104.5t107.5 98t49 117q0 61 -49 106t-139 45q-109 0 -202 -69.5t-116 -190.5l-211 -1077h-139z" /> -<glyph unicode="à" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268zM449 1440h151l96 -244h-118z" /> -<glyph unicode="á" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268zM569 1196l191 244h172l-227 -244h-136z" /> -<glyph unicode="â" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268zM385 1196l219 244h154l123 -244h-129l-78 166h-4l-144 -166h-141z" /> -<glyph unicode="ã" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268zM336 1202q45 240 217 240q45 0 79 -22.5t51 -51.5t42 -51.5t53 -22.5q78 0 105 142h110q-47 -240 -219 -240 q-55 0 -93 37t-67.5 72.5t-64.5 35.5q-41 0 -66.5 -43t-36.5 -96h-110z" /> -<glyph unicode="ä" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268zM436 1264l35 176h125l-33 -176h-127zM745 1264l35 176h127l-35 -176h-127z" /> -<glyph unicode="å" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268zM506 1300q0 68 52 116t120 48q66 0 103.5 -33.5t37.5 -95.5q0 -66 -53 -114t-118.5 -47.5t-103.5 34t-38 92.5 zM594 1303q0 -51 55 -52q35 0 58.5 24.5t23.5 59.5q0 23 -15.5 38.5t-39.5 15.5q-33 0 -57.5 -24.5t-24.5 -61.5z" /> -<glyph unicode="æ" horiz-adv-x="1781" d="M16 236q0 393 689 393h67q14 74 14 116q0 184 -217 185q-152 -2 -301 -99l-45 117q18 12 50 29.5t126.5 47.5t184.5 30q279 0 317 -199h4q160 199 412 199q184 0 280.5 -101.5t96.5 -273.5l-29 -166h-776q-8 -41 -8 -88q0 -158 81.5 -242t229.5 -84q84 0 168 32t127 63 l43 30l45 -114q-18 -14 -53 -37t-135.5 -61t-196.5 -38q-164 0 -276.5 76t-147.5 205h-4q-12 -29 -41 -67.5t-80 -91t-134 -87.5t-179 -35q-133 0 -222.5 69t-89.5 192zM160 252q0 -68 50 -113t146 -45q137 0 244 117t143 262l11 41h-121q-473 0 -473 -262zM918 629h628 q4 45 4 67q0 121 -66.5 181.5t-168.5 60.5q-131 0 -237.5 -81t-159.5 -228z" /> -<glyph unicode="ç" horiz-adv-x="1128" d="M72 414q0 272 191.5 456.5t441.5 184.5q115 0 208 -37t127 -74l37 -37l-84 -94q-10 12 -31.5 31.5t-95 51.5t-155.5 32q-193 0 -344.5 -145.5t-151.5 -356.5q0 -145 93 -235.5t243 -90.5q188 0 346 133l14 13l43 -117q-6 -6 -18 -16.5t-54 -37t-86 -47t-113 -37 t-138 -16.5h-10l-33 -88q49 -8 84 -42.5t35 -90.5q0 -86 -68 -130t-154 -44l-110 12l20 95q35 -10 82 -11q119 0 119 80q0 59 -104 60l-31 -2l71 170q-172 27 -273 141.5t-101 288.5z" /> -<glyph unicode="è" horiz-adv-x="1132" d="M70 410q0 258 172 451.5t426 193.5q186 0 281 -102.5t95 -270.5q0 -35 -8 -79t-16 -71l-6 -24h-791q-8 -41 -8 -88q0 -139 86 -229.5t244 -90.5q82 0 166 32t127 63l43 30l45 -114q-18 -14 -52 -37t-135.5 -61t-197.5 -38q-211 0 -341 120t-130 315zM250 623h645 q6 35 6 71q0 119 -64.5 181.5t-168.5 62.5q-133 0 -249 -84t-169 -231zM526 1440h152l96 -244h-119z" /> -<glyph unicode="é" horiz-adv-x="1132" d="M70 410q0 258 172 451.5t426 193.5q186 0 281 -102.5t95 -270.5q0 -35 -8 -79t-16 -71l-6 -24h-791q-8 -41 -8 -88q0 -139 86 -229.5t244 -90.5q82 0 166 32t127 63l43 30l45 -114q-18 -14 -52 -37t-135.5 -61t-197.5 -38q-211 0 -341 120t-130 315zM250 623h645 q6 35 6 71q0 119 -64.5 181.5t-168.5 62.5q-133 0 -249 -84t-169 -231zM645 1196l191 244h172l-228 -244h-135z" /> -<glyph unicode="ê" horiz-adv-x="1132" d="M70 410q0 258 172 451.5t426 193.5q186 0 281 -102.5t95 -270.5q0 -35 -8 -79t-16 -71l-6 -24h-791q-8 -41 -8 -88q0 -139 86 -229.5t244 -90.5q82 0 166 32t127 63l43 30l45 -114q-18 -14 -52 -37t-135.5 -61t-197.5 -38q-211 0 -341 120t-130 315zM250 623h645 q6 35 6 71q0 119 -64.5 181.5t-168.5 62.5q-133 0 -249 -84t-169 -231zM463 1196l219 244h154l122 -244h-129l-77 166h-4l-144 -166h-141z" /> -<glyph unicode="ë" horiz-adv-x="1132" d="M70 410q0 258 172 451.5t426 193.5q186 0 281 -102.5t95 -270.5q0 -35 -8 -79t-16 -71l-6 -24h-791q-8 -41 -8 -88q0 -139 86 -229.5t244 -90.5q82 0 166 32t127 63l43 30l45 -114q-18 -14 -52 -37t-135.5 -61t-197.5 -38q-211 0 -341 120t-130 315zM250 623h645 q6 35 6 71q0 119 -64.5 181.5t-168.5 62.5q-133 0 -249 -84t-169 -231zM514 1264l35 176h125l-33 -176h-127zM823 1264l35 176h127l-35 -176h-127z" /> -<glyph unicode="ì" horiz-adv-x="475" d="M51 0l199 1030h139l-199 -1030h-139zM162 1440h151l97 -244h-119z" /> -<glyph unicode="í" horiz-adv-x="475" d="M51 0l199 1030h139l-199 -1030h-139zM283 1196l190 244h172l-227 -244h-135z" /> -<glyph unicode="î" horiz-adv-x="475" d="M51 0l199 1030h139l-199 -1030h-139zM98 1196l219 244h154l123 -244h-129l-78 166h-4l-143 -166h-142z" /> -<glyph unicode="ï" horiz-adv-x="475" d="M51 0l199 1030h139l-199 -1030h-139zM152 1264l34 176h125l-32 -176h-127zM461 1264l35 176h127l-35 -176h-127z" /> -<glyph unicode="ð" horiz-adv-x="1208" d="M66 383q0 221 160.5 397t418.5 176q184 0 283 -108l8 -10h4q-35 203 -192 333l-394 -161l-8 100l309 127q-117 70 -274 113l57 108q211 -55 361 -162l303 127l10 -100l-229 -94q209 -199 209 -506q0 -115 -36 -239t-105.5 -240.5t-192.5 -192.5t-277 -76q-199 0 -307 117 t-108 291zM209 387q0 -123 70.5 -205t201.5 -82q190 0 319.5 163t129.5 333q0 109 -76 175.5t-207 66.5q-180 0 -309 -133.5t-129 -317.5z" /> -<glyph unicode="ñ" horiz-adv-x="1216" d="M49 0l201 1030h135l-27 -147l-26 -97h4q49 96 174 182.5t281 86.5q141 0 217.5 -67.5t76.5 -199.5q0 -55 -16 -137l-127 -651h-139l119 616q16 76 16 138q0 170 -176 170q-170 0 -307.5 -132.5t-173.5 -314.5l-93 -477h-139zM444 1202q45 240 217 240q45 0 79 -22.5 t51.5 -51.5t42 -51.5t53.5 -22.5q78 0 104 142h111q-47 -240 -219 -240q-55 0 -93 37t-68 72.5t-65 35.5q-41 0 -66.5 -43t-35.5 -96h-111z" /> -<glyph unicode="ò" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q209 0 340 -125t131 -320q0 -260 -194.5 -447.5t-437.5 -187.5q-209 0 -340 126t-131 325zM211 430q0 -145 91 -237.5t239 -92.5q186 0 336.5 148.5t150.5 355.5q0 143 -92 233.5t-238 90.5q-188 0 -337.5 -146.5t-149.5 -351.5z M559 1440h152l96 -244h-119z" /> -<glyph unicode="ó" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q209 0 340 -125t131 -320q0 -260 -194.5 -447.5t-437.5 -187.5q-209 0 -340 126t-131 325zM211 430q0 -145 91 -237.5t239 -92.5q186 0 336.5 148.5t150.5 355.5q0 143 -92 233.5t-238 90.5q-188 0 -337.5 -146.5t-149.5 -351.5z M680 1196l190 244h172l-227 -244h-135z" /> -<glyph unicode="ô" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q209 0 340 -125t131 -320q0 -260 -194.5 -447.5t-437.5 -187.5q-209 0 -340 126t-131 325zM211 430q0 -145 91 -237.5t239 -92.5q186 0 336.5 148.5t150.5 355.5q0 143 -92 233.5t-238 90.5q-188 0 -337.5 -146.5t-149.5 -351.5z M498 1196l219 244h153l123 -244h-129l-78 166h-4l-143 -166h-141z" /> -<glyph unicode="õ" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q209 0 340 -125t131 -320q0 -260 -194.5 -447.5t-437.5 -187.5q-209 0 -340 126t-131 325zM211 430q0 -145 91 -237.5t239 -92.5q186 0 336.5 148.5t150.5 355.5q0 143 -92 233.5t-238 90.5q-188 0 -337.5 -146.5t-149.5 -351.5z M446 1202q45 240 218 240q45 0 78.5 -22.5t51 -51.5t42 -51.5t53.5 -22.5q78 0 104 142h111q-47 -240 -219 -240q-55 0 -93 37t-68 72.5t-65 35.5q-41 0 -66.5 -43t-35.5 -96h-111z" /> -<glyph unicode="ö" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q209 0 340 -125t131 -320q0 -260 -194.5 -447.5t-437.5 -187.5q-209 0 -340 126t-131 325zM211 430q0 -145 91 -237.5t239 -92.5q186 0 336.5 148.5t150.5 355.5q0 143 -92 233.5t-238 90.5q-188 0 -337.5 -146.5t-149.5 -351.5z M549 1264l35 176h125l-33 -176h-127zM858 1264l35 176h127l-35 -176h-127z" /> -<glyph unicode="÷" horiz-adv-x="1316" d="M150 522v119h1003v-119h-1003zM573 125v151h154v-151h-154zM573 887v151h154v-151h-154z" /> -<glyph unicode="ø" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q162 0 283 -80l107 117l77 -68l-106 -117q111 -121 110 -297q0 -260 -194.5 -447.5t-437.5 -187.5q-154 0 -269 70l-104 -113l-78 66l100 111q-120 124 -120 317zM211 430q0 -129 72 -217l606 661q-84 53 -191 54 q-188 0 -337.5 -146.5t-149.5 -351.5zM362 145q78 -45 179 -45q186 0 336.5 148.5t150.5 355.5q0 117 -63 199z" /> -<glyph unicode="ù" horiz-adv-x="1206" d="M94 242q0 55 17 137l125 651h139l-119 -612q-14 -74 -14 -142q0 -82 40 -126t140 -44q166 0 299 137.5t168 313.5l92 473h139l-200 -1030h-138l29 147l27 97h-4q-53 -98 -173 -183.5t-278 -85.5q-127 0 -208 65t-81 202zM518 1440h152l96 -244h-119z" /> -<glyph unicode="ú" horiz-adv-x="1206" d="M94 242q0 55 17 137l125 651h139l-119 -612q-14 -74 -14 -142q0 -82 40 -126t140 -44q166 0 299 137.5t168 313.5l92 473h139l-200 -1030h-138l29 147l27 97h-4q-53 -98 -173 -183.5t-278 -85.5q-127 0 -208 65t-81 202zM639 1196l190 244h172l-227 -244h-135z" /> -<glyph unicode="û" horiz-adv-x="1206" d="M94 242q0 55 17 137l125 651h139l-119 -612q-14 -74 -14 -142q0 -82 40 -126t140 -44q166 0 299 137.5t168 313.5l92 473h139l-200 -1030h-138l29 147l27 97h-4q-53 -98 -173 -183.5t-278 -85.5q-127 0 -208 65t-81 202zM455 1196l219 244h153l123 -244h-129l-78 166h-4 l-143 -166h-141z" /> -<glyph unicode="ü" horiz-adv-x="1206" d="M94 242q0 55 17 137l125 651h139l-119 -612q-14 -74 -14 -142q0 -82 40 -126t140 -44q166 0 299 137.5t168 313.5l92 473h139l-200 -1030h-138l29 147l27 97h-4q-53 -98 -173 -183.5t-278 -85.5q-127 0 -208 65t-81 202zM508 1264l35 176h125l-33 -176h-127zM817 1264 l35 176h127l-35 -176h-127z" /> -<glyph unicode="ý" horiz-adv-x="1021" d="M-184 -369l69 105q43 -41 115 -41q125 0 229 166l93 149l-234 1020h145l160 -770l19 -108h2q29 57 57 106l447 772h157l-753 -1249q-125 -211 -318 -211q-114 0 -188 61zM547 1196l190 244h172l-227 -244h-135z" /> -<glyph unicode="þ" horiz-adv-x="1212" d="M-29 -410l359 1850h137l-96 -504l-23 -86h4q55 86 151.5 145.5t219.5 59.5q180 0 280.5 -110.5t100.5 -303.5q0 -285 -168 -475.5t-389 -190.5q-115 0 -202 53.5t-122 153.5h-4q-2 -45 -12 -98l-96 -494h-140zM276 397q0 -129 66 -213t193 -84q162 0 292.5 147.5 t130.5 383.5q0 139 -68.5 218t-189.5 79q-180 0 -302 -165t-122 -366z" /> -<glyph unicode="ÿ" horiz-adv-x="1021" d="M-184 -369l69 105q43 -41 115 -41q125 0 229 166l93 149l-234 1020h145l160 -770l19 -108h2q29 57 57 106l447 772h157l-753 -1249q-125 -211 -318 -211q-114 0 -188 61zM416 1264l35 176h124l-32 -176h-127zM725 1264l35 176h127l-35 -176h-127z" /> -<glyph unicode="Œ" horiz-adv-x="1943" d="M121 588q0 231 118.5 433t317.5 320.5t422 118.5q51 0 144.5 -10t127.5 -10h711l-25 -127h-667l-103 -525h547l-26 -126h-547l-103 -535h705l-25 -127h-723q-29 0 -116.5 -10t-130.5 -10q-285 0 -456 170t-171 438zM266 582q0 -209 130 -340t354 -131q35 0 71.5 4t55.5 8 l20 4l229 1186q-63 16 -141 16q-293 0 -506 -221t-213 -526z" /> -<glyph unicode="œ" horiz-adv-x="2074" d="M68 426q0 258 192.5 443.5t439.5 185.5q156 0 267.5 -76t158.5 -203h4q80 127 206 203t276 76q184 0 279.5 -102.5t95.5 -270.5q0 -35 -8.5 -79t-16.5 -71l-6 -24h-789q-8 -41 -8 -88q0 -141 87 -230.5t241 -89.5q82 0 166 32t127 63l43 30l45 -114q-18 -14 -52 -37 t-135.5 -61t-197.5 -38q-162 0 -275.5 74t-156.5 207h-4q-88 -129 -224.5 -205t-281.5 -76q-209 0 -341 126t-132 325zM211 430q0 -145 92 -237.5t238 -92.5q186 0 337.5 148.5t151.5 355.5q0 143 -92 233.5t-238 90.5q-190 0 -339.5 -146.5t-149.5 -351.5zM1194 623h643 q6 35 6 71q0 119 -63.5 181.5t-169.5 62.5q-133 0 -248 -84t-168 -231z" /> -<glyph unicode="Ÿ" horiz-adv-x="1155" d="M176 1440h152l202 -522l58 -173h4q59 94 119 170l405 525h172l-649 -826l-121 -614h-141l123 618zM545 1608l35 176h125l-33 -176h-127zM854 1608l35 176h127l-35 -176h-127z" /> -<glyph unicode="ˆ" horiz-adv-x="1032" d="M125 1540l219 244h154l123 -244h-129l-78 166h-4l-144 -166h-141z" /> -<glyph unicode="˜" horiz-adv-x="1032" d="M74 1546q45 240 217 240q45 0 78.5 -22.5t51 -51.5t42 -51.5t53.5 -22.5q78 0 105 142h110q-47 -240 -219 -240q-55 0 -93 37t-67.5 73t-64.5 36q-41 0 -66.5 -43.5t-36.5 -96.5h-110z" /> -<glyph unicode="–" horiz-adv-x="1441" d="M193 522l22 119h1022l-20 -119h-1024z" /> -<glyph unicode="—" horiz-adv-x="1851" d="M193 522l22 119h1432l-21 -119h-1433z" /> -<glyph unicode="‘" horiz-adv-x="440" d="M205 1108l182 350h117l-146 -350h-153z" /> -<glyph unicode="’" horiz-adv-x="432" d="M211 1108l147 350h152l-182 -350h-117z" /> -<glyph unicode="‚" horiz-adv-x="495" d="M-43 -184l145 352h154l-182 -352h-117z" /> -<glyph unicode="“" horiz-adv-x="684" d="M205 1108l182 350h117l-146 -350h-153zM451 1108l182 350h117l-148 -350h-151z" /> -<glyph unicode="”" horiz-adv-x="677" d="M211 1108l147 350h152l-182 -350h-117zM457 1108l145 350h154l-183 -350h-116z" /> -<glyph unicode="„" horiz-adv-x="741" d="M-43 -184l147 352h152l-182 -352h-117zM203 -184l145 352h154l-183 -352h-116z" /> -<glyph unicode="•" horiz-adv-x="823" d="M115 596q0 121 86 207t206.5 86t205.5 -86t85 -207t-85 -207t-205.5 -86t-206.5 86t-86 207z" /> -<glyph unicode="…" horiz-adv-x="1458" d="M51 0l33 170h164l-33 -170h-164zM532 0l33 170h164l-33 -170h-164zM1014 0l33 170h163l-32 -170h-164z" /> -<glyph unicode="‹" horiz-adv-x="688" d="M90 582l393 417h160l-407 -428l258 -413h-140z" /> -<glyph unicode="›" horiz-adv-x="686" d="M31 158l407 428l-258 413h139l265 -424l-394 -417h-159z" /> -<glyph unicode="€" horiz-adv-x="1200" d="M68 545l18 104h113q6 84 30 166h-108l18 105h125q102 240 316.5 392t459.5 152l213 -28l-57 -127q-72 20 -158 20q-193 0 -360.5 -113.5t-255.5 -295.5h627l-41 -105h-629q-27 -92 -33 -166h598l-39 -104h-555q12 -190 129 -312t326 -122q45 0 92 7t72 13l24 8l6 -135 q-88 -29 -200 -29q-262 0 -426 158t-174 412h-131z" /> -<glyph unicode="™" horiz-adv-x="2027" d="M184 1333v107h758v-107h-321v-790h-117v790h-320zM1016 543l71 897h107l236 -514q18 -39 28 -84h4q10 45 29 84l235 514h107l70 -897h-113l-51 608l2 59h-4l-230 -499h-94l-229 499h-4l2 -59l-52 -608h-114z" /> -<glyph unicode="" horiz-adv-x="1030" d="M0 1030h1030v-1030h-1030v1030z" /> -<glyph unicode="fi" horiz-adv-x="1136" d="M102 0l179 911h-129l22 119h129l8 43q23 119 75 200t118.5 115.5t119 48t103.5 13.5l76 -4l-27 -125q-18 4 -47 4t-56.5 -4t-63.5 -20.5t-65.5 -43t-56 -75.5t-38.5 -115l-9 -37h611l-201 -1030h-139l176 911h-467l-178 -911h-140zM950 1266l37 174h150l-35 -174h-152z " /> -<glyph unicode="fl" horiz-adv-x="1167" d="M102 0l177 903h-129l22 119h129l10 53q23 117 75 198t118.5 115.5t119 48t103.5 13.5l76 -4l-27 -125q-18 4 -47 4t-56.5 -4t-63.5 -20.5t-65.5 -43t-56 -75.5t-38.5 -115l-11 -45h264l-22 -119h-262l-176 -903h-140zM741 182q0 35 9 74l231 1184h139l-227 -1166 q-6 -33 -6 -63q0 -41 16.5 -62.5t34.5 -25.5t45 -4l31 2l-27 -125q-23 -4 -47 -4q-78 0 -138.5 42t-60.5 148z" /> -<glyph unicode="ffi" horiz-adv-x="1798" d="M102 0l179 911h-129l22 119h129l8 43q23 119 75 200t118.5 115.5t119 48t103.5 13.5l76 -4l-27 -125q-18 4 -47 4t-56.5 -4t-63.5 -20.5t-65.5 -43t-56 -75.5t-38.5 -115l-9 -37h525l8 43q23 119 75 200t118.5 115.5t118.5 48t104 13.5l75 -4l-26 -125q-18 4 -47 4 t-56.5 -4t-63.5 -20.5t-65.5 -43t-56.5 -75.5t-39 -115l-8 -37h610l-201 -1030h-139l176 911h-467l-178 -911h-139l178 911h-522l-178 -911h-140zM1612 1266l37 174h149l-35 -174h-151z" /> -<glyph unicode="ffl" horiz-adv-x="1828" d="M102 0l179 911h-129l22 119h129l8 43q23 119 75 200t118.5 115.5t119 48t103.5 13.5l76 -4l-27 -125q-18 4 -47 4t-56.5 -4t-63.5 -20.5t-65.5 -43t-56 -75.5t-38.5 -115l-9 -37h523l8 43q23 119 75 200t118.5 115.5t118.5 47.5q51 14 103 14l76 -4l-26 -125q-18 4 -47 4 t-56.5 -4t-63.5 -20.5t-65.5 -43t-56.5 -75.5t-39 -115l-8 -37h264l-23 -119h-262l-178 -911h-139l178 911h-520l-178 -911h-140zM1403 182q0 35 8 74l232 1184h139l-228 -1166q-6 -33 -6 -63q0 -41 16.5 -62.5t35 -25.5t45.5 -4l30 2l-26 -125q-23 -4 -47 -4 q-78 0 -138.5 42t-60.5 148z" /> -</font> -</defs></svg>
\ No newline at end of file diff --git a/web/cobrands/stevenage/fonts/MuseoSans_300_Italic-webfont.ttf b/web/cobrands/stevenage/fonts/MuseoSans_300_Italic-webfont.ttf Binary files differdeleted file mode 100755 index 58241a2e9..000000000 --- a/web/cobrands/stevenage/fonts/MuseoSans_300_Italic-webfont.ttf +++ /dev/null diff --git a/web/cobrands/stevenage/fonts/MuseoSans_300_Italic-webfont.woff b/web/cobrands/stevenage/fonts/MuseoSans_300_Italic-webfont.woff Binary files differdeleted file mode 100755 index 95c94194f..000000000 --- a/web/cobrands/stevenage/fonts/MuseoSans_300_Italic-webfont.woff +++ /dev/null diff --git a/web/cobrands/stevenage/fonts/MuseoSans_500-webfont.eot b/web/cobrands/stevenage/fonts/MuseoSans_500-webfont.eot Binary files differdeleted file mode 100755 index 2731833c7..000000000 --- a/web/cobrands/stevenage/fonts/MuseoSans_500-webfont.eot +++ /dev/null diff --git a/web/cobrands/stevenage/fonts/MuseoSans_500-webfont.svg b/web/cobrands/stevenage/fonts/MuseoSans_500-webfont.svg deleted file mode 100755 index dd240b802..000000000 --- a/web/cobrands/stevenage/fonts/MuseoSans_500-webfont.svg +++ /dev/null @@ -1,227 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > -<svg xmlns="http://www.w3.org/2000/svg"> -<metadata> -This is a custom SVG webfont generated by Fontspring. -</metadata> -<defs> -<font id="MuseoSans500" horiz-adv-x="1681" > -<font-face units-per-em="2048" ascent="1536" descent="-512" /> -<missing-glyph horiz-adv-x="526" /> -<glyph unicode=" " horiz-adv-x="526" /> -<glyph unicode="	" horiz-adv-x="526" /> -<glyph unicode=" " horiz-adv-x="526" /> -<glyph unicode="!" horiz-adv-x="651" d="M223 1446h205l-12 -1049h-178zM225 0v199h203v-199h-203z" /> -<glyph unicode=""" horiz-adv-x="700" d="M129 1085v385h156v-385h-156zM416 1085v385h155v-385h-155z" /> -<glyph unicode="#" horiz-adv-x="1470" d="M90 391l25 152h268l59 344h-264l25 149h266l72 410h166l-72 -410h317l72 410h166l-72 -410h268l-26 -149h-266l-62 -344h266l-26 -152h-264l-70 -391h-166l68 391h-318l-67 -391h-166l67 391h-266zM549 543h317l62 344h-318z" /> -<glyph unicode="$" horiz-adv-x="1159" d="M111 166l114 153q6 -6 17.5 -16t50.5 -37.5t79 -48t101.5 -37t120.5 -16.5q106 0 178 57.5t72 155.5q0 82 -73 142.5t-177.5 104.5t-208.5 95t-177 139t-73 209q0 150 105.5 261.5t275.5 135.5v193h146v-191q102 -8 189 -42.5t124 -67.5l37 -31l-92 -168q-14 14 -42 34.5 t-111 55.5t-165 35q-115 0 -188.5 -61.5t-73.5 -149.5q0 -57 39 -103t101.5 -79t138 -63.5t151.5 -68.5t138.5 -85t101.5 -121t39 -168q0 -158 -104.5 -270.5t-282.5 -132.5v-189h-146v189q-231 23 -389 170z" /> -<glyph unicode="%" horiz-adv-x="1558" d="M98 1167q0 125 90.5 214t219.5 89t220 -89t91 -214t-91 -214t-220 -89t-219.5 88t-90.5 215zM129 0l1106 1446h192l-1105 -1446h-193zM256 1167q0 -66 44 -108.5t107.5 -42.5t107.5 43t44 108q0 63 -44 108.5t-107.5 45.5t-107.5 -45.5t-44 -108.5zM840 279q0 125 91 214 t220 89q127 0 219 -89.5t92 -214t-92 -214t-219 -89.5q-131 0 -221 88.5t-90 215.5zM999 279q0 -66 43 -109t109 -43q63 0 107.5 44t44.5 107.5t-44.5 108.5t-108 45t-107.5 -45t-44 -108z" /> -<glyph unicode="&" horiz-adv-x="1400" d="M111 406q0 123 68.5 227t185.5 143v4q-8 2 -20.5 8.5t-45.5 31t-58.5 57t-46 92t-20.5 129.5q0 176 124 274t320 98q35 0 79 -6t71 -10l27 -6l-52 -162q-59 12 -108 12q-111 0 -183.5 -59t-72.5 -162q0 -39 11 -74.5t38 -72.5t82 -58.5t135 -21.5h268v197h199v-197h193 v-176h-193v-193q0 -240 -133 -373t-367 -133q-223 0 -362 123.5t-139 307.5zM317 416q0 -106 82 -180t213 -74q143 0 222 81t79 246v185h-276q-154 0 -237 -67.5t-83 -190.5z" /> -<glyph unicode="'" horiz-adv-x="415" d="M129 1085v385h158v-385h-158z" /> -<glyph unicode="(" horiz-adv-x="618" d="M150 696q0 430 237 809h174q-231 -387 -231 -811q0 -469 231 -889h-174q-237 395 -237 891z" /> -<glyph unicode=")" horiz-adv-x="618" d="M57 -195q231 420 232 889q0 424 -232 811h174q238 -379 238 -809q0 -496 -238 -891h-174z" /> -<glyph unicode="*" horiz-adv-x="956" d="M74 1085l53 172l272 -102l-14 291h186l-16 -291l274 102l56 -172l-281 -75v-4l180 -226l-145 -106l-158 241h-4l-160 -241l-147 106l182 226v4z" /> -<glyph unicode="+" horiz-adv-x="1398" d="M158 504v160h458v503h168v-503h457v-160h-457v-504h-168v504h-458z" /> -<glyph unicode="," horiz-adv-x="522" d="M55 -207l127 422h203l-172 -422h-158z" /> -<glyph unicode="-" horiz-adv-x="966" d="M184 496v176h598v-176h-598z" /> -<glyph unicode="." horiz-adv-x="520" d="M156 0v211h209v-211h-209z" /> -<glyph unicode="/" horiz-adv-x="827" d="M74 -86l520 1610h176l-520 -1610h-176z" /> -<glyph unicode="0" horiz-adv-x="1280" d="M129 725q0 745 510 745q512 0 512 -745q0 -750 -512 -750q-510 0 -510 750zM336 725q0 -563 303 -563q305 0 305 563q0 559 -305 559q-303 0 -303 -559z" /> -<glyph unicode="1" horiz-adv-x="1001" d="M104 1110l347 336h180v-1270h315v-176h-831v176h319v934l2 90h-4q-16 -33 -70 -84l-135 -133z" /> -<glyph unicode="2" horiz-adv-x="1171" d="M113 111q0 121 52 224t131 170.5t171 135.5t171 122t131 127t52 150q0 106 -72.5 173t-187.5 67q-53 0 -103 -19.5t-83 -46t-58.5 -53t-37.5 -47.5l-11 -18l-149 100q6 10 16 29.5t50 66.5t88.5 83t129 65.5t172.5 29.5q201 0 329 -114.5t128 -300.5q0 -96 -38 -180 t-99 -144.5t-135 -116t-147.5 -104.5t-135 -98.5t-100.5 -109.5t-39 -126h717v-176h-932q-10 66 -10 111z" /> -<glyph unicode="3" horiz-adv-x="1161" d="M82 172l111 154q16 -18 44.5 -44t121 -70t184.5 -44q123 0 209 74.5t86 189.5q0 127 -96.5 196.5t-239.5 69.5h-101l-47 109l316 371l90 94v4q-43 -6 -123 -6h-490v176h865v-129l-394 -453q168 -18 296 -124.5t128 -299t-137 -329t-354 -136.5q-82 0 -161 20.5t-132 49.5 t-95 57.5t-61 49.5z" /> -<glyph unicode="4" horiz-adv-x="1241" d="M63 387v127l668 932h232v-887h196v-172h-196v-387h-199v387h-701zM287 559h477v526l8 144h-4q-33 -68 -72 -119l-409 -547v-4z" /> -<glyph unicode="5" horiz-adv-x="1153" d="M98 176l113 148q4 -6 13 -16.5t40 -38t64.5 -48t88 -37t111.5 -16.5q131 0 224.5 82t93.5 211t-94.5 213t-235.5 84q-63 0 -123.5 -18.5t-89.5 -34.5l-31 -19l-116 43l71 717h729v-176h-553l-34 -305l-11 -76h4q80 45 187 45q223 0 363.5 -136t140.5 -335 q0 -209 -146.5 -348.5t-365.5 -139.5q-248 0 -414 168z" /> -<glyph unicode="6" horiz-adv-x="1226" d="M121 657q0 143 40 283.5t116.5 261.5t204.5 194.5t290 73.5q76 0 145.5 -14t102.5 -31l33 -14l-66 -174q-92 47 -207 47q-186 0 -296.5 -142.5t-137.5 -342.5h4q45 61 134 99t186 38q203 0 329.5 -136t126.5 -341q0 -213 -131 -348.5t-333 -135.5q-236 0 -388.5 188.5 t-152.5 493.5zM334 561q0 -147 96 -273t229 -126q121 0 194 84t73 213q0 135 -81 220t-216 85q-121 0 -208 -61.5t-87 -141.5z" /> -<glyph unicode="7" horiz-adv-x="1083" d="M72 1270v176h966v-139l-653 -1307h-209l563 1139q18 37 39 69.5t33 48.5l12 15v4q-33 -6 -106 -6h-645z" /> -<glyph unicode="8" horiz-adv-x="1243" d="M117 418q0 76 28.5 146.5t74.5 120.5t74 74.5t54 43.5q-162 117 -162 289q0 156 117 267t334 111q203 0 329 -105t126 -282q0 -186 -172 -376q197 -121 196 -308q0 -174 -138 -299t-357.5 -125t-361.5 124t-142 319zM324 430q0 -121 88 -196.5t209 -75.5 q117 0 201.5 69.5t84.5 178.5q0 37 -18.5 70.5t-43 57t-71.5 51t-83 44t-97.5 44t-95.5 44.5q-174 -121 -174 -287zM387 1087q0 -29 10.5 -55t21.5 -46.5t39.5 -43t47 -35t59.5 -33t61.5 -29.5t71 -29.5t68.5 -29.5q127 127 127 285q0 98 -71.5 157.5t-186.5 59.5 q-117 0 -182.5 -57.5t-65.5 -143.5z" /> -<glyph unicode="9" horiz-adv-x="1226" d="M100 987q0 213 131 348t334 135q233 0 387 -188t154 -494q0 -143 -40 -283t-117 -261t-205 -195t-289 -74q-76 0 -146.5 14.5t-103.5 30.5l-31 15l66 176q92 -49 206 -49q186 0 297 142t138 343h-4q-43 -61 -133.5 -98t-186.5 -37q-203 0 -330 135t-127 340zM301 987 q0 -135 80 -220t217 -85q121 0 208 62.5t87 140.5q0 147 -96.5 273t-229.5 126q-123 0 -194.5 -84t-71.5 -213z" /> -<glyph unicode=":" horiz-adv-x="598" d="M195 0v211h208v-211h-208zM195 825v211h208v-211h-208z" /> -<glyph unicode=";" horiz-adv-x="600" d="M96 -207l109 422h205l-154 -422h-160zM207 825v211h209v-211h-209z" /> -<glyph unicode="<" horiz-adv-x="1142" d="M68 516v135l954 426v-182l-733 -309v-4l733 -310v-182z" /> -<glyph unicode="=" horiz-adv-x="1370" d="M197 309v160h977v-160h-977zM197 696v160h977v-160h-977z" /> -<glyph unicode=">" horiz-adv-x="1142" d="M121 90v182l731 310v4l-731 309v182l954 -426v-135z" /> -<glyph unicode="?" horiz-adv-x="1001" d="M66 1343q14 14 42.5 36t123 59t192.5 37q178 0 303 -104.5t125 -270.5q0 -94 -37 -169t-90 -125t-107.5 -96t-91.5 -103.5t-37 -125.5v-84h-194v97q0 86 36 156.5t87 119.5t102 94t87 101.5t36 119.5q0 86 -66.5 144.5t-166.5 58.5q-57 0 -115.5 -21.5t-89.5 -41.5 l-29 -23zM291 0v199h203v-199h-203z" /> -<glyph unicode="@" d="M121 493.5q0 317.5 217 537.5t530 220q276 0 404.5 -117.5t128.5 -297.5v-580h147v-150h-559q-186 0 -305 114t-119 274q0 158 118 270.5t306 112.5h221q-4 92 -91 151t-240 59q-236 0 -398 -175t-162 -418q0 -248 163 -418t419 -170v-162q-340 0 -560 216t-220 533.5z M766 496q0 -100 67.5 -170t170.5 -70h206v483h-202q-106 0 -174 -70.5t-68 -172.5z" /> -<glyph unicode="A" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM422 584h438l-160 458l-55 205h-4q-33 -131 -57 -205z" /> -<glyph unicode="B" horiz-adv-x="1298" d="M197 0v1446h505q186 0 303 -98.5t117 -270.5q0 -104 -48 -186t-132 -125v-4q111 -33 174.5 -129t63.5 -221q0 -197 -132.5 -304.5t-332.5 -107.5h-518zM399 176h326q115 0 181.5 66.5t66.5 179.5q0 111 -68.5 179.5t-181.5 68.5h-324v-494zM399 838h303q96 0 154.5 61.5 t58.5 157.5t-57 154.5t-160 58.5h-299v-432z" /> -<glyph unicode="C" horiz-adv-x="1478" d="M98 731q0 315 210 527t526 212q98 0 188 -19t148.5 -47t103.5 -56.5t65 -49.5l21 -18l-100 -152q-18 18 -53.5 44t-145 70t-219.5 44q-238 0 -386.5 -158.5t-148.5 -394.5q0 -238 150.5 -404.5t386.5 -166.5q121 0 232.5 47t162.5 94l51 47l109 -145q-8 -10 -23.5 -25.5 t-70 -54.5t-115 -69.5t-155.5 -55.5t-197 -25q-322 0 -531 217t-209 539z" /> -<glyph unicode="D" horiz-adv-x="1515" d="M197 0v1446h479q336 0 534.5 -191.5t198.5 -529.5q0 -340 -198.5 -532.5t-534.5 -192.5h-479zM399 176h263q248 0 393 143.5t145 405.5q0 260 -145.5 402.5t-392.5 142.5h-263v-1094z" /> -<glyph unicode="E" horiz-adv-x="1173" d="M197 0v1446h839v-176h-637v-453h519v-176h-519v-465h672v-176h-874z" /> -<glyph unicode="F" horiz-adv-x="1067" d="M197 0v1446h796v-176h-594v-475h506v-177h-506v-618h-202z" /> -<glyph unicode="G" horiz-adv-x="1556" d="M100 725q0 315 211 530t527 215q96 0 186 -18t149.5 -43t104.5 -50.5t65 -43.5l21 -19l-102 -151q-18 16 -52 39.5t-140.5 62.5t-215.5 39q-248 0 -396.5 -158.5t-148.5 -398.5q0 -250 151.5 -408.5t381.5 -158.5q111 0 213 45t149 90l47 45v209h-235v176h420v-727h-179 v90l3 62h-5l-18 -19q-12 -12 -55 -43t-90.5 -53.5t-124 -42t-156.5 -19.5q-297 0 -504 212t-207 538z" /> -<glyph unicode="H" horiz-adv-x="1548" d="M197 0v1446h202v-635h750v635h203v-1446h-203v635h-750v-635h-202z" /> -<glyph unicode="I" horiz-adv-x="595" d="M197 0v1446h202v-1446h-202z" /> -<glyph unicode="J" horiz-adv-x="1099" d="M61 487h201v-61q0 -137 66.5 -200.5t163 -63.5t161 61.5t64.5 194.5v852h-365v176h568v-1030q0 -219 -127 -330t-303.5 -111t-302.5 112t-126 329v71z" /> -<glyph unicode="K" horiz-adv-x="1275" d="M197 0v1446h202v-608h215l365 608h223l-420 -686v-4l447 -756h-230l-385 664h-215v-664h-202z" /> -<glyph unicode="L" horiz-adv-x="1083" d="M197 0v1446h202v-1270h648v-176h-850z" /> -<glyph unicode="M" horiz-adv-x="1773" d="M152 0l116 1446h213l332 -782l72 -195h4q39 115 72 195l331 782h213l117 -1446h-201l-71 911l-2 213h-5q-43 -133 -77 -213l-289 -651h-180l-287 651q-33 78 -78 217h-4q2 -129 -4 -217l-70 -911h-202z" /> -<glyph unicode="N" horiz-adv-x="1550" d="M197 0v1446h200l643 -940q25 -35 54.5 -87t48.5 -87l18 -35h4q-14 129 -14 209v940h203v-1446h-199l-645 938q-53 80 -121 211h-4q14 -129 14 -211v-938h-202z" /> -<glyph unicode="O" d="M98 733q0 311 215 524t528.5 213t527.5 -213t214 -524q0 -319 -214 -538.5t-527.5 -219.5t-528.5 219.5t-215 538.5zM307 733q0 -242 155.5 -406.5t379 -164.5t378 165t154.5 406q0 236 -154.5 394.5t-378 158.5t-379 -158.5t-155.5 -394.5z" /> -<glyph unicode="P" horiz-adv-x="1243" d="M197 0v1446h528q201 0 328 -124t127 -329t-128 -331.5t-327 -126.5h-326v-535h-202zM399 711h293q131 0 206 75.5t75 206.5q0 129 -75 203t-204 74h-295v-559z" /> -<glyph unicode="Q" horiz-adv-x="1705" d="M100 731q0 313 214 526t528 213q315 0 529 -213t214 -526q0 -270 -170 -477l172 -164l-119 -127l-168 168q-195 -156 -458 -156q-313 0 -527.5 219.5t-214.5 536.5zM309 731q0 -242 153.5 -405.5t379.5 -163.5q180 0 313 106l-170 166l119 127l166 -168q106 147 106 338 q0 238 -153.5 396.5t-380.5 158.5q-225 0 -379 -158.5t-154 -396.5z" /> -<glyph unicode="R" horiz-adv-x="1312" d="M197 0v1446h442q182 0 270 -33q113 -41 178.5 -145.5t65.5 -245.5q0 -139 -70.5 -245.5t-189.5 -145.5v-4q16 -18 43 -66l307 -561h-229l-305 575h-310v-575h-202zM399 752h291q119 0 187.5 70.5t68.5 191.5q0 160 -115 223q-61 33 -198 33h-234v-518z" /> -<glyph unicode="S" horiz-adv-x="1118" d="M86 166l115 153q6 -6 17 -16t50 -37.5t79 -48t101.5 -37t120.5 -16.5q106 0 178 57.5t72 155.5q0 63 -39 112.5t-100.5 84t-136 66.5t-149.5 68.5t-136 82t-100 116t-39 160.5q0 170 132 286.5t335 116.5q119 0 221 -36.5t145 -73.5l43 -35l-92 -168q-14 14 -41.5 34.5 t-110.5 55.5t-165 35q-113 0 -187.5 -61.5t-74.5 -149.5q0 -82 71.5 -139.5t175 -98t207 -90t175 -140.5t71.5 -220q0 -174 -125 -291t-334 -117q-86 0 -167 19.5t-135 47.5t-96 56.5t-61 48.5z" /> -<glyph unicode="T" horiz-adv-x="1214" d="M10 1270v176h1194v-176h-495v-1270h-203v1270h-496z" /> -<glyph unicode="U" horiz-adv-x="1490" d="M176 512v934h203v-934q0 -164 98 -257t266 -93q170 0 269.5 93t99.5 261v930h203v-934q0 -240 -158 -388.5t-411.5 -148.5t-411.5 148.5t-158 388.5z" /> -<glyph unicode="V" horiz-adv-x="1294" d="M12 1446h219l359 -1022l55 -199h4q29 121 56 199l362 1022h215l-532 -1446h-203z" /> -<glyph unicode="W" horiz-adv-x="1941" d="M68 1446h208l256 -1061q18 -78 27 -154h4q10 74 31 154l283 1061h180l282 -1061l31 -154h4q6 76 27 154l266 1061h209l-379 -1446h-235l-250 938q-25 92 -43 205h-4q-18 -113 -43 -205l-250 -938h-236z" /> -<glyph unicode="X" horiz-adv-x="1253" d="M45 0l457 745l-428 701h233l228 -391l92 -172h4q41 92 88 172l227 391h234l-428 -701l456 -745h-229l-262 444l-92 166h-4q-39 -86 -86 -166l-263 -444h-227z" /> -<glyph unicode="Y" horiz-adv-x="1204" d="M16 1446h230l268 -475l88 -183h4q43 100 88 183l264 475h230l-483 -834v-612h-203v612z" /> -<glyph unicode="Z" horiz-adv-x="1243" d="M84 0v135l696 1004q25 37 50.5 69.5t39.5 48.5l15 15v4q-39 -6 -109 -6h-655v176h1016v-133l-697 -1006q-25 -35 -51.5 -67.5t-40.5 -46.5l-12 -17v-4q39 4 108 4h701v-176h-1061z" /> -<glyph unicode="[" horiz-adv-x="616" d="M207 -195v1700h338v-149h-164v-1399h164v-152h-338z" /> -<glyph unicode="\" horiz-adv-x="827" d="M57 1524h176l521 -1610h-176z" /> -<glyph unicode="]" horiz-adv-x="618" d="M72 -43h166v1399h-166v149h340v-1700h-340v152z" /> -<glyph unicode="^" horiz-adv-x="1255" d="M141 506l410 940h129l407 -940h-178l-295 721l-292 -721h-181z" /> -<glyph unicode="_" horiz-adv-x="1216" d="M57 0h1102v-160h-1102v160z" /> -<glyph unicode="`" horiz-adv-x="1021" d="M330 1806h213l149 -260h-168z" /> -<glyph unicode="a" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197z" /> -<glyph unicode="b" horiz-adv-x="1228" d="M156 0v1446h198v-473l-4 -88h4q4 6 11.5 18t36 43t62.5 53.5t94 42t128 19.5q207 0 331 -149.5t124 -393.5t-132 -393.5t-339 -149.5q-66 0 -123.5 18.5t-92 45.5t-61 52.5t-37.5 43.5l-12 19h-4q4 -33 4 -78v-76h-188zM348 514q0 -150 77 -259.5t216 -109.5 q127 0 213 99.5t86 271.5q0 168 -81 269.5t-212 101.5q-127 0 -213 -93.5t-86 -279.5z" /> -<glyph unicode="c" horiz-adv-x="1120" d="M82 518q0 231 156.5 387t398.5 156q115 0 212 -38t138 -77l39 -37l-94 -139q-12 12 -36 32.5t-98.5 53.5t-152.5 33q-156 0 -258 -104.5t-102 -264.5t103.5 -266.5t262.5 -106.5q86 0 166 35t117 70l37 35l80 -146l-18 -17q-11 -11 -50 -40t-84 -50.5t-115.5 -40 t-146.5 -18.5q-244 0 -399.5 153.5t-155.5 389.5z" /> -<glyph unicode="d" horiz-adv-x="1230" d="M88 518q0 246 131 394.5t338 148.5q68 0 125 -16.5t91 -41t59.5 -49t35.5 -41.5l9 -16h4q-4 31 -4 70v479h198v-1446h-188v98l2 70h-4q-4 -8 -11.5 -20.5t-35 -46t-63.5 -59.5t-97.5 -46.5t-132.5 -20.5q-209 0 -333 149.5t-124 393.5zM291 518q0 -168 81 -269.5 t212 -101.5q127 0 213 93.5t86 279.5q0 150 -77 259.5t-216 109.5q-127 0 -213 -99.5t-86 -271.5z" /> -<glyph unicode="e" horiz-adv-x="1136" d="M84 518q0 244 146.5 393.5t371.5 149.5q211 0 330 -137.5t119 -348.5l-7 -86h-755q8 -164 109.5 -253t246.5 -89q164 0 299 115l8 6l82 -145q-16 -16 -49 -41t-137.5 -66t-214.5 -41q-242 0 -395.5 155t-153.5 388zM295 639h553q-4 129 -75 196.5t-175 67.5 q-117 0 -200 -69.5t-103 -194.5z" /> -<glyph unicode="f" horiz-adv-x="688" d="M82 862v160h129v49q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5t-59 -67.5t-22.5 -115v-45h245v-160h-245v-862h-197v862h-129z" /> -<glyph unicode="g" horiz-adv-x="1214" d="M88 542.5q0 229.5 121 374t332 144.5q213 0 311 -131l14 -23h4q-2 14 -2 33v96h191v-993q0 -123 -44 -217t-120 -148.5t-166 -81t-192 -26.5q-186 0 -355 86l66 156q129 -70 284 -70q147 0 237.5 70.5t90.5 220.5v76l2 65h-4q-96 -162 -307 -162t-337 150.5t-126 380z M289 547q0 -164 81 -263.5t220 -99.5q121 0 197.5 84t76.5 273q0 348 -293 348q-133 0 -207.5 -91t-74.5 -251z" /> -<glyph unicode="h" horiz-adv-x="1234" d="M156 1446h198v-531l-4 -86h4q41 90 141.5 161t241.5 71q356 0 357 -397v-664h-199v618q0 125 -41 193t-155.5 68t-205 -72t-122.5 -184q-16 -55 -17 -138v-485h-198v1446z" /> -<glyph unicode="i" horiz-adv-x="509" d="M154 1243v203h200v-203h-200zM156 0v1036h198v-1036h-198z" /> -<glyph unicode="j" horiz-adv-x="507" d="M-113 -248q18 -2 45 -2q35 0 68 8.5t71 28.5t61.5 69.5t23.5 120.5v1059h196v-1071q0 -121 -42 -205t-109.5 -119.5t-125 -49t-118.5 -13.5l-70 4v170zM154 1243v203h200v-203h-200z" /> -<glyph unicode="k" horiz-adv-x="1077" d="M156 0v1446h198v-791h146l282 381h226l-344 -456v-5l383 -575h-232l-311 487h-150v-487h-198z" /> -<glyph unicode="l" horiz-adv-x="542" d="M143 283v1163h199v-1129q0 -86 28.5 -116.5t82.5 -30.5l34 2v-176q-31 -4 -65 -4q-279 0 -279 291z" /> -<glyph unicode="m" horiz-adv-x="1871" d="M156 1036h192v-137l-4 -76h4q39 96 139.5 167t217.5 71q258 0 311 -236h4q45 98 146.5 167t222.5 69q342 0 342 -397v-664h-199v621q0 125 -38 192.5t-146 67.5q-104 0 -183.5 -76t-107.5 -189q-14 -59 -15 -143v-473h-198v621q0 123 -36 191.5t-144.5 68.5t-187.5 -78 t-109 -195q-12 -49 -13 -135v-473h-198v1036z" /> -<glyph unicode="n" horiz-adv-x="1234" d="M156 1036h192v-137l-4 -76h4q41 88 139.5 163t249.5 75q356 0 357 -397v-664h-199v618q0 125 -41 193t-156 68q-117 0 -206 -71t-121 -183q-16 -55 -17 -140v-485h-198v1036z" /> -<glyph unicode="o" horiz-adv-x="1277" d="M80 520.5q0 233.5 161.5 387t397 153.5t397.5 -153.5t162 -387t-163 -389.5t-396 -156t-396 156t-163 389.5zM283 520q0 -160 104.5 -266.5t251.5 -106.5q150 0 253 105.5t103 267.5q0 160 -103.5 264.5t-252.5 104.5q-147 0 -251.5 -104.5t-104.5 -264.5z" /> -<glyph unicode="p" horiz-adv-x="1228" d="M156 1036h182v-88l-4 -76h4q4 8 11 20.5t37 45.5t65.5 57.5t98 45t136.5 20.5q207 0 331 -149.5t124 -393.5t-132 -393.5t-337 -149.5q-63 0 -119.5 17.5t-91.5 43t-60.5 50.5t-35.5 41l-11 18h-4q4 -37 4 -90v-465h-198v1446zM348 514q0 -150 79 -259.5t214 -109.5 q127 0 213 99.5t86 271.5q0 168 -81 269.5t-212 101.5q-127 0 -213 -93.5t-86 -279.5z" /> -<glyph unicode="q" horiz-adv-x="1230" d="M88 518q0 246 131 394.5t338 148.5q68 0 126 -18.5t93 -43t61.5 -50t36.5 -44.5l11 -18h4q-2 31 -2 71v78h188v-1446h-198v473l4 91h-4q-4 -8 -11.5 -19.5t-35 -42.5t-62.5 -54.5t-94.5 -43t-128.5 -19.5q-209 0 -333 149.5t-124 393.5zM291 518q0 -168 81 -269.5 t212 -101.5q127 0 213 93.5t86 279.5q0 150 -77 259.5t-216 109.5q-127 0 -213 -99.5t-86 -271.5z" /> -<glyph unicode="r" horiz-adv-x="768" d="M156 0v1036h192v-180l-4 -78h4q37 119 124 195t204 76l51 -5v-196q-27 6 -57 6q-96 0 -176 -65.5t-115 -178.5q-25 -80 -25 -186v-424h-198z" /> -<glyph unicode="s" horiz-adv-x="917" d="M72 127l96 141q12 -14 36.5 -33.5t102.5 -53.5t158 -34q70 0 121 35t51 94q0 51 -55.5 90.5t-133 69t-155.5 65.5t-133.5 103.5t-55.5 161.5q0 137 106.5 216t268.5 79q100 0 184.5 -28.5t116.5 -57.5l33 -29l-80 -149q-10 10 -29.5 25.5t-86 41t-140.5 25.5 q-72 0 -121 -32t-49 -95q0 -51 55.5 -88t133 -66.5t155.5 -65.5t133.5 -103.5t55.5 -162.5q0 -131 -103.5 -216t-271.5 -85q-113 0 -211 38t-139 77z" /> -<glyph unicode="t" horiz-adv-x="733" d="M63 862v160h142v299h192v-299h250v-160h-250v-461q0 -59 16.5 -103t40 -68.5t55.5 -39t57.5 -18.5t51.5 -4l48 4v-176q-29 -4 -70 -4q-49 0 -94 6t-102.5 30.5t-99.5 64.5t-71.5 114t-29.5 172v483h-136z" /> -<glyph unicode="u" horiz-adv-x="1224" d="M141 373v663h199v-618q0 -125 40 -191.5t155 -66.5q152 0 243.5 114.5t91.5 276.5v485h199v-1036h-192v137l4 76h-4q-39 -90 -140.5 -164t-240.5 -74q-355 1 -355 398z" /> -<glyph unicode="v" horiz-adv-x="1028" d="M14 1036h211l252 -700q8 -25 16.5 -60.5t14.5 -58.5l4 -22h4l4 22q6 23 15.5 58.5t17.5 60.5l252 700h209l-383 -1036h-230z" /> -<glyph unicode="w" horiz-adv-x="1667" d="M35 1036h211l215 -727q6 -23 13 -51.5t9 -44.5l4 -14h5q10 57 26 110l225 725h183l223 -725l29 -110h4q8 57 24 110l217 727h209l-334 -1036h-219l-215 666l-28 112h-5q-12 -59 -28 -112l-213 -666h-221z" /> -<glyph unicode="x" horiz-adv-x="1040" d="M45 0l352 532l-334 504h228l192 -315l35 -62h4q18 35 35 62l193 315h227l-334 -504l352 -532h-225l-217 346l-31 57h-4q-16 -33 -31 -57l-217 -346h-225z" /> -<glyph unicode="y" horiz-adv-x="1044" d="M4 1036h223l260 -678l39 -125h4q16 70 35 123l252 680h215l-485 -1222q-47 -117 -136 -180.5t-200 -63.5q-51 0 -101.5 16.5t-74.5 32.5l-25 14l70 152q57 -43 121 -43q123 0 186 152l51 118z" /> -<glyph unicode="z" horiz-adv-x="1058" d="M80 0v115l522 655l86 96v4q-33 -4 -100 -4h-486v170h854v-114l-522 -658l-88 -94v-4q35 4 103 4h526v-170h-895z" /> -<glyph unicode="{" horiz-adv-x="716" d="M100 578v176q6 0 18.5 2t42 16t53.5 36.5t42 68t18 104.5v172q0 92 26 160.5t61.5 104.5t86 58.5t86 27.5t72.5 5l47 -2v-151h-28q-27 0 -50.5 -7.5t-55.5 -26.5t-51 -65.5t-19 -115.5v-211q0 -57 -17.5 -104.5t-42 -75t-48.5 -47t-42 -27.5l-16 -6v-4q6 -2 17 -6.5 t40 -25t50.5 -47t39.5 -74.5q19 -47 19 -107v-236q0 -70 19 -116t51 -65.5t55.5 -26.5t50.5 -7h28v-152q-18 -4 -47 -4q-37 0 -72.5 5.5t-86 28t-86 58t-61.5 105.5t-26 162v196q0 59 -18 103.5t-43 66t-50.5 34.5t-43.5 15z" /> -<glyph unicode="|" horiz-adv-x="579" d="M203 -326v1948h174v-1948h-174z" /> -<glyph unicode="}" horiz-adv-x="716" d="M63 -45h29q27 0 50.5 7t55 26.5t51 65.5t19.5 116v235q0 94 42 159t83 83l41 19v4q-6 2 -17 7t-40 25.5t-50.5 47t-40 74.5t-18.5 106v211q0 70 -19.5 116t-51 65t-55 26.5t-50.5 7.5h-29v151q18 2 48 2q37 0 72.5 -5t85.5 -27.5t86 -58.5t61.5 -104.5t25.5 -160.5v-172 q0 -172 138 -219l36 -8v-176q-6 0 -18 -2.5t-42 -16.5t-53.5 -35.5t-42 -65.5t-18.5 -104v-196q0 -92 -25.5 -162t-61.5 -105.5t-86 -58t-86 -28t-72 -5.5l-48 4v152z" /> -<glyph unicode="~" horiz-adv-x="1245" d="M137 418q0 174 75 260t212 86q72 0 130 -32t89 -68.5t76 -68.5t96 -32q74 0 105.5 57.5t31.5 135.5h162q0 -346 -285 -346q-72 0 -130 30.5t-88.5 68.5t-77 68.5t-97.5 30.5q-72 0 -104.5 -57t-32.5 -133h-162z" /> -<glyph unicode="¡" horiz-adv-x="591" d="M193 -410l14 1049h178l12 -1049h-204zM193 838v198h202v-198h-202z" /> -<glyph unicode="¢" horiz-adv-x="1179" d="M109 723q0 227 116.5 388t315.5 187v172h145v-172q133 -20 232.5 -103t152.5 -214l-180 -70q-90 203 -273 203q-143 0 -225 -109.5t-82 -281.5q0 -176 80 -282.5t227 -106.5q184 0 273 203l180 -72q-55 -125 -152.5 -213t-232.5 -102v-177h-145v177q-199 27 -315.5 187.5 t-116.5 385.5z" /> -<glyph unicode="£" horiz-adv-x="1210" d="M115 0v176h125v477h-90v144h90v278q0 170 126 282.5t318 112.5q186 0 332 -120l10 -11l-117 -141q-98 88 -223 88q-111 0 -176.5 -62.5t-65.5 -156.5v-270h377v-144h-377v-477h666v-176h-995z" /> -<glyph unicode="¥" horiz-adv-x="1243" d="M57 1446h232l241 -451l88 -209h5q43 113 88 209l243 451h232l-340 -606h209v-129h-277l-55 -99v-75h332v-129h-332v-408h-205v408h-334v129h334v75l-55 99h-279v129h211z" /> -<glyph unicode="§" horiz-adv-x="905" d="M98 -23l90 138q84 -76 199 -76q94 0 155.5 56.5t61.5 158.5q0 41 -12 92l-135 770h161l144 -799q10 -55 10 -92q0 -156 -104.5 -254t-280.5 -98q-80 0 -151.5 26.5t-104.5 51.5zM129 1120q0 154 104.5 252t282.5 98q78 0 150.5 -26.5t105.5 -50.5l33 -27l-94 -131 q-82 70 -195 70q-96 0 -157.5 -53.5t-61.5 -153.5q0 -37 12 -82l140 -789h-164l-144 799q-12 47 -12 94z" /> -<glyph unicode="¨" horiz-adv-x="1021" d="M258 1599v207h164v-207h-164zM600 1599v207h164v-207h-164z" /> -<glyph unicode="©" d="M111 723q0 311 212 529t515 218q305 0 519 -218t214 -529t-214 -529.5t-519 -218.5q-303 0 -515 218.5t-212 529.5zM260 723q0 -256 167 -432t411 -176q248 0 415.5 176t167.5 432t-168 432t-415 176q-244 0 -411 -176t-167 -432zM449 721q0 168 111.5 288.5t291.5 120.5 q195 0 311 -165l23 -37l-125 -68q-8 14 -23.5 36t-67.5 57.5t-112 35.5q-117 0 -185.5 -79t-68.5 -189q0 -115 67.5 -191.5t186.5 -76.5q59 0 110.5 32.5t71.5 63.5l21 33l125 -68q-4 -8 -12.5 -21.5t-38 -49t-64.5 -62.5t-94 -48.5t-125 -21.5q-180 0 -291.5 120 t-111.5 290z" /> -<glyph unicode="ª" horiz-adv-x="864" d="M150 543v116h563v-116h-563zM152 981q0 225 385 225h20v13q0 129 -131 129q-39 0 -82 -14.5t-65 -28.5l-23 -15l-59 101q92 76 247 75q127 0 194 -66.5t67 -191.5v-411h-140v94h-4q-6 -12 -19.5 -30.5t-61.5 -48.5t-107 -30q-88 0 -154.5 53.5t-66.5 145.5zM299 991 q0 -37 27.5 -62.5t76.5 -25.5q68 0 111 56.5t43 125.5v17h-25q-233 0 -233 -111z" /> -<glyph unicode="«" horiz-adv-x="1138" d="M90 578l336 421h199l-336 -421l336 -420h-199zM502 578l336 421h198l-336 -421l336 -420h-198z" /> -<glyph unicode="¬" horiz-adv-x="1257" d="M123 696v160h977v-547h-166v387h-811z" /> -<glyph unicode="­" horiz-adv-x="882" d="M143 496v176h598v-176h-598z" /> -<glyph unicode="®" d="M111 723q0 311 212 529t515 218q305 0 519 -218t214 -529t-214 -529.5t-519 -218.5q-303 0 -515 218.5t-212 529.5zM260 723q0 -256 167 -432t411 -176q248 0 415.5 176t167.5 432t-168 432t-415 176q-244 0 -411 -176t-167 -432zM588 340v772h297q111 0 177 -64.5 t66 -170.5q0 -82 -43 -136.5t-98 -68.5v-4q8 -8 27 -43l147 -285h-160l-143 299h-125v-299h-145zM733 745h123q57 0 91 35t34 97q0 59 -34 91.5t-91 32.5h-123v-256z" /> -<glyph unicode="¯" horiz-adv-x="1021" d="M250 1606v143h522v-143h-522z" /> -<glyph unicode="°" horiz-adv-x="796" d="M88 1167q0 125 90 214t219 89t220.5 -89t91.5 -214t-91.5 -214t-220.5 -89t-219 88t-90 215zM246 1167.5q0 -63.5 44 -107.5t107.5 -44t107.5 44t44 107.5t-44 108.5t-107.5 45t-107.5 -45t-44 -108.5z" /> -<glyph unicode="±" horiz-adv-x="1394" d="M156 504v160h458v503h168v-503h457v-160h-457v-504h-168v504h-458zM188 -195h1018v-159h-1018v159z" /> -<glyph unicode="²" horiz-adv-x="796" d="M96 940q0 96 45 171t108.5 121t127 86t108.5 87t45 102q0 57 -42 95t-105 38q-96 -4 -172 -98l-100 92l11 16.5t32.5 35t56.5 44t79 36t101 16.5q127 0 211 -75t84 -194q0 -82 -42 -147.5t-103.5 -107t-123 -78.5t-105.5 -81t-48 -98h436v-135h-598q0 8 -2 23.5t-3 28 t-1 22.5z" /> -<glyph unicode="³" horiz-adv-x="796" d="M82 981l86 109q8 -12 24.5 -29t70.5 -45.5t114 -28.5q68 0 119 45t51 111q0 68 -54.5 106.5t-127.5 38.5h-70l-33 78l182 211l50 49v4q-39 -6 -74 -6h-289v137h555v-98l-223 -258q102 -14 170.5 -81t68.5 -181q0 -121 -91 -209t-228 -88q-92 0 -167 33.5t-105 66.5z" /> -<glyph unicode="´" horiz-adv-x="1021" d="M330 1546l149 260h213l-196 -260h-166z" /> -<glyph unicode="µ" horiz-adv-x="1267" d="M170 -410v1446h199v-618q0 -125 40 -191.5t152 -66.5q154 0 246 114.5t92 276.5v485h199v-1036h-193v141l4 72h-6q-4 -10 -12 -25.5t-40 -56.5t-72 -72.5t-108.5 -57.5t-148.5 -26q-131 2 -186 64h-4q14 -100 14 -160v-289h-176z" /> -<glyph unicode="μ" horiz-adv-x="1267" d="M170 -410v1446h199v-618q0 -125 40 -191.5t152 -66.5q154 0 246 114.5t92 276.5v485h199v-1036h-193v141l4 72h-6q-4 -10 -12 -25.5t-40 -56.5t-72 -72.5t-108.5 -57.5t-148.5 -26q-131 2 -186 64h-4q14 -100 14 -160v-289h-176z" /> -<glyph unicode="¶" horiz-adv-x="1208" d="M88 970.5q0 200.5 142.5 338t340.5 137.5h557v-176h-401v-1372h-154v596q-199 0 -342 138t-143 338.5zM854 -102v1255h152v-1255h-152z" /> -<glyph unicode="·" horiz-adv-x="563" d="M180 489v211h203v-211h-203z" /> -<glyph unicode="¸" horiz-adv-x="1021" d="M350 -291q41 -14 86 -14q98 0 98.5 63.5t-108.5 63.5l-37 -2l60 227l100 -20v-17l-25 -112q66 -8 107 -47t41 -103q0 -88 -60.5 -130t-148.5 -42l-113 14v119z" /> -<glyph unicode="¹" horiz-adv-x="796" d="M133 1550l217 211h139v-760h187v-135h-531v135h191v510l4 54h-4q-8 -18 -37 -45l-72 -70z" /> -<glyph unicode="º" horiz-adv-x="956" d="M127 1130q0 145 101.5 241.5t246.5 96.5q147 0 249.5 -96t102.5 -242q0 -150 -101 -247t-248.5 -97t-249 97t-101.5 247zM160 543v116h639v-116h-639zM274 1130q0 -92 58.5 -152t144.5 -60q84 0 142.5 60t58.5 152q0 90 -58.5 148.5t-142.5 58.5q-86 0 -144.5 -58.5 t-58.5 -148.5z" /> -<glyph unicode="»" horiz-adv-x="1140" d="M102 158l336 420l-336 421h199l336 -421l-336 -420h-199zM516 158l336 420l-336 421h199l336 -421l-336 -420h-199z" /> -<glyph unicode="¼" horiz-adv-x="1980" d="M109 1235l217 211h139v-760h186v-135h-530v135h190v510l4 53h-4q-8 -18 -37 -45l-71 -69zM535 0l688 1446h153l-688 -1446h-153zM1167 219v103l412 573h166v-541h125v-135h-125v-219h-152v219h-426zM1335 354h258v252l6 119h-4q-29 -55 -59 -98l-201 -269v-4z" /> -<glyph unicode="½" horiz-adv-x="1968" d="M109 1235l217 211h139v-760h186v-135h-530v135h190v510l4 53h-4q-8 -18 -37 -45l-71 -69zM539 0l688 1446h153l-688 -1446h-153zM1229 74q0 96 45 170.5t108.5 121t127 86.5t108.5 87t45 102q0 57 -42 95t-105 38q-96 -4 -173 -98l-100 92q4 6 11.5 16.5t33 35t56 44 t78.5 35.5t102 16q127 0 211 -74.5t84 -193.5q0 -82 -42 -147.5t-103.5 -107.5t-123 -79t-105.5 -81t-48 -97h436v-135h-598q0 8 -2 23.5t-3 28t-1 22.5z" /> -<glyph unicode="¾" horiz-adv-x="2004" d="M82 666l86 108q8 -12 24.5 -28.5t70.5 -45t114 -28.5q68 0 119 45t51 110q0 68 -54.5 107t-127.5 39h-70l-33 78l182 211l50 49v4q-39 -6 -74 -6h-289v137h555v-98l-223 -258q102 -14 170.5 -81t68.5 -182q0 -121 -91 -209t-228 -88q-92 0 -167 34t-105 67zM559 0 l688 1446h154l-688 -1446h-154zM1192 219v103l412 573h165v-541h125v-135h-125v-219h-151v219h-426zM1360 354h258v252l6 119h-4q-29 -55 -59 -98l-201 -269v-4z" /> -<glyph unicode="¿" horiz-adv-x="921" d="M80 -57q0 94 37 168.5t90 125t107.5 96.5t91 104.5t36.5 125.5v76h193v-88q0 -86 -36 -157.5t-86 -120t-101.5 -93.5t-87 -101t-35.5 -120q0 -86 66.5 -145.5t166.5 -59.5q57 0 115.5 22.5t87.5 43.5l31 22l108 -141q-6 -6 -16 -14.5t-45 -31t-74 -39.5t-98.5 -31.5 t-122.5 -14.5q-178 0 -303 103.5t-125 269.5zM438 838v198h203v-198h-203z" /> -<glyph unicode="À" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM369 1806h213l149 -260h-168zM422 584h438l-160 458l-55 205h-4q-33 -131 -57 -205z" /> -<glyph unicode="Á" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM422 584h438l-160 458l-55 205h-4q-33 -131 -57 -205zM553 1546l149 260h213l-196 -260h-166z" /> -<glyph unicode="Â" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM358 1546l181 260h206l181 -260h-174l-109 164h-4l-107 -164h-174zM422 584h438l-160 458l-55 205h-4q-33 -131 -57 -205z" /> -<glyph unicode="Ã" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM299 1548q0 260 209 260q59 0 104 -34.5t82 -69.5t72 -35q41 0 60.5 40t19.5 93h143q0 -260 -209 -260q-59 0 -104 35t-82 69.5t-72 34.5q-80 0 -80 -133h-143zM422 584h438l-160 458l-55 205h-4 q-33 -131 -57 -205z" /> -<glyph unicode="Ä" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM391 1599v207h164v-207h-164zM422 584h438l-160 458l-55 205h-4q-33 -131 -57 -205zM733 1599v207h164v-207h-164z" /> -<glyph unicode="Å" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM422 584h438l-160 458l-55 205h-4q-33 -131 -57 -205zM469 1673q0 70 51 112t123 42t123 -42t51 -112q0 -68 -51 -109.5t-123 -41.5t-123 41.5t-51 109.5zM575 1673q0 -29 18.5 -48t49.5 -19 q29 0 48.5 19.5t19.5 47.5q0 33 -19.5 52.5t-48.5 19.5q-31 0 -49.5 -19.5t-18.5 -52.5z" /> -<glyph unicode="Æ" horiz-adv-x="1798" d="M8 0l598 1446h1057v-176h-639v-453h520v-176h-520v-465h674v-176h-875v643h-346l-258 -643h-211zM545 811h278v459h-94z" /> -<glyph unicode="Ç" horiz-adv-x="1482" d="M102 731q0 315 210 527t526 212q98 0 188 -19t148.5 -47t103.5 -56.5t65 -49.5l21 -18l-100 -152q-18 18 -53 44t-145 70t-220 44q-238 0 -386.5 -158.5t-148.5 -394.5q0 -238 150.5 -404.5t386.5 -166.5q121 0 232.5 47t162.5 94l51 47l109 -145q-8 -8 -22.5 -23.5 t-65.5 -52.5t-108.5 -66.5t-147.5 -56t-187 -31.5l-16 -77q66 -8 107 -47t41 -103q0 -88 -60.5 -130t-148.5 -42l-113 14v119q41 -14 86 -14q98 0 98 63.5t-108 63.5l-37 -2l41 160q-291 27 -475.5 238.5t-184.5 512.5z" /> -<glyph unicode="È" horiz-adv-x="1173" d="M197 0v1446h839v-176h-637v-453h519v-176h-519v-465h672v-176h-874zM365 1806h213l149 -260h-168z" /> -<glyph unicode="É" horiz-adv-x="1173" d="M197 0v1446h839v-176h-637v-453h519v-176h-519v-465h672v-176h-874zM551 1546l149 260h213l-196 -260h-166z" /> -<glyph unicode="Ê" horiz-adv-x="1173" d="M197 0v1446h839v-176h-637v-453h519v-176h-519v-465h672v-176h-874zM356 1546l181 260h206l181 -260h-174l-109 164h-4l-107 -164h-174z" /> -<glyph unicode="Ë" horiz-adv-x="1173" d="M197 0v1446h839v-176h-637v-453h519v-176h-519v-465h672v-176h-874zM387 1599v207h164v-207h-164zM729 1599v207h164v-207h-164z" /> -<glyph unicode="Ì" horiz-adv-x="595" d="M25 1806h213l149 -260h-168zM197 0v1446h202v-1446h-202z" /> -<glyph unicode="Í" horiz-adv-x="595" d="M197 0v1446h202v-1446h-202zM211 1546l149 260h213l-196 -260h-166z" /> -<glyph unicode="Î" horiz-adv-x="595" d="M14 1546l181 260h206l181 -260h-174l-109 164h-4l-107 -164h-174zM197 0v1446h202v-1446h-202z" /> -<glyph unicode="Ï" horiz-adv-x="595" d="M47 1599v207h164v-207h-164zM197 0v1446h202v-1446h-202zM389 1599v207h164v-207h-164z" /> -<glyph unicode="Ð" horiz-adv-x="1554" d="M115 639v168h121v639h479q336 0 534.5 -191.5t198.5 -529.5q0 -340 -198.5 -532.5t-534.5 -192.5h-479v639h-121zM438 176h262q248 0 393.5 143.5t145.5 405.5q0 260 -145.5 402.5t-393.5 142.5h-262v-463h305v-168h-305v-463z" /> -<glyph unicode="Ñ" horiz-adv-x="1550" d="M197 0v1446h200l643 -940q25 -35 54.5 -87t48.5 -87l18 -35h4q-14 129 -14 209v940h203v-1446h-199l-645 938q-53 80 -121 211h-4q14 -129 14 -211v-938h-202zM430 1548q0 260 209 260q59 0 104 -34.5t82 -69.5t72 -35q41 0 60.5 40t19.5 93h143q0 -260 -209 -260 q-59 0 -104 35t-82 69.5t-72 34.5q-80 0 -80 -133h-143z" /> -<glyph unicode="Ò" d="M98 733q0 311 215 524t528.5 213t527.5 -213t214 -524q0 -319 -214 -538.5t-527.5 -219.5t-528.5 219.5t-215 538.5zM307 733q0 -242 155.5 -406.5t379 -164.5t378 165t154.5 406q0 236 -154.5 394.5t-378 158.5t-379 -158.5t-155.5 -394.5zM567 1806h213l150 -260h-168z " /> -<glyph unicode="Ó" d="M98 733q0 311 215 524t528.5 213t527.5 -213t214 -524q0 -319 -214 -538.5t-527.5 -219.5t-528.5 219.5t-215 538.5zM307 733q0 -242 155.5 -406.5t379 -164.5t378 165t154.5 406q0 236 -154.5 394.5t-378 158.5t-379 -158.5t-155.5 -394.5zM754 1546l149 260h213 l-196 -260h-166z" /> -<glyph unicode="Ô" d="M98 733q0 311 215 524t528.5 213t527.5 -213t214 -524q0 -319 -214 -538.5t-527.5 -219.5t-528.5 219.5t-215 538.5zM307 733q0 -242 155.5 -406.5t379 -164.5t378 165t154.5 406q0 236 -154.5 394.5t-378 158.5t-379 -158.5t-155.5 -394.5zM557 1546l180 260h207 l180 -260h-174l-108 164h-4l-107 -164h-174z" /> -<glyph unicode="Õ" d="M98 733q0 311 215 524t528.5 213t527.5 -213t214 -524q0 -319 -214 -538.5t-527.5 -219.5t-528.5 219.5t-215 538.5zM307 733q0 -242 155.5 -406.5t379 -164.5t378 165t154.5 406q0 236 -154.5 394.5t-378 158.5t-379 -158.5t-155.5 -394.5zM498 1548q0 260 209 260 q59 0 104 -34.5t82 -69.5t72 -35q41 0 60 40t19 93h144q0 -260 -209 -260q-59 0 -104.5 35t-82 69.5t-71.5 34.5q-80 0 -80 -133h-143z" /> -<glyph unicode="Ö" d="M98 733q0 311 215 524t528.5 213t527.5 -213t214 -524q0 -319 -214 -538.5t-527.5 -219.5t-528.5 219.5t-215 538.5zM307 733q0 -242 155.5 -406.5t379 -164.5t378 165t154.5 406q0 236 -154.5 394.5t-378 158.5t-379 -158.5t-155.5 -394.5zM590 1599v207h164v-207h-164z M932 1599v207h164v-207h-164z" /> -<glyph unicode="×" horiz-adv-x="1320" d="M129 113l422 471l-422 471l113 112l417 -467l420 467l113 -112l-424 -471l424 -471l-113 -113l-420 465l-417 -465z" /> -<glyph unicode="Ø" horiz-adv-x="1687" d="M102 733q0 311 215 524t529 213q205 0 379 -100l94 129l100 -69l-94 -132q123 -102 192.5 -248.5t69.5 -316.5q0 -319 -214 -538.5t-527 -219.5q-217 0 -393 109l-97 -135l-102 69l100 142q-119 104 -185.5 252.5t-66.5 320.5zM311 733q0 -246 160 -411l641 890 q-121 74 -266 74q-223 0 -379 -158.5t-156 -394.5zM567 242q125 -80 279 -80q223 0 377.5 165t154.5 406q0 248 -168 406z" /> -<glyph unicode="Ù" horiz-adv-x="1490" d="M176 512v934h203v-934q0 -164 98 -257t266 -93q170 0 269.5 93t99.5 261v930h203v-934q0 -240 -158 -388.5t-411.5 -148.5t-411.5 148.5t-158 388.5zM471 1806h213l150 -260h-168z" /> -<glyph unicode="Ú" horiz-adv-x="1490" d="M176 512v934h203v-934q0 -164 98 -257t266 -93q170 0 269.5 93t99.5 261v930h203v-934q0 -240 -158 -388.5t-411.5 -148.5t-411.5 148.5t-158 388.5zM655 1546l150 260h213l-197 -260h-166z" /> -<glyph unicode="Û" horiz-adv-x="1490" d="M176 512v934h203v-934q0 -164 98 -257t266 -93q170 0 269.5 93t99.5 261v930h203v-934q0 -240 -158 -388.5t-411.5 -148.5t-411.5 148.5t-158 388.5zM461 1546l180 260h207l180 -260h-174l-109 164h-4l-106 -164h-174z" /> -<glyph unicode="Ü" horiz-adv-x="1490" d="M176 512v934h203v-934q0 -164 98 -257t266 -93q170 0 269.5 93t99.5 261v930h203v-934q0 -240 -158 -388.5t-411.5 -148.5t-411.5 148.5t-158 388.5zM494 1599v207h163v-207h-163zM836 1599v207h163v-207h-163z" /> -<glyph unicode="Ý" horiz-adv-x="1204" d="M16 1446h230l268 -475l88 -183h4q43 100 88 183l264 475h230l-483 -834v-612h-203v612zM514 1546l150 260h213l-197 -260h-166z" /> -<glyph unicode="Þ" horiz-adv-x="1243" d="M197 1446h200v-246h328q201 0 327 -124t126 -328.5t-127 -331.5t-328 -127h-326v-289h-200v1446zM397 465h295q131 0 206 75.5t75 207.5q0 129 -75 202.5t-204 73.5h-297v-559z" /> -<glyph unicode="ß" horiz-adv-x="1204" d="M156 0v1085q0 180 131 282.5t311 102.5q168 0 278.5 -95t110.5 -234q0 -68 -31.5 -126.5t-70.5 -93t-71 -77.5t-32 -84q0 -35 38 -72t92.5 -73.5t107.5 -78.5t91 -104.5t38 -134.5q0 -147 -102.5 -229t-247.5 -82q-84 0 -157 14t-103 29l-31 16v176q115 -63 266 -63 q74 0 123 36.5t49 110.5q0 55 -57.5 109.5t-126 94.5t-125.5 105.5t-57 139.5q0 57 32.5 110.5t70.5 89t70.5 86t32.5 99.5q0 66 -51 112.5t-143 46.5q-98 0 -168 -59t-70 -168v-1071h-198z" /> -<glyph unicode="à" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M264 1446h213l150 -260h-168zM272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197z" /> -<glyph unicode="á" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197zM446 1186l150 260h213l-197 -260h-166z" /> -<glyph unicode="â" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M252 1186l180 260h207l180 -260h-174l-108 164h-5l-106 -164h-174zM272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197z" /> -<glyph unicode="ã" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M193 1188q0 260 208 260q59 0 104.5 -35t82.5 -69.5t71 -34.5q41 0 60.5 40t19.5 93h144q0 -260 -209 -260q-59 0 -104.5 34.5t-82 69.5t-71.5 35q-80 0 -80 -133h-143zM272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197z" /> -<glyph unicode="ä" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197zM285 1239v207h164v-207h-164zM627 1239v207h164v-207h-164z" /> -<glyph unicode="å" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197zM362 1313q0 70 51.5 111.5t123 41.5t123 -42t51.5 -111q0 -68 -51.5 -110t-123 -42t-123 42t-51.5 110zM469 1313q0 -29 18.5 -48.5t49.5 -19.5q29 0 48 19.5t19 48.5 q0 33 -19.5 52t-47.5 19q-31 0 -49.5 -19t-18.5 -52z" /> -<glyph unicode="æ" horiz-adv-x="1769" d="M74 291q0 92 45 160.5t109.5 104.5t155.5 58.5t160.5 27.5t147.5 5h51v19q0 227 -233 227q-70 0 -140.5 -24.5t-107.5 -49.5l-37 -26l-80 145q6 4 17.5 13.5t48.5 29.5t78 36.5t105.5 30t129.5 13.5q260 0 344 -182h4q123 182 379 182q203 0 317.5 -142.5t114.5 -361.5 l-4 -59h-743q8 -170 103.5 -260.5t240.5 -90.5q80 0 156.5 30t113.5 61l37 28l82 -143q-16 -16 -49 -41t-137.5 -66t-212.5 -41q-154 0 -268.5 69t-178.5 192h-4q-10 -29 -32.5 -65t-67.5 -84t-121 -80t-170 -32q-150 0 -252 85.5t-102 230.5zM276 301q0 -70 50.5 -118 t144.5 -48q121 0 197.5 103.5t76.5 228.5v31h-96q-373 0 -373 -197zM944 647h539q-4 125 -74 190.5t-172 65.5q-117 0 -195 -64.5t-98 -191.5z" /> -<glyph unicode="ç" horiz-adv-x="1122" d="M84 518q0 231 156.5 387t398.5 156q115 0 212 -38t136 -77l41 -37l-94 -139q-12 12 -36 32.5t-98.5 53.5t-152.5 33q-156 0 -258 -104.5t-102 -264.5t103.5 -266.5t262.5 -106.5q86 0 166 35t117 70l37 35l80 -146l-17 -16q-10 -10 -47 -38t-79 -49.5t-108.5 -41 t-137.5 -21.5l-17 -77q66 -8 107 -47t41 -103q0 -88 -60.5 -130t-148.5 -42l-113 14v119q41 -14 86 -14q98 0 98 63.5t-108 63.5l-37 -2l41 162q-209 29 -339 176t-130 360z" /> -<glyph unicode="è" horiz-adv-x="1136" d="M84 518q0 244 146.5 393.5t371.5 149.5q211 0 330 -137.5t119 -348.5l-7 -86h-755q8 -164 109.5 -253t246.5 -89q164 0 299 115l8 6l82 -145q-16 -16 -49 -41t-137.5 -66t-214.5 -41q-242 0 -395.5 155t-153.5 388zM295 639h553q-4 129 -75 196.5t-175 67.5 q-117 0 -200 -69.5t-103 -194.5zM330 1446h213l149 -260h-168z" /> -<glyph unicode="é" horiz-adv-x="1136" d="M84 518q0 244 146.5 393.5t371.5 149.5q211 0 330 -137.5t119 -348.5l-7 -86h-755q8 -164 109.5 -253t246.5 -89q164 0 299 115l8 6l82 -145q-16 -16 -49 -41t-137.5 -66t-214.5 -41q-242 0 -395.5 155t-153.5 388zM295 639h553q-4 129 -75 196.5t-175 67.5 q-117 0 -200 -69.5t-103 -194.5zM514 1186l150 260h213l-197 -260h-166z" /> -<glyph unicode="ê" horiz-adv-x="1136" d="M84 518q0 244 146.5 393.5t371.5 149.5q211 0 330 -137.5t119 -348.5l-7 -86h-755q8 -164 109.5 -253t246.5 -89q164 0 299 115l8 6l82 -145q-16 -16 -49 -41t-137.5 -66t-214.5 -41q-242 0 -395.5 155t-153.5 388zM295 639h553q-4 129 -75 196.5t-175 67.5 q-117 0 -200 -69.5t-103 -194.5zM317 1186l181 260h207l180 -260h-174l-109 164h-4l-106 -164h-175z" /> -<glyph unicode="ë" horiz-adv-x="1136" d="M84 518q0 244 146.5 393.5t371.5 149.5q211 0 330 -137.5t119 -348.5l-7 -86h-755q8 -164 109.5 -253t246.5 -89q164 0 299 115l8 6l82 -145q-16 -16 -49 -41t-137.5 -66t-214.5 -41q-242 0 -395.5 155t-153.5 388zM295 639h553q-4 129 -75 196.5t-175 67.5 q-117 0 -200 -69.5t-103 -194.5zM350 1239v207h164v-207h-164zM692 1239v207h164v-207h-164z" /> -<glyph unicode="ì" horiz-adv-x="509" d="M-18 1446h213l149 -260h-168zM156 0v1036h198v-1036h-198z" /> -<glyph unicode="í" horiz-adv-x="509" d="M156 0v1036h198v-1036h-198zM168 1186l149 260h213l-196 -260h-166z" /> -<glyph unicode="î" horiz-adv-x="509" d="M-27 1186l181 260h206l181 -260h-174l-109 164h-4l-107 -164h-174zM156 0v1036h198v-1036h-198z" /> -<glyph unicode="ï" horiz-adv-x="509" d="M4 1239v207h164v-207h-164zM156 0v1036h198v-1036h-198zM346 1239v207h164v-207h-164z" /> -<glyph unicode="ð" horiz-adv-x="1206" d="M88 481q0 193 130 333t355 140q158 -2 252 -86h4q-61 164 -223 273l-370 -164l-21 127l254 113q-125 63 -264 94l55 162q238 -53 424 -164l285 125l18 -125l-188 -86q295 -246 295 -660q0 -109 -30 -209t-89.5 -187t-163.5 -139.5t-238 -52.5q-223 0 -354 150.5 t-131 355.5zM289 477q0 -135 76.5 -232.5t212.5 -97.5q80 0 142 34t98 91.5t54.5 122t18.5 133.5q0 117 -79 192t-210 75q-150 0 -231.5 -93.5t-81.5 -224.5z" /> -<glyph unicode="ñ" horiz-adv-x="1234" d="M156 1036h192v-137l-4 -76h4q41 88 139.5 163t249.5 75q356 0 357 -397v-664h-199v618q0 125 -41 193t-156 68q-117 0 -206 -71t-121 -183q-16 -55 -17 -140v-485h-198v1036zM297 1188q0 260 209 260q59 0 104 -35t82 -69.5t72 -34.5q41 0 60.5 40t19.5 93h143 q0 -260 -209 -260q-59 0 -104 34.5t-82 69.5t-72 35q-80 0 -80 -133h-143z" /> -<glyph unicode="ò" horiz-adv-x="1277" d="M80 520.5q0 233.5 161.5 387t397 153.5t397.5 -153.5t162 -387t-163 -389.5t-396 -156t-396 156t-163 389.5zM283 520q0 -160 104.5 -266.5t251.5 -106.5q150 0 253 105.5t103 267.5q0 160 -103.5 264.5t-252.5 104.5q-147 0 -251.5 -104.5t-104.5 -264.5zM365 1446h213 l149 -260h-168z" /> -<glyph unicode="ó" horiz-adv-x="1277" d="M80 520.5q0 233.5 161.5 387t397 153.5t397.5 -153.5t162 -387t-163 -389.5t-396 -156t-396 156t-163 389.5zM283 520q0 -160 104.5 -266.5t251.5 -106.5q150 0 253 105.5t103 267.5q0 160 -103.5 264.5t-252.5 104.5q-147 0 -251.5 -104.5t-104.5 -264.5zM551 1186 l149 260h213l-196 -260h-166z" /> -<glyph unicode="ô" horiz-adv-x="1277" d="M80 520.5q0 233.5 161.5 387t397 153.5t397.5 -153.5t162 -387t-163 -389.5t-396 -156t-396 156t-163 389.5zM283 520q0 -160 104.5 -266.5t251.5 -106.5q150 0 253 105.5t103 267.5q0 160 -103.5 264.5t-252.5 104.5q-147 0 -251.5 -104.5t-104.5 -264.5zM356 1186 l181 260h206l181 -260h-174l-109 164h-4l-107 -164h-174z" /> -<glyph unicode="õ" horiz-adv-x="1277" d="M80 520.5q0 233.5 161.5 387t397 153.5t397.5 -153.5t162 -387t-163 -389.5t-396 -156t-396 156t-163 389.5zM283 520q0 -160 104.5 -266.5t251.5 -106.5q150 0 253 105.5t103 267.5q0 160 -103.5 264.5t-252.5 104.5q-147 0 -251.5 -104.5t-104.5 -264.5zM295 1188 q0 260 209 260q59 0 104 -35t82 -69.5t72 -34.5q41 0 60.5 40t19.5 93h143q0 -260 -209 -260q-59 0 -104 34.5t-82 69.5t-72 35q-80 0 -80 -133h-143z" /> -<glyph unicode="ö" horiz-adv-x="1277" d="M80 520.5q0 233.5 161.5 387t397 153.5t397.5 -153.5t162 -387t-163 -389.5t-396 -156t-396 156t-163 389.5zM283 520q0 -160 104.5 -266.5t251.5 -106.5q150 0 253 105.5t103 267.5q0 160 -103.5 264.5t-252.5 104.5q-147 0 -251.5 -104.5t-104.5 -264.5zM387 1239v207 h164v-207h-164zM729 1239v207h164v-207h-164z" /> -<glyph unicode="÷" horiz-adv-x="1300" d="M133 504v160h1034v-160h-1034zM553 90v186h192v-186h-192zM553 891v186h192v-186h-192z" /> -<glyph unicode="ø" horiz-adv-x="1277" d="M80 520q0 233 161.5 387t397.5 154q147 0 276 -68l82 113l97 -70l-80 -110q184 -158 184 -406q0 -233 -163 -389t-396 -156q-137 0 -262 60l-80 -113l-98 72l75 106q-194 158 -194 420zM283 520q0 -160 102 -266l426 592q-82 43 -172 43q-147 0 -251.5 -104.5 t-104.5 -264.5zM483 182q74 -35 156 -35q150 0 253 105.5t103 267.5q0 147 -92 250z" /> -<glyph unicode="ù" horiz-adv-x="1224" d="M141 373v663h199v-618q0 -125 40 -191.5t155 -66.5q152 0 243.5 114.5t91.5 276.5v485h199v-1036h-192v137l4 76h-4q-39 -90 -140.5 -164t-240.5 -74q-355 1 -355 398zM332 1446h213l149 -260h-168z" /> -<glyph unicode="ú" horiz-adv-x="1224" d="M141 373v663h199v-618q0 -125 40 -191.5t155 -66.5q152 0 243.5 114.5t91.5 276.5v485h199v-1036h-192v137l4 76h-4q-39 -90 -140.5 -164t-240.5 -74q-355 1 -355 398zM516 1186l150 260h213l-197 -260h-166z" /> -<glyph unicode="û" horiz-adv-x="1224" d="M141 373v663h199v-618q0 -125 40 -191.5t155 -66.5q152 0 243.5 114.5t91.5 276.5v485h199v-1036h-192v137l4 76h-4q-39 -90 -140.5 -164t-240.5 -74q-355 1 -355 398zM322 1186l180 260h207l180 -260h-174l-109 164h-4l-106 -164h-174z" /> -<glyph unicode="ü" horiz-adv-x="1224" d="M141 373v663h199v-618q0 -125 40 -191.5t155 -66.5q152 0 243.5 114.5t91.5 276.5v485h199v-1036h-192v137l4 76h-4q-39 -90 -140.5 -164t-240.5 -74q-355 1 -355 398zM354 1239v207h164v-207h-164zM696 1239v207h164v-207h-164z" /> -<glyph unicode="ý" horiz-adv-x="1044" d="M4 1036h223l260 -678l39 -125h4q16 70 35 123l252 680h215l-485 -1222q-47 -117 -136 -180.5t-200 -63.5q-51 0 -101.5 16.5t-74.5 32.5l-25 14l70 152q57 -43 121 -43q123 0 186 152l51 118zM440 1186l150 260h213l-197 -260h-166z" /> -<glyph unicode="þ" horiz-adv-x="1228" d="M156 -410v1856h198v-471l-2 -86h4q2 2 18.5 22.5t30 36t43 38t60.5 37.5t77 26.5t97 11.5q209 0 335 -151.5t126 -391t-130 -391.5t-337 -152q-66 0 -124 17.5t-93 43t-59.5 50.5t-34.5 41l-11 18h-4q4 -37 4 -90v-465h-198zM348 516q0 -162 81 -265.5t216 -103.5 q127 0 211 102.5t84 268.5q0 164 -80 267.5t-211 103.5q-129 0 -215 -92.5t-86 -280.5z" /> -<glyph unicode="ÿ" horiz-adv-x="1044" d="M4 1036h223l260 -678l39 -125h4q16 70 35 123l252 680h215l-485 -1222q-47 -117 -136 -180.5t-200 -63.5q-51 0 -101.5 16.5t-74.5 32.5l-25 14l70 152q57 -43 121 -43q123 0 186 152l51 118zM276 1239v207h164v-207h-164zM618 1239v207h164v-207h-164z" /> -<glyph unicode="Œ" horiz-adv-x="1966" d="M98 725q0 313 214 526t534 213q53 0 136 -9t116 -9h733v-176h-639v-453h520v-176h-520v-465h676v-176h-768q-33 0 -117 -9t-137 -9q-317 0 -532.5 214t-215.5 529zM307 725q0 -242 151.5 -404.5t387.5 -162.5q37 0 72.5 3t54.5 7l18 4v1102q-63 16 -145 16 q-236 0 -387.5 -162.5t-151.5 -402.5z" /> -<glyph unicode="œ" horiz-adv-x="2048" d="M82 516q0 240 160.5 392.5t392.5 152.5q301 0 448 -246h4q131 246 426 246q211 0 330 -137.5t119 -348.5l-6 -86h-756q12 -164 112.5 -253t243.5 -89q164 0 299 115l9 6l82 -145q-16 -16 -49 -41t-137.5 -66t-215.5 -41q-313 0 -452 252h-5q-145 -252 -452 -252 q-231 0 -392 150.5t-161 390.5zM285 516q0 -164 102 -266.5t251.5 -102.5t253 103.5t103.5 271.5q0 162 -104.5 264.5t-251.5 102.5t-250.5 -103.5t-103.5 -269.5zM1206 639h553q-4 127 -73.5 195.5t-174.5 68.5q-119 0 -202 -69.5t-103 -194.5z" /> -<glyph unicode="Ÿ" horiz-adv-x="1204" d="M16 1446h230l268 -475l88 -183h4q43 100 88 183l264 475h230l-483 -834v-612h-203v612zM344 1599v207h164v-207h-164zM686 1599v207h164v-207h-164z" /> -<glyph unicode="ˆ" horiz-adv-x="1021" d="M227 1546l181 260h206l181 -260h-174l-109 164h-4l-107 -164h-174z" /> -<glyph unicode="˜" horiz-adv-x="1021" d="M166 1548q0 260 209 260q59 0 104 -34.5t82 -69.5t72 -35q41 0 60.5 40t19.5 93h143q0 -260 -209 -260q-59 0 -104 35t-82 69.5t-72 34.5q-80 0 -80 -133h-143z" /> -<glyph unicode="–" horiz-adv-x="1445" d="M184 504v160h1078v-160h-1078z" /> -<glyph unicode="—" horiz-adv-x="1855" d="M184 504v160h1487v-160h-1487z" /> -<glyph unicode="‘" horiz-adv-x="464" d="M100 1069l136 399h145l-88 -399h-193z" /> -<glyph unicode="’" horiz-adv-x="448" d="M104 1071l89 399h192l-133 -399h-148z" /> -<glyph unicode="‚" horiz-adv-x="499" d="M86 -184l88 399h186l-133 -399h-141z" /> -<glyph unicode="“" horiz-adv-x="755" d="M100 1069l136 399h147l-88 -399h-195zM389 1069l135 399h148l-88 -399h-195z" /> -<glyph unicode="”" horiz-adv-x="737" d="M104 1071l89 399h194l-135 -399h-148zM393 1071l88 399h195l-133 -399h-150z" /> -<glyph unicode="„" horiz-adv-x="784" d="M86 -184l88 399h186l-133 -399h-141zM369 -184l88 399h188l-133 -399h-143z" /> -<glyph unicode="•" horiz-adv-x="841" d="M104 596q0 133 93.5 225t224.5 92t223 -93t92 -224t-92 -224t-223 -93t-224.5 92t-93.5 225z" /> -<glyph unicode="…" horiz-adv-x="1576" d="M156 0v211h202v-211h-202zM686 0v211h205v-211h-205zM1219 0v211h202v-211h-202z" /> -<glyph unicode="‹" horiz-adv-x="727" d="M90 578l336 421h199l-336 -421l336 -420h-199z" /> -<glyph unicode="›" horiz-adv-x="727" d="M102 158l336 420l-336 421h199l336 -421l-336 -420h-199z" /> -<glyph unicode="€" horiz-adv-x="1210" d="M78 528v129h112q-8 82 0 148h-112v131h137q61 236 251.5 385t440.5 149q51 0 102.5 -6t77.5 -12l27 -6l-49 -186q-76 23 -162 22q-170 0 -296 -94t-177 -252h576l-27 -131h-578q-12 -68 -2 -148h553l-26 -129h-492q47 -162 177 -261t300 -99q45 0 92.5 6t69.5 14l25 7 l39 -185q-98 -35 -230 -35q-258 0 -447.5 153t-246.5 400h-135z" /> -<glyph unicode="™" horiz-adv-x="1925" d="M47 1309v137h778v-137h-311v-764h-156v764h-311zM891 545l72 901h141l213 -471l29 -86h4q12 49 26 86l213 471h144l69 -901h-153l-43 538l2 62h-4l-195 -434h-125l-194 434h-5l2 -62l-43 -538h-153z" /> -<glyph unicode="" horiz-adv-x="1035" d="M0 1035h1035v-1035h-1035v1035z" /> -<glyph unicode="fi" horiz-adv-x="1198" d="M82 877v159h129v35q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5t-59 -67.5t-22.5 -115v-31h634v-1036h-198v877h-436v-877h-197v877h-129zM842 1243v203h200v-203h-200z" /> -<glyph unicode="fl" horiz-adv-x="1230" d="M82 862v160h129v49q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5t-59 -67.5t-22.5 -115v-45h245v-160h-245v-862h-197v862h-129zM831 283v1163h199v-1129q0 -86 28.5 -116.5t82.5 -30.5l35 2v-176q-31 -4 -66 -4 q-279 0 -279 291z" /> -<glyph unicode="ffi" horiz-adv-x="1886" d="M82 877v159h129v35q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5t-59 -67.5t-22.5 -115v-31h491v35q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5 t-59 -67.5t-22.5 -115v-31h635v-1036h-199v877h-436v-877h-197v877h-491v-877h-197v877h-129zM1530 1243v203h201v-203h-201z" /> -<glyph unicode="ffl" horiz-adv-x="1918" d="M82 877v159h129v35q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5t-59 -67.5t-22.5 -115v-31h491v35q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5 t-59 -67.5t-22.5 -115v-31h245v-159h-245v-877h-197v877h-491v-877h-197v877h-129zM1520 283v1163h198v-1129q0 -86 29 -116.5t82 -30.5l35 2v-176q-31 -4 -66 -4q-278 0 -278 291z" /> -</font> -</defs></svg>
\ No newline at end of file diff --git a/web/cobrands/stevenage/fonts/MuseoSans_500-webfont.ttf b/web/cobrands/stevenage/fonts/MuseoSans_500-webfont.ttf Binary files differdeleted file mode 100755 index d23f991ce..000000000 --- a/web/cobrands/stevenage/fonts/MuseoSans_500-webfont.ttf +++ /dev/null diff --git a/web/cobrands/stevenage/fonts/MuseoSans_500-webfont.woff b/web/cobrands/stevenage/fonts/MuseoSans_500-webfont.woff Binary files differdeleted file mode 100755 index c1f85a061..000000000 --- a/web/cobrands/stevenage/fonts/MuseoSans_500-webfont.woff +++ /dev/null diff --git a/web/cobrands/stevenage/fonts/MuseoSans_500_Italic-webfont.eot b/web/cobrands/stevenage/fonts/MuseoSans_500_Italic-webfont.eot Binary files differdeleted file mode 100755 index e60c7e02e..000000000 --- a/web/cobrands/stevenage/fonts/MuseoSans_500_Italic-webfont.eot +++ /dev/null diff --git a/web/cobrands/stevenage/fonts/MuseoSans_500_Italic-webfont.svg b/web/cobrands/stevenage/fonts/MuseoSans_500_Italic-webfont.svg deleted file mode 100755 index 28df57c2f..000000000 --- a/web/cobrands/stevenage/fonts/MuseoSans_500_Italic-webfont.svg +++ /dev/null @@ -1,227 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > -<svg xmlns="http://www.w3.org/2000/svg"> -<metadata> -This is a custom SVG webfont generated by Fontspring. -</metadata> -<defs> -<font id="MuseoSans500Italic" horiz-adv-x="1073" > -<font-face units-per-em="2048" ascent="1536" descent="-512" /> -<missing-glyph horiz-adv-x="526" /> -<glyph unicode=" " horiz-adv-x="526" /> -<glyph unicode="	" horiz-adv-x="526" /> -<glyph unicode=" " horiz-adv-x="526" /> -<glyph unicode="!" horiz-adv-x="643" d="M100 0l41 201h205l-39 -201h-207zM190 397l191 1049h207l-219 -1049h-179z" /> -<glyph unicode=""" horiz-adv-x="694" d="M217 1085l74 385h155l-73 -385h-156zM504 1085l76 385h155l-76 -385h-155z" /> -<glyph unicode="#" horiz-adv-x="1462" d="M43 391l53 152h264l129 344h-262l56 149h260l151 410h170l-151 -410h319l152 410h170l-152 -410h262l-55 -149h-262l-129 -344h262l-55 -152h-262l-144 -391h-170l144 391h-318l-143 -391h-170l143 391h-262zM530 543h318l129 344h-318z" /> -<glyph unicode="$" horiz-adv-x="1159" d="M27 166l129 143q14 -16 40.5 -40.5t118 -64.5t191.5 -40q115 0 206 68.5t91 181.5q0 70 -60.5 124t-145.5 96t-171 90t-146.5 128t-60.5 186q0 168 135 291t330 139l37 189h143l-37 -193q201 -25 316 -135l6 -6l-115 -149q-12 12 -36.5 30.5t-103.5 48t-163 29.5 q-125 0 -216 -73.5t-91 -170.5q0 -63 60.5 -114.5t146.5 -93.5t171 -90t145.5 -132t60.5 -194q0 -172 -134.5 -299t-334.5 -138l-37 -186h-144l35 193q-221 31 -354 168z" /> -<glyph unicode="%" horiz-adv-x="1570" d="M25 0l1366 1446h202l-1366 -1446h-202zM199 1133q0 129 109.5 233t246.5 104q123 0 199.5 -75.5t76.5 -194.5q0 -131 -109.5 -233.5t-246.5 -102.5q-125 0 -200.5 74t-75.5 195zM360 1137q0 -53 35 -87t94 -34q72 0 126.5 53t54.5 127q0 55 -36 90t-93 35 q-70 0 -125.5 -55t-55.5 -129zM784 244q0 129 108.5 233.5t246.5 104.5q123 0 199.5 -76t76.5 -195q0 -131 -109.5 -233.5t-244.5 -102.5q-125 0 -201 74t-76 195zM944 248q0 -53 36 -87t95 -34q70 0 125 54.5t55 125.5q0 55 -35.5 90t-93.5 35q-70 0 -126 -56t-56 -128z " /> -<glyph unicode="&" horiz-adv-x="1394" d="M63 356q0 139 96.5 260t243.5 162v4q-6 2 -15 7.5t-33.5 25t-43 44t-34 70.5t-15.5 101q0 201 147.5 320.5t356.5 119.5q43 0 91 -7t73 -13l26 -8l-79 -156q-57 12 -107 12q-123 0 -214 -74.5t-91 -197.5q0 -176 227 -176h269l38 197h199l-37 -197h191l-35 -176h-191 l-39 -193q-100 -506 -565 -506q-215 0 -337 105.5t-122 275.5zM276 369q0 -92 67 -149.5t183 -57.5q299 0 365 327l37 185h-277q-154 0 -264.5 -79t-110.5 -226z" /> -<glyph unicode="'" horiz-adv-x="409" d="M217 1085l74 385h160l-76 -385h-158z" /> -<glyph unicode="(" horiz-adv-x="612" d="M131 354q0 655 424 1151h180q-426 -532 -426 -1155q0 -287 94 -545h-165q-107 268 -107 549z" /> -<glyph unicode=")" horiz-adv-x="614" d="M-109 -195q426 537 426 1156q0 287 -94 544h166q106 -264 107 -549q0 -651 -424 -1151h-181z" /> -<glyph unicode="*" horiz-adv-x="948" d="M160 1090l88 167l252 -102l41 291h186l-74 -291l295 102l25 -174l-301 -79l-2 -5l135 -221l-156 -106l-117 243h-4l-204 -241l-134 108l228 230v4z" /> -<glyph unicode="+" horiz-adv-x="1376" d="M127 504l31 160h456l101 503h168l-101 -503h457l-29 -160h-456l-99 -504h-168l99 504h-459z" /> -<glyph unicode="," horiz-adv-x="528" d="M-100 -207l209 422h210l-258 -422h-161z" /> -<glyph unicode="-" horiz-adv-x="956" d="M156 496l32 176h598l-32 -176h-598z" /> -<glyph unicode="." horiz-adv-x="512" d="M35 0l41 215h213l-41 -215h-213z" /> -<glyph unicode="/" horiz-adv-x="825" d="M-68 -86l832 1610h188l-833 -1610h-187z" /> -<glyph unicode="0" horiz-adv-x="1288" d="M123 453q0 119 20.5 248.5t69.5 269t122 249t188.5 180t256.5 70.5q428 0 428 -477q0 -119 -20.5 -249t-69.5 -269t-121.5 -248.5t-188.5 -180.5t-259 -71q-426 1 -426 478zM332 457q0 -295 225 -295q92 0 169 58.5t126 148.5t83 202.5t48 217t14 196.5q0 299 -223 299 q-111 0 -200 -83t-139 -213t-76.5 -267t-26.5 -264z" /> -<glyph unicode="1" horiz-adv-x="995" d="M2 0l31 176h319l180 918l19 88h-4q-23 -33 -84 -84l-158 -129l-106 139l417 338h183l-248 -1270h313l-33 -176h-829z" /> -<glyph unicode="2" horiz-adv-x="1171" d="M10 0q2 129 52.5 237.5t130 185.5t176 143.5t192.5 125t175 115.5t128 129t49 151q0 88 -59 140.5t-158 52.5q-55 0 -109.5 -19.5t-92 -46t-68.5 -53t-45 -47.5l-16 -18l-144 112q8 10 22.5 27.5t64.5 64t104.5 80t137.5 62t169 28.5q184 0 297.5 -99t113.5 -263 q0 -139 -81.5 -255t-201.5 -197t-243 -151.5t-220 -154.5t-118 -174h707l-33 -176h-930z" /> -<glyph unicode="3" horiz-adv-x="1159" d="M-8 172l127 141q4 -6 12 -15t40 -34.5t66.5 -45t94 -35t123.5 -15.5q137 0 243.5 92t106.5 223q0 106 -82 160.5t-211 54.5h-104l-25 109l379 371l108 94v4q-43 -6 -122 -6h-478l35 176h864l-26 -129l-477 -459q57 -6 113.5 -27.5t110.5 -62.5t88 -112.5t34 -163.5 q0 -207 -160 -362t-393 -155q-92 0 -173 20.5t-132.5 49.5t-90 57.5t-55.5 49.5z" /> -<glyph unicode="4" horiz-adv-x="1243" d="M20 387l25 127l832 932h249l-174 -887h197l-33 -172h-196l-76 -387h-199l74 387h-699zM295 559h459l102 526l35 144h-4q-47 -66 -94 -119l-498 -549v-2z" /> -<glyph unicode="5" horiz-adv-x="1159" d="M16 176l131 137q4 -6 11.5 -15t35 -34.5t59.5 -45t85 -35t113 -15.5q143 0 258.5 101.5t115.5 248.5q0 106 -76.5 173t-201.5 67q-66 0 -130.5 -18.5t-97.5 -34.5l-30 -19l-115 45l213 715h735l-35 -176h-555l-92 -301l-24 -76h4q82 41 186 41q188 0 309 -114.5 t121 -291.5q0 -229 -175 -391t-408 -162q-264 0 -408 164z" /> -<glyph unicode="6" horiz-adv-x="1228" d="M113 504q0 143 54 307t150.5 313.5t253 247.5t340.5 98q84 0 158 -15t107 -30l30 -16l-92 -166q-86 41 -201 41q-186 0 -325 -142.5t-205 -342.5h4q55 61 145.5 99t178.5 38q184 0 289.5 -109.5t105.5 -287.5q0 -215 -149.5 -389.5t-381.5 -174.5q-211 0 -336.5 142.5 t-125.5 386.5zM317 485q0 -131 71 -227t185 -96q139 0 234.5 108.5t95.5 261.5q0 106 -64.5 169t-183.5 63q-121 0 -229.5 -81t-108.5 -198z" /> -<glyph unicode="7" horiz-adv-x="1085" d="M39 0l784 1139q59 84 111 133v4q-33 -6 -105 -6h-632l34 176h967l-27 -139l-907 -1307h-225z" /> -<glyph unicode="8" horiz-adv-x="1249" d="M76 369q0 86 40 166.5t102.5 139t100 88.5t70.5 48q-123 102 -123 240q0 166 138.5 292.5t363.5 126.5q195 0 306.5 -90t111.5 -250q0 -72 -32 -147.5t-81 -136t-80.5 -93t-58.5 -55.5q154 -106 153 -260q0 -188 -160.5 -325.5t-391.5 -137.5q-209 0 -334 107t-125 287z M289 379q0 -100 71.5 -160.5t178.5 -60.5q133 0 236.5 77.5t103.5 200.5q0 39 -17.5 71t-60.5 63.5t-72 48t-100 52.5l-97 48q-33 -18 -67.5 -45t-77.5 -71t-70.5 -102.5t-27.5 -121.5zM471 1053q0 -29 9 -54.5t30.5 -49t39 -40t54.5 -37t56.5 -31t64.5 -32t61 -29.5 q193 166 193 336q0 80 -58.5 126t-160.5 46q-127 0 -208 -68.5t-81 -166.5z" /> -<glyph unicode="9" horiz-adv-x="1230" d="M66 37l92 166q88 -41 202 -41q186 0 324.5 142t204.5 343h-4q-45 -55 -135.5 -95t-186.5 -40q-186 0 -290.5 108.5t-104.5 286.5q0 215 150.5 389t381.5 174q211 0 336 -142t125 -386q0 -113 -32.5 -242t-101.5 -257t-161 -232.5t-224 -170t-280 -65.5q-185 1 -296 62z M369 913q0 -104 64.5 -167.5t180.5 -63.5q121 0 230.5 82t109.5 199q0 131 -69.5 226t-186.5 95q-139 0 -234 -108.5t-95 -262.5z" /> -<glyph unicode=":" horiz-adv-x="595" d="M72 0l41 215h215l-43 -215h-213zM231 821l43 215h213l-41 -215h-215z" /> -<glyph unicode=";" horiz-adv-x="606" d="M-74 -207l209 422h211l-256 -422h-164zM252 821l41 215h209l-41 -215h-209z" /> -<glyph unicode="<" horiz-adv-x="1171" d="M59 516v135l955 426v-182l-733 -309v-4l733 -310v-182z" /> -<glyph unicode="=" horiz-adv-x="1376" d="M190 309v160h977v-160h-977zM190 696v160h977v-160h-977z" /> -<glyph unicode=">" horiz-adv-x="1165" d="M141 90v182l731 310v4l-731 309v182l955 -426v-135z" /> -<glyph unicode="?" horiz-adv-x="989" d="M168 0l41 201h205l-39 -201h-207zM199 1356q18 12 51 32.5t128 53.5t185 33q166 0 273.5 -89.5t107.5 -238.5q0 -100 -45 -184t-111.5 -140.5t-135 -105.5t-124 -109.5t-67.5 -126.5l-19 -84h-192l18 97q18 90 72.5 165.5t119 126t127 99.5t104.5 108.5t42 128.5 q0 74 -53 120t-143 46q-131 -2 -250 -86z" /> -<glyph unicode="@" horiz-adv-x="1658" d="M84 358q0 176 73.5 341t195.5 286t285 193.5t333 72.5q252 0 364.5 -95t112.5 -255q0 -49 -12 -110l-103 -535h146l-29 -150h-537q-174 0 -275 95.5t-101 240.5q0 170 140 302.5t343 132.5h242q4 20 4 32q0 80 -77 129t-216 49q-274 0 -482 -220t-208 -498 q0 -205 129 -336t352 -131l-31 -158q-283 0 -466 174t-183 440zM737 446q0 -84 54.5 -137t144.5 -53h205l94 483h-201q-121 0 -209 -88t-88 -205z" /> -<glyph unicode="A" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205z" /> -<glyph unicode="B" horiz-adv-x="1302" d="M78 0l282 1446h465q125 0 197 -27q92 -35 143.5 -109.5t51.5 -179.5q0 -123 -67 -221t-177 -145v-4q84 -31 131 -106.5t47 -178.5q0 -156 -84 -270.5t-221 -167.5q-94 -37 -213 -37h-555zM315 176h326q78 0 135 29q76 37 121 109.5t45 164.5q0 88 -54 139.5t-153 51.5 h-323zM442 838h306q111 0 186.5 77.5t75.5 192.5q0 76 -46 119t-135 43h-301z" /> -<glyph unicode="C" horiz-adv-x="1480" d="M111 602q0 231 118.5 433t316 318.5t421.5 116.5q102 0 193 -19t148.5 -48t100.5 -57.5t61 -47.5l19 -20l-121 -139q-16 16 -47 40.5t-133.5 64.5t-214.5 40q-270 0 -462 -201.5t-192 -470.5q0 -197 118 -323.5t323 -126.5q236 0 452 164l29 22l88 -160q-10 -8 -28.5 -22 t-78 -51t-123 -66t-159.5 -51.5t-190 -22.5q-293 0 -466 174t-173 453z" /> -<glyph unicode="D" horiz-adv-x="1513" d="M80 0l280 1446h447q299 0 469 -147.5t170 -415.5q0 -242 -107.5 -442.5t-304 -320.5t-442.5 -120h-512zM315 176h263q289 0 475 197.5t186 492.5q0 195 -119 299.5t-327 104.5h-265z" /> -<glyph unicode="E" horiz-adv-x="1171" d="M78 0l284 1446h838l-35 -176h-637l-88 -453h518l-34 -176h-518l-91 -465h672l-33 -176h-876z" /> -<glyph unicode="F" horiz-adv-x="1069" d="M78 0l282 1446h795l-35 -176h-594l-92 -475h504l-33 -177h-506l-120 -618h-201z" /> -<glyph unicode="G" horiz-adv-x="1556" d="M111 590q0 358 258 619t610 261q299 0 489 -147l29 -25l-123 -141q-6 6 -17 14.5t-49 30t-80 38.5t-108.5 30.5t-136.5 13.5q-281 0 -471 -205t-190 -479q0 -201 119.5 -319.5t312.5 -118.5q219 0 422 168l26 22l39 199h-233l32 176h420l-141 -727h-176l16 90l15 62h-5 q-6 -6 -19 -18.5t-58 -43.5t-94.5 -53.5t-125 -42t-153.5 -19.5q-260 0 -434 170.5t-174 444.5z" /> -<glyph unicode="H" horiz-adv-x="1546" d="M78 0l282 1446h201l-125 -637h752l125 637h200l-282 -1446h-201l123 635h-752l-122 -635h-201z" /> -<glyph unicode="I" horiz-adv-x="595" d="M78 0l282 1446h201l-280 -1446h-203z" /> -<glyph unicode="J" horiz-adv-x="1089" d="M10 317q0 55 10 107l13 63h200l-10 -59q-8 -53 -8 -82q0 -184 182 -184q94 0 171 62.5t104 193.5l166 852h-363l35 176h563l-203 -1047q-29 -145 -105.5 -243.5t-169.5 -139.5t-202 -41q-164 0 -273.5 87t-109.5 255z" /> -<glyph unicode="K" horiz-adv-x="1275" d="M78 0l282 1446h201l-119 -608h207l492 608h235l-565 -694v-4l299 -748h-215l-258 664h-229l-129 -664h-201z" /> -<glyph unicode="L" horiz-adv-x="1071" d="M78 0l282 1446h203l-248 -1270h648l-37 -176h-848z" /> -<glyph unicode="M" horiz-adv-x="1771" d="M31 0l395 1446h211l180 -782l33 -195h4q61 113 111 195l485 782h217l-166 -1446h-198l108 911q10 88 37 213h-4q-70 -135 -119 -213l-414 -651h-182l-162 651l-37 217h-4q-18 -129 -43 -217l-250 -911h-202z" /> -<glyph unicode="N" horiz-adv-x="1536" d="M78 0l282 1446h187l463 -940q37 -76 77 -209h5q10 129 26 209l182 940h203l-282 -1446h-187l-463 938q-39 80 -79 211h-5q-10 -129 -26 -211l-182 -938h-201z" /> -<glyph unicode="O" horiz-adv-x="1677" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q289 0 467 -172t178 -442q0 -231 -125 -437t-324.5 -325t-414.5 -119q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 123 -326.5t316 -125.5q250 0 451.5 203.5t201.5 480.5q0 195 -122 316.5t-316 121.5 q-252 0 -453 -199t-201 -471z" /> -<glyph unicode="P" horiz-adv-x="1245" d="M78 0l282 1446h496q137 0 225 -47q86 -45 134.5 -129t48.5 -193q0 -170 -87 -304t-229 -195q-100 -43 -215 -43h-348l-104 -535h-203zM418 711h295q88 0 153 32q86 41 137.5 125t51.5 195q0 98 -60.5 152.5t-173.5 54.5h-293z" /> -<glyph unicode="Q" horiz-adv-x="1699" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q287 0 465 -172t178 -442q0 -350 -268 -614l133 -160l-129 -119l-136 170q-209 -158 -462 -158q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 122 -326.5t317 -125.5q178 0 342 114l-140 170l129 119l138 -174 q182 199 182 455q0 195 -122 316.5t-314 121.5q-252 0 -453 -199t-201 -471z" /> -<glyph unicode="R" horiz-adv-x="1306" d="M78 0l282 1446h492q125 0 205 -37q184 -86 184 -303q0 -164 -94 -298t-254 -179v-4q10 -20 27 -66l200 -559h-215l-198 575h-316l-110 -575h-203zM426 752h285q135 0 228 90t93 235q0 90 -57 141.5t-158 51.5h-291z" /> -<glyph unicode="S" horiz-adv-x="1120" d="M6 166l127 143q4 -6 14.5 -15t44 -35t71.5 -45t98.5 -34.5t123.5 -15.5q115 0 205 68.5t90 181.5q0 70 -60.5 124t-145.5 96t-170 90t-145 128t-60 186q0 180 151.5 306t362.5 126q127 0 230.5 -36.5t143.5 -73.5l41 -37l-114 -149q-12 12 -37 30.5t-103.5 48 t-162.5 29.5q-125 0 -217.5 -73.5t-92.5 -170.5q0 -63 60.5 -114.5t146.5 -93.5t172 -90t146.5 -132t60.5 -194q0 -178 -145.5 -308.5t-360.5 -130.5q-272 0 -444 160z" /> -<glyph unicode="T" horiz-adv-x="1206" d="M131 1270l33 176h1194l-33 -176h-498l-245 -1270h-203l248 1270h-496z" /> -<glyph unicode="U" horiz-adv-x="1488" d="M147 403q0 55 13 117l180 926h201l-181 -932q-8 -39 -8 -86q0 -127 80 -196.5t225 -69.5q168 0 285 94t150 262l182 928h201l-185 -944q-47 -242 -219 -384.5t-418 -142.5q-225 0 -365.5 113.5t-140.5 314.5z" /> -<glyph unicode="V" horiz-adv-x="1290" d="M166 1446h211l160 -1022q12 -78 16 -199h4q53 121 94 199l559 1022h228l-809 -1446h-217z" /> -<glyph unicode="W" horiz-adv-x="1951" d="M225 1446h207l53 -1061v-154h4q27 74 64 154l500 1061h184l63 -1061v-154h5q27 78 59 154l461 1061h221l-651 -1446h-238l-63 938v205h-4q-43 -111 -86 -203l-449 -940h-233z" /> -<glyph unicode="X" horiz-adv-x="1239" d="M-74 0l598 754l-291 692h220l153 -385l62 -172h4q55 88 119 168l303 389h239l-571 -709l317 -737h-215l-182 438l-59 166h-5q-55 -82 -116 -162l-346 -442h-230z" /> -<glyph unicode="Y" horiz-adv-x="1185" d="M164 1446h217l174 -475q29 -80 53 -183h4q61 98 123 181l355 477h243l-651 -840l-119 -606h-201l121 612z" /> -<glyph unicode="Z" horiz-adv-x="1232" d="M-37 0l27 135l874 1004q33 37 66 69l49 49l16 15v4q-37 -6 -106 -6h-643l35 176h1013l-26 -133l-877 -1006q-33 -37 -65.5 -69.5t-49.5 -47.5l-16 -14v-4q37 4 107 4h686l-33 -176h-1057z" /> -<glyph unicode="[" horiz-adv-x="612" d="M43 -195l332 1700h340l-31 -149h-166l-270 -1399h166l-31 -152h-340z" /> -<glyph unicode="\" horiz-adv-x="806" d="M229 1524h168l207 -1610h-168z" /> -<glyph unicode="]" horiz-adv-x="602" d="M-94 -195l31 152h163l271 1399h-164l29 149h339l-329 -1700h-340z" /> -<glyph unicode="^" horiz-adv-x="1255" d="M23 506l409 940h129l408 -940h-178l-295 721l-293 -721h-180z" /> -<glyph unicode="_" horiz-adv-x="1204" d="M-96 -160l28 160h1102l-30 -160h-1100z" /> -<glyph unicode="`" horiz-adv-x="1021" d="M248 1806h205l96 -260h-158z" /> -<glyph unicode="a" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228z" /> -<glyph unicode="b" horiz-adv-x="1226" d="M35 0l280 1446h199l-90 -469l-27 -94h4q55 80 149.5 129t194.5 49q184 0 287 -115t103 -311q0 -285 -171 -472.5t-397 -187.5q-109 0 -193.5 49.5t-121.5 139.5h-4q0 -39 -8 -84l-17 -80h-188zM317 410q0 -115 58.5 -189t173.5 -74q145 0 264 131.5t119 342.5 q0 125 -62.5 195.5t-171.5 70.5q-158 0 -269.5 -143.5t-111.5 -333.5z" /> -<glyph unicode="c" horiz-adv-x="1118" d="M53 426q0 262 190.5 448.5t448.5 186.5q236 0 373 -131l18 -19l-110 -129q-10 12 -31.5 29.5t-92.5 47.5t-147 30q-178 0 -312 -132t-134 -317q0 -131 83 -212t220 -81q86 0 173 35t132 70l43 35l56 -158q-18 -16 -53.5 -42t-146 -69t-222.5 -43q-223 0 -355.5 125 t-132.5 326z" /> -<glyph unicode="d" horiz-adv-x="1228" d="M55 399q0 287 171 474.5t403 187.5q100 0 184 -44t119 -130h4q0 39 8 76l94 483h199l-281 -1446h-190l20 98l19 76h-4q-57 -86 -149.5 -142.5t-205.5 -56.5q-184 0 -287.5 113.5t-103.5 310.5zM258 414q0 -125 63.5 -196t172.5 -71q158 0 268 146.5t110 331.5 q0 115 -58 188.5t-173 73.5q-145 0 -264 -131t-119 -342z" /> -<glyph unicode="e" horiz-adv-x="1128" d="M55 418q0 262 173 452.5t429 190.5q195 0 295.5 -104.5t100.5 -278.5q0 -37 -8.5 -84t-16.5 -76l-8 -29h-756q-6 -31 -6 -61q0 -121 78 -201t217 -80q80 0 162 31t125 60l43 30l57 -157q-18 -14 -53 -37t-139.5 -61t-202.5 -38q-223 0 -356.5 123t-133.5 320zM297 639 h553q4 23 4 55q0 100 -55.5 154.5t-145.5 54.5q-115 0 -212 -71.5t-144 -192.5z" /> -<glyph unicode="f" horiz-adv-x="686" d="M92 0l168 864h-129l31 162h129l10 49q18 96 60 169t89.5 112t107.5 63.5t104.5 30.5t87.5 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-9 -41h244l-31 -162h-243l-168 -864h-199z" /> -<glyph unicode="g" horiz-adv-x="1210" d="M-2 -338l86 148q113 -68 276 -68q145 0 250 71.5t133 219.5l17 76l18 71h-2q-123 -168 -319 -168q-186 0 -291 116t-105 304q0 150 61.5 291t189.5 239.5t296 98.5q248 0 316 -164h4q0 23 4 43l18 96h189l-195 -1007q-47 -238 -206.5 -348.5t-366.5 -110.5t-373 92z M264 446q0 -123 62.5 -192.5t179.5 -69.5q166 0 261 151.5t95 330.5q0 223 -237 223q-164 0 -262.5 -133.5t-98.5 -309.5z" /> -<glyph unicode="h" horiz-adv-x="1230" d="M35 0l280 1446h199l-102 -531l-23 -92h4q49 88 164 163t254 75q143 0 224 -68.5t81 -206.5q0 -55 -16 -131l-127 -655h-199l119 612q14 76 14 117q0 150 -153 150q-152 0 -275 -120t-153 -286l-93 -473h-198z" /> -<glyph unicode="i" horiz-adv-x="507" d="M35 0l203 1036h198l-203 -1036h-198zM274 1243l39 203h205l-41 -203h-203z" /> -<glyph unicode="j" horiz-adv-x="507" d="M-311 -418l32 170q18 -2 46 -2q35 0 68.5 8.5t76.5 28.5t74.5 69.5t46.5 120.5l205 1059h198l-209 -1069q-18 -98 -60 -173t-88 -114.5t-105.5 -64.5t-102.5 -31t-88 -6zM274 1243l39 203h205l-39 -203h-205z" /> -<glyph unicode="k" d="M35 0l282 1446h199l-156 -789h142l358 379h240l-443 -465v-4l269 -567h-215l-219 485h-164l-95 -485h-198z" /> -<glyph unicode="l" horiz-adv-x="540" d="M72 209q0 33 10 88l223 1149h199l-215 -1114q-10 -47 -10 -78q0 -84 92 -84l32 2l-36 -176q-29 -4 -60 -4q-98 0 -166.5 49t-68.5 168z" /> -<glyph unicode="m" horiz-adv-x="1867" d="M37 0l201 1036h194l-26 -133l-25 -86h4q57 100 167 172t230 72q250 0 273 -236h4q61 100 171.5 168t231.5 68q141 0 216 -68.5t75 -206.5q0 -57 -16 -139l-125 -647h-199l121 616q12 68 12 113q0 152 -147 152q-137 0 -244.5 -124t-138.5 -284l-92 -473h-197l119 616 q12 68 12 117q0 147 -143 148q-135 0 -246 -124t-141 -286l-92 -471h-199z" /> -<glyph unicode="n" horiz-adv-x="1232" d="M37 0l201 1036h194l-22 -121l-29 -98h4q49 90 168 167t260 77q143 0 223 -68.5t80 -206.5q0 -49 -14 -131l-127 -655h-199l119 612q14 76 14 117q0 150 -153.5 150t-275.5 -119t-154 -287l-90 -473h-199z" /> -<glyph unicode="o" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q217 0 354.5 -126t137.5 -327q0 -262 -195.5 -447.5t-443.5 -185.5q-219 0 -356.5 127t-137.5 330zM256 440q0 -131 82 -212t211 -81q166 0 300 132.5t134 318.5q0 129 -82 210t-209 81q-170 0 -303 -131.5t-133 -317.5z" /> -<glyph unicode="p" horiz-adv-x="1226" d="M-43 -410l281 1446h184l-16 -88l-23 -82h4q57 86 150.5 140.5t210.5 54.5q184 0 286.5 -115t102.5 -311q0 -285 -170 -472.5t-394 -187.5q-106 0 -189 46.5t-120 134.5h-4q-4 -43 -14 -97l-90 -469h-199zM319 414q0 -117 59.5 -192t172.5 -75q145 0 264 131.5t119 342.5 q0 125 -62.5 195.5t-171.5 70.5q-156 0 -268.5 -144.5t-112.5 -328.5z" /> -<glyph unicode="q" horiz-adv-x="1228" d="M55 397q0 287 171 475.5t403 188.5q233 0 309 -180h4q2 31 10 71l15 84h190l-280 -1446h-199l90 473l27 97h-4q-49 -76 -139.5 -130.5t-207.5 -54.5q-184 0 -286.5 113.5t-102.5 308.5zM258 414q0 -125 63.5 -196t172.5 -71q158 0 268 146.5t110 331.5q0 115 -58 188.5 t-173 73.5q-145 0 -264 -131t-119 -342z" /> -<glyph unicode="r" horiz-adv-x="765" d="M37 0l201 1036h192l-37 -180l-20 -84h2q55 117 156.5 197t218.5 80q37 0 61 -5l-39 -196q-23 6 -55 6q-137 0 -255 -144.5t-155 -332.5l-71 -377h-199z" /> -<glyph unicode="s" horiz-adv-x="909" d="M-23 125l109 131q12 -12 33.5 -30.5t96.5 -50.5t157 -32q80 0 144.5 41t64.5 113q0 43 -47.5 77t-114 62.5t-133 63.5t-113.5 96t-47 145q0 145 120 232.5t277 87.5q205 0 330 -107l8 -8l-98 -137q-8 10 -25.5 23.5t-80 37t-136.5 23.5q-78 0 -142.5 -38t-64.5 -112 q0 -43 47.5 -76.5t115 -62.5t134 -63.5t113.5 -97t47 -146.5q0 -141 -115.5 -231.5t-283.5 -90.5q-72 0 -139.5 15.5t-111.5 37t-78 44t-50 39.5z" /> -<glyph unicode="t" horiz-adv-x="722" d="M111 864l30 162h140l59 295h192l-59 -295h250l-31 -162h-250l-86 -452q-8 -41 -8 -82q0 -162 170 -162l60 4l-35 -176q-33 -4 -66 -4q-334 0 -334 303q0 45 13 104l90 465h-135z" /> -<glyph unicode="u" horiz-adv-x="1220" d="M80 250q0 49 14 131l127 655h199l-119 -610q-12 -68 -12 -119q0 -72 35.5 -109.5t119.5 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-194l24 121l27 98h-4q-53 -92 -166 -168t-254 -76q-133 0 -217 67t-84 208z" /> -<glyph unicode="v" horiz-adv-x="1009" d="M86 1036h197l112 -704l11 -142h4q35 84 65 142l387 704h213l-586 -1036h-219z" /> -<glyph unicode="w" horiz-adv-x="1658" d="M115 1036h198l74 -731l4 -110h4q25 59 49 110l365 729h184l80 -729l6 -110h4q20 57 47 110l361 731h213l-535 -1036h-219l-86 670l-6 110h-4q-25 -57 -51 -110l-342 -670h-215z" /> -<glyph unicode="x" horiz-adv-x="1032" d="M-76 0l465 539l-250 497h213l144 -309l22 -65h4q23 35 43 61l254 313h236l-439 -512l261 -524h-209l-160 340l-25 61h-4q-18 -33 -39 -57l-282 -344h-234z" /> -<glyph unicode="y" horiz-adv-x="1042" d="M-188 -362l92 141q43 -37 112 -37q129 0 220 149l75 123l-237 1022h207l139 -700l16 -123h2q31 68 60 119l389 704h223l-727 -1226q-143 -240 -358 -240q-125 0 -213 68z" /> -<glyph unicode="z" horiz-adv-x="1046" d="M-41 0l21 115l641 655l102 96v4q-31 -4 -98 -4h-478l33 170h852l-20 -114l-643 -658l-105 -94v-4q33 4 101 4h516l-33 -170h-889z" /> -<glyph unicode="{" horiz-adv-x="714" d="M90 578l35 176q6 0 18.5 2t45 16t60 36.5t54.5 68t39 104.5l37 184q68 344 399 344q10 0 21.5 -1t17.5 -1h8l-30 -151h-27q-176 0 -219 -215l-45 -226q-33 -170 -185 -235l-32 -12v-4l13 -6.5t29.5 -22t37 -40t30 -60t13.5 -82.5q0 -27 -7 -60l-45 -223q-8 -41 -8 -72 q0 -143 146 -143h28l-30 -152q-20 -4 -50 -4q-27 0 -55.5 5.5t-69 21.5t-71.5 44t-52.5 78t-21.5 118q0 49 12 104l35 184q6 35 6 60q0 127 -114 159z" /> -<glyph unicode="|" horiz-adv-x="651" d="M244 -326v1948h174v-1948h-174z" /> -<glyph unicode="}" horiz-adv-x="706" d="M-100 -197l28 152h27q180 0 221 215l47 244q12 59 39 107t56.5 74t57 43t46.5 24l18 6v4q-14 6 -33.5 18t-53.5 64.5t-34 122.5q0 29 7 61l39 203q8 35 8 71q0 143 -146 144h-26l28 151q23 4 49.5 4t55 -5t69.5 -21.5t72 -44t53.5 -77.5t22.5 -118q0 -31 -12 -104 l-31 -164q-6 -35 -6 -59q0 -68 33.5 -109t66.5 -47l35 -8l-33 -176q-8 0 -20.5 -2.5t-45 -16.5t-59 -36.5t-54.5 -67.5t-40 -105l-39 -205q-66 -346 -401 -346z" /> -<glyph unicode="~" horiz-adv-x="1210" d="M113 418q0 174 74.5 260t211.5 86q72 0 130.5 -32t89 -68.5t75.5 -68.5t97 -32q74 0 105.5 57.5t31.5 135.5h162q0 -346 -285 -346q-72 0 -130.5 30.5t-89 68.5t-76.5 68.5t-97 30.5q-72 0 -105 -57t-33 -133h-161z" /> -<glyph unicode="¡" horiz-adv-x="585" d="M-8 -410l219 1049h178l-190 -1049h-207zM231 836l41 200h207l-41 -200h-207z" /> -<glyph unicode="¢" horiz-adv-x="1181" d="M117 602q0 172 73.5 327.5t202.5 256t283 114.5l33 170h145l-35 -178q78 -14 139.5 -51t93 -80t53 -85t28.5 -68l6 -27l-181 -68q-2 8 -5 21.5t-19 48.5t-40 61.5t-70 48t-105 21.5q-170 0 -283.5 -150.5t-113.5 -361.5q0 -125 62 -196.5t183 -71.5q90 0 170 50t115 99 l33 49l176 -73q-6 -12 -18.5 -31.5t-56.5 -71t-94 -92.5t-130 -76.5t-166 -42.5l-33 -172h-145l35 181q-154 31 -245 148.5t-91 299.5z" /> -<glyph unicode="£" horiz-adv-x="1193" d="M-6 0l35 176h121l92 477h-90l28 144h90l58 293q31 164 169 272t320 108q197 0 328 -124l12 -15l-133 -127q-8 8 -25.5 22.5t-73 37t-112.5 22.5q-111 0 -188.5 -62.5t-96.5 -156.5l-53 -270h379l-29 -144h-379l-92 -477h668l-35 -176h-993z" /> -<glyph unicode="¥" horiz-adv-x="1239" d="M139 408l25 129h334l16 75l-37 99h-278l24 129h211l-221 606h221l154 -451q33 -94 55 -209h4q57 113 125 207l328 453h241l-456 -606h209l-27 -129h-276l-72 -99l-17 -75h332l-24 -129h-332l-80 -408h-205l80 408h-334z" /> -<glyph unicode="§" horiz-adv-x="894" d="M-23 -16l109 120q70 -63 186 -63q123 0 191.5 80t71.5 207l14 788h162l-15 -797q-4 -186 -116.5 -316t-309.5 -130q-170 0 -286 104zM207 227l14 799q4 186 116 315t310 129q170 0 287 -104l6 -6l-109 -119q-70 63 -184 64q-125 0 -193.5 -81t-70.5 -208l-14 -789h-162z " /> -<glyph unicode="¨" horiz-adv-x="1021" d="M131 1599l41 207h164l-41 -207h-164zM475 1599l39 207h164l-41 -207h-162z" /> -<glyph unicode="©" horiz-adv-x="1697" d="M137 723q0 311 212 529t515 218q305 0 519 -218t214 -529t-214 -529.5t-519 -218.5q-303 0 -515 218.5t-212 529.5zM287 723q0 -256 167 -432t410 -176q248 0 416 176t168 432t-168 432t-416 176q-244 0 -410.5 -176t-166.5 -432zM475 721q0 168 111.5 288.5t292.5 120.5 q195 0 311 -165l22 -37l-125 -68q-8 14 -23 36t-67.5 57.5t-111.5 35.5q-117 0 -185.5 -79t-68.5 -189q0 -115 67.5 -191.5t186.5 -76.5q59 0 110.5 32.5t71.5 63.5l20 33l125 -68q-4 -8 -12 -21.5t-37.5 -49t-64.5 -62.5t-94.5 -48.5t-124.5 -21.5q-180 0 -292 120 t-112 290z" /> -<glyph unicode="ª" horiz-adv-x="856" d="M131 543l23 116h563l-25 -116h-561zM213 956q0 250 420 250h35q6 35 6 51q0 90 -109 91q-41 0 -87 -14.5t-72 -26.5l-25 -15l-41 105q106 70 258 69q223 0 223 -198q0 -39 -10 -86l-76 -385h-139l18 94h-4q-8 -12 -24.5 -30.5t-69.5 -48.5t-113 -30q-76 0 -133 46 t-57 128zM367 973q0 -31 22.5 -50.5t65.5 -19.5q66 0 121 60.5t67 119.5l4 19h-24q-256 0 -256 -129z" /> -<glyph unicode="«" horiz-adv-x="1134" d="M76 582l391 417h209l-410 -430l262 -411h-188zM483 582l424 417h213l-446 -430l262 -411h-188z" /> -<glyph unicode="¬" horiz-adv-x="1290" d="M143 696v160h977v-547h-166v387h-811z" /> -<glyph unicode="­" horiz-adv-x="882" d="M6 496l33 176h598l-33 -176h-598z" /> -<glyph unicode="®" horiz-adv-x="1697" d="M137 723q0 311 212 529t515 218q305 0 519 -218t214 -529t-214 -529.5t-519 -218.5q-303 0 -515 218.5t-212 529.5zM287 723q0 -256 167 -432t410 -176q248 0 416 176t168 432t-168 432t-416 176q-244 0 -410.5 -176t-166.5 -432zM614 340v772h297q111 0 177.5 -64.5 t66.5 -170.5q0 -82 -43 -136.5t-98 -68.5v-4q8 -8 26 -43l148 -285h-160l-143 299h-125v-299h-146zM760 745h123q57 0 91 35t34 97q0 59 -34 91.5t-91 32.5h-123v-256z" /> -<glyph unicode="¯" horiz-adv-x="1021" d="M131 1606l27 143h520l-27 -143h-520z" /> -<glyph unicode="°" horiz-adv-x="792" d="M186 1130q0 133 107.5 236.5t241.5 103.5q123 0 201.5 -75.5t78.5 -190.5q0 -135 -108.5 -237.5t-239.5 -102.5q-123 0 -202 74.5t-79 191.5zM346 1139q0 -55 35 -89t94 -34q70 0 125 53t55 125q0 55 -35.5 91t-93.5 36q-72 0 -126 -55t-54 -127z" /> -<glyph unicode="±" horiz-adv-x="1433" d="M145 504v160h459v503h168v-503h457v-160h-457v-504h-168v504h-459zM178 -195h1018v-159h-1018v159z" /> -<glyph unicode="²" horiz-adv-x="796" d="M-8 866q2 119 60.5 209t139 143.5t161.5 98.5t137.5 99t56.5 118q0 47 -34 76.5t-89 29.5q-45 0 -93 -24.5t-73 -48.5l-27 -25l-90 100q14 16 40 39t102.5 62t150.5 39q121 0 197 -64.5t76 -171.5q0 -88 -48.5 -157.5t-119 -115.5t-143 -85t-133 -86t-77.5 -101h430 l-26 -135h-598z" /> -<glyph unicode="³" horiz-adv-x="796" d="M8 981l96 100q8 -10 23.5 -25.5t71 -42t116.5 -26.5q78 0 135.5 52.5t57.5 127.5q0 55 -46 88t-110 33h-69l-25 78l221 211l60 49v4q-39 -6 -74 -6h-283l25 137h557l-19 -98l-274 -258q76 -14 135.5 -73.5t59.5 -162.5q0 -127 -101.5 -225t-251.5 -98q-88 0 -164.5 33.5 t-107.5 66.5z" /> -<glyph unicode="´" horiz-adv-x="1021" d="M186 1546l201 260h223l-245 -260h-179z" /> -<glyph unicode="µ" horiz-adv-x="1265" d="M-29 -410l281 1446h199l-119 -610q-12 -68 -13 -119q0 -72 36 -109.5t120 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-195l25 121l27 98h-5q-53 -92 -165.5 -168t-253.5 -76q-125 0 -185 68h-4q-6 -104 -18 -164l-58 -289h-176z" /> -<glyph unicode="μ" horiz-adv-x="1265" d="M-29 -410l281 1446h199l-119 -610q-12 -68 -13 -119q0 -72 36 -109.5t120 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-195l25 121l27 98h-5q-53 -92 -165.5 -168t-253.5 -76q-125 0 -185 68h-4q-6 -104 -18 -164l-58 -289h-176z" /> -<glyph unicode="¶" horiz-adv-x="1210" d="M147 909q0 215 173.5 376t388.5 161h581l-33 -176h-403l-266 -1372h-154l115 596q-162 0 -282 119.5t-120 295.5zM715 -102l241 1255h154l-244 -1255h-151z" /> -<glyph unicode="·" horiz-adv-x="552" d="M147 485l41 215h207l-41 -215h-207z" /> -<glyph unicode="¸" horiz-adv-x="1021" d="M184 -410l23 117q39 -12 84 -12t77.5 17.5t32.5 56.5q0 53 -96 53l-37 -2l103 227l96 -20l-2 -17l-47 -112q51 -8 87 -42t36 -92q0 -94 -73 -141t-163 -47q-33 0 -62.5 3t-43.5 7z" /> -<glyph unicode="¹" horiz-adv-x="796" d="M43 866l25 135h190l96 500l17 53h-4q-12 -16 -45 -45l-82 -65l-78 106l260 211h137l-147 -760h188l-27 -135h-530z" /> -<glyph unicode="º" horiz-adv-x="950" d="M141 543l23 116h641l-23 -116h-641zM217 1071q0 164 124 280.5t280 116.5q135 0 221 -79.5t86 -206.5q0 -164 -124 -280t-282 -116q-133 0 -219 80t-86 205zM367 1083q0 -76 46 -120.5t119 -44.5q94 0 170 74.5t76 181.5q0 72 -46 117.5t-118 45.5q-96 0 -171.5 -75 t-75.5 -179z" /> -<glyph unicode="»" horiz-adv-x="1134" d="M2 158l447 430l-263 411h189l264 -424l-426 -417h-211zM446 158l410 430l-262 411h188l265 -424l-392 -417h-209z" /> -<glyph unicode="¼" horiz-adv-x="1966" d="M104 551l25 135h190l97 500l16 53h-4q-12 -16 -45 -45l-82 -66l-78 107l260 211h138l-148 -760h189l-27 -135h-531zM410 0l966 1446h164l-967 -1446h-163zM1087 219l19 103l516 573h176l-106 -541h127l-25 -135h-127l-43 -219h-151l43 219h-429zM1290 354h250l49 252 l31 119h-4q-37 -55 -78 -98l-248 -269v-4z" /> -<glyph unicode="½" horiz-adv-x="1947" d="M104 551l25 135h190l97 500l16 53h-4q-12 -16 -45 -45l-82 -66l-78 107l260 211h138l-148 -760h189l-27 -135h-531zM414 0l966 1446h164l-966 -1446h-164zM1112 0q2 119 60.5 209t139.5 143t161.5 98.5t137 99.5t56.5 118q0 47 -34 76.5t-89 29.5q-45 0 -93 -24.5 t-75 -49.5l-24 -24l-90 100q14 16 39.5 39t102.5 61.5t150 38.5q121 0 197 -64.5t76 -170.5q0 -88 -48 -157.5t-119 -116t-143.5 -85t-133 -86t-76.5 -100.5h430l-27 -135h-598z" /> -<glyph unicode="¾" horiz-adv-x="1984" d="M84 666l96 100q8 -10 23.5 -25.5t71 -42t116.5 -26.5q78 0 135.5 52t57.5 128q0 55 -46 88t-110 33h-70l-24 78l221 211l59 49v4q-39 -6 -73 -6h-283l25 137h557l-19 -98l-274 -258q76 -14 135 -74t59 -162q0 -127 -101 -225.5t-251 -98.5q-88 0 -165 34t-109 67zM428 0 l967 1446h164l-967 -1446h-164zM1106 219l18 103l516 573h177l-107 -541h127l-25 -135h-126l-44 -219h-151l43 219h-428zM1309 354h250l49 252l30 119h-4q-37 -55 -78 -98l-247 -269v-4z" /> -<glyph unicode="¿" horiz-adv-x="923" d="M-51 -102q0 100 45 183t111.5 139t135 106.5t124 111t67.5 125.5l17 76h194l-18 -88q-18 -90 -72.5 -166t-120 -127t-127 -99t-103.5 -107.5t-42 -129.5q0 -74 53 -121t143 -47q59 0 122 22.5t95 43.5l33 22l88 -153q-18 -12 -51 -33t-128 -53.5t-185 -32.5 q-166 0 -273.5 89t-107.5 239zM477 836l41 200h205l-39 -200h-207z" /> -<glyph unicode="À" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205zM598 1806h205l96 -260h-158z" /> -<glyph unicode="Á" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205zM733 1546l201 260h223l-246 -260h-178z" /> -<glyph unicode="Â" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205zM537 1546l231 260h207l129 -260h-168l-74 164h-4l-139 -164h-182z" /> -<glyph unicode="Ã" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205zM498 1548q49 260 243 260q55 0 94.5 -34.5t68 -69.5t61.5 -35q78 0 100 133h145q-51 -260 -243 -260q-53 0 -92 35t-70 69.5t-64 34.5 q-72 0 -98 -133h-145z" /> -<glyph unicode="Ä" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205zM588 1599l41 207h164l-41 -207h-164zM932 1599l39 207h164l-41 -207h-162z" /> -<glyph unicode="Å" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205zM678 1655q0 76 59.5 124t132.5 48q72 0 116 -36t44 -99q0 -74 -60.5 -122t-133.5 -48q-70 0 -114 35t-44 98zM784 1657q0 -51 58 -51 q33 0 57.5 24.5t24.5 59.5q0 25 -15.5 40t-42.5 15q-33 0 -57.5 -25.5t-24.5 -62.5z" /> -<glyph unicode="Æ" horiz-adv-x="1816" d="M-102 0l874 1446h1075l-35 -176h-638l-89 -453h519l-35 -176h-518l-90 -465h671l-35 -176h-872l125 643h-344l-383 -643h-225zM606 811h277l88 459h-92z" /> -<glyph unicode="Ç" horiz-adv-x="1484" d="M115 602q0 231 118.5 433t316.5 318.5t421 116.5q102 0 193 -19t148.5 -48t100.5 -57.5t62 -47.5l18 -20l-121 -139q-16 16 -47 40.5t-133 64.5t-215 40q-270 0 -461.5 -201.5t-191.5 -470.5q0 -197 117.5 -323.5t322.5 -126.5q236 0 453 164l28 22l88 -160 q-10 -8 -28.5 -22t-78 -51t-123 -66t-159.5 -51.5t-190 -22.5h-2l-33 -77q51 -8 87 -42t36 -92q0 -94 -73 -141t-163 -47q-33 0 -62.5 3t-43.5 7l-15 4l23 117q39 -12 84 -12t77.5 17.5t32.5 56.5q0 53 -96 53l-37 -2l74 164q-246 33 -387 200.5t-141 417.5z" /> -<glyph unicode="È" horiz-adv-x="1171" d="M78 0l284 1446h838l-35 -176h-637l-88 -453h518l-34 -176h-518l-91 -465h672l-33 -176h-876zM592 1806h205l96 -260h-158z" /> -<glyph unicode="É" horiz-adv-x="1171" d="M78 0l284 1446h838l-35 -176h-637l-88 -453h518l-34 -176h-518l-91 -465h672l-33 -176h-876zM727 1546l201 260h223l-246 -260h-178z" /> -<glyph unicode="Ê" horiz-adv-x="1171" d="M78 0l284 1446h838l-35 -176h-637l-88 -453h518l-34 -176h-518l-91 -465h672l-33 -176h-876zM530 1546l232 260h207l129 -260h-168l-74 164h-4l-139 -164h-183z" /> -<glyph unicode="Ë" horiz-adv-x="1171" d="M78 0l284 1446h838l-35 -176h-637l-88 -453h518l-34 -176h-518l-91 -465h672l-33 -176h-876zM580 1599l41 207h163l-41 -207h-163zM924 1599l39 207h163l-41 -207h-161z" /> -<glyph unicode="Ì" horiz-adv-x="595" d="M78 0l282 1446h201l-280 -1446h-203zM252 1806h205l96 -260h-158z" /> -<glyph unicode="Í" horiz-adv-x="595" d="M78 0l282 1446h201l-280 -1446h-203zM385 1546l201 260h223l-246 -260h-178z" /> -<glyph unicode="Î" horiz-adv-x="595" d="M78 0l282 1446h201l-280 -1446h-203zM190 1546l232 260h207l129 -260h-168l-74 164h-4l-139 -164h-183z" /> -<glyph unicode="Ï" horiz-adv-x="595" d="M78 0l282 1446h201l-280 -1446h-203zM242 1599l41 207h163l-40 -207h-164zM586 1599l39 207h163l-40 -207h-162z" /> -<glyph unicode="Ð" horiz-adv-x="1550" d="M115 0l123 639h-119l33 168h118l125 639h447q299 0 469 -147.5t170 -415.5q0 -242 -107.5 -442.5t-304.5 -320.5t-442 -120h-512zM348 176h264q287 0 473.5 197.5t186.5 492.5q0 195 -119 299.5t-328 104.5h-262l-92 -463h309l-32 -168h-310z" /> -<glyph unicode="Ñ" horiz-adv-x="1536" d="M78 0l282 1446h187l463 -940q37 -76 77 -209h5q10 129 26 209l182 940h203l-282 -1446h-187l-463 938q-39 80 -79 211h-5q-10 -129 -26 -211l-182 -938h-201zM618 1548q49 260 244 260q55 0 94 -34.5t68 -69.5t61 -35q78 0 101 133h145q-51 -260 -244 -260q-53 0 -92 35 t-69.5 69.5t-63.5 34.5q-72 0 -98 -133h-146z" /> -<glyph unicode="Ò" horiz-adv-x="1677" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q289 0 467 -172t178 -442q0 -231 -125 -437t-324.5 -325t-414.5 -119q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 123 -326.5t316 -125.5q250 0 451.5 203.5t201.5 480.5q0 195 -122 316.5t-316 121.5 q-252 0 -453 -199t-201 -471zM786 1806h205l96 -260h-157z" /> -<glyph unicode="Ó" horiz-adv-x="1677" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q289 0 467 -172t178 -442q0 -231 -125 -437t-324.5 -325t-414.5 -119q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 123 -326.5t316 -125.5q250 0 451.5 203.5t201.5 480.5q0 195 -122 316.5t-316 121.5 q-252 0 -453 -199t-201 -471zM922 1546l200 260h224l-246 -260h-178z" /> -<glyph unicode="Ô" horiz-adv-x="1677" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q289 0 467 -172t178 -442q0 -231 -125 -437t-324.5 -325t-414.5 -119q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 123 -326.5t316 -125.5q250 0 451.5 203.5t201.5 480.5q0 195 -122 316.5t-316 121.5 q-252 0 -453 -199t-201 -471zM725 1546l231 260h207l129 -260h-168l-73 164h-4l-140 -164h-182z" /> -<glyph unicode="Õ" horiz-adv-x="1677" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q289 0 467 -172t178 -442q0 -231 -125 -437t-324.5 -325t-414.5 -119q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 123 -326.5t316 -125.5q250 0 451.5 203.5t201.5 480.5q0 195 -122 316.5t-316 121.5 q-252 0 -453 -199t-201 -471zM686 1548q49 260 244 260q55 0 94 -34.5t67.5 -69.5t61.5 -35q78 0 100 133h146q-51 -260 -244 -260q-53 0 -92 35t-69.5 69.5t-63.5 34.5q-72 0 -99 -133h-145z" /> -<glyph unicode="Ö" horiz-adv-x="1677" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q289 0 467 -172t178 -442q0 -231 -125 -437t-324.5 -325t-414.5 -119q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 123 -326.5t316 -125.5q250 0 451.5 203.5t201.5 480.5q0 195 -122 316.5t-316 121.5 q-252 0 -453 -199t-201 -471zM776 1599l41 207h164l-41 -207h-164zM1120 1599l39 207h164l-41 -207h-162z" /> -<glyph unicode="×" horiz-adv-x="1409" d="M170 113l422 471l-422 471l113 112l417 -467l420 467l113 -112l-424 -471l424 -471l-113 -113l-420 465l-417 -465z" /> -<glyph unicode="Ø" horiz-adv-x="1681" d="M113 606q0 227 122.5 429t322.5 318.5t417 116.5q221 0 385 -108l127 137l94 -78l-127 -137q164 -170 164 -428q0 -231 -124 -437t-323.5 -325t-414.5 -119q-229 0 -398 119l-133 -145l-94 76l137 149q-155 172 -155 432zM319 614q0 -172 89 -288l817 886 q-111 72 -252 72q-252 0 -453 -199t-201 -471zM496 242q109 -80 262 -80q248 0 449.5 203.5t201.5 480.5q0 168 -94 284z" /> -<glyph unicode="Ù" horiz-adv-x="1488" d="M147 403q0 55 13 117l180 926h201l-181 -932q-8 -39 -8 -86q0 -127 80 -196.5t225 -69.5q168 0 285 94t150 262l182 928h201l-185 -944q-47 -242 -219 -384.5t-418 -142.5q-225 0 -365.5 113.5t-140.5 314.5zM696 1806h205l96 -260h-157z" /> -<glyph unicode="Ú" horiz-adv-x="1488" d="M147 403q0 55 13 117l180 926h201l-181 -932q-8 -39 -8 -86q0 -127 80 -196.5t225 -69.5q168 0 285 94t150 262l182 928h201l-185 -944q-47 -242 -219 -384.5t-418 -142.5q-225 0 -365.5 113.5t-140.5 314.5zM831 1546l201 260h223l-245 -260h-179z" /> -<glyph unicode="Û" horiz-adv-x="1488" d="M147 403q0 55 13 117l180 926h201l-181 -932q-8 -39 -8 -86q0 -127 80 -196.5t225 -69.5q168 0 285 94t150 262l182 928h201l-185 -944q-47 -242 -219 -384.5t-418 -142.5q-225 0 -365.5 113.5t-140.5 314.5zM635 1546l231 260h207l129 -260h-168l-73 164h-5l-139 -164 h-182z" /> -<glyph unicode="Ü" horiz-adv-x="1488" d="M147 403q0 55 13 117l180 926h201l-181 -932q-8 -39 -8 -86q0 -127 80 -196.5t225 -69.5q168 0 285 94t150 262l182 928h201l-185 -944q-47 -242 -219 -384.5t-418 -142.5q-225 0 -365.5 113.5t-140.5 314.5zM684 1599l41 207h164l-41 -207h-164zM1028 1599l39 207h164 l-41 -207h-162z" /> -<glyph unicode="Ý" horiz-adv-x="1185" d="M164 1446h217l174 -475q29 -80 53 -183h4q61 98 123 181l355 477h243l-651 -840l-119 -606h-201l121 612zM670 1546l200 260h224l-246 -260h-178z" /> -<glyph unicode="Þ" horiz-adv-x="1247" d="M78 0l282 1446h203l-49 -246h295q135 0 227 -47q180 -94 181 -322q0 -170 -87.5 -304t-228.5 -195q-102 -43 -215 -43h-348l-57 -289h-203zM371 465h295q88 0 153 33q86 41 137.5 124t51.5 195q0 98 -60.5 152.5t-171.5 54.5h-297z" /> -<glyph unicode="ß" horiz-adv-x="1200" d="M37 0l213 1102q33 172 174 270t309 98q164 0 263.5 -80.5t99.5 -207.5q0 -82 -45 -151.5t-98.5 -107.5t-98.5 -86.5t-45 -91.5q0 -41 44 -89t97.5 -87t97.5 -104.5t44 -136.5q0 -141 -118 -241.5t-272 -100.5q-86 0 -161.5 14t-108.5 29l-33 16l35 172q100 -59 254 -59 q76 0 138.5 43t62.5 127q0 43 -30 84t-72 75.5t-82.5 69.5t-70.5 81t-30 95q0 70 45 132.5t99.5 102.5t99.5 92t45 103q0 57 -43 96t-125 39q-98 0 -178 -59t-103 -168l-208 -1071h-199z" /> -<glyph unicode="à" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228zM410 1446h204l97 -260h-158z" /> -<glyph unicode="á" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228zM545 1186l200 260h224l-246 -260h-178z" /> -<glyph unicode="â" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228zM348 1186l232 260h206l129 -260h-167l-74 164h-4l-140 -164h-182z" /> -<glyph unicode="ã" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228zM309 1188q49 260 244 260q55 0 94 -35t67.5 -69.5t61.5 -34.5q78 0 101 133h145 q-51 -260 -244 -260q-53 0 -92 34.5t-69.5 69.5t-63.5 35q-72 0 -98 -133h-146z" /> -<glyph unicode="ä" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228zM397 1239l41 207h164l-41 -207h-164zM741 1239l39 207h164l-41 -207h-162z" /> -<glyph unicode="å" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228zM487 1294q0 76 59.5 124t133.5 48q72 0 116 -35.5t44 -99.5q0 -74 -60.5 -122t-134.5 -48 q-70 0 -114 35t-44 98zM594 1296q0 -51 57 -51q33 0 57.5 24.5t24.5 59.5q0 25 -15.5 40t-41.5 15q-33 0 -57.5 -25.5t-24.5 -62.5z" /> -<glyph unicode="æ" horiz-adv-x="1761" d="M2 238q0 121 63.5 204.5t172 124.5t217 57.5t233.5 16.5h53q10 66 11 88q0 164 -193 164q-147 -2 -303 -98l-53 157q20 12 54 30.5t135.5 48.5t195.5 30q248 0 311 -174h4q154 174 385 174q195 0 296.5 -103.5t101.5 -281.5q0 -35 -7.5 -80t-15.5 -74l-8 -28h-746 q-6 -37 -6 -68q0 -125 74 -202t209 -77q80 0 162 31t125 60l43 30l57 -157q-18 -14 -53 -37t-139.5 -61t-202.5 -38q-160 0 -272.5 69t-155.5 187h-5q-12 -27 -38.5 -61.5t-76.5 -82.5t-131 -80t-175 -32q-137 0 -229.5 70t-92.5 193zM205 270q0 -59 43 -97t123 -38 q119 0 214 102.5t124 227.5l6 27h-94q-416 -1 -416 -222zM946 643h537q4 33 4 53q0 100 -56.5 153.5t-144.5 53.5q-115 0 -205 -68.5t-135 -191.5z" /> -<glyph unicode="ç" horiz-adv-x="1120" d="M55 426q0 262 190.5 448.5t448.5 186.5q236 0 373 -131l18 -19l-110 -129q-10 12 -31.5 29.5t-92.5 47.5t-146 30q-178 0 -312.5 -132t-134.5 -317q0 -131 83 -212t220 -81q86 0 173 35t130 70l45 35l56 -158q-18 -16 -53 -42t-146 -69t-223 -43h-4l-33 -77q51 -8 87 -42 t36 -92q0 -94 -73 -141t-163 -47q-33 0 -62.5 3t-43.5 7l-15 4l23 117q39 -12 84 -12t77.5 17.5t32.5 56.5q0 53 -96 53l-37 -2l74 166q-174 29 -274.5 147.5t-100.5 292.5z" /> -<glyph unicode="è" horiz-adv-x="1128" d="M55 418q0 262 173 452.5t429 190.5q195 0 295.5 -104.5t100.5 -278.5q0 -37 -8.5 -84t-16.5 -76l-8 -29h-756q-6 -31 -6 -61q0 -121 78 -201t217 -80q80 0 162 31t125 60l43 30l57 -157q-18 -14 -53 -37t-139.5 -61t-202.5 -38q-223 0 -356.5 123t-133.5 320zM297 639 h553q4 23 4 55q0 100 -55.5 154.5t-145.5 54.5q-115 0 -212 -71.5t-144 -192.5zM479 1446h205l96 -260h-157z" /> -<glyph unicode="é" horiz-adv-x="1128" d="M55 418q0 262 173 452.5t429 190.5q195 0 295.5 -104.5t100.5 -278.5q0 -37 -8.5 -84t-16.5 -76l-8 -29h-756q-6 -31 -6 -61q0 -121 78 -201t217 -80q80 0 162 31t125 60l43 30l57 -157q-18 -14 -53 -37t-139.5 -61t-202.5 -38q-223 0 -356.5 123t-133.5 320zM297 639 h553q4 23 4 55q0 100 -55.5 154.5t-145.5 54.5q-115 0 -212 -71.5t-144 -192.5zM614 1186l201 260h223l-245 -260h-179z" /> -<glyph unicode="ê" horiz-adv-x="1128" d="M55 418q0 262 173 452.5t429 190.5q195 0 295.5 -104.5t100.5 -278.5q0 -37 -8.5 -84t-16.5 -76l-8 -29h-756q-6 -31 -6 -61q0 -121 78 -201t217 -80q80 0 162 31t125 60l43 30l57 -157q-18 -14 -53 -37t-139.5 -61t-202.5 -38q-223 0 -356.5 123t-133.5 320zM297 639 h553q4 23 4 55q0 100 -55.5 154.5t-145.5 54.5q-115 0 -212 -71.5t-144 -192.5zM418 1186l231 260h207l129 -260h-168l-74 164h-4l-139 -164h-182z" /> -<glyph unicode="ë" horiz-adv-x="1128" d="M55 418q0 262 173 452.5t429 190.5q195 0 295.5 -104.5t100.5 -278.5q0 -37 -8.5 -84t-16.5 -76l-8 -29h-756q-6 -31 -6 -61q0 -121 78 -201t217 -80q80 0 162 31t125 60l43 30l57 -157q-18 -14 -53 -37t-139.5 -61t-202.5 -38q-223 0 -356.5 123t-133.5 320zM297 639 h553q4 23 4 55q0 100 -55.5 154.5t-145.5 54.5q-115 0 -212 -71.5t-144 -192.5zM469 1239l41 207h164l-41 -207h-164zM813 1239l39 207h164l-41 -207h-162z" /> -<glyph unicode="ì" horiz-adv-x="507" d="M37 0l201 1036h198l-200 -1036h-199zM137 1446h205l96 -260h-157z" /> -<glyph unicode="í" horiz-adv-x="507" d="M37 0l201 1036h198l-200 -1036h-199zM272 1186l201 260h223l-245 -260h-179z" /> -<glyph unicode="î" horiz-adv-x="507" d="M37 0l201 1036h198l-200 -1036h-199zM76 1186l231 260h207l129 -260h-168l-74 164h-4l-139 -164h-182z" /> -<glyph unicode="ï" horiz-adv-x="507" d="M37 0l201 1036h198l-200 -1036h-199zM125 1239l41 207h164l-41 -207h-164zM469 1239l39 207h164l-41 -207h-162z" /> -<glyph unicode="ð" horiz-adv-x="1202" d="M51 391q0 217 161 390t417 173q76 0 139 -23.5t88 -45.5l27 -25h4q-35 164 -174 283l-406 -162l4 129l285 115q-111 63 -250 100l82 148q217 -55 373 -166l325 131l-2 -129l-221 -88q199 -203 199 -502q0 -90 -21.5 -187.5t-69.5 -198t-117 -179t-175.5 -129 t-231.5 -50.5q-209 0 -322.5 119t-113.5 297zM254 395q0 -109 60.5 -178.5t174.5 -69.5q166 0 279 141.5t113 295.5q0 94 -65.5 152.5t-178.5 58.5q-162 0 -272.5 -119t-110.5 -281z" /> -<glyph unicode="ñ" horiz-adv-x="1232" d="M37 0l201 1036h194l-22 -121l-29 -98h4q49 90 168 167t260 77q143 0 223 -68.5t80 -206.5q0 -49 -14 -131l-127 -655h-199l119 612q14 76 14 117q0 150 -153.5 150t-275.5 -119t-154 -287l-90 -473h-199zM422 1188q49 260 244 260q55 0 94 -35t67.5 -69.5t61.5 -34.5 q78 0 100 133h146q-51 -260 -244 -260q-53 0 -92 34.5t-70 69.5t-63 35q-72 0 -99 -133h-145z" /> -<glyph unicode="ò" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q217 0 354.5 -126t137.5 -327q0 -262 -195.5 -447.5t-443.5 -185.5q-219 0 -356.5 127t-137.5 330zM256 440q0 -131 82 -212t211 -81q166 0 300 132.5t134 318.5q0 129 -82 210t-209 81q-170 0 -303 -131.5t-133 -317.5zM520 1446 h205l96 -260h-157z" /> -<glyph unicode="ó" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q217 0 354.5 -126t137.5 -327q0 -262 -195.5 -447.5t-443.5 -185.5q-219 0 -356.5 127t-137.5 330zM256 440q0 -131 82 -212t211 -81q166 0 300 132.5t134 318.5q0 129 -82 210t-209 81q-170 0 -303 -131.5t-133 -317.5zM655 1186 l201 260h223l-245 -260h-179z" /> -<glyph unicode="ô" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q217 0 354.5 -126t137.5 -327q0 -262 -195.5 -447.5t-443.5 -185.5q-219 0 -356.5 127t-137.5 330zM256 440q0 -131 82 -212t211 -81q166 0 300 132.5t134 318.5q0 129 -82 210t-209 81q-170 0 -303 -131.5t-133 -317.5zM459 1186 l231 260h207l129 -260h-168l-74 164h-4l-139 -164h-182z" /> -<glyph unicode="õ" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q217 0 354.5 -126t137.5 -327q0 -262 -195.5 -447.5t-443.5 -185.5q-219 0 -356.5 127t-137.5 330zM256 440q0 -131 82 -212t211 -81q166 0 300 132.5t134 318.5q0 129 -82 210t-209 81q-170 0 -303 -131.5t-133 -317.5zM418 1188 q49 260 244 260q55 0 94 -35t67.5 -69.5t61.5 -34.5q78 0 100 133h145q-51 -260 -243 -260q-53 0 -92 34.5t-70 69.5t-63 35q-72 0 -99 -133h-145z" /> -<glyph unicode="ö" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q217 0 354.5 -126t137.5 -327q0 -262 -195.5 -447.5t-443.5 -185.5q-219 0 -356.5 127t-137.5 330zM256 440q0 -131 82 -212t211 -81q166 0 300 132.5t134 318.5q0 129 -82 210t-209 81q-170 0 -303 -131.5t-133 -317.5zM508 1239 l41 207h164l-41 -207h-164zM852 1239l39 207h164l-41 -207h-162z" /> -<glyph unicode="÷" horiz-adv-x="1292" d="M123 504v160h1034v-160h-1034zM543 90v186h192v-186h-192zM543 891v186h192v-186h-192z" /> -<glyph unicode="ø" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q164 0 287 -76l111 121l92 -76l-111 -121q113 -123 113 -301q0 -262 -195.5 -447.5t-443.5 -185.5q-152 0 -275 68l-110 -121l-90 78l106 115q-125 124 -125 317zM256 440q0 -109 55 -182l541 588q-74 43 -160 43 q-170 0 -303 -131.5t-133 -317.5zM401 182q63 -35 148 -35q166 0 300 132.5t134 318.5q0 92 -45 166z" /> -<glyph unicode="ù" horiz-adv-x="1220" d="M80 250q0 49 14 131l127 655h199l-119 -610q-12 -68 -12 -119q0 -72 35.5 -109.5t119.5 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-194l24 121l27 98h-4q-53 -92 -166 -168t-254 -76q-133 0 -217 67t-84 208zM483 1446h205l96 -260h-157z" /> -<glyph unicode="ú" horiz-adv-x="1220" d="M80 250q0 49 14 131l127 655h199l-119 -610q-12 -68 -12 -119q0 -72 35.5 -109.5t119.5 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-194l24 121l27 98h-4q-53 -92 -166 -168t-254 -76q-133 0 -217 67t-84 208zM618 1186l201 260h223l-245 -260h-179z" /> -<glyph unicode="û" horiz-adv-x="1220" d="M80 250q0 49 14 131l127 655h199l-119 -610q-12 -68 -12 -119q0 -72 35.5 -109.5t119.5 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-194l24 121l27 98h-4q-53 -92 -166 -168t-254 -76q-133 0 -217 67t-84 208zM422 1186l231 260h207l129 -260h-168l-73 164 h-5l-139 -164h-182z" /> -<glyph unicode="ü" horiz-adv-x="1220" d="M80 250q0 49 14 131l127 655h199l-119 -610q-12 -68 -12 -119q0 -72 35.5 -109.5t119.5 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-194l24 121l27 98h-4q-53 -92 -166 -168t-254 -76q-133 0 -217 67t-84 208zM473 1239l41 207h164l-41 -207h-164z M817 1239l39 207h164l-41 -207h-162z" /> -<glyph unicode="ý" horiz-adv-x="1042" d="M-188 -362l92 141q43 -37 112 -37q129 0 220 149l75 123l-237 1022h207l139 -700l16 -123h2q31 68 60 119l389 704h223l-727 -1226q-143 -240 -358 -240q-125 0 -213 68zM532 1186l201 260h223l-245 -260h-179z" /> -<glyph unicode="þ" horiz-adv-x="1226" d="M-43 -410l358 1856h197l-94 -481l-21 -82h4q55 78 146.5 128t200.5 50q182 0 284.5 -115t102.5 -311q0 -285 -170 -472.5t-394 -187.5q-102 0 -187 46.5t-122 134.5h-4q-2 -43 -12 -97l-92 -469h-197zM319 414q0 -117 58.5 -192t173.5 -75q145 0 263 131.5t118 342.5 q0 125 -62.5 195.5t-171.5 70.5q-156 0 -267.5 -144.5t-111.5 -328.5z" /> -<glyph unicode="ÿ" horiz-adv-x="1042" d="M-188 -362l92 141q43 -37 112 -37q129 0 220 149l75 123l-237 1022h207l139 -700l16 -123h2q31 68 60 119l389 704h223l-727 -1226q-143 -240 -358 -240q-125 0 -213 68zM387 1239l41 207h164l-41 -207h-164zM731 1239l39 207h164l-41 -207h-162z" /> -<glyph unicode="Œ" horiz-adv-x="1964" d="M109 598q0 229 120.5 431t319.5 318.5t422 116.5q63 0 156.5 -9t132.5 -9h735l-35 -176h-639l-88 -453h518l-35 -176h-518l-90 -465h674l-35 -176h-743q-31 0 -116 -9t-138 -9q-289 0 -465 173t-176 443zM315 598q0 -193 121 -314.5t324 -121.5q37 0 73.5 4t55.5 8l18 4 l211 1092q-59 14 -141 14q-268 0 -465 -202.5t-197 -483.5z" /> -<glyph unicode="œ" horiz-adv-x="2039" d="M53 432q0 260 194.5 444.5t444.5 184.5q145 0 254 -65.5t162 -180.5h4q80 115 199 180.5t258 65.5q195 0 295 -104.5t100 -278.5q0 -37 -8 -84t-17 -76l-8 -29h-753q-6 -35 -7 -63q0 -127 82 -203t213 -76q78 0 161 31t126 60l43 30l55 -157q-18 -14 -53 -37t-139.5 -61 t-202.5 -38q-154 0 -264.5 67t-161.5 185h-4q-88 -117 -216 -184.5t-265 -67.5q-219 0 -355.5 127t-136.5 330zM256 440q0 -131 81 -212t210 -81q166 0 300 132.5t134 318.5q0 129 -81 210t-210 81q-168 0 -301 -131.5t-133 -317.5zM1210 639h551q6 27 6 55q0 100 -55 154.5 t-145 54.5q-117 0 -213.5 -70.5t-143.5 -193.5z" /> -<glyph unicode="Ÿ" horiz-adv-x="1185" d="M164 1446h217l174 -475q29 -80 53 -183h4q61 98 123 181l355 477h243l-651 -840l-119 -606h-201l121 612zM522 1599l41 207h164l-41 -207h-164zM866 1599l39 207h164l-41 -207h-162z" /> -<glyph unicode="ˆ" horiz-adv-x="1021" d="M82 1546l231 260h207l129 -260h-168l-73 164h-5l-139 -164h-182z" /> -<glyph unicode="˜" horiz-adv-x="1021" d="M39 1548q49 260 244 260q55 0 94 -34.5t67.5 -69.5t61.5 -35q78 0 100 133h146q-51 -260 -244 -260q-53 0 -92 35t-70 69.5t-63 34.5q-72 0 -99 -133h-145z" /> -<glyph unicode="–" horiz-adv-x="1435" d="M158 504l30 160h1078l-31 -160h-1077z" /> -<glyph unicode="—" horiz-adv-x="1845" d="M158 504l30 160h1487l-30 -160h-1487z" /> -<glyph unicode="‘" horiz-adv-x="464" d="M182 1071l211 397h154l-164 -397h-201z" /> -<glyph unicode="’" horiz-adv-x="452" d="M188 1071l164 397h201l-211 -397h-154z" /> -<glyph unicode="‚" horiz-adv-x="509" d="M-66 -184l164 399h201l-211 -399h-154z" /> -<glyph unicode="“" horiz-adv-x="753" d="M182 1071l211 397h154l-164 -397h-201zM471 1071l211 397h154l-164 -397h-201z" /> -<glyph unicode="”" horiz-adv-x="741" d="M188 1071l166 397h199l-209 -397h-156zM477 1071l166 397h199l-209 -397h-156z" /> -<glyph unicode="„" horiz-adv-x="798" d="M-66 -184l164 399h201l-209 -399h-156zM223 -184l166 399h199l-209 -399h-156z" /> -<glyph unicode="•" horiz-adv-x="837" d="M98 596q0 133 92.5 225t225.5 92q131 0 223 -93t92 -224t-92 -224t-223 -93q-133 0 -225.5 92t-92.5 225z" /> -<glyph unicode="…" horiz-adv-x="1568" d="M35 0l41 215h209l-43 -215h-207zM565 0l43 215h207l-41 -215h-209zM1098 0l41 215h209l-43 -215h-207z" /> -<glyph unicode="‹" horiz-adv-x="708" d="M76 582l391 417h209l-410 -430l262 -411h-188z" /> -<glyph unicode="›" horiz-adv-x="708" d="M18 158l410 430l-260 411h188l265 -424l-394 -417h-209z" /> -<glyph unicode="€" horiz-adv-x="1202" d="M57 528l25 129h113q6 76 24 148h-108l24 131h127q102 236 314 385t456 149q61 0 120.5 -8t88.5 -16l29 -8l-82 -176q-72 20 -158 20q-168 0 -315.5 -95t-229.5 -251h578l-51 -131h-580q-23 -76 -29 -148h551l-49 -129h-489q18 -160 121.5 -260t281.5 -100q47 0 95.5 6 t72.5 14l25 7l4 -189q-92 -31 -207 -31q-258 0 -424 152t-186 401h-142z" /> -<glyph unicode="™" horiz-adv-x="2041" d="M176 1309v137h778v-137h-311v-764h-156v764h-311zM1020 545l72 901h141l213 -471l29 -86h4q12 49 26 86l213 471h144l69 -901h-153l-43 538l2 62h-4l-195 -434h-125l-194 434h-5l3 -62l-43 -538h-154z" /> -<glyph unicode="" horiz-adv-x="1035" d="M0 1035h1035v-1035h-1035v1035z" /> -<glyph unicode="fi" horiz-adv-x="1193" d="M92 0l170 874h-129l31 162h129l8 39q18 96 60 169t89.5 112t107.5 63.5t104.5 30.5t87.5 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-6 -31h630l-202 -1036h-199l170 874h-430l-170 -874h-199zM961 1243l38 203h205l-41 -203h-202z" /> -<glyph unicode="fl" horiz-adv-x="1226" d="M92 0l168 864h-129l31 162h129l10 49q18 96 60 169t89.5 112t107.5 63.5t104.5 30.5t87.5 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-9 -41h244l-31 -162h-243l-168 -864h-199zM758 209q0 33 10 88l223 1149h199l-215 -1114q-10 -47 -10 -78q0 -84 92 -84l33 2 l-37 -176q-29 -4 -60 -4q-98 0 -166.5 49t-68.5 168z" /> -<glyph unicode="ffi" horiz-adv-x="1880" d="M92 0l170 874h-129l31 162h129l8 39q18 96 60 169t89.5 112t107.5 63.5t104.5 30.5t87.5 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-6 -31h487l8 39q18 96 60.5 169t89.5 112t107.5 63.5t104.5 30.5t87 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-6 -31h630 l-202 -1036h-199l170 874h-430l-170 -874h-199l170 874h-487l-170 -874h-199zM1647 1243l39 203h204l-41 -203h-202z" /> -<glyph unicode="ffl" horiz-adv-x="1912" d="M92 0l170 874h-129l31 162h129l8 39q18 96 60 169t89.5 112t107.5 63.5t104.5 30.5t87.5 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-6 -31h487l8 39q18 96 60.5 169t89.5 112t107.5 63.5t104.5 30.5t87 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-6 -31h243 l-30 -162h-244l-170 -874h-199l170 874h-487l-170 -874h-199zM1444 209q0 33 10 88l223 1149h199l-215 -1114q-10 -47 -10 -78q0 -84 92 -84l33 2l-37 -176q-29 -4 -60 -4q-98 0 -166.5 49t-68.5 168z" /> -</font> -</defs></svg>
\ No newline at end of file diff --git a/web/cobrands/stevenage/fonts/MuseoSans_500_Italic-webfont.ttf b/web/cobrands/stevenage/fonts/MuseoSans_500_Italic-webfont.ttf Binary files differdeleted file mode 100755 index 445af3ac1..000000000 --- a/web/cobrands/stevenage/fonts/MuseoSans_500_Italic-webfont.ttf +++ /dev/null diff --git a/web/cobrands/stevenage/fonts/MuseoSans_500_Italic-webfont.woff b/web/cobrands/stevenage/fonts/MuseoSans_500_Italic-webfont.woff Binary files differdeleted file mode 100755 index 453194a98..000000000 --- a/web/cobrands/stevenage/fonts/MuseoSans_500_Italic-webfont.woff +++ /dev/null diff --git a/web/cobrands/stevenage/layout.scss b/web/cobrands/stevenage/layout.scss index ff7080c11..07429b302 100644 --- a/web/cobrands/stevenage/layout.scss +++ b/web/cobrands/stevenage/layout.scss @@ -1,68 +1,247 @@ -@font-face { - font-family: 'MuseoSans'; - src: url('fonts/MuseoSans_300-webfont.eot'); - src: url('fonts/MuseoSans_300-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/MuseoSans_300-webfont.woff') format('woff'), - url('fonts/MuseoSans_300-webfont.ttf') format('truetype'), - url('fonts/MuseoSans_300-webfont.svg#MuseoSans300') format('svg'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'MuseoSans'; - src: url('fonts/MuseoSans_300_Italic-webfont.eot'); - src: url('fonts/MuseoSans_300_Italic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/MuseoSans_300_Italic-webfont.woff') format('woff'), - url('fonts/MuseoSans_300_Italic-webfont.ttf') format('truetype'), - url('fonts/MuseoSans_300_Italic-webfont.svg#MuseoSans300Italic') format('svg'); - font-weight: normal; - font-style: italic; -} - -@font-face { - font-family: 'MuseoSans'; - src: url('fonts/MuseoSans_500-webfont.eot'); - src: url('fonts/MuseoSans_500-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/MuseoSans_500-webfont.woff') format('woff'), - url('fonts/MuseoSans_500-webfont.ttf') format('truetype'), - url('fonts/MuseoSans_500-webfont.svg#MuseoSans500') format('svg'); - font-weight: bold; - font-style: normal; -} - -@font-face { - font-family: 'MuseoSans'; - src: url('fonts/MuseoSans_500_Italic-webfont.eot'); - src: url('fonts/MuseoSans_500_Italic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/MuseoSans_500_Italic-webfont.woff') format('woff'), - url('fonts/MuseoSans_500_Italic-webfont.ttf') format('truetype'), - url('fonts/MuseoSans_500_Italic-webfont.svg#MuseoSans500Italic') format('svg'); - font-weight: bold; - font-style: italic; -} - -@font-face { - font-family: 'Museo300-display'; - src: url('fonts/Museo300-Regular-webfont.eot'); - src: url('fonts/Museo300-Regular-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/Museo300-Regular-webfont.woff') format('woff'), - url('fonts/Museo300-Regular-webfont.ttf') format('truetype'), - url('fonts/Museo300-Regular-webfont.svg#Museo300') format('svg'); - font-weight: normal; - font-style: normal; -} - -/* Opera has a bug (from around 10.5 upwards to current 11.6) with showing the - * table caption *at all* if the header is set to a font-face :( */ -noindex:-o-prefocus, #site-header { - font-family: sans-serif; -} - -h3, h4 { - font-weight: bold; -} - -@import "_colours"; -@import "_layout"; +@import "colours"; +@import "../sass/layout"; +// d523b431 - "Stevenage Home page styles" +// 2a23e09f - Moved menu on map page and reverted to full header. + +// d523b431 +.nav-wrapper{ + .nav-wrapper-2{ + min-height: auto; + // e7c122a4 / 0b0a619b / - "Removed mySociety menu and positioned menu" + top: 9.5em; + border-top: none; + padding-top: 0.75em; + padding-bottom: 0.25em; + background-color: #6b6969; + @include background(linear-gradient(#6b6969, #555454)); + } +} + +.ie6, .ie7 { + // 452ce6a0 - Added IE6/7 position change to front page header too + #stevenage_cc_header { + position:absolute; + top:0; + } + // 39ec0005 - Removed position static from nav in IE6/7 + .nav-wrapper { + .nav-wrapper-2 { + position: absolute; + } + } + + .content { + margin-top: 7em; + } +} + +// d523b431 +#main-nav { + ul { + float: none; + li { + a, span { + margin: 0; + margin-right: 2px; + font-family: 'PTSansRegular', "PT Sans", Verdana, Arial, sans-serif; + } + } + &#main-menu { + li { + a, span { + padding: 0.5em 0.75em; + font-size: 0.8em; + margin: 0; + @include border-radius(0.25em); + } + a.report-a-problem-btn { + padding:0.5em 0.75em; + margin:0; + margin-left: 0.25em; + color:#fff; + } + span { + color: #fff; + background-color: #066539; + } + } + } + } +} + +// 452ce6a0 - "Added IE6/7 position change to front page header too" - +// turned off border for ie6-8 .content - why, as box-shadow still on? +.ie6, .ie7, .ie8 { + .content { + border: none; + } +} + +body.mappage { + // 15591af7 - Stevenage Map page changes + #stevenage_cc_header { + position: fixed; + } + // 2a23e09f - Moved menu on map page and reverted to full header. + .content { + margin-top: 9em; + } + // 15591af7 - Stevenage Map page changes + #main-nav ul#main-menu li a, #main-nav ul#main-menu li span { + padding: 0.5em 0.75em; + } + #main-nav ul#main-menu li a.report-a-problem-btn { + padding: 0.5em 0.75em; + margin: 0 0 0 0.25em; + } + // 2a23e09f - Moved menu on map page and reverted to full header. + .nav-wrapper { + .nav-wrapper-2 { + position: absolute; + top: 11em; + bottom: auto; + left: 0.5em; + width: 29em; + padding-top: 0.15em; + z-index: 0; + @include background(linear-gradient(#6b6969, #555454)); + } + } +} + +.ie6, .ie7 { + // 82d34958 - IE6/7 Positioning Tweaks on Council header + body.mappage { + // a7a564af - Stevenage IE8 position tweak + #stevenage_cc_header { + position:absolute; + top:0; + } + // ab958bc5 - IE6/7 Tweaks + .content { + margin-top:6em; + } + .nav-wrapper { + .nav-wrapper-2 { + position: absolute; + } + } + } +} +// a7a564a - Stevenage IE8 position tweak +// 15591af7 - Stevenage Map page changes +.ie8 { + body.mappage { + #stevenage_cc_header{ + position:absolute; + top:0; + } + .nav-wrapper { + .nav-wrapper-2 { + position: absolute; + } + } + } +} + +// d523b431 +body.fullwidthpage { + .content { + @include box-shadow(none); + background: none; + } +} + +// 4d5998fb - Missed a sticky-sidebar +body.twothirdswidthpage { + .content { + .sticky-sidebar { + aside { + top: 19em; + } + } + } +} + +// 15591af7 - Stevenage Map page changes +#map_box { + top: 140px; +} +#fms_pan_zoom { + top: 190px !important; +} + +// 2a23e09f - Moved menu on map page and reverted to full header. +#report-a-problem-sidebar { + top: 9em; +} + +// d523b431 +body.frontpage { + .nav-wrapper-2 { + height: auto; + } + #site-header { + height: auto; + } + // 1162d5c8 - Changed the colour of the user text when you're logged in to be more readable + #user-meta { + p { + color: #fff; + } + } +} + +// d523b431 +#front-main { + background: #fff; + color: #222; + margin: 0 auto; + margin-top: 1.5em; + max-width: 60em; +} + +// Front page button colour +#front-main { + #postcodeForm { + div { + input#sub { + color: #fff; + background: $primary; + &:hover { + background: lighten($primary, 10%); + } + } + } + } +} + +// 0c5d50bc - Added margin to front page report box to push below nav in IE6/7 +.ie6, .ie7 { + #front-main { + margin-top: 5.5em; + } +} + +@media only screen and (min-width: 48em) and (max-width: 61em) { + // d523b431 + #main-nav { + float: left; + } + .nav-wrapper { + .nav-wrapper-2 { + @include background(linear-gradient(#222, #555 30%, #555 60%, #222)); + } + } + // f432a72d - moved sticky sidebars down a bit to account for the larger header + body.twothirdswidthpage { + .content { + .sticky-sidebar { + aside { + top: 19em; + } + } + } + } +} diff --git a/web/cobrands/trinidadtobago/_colours.scss b/web/cobrands/trinidadtobago/_colours.scss new file mode 100644 index 000000000..03936ff10 --- /dev/null +++ b/web/cobrands/trinidadtobago/_colours.scss @@ -0,0 +1,21 @@ +/* COLOURS */ + +$trinidad_primary: #A90004; +$trinidad_secondary: white; + +$primary: $trinidad_primary; +$primary_b: #000000; +$primary_text: $trinidad_secondary; + +$base_bg: $trinidad_secondary; +$base_fg: #000; + +$map_nav_bg: $trinidad_secondary; +$nav_fg: #000; +$nav_fg_hover: $primary; + +$col_click_map: $trinidad_secondary; +$col_click_map_dark: darken($trinidad_secondary, 10%); + +$col_fixed_label: #00BD08; +$col_fixed_label_dark: #4B8304; diff --git a/web/cobrands/trinidadtobago/base.scss b/web/cobrands/trinidadtobago/base.scss new file mode 100644 index 000000000..9fccf92db --- /dev/null +++ b/web/cobrands/trinidadtobago/base.scss @@ -0,0 +1,7 @@ +@import "../sass/h5bp"; +@import "./_colours"; +@import "../sass/mixins"; +@import "compass"; + +@import "../sass/base"; + diff --git a/web/cobrands/trinidadtobago/config.rb b/web/cobrands/trinidadtobago/config.rb new file mode 100644 index 000000000..cab97b18f --- /dev/null +++ b/web/cobrands/trinidadtobago/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/trinidadtobago/layout.scss b/web/cobrands/trinidadtobago/layout.scss new file mode 100644 index 000000000..67cc7307f --- /dev/null +++ b/web/cobrands/trinidadtobago/layout.scss @@ -0,0 +1,6 @@ +@import "_colours"; +@import "../sass/layout"; + +.big-green-banner { + background-color: $trinidad_primary; +} diff --git a/web/cobrands/zerotb/_colours.scss b/web/cobrands/zerotb/_colours.scss new file mode 100644 index 000000000..a5eb83b71 --- /dev/null +++ b/web/cobrands/zerotb/_colours.scss @@ -0,0 +1,24 @@ +/* COLOURS */ + +$white: #ffffff; +$black: #000000; + +$primary: $black; +$primary_b: $black; +$primary_text: $white; + +$base_bg: $white; +$base_fg: #000; + +$map_nav_bg: $black; +$nav_fg: #ffffff; +$nav_fg_hover: #000; + +$col_click_map: $black; +$col_click_map_dark: darken($black, 10%); + +$col_fixed_label: #00BD08; +$col_fixed_label_dark: #4B8304; + +$button-color: #FF5308; +$alt-background: #f5f5f5; diff --git a/web/cobrands/zerotb/base.scss b/web/cobrands/zerotb/base.scss new file mode 100644 index 000000000..db612094d --- /dev/null +++ b/web/cobrands/zerotb/base.scss @@ -0,0 +1,120 @@ +@import "../sass/h5bp"; +@import "./_colours"; +@import "../sass/mixins"; +@import "compass"; + +@import url(http://fonts.googleapis.com/css?family=Lato:300,700); + +$body-font: 'Lato', sans-serif !default; +$meta-font: 'Lato', sans-serif !default; +$heading-font: 'Lato', sans-serif !default; + +@import "../sass/base"; + +body { + font-weight: 300; +} + +input { + background-color: $alt-background; +} + +#front-main { + h2 { + font-weight: 300; + } + + #postcodeForm { + div { + border: 0px; + background: $primary_b; + select#clinic, + input#pc { + background-color: $alt-background; + } + select#clinic { + border: 0; + border-radius: 0px; + display: table-cell; + line-height: 1.5em; + padding: 0.25em 2%; + } + .select2-container, + select#clinic, + input#pc { + border: 0px; + border-radius: 0px; + box-shadow: none; + width: 80%; + } + input#sub { + background-color: $button-color; + border: 1px solid $alt-background; + border-radius: 5px; + color: white; + margin-left: 5px; + } + input#show_report { + width: 14%; + margin-left: 5px; + } + .select2-container { + display: inline-block; + text-align: left; + a { + line-height: 1.5em; + padding: 0.25em 2%; + } + } + .select2-display-none { + display: none; + } + } + } +} + +#site-logo { + background: none; + text-indent: 0px; + text-transform: uppercase; + width: auto; + margin-right: 80px; + @media( min-width: 350px ) { + margin-top: 0.5em; + } + a { + color: white; + &:hover { + text-decoration: none; + } + } + p { + font-weight: 300; + margin-bottom: 0em; + } + .orange { + color: $button-color; + font-weight: bold; + } + #brought-to-you { + display: none; + } +} + +button.green-btn, +input.green-btn, +.green-btn { + background: none; + background-color: $button-color; + border: 1px solid $alt-background; + border-radius: 5px; + color: white; +} + +button.green-btn:hover, +input.green-btn:hover, +.green-btn:hover { + background: none; + background-color: darken( $button-color, 10% ); + border: 1px solid $alt-background; +} diff --git a/web/cobrands/zerotb/config.rb b/web/cobrands/zerotb/config.rb new file mode 100644 index 000000000..cab97b18f --- /dev/null +++ b/web/cobrands/zerotb/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/zerotb/images/pin-clinic-big.png b/web/cobrands/zerotb/images/pin-clinic-big.png Binary files differnew file mode 100644 index 000000000..c1e359828 --- /dev/null +++ b/web/cobrands/zerotb/images/pin-clinic-big.png diff --git a/web/cobrands/zerotb/images/pin-clinic.png b/web/cobrands/zerotb/images/pin-clinic.png Binary files differnew file mode 100644 index 000000000..5cc0828fd --- /dev/null +++ b/web/cobrands/zerotb/images/pin-clinic.png diff --git a/phonegap/www/i/pin-shadow-big.png b/web/cobrands/zerotb/images/pin-shadow-big.png Binary files differindex 113184b94..113184b94 100644 --- a/phonegap/www/i/pin-shadow-big.png +++ b/web/cobrands/zerotb/images/pin-shadow-big.png diff --git a/phonegap/www/i/pin-shadow.png b/web/cobrands/zerotb/images/pin-shadow.png Binary files differindex 8b470592a..8b470592a 100644 --- a/phonegap/www/i/pin-shadow.png +++ b/web/cobrands/zerotb/images/pin-shadow.png diff --git a/web/cobrands/zerotb/layout.scss b/web/cobrands/zerotb/layout.scss new file mode 100644 index 000000000..ea8102ded --- /dev/null +++ b/web/cobrands/zerotb/layout.scss @@ -0,0 +1,121 @@ +@import "_colours"; +@import "../sass/layout"; + +body { + &.frontpage { + .nav-wrapper-2 { + background-color: $primary; + color: $primary_text; + height: auto; + } + + #site-header { + background-color: $base_bg; + } + + #site-logo { + background: none; + color: black; + width: auto; + a { + color: black; + } + p { + font-size: 2em; + font-weight: 300; + } + #brought-to-you { + display: block; + font-size: 0.75em; + } + } + } + &.mappage { + #main-nav { + ul#main-menu { + li { + a, + a.report-a-problem-btn, + span { + padding: 0.25em; + margin: 0.5em; + } + } + } + } + .nav-wrapper-2 { + min-height: 4em; + } + } +} + +.nav-wrapper { + .nav-wrapper-2 { + border: none; + min-height: 0; + } +} + +#main-nav { + ul#mysoc-menu { + li { + a { + color: $primary_text; + } + } + } + ul#main-menu { + li { + span { + color: $primary_text; + } + } + } +} + +#site-header { + background: $primary; + height: auto; +} + +.container { + padding: 0em 1em; +} + +#front-main { + #front-main-container { + max-width: 40em; + h2 { + text-align: left; + } + } + #postcodeForm { + div { + width: 30em; + .select2-container, + select#clinic, + input#pc { + max-width: none; + width: 27em; + } + input#show_report { + display: block; + float: right; + width: 3em; + } + } + } + + .select2-container { + a { + color: #444; + text-align: left; + text-decoration: none; + } + } +} + +.content { + background-color: $alt-background; + box-shadow: none; +} diff --git a/web/cobrands/zurich/_colours.scss b/web/cobrands/zurich/_colours.scss index 1a62d0282..8ae175583 100644 --- a/web/cobrands/zurich/_colours.scss +++ b/web/cobrands/zurich/_colours.scss @@ -1,9 +1,27 @@ /* COLOURS */ -$primary: #FFD000; -$primary_b: #F3B11E; -$primary_text: #222; +$dark_blue: rgb(0, 79, 167); +$zurich_blue: rgb(0, 81, 169); + +$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%); + +$col_fixed_label: #648721; +$col_fixed_label_dark: #4B8304; + +$mobile_menu_tab_bg_col: #FFFFFF; // the white border and tab on mobile site +$mobile_header_blue: #366AB6; // close match to Zurich logo_portal.jpg -$contrast1: #00BD08; -$contrast1_dark: #4B8304; -$contrast2: #AA8D11; diff --git a/web/cobrands/zurich/_zurich.scss b/web/cobrands/zurich/_zurich.scss new file mode 100644 index 000000000..746da4ece --- /dev/null +++ b/web/cobrands/zurich/_zurich.scss @@ -0,0 +1,46 @@ +// Some things from the Zurich stylesheet + +a { + color: #126094; + text-decoration: none; +} +a:hover { + text-decoration: underline; +} + +// mySociety addition for box shadow on front page with static image +body.frontpage #zurich-footer-wrapper { + padding: 1px 0; + @include box-shadow(0 -6px 6px -5px #000); +} + +#zurich-footer { + margin: 2em auto; // mySociety + font-size: 67.5%; + line-height: 1.5em; + clear: both; + background-image: url(bg_mainnav_portal.png); + background-repeat: repeat-x; + border: 1px solid #d8d8d8; + width: 953px; + padding: 3px 10px; + margin-bottom: 24px; + height: 1.5em +} + +#zurich-footer a { + padding-left: 20px; +} + +#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/base.scss b/web/cobrands/zurich/base.scss index 4594f832f..27aab1d63 100644 --- a/web/cobrands/zurich/base.scss +++ b/web/cobrands/zurich/base.scss @@ -1,7 +1,139 @@ -@import "../fixmystreet/_h5bp"; +@import "../sass/h5bp"; @import "./_colours"; -@import "../fixmystreet/_mixins"; +@import "../sass/mixins"; @import "compass"; -@import "../fixmystreet/_base"; +@import "../sass/base"; +/* Front page main box is in content now, so get rid of its margin from parent */ +#front-main { + margin: 0; +} + +/* Autocomplete dropdown on front page, don't want bullets */ +.ui-menu-item { + list-style-type: none; +} + +/* Simplify the problem header on a report page */ +.problem-header h1 { + font-size: 120%; + font-weight: bold; + margin: 0; +} +.problem-header .sub { + color: #666; + font-size: 85%; +} + +// Simplify the banner to just be a floated box. Colours etc. still +// inherited from the base stylesheet. +.banner { + p { + position: static; + float: right; + font-weight: bold; + padding: 1em; + margin: 0; + text-transform: uppercase; + text-align: center; + &:before { + display: none; + } + &#closed { + color: #1a1a1a; + background: #e25436; + } + &#progress { + color: #1a1a1a; + background: #f3d74b; + } + } +} + +#site-header { + background: $mobile_header_blue; + border-top: 4px solid $mobile_menu_tab_bg_col; + height: 48px; +} +#site-logo { + background: url(logo_portal.jpg) 0px -24px no-repeat; + width: 200px; + height: 48px; + left:0; + top:4px; +} +// Colour tab to match colour scheme +#nav-link { + width: 50px; + height: 48px; + background: url('/cobrands/zurich/tab-white.png') 0 0 no-repeat; +} +#front-howto #front_stats, +#front-main #postcodeForm { + background-color: $mobile_header_blue; +} + +// fix here: +// a percentage width on input#pc breaks iPhone landscape/portrait switching +// and the other changes make this fix pretty + +#front-main #postcodeForm div { + background: inherit; + border-color:transparent; + input#pc { + max-width: 15em; + background-color: #fff; + } + input#sub { + width: 3em; + } +} + +// No grey background or other bits +// The amount of resetting here shows this needs refactoring, so that it is FMS making the changes +// Also look into why full-width pulls things out, but then it is its children +// that have to recompensate with padding. +h4.static-with-rule { + color: black; + font-size: 1em; + font-weight: bold; + text-transform: none; + background: none; + padding-left: 0; + padding-right: 0; + border-top: 0.25em solid #e5e5e5; +} +.issue-list { + border-bottom: none; + li { + padding-left: 0; + padding-right: 0; + background: none; + } +} + +.issue-list-a { + border-bottom: none; + li { + background: none; + .text { + .img { + padding-right: 1em; + } + } + } +} + +.form-txt-submit-box input[type=submit] { + width:auto; // 28% is too narrow + padding-left: 0.8em; + padding-right: 0.8em; +} + +#fms_pan_zoom_panup, +#fms_pan_zoom_pandown, +#fms_pan_zoom_panleft, +#fms_pan_zoom_panright { + display: none; +} diff --git a/web/cobrands/zurich/bg_mainnav_portal.png b/web/cobrands/zurich/bg_mainnav_portal.png Binary files differnew file mode 100644 index 000000000..093ef6304 --- /dev/null +++ b/web/cobrands/zurich/bg_mainnav_portal.png diff --git a/web/cobrands/zurich/layout.scss b/web/cobrands/zurich/layout.scss index abaa25224..03f8b3143 100644 --- a/web/cobrands/zurich/layout.scss +++ b/web/cobrands/zurich/layout.scss @@ -1,3 +1,336 @@ -@import "_colours"; -@import "../fixmystreet/_layout"; +@import "colours"; +@import "../sass/layout"; +@import "zurich"; + +// Things to override from parent stylesheet + +// White background, so no shadow or margin needed. +.content { + color: #3c3c3c; + @include box-shadow(none); +} +.ie6, .ie7, .ie8 { + .content { + border: none; + } +} +// Except on map pages (which includes the front page) +body.mappage .content, body.frontpage .content { + @include box-shadow(0 0 6px 1px #000); +} +.ie6, .ie7, .ie8 { + body.mappage .content, body.frontpage .content { + border: 1px solid #666; + } +} +/* The header on a map page needs a shadow too */ +body.mappage .nav-wrapper-2 { + @include box-shadow(0 0 6px 1px #000); +} +/* Except on admin pages where there's an admin nav directly underneath it */ +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; + background: url(logo_portal.x.jpg) top left repeat-x; +} + +body.frontpage #site-logo, #site-logo { + width: 415px; + height: 83px; + background: url(logo_portal.jpg) top left no-repeat; + top: 0; + left: auto; // base set this to 0 +} + +// Static map on front page +body.frontpage { + .table-cell { + background-position: 50% 117px; + background-repeat: no-repeat; + background-image: url(mapbg-1024.jpg); + @media all and (min-width: 1025px) { + background-image: url(mapbg-1600.jpg); + } + .content { + margin: 2em auto; // Spacing around front content on top of static map + } + } + + #site-header { + height: 117px; + background-color: #fff; + @include box-shadow(0 0 6px 1px #000); + } +} + +#site-logo-text { + position: absolute; + top: 0; + z-index: 3; + padding-top: 83px; + padding-left: 10px; + color: #585858; + font-size: 85%; +} +body.mappage #site-logo-text { + position: fixed; +} + +.nav-wrapper { + .nav-wrapper-2 { + border-top: none; + } + .nav-wrapper-3 { + height: 99px; + padding-top: 18px; + } +} + +body.mappage { + .nav-wrapper { + .nav-wrapper-2 { + border-top: none; + height: 117px; // 99px+18px for padding + padding: 0 10px; + box-sizing: border-box; + } + } + /* Ugh :( But first wrapper is the caption, second is the fixed (so first we + can do padding on) so a third seems necessary for the background then. */ + .nav-wrapper-3 { + height: 99px; + padding-top: 18px; + background: #fff url(logo_portal.x.jpg) top left repeat-x; + } + #site-logo { + margin-left: 10px; + } +} + +// Logged in notice in footer (appearing in header) +.nav-wrapper-2 p:first-child { + font-weight: bold; + margin-top: 0.75em; +} +.nav-wrapper-2 p { + line-height: 1.2; + color: white; + clear: right; + float: right; + margin: 0 1em 0 0; + font-size: 85%; + a { + color: white; + font-size: 85%; + } + a:hover { + color: white; + } +} + +#front-main { + background-color: inherit; + color: inherit; + margin: 0 0 2em 0; + #postcodeForm div { + border-color: $dark_blue; + input#pc { + max-width: none; + } + } +} + +#zurich-main-nav { + margin: -1em -1em 1em -1em; // -1em spreads back out over content's 1em padding + padding: 0; + background-color: #6A6869; + + ul { + overflow:auto; + margin:0 0 0 0; + list-style: none; + padding: 0; + li { + font-size: 80%; + float:left; + list-style: none; + margin:0; + color: #fff; + a, span { + display: block; + padding: 0.75em 1em; + } + a { + color: #fff; + text-decoration: none; + &:hover { + background-color: #333; + } + } + span { + background-color: $zurich_blue; + } + } + } +} + +body.mappage { + #main-nav { + width: auto; + } + #main-nav ul#main-menu li a, + #main-nav ul#main-menu li span { + padding: 0.75em; + } + #zurich-footer { + display: none; + } +} + +body.twothirdswidthpage { + .content { + aside { + @include box-shadow(none); + } + .sticky-sidebar aside { + top: 14em; // overrides default value, due to Zurich nav at top of content + } + } +} + +// Zurich base has made this a more simple construct. The top is to pull it up +// over the content padding to be attached to the top of the content area. +// We reduce the padding as no pin image, and change the background. +.banner { + top: -1em; + p { + &#fixed { + padding-top: 2em; + background: $col_fixed_label; + @include background(linear-gradient(#769643, $col_fixed_label 4px)); + } + &#closed { + padding-top: 2em; + background-image: none; + } + } +} +.ie6 .banner p { + &#fixed { + background-image: none; + } +} + +#fms_pan_zoom { + top: 9em !important; +} +#fms_pan_zoom_zoomin { + top: 0 !important; +} +#fms_pan_zoom_zoomout { + top: 44px !important; +} + +// Admin specific changes + +body.fullwidthpage.admin .content { + width: 100%; +} + +body.mappage.admin .content { + margin-top: 6em; + margin-left: 0.5em; +} +.admin { + .content { + margin: 2em 0 1em; + padding: 0 0 0 0; + ul.no-bullets { + margin-left: 0; + > li { + list-style: none; + } + } + li.assignation { + list-style: none; + } + .mock-label { + font-weight: bold; + padding-right: 0.333em; + } + } + + #zurich-footer { + margin: 2em auto 3em auto; + } +} + +.admin-nav-wrapper { + background-color: white; + padding: 1.5em 0 1em; +} +body.mappage .admin-nav-wrapper { + box-sizing: border-box; + padding-left: 10px; + padding-right: 10px; + position: fixed; + width: 100%; + @include box-shadow(0 0 6px 1px #000); +} + +.admin-nav { + background: #f4f4f4; + @include background(linear-gradient(#fbfbfb, #efefef)); + border-bottom: 2px solid $table_border_color; + ul { + overflow:auto; + margin:0 0 -2px 0; + list-style: none; + padding: 0; + border-top: 1px solid $table_border_color; + border-left: 1px solid $table_border_color; + border-right: 1px solid $table_border_color; + li { + border-right: 1px solid $table_border_color; + float:left; + list-style: none; + margin:0; + padding: 0.5em 1em; + font-weight: bold; + color: #000; + a { + color: #000; + } + } + li.search-box { + float: right; + } + li.current { + background-color: #fff; + border-bottom: 2px solid #fff; + } + li.search-box { + border:none; + padding: 0.2em 0.5em 0.2em 30px; + background-image: url('search-icon.png'); + background-position: 2px center; + background-repeat: no-repeat; + input { + height: 100%; + width: 12em; + border: none; + padding: 6px 0.5em; + } + } + } +} diff --git a/web/cobrands/zurich/logo_portal.jpg b/web/cobrands/zurich/logo_portal.jpg Binary files differnew file mode 100644 index 000000000..5677285e7 --- /dev/null +++ b/web/cobrands/zurich/logo_portal.jpg diff --git a/web/cobrands/zurich/logo_portal.x.jpg b/web/cobrands/zurich/logo_portal.x.jpg Binary files differnew file mode 100644 index 000000000..c0cfef240 --- /dev/null +++ b/web/cobrands/zurich/logo_portal.x.jpg diff --git a/web/cobrands/zurich/mapbg-1024.jpg b/web/cobrands/zurich/mapbg-1024.jpg Binary files differnew file mode 100644 index 000000000..9adb82b98 --- /dev/null +++ b/web/cobrands/zurich/mapbg-1024.jpg diff --git a/web/cobrands/zurich/mapbg-1600.jpg b/web/cobrands/zurich/mapbg-1600.jpg Binary files differnew file mode 100644 index 000000000..9321bd612 --- /dev/null +++ b/web/cobrands/zurich/mapbg-1600.jpg diff --git a/web/cobrands/zurich/search-icon-white.png b/web/cobrands/zurich/search-icon-white.png Binary files differnew file mode 100644 index 000000000..59f3f1f82 --- /dev/null +++ b/web/cobrands/zurich/search-icon-white.png diff --git a/web/cobrands/zurich/search-icon.png b/web/cobrands/zurich/search-icon.png Binary files differnew file mode 100644 index 000000000..b74f9397f --- /dev/null +++ b/web/cobrands/zurich/search-icon.png diff --git a/web/cobrands/zurich/tab-white.png b/web/cobrands/zurich/tab-white.png Binary files differnew file mode 100644 index 000000000..17e4f177e --- /dev/null +++ b/web/cobrands/zurich/tab-white.png diff --git a/web/cobrands/zurich/zurich-wmts-hybrid.xml b/web/cobrands/zurich/zurich-wmts-hybrid.xml new file mode 100644 index 000000000..f1580cc89 --- /dev/null +++ b/web/cobrands/zurich/zurich-wmts-hybrid.xml @@ -0,0 +1,356 @@ +<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+
+
+
+
+
+
+
+
+
+<Capabilities xmlns="http://www.opengis.net/wmts/1.0"
+ xmlns:ows="http://www.opengis.net/ows/1.1"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:gml="http://www.opengis.net/gml"
+ xsi:schemaLocation="http://www.opengis.net/wmts/1.0 http://schemas.opengis.net/wmts/1.0/wmtsGetCapabilities_response.xsd"
+ version="1.0.0">
+ <!-- Service Identification -->
+ <ows:ServiceIdentification>
+ <ows:Title>Hybrid</ows:Title>
+ <ows:ServiceType>OGC WMTS</ows:ServiceType>
+ <ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion>
+</ows:ServiceIdentification> <!-- Operations Metadata --> <ows:OperationsMetadata>
+ <ows:Operation name="GetCapabilities">
+ <ows:DCP>
+ <ows:HTTP>
+ <ows:Get xlink:href="http://www.wmts.stadt-zuerich.ch/arcgis/rest/services/Hybrid/MapServer/WMTS/1.0.0/WMTSCapabilities.xml">
+ <ows:Constraint name="GetEncoding">
+ <ows:AllowedValues>
+ <ows:Value>RESTful</ows:Value>
+ </ows:AllowedValues>
+ </ows:Constraint>
+ </ows:Get>
+ <!-- add KVP binding in 10.1 -->
+ <ows:Get xlink:href="http://www.wmts.stadt-zuerich.ch/arcgis/rest/services/Hybrid/MapServer/WMTS?">
+ <ows:Constraint name="GetEncoding">
+ <ows:AllowedValues>
+ <ows:Value>KVP</ows:Value>
+ </ows:AllowedValues>
+ </ows:Constraint>
+ </ows:Get>
+ </ows:HTTP>
+ </ows:DCP>
+ </ows:Operation>
+ <ows:Operation name="GetTile">
+ <ows:DCP>
+ <ows:HTTP>
+ <ows:Get xlink:href="http://www.wmts.stadt-zuerich.ch/arcgis/rest/services/Hybrid/MapServer/WMTS/tile/1.0.0/">
+ <ows:Constraint name="GetEncoding">
+ <ows:AllowedValues>
+ <ows:Value>RESTful</ows:Value>
+ </ows:AllowedValues>
+ </ows:Constraint>
+ </ows:Get>
+ <ows:Get xlink:href="http://www.wmts.stadt-zuerich.ch/arcgis/rest/services/Hybrid/MapServer/WMTS?">
+ <ows:Constraint name="GetEncoding">
+ <ows:AllowedValues>
+ <ows:Value>KVP</ows:Value>
+ </ows:AllowedValues>
+ </ows:Constraint>
+ </ows:Get>
+ </ows:HTTP>
+ </ows:DCP>
+ </ows:Operation>
+</ows:OperationsMetadata>
+<Contents>
+ <!--Layer-->
+ <Layer>
+ <ows:Title>Hybrid</ows:Title>
+ <ows:Identifier>Hybrid</ows:Identifier>
+
+ <ows:BoundingBox crs="urn:ogc:def:crs:EPSG::21781">
+ <ows:LowerCorner>665000.0 230000.0</ows:LowerCorner>
+ <ows:UpperCorner>700000.0 270000.0</ows:UpperCorner>
+ </ows:BoundingBox>
+
+ <ows:WGS84BoundingBox crs="urn:ogc:def:crs:OGC:2:84">
+ <ows:LowerCorner>8.297842338812158 47.21471096634782</ows:LowerCorner>
+ <ows:UpperCorner>8.768863108218179 47.57887356607757</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ <Style isDefault="true">
+ <ows:Title>Default Style</ows:Title>
+ <ows:Identifier>default</ows:Identifier>
+ </Style>
+ <Format>image/jpgpng</Format>
+ <TileMatrixSetLink>
+ <TileMatrixSet>default028mm</TileMatrixSet>
+ </TileMatrixSetLink>
+ <TileMatrixSetLink>
+ <TileMatrixSet>nativeTileMatrixSet</TileMatrixSet>
+ </TileMatrixSetLink>
+
+ <ResourceURL format="image/jpgpng" resourceType="tile" template="http://www.wmts.stadt-zuerich.ch/arcgis/rest/services/Hybrid/MapServer/WMTS/tile/1.0.0/Hybrid/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}" />
+ </Layer>
+ <!--TileMatrixSet-->
+ <TileMatrixSet>
+ <ows:Title>Default TileMatrix using 0.28mm</ows:Title>
+ <ows:Abstract>The tile matrix set that has scale values calculated based on the dpi defined by OGC specification (dpi assumes 0.28mm as the physical distance of a pixel).</ows:Abstract>
+ <ows:Identifier>default028mm</ows:Identifier>
+ <ows:SupportedCRS>urn:ogc:def:crs:EPSG::21781</ows:SupportedCRS>
+
+ <TileMatrix>
+ <ows:Identifier>0</ows:Identifier>
+ <ScaleDenominator>236235.11904761902</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>3</MatrixWidth>
+ <MatrixHeight>4</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>1</ows:Identifier>
+ <ScaleDenominator>118117.55952380951</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>5</MatrixWidth>
+ <MatrixHeight>6</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>2</ows:Identifier>
+ <ScaleDenominator>60476.19047619047</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>9</MatrixWidth>
+ <MatrixHeight>10</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>3</ows:Identifier>
+ <ScaleDenominator>30238.095238095237</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>17</MatrixWidth>
+ <MatrixHeight>19</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>4</ows:Identifier>
+ <ScaleDenominator>15119.047619047618</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>33</MatrixWidth>
+ <MatrixHeight>38</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>5</ows:Identifier>
+ <ScaleDenominator>7559.523809523809</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>66</MatrixWidth>
+ <MatrixHeight>75</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>6</ows:Identifier>
+ <ScaleDenominator>3779.7619047619046</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>131</MatrixWidth>
+ <MatrixHeight>149</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>7</ows:Identifier>
+ <ScaleDenominator>1889.8809523809523</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>260</MatrixWidth>
+ <MatrixHeight>296</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>8</ows:Identifier>
+ <ScaleDenominator>944.9404761904761</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>518</MatrixWidth>
+ <MatrixHeight>591</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>9</ows:Identifier>
+ <ScaleDenominator>472.4702380952381</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>1035</MatrixWidth>
+ <MatrixHeight>1182</MatrixHeight>
+
+ </TileMatrix>
+
+ </TileMatrixSet>
+ <TileMatrixSet>
+ <ows:Title>Native TiledMapService TileMatrixSet</ows:Title>
+ <ows:Abstract>the tile matrix set that has scale values calculated based on the dpi defined by ArcGIS Server tiled map service. The current tile dpi is 96</ows:Abstract>
+ <ows:Identifier>nativeTileMatrixSet</ows:Identifier>
+ <ows:SupportedCRS>urn:ogc:def:crs:EPSG::21781</ows:SupportedCRS>
+
+ <TileMatrix>
+ <ows:Identifier>0</ows:Identifier>
+ <ScaleDenominator>250000.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>3</MatrixWidth>
+ <MatrixHeight>4</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>1</ows:Identifier>
+ <ScaleDenominator>125000.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>5</MatrixWidth>
+ <MatrixHeight>6</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>2</ows:Identifier>
+ <ScaleDenominator>64000.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>9</MatrixWidth>
+ <MatrixHeight>10</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>3</ows:Identifier>
+ <ScaleDenominator>32000.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>17</MatrixWidth>
+ <MatrixHeight>19</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>4</ows:Identifier>
+ <ScaleDenominator>16000.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>33</MatrixWidth>
+ <MatrixHeight>38</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>5</ows:Identifier>
+ <ScaleDenominator>8000.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>66</MatrixWidth>
+ <MatrixHeight>75</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>6</ows:Identifier>
+ <ScaleDenominator>4000.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>131</MatrixWidth>
+ <MatrixHeight>149</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>7</ows:Identifier>
+ <ScaleDenominator>2000.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>260</MatrixWidth>
+ <MatrixHeight>296</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>8</ows:Identifier>
+ <ScaleDenominator>1000.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>518</MatrixWidth>
+ <MatrixHeight>591</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>9</ows:Identifier>
+ <ScaleDenominator>500.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>1035</MatrixWidth>
+ <MatrixHeight>1182</MatrixHeight>
+
+ </TileMatrix>
+
+ </TileMatrixSet>
+
+</Contents>
+<ServiceMetadataURL xlink:href="http://www.wmts.stadt-zuerich.ch/arcgis/rest/services/Hybrid/MapServer/WMTS/1.0.0/WMTSCapabilities.xml" />
+</Capabilities>
diff --git a/web/cobrands/zurich/zurich-wmts-map.xml b/web/cobrands/zurich/zurich-wmts-map.xml new file mode 100644 index 000000000..b78f88826 --- /dev/null +++ b/web/cobrands/zurich/zurich-wmts-map.xml @@ -0,0 +1,356 @@ +<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+
+
+
+
+
+
+
+
+
+<Capabilities xmlns="http://www.opengis.net/wmts/1.0"
+ xmlns:ows="http://www.opengis.net/ows/1.1"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:gml="http://www.opengis.net/gml"
+ xsi:schemaLocation="http://www.opengis.net/wmts/1.0 http://schemas.opengis.net/wmts/1.0/wmtsGetCapabilities_response.xsd"
+ version="1.0.0">
+ <!-- Service Identification -->
+ <ows:ServiceIdentification>
+ <ows:Title>Stadtplan</ows:Title>
+ <ows:ServiceType>OGC WMTS</ows:ServiceType>
+ <ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion>
+</ows:ServiceIdentification> <!-- Operations Metadata --> <ows:OperationsMetadata>
+ <ows:Operation name="GetCapabilities">
+ <ows:DCP>
+ <ows:HTTP>
+ <ows:Get xlink:href="http://www.wmts.stadt-zuerich.ch/arcgis/rest/services/Stadtplan/MapServer/WMTS/1.0.0/WMTSCapabilities.xml">
+ <ows:Constraint name="GetEncoding">
+ <ows:AllowedValues>
+ <ows:Value>RESTful</ows:Value>
+ </ows:AllowedValues>
+ </ows:Constraint>
+ </ows:Get>
+ <!-- add KVP binding in 10.1 -->
+ <ows:Get xlink:href="http://www.wmts.stadt-zuerich.ch/arcgis/rest/services/Stadtplan/MapServer/WMTS?">
+ <ows:Constraint name="GetEncoding">
+ <ows:AllowedValues>
+ <ows:Value>KVP</ows:Value>
+ </ows:AllowedValues>
+ </ows:Constraint>
+ </ows:Get>
+ </ows:HTTP>
+ </ows:DCP>
+ </ows:Operation>
+ <ows:Operation name="GetTile">
+ <ows:DCP>
+ <ows:HTTP>
+ <ows:Get xlink:href="http://www.wmts.stadt-zuerich.ch/arcgis/rest/services/Stadtplan/MapServer/WMTS/tile/1.0.0/">
+ <ows:Constraint name="GetEncoding">
+ <ows:AllowedValues>
+ <ows:Value>RESTful</ows:Value>
+ </ows:AllowedValues>
+ </ows:Constraint>
+ </ows:Get>
+ <ows:Get xlink:href="http://www.wmts.stadt-zuerich.ch/arcgis/rest/services/Stadtplan/MapServer/WMTS?">
+ <ows:Constraint name="GetEncoding">
+ <ows:AllowedValues>
+ <ows:Value>KVP</ows:Value>
+ </ows:AllowedValues>
+ </ows:Constraint>
+ </ows:Get>
+ </ows:HTTP>
+ </ows:DCP>
+ </ows:Operation>
+</ows:OperationsMetadata>
+<Contents>
+ <!--Layer-->
+ <Layer>
+ <ows:Title>Stadtplan</ows:Title>
+ <ows:Identifier>Stadtplan</ows:Identifier>
+
+ <ows:BoundingBox crs="urn:ogc:def:crs:EPSG::21781">
+ <ows:LowerCorner>672499.0 238999.0</ows:LowerCorner>
+ <ows:UpperCorner>689999.0 256999.0</ows:UpperCorner>
+ </ows:BoundingBox>
+
+ <ows:WGS84BoundingBox crs="urn:ogc:def:crs:OGC:2:84">
+ <ows:LowerCorner>8.398302613481356 47.29709259053008</ows:LowerCorner>
+ <ows:UpperCorner>8.633312509540968 47.46115331797573</ows:UpperCorner>
+ </ows:WGS84BoundingBox>
+ <Style isDefault="true">
+ <ows:Title>Default Style</ows:Title>
+ <ows:Identifier>default</ows:Identifier>
+ </Style>
+ <Format>image/jpgpng</Format>
+ <TileMatrixSetLink>
+ <TileMatrixSet>default028mm</TileMatrixSet>
+ </TileMatrixSetLink>
+ <TileMatrixSetLink>
+ <TileMatrixSet>nativeTileMatrixSet</TileMatrixSet>
+ </TileMatrixSetLink>
+
+ <ResourceURL format="image/jpgpng" resourceType="tile" template="http://www.wmts.stadt-zuerich.ch/arcgis/rest/services/Stadtplan/MapServer/WMTS/tile/1.0.0/Stadtplan/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}" />
+ </Layer>
+ <!--TileMatrixSet-->
+ <TileMatrixSet>
+ <ows:Title>Default TileMatrix using 0.28mm</ows:Title>
+ <ows:Abstract>The tile matrix set that has scale values calculated based on the dpi defined by OGC specification (dpi assumes 0.28mm as the physical distance of a pixel).</ows:Abstract>
+ <ows:Identifier>default028mm</ows:Identifier>
+ <ows:SupportedCRS>urn:ogc:def:crs:EPSG::21781</ows:SupportedCRS>
+
+ <TileMatrix>
+ <ows:Identifier>0</ows:Identifier>
+ <ScaleDenominator>236235.11904761902</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>2</MatrixWidth>
+ <MatrixHeight>2</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>1</ows:Identifier>
+ <ScaleDenominator>118117.55952380951</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>3</MatrixWidth>
+ <MatrixHeight>3</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>2</ows:Identifier>
+ <ScaleDenominator>60476.19047619047</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>5</MatrixWidth>
+ <MatrixHeight>5</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>3</ows:Identifier>
+ <ScaleDenominator>30238.095238095237</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>9</MatrixWidth>
+ <MatrixHeight>9</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>4</ows:Identifier>
+ <ScaleDenominator>15119.047619047618</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>17</MatrixWidth>
+ <MatrixHeight>18</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>5</ows:Identifier>
+ <ScaleDenominator>7559.523809523809</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>34</MatrixWidth>
+ <MatrixHeight>35</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>6</ows:Identifier>
+ <ScaleDenominator>3779.7619047619046</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>66</MatrixWidth>
+ <MatrixHeight>68</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>7</ows:Identifier>
+ <ScaleDenominator>1889.8809523809523</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>130</MatrixWidth>
+ <MatrixHeight>134</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>8</ows:Identifier>
+ <ScaleDenominator>944.9404761904761</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>259</MatrixWidth>
+ <MatrixHeight>267</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>9</ows:Identifier>
+ <ScaleDenominator>472.4702380952381</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>517</MatrixWidth>
+ <MatrixHeight>533</MatrixHeight>
+
+ </TileMatrix>
+
+ </TileMatrixSet>
+ <TileMatrixSet>
+ <ows:Title>Native TiledMapService TileMatrixSet</ows:Title>
+ <ows:Abstract>the tile matrix set that has scale values calculated based on the dpi defined by ArcGIS Server tiled map service. The current tile dpi is 96</ows:Abstract>
+ <ows:Identifier>nativeTileMatrixSet</ows:Identifier>
+ <ows:SupportedCRS>urn:ogc:def:crs:EPSG::21781</ows:SupportedCRS>
+
+ <TileMatrix>
+ <ows:Identifier>0</ows:Identifier>
+ <ScaleDenominator>250000.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>2</MatrixWidth>
+ <MatrixHeight>2</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>1</ows:Identifier>
+ <ScaleDenominator>125000.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>3</MatrixWidth>
+ <MatrixHeight>3</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>2</ows:Identifier>
+ <ScaleDenominator>64000.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>5</MatrixWidth>
+ <MatrixHeight>5</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>3</ows:Identifier>
+ <ScaleDenominator>32000.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>9</MatrixWidth>
+ <MatrixHeight>9</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>4</ows:Identifier>
+ <ScaleDenominator>16000.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>17</MatrixWidth>
+ <MatrixHeight>18</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>5</ows:Identifier>
+ <ScaleDenominator>8000.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>34</MatrixWidth>
+ <MatrixHeight>35</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>6</ows:Identifier>
+ <ScaleDenominator>4000.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>66</MatrixWidth>
+ <MatrixHeight>68</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>7</ows:Identifier>
+ <ScaleDenominator>2000.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>130</MatrixWidth>
+ <MatrixHeight>134</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>8</ows:Identifier>
+ <ScaleDenominator>1000.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>259</MatrixWidth>
+ <MatrixHeight>267</MatrixHeight>
+
+ </TileMatrix>
+
+ <TileMatrix>
+ <ows:Identifier>9</ows:Identifier>
+ <ScaleDenominator>500.0</ScaleDenominator>
+ <TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner>
+ <TileWidth>256</TileWidth>
+ <TileHeight>256</TileHeight>
+
+ <MatrixWidth>517</MatrixWidth>
+ <MatrixHeight>533</MatrixHeight>
+
+ </TileMatrix>
+
+ </TileMatrixSet>
+
+</Contents>
+<ServiceMetadataURL xlink:href="http://www.wmts.stadt-zuerich.ch/arcgis/rest/services/Stadtplan/MapServer/WMTS/1.0.0/WMTSCapabilities.xml" />
+</Capabilities>
diff --git a/web/cobrands/zurich/zurich-wmts-satellite.xml b/web/cobrands/zurich/zurich-wmts-satellite.xml new file mode 100644 index 000000000..c8b863c22 --- /dev/null +++ b/web/cobrands/zurich/zurich-wmts-satellite.xml @@ -0,0 +1,178 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<Capabilities xmlns="http://www.opengis.net/wmts/1.0"
+xmlns:ows="http://www.opengis.net/ows/1.1"
+xmlns:xlink="http://www.w3.org/1999/xlink"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xmlns:gml="http://www.opengis.net/gml"
+xsi:schemaLocation="http://www.opengis.net/wmts/1.0 http://schemas.opengis.net/wmts/1.0/wmtsGetCapabilities_response.xsd"
+version="1.0.0">
+<!-- Service Identification --> <ows:ServiceIdentification>
+<ows:Title>Luftbild</ows:Title>
+<ows:ServiceType>OGC WMTS</ows:ServiceType>
+<ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion>
+</ows:ServiceIdentification> <!-- Operations Metadata --> <ows:OperationsMetadata>
+<ows:Operation name="GetCapabilities">
+<ows:DCP>
+<ows:HTTP>
+<ows:Get xlink:href="http://www.wmts.stadt-zuerich.ch/arcgis/rest/services/Luftbild/MapServer/WMTS/1.0.0/WMTSCapabilities.xml">
+<ows:Constraint name="GetEncoding">
+<ows:AllowedValues>
+<ows:Value>RESTful</ows:Value>
+</ows:AllowedValues>
+</ows:Constraint>
+</ows:Get>
+<!-- add KVP binding in 10.1 -->
+<ows:Get xlink:href="http://www.wmts.stadt-zuerich.ch/arcgis/rest/services/Luftbild/MapServer/WMTS?">
+<ows:Constraint name="GetEncoding">
+<ows:AllowedValues>
+<ows:Value>KVP</ows:Value>
+</ows:AllowedValues>
+</ows:Constraint>
+</ows:Get>
+</ows:HTTP>
+</ows:DCP>
+</ows:Operation>
+<ows:Operation name="GetTile">
+<ows:DCP>
+<ows:HTTP>
+<ows:Get xlink:href="http://www.wmts.stadt-zuerich.ch/arcgis/rest/services/Luftbild/MapServer/WMTS/tile/1.0.0/">
+<ows:Constraint name="GetEncoding">
+<ows:AllowedValues>
+<ows:Value>RESTful</ows:Value>
+</ows:AllowedValues>
+</ows:Constraint>
+</ows:Get>
+<ows:Get xlink:href="http://www.wmts.stadt-zuerich.ch/arcgis/rest/services/Luftbild/MapServer/WMTS?">
+<ows:Constraint name="GetEncoding">
+<ows:AllowedValues>
+<ows:Value>KVP</ows:Value>
+</ows:AllowedValues>
+</ows:Constraint>
+</ows:Get>
+</ows:HTTP>
+</ows:DCP>
+</ows:Operation>
+</ows:OperationsMetadata> <Contents>
+<!--Layer--> <Layer>
+<ows:Title>Luftbild</ows:Title> <ows:Identifier>Luftbild</ows:Identifier>
+<ows:BoundingBox crs="urn:ogc:def:crs:EPSG::21781">
+<ows:LowerCorner>676000.0 241000.0</ows:LowerCorner>
+<ows:UpperCorner>690000.0 255000.0</ows:UpperCorner>
+</ows:BoundingBox> <ows:WGS84BoundingBox crs="urn:ogc:def:crs:OGC:2:84">
+<ows:LowerCorner>8.444933818976226 47.31509040172551</ows:LowerCorner>
+<ows:UpperCorner>8.632922236617937 47.442777990747416</ows:UpperCorner>
+</ows:WGS84BoundingBox>
+<Style isDefault="true">
+<ows:Title>Default Style</ows:Title>
+<ows:Identifier>default</ows:Identifier>
+</Style>
+<Format>image/jpgpng</Format>
+<TileMatrixSetLink>
+<TileMatrixSet>default028mm</TileMatrixSet>
+</TileMatrixSetLink>
+<TileMatrixSetLink>
+<TileMatrixSet>nativeTileMatrixSet</TileMatrixSet> </TileMatrixSetLink> <ResourceURL format="image/jpgpng" resourceType="tile" template="http://www.wmts.stadt-zuerich.ch/arcgis/rest/services/Luftbild/MapServer/WMTS/tile/1.0.0/Luftbild/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}" />
+</Layer> <!--TileMatrixSet-->
+<TileMatrixSet>
+<ows:Title>Default TileMatrix using 0.28mm</ows:Title>
+<ows:Abstract>The tile matrix set that has scale values calculated based on the dpi defined by OGC specification (dpi assumes 0.28mm as the physical distance of a pixel).</ows:Abstract> <ows:Identifier>default028mm</ows:Identifier>
+<ows:SupportedCRS>urn:ogc:def:crs:EPSG::21781</ows:SupportedCRS>
+<TileMatrix>
+<ows:Identifier>0</ows:Identifier> <ScaleDenominator>118117.55952380951</ScaleDenominator>
+<TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner> <TileWidth>256</TileWidth> <TileHeight>256</TileHeight>
+<MatrixWidth>3</MatrixWidth> <MatrixHeight>3</MatrixHeight>
+</TileMatrix>
+<TileMatrix>
+<ows:Identifier>1</ows:Identifier> <ScaleDenominator>60476.19047619047</ScaleDenominator>
+<TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner> <TileWidth>256</TileWidth> <TileHeight>256</TileHeight>
+<MatrixWidth>5</MatrixWidth> <MatrixHeight>4</MatrixHeight>
+</TileMatrix>
+<TileMatrix>
+<ows:Identifier>2</ows:Identifier> <ScaleDenominator>30238.095238095237</ScaleDenominator>
+<TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner> <TileWidth>256</TileWidth> <TileHeight>256</TileHeight>
+<MatrixWidth>8</MatrixWidth> <MatrixHeight>7</MatrixHeight>
+</TileMatrix>
+<TileMatrix>
+<ows:Identifier>3</ows:Identifier> <ScaleDenominator>15119.047619047618</ScaleDenominator>
+<TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner> <TileWidth>256</TileWidth> <TileHeight>256</TileHeight>
+<MatrixWidth>14</MatrixWidth> <MatrixHeight>14</MatrixHeight>
+</TileMatrix>
+<TileMatrix>
+<ows:Identifier>4</ows:Identifier> <ScaleDenominator>7559.523809523809</ScaleDenominator>
+<TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner> <TileWidth>256</TileWidth> <TileHeight>256</TileHeight>
+<MatrixWidth>27</MatrixWidth> <MatrixHeight>27</MatrixHeight>
+</TileMatrix>
+<TileMatrix>
+<ows:Identifier>5</ows:Identifier> <ScaleDenominator>3779.7619047619046</ScaleDenominator>
+<TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner> <TileWidth>256</TileWidth> <TileHeight>256</TileHeight>
+<MatrixWidth>53</MatrixWidth> <MatrixHeight>52</MatrixHeight>
+</TileMatrix>
+<TileMatrix>
+<ows:Identifier>6</ows:Identifier> <ScaleDenominator>1889.8809523809523</ScaleDenominator>
+<TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner> <TileWidth>256</TileWidth> <TileHeight>256</TileHeight>
+<MatrixWidth>105</MatrixWidth> <MatrixHeight>104</MatrixHeight>
+</TileMatrix>
+<TileMatrix>
+<ows:Identifier>7</ows:Identifier> <ScaleDenominator>944.9404761904761</ScaleDenominator>
+<TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner> <TileWidth>256</TileWidth> <TileHeight>256</TileHeight>
+<MatrixWidth>208</MatrixWidth> <MatrixHeight>208</MatrixHeight>
+</TileMatrix>
+<TileMatrix>
+<ows:Identifier>8</ows:Identifier> <ScaleDenominator>472.4702380952381</ScaleDenominator>
+<TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner> <TileWidth>256</TileWidth> <TileHeight>256</TileHeight>
+<MatrixWidth>414</MatrixWidth> <MatrixHeight>415</MatrixHeight>
+</TileMatrix>
+</TileMatrixSet>
+<TileMatrixSet>
+<ows:Title>Native TiledMapService TileMatrixSet</ows:Title>
+<ows:Abstract>the tile matrix set that has scale values calculated based on the dpi defined by ArcGIS Server tiled map service. The current tile dpi is 96</ows:Abstract>
+<ows:Identifier>nativeTileMatrixSet</ows:Identifier>
+<ows:SupportedCRS>urn:ogc:def:crs:EPSG::21781</ows:SupportedCRS>
+<TileMatrix>
+<ows:Identifier>0</ows:Identifier> <ScaleDenominator>125000.0</ScaleDenominator>
+<TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner> <TileWidth>256</TileWidth> <TileHeight>256</TileHeight>
+<MatrixWidth>3</MatrixWidth> <MatrixHeight>3</MatrixHeight>
+</TileMatrix>
+<TileMatrix>
+<ows:Identifier>1</ows:Identifier> <ScaleDenominator>64000.0</ScaleDenominator>
+<TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner> <TileWidth>256</TileWidth> <TileHeight>256</TileHeight>
+<MatrixWidth>5</MatrixWidth> <MatrixHeight>4</MatrixHeight>
+</TileMatrix>
+<TileMatrix>
+<ows:Identifier>2</ows:Identifier> <ScaleDenominator>32000.0</ScaleDenominator>
+<TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner> <TileWidth>256</TileWidth> <TileHeight>256</TileHeight>
+<MatrixWidth>8</MatrixWidth> <MatrixHeight>7</MatrixHeight>
+</TileMatrix>
+<TileMatrix>
+<ows:Identifier>3</ows:Identifier> <ScaleDenominator>16000.0</ScaleDenominator>
+<TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner> <TileWidth>256</TileWidth> <TileHeight>256</TileHeight>
+<MatrixWidth>14</MatrixWidth> <MatrixHeight>14</MatrixHeight>
+</TileMatrix>
+<TileMatrix>
+<ows:Identifier>4</ows:Identifier> <ScaleDenominator>8000.0</ScaleDenominator>
+<TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner> <TileWidth>256</TileWidth> <TileHeight>256</TileHeight>
+<MatrixWidth>27</MatrixWidth> <MatrixHeight>27</MatrixHeight>
+</TileMatrix>
+<TileMatrix>
+<ows:Identifier>5</ows:Identifier> <ScaleDenominator>4000.0</ScaleDenominator>
+<TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner> <TileWidth>256</TileWidth> <TileHeight>256</TileHeight>
+<MatrixWidth>53</MatrixWidth> <MatrixHeight>52</MatrixHeight>
+</TileMatrix>
+<TileMatrix>
+<ows:Identifier>6</ows:Identifier> <ScaleDenominator>2000.0</ScaleDenominator>
+<TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner> <TileWidth>256</TileWidth> <TileHeight>256</TileHeight>
+<MatrixWidth>105</MatrixWidth> <MatrixHeight>104</MatrixHeight>
+</TileMatrix>
+<TileMatrix>
+<ows:Identifier>7</ows:Identifier> <ScaleDenominator>1000.0</ScaleDenominator>
+<TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner> <TileWidth>256</TileWidth> <TileHeight>256</TileHeight>
+<MatrixWidth>208</MatrixWidth> <MatrixHeight>208</MatrixHeight>
+</TileMatrix>
+<TileMatrix>
+<ows:Identifier>8</ows:Identifier> <ScaleDenominator>500.0</ScaleDenominator>
+<TopLeftCorner>-2.93864E7 3.08145E7</TopLeftCorner> <TileWidth>256</TileWidth> <TileHeight>256</TileHeight>
+<MatrixWidth>414</MatrixWidth> <MatrixHeight>415</MatrixHeight>
+</TileMatrix>
+</TileMatrixSet>
+</Contents>
+<ServiceMetadataURL xlink:href="http://www.wmts.stadt-zuerich.ch/arcgis/rest/services/Luftbild/MapServer/WMTS/1.0.0/WMTSCapabilities.xml" /> </Capabilities>
diff --git a/web/css/_main.scss b/web/css/_main-import.scss index 305a9e43e..305a9e43e 100644 --- a/web/css/_main.scss +++ b/web/css/_main-import.scss diff --git a/web/css/core.scss b/web/css/core.scss index c7fac1717..ed47cb01a 100644 --- a/web/css/core.scss +++ b/web/css/core.scss @@ -109,7 +109,7 @@ $map_width: 500px; margin-top: 0; } - #submit { + #sub { font-size: 83%; } } @@ -616,7 +616,7 @@ $map_width: 500px; display: block; font-size: 150%; } - #submit { + #sub { font-size: 100%; } } diff --git a/web/css/main.scss b/web/css/main.scss index bcebc2bd0..1106b8a78 100644 --- a/web/css/main.scss +++ b/web/css/main.scss @@ -11,4 +11,4 @@ a { &:hover, &:active { color: #ff0000; } } -@import "_main"; +@import "main-import"; diff --git a/web/i/external-link.png b/web/i/external-link.png Binary files differnew file mode 100644 index 000000000..8e8ba74bf --- /dev/null +++ b/web/i/external-link.png diff --git a/web/i/pin-green-big.png b/web/i/pin-green-big.png Binary files differnew file mode 100644 index 000000000..16d73230a --- /dev/null +++ b/web/i/pin-green-big.png diff --git a/web/i/pin-red-big.png b/web/i/pin-red-big.png Binary files differnew file mode 100644 index 000000000..2d970b9e2 --- /dev/null +++ b/web/i/pin-red-big.png diff --git a/phonegap/www/jslib/OpenLayers-2.10/img/blank.gif b/web/js/OpenLayers-2.13.1/img/blank.gif Binary files differindex 4bcc753a1..4bcc753a1 100644 --- a/phonegap/www/jslib/OpenLayers-2.10/img/blank.gif +++ b/web/js/OpenLayers-2.13.1/img/blank.gif 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 Binary files differnew file mode 100755 index 000000000..c9fd4c411 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/cloud-popup-relative.png 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 Binary files differnew file mode 100644 index 000000000..382a81d9a --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/drag-rectangle-off.png 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 Binary files differnew file mode 100644 index 000000000..2ed2d5b08 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/drag-rectangle-on.png diff --git a/web/js/OpenLayers-2.13.1/img/east-mini.png b/web/js/OpenLayers-2.13.1/img/east-mini.png Binary files differnew file mode 100644 index 000000000..ecedc5ef9 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/east-mini.png 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 Binary files differnew file mode 100644 index 000000000..f346086b3 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/layer-switcher-maximize.png 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 Binary files differnew file mode 100644 index 000000000..b4aab0bf7 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/layer-switcher-minimize.png diff --git a/web/js/OpenLayers-2.13.1/img/marker-blue.png b/web/js/OpenLayers-2.13.1/img/marker-blue.png Binary files differnew file mode 100644 index 000000000..f5b4efcfe --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/marker-blue.png diff --git a/web/js/OpenLayers-2.13.1/img/marker-gold.png b/web/js/OpenLayers-2.13.1/img/marker-gold.png Binary files differnew file mode 100644 index 000000000..0b62f9618 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/marker-gold.png diff --git a/web/js/OpenLayers-2.13.1/img/marker-green.png b/web/js/OpenLayers-2.13.1/img/marker-green.png Binary files differnew file mode 100644 index 000000000..c36b164b5 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/marker-green.png diff --git a/web/js/OpenLayers-2.13.1/img/marker.png b/web/js/OpenLayers-2.13.1/img/marker.png Binary files differnew file mode 100644 index 000000000..ea3e59a56 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/marker.png 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 Binary files differnew file mode 100644 index 000000000..efbf63fb3 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/measuring-stick-off.png 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 Binary files differnew file mode 100644 index 000000000..2d41c84e8 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/measuring-stick-on.png diff --git a/web/js/OpenLayers-2.13.1/img/north-mini.png b/web/js/OpenLayers-2.13.1/img/north-mini.png Binary files differnew file mode 100644 index 000000000..dfd7211ff --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/north-mini.png 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 Binary files differnew file mode 100644 index 000000000..d1c593e1d --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/panning-hand-off.png 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 Binary files differnew file mode 100644 index 000000000..9b7e0646d --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/panning-hand-on.png diff --git a/web/js/OpenLayers-2.13.1/img/slider.png b/web/js/OpenLayers-2.13.1/img/slider.png Binary files differnew file mode 100644 index 000000000..433536422 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/slider.png diff --git a/web/js/OpenLayers-2.13.1/img/south-mini.png b/web/js/OpenLayers-2.13.1/img/south-mini.png Binary files differnew file mode 100644 index 000000000..2970875c4 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/south-mini.png diff --git a/web/js/OpenLayers-2.13.1/img/west-mini.png b/web/js/OpenLayers-2.13.1/img/west-mini.png Binary files differnew file mode 100644 index 000000000..363cd3d7b --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/west-mini.png 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 Binary files differnew file mode 100644 index 000000000..8f0d77fff --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/zoom-minus-mini.png 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 Binary files differnew file mode 100644 index 000000000..a73ab4e95 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/zoom-plus-mini.png 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 Binary files differnew file mode 100644 index 000000000..aebf22d95 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/zoom-world-mini.png diff --git a/web/js/OpenLayers-2.13.1/img/zoombar.png b/web/js/OpenLayers-2.13.1/img/zoombar.png Binary files differnew file mode 100644 index 000000000..47110ab3e --- /dev/null +++ b/web/js/OpenLayers-2.13.1/img/zoombar.png 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 Binary files differnew file mode 100644 index 000000000..26c023309 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/add_point_off.png diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/add_point_on.png b/web/js/OpenLayers-2.13.1/theme/default/img/add_point_on.png Binary files differindex 1294a2c16..1294a2c16 100644 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/add_point_on.png +++ b/web/js/OpenLayers-2.13.1/theme/default/img/add_point_on.png diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/blank.gif b/web/js/OpenLayers-2.13.1/theme/default/img/blank.gif Binary files differindex 4bcc753a1..4bcc753a1 100644 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/blank.gif +++ b/web/js/OpenLayers-2.13.1/theme/default/img/blank.gif diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/close.gif b/web/js/OpenLayers-2.13.1/theme/default/img/close.gif Binary files differindex a8958de9b..a8958de9b 100644 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/close.gif +++ b/web/js/OpenLayers-2.13.1/theme/default/img/close.gif 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 Binary files differnew file mode 100644 index 000000000..382a81d9a --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/drag-rectangle-off.png 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 Binary files differnew file mode 100644 index 000000000..2ed2d5b08 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/drag-rectangle-on.png 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 Binary files differnew file mode 100644 index 000000000..a4d67b3b9 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/draw_line_off.png 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 Binary files differnew file mode 100644 index 000000000..90dcf3e35 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/draw_line_on.png 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 Binary files differnew file mode 100644 index 000000000..56334072a --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/draw_point_off.png 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 Binary files differnew file mode 100644 index 000000000..fff50b7b0 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/draw_point_on.png 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 Binary files differnew file mode 100644 index 000000000..917af3597 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/draw_polygon_off.png 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 Binary files differnew file mode 100644 index 000000000..05a2cc5a8 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/draw_polygon_on.png 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 Binary files differnew file mode 100644 index 000000000..5977856cf --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/editing_tool_bar.png 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 Binary files differnew file mode 100644 index 000000000..ed4472dd8 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/move_feature_off.png 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 Binary files differnew file mode 100644 index 000000000..62226a2d7 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/move_feature_on.png 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 Binary files differnew file mode 100644 index 000000000..84e348985 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/navigation_history.png diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/overview_replacement.gif b/web/js/OpenLayers-2.13.1/theme/default/img/overview_replacement.gif Binary files differindex a82cf5fc5..a82cf5fc5 100644 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/overview_replacement.gif +++ b/web/js/OpenLayers-2.13.1/theme/default/img/overview_replacement.gif 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 Binary files differnew file mode 100644 index 000000000..698726884 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/pan-panel-NOALPHA.png 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 Binary files differnew file mode 100644 index 000000000..dfe67481c --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/pan-panel.png diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/pan_off.png b/web/js/OpenLayers-2.13.1/theme/default/img/pan_off.png Binary files differindex 30b2aed4d..30b2aed4d 100644 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/pan_off.png +++ b/web/js/OpenLayers-2.13.1/theme/default/img/pan_off.png 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 Binary files differnew file mode 100644 index 000000000..e3953a824 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/pan_on.png 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 Binary files differnew file mode 100644 index 000000000..d1c593e1d --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/panning-hand-off.png 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 Binary files differnew file mode 100644 index 000000000..9b7e0646d --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/panning-hand-on.png diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/remove_point_off.png b/web/js/OpenLayers-2.13.1/theme/default/img/remove_point_off.png Binary files differindex 76c8606f5..76c8606f5 100644 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/remove_point_off.png +++ b/web/js/OpenLayers-2.13.1/theme/default/img/remove_point_off.png 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 Binary files differnew file mode 100644 index 000000000..cc8d7b2c6 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/remove_point_on.png diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/ruler.png b/web/js/OpenLayers-2.13.1/theme/default/img/ruler.png Binary files differindex aa4883bcd..aa4883bcd 100644 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/ruler.png +++ b/web/js/OpenLayers-2.13.1/theme/default/img/ruler.png 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 Binary files differnew file mode 100644 index 000000000..3d305b622 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/save_features_off.png 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 Binary files differnew file mode 100644 index 000000000..5640ae888 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/save_features_on.png 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 Binary files differnew file mode 100644 index 000000000..9149a2420 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/view_next_off.png diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/view_next_on.png b/web/js/OpenLayers-2.13.1/theme/default/img/view_next_on.png Binary files differindex e41fb7bdd..e41fb7bdd 100644 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/view_next_on.png +++ b/web/js/OpenLayers-2.13.1/theme/default/img/view_next_on.png 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 Binary files differnew file mode 100644 index 000000000..8a9ef2179 --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/view_previous_off.png diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/view_previous_on.png b/web/js/OpenLayers-2.13.1/theme/default/img/view_previous_on.png Binary files differindex c009c255e..c009c255e 100644 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/view_previous_on.png +++ b/web/js/OpenLayers-2.13.1/theme/default/img/view_previous_on.png diff --git a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/zoom-panel-NOALPHA.png b/web/js/OpenLayers-2.13.1/theme/default/img/zoom-panel-NOALPHA.png Binary files differindex cdde6fc7e..cdde6fc7e 100644 --- a/phonegap/www/jslib/OpenLayers-2.10/theme/default/img/zoom-panel-NOALPHA.png +++ b/web/js/OpenLayers-2.13.1/theme/default/img/zoom-panel-NOALPHA.png 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 Binary files differnew file mode 100644 index 000000000..c91a4ef3c --- /dev/null +++ b/web/js/OpenLayers-2.13.1/theme/default/img/zoom-panel.png 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.2.11.zurich.js b/web/js/OpenLayers.2.11.zurich.js new file mode 100644 index 000000000..62087500d --- /dev/null +++ b/web/js/OpenLayers.2.11.zurich.js @@ -0,0 +1,1364 @@ +/* + + 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. + + Includes compressed code under the following licenses: + + (For uncompressed versions of the code used please see the + OpenLayers SVN repository: <http://openlayers.org/>) + +*/ + +/* 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) + * + * 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 + */ + +/** + * Contains portions of Gears <http://code.google.com/apis/gears/> + * + * Copyright 2007, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Google Inc. nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Sets up google.gears.*, which is *the only* supported way to access Gears. + * + * Circumvent this file at your own risk! + * + * In the future, Gears may automatically define google.gears.* without this + * file. Gears may use these objects to transparently fix bugs and compatibility + * issues. Applications that use the code below will continue to work seamlessly + * when that happens. + */ + +/** + * OpenLayers.Util.pagePosition is based on Yahoo's getXY method, which is + * Copyright (c) 2006, Yahoo! Inc. + * All rights reserved. + * + * Redistribution and use of this software in source and binary forms, with or + * without modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of Yahoo! Inc. nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission of Yahoo! Inc. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */var OpenLayers={VERSION_NUMBER:"Release 2.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.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.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.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&¢er!=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.Format.OGCExceptionReport=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ogc:"http://www.opengis.net/ogc"},regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},defaultPrefix:"ogc",read:function(data){var result;if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} +var root=data.documentElement;var exceptionInfo={exceptionReport:null};if(root){this.readChildNodes(data,exceptionInfo);if(exceptionInfo.exceptionReport===null){exceptionInfo=new OpenLayers.Format.OWSCommon().read(data);}} +return exceptionInfo;},readers:{"ogc":{"ServiceExceptionReport":function(node,obj){obj.exceptionReport={exceptions:[]};this.readChildNodes(node,obj.exceptionReport);},"ServiceException":function(node,exceptionReport){var exception={code:node.getAttribute("code"),locator:node.getAttribute("locator"),text:this.getChildValue(node)};exceptionReport.exceptions.push(exception);}}},CLASS_NAME:"OpenLayers.Format.OGCExceptionReport"});OpenLayers.Format.XML.VersionedOGC=OpenLayers.Class(OpenLayers.Format.XML,{defaultVersion:null,version:null,profile:null,errorProperty:null,name:null,stringifyOutput:false,parser:null,initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);var className=this.CLASS_NAME;this.name=className.substring(className.lastIndexOf(".")+1);},getVersion:function(root,options){var version;if(root){version=this.version;if(!version){version=root.getAttribute("version");if(!version){version=this.defaultVersion;}}}else{version=(options&&options.version)||this.version||this.defaultVersion;} +return version;},getParser:function(version){version=version||this.defaultVersion;var profile=this.profile?"_"+this.profile:"";if(!this.parser||this.parser.VERSION!=version){var format=OpenLayers.Format[this.name]["v"+version.replace(/\./g,"_")+profile];if(!format){throw"Can't find a "+this.name+" parser for version "+ +version+profile;} +this.parser=new format(this.options);} +return this.parser;},write:function(obj,options){var version=this.getVersion(null,options);this.parser=this.getParser(version);var root=this.parser.write(obj,options);if(this.stringifyOutput===false){return root;}else{return OpenLayers.Format.XML.prototype.write.apply(this,[root]);}},read:function(data,options){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} +var root=data.documentElement;var version=this.getVersion(root);this.parser=this.getParser(version);var obj=this.parser.read(data,options);if(this.errorProperty!==null&&obj[this.errorProperty]===undefined){var format=new OpenLayers.Format.OGCExceptionReport();obj.error=format.read(data);} +obj.version=version;return obj;},CLASS_NAME:"OpenLayers.Format.XML.VersionedOGC"});OpenLayers.Format.OWSCommon=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",getVersion:function(root,options){var version=this.version;if(!version){var uri=root.getAttribute("xmlns:ows");if(uri&&uri.substring(uri.lastIndexOf("/")+1)==="1.1"){version="1.1.0";} +if(!version){version=this.defaultVersion;}} +return version;},CLASS_NAME:"OpenLayers.Format.OWSCommon"});OpenLayers.Format.OWSCommon.v1=OpenLayers.Class(OpenLayers.Format.XML,{regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},read:function(data,options){options=OpenLayers.Util.applyDefaults(options,this.options);var ows={};this.readChildNodes(data,ows);return ows;},readers:{"ows":{"Exception":function(node,exceptionReport){var exception={code:node.getAttribute('exceptionCode'),locator:node.getAttribute('locator'),texts:[]};exceptionReport.exceptions.push(exception);this.readChildNodes(node,exception);},"ExceptionText":function(node,exception){var text=this.getChildValue(node);exception.texts.push(text);},"ServiceIdentification":function(node,obj){obj.serviceIdentification={};this.readChildNodes(node,obj.serviceIdentification);},"Title":function(node,obj){obj.title=this.getChildValue(node);},"Abstract":function(node,serviceIdentification){serviceIdentification["abstract"]=this.getChildValue(node);},"Keywords":function(node,serviceIdentification){serviceIdentification.keywords={};this.readChildNodes(node,serviceIdentification.keywords);},"Keyword":function(node,keywords){keywords[this.getChildValue(node)]=true;},"ServiceType":function(node,serviceIdentification){serviceIdentification.serviceType={codeSpace:node.getAttribute('codeSpace'),value:this.getChildValue(node)};},"ServiceTypeVersion":function(node,serviceIdentification){serviceIdentification.serviceTypeVersion=this.getChildValue(node);},"Fees":function(node,serviceIdentification){serviceIdentification.fees=this.getChildValue(node);},"AccessConstraints":function(node,serviceIdentification){serviceIdentification.accessConstraints=this.getChildValue(node);},"ServiceProvider":function(node,obj){obj.serviceProvider={};this.readChildNodes(node,obj.serviceProvider);},"ProviderName":function(node,serviceProvider){serviceProvider.providerName=this.getChildValue(node);},"ProviderSite":function(node,serviceProvider){serviceProvider.providerSite=this.getAttributeNS(node,this.namespaces.xlink,"href");},"ServiceContact":function(node,serviceProvider){serviceProvider.serviceContact={};this.readChildNodes(node,serviceProvider.serviceContact);},"IndividualName":function(node,serviceContact){serviceContact.individualName=this.getChildValue(node);},"PositionName":function(node,serviceContact){serviceContact.positionName=this.getChildValue(node);},"ContactInfo":function(node,serviceContact){serviceContact.contactInfo={};this.readChildNodes(node,serviceContact.contactInfo);},"Phone":function(node,contactInfo){contactInfo.phone={};this.readChildNodes(node,contactInfo.phone);},"Voice":function(node,phone){phone.voice=this.getChildValue(node);},"Address":function(node,contactInfo){contactInfo.address={};this.readChildNodes(node,contactInfo.address);},"DeliveryPoint":function(node,address){address.deliveryPoint=this.getChildValue(node);},"City":function(node,address){address.city=this.getChildValue(node);},"AdministrativeArea":function(node,address){address.administrativeArea=this.getChildValue(node);},"PostalCode":function(node,address){address.postalCode=this.getChildValue(node);},"Country":function(node,address){address.country=this.getChildValue(node);},"ElectronicMailAddress":function(node,address){address.electronicMailAddress=this.getChildValue(node);},"Role":function(node,serviceContact){serviceContact.role=this.getChildValue(node);},"OperationsMetadata":function(node,obj){obj.operationsMetadata={};this.readChildNodes(node,obj.operationsMetadata);},"Operation":function(node,operationsMetadata){var name=node.getAttribute("name");operationsMetadata[name]={};this.readChildNodes(node,operationsMetadata[name]);},"DCP":function(node,operation){operation.dcp={};this.readChildNodes(node,operation.dcp);},"HTTP":function(node,dcp){dcp.http={};this.readChildNodes(node,dcp.http);},"Get":function(node,http){http.get=this.getAttributeNS(node,this.namespaces.xlink,"href");},"Post":function(node,http){http.post=this.getAttributeNS(node,this.namespaces.xlink,"href");},"Parameter":function(node,operation){if(!operation.parameters){operation.parameters={};} +var name=node.getAttribute("name");operation.parameters[name]={};this.readChildNodes(node,operation.parameters[name]);},"Value":function(node,allowedValues){allowedValues[this.getChildValue(node)]=true;},"OutputFormat":function(node,obj){obj.formats.push({value:this.getChildValue(node)});this.readChildNodes(node,obj);},"WGS84BoundingBox":function(node,obj){var boundingBox={};boundingBox.crs=node.getAttribute("crs");if(obj.BoundingBox){obj.BoundingBox.push(boundingBox);}else{obj.projection=boundingBox.crs;boundingBox=obj;} +this.readChildNodes(node,boundingBox);},"BoundingBox":function(node,obj){this.readers['ows']['WGS84BoundingBox'].apply(this,[node,obj]);},"LowerCorner":function(node,obj){var str=this.getChildValue(node).replace(this.regExes.trimSpace,"");str=str.replace(this.regExes.trimComma,",");var pointList=str.split(this.regExes.splitSpace);obj.left=pointList[0];obj.bottom=pointList[1];},"UpperCorner":function(node,obj){var str=this.getChildValue(node).replace(this.regExes.trimSpace,"");str=str.replace(this.regExes.trimComma,",");var pointList=str.split(this.regExes.splitSpace);obj.right=pointList[0];obj.top=pointList[1];obj.bounds=new OpenLayers.Bounds(obj.left,obj.bottom,obj.right,obj.top);delete obj.left;delete obj.bottom;delete obj.right;delete obj.top;},"Language":function(node,obj){obj.language=this.getChildValue(node);}}},writers:{"ows":{"BoundingBox":function(options){var node=this.createElementNSPlus("ows:BoundingBox",{attributes:{crs:options.projection}});this.writeNode("ows:LowerCorner",options,node);this.writeNode("ows:UpperCorner",options,node);return node;},"LowerCorner":function(options){var node=this.createElementNSPlus("ows:LowerCorner",{value:options.bounds.left+" "+options.bounds.bottom});return node;},"UpperCorner":function(options){var node=this.createElementNSPlus("ows:UpperCorner",{value:options.bounds.right+" "+options.bounds.top});return node;},"Identifier":function(identifier){var node=this.createElementNSPlus("ows:Identifier",{value:identifier});return node;},"Title":function(title){var node=this.createElementNSPlus("ows:Title",{value:title});return node;},"Abstract":function(abstractValue){var node=this.createElementNSPlus("ows:Abstract",{value:abstractValue});return node;},"OutputFormat":function(format){var node=this.createElementNSPlus("ows:OutputFormat",{value:format});return node;}}},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1"});OpenLayers.Format.OWSCommon.v1_1_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1,{namespaces:{ows:"http://www.opengis.net/ows/1.1",xlink:"http://www.w3.org/1999/xlink"},readers:{"ows":OpenLayers.Util.applyDefaults({"ExceptionReport":function(node,obj){obj.exceptionReport={version:node.getAttribute('version'),language:node.getAttribute('xml:lang'),exceptions:[]};this.readChildNodes(node,obj.exceptionReport);},"AllowedValues":function(node,parameter){parameter.allowedValues={};this.readChildNodes(node,parameter.allowedValues);},"AnyValue":function(node,parameter){parameter.anyValue=true;},"DataType":function(node,parameter){parameter.dataType=this.getChildValue(node);},"Range":function(node,allowedValues){allowedValues.range={};this.readChildNodes(node,allowedValues.range);},"MinimumValue":function(node,range){range.minValue=this.getChildValue(node);},"MaximumValue":function(node,range){range.maxValue=this.getChildValue(node);},"Identifier":function(node,obj){obj.identifier=this.getChildValue(node);},"SupportedCRS":function(node,obj){obj.supportedCRS=this.getChildValue(node);}},OpenLayers.Format.OWSCommon.v1.prototype.readers["ows"])},writers:{"ows":OpenLayers.Util.applyDefaults({"Range":function(range){var node=this.createElementNSPlus("ows:Range",{attributes:{'ows:rangeClosure':range.closure}});this.writeNode("ows:MinimumValue",range.minValue,node);this.writeNode("ows:MaximumValue",range.maxValue,node);return node;},"MinimumValue":function(minValue){var node=this.createElementNSPlus("ows:MinimumValue",{value:minValue});return node;},"MaximumValue":function(maxValue){var node=this.createElementNSPlus("ows:MaximumValue",{value:maxValue});return node;},"Value":function(value){var node=this.createElementNSPlus("ows:Value",{value:value});return node;}},OpenLayers.Format.OWSCommon.v1.prototype.writers["ows"])},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1_1_0"});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.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.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.Format.WMTSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",yx:{"urn:ogc:def:crs:EPSG::4326":true},createLayer:function(capabilities,config){var layer;var required={layer:true,matrixSet:true};for(var prop in required){if(!(prop in config)){throw new Error("Missing property '"+prop+"' in layer configuration.");}} +var contents=capabilities.contents;var matrixSet=contents.tileMatrixSets[config.matrixSet];var layers=contents.layers;var layerDef;for(var i=0,ii=contents.layers.length;i<ii;++i){if(contents.layers[i].identifier===config.layer){layerDef=contents.layers[i];break;}} +if(layerDef&&matrixSet){var style;for(var i=0,ii=layerDef.styles.length;i<ii;++i){style=layerDef.styles[i];if(style.isDefault){break;}} +layer=new OpenLayers.Layer.WMTS(OpenLayers.Util.applyDefaults(config,{url:capabilities.operationsMetadata.GetTile.dcp.http.get,name:layerDef.title,style:style.identifier,matrixIds:matrixSet.matrixIds}));} +return layer;},CLASS_NAME:"OpenLayers.Format.WMTSCapabilities"});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.Format.WMTSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1_1_0,{version:"1.0.0",namespaces:{ows:"http://www.opengis.net/ows/1.1",wmts:"http://www.opengis.net/wmts/1.0",xlink:"http://www.w3.org/1999/xlink"},yx:null,defaultPrefix:"wmts",initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);this.options=options;var yx=OpenLayers.Util.extend({},OpenLayers.Format.WMTSCapabilities.prototype.yx);this.yx=OpenLayers.Util.extend(yx,this.yx);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} +if(data&&data.nodeType==9){data=data.documentElement;} +var capabilities={};this.readNode(data,capabilities);capabilities.version=this.version;return capabilities;},readers:{"wmts":{"Capabilities":function(node,obj){this.readChildNodes(node,obj);},"Contents":function(node,obj){obj.contents={};obj.contents.layers=[];obj.contents.tileMatrixSets={};this.readChildNodes(node,obj.contents);},"Layer":function(node,obj){var layer={styles:[],formats:[],tileMatrixSetLinks:[]};layer.layers=[];this.readChildNodes(node,layer);obj.layers.push(layer);},"Style":function(node,obj){var style={};style.isDefault=(node.getAttribute("isDefault")==="true");this.readChildNodes(node,style);obj.styles.push(style);},"Format":function(node,obj){obj.formats.push(this.getChildValue(node));},"TileMatrixSetLink":function(node,obj){var tileMatrixSetLink={};this.readChildNodes(node,tileMatrixSetLink);obj.tileMatrixSetLinks.push(tileMatrixSetLink);},"TileMatrixSet":function(node,obj){if(obj.layers){var tileMatrixSet={matrixIds:[]};this.readChildNodes(node,tileMatrixSet);obj.tileMatrixSets[tileMatrixSet.identifier]=tileMatrixSet;}else{obj.tileMatrixSet=this.getChildValue(node);}},"TileMatrix":function(node,obj){var tileMatrix={supportedCRS:obj.supportedCRS};this.readChildNodes(node,tileMatrix);obj.matrixIds.push(tileMatrix);},"ScaleDenominator":function(node,obj){obj.scaleDenominator=parseFloat(this.getChildValue(node));},"TopLeftCorner":function(node,obj){var topLeftCorner=this.getChildValue(node);var coords=topLeftCorner.split(" ");var yx;if(obj.supportedCRS){var crs=obj.supportedCRS.replace(/urn:ogc:def:crs:(\w+):.+:(\w+)$/,"urn:ogc:def:crs:$1::$2");yx=!!this.yx[crs];} +if(yx){obj.topLeftCorner=new OpenLayers.LonLat(coords[1],coords[0]);}else{obj.topLeftCorner=new OpenLayers.LonLat(coords[0],coords[1]);}},"TileWidth":function(node,obj){obj.tileWidth=parseInt(this.getChildValue(node));},"TileHeight":function(node,obj){obj.tileHeight=parseInt(this.getChildValue(node));},"MatrixWidth":function(node,obj){obj.matrixWidth=parseInt(this.getChildValue(node));},"MatrixHeight":function(node,obj){obj.matrixHeight=parseInt(this.getChildValue(node));},"ResourceURL":function(node,obj){obj.resourceUrl=obj.resourceUrl||{};obj.resourceUrl[node.getAttribute("resourceType")]={format:node.getAttribute("format"),template:node.getAttribute("template")};},"WSDL":function(node,obj){obj.wsdl={};obj.wsdl.href=node.getAttribute("xlink:href");},"ServiceMetadataURL":function(node,obj){obj.serviceMetadataUrl={};obj.serviceMetadataUrl.href=node.getAttribute("xlink:href");}},"ows":OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers["ows"]},CLASS_NAME:"OpenLayers.Format.WMTSCapabilities.v1_0_0"});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.Layer.WMTS=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,version:"1.0.0",requestEncoding:"KVP",url:null,layer:null,matrixSet:null,style:null,format:"image/jpeg",tileOrigin:null,tileFullExtent:null,formatSuffix:null,matrixIds:null,dimensions:null,params:null,zoomOffset:0,formatSuffixMap:{"image/png":"png","image/png8":"png","image/png24":"png","image/png32":"png","png":"png","image/jpeg":"jpg","image/jpg":"jpg","jpeg":"jpg","jpg":"jpg"},matrix:null,initialize:function(config){var required={url:true,layer:true,style:true,matrixSet:true};for(var prop in required){if(!(prop in config)){throw new Error("Missing property '"+prop+"' in layer configuration.");}} +config.params=OpenLayers.Util.upperCaseObject(config.params);var args=[config.name,config.url,config.params,config];OpenLayers.Layer.Grid.prototype.initialize.apply(this,args);if(!this.formatSuffix){this.formatSuffix=this.formatSuffixMap[this.format]||this.format.split("/").pop();} +if(this.matrixIds){var len=this.matrixIds.length;if(len&&typeof this.matrixIds[0]==="string"){var ids=this.matrixIds;this.matrixIds=new Array(len);for(var i=0;i<len;++i){this.matrixIds[i]={identifier:ids[i]};}}}},setMap:function(){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);this.updateMatrixProperties();},updateMatrixProperties:function(){this.matrix=this.getMatrix();if(this.matrix){if(this.matrix.topLeftCorner){this.tileOrigin=this.matrix.topLeftCorner;} +if(this.matrix.tileWidth&&this.matrix.tileHeight){this.tileSize=new OpenLayers.Size(this.matrix.tileWidth,this.matrix.tileHeight);} +if(!this.tileOrigin){this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.top);} +if(!this.tileFullExtent){this.tileFullExtent=this.maxExtent;}}},moveTo:function(bounds,zoomChanged,dragging){if(zoomChanged||!this.matrix){this.updateMatrixProperties();} +return OpenLayers.Layer.Grid.prototype.moveTo.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.WMTS(this.options);} +obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getMatrix:function(){var matrix;if(!this.matrixIds||this.matrixIds.length===0){matrix={identifier:this.map.getZoom()+this.zoomOffset};}else{if("scaleDenominator"in this.matrixIds[0]){var denom=OpenLayers.METERS_PER_INCH*OpenLayers.INCHES_PER_UNIT[this.units]*this.map.getResolution()/0.28E-3;var diff=Number.POSITIVE_INFINITY;var delta;for(var i=0,ii=this.matrixIds.length;i<ii;++i){delta=Math.abs(1-(this.matrixIds[i].scaleDenominator/denom));if(delta<diff){diff=delta;matrix=this.matrixIds[i];}}}else{matrix=this.matrixIds[this.map.getZoom()+this.zoomOffset];}} +return matrix;},getTileInfo:function(loc){var res=this.map.getResolution();var fx=(loc.lon-this.tileOrigin.lon)/(res*this.tileSize.w);var fy=(this.tileOrigin.lat-loc.lat)/(res*this.tileSize.h);var col=Math.floor(fx);var row=Math.floor(fy);return{col:col,row:row,i:Math.floor((fx-col)*this.tileSize.w),j:Math.floor((fy-row)*this.tileSize.h)};},getURL:function(bounds){bounds=this.adjustBounds(bounds);var url="";if(!this.tileFullExtent||this.tileFullExtent.intersectsBounds(bounds)){var center=bounds.getCenterLonLat();var info=this.getTileInfo(center);var matrixId=this.matrix.identifier;if(this.requestEncoding.toUpperCase()==="REST"){var path=this.version+"/"+this.layer+"/"+this.style+"/";if(this.dimensions){for(var i=0;i<this.dimensions.length;i++){if(this.params[this.dimensions[i]]){path=path+this.params[this.dimensions[i]]+"/";}}} +path=path+this.matrixSet+"/"+this.matrix.identifier+"/"+info.row+"/"+info.col+"."+this.formatSuffix;if(OpenLayers.Util.isArray(this.url)){url=this.selectUrl(path,this.url);}else{url=this.url;} +if(!url.match(/\/$/)){url=url+"/";} +url=url+path;}else if(this.requestEncoding.toUpperCase()==="KVP"){var params={SERVICE:"WMTS",REQUEST:"GetTile",VERSION:this.version,LAYER:this.layer,STYLE:this.style,TILEMATRIXSET:this.matrixSet,TILEMATRIX:this.matrix.identifier,TILEROW:info.row,TILECOL:info.col,FORMAT:this.format};url=OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this,[params]);}} +return url;},mergeNewParams:function(newParams){if(this.requestEncoding.toUpperCase()==="KVP"){return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,[OpenLayers.Util.upperCaseObject(newParams)]);}},CLASS_NAME:"OpenLayers.Layer.WMTS"});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"}); diff --git a/web/js/OpenLayers.Projection.CH1903.js b/web/js/OpenLayers.Projection.CH1903.js new file mode 100644 index 000000000..34a0500fa --- /dev/null +++ b/web/js/OpenLayers.Projection.CH1903.js @@ -0,0 +1,128 @@ +/** + * OpenLayers Swiss (CH1903) grid projection transformations + * + * Provides transform functions for WGS84<->CH1903 projections. + * + * Maths courtesy of the Swiss Federal Office of Topography: + * http://www.swisstopo.admin.ch/internet/swisstopo/en/home/products/software/products/skripts.html + * Simplifed a bit, and with x/y swapped the normal way round. + */ + +OpenLayers.Projection.CH1903 = { + + // Convert WGS lat/long (° dec) to CH x + WGStoCHx: function(lat, lng) { + + // Converts degrees dec to seconds + lat = lat * 3600; + lng = lng * 3600; + + // Auxiliary values (% Bern) + var lat_aux = (lat - 169028.66) / 10000; + var lng_aux = (lng - 26782.5) / 10000; + + // Process X + var x = 600072.37; + x = x + (211455.93 * lng_aux); + x = x - (10938.51 * lng_aux * lat_aux); + x = x - (0.36 * lng_aux * Math.pow(lat_aux, 2)); + x = x - (44.54 * Math.pow(lng_aux, 3)); + + return x; + }, + + // Convert WGS lat/long (° dec) to CH y + WGStoCHy: function(lat, lng) { + + // Converts degrees dec to seconds + lat = lat * 3600; + lng = lng * 3600; + + // Auxiliary values (% Bern) + var lat_aux = (lat - 169028.66)/10000; + var lng_aux = (lng - 26782.5)/10000; + + // Process Y + var y = 200147.07; + y = y + (308807.95 * lat_aux); + y = y + (3745.25 * Math.pow(lng_aux, 2)); + y = y + (76.63 * Math.pow(lat_aux, 2)); + y = y - (194.56 * Math.pow(lng_aux, 2) * lat_aux); + y = y + (119.79 * Math.pow(lat_aux, 3)); + + return y; + + }, + + // Convert CH x/y to WGS lat + chToWGSlat: function(x, y) { + + // Converts militar to civil and to unit = 1000km + // Axiliary values (% Bern) + var x_aux = (x - 600000) / 1000000; + var y_aux = (y - 200000) / 1000000; + + // Process lat + var lat = 16.9023892; + lat = lat + (3.238272 * y_aux); + lat = lat - (0.270978 * Math.pow(x_aux, 2)); + lat = lat - (0.002528 * Math.pow(y_aux, 2)); + lat = lat - (0.0447 * Math.pow(x_aux, 2) * y_aux); + lat = lat - (0.0140 * Math.pow(y_aux, 3)); + + // Unit 10000" to 1 " and converts seconds to degrees (dec) + lat = lat * 100 / 36; + + return lat; + + }, + + // Convert CH x/y to WGS long + chToWGSlng: function(x, y) { + + // Converts militar to civil and to unit = 1000km + // Axiliary values (% Bern) + var x_aux = (x - 600000) / 1000000; + var y_aux = (y - 200000) / 1000000; + + // Process long + var lng = 2.6779094; + lng = lng + (4.728982 * x_aux); + lng = lng + (0.791484 * x_aux * y_aux); + lng = lng + (0.1306 * x_aux * Math.pow(y_aux, 2)); + lng = lng - (0.0436 * Math.pow(x_aux, 3)); + + // Unit 10000" to 1 " and converts seconds to degrees (dec) + lng = lng * 100 / 36; + + return lng; + + }, + + // Function to convert a WGS84 coordinate to a Swiss coordinate. + projectForwardSwiss: function(point) { + var x = OpenLayers.Projection.CH1903.WGStoCHx(point.y, point.x), + y = OpenLayers.Projection.CH1903.WGStoCHy(point.y, point.x); + point.x = x; + point.y = y; + return point; + }, + + // Function to convert a Swiss coordinate to a WGS84 coordinate. + projectInverseSwiss: function(point) { + var lon = OpenLayers.Projection.CH1903.chToWGSlng(point.x, point.y); + var lat = OpenLayers.Projection.CH1903.chToWGSlat(point.x, point.y); + point.x = lon; + point.y = lat; + return point; + } +}; + +/** + * Note: One transform declared + * Transforms from EPSG:4326 to EPSG:21781 + */ + OpenLayers.Projection.addTransform("EPSG:4326", "EPSG:21781", + OpenLayers.Projection.CH1903.projectForwardSwiss); + OpenLayers.Projection.addTransform("EPSG:21781", "EPSG:4326", + OpenLayers.Projection.CH1903.projectInverseSwiss); 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&¢er!=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:"© <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/fixmystreet.js b/web/js/fixmystreet.js index b86d5f49c..7d75c8b65 100644 --- a/web/js/fixmystreet.js +++ b/web/js/fixmystreet.js @@ -17,7 +17,11 @@ $(function(){ $html.removeClass('no-js').addClass('js'); // Preload the new report pin - document.createElement('img').src = '/i/pin-green.png'; + if ( typeof fixmystreet !== 'undefined' && typeof fixmystreet.pin_prefix !== 'undefined' ) { + document.createElement('img').src = fixmystreet.pin_prefix + 'pin-green.png'; + } else { + document.createElement('img').src = '/i/pin-green.png'; + } // Focus on postcode box on front page $('#pc').focus(); @@ -43,18 +47,19 @@ $(function(){ // FIXME - needs to use translated string jQuery.validator.addMethod('validCategory', function(value, element) { - return this.optional(element) || value != '-- Pick a category --'; }, validation_strings.category ); + return this.optional(element) || value != '-- Pick a category --'; }, translation_strings.category ); jQuery.validator.addMethod('validName', function(value, element) { var validNamePat = /\ba\s*n+on+((y|o)mo?u?s)?(ly)?\b/i; - return this.optional(element) || value.length > 5 && value.match( /\S/ ) && value.match( /\s/ ) && !value.match( validNamePat ); }, validation_strings.category ); + return this.optional(element) || value.length > 5 && value.match( /\S/ ) && value.match( /\s/ ) && !value.match( validNamePat ); }, translation_strings.category ); var form_submitted = 0; var submitted = false; - $("form.validate").validate({ + $("form.validate").each(function(){ + $(this).validate({ rules: validation_rules, - messages: validation_strings, + messages: translation_strings, onkeyup: false, onfocusout: false, errorElement: 'div', @@ -85,6 +90,7 @@ $(function(){ submitted = false; }, invalidHandler: function(form, validator) { submitted = true; } + }); }); $('input[type=submit]').click( function(e) { form_submitted = 1; } ); @@ -128,7 +134,7 @@ $(function(){ // Geolocation if (geo_position_js.init()) { - var link = '<a href="#LINK" id="geolocate_link">… or locate me automatically</a>'; + var link = '<a href="#LINK" id="geolocate_link">… ' + translation_strings.geolocate + '</a>'; $('form[action="/alert/list"]').append(link.replace('LINK','alert/list')); if ($('body.frontpage').length) { $('#postcodeForm').after(link.replace('LINK','around')); @@ -142,7 +148,8 @@ $(function(){ if($('.mobile').length){ $link.append(' <img src="/cobrands/fixmystreet/images/spinner-black.gif" alt="" align="bottom">'); }else{ - $link.append(' <img src="/cobrands/fixmystreet/images/spinner-yellow.gif" alt="" align="bottom">'); + var spincolor = $('<span>').css("color","white").css("color") === $('#front-main').css("background-color")? 'white' : 'yellow'; + $link.append(' <img src="/cobrands/fixmystreet/images/spinner-' + spincolor + '.gif" alt="" align="bottom">'); } geo_position_js.getCurrentPosition(function(pos) { $link.find('img').remove(); @@ -153,13 +160,13 @@ $(function(){ }, function(err) { $link.find('img').remove(); if (err.code == 1) { // User said no - $link.html("You declined; please fill in the box above"); + $link.html(translation_strings.geolocation_declined); } else if (err.code == 2) { // No position - $link.html("Could not look up location"); + $link.html(translation_strings.geolocation_no_position); } else if (err.code == 3) { // Too long - $link.html("No result returned"); + $link.html(translation_strings.geolocation_no_result); } else { // Unknown - $link.html("Unknown error"); + $link.html(translation_strings.geolocation_unknown); } }, { enableHighAccuracy: true, diff --git a/web/js/jquery-ui/css/smoothness/images/animated-overlay.gif b/web/js/jquery-ui/css/smoothness/images/animated-overlay.gif Binary files differnew file mode 100755 index 000000000..d441f75eb --- /dev/null +++ b/web/js/jquery-ui/css/smoothness/images/animated-overlay.gif 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 Binary files differnew file mode 100755 index 000000000..c09235f60 --- /dev/null +++ b/web/js/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png 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 Binary files differnew file mode 100755 index 000000000..d29011d2a --- /dev/null +++ b/web/js/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png 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 Binary files differnew file mode 100755 index 000000000..1558bea51 --- /dev/null +++ b/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png 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 Binary files differnew file mode 100755 index 000000000..0359b121f --- /dev/null +++ b/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png 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 Binary files differnew file mode 100755 index 000000000..4fce6c462 --- /dev/null +++ b/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png 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 Binary files differnew file mode 100755 index 000000000..5299b5a0b --- /dev/null +++ b/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png 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 Binary files differnew file mode 100755 index 000000000..398c56a9c --- /dev/null +++ b/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png 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 Binary files differnew file mode 100755 index 000000000..d819aa58a --- /dev/null +++ b/web/js/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png 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 Binary files differnew file mode 100755 index 000000000..c1cb1170c --- /dev/null +++ b/web/js/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png 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 Binary files differnew file mode 100755 index 000000000..84b601bf0 --- /dev/null +++ b/web/js/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png 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 Binary files differnew file mode 100755 index 000000000..b6db1acdd --- /dev/null +++ b/web/js/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png 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 Binary files differnew file mode 100755 index 000000000..feea0e202 --- /dev/null +++ b/web/js/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png 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 Binary files differnew file mode 100755 index 000000000..ed5b6b093 --- /dev/null +++ b/web/js/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png 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,"'")+"'")+(O?"":" data-handler='selectDay' data-event='click' data-month='"+j.getMonth()+"' data-year='"+j.getFullYear()+"'")+">"+(L&&!v?" ":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?"":" ")),!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?"":" ")+_),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 0a5f339f5..c7bfef2b0 100644 --- a/web/js/map-OpenLayers.js +++ b/web/js/map-OpenLayers.js @@ -16,7 +16,7 @@ function fixmystreet_update_pin(lonlat) { if (!$('#side-form-error').length) { $('<div id="side-form-error"/>').insertAfter($('#side-form')); } - $('#side-form-error').html('<h1>Reporting a problem</h1><p>' + data.error + '</p>').show(); + $('#side-form-error').html('<h1>' + translation_strings.reporting_a_problem + '</h1><p>' + data.error + '</p>').show(); $('#side-form').hide(); return; } @@ -26,7 +26,7 @@ function fixmystreet_update_pin(lonlat) { if ( data.extra_name_info && !$('#form_fms_extra_title').length ) { // there might be a first name field on some cobrands var lb = $('#form_first_name').prev(); - if ( lb.length == 0 ) { lb = $('#form_name').prev(); } + if ( lb.length === 0 ) { lb = $('#form_name').prev(); } lb.before(data.extra_name_info); } }); @@ -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++) { @@ -82,15 +103,10 @@ function fixmystreet_onload() { fixmystreet.map.addLayer(area); if ( fixmystreet.area.length == 1 ) { area.events.register('loadend', null, function(a,b,c) { - 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); + if ( fixmystreet.area_format ) { + area.styleMap.styles['default'].defaultStyle = fixmystreet.area_format; } + fixmystreet_zoomToBounds( area.getDataExtent() ); }); } } @@ -106,24 +122,24 @@ function fixmystreet_onload() { }); pin_layer_style_map.addUniqueValueRules('default', 'size', { 'normal': { - externalGraphic: "/i/pin-${colour}.png", + externalGraphic: fixmystreet.pin_prefix + "pin-${colour}.png", graphicWidth: 48, graphicHeight: 64, graphicXOffset: -24, graphicYOffset: -64, - backgroundGraphic: "/i/pin-shadow.png", + backgroundGraphic: fixmystreet.pin_prefix + "pin-shadow.png", backgroundWidth: 60, backgroundHeight: 30, backgroundXOffset: -7, backgroundYOffset: -30 }, 'big': { - externalGraphic: "/i/pin-${colour}-big.png", + externalGraphic: fixmystreet.pin_prefix + "pin-${colour}-big.png", graphicWidth: 78, graphicHeight: 105, graphicXOffset: -39, graphicYOffset: -105, - backgroundGraphic: "/i/pin-shadow-big.png", + backgroundGraphic: fixmystreet.pin_prefix + "pin-shadow-big.png", backgroundWidth: 88, backgroundHeight: 40, backgroundXOffset: -10, @@ -137,7 +153,7 @@ function fixmystreet_onload() { styleMap: pin_layer_style_map }; if (fixmystreet.page == 'around') { - fixmystreet.bbox_strategy = new OpenLayers.Strategy.BBOX({ ratio: 1 }); + fixmystreet.bbox_strategy = fixmystreet.bbox_strategy || new OpenLayers.Strategy.BBOX({ ratio: 1 }); pin_layer_options.strategies = [ fixmystreet.bbox_strategy ]; pin_layer_options.protocol = new OpenLayers.Protocol.HTTP({ url: '/ajax', @@ -147,18 +163,20 @@ function fixmystreet_onload() { } fixmystreet.markers = new OpenLayers.Layer.Vector("Pins", pin_layer_options); fixmystreet.markers.events.register( 'loadend', fixmystreet.markers, function(evt) { - if (fixmystreet.map.popups.length) fixmystreet.map.removePopup(fixmystreet.map.popups[0]); + if (fixmystreet.map.popups.length) { + fixmystreet.map.removePopup(fixmystreet.map.popups[0]); + } }); var markers = fms_markers_list( fixmystreet.pins, true ); fixmystreet.markers.addFeatures( markers ); + function onPopupClose(evt) { + fixmystreet.select_feature.unselect(selectedFeature); + OpenLayers.Event.stop(evt); + } if (fixmystreet.page == 'around' || fixmystreet.page == 'reports' || fixmystreet.page == 'my') { fixmystreet.select_feature = new OpenLayers.Control.SelectFeature( fixmystreet.markers ); var selectedFeature; - function onPopupClose(evt) { - fixmystreet.select_feature.unselect(selectedFeature); - OpenLayers.Event.stop(evt); - } fixmystreet.markers.events.register( 'featureunselected', fixmystreet.markers, function(evt) { var feature = evt.feature, popup = feature.popup; fixmystreet.map.removePopup(popup); @@ -171,7 +189,7 @@ function fixmystreet_onload() { var popup = new OpenLayers.Popup.FramedCloud("popup", feature.geometry.getBounds().getCenterLonLat(), null, - feature.attributes.title + "<br><a href=/report/" + feature.attributes.id + ">More details</a>", + feature.attributes.title + "<br><a href=/report/" + feature.attributes.id + ">" + translation_strings.more_details + "</a>", { size: new OpenLayers.Size(0,0), offset: new OpenLayers.Pixel(0,-40) }, true, onPopupClose); feature.popup = popup; @@ -185,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) { @@ -201,7 +211,8 @@ function fixmystreet_onload() { var showhide = [ 'Show pins', 'Hide pins', 'Dangos pinnau', 'Cuddio pinnau', - "Vis nåler", "Gjem nåler" + "Vis nåler", "Gjem nåler", + "Zeige Stecknadeln", "Stecknadeln ausblenden" ]; for (var i=0; i<showhide.length; i+=2) { if (this.innerHTML == showhide[i]) { @@ -250,24 +261,49 @@ function fixmystreet_onload() { $(function(){ - set_map_config(); + // Set specific map config - some other JS included in the + // template should define this + set_map_config(); - fixmystreet.map = new OpenLayers.Map("map", { - controls: fixmystreet.controls, - displayProjection: new OpenLayers.Projection("EPSG:4326") - }); + // Create the basics of the map + fixmystreet.map = new OpenLayers.Map( + "map", OpenLayers.Util.extend({ + controls: fixmystreet.controls, + displayProjection: new OpenLayers.Projection("EPSG:4326") + }, 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' }); } - fixmystreet.layer_options = OpenLayers.Util.extend({ - zoomOffset: fixmystreet.zoomOffset, - transitionEffect: 'resize', - numZoomLevels: fixmystreet.numZoomLevels - }, fixmystreet.layer_options); - var layer = new fixmystreet.map_type("", fixmystreet.layer_options); - fixmystreet.map.addLayer(layer); + // Set it up our way + + var layer; + if (!fixmystreet.layer_options) { + fixmystreet.layer_options = [ {} ]; + } + 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, + // 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) { + layer = new fixmystreet.map_type(fixmystreet.layer_options[i]); + } else { + layer = new fixmystreet.map_type("", fixmystreet.layer_options[i]); + } + fixmystreet.map.addLayer(layer); + } if (!fixmystreet.map.getCenter()) { var centre = new OpenLayers.LonLat( fixmystreet.longitude, fixmystreet.latitude ); @@ -279,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')) { @@ -337,7 +347,7 @@ $(function(){ $('#sub_map_links').show(); //only on mobile $('#mob_sub_map_links').remove(); - $('.mobile-map-banner').html('<a href="/">Home</a> Place pin on map'); + $('.mobile-map-banner').html('<a href="/">' + translation_strings.home + '</a> ' + translation_strings.place_pin_on_map); fixmystreet.page = 'around'; }); @@ -353,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; @@ -372,30 +379,53 @@ 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); } }); /* Overriding Permalink so that it can pass the correct zoom to OSM */ OpenLayers.Control.PermalinkFMS = OpenLayers.Class(OpenLayers.Control.Permalink, { - updateLink: function() { + _updateLink: function(alter_zoom) { 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(null, this.map.getZoom()+fixmystreet.zoomOffset)); + 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 mid_point = fixmystreet_midpoint(); + var p = this.map.getViewPortPxFromLonLat(center); + p.x += mid_point; + p.y += 25; + center = this.map.getLonLatFromViewPortPx(p); + } + + var zoom = this.map.getZoom(); + if ( alter_zoom ) { + zoom += fixmystreet.zoomOffset; + } + href += separator + OpenLayers.Util.getParameterString(this.createParams(center, zoom)); // Could use mlat/mlon here as well if we are on a page with a marker if (this.anchor && !this.element) { window.location.href = href; @@ -403,6 +433,14 @@ OpenLayers.Control.PermalinkFMS = OpenLayers.Class(OpenLayers.Control.Permalink, else { this.element.href = href; } + }, + updateLink: function() { + this._updateLink(0); + } +}); +OpenLayers.Control.PermalinkFMSz = OpenLayers.Class(OpenLayers.Control.PermalinkFMS, { + updateLink: function() { + this._updateLink(1); } }); @@ -450,6 +488,7 @@ OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, { }, trigger: function(e) { + var cobrand = $('meta[name="cobrand"]').attr('content'); if (typeof fixmystreet.nav_control != 'undefined') { fixmystreet.nav_control.disableZoomWheel(); } @@ -499,7 +538,7 @@ OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, { if (sidebar.css('position') == 'absolute') { var w = sidebar.width(), h = sidebar.height(), o = sidebar.offset(), - $map_box = $('#map_box'), bo = $map_box.offset(); + $map_boxx = $('#map_box'), bo = $map_boxx.offset(); // e.xy is relative to top left of map, which might not be top left of page e.xy.x += bo.left; e.xy.y += bo.top; @@ -524,15 +563,10 @@ OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, { var $map_box = $('#map_box'), width = $map_box.width(), height = $map_box.height(); - $map_box.append( - '<p id="mob_sub_map_links">' + - '<a href="#" id="try_again">Try again</a>' + - '<a href="#ok" id="mob_ok">OK</a>' + - '</p>' - ).css({ position: 'relative', width: width, height: height, marginBottom: '1em' }); + $map_box.append( '<p id="mob_sub_map_links">' + '<a href="#" id="try_again">' + translation_strings.try_again + '</a>' + '<a href="#ok" id="mob_ok">' + translation_strings.ok + '</a>' + '</p>' ).css({ position: 'relative', width: width, height: height, marginBottom: '1em' }); // Making it relative here makes it much easier to do the scrolling later - $('.mobile-map-banner').html('<a href="/">Home</a> Right place?'); + $('.mobile-map-banner').html('<a href="/">' + translation_strings.home + '</a> ' + translation_strings.right_place); // mobile user clicks 'ok' on map $('#mob_ok').toggle(function(){ @@ -541,18 +575,21 @@ OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, { //to do this on other pages where #side-form might not be $('html, body').animate({ scrollTop: height-60 }, 1000, function(){ $('#mob_sub_map_links').addClass('map_complete'); - $('#mob_ok').text('MAP'); + $('#mob_ok').text(translation_strings.map); }); }, function(){ $('html, body').animate({ scrollTop: 0 }, 1000, function(){ $('#mob_sub_map_links').removeClass('map_complete'); - $('#mob_ok').text('OK'); + $('#mob_ok').text(translation_strings.ok); }); }); } fixmystreet.page = 'new'; location.hash = 'report'; + if ( typeof ga !== 'undefined' && cobrand == 'fixmystreet' ) { + ga('send', 'pageview', { 'page': '/map_click' } ); + } } }); diff --git a/web/js/map-OpenStreetMap.js b/web/js/map-OpenStreetMap.js index 54bf95964..fc0afedc3 100644 --- a/web/js/map-OpenStreetMap.js +++ b/web/js/map-OpenStreetMap.js @@ -7,8 +7,8 @@ function set_map_config(perm) { new OpenLayers.Control.ArgParser(), //new OpenLayers.Control.LayerSwitcher(), new OpenLayers.Control.Navigation(), - new OpenLayers.Control.Permalink(permalink_id), - new OpenLayers.Control.PermalinkFMS('osm_link', 'http://www.openstreetmap.org/'), + new OpenLayers.Control.PermalinkFMS(permalink_id), + new OpenLayers.Control.PermalinkFMSz('osm_link', 'http://www.openstreetmap.org/'), new OpenLayers.Control.PanZoomFMS({id: 'fms_pan_zoom' }) ]; } @@ -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); @@ -94,14 +64,14 @@ OpenLayers.Layer.OSM.MapQuestOpen = OpenLayers.Class(OpenLayers.Layer.OSM, { */ initialize: function(name, options) { var url = [ - "http://otile1.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png", - "http://otile2.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png", - "http://otile3.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png", - "http://otile4.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png" + "http://otile1.mqcdn.com/tiles/1.0.0/map/${z}/${x}/${y}.png", + "http://otile2.mqcdn.com/tiles/1.0.0/map/${z}/${x}/${y}.png", + "http://otile3.mqcdn.com/tiles/1.0.0/map/${z}/${x}/${y}.png", + "http://otile4.mqcdn.com/tiles/1.0.0/map/${z}/${x}/${y}.png" ]; 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 6d86663f0..846133cd5 100644 --- a/web/js/map-bing-ol.js +++ b/web/js/map-bing-ol.js @@ -16,9 +16,14 @@ function set_map_config(perm) { new OpenLayers.Control.Attribution(), new OpenLayers.Control.ArgParser(), fixmystreet.nav_control, - new OpenLayers.Control.Permalink(permalink_id), + new OpenLayers.Control.PermalinkFMS(permalink_id), new OpenLayers.Control.PanZoomFMS({id: 'fms_pan_zoom' }) ]; + /* Linking back to around from report page, keeping track of map moves */ + if ( fixmystreet.page == 'report' ) { + fixmystreet.controls.push( new OpenLayers.Control.PermalinkFMS('key-tool-problems-nearby', '/around') ); + } + if (fixmystreet.map_type) { tile_base = fixmystreet.map_type; } @@ -80,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), - numZoomLevels: 18, - transitionEffect: "resize", + maxResolution: 156543.03390625/Math.pow(2, options.zoomOffset || 0), + numZoomLevels: 19, 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-google.js b/web/js/map-google.js index 742b55d47..8364b40df 100644 --- a/web/js/map-google.js +++ b/web/js/map-google.js @@ -1,22 +1,329 @@ -$(function(){ +/* + XXX Lots overlap with map-OpenLayers.js - refactor! + XXX Things still need to be changed for mobile use, probably won't work + there. + TODO Pin size on report page +*/ + +function PaddingControl(div) { + div.style.padding = '40px'; +} + +function fixmystreet_update_pin(lonlat) { + document.getElementById('fixmystreet.latitude').value = lonlat.lat(); + document.getElementById('fixmystreet.longitude').value = lonlat.lng(); + + $.getJSON('/report/new/ajax', { + latitude: $('#fixmystreet\\.latitude').val(), + longitude: $('#fixmystreet\\.longitude').val() + }, function(data) { + if (data.error) { + if (!$('#side-form-error').length) { + $('<div id="side-form-error"/>').insertAfter($('#side-form')); + } + $('#side-form-error').html('<h1>' + translation_strings.reporting_a_problem + '</h1><p>' + data.error + '</p>').show(); + $('#side-form').hide(); + return; + } + $('#side-form, #site-logo').show(); + $('#councils_text').html(data.councils_text); + $('#form_category_row').html(data.category); + if ( data.extra_name_info && !$('#form_fms_extra_title').length ) { + // there might be a first name field on some cobrands + var lb = $('#form_first_name').prev(); + if ( lb.length === 0 ) { lb = $('#form_name').prev(); } + lb.before(data.extra_name_info); + } + }); + + if (!$('#side-form-error').is(':visible')) { + $('#side-form, #site-logo').show(); + } +} + +var infowindow = new google.maps.InfoWindow(); +function make_infowindow(marker) { + return function() { + infowindow.setContent(marker.title + "<br><a href=/report/" + marker.id + ">" + translation_strings.more_details + "</a>"); + infowindow.open(fixmystreet.map, marker); + }; +} + +function fms_markers_list(pins, transform) { + var markers = []; + if (fixmystreet.markers) { + for (var m=0; m<fixmystreet.markers.length; m++) { + fixmystreet.markers[m].setMap(null); + } + } + for (var i=0; i<pins.length; i++) { + var pin = pins[i]; + var pin_args = { + position: new google.maps.LatLng( pin[0], pin[1] ), + //size: pin[5] || 'normal', + id: pin[3], + title: pin[4] || '', + map: fixmystreet.map + }; + if (pin[2] == 'green') { + pin_args.icon = "http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|87dd00"; + } + if (pin[2] == 'yellow') { + pin_args.icon = "http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|ffd600"; + } + var marker = new google.maps.Marker(pin_args); + if (fixmystreet.page == 'around' || fixmystreet.page == 'reports' || fixmystreet.page == 'my') { + var l = new google.maps.event.addListener(marker, 'click', make_infowindow(marker)); + } + markers.push( marker ); + } + return markers; +} + +function fms_map_clicked(e) { + var lonlat = e.latLng; + if (fixmystreet.page == 'new') { + /* Already have a pin */ + fixmystreet.report_marker.setPosition(lonlat); + } else { + var marker = new google.maps.Marker({ + position: lonlat, + draggable: true, + animation: google.maps.Animation.DROP, + map: fixmystreet.map + }); + var l = google.maps.event.addListener(marker, 'dragend', function(){ + fixmystreet_update_pin( marker.getPosition() ); + }); + fixmystreet.report_marker = marker; + google.maps.event.removeListener(fixmystreet.event_update_map); + for (m=0; m<fixmystreet.markers.length; m++) { + fixmystreet.markers[m].setMap(null); + } + } + + // check to see if markers are visible. We click the + // link so that it updates the text in case they go + // back + if ( ! 1 ) { // XXX fixmystreet.markers.getVisibility() ) + fixmystreet.state_pins_were_hidden = true; + $('#hide_pins_link').click(); + } + + // Store pin location in form fields, and check coverage of point + fixmystreet_update_pin(lonlat); + + // Already did this first time map was clicked, so no need to do it again. + if (fixmystreet.page == 'new') { + return; + } + + $('#side').hide(); + if (typeof heightFix !== 'undefined') { + heightFix('#report-a-problem-sidebar', '.content', 26); + } + + // If we clicked the map somewhere inconvenient + // TODO + + $('#sub_map_links').hide(); + fixmystreet.page = 'new'; + location.hash = 'report'; +} + +/* Pan data handler */ +function fms_read_pin_json(obj) { + var current, current_near; + if (typeof(obj.current) != 'undefined' && (current = document.getElementById('current'))) { + current.innerHTML = obj.current; + } + if (typeof(obj.current_near) != 'undefined' && (current_near = document.getElementById('current_near'))) { + current_near.innerHTML = obj.current_near; + } + fixmystreet.markers = fms_markers_list( obj.pins, false ); +} + +function fms_update_pins() { + var b = fixmystreet.map.getBounds(), + b_sw = b.getSouthWest(), + b_ne = b.getNorthEast(), + bbox = b_sw.lng() + ',' + b_sw.lat() + ',' + b_ne.lng() + ',' + b_ne.lat(), + params = { + bbox: bbox + }; + if (fixmystreet.all_pins) { + params.all_pins = 1; + } + $.getJSON('/ajax', params, fms_read_pin_json); +} + +function fms_map_initialize() { var centre = new google.maps.LatLng( fixmystreet.latitude, fixmystreet.longitude ); - var map = new google.maps.Map(document.getElementById("map"), { + var map_args = { mapTypeId: google.maps.MapTypeId.ROADMAP, center: centre, - zoom: 16, + zoom: 13 + fixmystreet.zoom, disableDefaultUI: true, - navigationControl: true, - navigationControlOptions: { - style: google.maps.NavigationControlStyle.SMALL + panControl: true, + panControlOptions: { + position: google.maps.ControlPosition.RIGHT_TOP + }, + zoomControl: true, + zoomControlOptions: { + position: google.maps.ControlPosition.RIGHT_TOP }, mapTypeControl: true, mapTypeControlOptions: { + position: google.maps.ControlPosition.RIGHT_TOP, style: google.maps.MapTypeControlStyle.DROPDOWN_MENU } + }; + if (!fixmystreet.zoomToBounds) { + map_args.minZoom = 13; + map_args.maxZoom = 18; + } + fixmystreet.map = new google.maps.Map(document.getElementById("map"), map_args); + + /* Space above the top right controls */ + var paddingDiv = document.createElement('div'); + var paddingControl = new PaddingControl(paddingDiv); + paddingDiv.index = 0; + fixmystreet.map.controls[google.maps.ControlPosition.RIGHT_TOP].push(paddingDiv); + + 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.panBy(-q, -25); + } + + if (document.getElementById('mapForm')) { + var l = google.maps.event.addListener(fixmystreet.map, 'click', fms_map_clicked); + } + + $(window).hashchange(function(){ + if (location.hash == '#report' && $('.rap-notes').is(':visible')) { + $('.rap-notes-close').click(); + return; + } + + if (location.hash && location.hash != '#') { + return; + } + + // Okay, back to around view. + fixmystreet.report_marker.setMap(null); + fixmystreet.event_update_map = google.maps.event.addListener(fixmystreet.map, 'idle', fms_update_pins); + google.maps.event.trigger(fixmystreet.map, 'idle'); + if ( fixmystreet.state_pins_were_hidden ) { + // If we had pins hidden when we clicked map (which had to show the pin layer as I'm doing it in one layer), hide them again. + $('#hide_pins_link').click(); + } + $('#side-form').hide(); + $('#side').show(); + $('#sub_map_links').show(); + //only on mobile + $('#mob_sub_map_links').remove(); + $('.mobile-map-banner').html('<a href="/">' + translation_strings.home + '</a> ' + translation_strings.place_pin_on_map); + fixmystreet.page = 'around'; + }); + + if ( fixmystreet.area.length ) { + for (var i=0; i<fixmystreet.area.length; i++) { + var args = { + url: "http://mapit.mysociety.org/area/" + fixmystreet.area[i] + ".kml?simplify_tolerance=0.0001", + clickable: false, + preserveViewport: true, + map: fixmystreet.map + }; + if ( fixmystreet.area.length == 1 ) { + args.preserveViewport = false; + } + var a = new google.maps.KmlLayer(args); + a.setMap(fixmystreet.map); + } + } + + if (fixmystreet.page == 'around') { + fixmystreet.event_update_map = google.maps.event.addListener(fixmystreet.map, 'idle', fms_update_pins); + } + + fixmystreet.markers = fms_markers_list( fixmystreet.pins, true ); + + /* + 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); + } + } + */ + + $('#hide_pins_link').click(function(e) { + var i, m; + e.preventDefault(); + var showhide = [ + 'Show pins', 'Hide pins', + 'Dangos pinnau', 'Cuddio pinnau', + "Vis nåler", "Gjem nåler", + "Zeige Stecknadeln", "Stecknadeln ausblenden" + ]; + for (i=0; i<showhide.length; i+=2) { + if (this.innerHTML == showhide[i]) { + for (m=0; m<fixmystreet.markers.length; m++) { + fixmystreet.markers[m].setMap(fixmystreet.map); + } + this.innerHTML = showhide[i+1]; + } else if (this.innerHTML == showhide[i+1]) { + for (m=0; m<fixmystreet.markers.length; m++) { + fixmystreet.markers[m].setMap(null); + } + this.innerHTML = showhide[i]; + } + } }); - google.maps.event.addListener(map, "zoom_changed", function() { - if (map.getZoom() < 13) map.setZoom(13); - if (map.getZoom() > 17) map.setZoom(17); + $('#all_pins_link').click(function(e) { + var i; + e.preventDefault(); + for (i=0; i<fixmystreet.markers.length; i++) { + fixmystreet.markers[i].setMap(fixmystreet.map); + } + var texts = [ + 'en', 'Show old', 'Hide old', + 'nb', 'Inkluder utdaterte problemer', 'Skjul utdaterte rapporter', + 'cy', 'Cynnwys hen adroddiadau', 'Cuddio hen adroddiadau' + ]; + for (i=0; i<texts.length; i+=3) { + if (this.innerHTML == texts[i+1]) { + this.innerHTML = texts[i+2]; + fixmystreet.markers.protocol.options.params = { all_pins: 1 }; + fixmystreet.markers.refresh( { force: true } ); + lang = texts[i]; + } else if (this.innerHTML == texts[i+2]) { + this.innerHTML = texts[i+1]; + fixmystreet.markers.protocol.options.params = { }; + fixmystreet.markers.refresh( { force: true } ); + lang = texts[i]; + } + } + if (lang == 'cy') { + document.getElementById('hide_pins_link').innerHTML = 'Cuddio pinnau'; + } else if (lang == 'nb') { + document.getElementById('hide_pins_link').innerHTML = 'Gjem nåler'; + } else { + document.getElementById('hide_pins_link').innerHTML = 'Hide pins'; + } }); -}); + +} + +google.maps.visualRefresh = true; +google.maps.event.addDomListener(window, 'load', fms_map_initialize); diff --git a/web/js/map-streetview.js b/web/js/map-streetview.js index b1ba3664d..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 © 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), - numZoomLevels: 18, - transitionEffect: "resize", + maxResolution: 156543.03390625/Math.pow(2, options.zoomOffset || 0), + numZoomLevels: 19, 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); diff --git a/web/js/map-wmts-zurich.js b/web/js/map-wmts-zurich.js new file mode 100644 index 000000000..cfff686e6 --- /dev/null +++ b/web/js/map-wmts-zurich.js @@ -0,0 +1,141 @@ +/* + * Maps for FMZ using Zurich council's WMTS tile server + */ + +function fixmystreet_zurich_admin_drag() { + var admin_drag = new OpenLayers.Control.DragFeature( fixmystreet.markers, { + onComplete: function(feature, e) { + var lonlat = feature.geometry.clone(); + lonlat.transform( + fixmystreet.map.getProjectionObject(), + new OpenLayers.Projection("EPSG:4326") + ); + if (window.confirm( 'Richtiger Ort?' ) ) { + // Store new co-ordinates + document.getElementById('fixmystreet.latitude').value = lonlat.y; + document.getElementById('fixmystreet.longitude').value = lonlat.x; + } else { + // Put it back + var lat = document.getElementById('fixmystreet.latitude').value; + var lon = document.getElementById('fixmystreet.longitude').value; + lonlat = new OpenLayers.LonLat(lon, lat).transform( + new OpenLayers.Projection("EPSG:4326"), + fixmystreet.map.getProjectionObject() + ); + fixmystreet.markers.features[0].move(lonlat); + } + } + } ); + fixmystreet.map.addControl( admin_drag ); + admin_drag.activate(); +} + +$(function(){ + $('#map_layer_toggle').toggle(function(){ + $(this).text('Luftbild'); + fixmystreet.map.setBaseLayer(fixmystreet.map.layers[1]); + }, function(){ + $(this).text('Stadtplan'); + fixmystreet.map.setBaseLayer(fixmystreet.map.layers[0]); + }); + + /* Admin dragging of pin */ + if (fixmystreet.page == 'admin') { + if ($.browser.msie) { + $(window).load(fixmystreet_zurich_admin_drag); + } else { + fixmystreet_zurich_admin_drag(); + } + } +}); + +/* + * set_map_config() is called on dom ready in map-OpenLayers.js + * to setup the way the map should operate. + */ + function set_map_config(perm) { + // This stuff is copied from js/map-bing-ol.js + + var nav_opts = { zoomWheelEnabled: false }; + if (fixmystreet.page == 'around' && $('html').hasClass('mobile')) { + nav_opts = {}; + } + fixmystreet.nav_control = new OpenLayers.Control.Navigation(nav_opts); + + fixmystreet.controls = [ + new OpenLayers.Control.Attribution(), + new OpenLayers.Control.ArgParser(), + fixmystreet.nav_control + ]; + if ( fixmystreet.page != 'report' || !$('html').hasClass('mobile') ) { + fixmystreet.controls.push( new OpenLayers.Control.PanZoomFMS({id: 'fms_pan_zoom' }) ); + } + + /* Linking back to around from report page, keeping track of map moves */ + if ( fixmystreet.page == 'report' ) { + fixmystreet.controls.push( new OpenLayers.Control.PermalinkFMS('key-tool-problems-nearby', '/around') ); + } + + fixmystreet.map_type = OpenLayers.Layer.WMTS; + + // Set DPI - default is 72 + OpenLayers.DOTS_PER_INCH = 96; + + fixmystreet.map_options = { + maxExtent: new OpenLayers.Bounds(676000, 241000, 690000, 255000), + units: 'm', + scales: [ '64000', '32000', '16000', '8000', '4000', '2000', '1000', '500' ] + }; + + var layer_options = { + projection: new OpenLayers.Projection("EPSG:21781"), + name: "Hybrid", + layer: "Hybrid", + matrixSet: "nativeTileMatrixSet", + requestEncoding: "REST", + url: "/maps/Hybrid/", + style: "default", + matrixIds: [ + //{ identifier: "0", matrixHeight: 2, matrixWidth: 2, scaleDenominator: 250000, supportedCRS: "urn:ogc:def:crs:EPSG::21781", tileHeight: 256, tileWidth: 256, topLeftCorner: { lat: 30814423, lon: -29386322 } }, + //{ identifier: "1", matrixHeight: 3, matrixWidth: 3, scaleDenominator: 125000, supportedCRS: "urn:ogc:def:crs:EPSG::21781", tileHeight: 256, tileWidth: 256, topLeftCorner: { lat: 30814423, lon: -29386322 } }, + { identifier: "2", matrixHeight: 4, matrixWidth: 5, scaleDenominator: 64000, supportedCRS: "urn:ogc:def:crs:EPSG::21781", tileHeight: 256, tileWidth: 256, topLeftCorner: { lat: 30814423, lon: -29386322 } }, + { identifier: "3", matrixHeight: 7, matrixWidth: 8, scaleDenominator: 32000, supportedCRS: "urn:ogc:def:crs:EPSG::21781", tileHeight: 256, tileWidth: 256, topLeftCorner: { lat: 30814423, lon: -29386322 } }, + { identifier: "4", matrixHeight: 14, matrixWidth: 14, scaleDenominator: 16000, supportedCRS: "urn:ogc:def:crs:EPSG::21781", tileHeight: 256, tileWidth: 256, topLeftCorner: { lat: 30814423, lon: -29386322 } }, + { identifier: "5", matrixHeight: 27, matrixWidth: 27, scaleDenominator: 8000, supportedCRS: "urn:ogc:def:crs:EPSG::21781", tileHeight: 256, tileWidth: 256, topLeftCorner: { lat: 30814423, lon: -29386322 } }, + { identifier: "6", matrixHeight: 52, matrixWidth: 53, scaleDenominator: 4000, supportedCRS: "urn:ogc:def:crs:EPSG::21781", tileHeight: 256, tileWidth: 256, topLeftCorner: { lat: 30814423, lon: -29386322 } }, + { identifier: "7", matrixHeight: 104, matrixWidth: 105, scaleDenominator: 2000, supportedCRS: "urn:ogc:def:crs:EPSG::21781", tileHeight: 256, tileWidth: 256, topLeftCorner: { lat: 30814423, lon: -29386322 } }, + { identifier: "8", matrixHeight: 208, matrixWidth: 208, scaleDenominator: 1000, supportedCRS: "urn:ogc:def:crs:EPSG::21781", tileHeight: 256, tileWidth: 256, topLeftCorner: { lat: 30814423, lon: -29386322 } }, + { identifier: "9", matrixHeight: 415, matrixWidth: 414, scaleDenominator: 500, supportedCRS: "urn:ogc:def:crs:EPSG::21781", tileHeight: 256, tileWidth: 256, topLeftCorner: { lat: 30814423, lon: -29386322 } } + ] + }; + fixmystreet.layer_options = [ + layer_options, OpenLayers.Util.applyDefaults({ + name: "Stadtplan", + layer: "Stadtplan", + url: "/maps/Stadtplan/" + }, layer_options) + ]; + + // Give main code a new bbox_strategy that translates between + // lat/lon and our swiss coordinates + fixmystreet.bbox_strategy = new OpenLayers.Strategy.ZurichBBOX({ratio: 1}); + + fixmystreet.area_format = { fillColor: 'none', strokeWidth: 4, strokeColor: 'black' }; +} + +OpenLayers.Strategy.ZurichBBOX = OpenLayers.Class(OpenLayers.Strategy.BBOX, { + getMapBounds: function() { + // Get the map bounds but return them in lat/lon, not + // Swiss coordinates + if (this.layer.map === null) { + return null; + } + + var swissBounds = this.layer.map.getExtent(); + // Transform bound corners into WGS84 + swissBounds.transform( new OpenLayers.Projection("EPSG:21781"), new OpenLayers.Projection("EPSG:4326") ); + return swissBounds; + }, + + CLASS_NAME: "OpenLayers.Strategy.ZurichBBOX" +}); diff --git a/web/js/select2/LICENSE b/web/js/select2/LICENSE new file mode 100644 index 000000000..3c98f3df4 --- /dev/null +++ b/web/js/select2/LICENSE @@ -0,0 +1,18 @@ +Copyright 2012 Igor Vaynberg + +Version: @@ver@@ Timestamp: @@timestamp@@ + +This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU +General Public License version 2 (the "GPL License"). You may choose either license to govern your +use of this software only upon the condition that you accept all of the terms of either the Apache +License or the GPL License. + +You may obtain a copy of the Apache License and the GPL License at: + +http://www.apache.org/licenses/LICENSE-2.0 +http://www.gnu.org/licenses/gpl-2.0.html + +Unless required by applicable law or agreed to in writing, software distributed under the Apache License +or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +either express or implied. See the Apache License and the GPL License for the specific language governing +permissions and limitations under the Apache License and the GPL License.
\ No newline at end of file diff --git a/web/js/select2/bower.json b/web/js/select2/bower.json new file mode 100644 index 000000000..887cbf84d --- /dev/null +++ b/web/js/select2/bower.json @@ -0,0 +1,8 @@ +{ + "name": "select2", + "version": "3.4.5", + "main": ["select2.js", "select2.css", "select2.png", "select2x2.png", "select2-spinner.gif"], + "dependencies": { + "jquery": ">= 1.7.1" + } +} diff --git a/web/js/select2/release.sh b/web/js/select2/release.sh new file mode 100755 index 000000000..92fe0e959 --- /dev/null +++ b/web/js/select2/release.sh @@ -0,0 +1,73 @@ +#!/bin/bash +set -e + +echo -n "Enter the version for this release: " + +read ver + +if [ ! $ver ]; then + echo "Invalid version." + exit +fi + +name="select2" +js="$name.js" +mini="$name.min.js" +css="$name.css" +release="$name-$ver" +tag="$ver" +branch="build-$ver" +curbranch=`git branch | grep "*" | sed "s/* //"` +timestamp=$(date) +tokens="s/@@ver@@/$ver/g;s/\@@timestamp@@/$timestamp/g" +remote="github" + +echo "Pulling from origin" + +git pull + +echo "Updating Version Identifiers" + +sed -E -e "s/\"version\": \"([0-9\.]+)\",/\"version\": \"$ver\",/g" -i "" bower.json select2.jquery.json +git add bower.json +git add select2.jquery.json +git commit -m "modified version identifiers in descriptors for release $ver" +git push + +git branch "$branch" +git checkout "$branch" + +echo "Tokenizing..." + +find . -name "$js" | xargs -I{} sed -e "$tokens" -i "" {} +find . -name "$css" | xargs -I{} sed -e "$tokens" -i "" {} +sed -e "s/latest/$ver/g" -i "" bower.json + +git add "$js" +git add "$css" + +echo "Minifying..." + +echo "/*" > "$mini" +cat LICENSE | sed "$tokens" >> "$mini" +echo "*/" >> "$mini" + +curl -s \ + --data-urlencode "js_code@$js" \ + http://marijnhaverbeke.nl/uglifyjs \ + >> "$mini" + +git add "$mini" + +git commit -m "release $ver" + +echo "Tagging..." +git tag -a "$tag" -m "tagged version $ver" +git push "$remote" --tags + +echo "Cleaning Up..." + +git checkout "$curbranch" +git branch -D "$branch" + +echo "Done" diff --git a/web/js/select2/select2-bootstrap.css b/web/js/select2/select2-bootstrap.css new file mode 100644 index 000000000..909971074 --- /dev/null +++ b/web/js/select2/select2-bootstrap.css @@ -0,0 +1,87 @@ +.form-control .select2-choice { + border: 0; + border-radius: 2px; +} + +.form-control .select2-choice .select2-arrow { + border-radius: 0 2px 2px 0; +} + +.form-control.select2-container { + height: auto !important; + padding: 0px; +} + +.form-control.select2-container.select2-dropdown-open { + border-color: #5897FB; + border-radius: 3px 3px 0 0; +} + +.form-control .select2-container.select2-dropdown-open .select2-choices { + border-radius: 3px 3px 0 0; +} + +.form-control.select2-container .select2-choices { + border: 0 !important; + border-radius: 3px; +} + +.control-group.warning .select2-container .select2-choice, +.control-group.warning .select2-container .select2-choices, +.control-group.warning .select2-container-active .select2-choice, +.control-group.warning .select2-container-active .select2-choices, +.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice, +.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices, +.control-group.warning .select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #C09853 !important; +} + +.control-group.warning .select2-container .select2-choice div { + border-left: 1px solid #C09853 !important; + background: #FCF8E3 !important; +} + +.control-group.error .select2-container .select2-choice, +.control-group.error .select2-container .select2-choices, +.control-group.error .select2-container-active .select2-choice, +.control-group.error .select2-container-active .select2-choices, +.control-group.error .select2-dropdown-open.select2-drop-above .select2-choice, +.control-group.error .select2-dropdown-open.select2-drop-above .select2-choices, +.control-group.error .select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #B94A48 !important; +} + +.control-group.error .select2-container .select2-choice div { + border-left: 1px solid #B94A48 !important; + background: #F2DEDE !important; +} + +.control-group.info .select2-container .select2-choice, +.control-group.info .select2-container .select2-choices, +.control-group.info .select2-container-active .select2-choice, +.control-group.info .select2-container-active .select2-choices, +.control-group.info .select2-dropdown-open.select2-drop-above .select2-choice, +.control-group.info .select2-dropdown-open.select2-drop-above .select2-choices, +.control-group.info .select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #3A87AD !important; +} + +.control-group.info .select2-container .select2-choice div { + border-left: 1px solid #3A87AD !important; + background: #D9EDF7 !important; +} + +.control-group.success .select2-container .select2-choice, +.control-group.success .select2-container .select2-choices, +.control-group.success .select2-container-active .select2-choice, +.control-group.success .select2-container-active .select2-choices, +.control-group.success .select2-dropdown-open.select2-drop-above .select2-choice, +.control-group.success .select2-dropdown-open.select2-drop-above .select2-choices, +.control-group.success .select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #468847 !important; +} + +.control-group.success .select2-container .select2-choice div { + border-left: 1px solid #468847 !important; + background: #DFF0D8 !important; +} diff --git a/web/js/select2/select2-spinner.gif b/web/js/select2/select2-spinner.gif Binary files differnew file mode 100644 index 000000000..5b33f7e54 --- /dev/null +++ b/web/js/select2/select2-spinner.gif diff --git a/web/js/select2/select2.css b/web/js/select2/select2.css new file mode 100644 index 000000000..2b32ed6f2 --- /dev/null +++ b/web/js/select2/select2.css @@ -0,0 +1,615 @@ +/* +Version: 3.4.5 Timestamp: Mon Nov 4 08:22:42 PST 2013 +*/ +.select2-container { + margin: 0; + position: relative; + display: inline-block; + /* inline-block for ie7 */ + zoom: 1; + *display: inline; + vertical-align: middle; +} + +.select2-container, +.select2-drop, +.select2-search, +.select2-search input { + /* + Force border-box so that % widths fit the parent + container without overlap because of margin/padding. + + More Info : http://www.quirksmode.org/css/box.html + */ + -webkit-box-sizing: border-box; /* webkit */ + -moz-box-sizing: border-box; /* firefox */ + box-sizing: border-box; /* css3 */ +} + +.select2-container .select2-choice { + display: block; + height: 26px; + padding: 0 0 0 8px; + overflow: hidden; + position: relative; + + border: 1px solid #aaa; + white-space: nowrap; + line-height: 26px; + color: #444; + text-decoration: none; + + border-radius: 4px; + + background-clip: padding-box; + + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + background-color: #fff; + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff)); + background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%); + background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0); + background-image: linear-gradient(top, #fff 0%, #eee 50%); +} + +.select2-container.select2-drop-above .select2-choice { + border-bottom-color: #aaa; + + border-radius: 0 0 4px 4px; + + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff)); + background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%); + background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0); + background-image: linear-gradient(top, #eee 0%, #fff 90%); +} + +.select2-container.select2-allowclear .select2-choice .select2-chosen { + margin-right: 42px; +} + +.select2-container .select2-choice > .select2-chosen { + margin-right: 26px; + display: block; + overflow: hidden; + + white-space: nowrap; + + text-overflow: ellipsis; +} + +.select2-container .select2-choice abbr { + display: none; + width: 12px; + height: 12px; + position: absolute; + right: 24px; + top: 8px; + + font-size: 1px; + text-decoration: none; + + border: 0; + background: url('select2.png') right top no-repeat; + cursor: pointer; + outline: 0; +} + +.select2-container.select2-allowclear .select2-choice abbr { + display: inline-block; +} + +.select2-container .select2-choice abbr:hover { + background-position: right -11px; + cursor: pointer; +} + +.select2-drop-mask { + border: 0; + margin: 0; + padding: 0; + position: fixed; + left: 0; + top: 0; + min-height: 100%; + min-width: 100%; + height: auto; + width: auto; + opacity: 0; + z-index: 9998; + /* styles required for IE to work */ + background-color: #fff; + filter: alpha(opacity=0); +} + +.select2-drop { + width: 100%; + margin-top: -1px; + position: absolute; + z-index: 9999; + top: 100%; + + background: #fff; + color: #000; + border: 1px solid #aaa; + border-top: 0; + + border-radius: 0 0 4px 4px; + + -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15); + box-shadow: 0 4px 5px rgba(0, 0, 0, .15); +} + +.select2-drop-auto-width { + border-top: 1px solid #aaa; + width: auto; +} + +.select2-drop-auto-width .select2-search { + padding-top: 4px; +} + +.select2-drop.select2-drop-above { + margin-top: 1px; + border-top: 1px solid #aaa; + border-bottom: 0; + + border-radius: 4px 4px 0 0; + + -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15); + box-shadow: 0 -4px 5px rgba(0, 0, 0, .15); +} + +.select2-drop-active { + border: 1px solid #5897fb; + border-top: none; +} + +.select2-drop.select2-drop-above.select2-drop-active { + border-top: 1px solid #5897fb; +} + +.select2-container .select2-choice .select2-arrow { + display: inline-block; + width: 18px; + height: 100%; + position: absolute; + right: 0; + top: 0; + + border-left: 1px solid #aaa; + border-radius: 0 4px 4px 0; + + background-clip: padding-box; + + background: #ccc; + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee)); + background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%); + background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0); + background-image: linear-gradient(top, #ccc 0%, #eee 60%); +} + +.select2-container .select2-choice .select2-arrow b { + display: block; + width: 100%; + height: 100%; + background: url('select2.png') no-repeat 0 1px; +} + +.select2-search { + display: inline-block; + width: 100%; + min-height: 26px; + margin: 0; + padding-left: 4px; + padding-right: 4px; + + position: relative; + z-index: 10000; + + white-space: nowrap; +} + +.select2-search input { + width: 100%; + height: auto !important; + min-height: 26px; + padding: 4px 20px 4px 5px; + margin: 0; + + outline: 0; + font-family: sans-serif; + font-size: 1em; + + border: 1px solid #aaa; + border-radius: 0; + + -webkit-box-shadow: none; + box-shadow: none; + + background: #fff url('select2.png') no-repeat 100% -22px; + background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee)); + background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%); + background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%); + background: url('select2.png') no-repeat 100% -22px, linear-gradient(top, #fff 85%, #eee 99%); +} + +.select2-drop.select2-drop-above .select2-search input { + margin-top: 4px; +} + +.select2-search input.select2-active { + background: #fff url('select2-spinner.gif') no-repeat 100%; + background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee)); + background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%); + background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%); + background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(top, #fff 85%, #eee 99%); +} + +.select2-container-active .select2-choice, +.select2-container-active .select2-choices { + border: 1px solid #5897fb; + outline: none; + + -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3); + box-shadow: 0 0 5px rgba(0, 0, 0, .3); +} + +.select2-dropdown-open .select2-choice { + border-bottom-color: transparent; + -webkit-box-shadow: 0 1px 0 #fff inset; + box-shadow: 0 1px 0 #fff inset; + + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + + background-color: #eee; + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee)); + background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%); + background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); + background-image: linear-gradient(top, #fff 0%, #eee 50%); +} + +.select2-dropdown-open.select2-drop-above .select2-choice, +.select2-dropdown-open.select2-drop-above .select2-choices { + border: 1px solid #5897fb; + border-top-color: transparent; + + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee)); + background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%); + background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); + background-image: linear-gradient(bottom, #fff 0%, #eee 50%); +} + +.select2-dropdown-open .select2-choice .select2-arrow { + background: transparent; + border-left: none; + filter: none; +} +.select2-dropdown-open .select2-choice .select2-arrow b { + background-position: -18px 1px; +} + +/* results */ +.select2-results { + max-height: 200px; + padding: 0 0 0 4px; + margin: 4px 4px 4px 0; + position: relative; + overflow-x: hidden; + overflow-y: auto; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +.select2-results ul.select2-result-sub { + margin: 0; + padding-left: 0; +} + +.select2-results ul.select2-result-sub > li .select2-result-label { padding-left: 20px } +.select2-results ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 40px } +.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 60px } +.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 80px } +.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 100px } +.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 110px } +.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 120px } + +.select2-results li { + list-style: none; + display: list-item; + background-image: none; +} + +.select2-results li.select2-result-with-children > .select2-result-label { + font-weight: bold; +} + +.select2-results .select2-result-label { + padding: 3px 7px 4px; + margin: 0; + cursor: pointer; + + min-height: 1em; + + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.select2-results .select2-highlighted { + background: #3875d7; + color: #fff; +} + +.select2-results li em { + background: #feffde; + font-style: normal; +} + +.select2-results .select2-highlighted em { + background: transparent; +} + +.select2-results .select2-highlighted ul { + background: #fff; + color: #000; +} + + +.select2-results .select2-no-results, +.select2-results .select2-searching, +.select2-results .select2-selection-limit { + background: #f4f4f4; + display: list-item; +} + +/* +disabled look for disabled choices in the results dropdown +*/ +.select2-results .select2-disabled.select2-highlighted { + color: #666; + background: #f4f4f4; + display: list-item; + cursor: default; +} +.select2-results .select2-disabled { + background: #f4f4f4; + display: list-item; + cursor: default; +} + +.select2-results .select2-selected { + display: none; +} + +.select2-more-results.select2-active { + background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%; +} + +.select2-more-results { + background: #f4f4f4; + display: list-item; +} + +/* disabled styles */ + +.select2-container.select2-container-disabled .select2-choice { + background-color: #f4f4f4; + background-image: none; + border: 1px solid #ddd; + cursor: default; +} + +.select2-container.select2-container-disabled .select2-choice .select2-arrow { + background-color: #f4f4f4; + background-image: none; + border-left: 0; +} + +.select2-container.select2-container-disabled .select2-choice abbr { + display: none; +} + + +/* multiselect */ + +.select2-container-multi .select2-choices { + height: auto !important; + height: 1%; + margin: 0; + padding: 0; + position: relative; + + border: 1px solid #aaa; + cursor: text; + overflow: hidden; + + background-color: #fff; + background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff)); + background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%); + background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%); + background-image: linear-gradient(top, #eee 1%, #fff 15%); +} + +.select2-locked { + padding: 3px 5px 3px 5px !important; +} + +.select2-container-multi .select2-choices { + min-height: 26px; +} + +.select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #5897fb; + outline: none; + + -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3); + box-shadow: 0 0 5px rgba(0, 0, 0, .3); +} +.select2-container-multi .select2-choices li { + float: left; + list-style: none; +} +.select2-container-multi .select2-choices .select2-search-field { + margin: 0; + padding: 0; + white-space: nowrap; +} + +.select2-container-multi .select2-choices .select2-search-field input { + padding: 5px; + margin: 1px 0; + + font-family: sans-serif; + font-size: 100%; + color: #666; + outline: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + background: transparent !important; +} + +.select2-container-multi .select2-choices .select2-search-field input.select2-active { + background: #fff url('select2-spinner.gif') no-repeat 100% !important; +} + +.select2-default { + color: #999 !important; +} + +.select2-container-multi .select2-choices .select2-search-choice { + padding: 3px 5px 3px 18px; + margin: 3px 0 3px 5px; + position: relative; + + line-height: 13px; + color: #333; + cursor: default; + border: 1px solid #aaaaaa; + + border-radius: 3px; + + -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05); + box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05); + + background-clip: padding-box; + + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + background-color: #e4e4e4; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0); + background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee)); + background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); + background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); + background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); +} +.select2-container-multi .select2-choices .select2-search-choice .select2-chosen { + cursor: default; +} +.select2-container-multi .select2-choices .select2-search-choice-focus { + background: #d4d4d4; +} + +.select2-search-choice-close { + display: block; + width: 12px; + height: 13px; + position: absolute; + right: 3px; + top: 4px; + + font-size: 1px; + outline: none; + background: url('select2.png') right top no-repeat; +} + +.select2-container-multi .select2-search-choice-close { + left: 3px; +} + +.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover { + background-position: right -11px; +} +.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close { + background-position: right -11px; +} + +/* disabled styles */ +.select2-container-multi.select2-container-disabled .select2-choices { + background-color: #f4f4f4; + background-image: none; + border: 1px solid #ddd; + cursor: default; +} + +.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice { + padding: 3px 5px 3px 5px; + border: 1px solid #ddd; + background-image: none; + background-color: #f4f4f4; +} + +.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none; + background: none; +} +/* end multiselect */ + + +.select2-result-selectable .select2-match, +.select2-result-unselectable .select2-match { + text-decoration: underline; +} + +.select2-offscreen, .select2-offscreen:focus { + clip: rect(0 0 0 0) !important; + width: 1px !important; + height: 1px !important; + border: 0 !important; + margin: 0 !important; + padding: 0 !important; + overflow: hidden !important; + position: absolute !important; + outline: 0 !important; + left: 0px !important; + top: 0px !important; +} + +.select2-display-none { + display: none; +} + +.select2-measure-scrollbar { + position: absolute; + top: -10000px; + left: -10000px; + width: 100px; + height: 100px; + overflow: scroll; +} +/* Retina-ize icons */ + +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) { + .select2-search input, .select2-search-choice-close, .select2-container .select2-choice abbr, .select2-container .select2-choice .select2-arrow b { + background-image: url('select2x2.png') !important; + background-repeat: no-repeat !important; + background-size: 60px 40px !important; + } + .select2-search input { + background-position: 100% -21px !important; + } +} diff --git a/web/js/select2/select2.jquery.json b/web/js/select2/select2.jquery.json new file mode 100644 index 000000000..b426c7058 --- /dev/null +++ b/web/js/select2/select2.jquery.json @@ -0,0 +1,36 @@ +{ + "name": "select2", + "title": "Select2", + "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.", + "keywords": [ + "select", + "autocomplete", + "typeahead", + "dropdown", + "multiselect", + "tag", + "tagging" + ], + "version": "3.4.5", + "author": { + "name": "Igor Vaynberg", + "url": "https://github.com/ivaynberg" + }, + "licenses": [ + { + "type": "Apache", + "url": "http://www.apache.org/licenses/LICENSE-2.0" + }, + { + "type": "GPL v2", + "url": "http://www.gnu.org/licenses/gpl-2.0.html" + } + ], + "bugs": "https://github.com/ivaynberg/select2/issues", + "homepage": "http://ivaynberg.github.com/select2", + "docs": "http://ivaynberg.github.com/select2/", + "download": "https://github.com/ivaynberg/select2/tags", + "dependencies": { + "jquery": ">=1.7.1" + } +} diff --git a/web/js/select2/select2.js b/web/js/select2/select2.js new file mode 100644 index 000000000..3b5e8e280 --- /dev/null +++ b/web/js/select2/select2.js @@ -0,0 +1,3255 @@ +/* +Copyright 2012 Igor Vaynberg + +Version: 3.4.5 Timestamp: Mon Nov 4 08:22:42 PST 2013 + +This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU +General Public License version 2 (the "GPL License"). You may choose either license to govern your +use of this software only upon the condition that you accept all of the terms of either the Apache +License or the GPL License. + +You may obtain a copy of the Apache License and the GPL License at: + + http://www.apache.org/licenses/LICENSE-2.0 + http://www.gnu.org/licenses/gpl-2.0.html + +Unless required by applicable law or agreed to in writing, software distributed under the +Apache License or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for +the specific language governing permissions and limitations under the Apache License and the GPL License. +*/ +(function ($) { + if(typeof $.fn.each2 == "undefined") { + $.extend($.fn, { + /* + * 4-10 times faster .each replacement + * use it carefully, as it overrides jQuery context of element on each iteration + */ + each2 : function (c) { + var j = $([0]), i = -1, l = this.length; + while ( + ++i < l + && (j.context = j[0] = this[i]) + && c.call(j[0], i, j) !== false //"this"=DOM, i=index, j=jQuery object + ); + return this; + } + }); + } +})(jQuery); + +(function ($, undefined) { + "use strict"; + /*global document, window, jQuery, console */ + + if (window.Select2 !== undefined) { + return; + } + + var KEY, AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer, + lastMousePosition={x:0,y:0}, $document, scrollBarDimensions, + + KEY = { + TAB: 9, + ENTER: 13, + ESC: 27, + SPACE: 32, + LEFT: 37, + UP: 38, + RIGHT: 39, + DOWN: 40, + SHIFT: 16, + CTRL: 17, + ALT: 18, + PAGE_UP: 33, + PAGE_DOWN: 34, + HOME: 36, + END: 35, + BACKSPACE: 8, + DELETE: 46, + isArrow: function (k) { + k = k.which ? k.which : k; + switch (k) { + case KEY.LEFT: + case KEY.RIGHT: + case KEY.UP: + case KEY.DOWN: + return true; + } + return false; + }, + isControl: function (e) { + var k = e.which; + switch (k) { + case KEY.SHIFT: + case KEY.CTRL: + case KEY.ALT: + return true; + } + + if (e.metaKey) return true; + + return false; + }, + isFunctionKey: function (k) { + k = k.which ? k.which : k; + return k >= 112 && k <= 123; + } + }, + MEASURE_SCROLLBAR_TEMPLATE = "<div class='select2-measure-scrollbar'></div>", + + DIACRITICS = {"\u24B6":"A","\uFF21":"A","\u00C0":"A","\u00C1":"A","\u00C2":"A","\u1EA6":"A","\u1EA4":"A","\u1EAA":"A","\u1EA8":"A","\u00C3":"A","\u0100":"A","\u0102":"A","\u1EB0":"A","\u1EAE":"A","\u1EB4":"A","\u1EB2":"A","\u0226":"A","\u01E0":"A","\u00C4":"A","\u01DE":"A","\u1EA2":"A","\u00C5":"A","\u01FA":"A","\u01CD":"A","\u0200":"A","\u0202":"A","\u1EA0":"A","\u1EAC":"A","\u1EB6":"A","\u1E00":"A","\u0104":"A","\u023A":"A","\u2C6F":"A","\uA732":"AA","\u00C6":"AE","\u01FC":"AE","\u01E2":"AE","\uA734":"AO","\uA736":"AU","\uA738":"AV","\uA73A":"AV","\uA73C":"AY","\u24B7":"B","\uFF22":"B","\u1E02":"B","\u1E04":"B","\u1E06":"B","\u0243":"B","\u0182":"B","\u0181":"B","\u24B8":"C","\uFF23":"C","\u0106":"C","\u0108":"C","\u010A":"C","\u010C":"C","\u00C7":"C","\u1E08":"C","\u0187":"C","\u023B":"C","\uA73E":"C","\u24B9":"D","\uFF24":"D","\u1E0A":"D","\u010E":"D","\u1E0C":"D","\u1E10":"D","\u1E12":"D","\u1E0E":"D","\u0110":"D","\u018B":"D","\u018A":"D","\u0189":"D","\uA779":"D","\u01F1":"DZ","\u01C4":"DZ","\u01F2":"Dz","\u01C5":"Dz","\u24BA":"E","\uFF25":"E","\u00C8":"E","\u00C9":"E","\u00CA":"E","\u1EC0":"E","\u1EBE":"E","\u1EC4":"E","\u1EC2":"E","\u1EBC":"E","\u0112":"E","\u1E14":"E","\u1E16":"E","\u0114":"E","\u0116":"E","\u00CB":"E","\u1EBA":"E","\u011A":"E","\u0204":"E","\u0206":"E","\u1EB8":"E","\u1EC6":"E","\u0228":"E","\u1E1C":"E","\u0118":"E","\u1E18":"E","\u1E1A":"E","\u0190":"E","\u018E":"E","\u24BB":"F","\uFF26":"F","\u1E1E":"F","\u0191":"F","\uA77B":"F","\u24BC":"G","\uFF27":"G","\u01F4":"G","\u011C":"G","\u1E20":"G","\u011E":"G","\u0120":"G","\u01E6":"G","\u0122":"G","\u01E4":"G","\u0193":"G","\uA7A0":"G","\uA77D":"G","\uA77E":"G","\u24BD":"H","\uFF28":"H","\u0124":"H","\u1E22":"H","\u1E26":"H","\u021E":"H","\u1E24":"H","\u1E28":"H","\u1E2A":"H","\u0126":"H","\u2C67":"H","\u2C75":"H","\uA78D":"H","\u24BE":"I","\uFF29":"I","\u00CC":"I","\u00CD":"I","\u00CE":"I","\u0128":"I","\u012A":"I","\u012C":"I","\u0130":"I","\u00CF":"I","\u1E2E":"I","\u1EC8":"I","\u01CF":"I","\u0208":"I","\u020A":"I","\u1ECA":"I","\u012E":"I","\u1E2C":"I","\u0197":"I","\u24BF":"J","\uFF2A":"J","\u0134":"J","\u0248":"J","\u24C0":"K","\uFF2B":"K","\u1E30":"K","\u01E8":"K","\u1E32":"K","\u0136":"K","\u1E34":"K","\u0198":"K","\u2C69":"K","\uA740":"K","\uA742":"K","\uA744":"K","\uA7A2":"K","\u24C1":"L","\uFF2C":"L","\u013F":"L","\u0139":"L","\u013D":"L","\u1E36":"L","\u1E38":"L","\u013B":"L","\u1E3C":"L","\u1E3A":"L","\u0141":"L","\u023D":"L","\u2C62":"L","\u2C60":"L","\uA748":"L","\uA746":"L","\uA780":"L","\u01C7":"LJ","\u01C8":"Lj","\u24C2":"M","\uFF2D":"M","\u1E3E":"M","\u1E40":"M","\u1E42":"M","\u2C6E":"M","\u019C":"M","\u24C3":"N","\uFF2E":"N","\u01F8":"N","\u0143":"N","\u00D1":"N","\u1E44":"N","\u0147":"N","\u1E46":"N","\u0145":"N","\u1E4A":"N","\u1E48":"N","\u0220":"N","\u019D":"N","\uA790":"N","\uA7A4":"N","\u01CA":"NJ","\u01CB":"Nj","\u24C4":"O","\uFF2F":"O","\u00D2":"O","\u00D3":"O","\u00D4":"O","\u1ED2":"O","\u1ED0":"O","\u1ED6":"O","\u1ED4":"O","\u00D5":"O","\u1E4C":"O","\u022C":"O","\u1E4E":"O","\u014C":"O","\u1E50":"O","\u1E52":"O","\u014E":"O","\u022E":"O","\u0230":"O","\u00D6":"O","\u022A":"O","\u1ECE":"O","\u0150":"O","\u01D1":"O","\u020C":"O","\u020E":"O","\u01A0":"O","\u1EDC":"O","\u1EDA":"O","\u1EE0":"O","\u1EDE":"O","\u1EE2":"O","\u1ECC":"O","\u1ED8":"O","\u01EA":"O","\u01EC":"O","\u00D8":"O","\u01FE":"O","\u0186":"O","\u019F":"O","\uA74A":"O","\uA74C":"O","\u01A2":"OI","\uA74E":"OO","\u0222":"OU","\u24C5":"P","\uFF30":"P","\u1E54":"P","\u1E56":"P","\u01A4":"P","\u2C63":"P","\uA750":"P","\uA752":"P","\uA754":"P","\u24C6":"Q","\uFF31":"Q","\uA756":"Q","\uA758":"Q","\u024A":"Q","\u24C7":"R","\uFF32":"R","\u0154":"R","\u1E58":"R","\u0158":"R","\u0210":"R","\u0212":"R","\u1E5A":"R","\u1E5C":"R","\u0156":"R","\u1E5E":"R","\u024C":"R","\u2C64":"R","\uA75A":"R","\uA7A6":"R","\uA782":"R","\u24C8":"S","\uFF33":"S","\u1E9E":"S","\u015A":"S","\u1E64":"S","\u015C":"S","\u1E60":"S","\u0160":"S","\u1E66":"S","\u1E62":"S","\u1E68":"S","\u0218":"S","\u015E":"S","\u2C7E":"S","\uA7A8":"S","\uA784":"S","\u24C9":"T","\uFF34":"T","\u1E6A":"T","\u0164":"T","\u1E6C":"T","\u021A":"T","\u0162":"T","\u1E70":"T","\u1E6E":"T","\u0166":"T","\u01AC":"T","\u01AE":"T","\u023E":"T","\uA786":"T","\uA728":"TZ","\u24CA":"U","\uFF35":"U","\u00D9":"U","\u00DA":"U","\u00DB":"U","\u0168":"U","\u1E78":"U","\u016A":"U","\u1E7A":"U","\u016C":"U","\u00DC":"U","\u01DB":"U","\u01D7":"U","\u01D5":"U","\u01D9":"U","\u1EE6":"U","\u016E":"U","\u0170":"U","\u01D3":"U","\u0214":"U","\u0216":"U","\u01AF":"U","\u1EEA":"U","\u1EE8":"U","\u1EEE":"U","\u1EEC":"U","\u1EF0":"U","\u1EE4":"U","\u1E72":"U","\u0172":"U","\u1E76":"U","\u1E74":"U","\u0244":"U","\u24CB":"V","\uFF36":"V","\u1E7C":"V","\u1E7E":"V","\u01B2":"V","\uA75E":"V","\u0245":"V","\uA760":"VY","\u24CC":"W","\uFF37":"W","\u1E80":"W","\u1E82":"W","\u0174":"W","\u1E86":"W","\u1E84":"W","\u1E88":"W","\u2C72":"W","\u24CD":"X","\uFF38":"X","\u1E8A":"X","\u1E8C":"X","\u24CE":"Y","\uFF39":"Y","\u1EF2":"Y","\u00DD":"Y","\u0176":"Y","\u1EF8":"Y","\u0232":"Y","\u1E8E":"Y","\u0178":"Y","\u1EF6":"Y","\u1EF4":"Y","\u01B3":"Y","\u024E":"Y","\u1EFE":"Y","\u24CF":"Z","\uFF3A":"Z","\u0179":"Z","\u1E90":"Z","\u017B":"Z","\u017D":"Z","\u1E92":"Z","\u1E94":"Z","\u01B5":"Z","\u0224":"Z","\u2C7F":"Z","\u2C6B":"Z","\uA762":"Z","\u24D0":"a","\uFF41":"a","\u1E9A":"a","\u00E0":"a","\u00E1":"a","\u00E2":"a","\u1EA7":"a","\u1EA5":"a","\u1EAB":"a","\u1EA9":"a","\u00E3":"a","\u0101":"a","\u0103":"a","\u1EB1":"a","\u1EAF":"a","\u1EB5":"a","\u1EB3":"a","\u0227":"a","\u01E1":"a","\u00E4":"a","\u01DF":"a","\u1EA3":"a","\u00E5":"a","\u01FB":"a","\u01CE":"a","\u0201":"a","\u0203":"a","\u1EA1":"a","\u1EAD":"a","\u1EB7":"a","\u1E01":"a","\u0105":"a","\u2C65":"a","\u0250":"a","\uA733":"aa","\u00E6":"ae","\u01FD":"ae","\u01E3":"ae","\uA735":"ao","\uA737":"au","\uA739":"av","\uA73B":"av","\uA73D":"ay","\u24D1":"b","\uFF42":"b","\u1E03":"b","\u1E05":"b","\u1E07":"b","\u0180":"b","\u0183":"b","\u0253":"b","\u24D2":"c","\uFF43":"c","\u0107":"c","\u0109":"c","\u010B":"c","\u010D":"c","\u00E7":"c","\u1E09":"c","\u0188":"c","\u023C":"c","\uA73F":"c","\u2184":"c","\u24D3":"d","\uFF44":"d","\u1E0B":"d","\u010F":"d","\u1E0D":"d","\u1E11":"d","\u1E13":"d","\u1E0F":"d","\u0111":"d","\u018C":"d","\u0256":"d","\u0257":"d","\uA77A":"d","\u01F3":"dz","\u01C6":"dz","\u24D4":"e","\uFF45":"e","\u00E8":"e","\u00E9":"e","\u00EA":"e","\u1EC1":"e","\u1EBF":"e","\u1EC5":"e","\u1EC3":"e","\u1EBD":"e","\u0113":"e","\u1E15":"e","\u1E17":"e","\u0115":"e","\u0117":"e","\u00EB":"e","\u1EBB":"e","\u011B":"e","\u0205":"e","\u0207":"e","\u1EB9":"e","\u1EC7":"e","\u0229":"e","\u1E1D":"e","\u0119":"e","\u1E19":"e","\u1E1B":"e","\u0247":"e","\u025B":"e","\u01DD":"e","\u24D5":"f","\uFF46":"f","\u1E1F":"f","\u0192":"f","\uA77C":"f","\u24D6":"g","\uFF47":"g","\u01F5":"g","\u011D":"g","\u1E21":"g","\u011F":"g","\u0121":"g","\u01E7":"g","\u0123":"g","\u01E5":"g","\u0260":"g","\uA7A1":"g","\u1D79":"g","\uA77F":"g","\u24D7":"h","\uFF48":"h","\u0125":"h","\u1E23":"h","\u1E27":"h","\u021F":"h","\u1E25":"h","\u1E29":"h","\u1E2B":"h","\u1E96":"h","\u0127":"h","\u2C68":"h","\u2C76":"h","\u0265":"h","\u0195":"hv","\u24D8":"i","\uFF49":"i","\u00EC":"i","\u00ED":"i","\u00EE":"i","\u0129":"i","\u012B":"i","\u012D":"i","\u00EF":"i","\u1E2F":"i","\u1EC9":"i","\u01D0":"i","\u0209":"i","\u020B":"i","\u1ECB":"i","\u012F":"i","\u1E2D":"i","\u0268":"i","\u0131":"i","\u24D9":"j","\uFF4A":"j","\u0135":"j","\u01F0":"j","\u0249":"j","\u24DA":"k","\uFF4B":"k","\u1E31":"k","\u01E9":"k","\u1E33":"k","\u0137":"k","\u1E35":"k","\u0199":"k","\u2C6A":"k","\uA741":"k","\uA743":"k","\uA745":"k","\uA7A3":"k","\u24DB":"l","\uFF4C":"l","\u0140":"l","\u013A":"l","\u013E":"l","\u1E37":"l","\u1E39":"l","\u013C":"l","\u1E3D":"l","\u1E3B":"l","\u017F":"l","\u0142":"l","\u019A":"l","\u026B":"l","\u2C61":"l","\uA749":"l","\uA781":"l","\uA747":"l","\u01C9":"lj","\u24DC":"m","\uFF4D":"m","\u1E3F":"m","\u1E41":"m","\u1E43":"m","\u0271":"m","\u026F":"m","\u24DD":"n","\uFF4E":"n","\u01F9":"n","\u0144":"n","\u00F1":"n","\u1E45":"n","\u0148":"n","\u1E47":"n","\u0146":"n","\u1E4B":"n","\u1E49":"n","\u019E":"n","\u0272":"n","\u0149":"n","\uA791":"n","\uA7A5":"n","\u01CC":"nj","\u24DE":"o","\uFF4F":"o","\u00F2":"o","\u00F3":"o","\u00F4":"o","\u1ED3":"o","\u1ED1":"o","\u1ED7":"o","\u1ED5":"o","\u00F5":"o","\u1E4D":"o","\u022D":"o","\u1E4F":"o","\u014D":"o","\u1E51":"o","\u1E53":"o","\u014F":"o","\u022F":"o","\u0231":"o","\u00F6":"o","\u022B":"o","\u1ECF":"o","\u0151":"o","\u01D2":"o","\u020D":"o","\u020F":"o","\u01A1":"o","\u1EDD":"o","\u1EDB":"o","\u1EE1":"o","\u1EDF":"o","\u1EE3":"o","\u1ECD":"o","\u1ED9":"o","\u01EB":"o","\u01ED":"o","\u00F8":"o","\u01FF":"o","\u0254":"o","\uA74B":"o","\uA74D":"o","\u0275":"o","\u01A3":"oi","\u0223":"ou","\uA74F":"oo","\u24DF":"p","\uFF50":"p","\u1E55":"p","\u1E57":"p","\u01A5":"p","\u1D7D":"p","\uA751":"p","\uA753":"p","\uA755":"p","\u24E0":"q","\uFF51":"q","\u024B":"q","\uA757":"q","\uA759":"q","\u24E1":"r","\uFF52":"r","\u0155":"r","\u1E59":"r","\u0159":"r","\u0211":"r","\u0213":"r","\u1E5B":"r","\u1E5D":"r","\u0157":"r","\u1E5F":"r","\u024D":"r","\u027D":"r","\uA75B":"r","\uA7A7":"r","\uA783":"r","\u24E2":"s","\uFF53":"s","\u00DF":"s","\u015B":"s","\u1E65":"s","\u015D":"s","\u1E61":"s","\u0161":"s","\u1E67":"s","\u1E63":"s","\u1E69":"s","\u0219":"s","\u015F":"s","\u023F":"s","\uA7A9":"s","\uA785":"s","\u1E9B":"s","\u24E3":"t","\uFF54":"t","\u1E6B":"t","\u1E97":"t","\u0165":"t","\u1E6D":"t","\u021B":"t","\u0163":"t","\u1E71":"t","\u1E6F":"t","\u0167":"t","\u01AD":"t","\u0288":"t","\u2C66":"t","\uA787":"t","\uA729":"tz","\u24E4":"u","\uFF55":"u","\u00F9":"u","\u00FA":"u","\u00FB":"u","\u0169":"u","\u1E79":"u","\u016B":"u","\u1E7B":"u","\u016D":"u","\u00FC":"u","\u01DC":"u","\u01D8":"u","\u01D6":"u","\u01DA":"u","\u1EE7":"u","\u016F":"u","\u0171":"u","\u01D4":"u","\u0215":"u","\u0217":"u","\u01B0":"u","\u1EEB":"u","\u1EE9":"u","\u1EEF":"u","\u1EED":"u","\u1EF1":"u","\u1EE5":"u","\u1E73":"u","\u0173":"u","\u1E77":"u","\u1E75":"u","\u0289":"u","\u24E5":"v","\uFF56":"v","\u1E7D":"v","\u1E7F":"v","\u028B":"v","\uA75F":"v","\u028C":"v","\uA761":"vy","\u24E6":"w","\uFF57":"w","\u1E81":"w","\u1E83":"w","\u0175":"w","\u1E87":"w","\u1E85":"w","\u1E98":"w","\u1E89":"w","\u2C73":"w","\u24E7":"x","\uFF58":"x","\u1E8B":"x","\u1E8D":"x","\u24E8":"y","\uFF59":"y","\u1EF3":"y","\u00FD":"y","\u0177":"y","\u1EF9":"y","\u0233":"y","\u1E8F":"y","\u00FF":"y","\u1EF7":"y","\u1E99":"y","\u1EF5":"y","\u01B4":"y","\u024F":"y","\u1EFF":"y","\u24E9":"z","\uFF5A":"z","\u017A":"z","\u1E91":"z","\u017C":"z","\u017E":"z","\u1E93":"z","\u1E95":"z","\u01B6":"z","\u0225":"z","\u0240":"z","\u2C6C":"z","\uA763":"z"}; + + $document = $(document); + + nextUid=(function() { var counter=1; return function() { return counter++; }; }()); + + + function stripDiacritics(str) { + var ret, i, l, c; + + if (!str || str.length < 1) return str; + + ret = ""; + for (i = 0, l = str.length; i < l; i++) { + c = str.charAt(i); + ret += DIACRITICS[c] || c; + } + return ret; + } + + function indexOf(value, array) { + var i = 0, l = array.length; + for (; i < l; i = i + 1) { + if (equal(value, array[i])) return i; + } + return -1; + } + + function measureScrollbar () { + var $template = $( MEASURE_SCROLLBAR_TEMPLATE ); + $template.appendTo('body'); + + var dim = { + width: $template.width() - $template[0].clientWidth, + height: $template.height() - $template[0].clientHeight + }; + $template.remove(); + + return dim; + } + + /** + * Compares equality of a and b + * @param a + * @param b + */ + function equal(a, b) { + if (a === b) return true; + if (a === undefined || b === undefined) return false; + if (a === null || b === null) return false; + // Check whether 'a' or 'b' is a string (primitive or object). + // The concatenation of an empty string (+'') converts its argument to a string's primitive. + if (a.constructor === String) return a+'' === b+''; // a+'' - in case 'a' is a String object + if (b.constructor === String) return b+'' === a+''; // b+'' - in case 'b' is a String object + return false; + } + + /** + * Splits the string into an array of values, trimming each value. An empty array is returned for nulls or empty + * strings + * @param string + * @param separator + */ + function splitVal(string, separator) { + var val, i, l; + if (string === null || string.length < 1) return []; + val = string.split(separator); + for (i = 0, l = val.length; i < l; i = i + 1) val[i] = $.trim(val[i]); + return val; + } + + function getSideBorderPadding(element) { + return element.outerWidth(false) - element.width(); + } + + function installKeyUpChangeEvent(element) { + var key="keyup-change-value"; + element.on("keydown", function () { + if ($.data(element, key) === undefined) { + $.data(element, key, element.val()); + } + }); + element.on("keyup", function () { + var val= $.data(element, key); + if (val !== undefined && element.val() !== val) { + $.removeData(element, key); + element.trigger("keyup-change"); + } + }); + } + + $document.on("mousemove", function (e) { + lastMousePosition.x = e.pageX; + lastMousePosition.y = e.pageY; + }); + + /** + * filters mouse events so an event is fired only if the mouse moved. + * + * filters out mouse events that occur when mouse is stationary but + * the elements under the pointer are scrolled. + */ + function installFilteredMouseMove(element) { + element.on("mousemove", function (e) { + var lastpos = lastMousePosition; + if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) { + $(e.target).trigger("mousemove-filtered", e); + } + }); + } + + /** + * Debounces a function. Returns a function that calls the original fn function only if no invocations have been made + * within the last quietMillis milliseconds. + * + * @param quietMillis number of milliseconds to wait before invoking fn + * @param fn function to be debounced + * @param ctx object to be used as this reference within fn + * @return debounced version of fn + */ + function debounce(quietMillis, fn, ctx) { + ctx = ctx || undefined; + var timeout; + return function () { + var args = arguments; + window.clearTimeout(timeout); + timeout = window.setTimeout(function() { + fn.apply(ctx, args); + }, quietMillis); + }; + } + + /** + * A simple implementation of a thunk + * @param formula function used to lazily initialize the thunk + * @return {Function} + */ + function thunk(formula) { + var evaluated = false, + value; + return function() { + if (evaluated === false) { value = formula(); evaluated = true; } + return value; + }; + }; + + function installDebouncedScroll(threshold, element) { + var notify = debounce(threshold, function (e) { element.trigger("scroll-debounced", e);}); + element.on("scroll", function (e) { + if (indexOf(e.target, element.get()) >= 0) notify(e); + }); + } + + function focus($el) { + if ($el[0] === document.activeElement) return; + + /* set the focus in a 0 timeout - that way the focus is set after the processing + of the current event has finished - which seems like the only reliable way + to set focus */ + window.setTimeout(function() { + var el=$el[0], pos=$el.val().length, range; + + $el.focus(); + + /* make sure el received focus so we do not error out when trying to manipulate the caret. + sometimes modals or others listeners may steal it after its set */ + if ($el.is(":visible") && el === document.activeElement) { + + /* after the focus is set move the caret to the end, necessary when we val() + just before setting focus */ + if(el.setSelectionRange) + { + el.setSelectionRange(pos, pos); + } + else if (el.createTextRange) { + range = el.createTextRange(); + range.collapse(false); + range.select(); + } + } + }, 0); + } + + function getCursorInfo(el) { + el = $(el)[0]; + var offset = 0; + var length = 0; + if ('selectionStart' in el) { + offset = el.selectionStart; + length = el.selectionEnd - offset; + } else if ('selection' in document) { + el.focus(); + var sel = document.selection.createRange(); + length = document.selection.createRange().text.length; + sel.moveStart('character', -el.value.length); + offset = sel.text.length - length; + } + return { offset: offset, length: length }; + } + + function killEvent(event) { + event.preventDefault(); + event.stopPropagation(); + } + function killEventImmediately(event) { + event.preventDefault(); + event.stopImmediatePropagation(); + } + + function measureTextWidth(e) { + if (!sizer){ + var style = e[0].currentStyle || window.getComputedStyle(e[0], null); + sizer = $(document.createElement("div")).css({ + position: "absolute", + left: "-10000px", + top: "-10000px", + display: "none", + fontSize: style.fontSize, + fontFamily: style.fontFamily, + fontStyle: style.fontStyle, + fontWeight: style.fontWeight, + letterSpacing: style.letterSpacing, + textTransform: style.textTransform, + whiteSpace: "nowrap" + }); + sizer.attr("class","select2-sizer"); + $("body").append(sizer); + } + sizer.text(e.val()); + return sizer.width(); + } + + function syncCssClasses(dest, src, adapter) { + var classes, replacements = [], adapted; + + classes = dest.attr("class"); + if (classes) { + classes = '' + classes; // for IE which returns object + $(classes.split(" ")).each2(function() { + if (this.indexOf("select2-") === 0) { + replacements.push(this); + } + }); + } + classes = src.attr("class"); + if (classes) { + classes = '' + classes; // for IE which returns object + $(classes.split(" ")).each2(function() { + if (this.indexOf("select2-") !== 0) { + adapted = adapter(this); + if (adapted) { + replacements.push(adapted); + } + } + }); + } + dest.attr("class", replacements.join(" ")); + } + + + function markMatch(text, term, markup, escapeMarkup) { + var match=stripDiacritics(text.toUpperCase()).indexOf(stripDiacritics(term.toUpperCase())), + tl=term.length; + + if (match<0) { + markup.push(escapeMarkup(text)); + return; + } + + markup.push(escapeMarkup(text.substring(0, match))); + markup.push("<span class='select2-match'>"); + markup.push(escapeMarkup(text.substring(match, match + tl))); + markup.push("</span>"); + markup.push(escapeMarkup(text.substring(match + tl, text.length))); + } + + function defaultEscapeMarkup(markup) { + var replace_map = { + '\\': '\', + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + "/": '/' + }; + + return String(markup).replace(/[&<>"'\/\\]/g, function (match) { + return replace_map[match]; + }); + } + + /** + * Produces an ajax-based query function + * + * @param options object containing configuration paramters + * @param options.params parameter map for the transport ajax call, can contain such options as cache, jsonpCallback, etc. see $.ajax + * @param options.transport function that will be used to execute the ajax request. must be compatible with parameters supported by $.ajax + * @param options.url url for the data + * @param options.data a function(searchTerm, pageNumber, context) that should return an object containing query string parameters for the above url. + * @param options.dataType request data type: ajax, jsonp, other datatatypes supported by jQuery's $.ajax function or the transport function if specified + * @param options.quietMillis (optional) milliseconds to wait before making the ajaxRequest, helps debounce the ajax function if invoked too often + * @param options.results a function(remoteData, pageNumber) that converts data returned form the remote request to the format expected by Select2. + * The expected format is an object containing the following keys: + * results array of objects that will be used as choices + * more (optional) boolean indicating whether there are more results available + * Example: {results:[{id:1, text:'Red'},{id:2, text:'Blue'}], more:true} + */ + function ajax(options) { + var timeout, // current scheduled but not yet executed request + handler = null, + quietMillis = options.quietMillis || 100, + ajaxUrl = options.url, + self = this; + + return function (query) { + window.clearTimeout(timeout); + timeout = window.setTimeout(function () { + var data = options.data, // ajax data function + url = ajaxUrl, // ajax url string or function + transport = options.transport || $.fn.select2.ajaxDefaults.transport, + // deprecated - to be removed in 4.0 - use params instead + deprecated = { + type: options.type || 'GET', // set type of request (GET or POST) + cache: options.cache || false, + jsonpCallback: options.jsonpCallback||undefined, + dataType: options.dataType||"json" + }, + params = $.extend({}, $.fn.select2.ajaxDefaults.params, deprecated); + + data = data ? data.call(self, query.term, query.page, query.context) : null; + url = (typeof url === 'function') ? url.call(self, query.term, query.page, query.context) : url; + + if (handler) { handler.abort(); } + + if (options.params) { + if ($.isFunction(options.params)) { + $.extend(params, options.params.call(self)); + } else { + $.extend(params, options.params); + } + } + + $.extend(params, { + url: url, + dataType: options.dataType, + data: data, + success: function (data) { + // TODO - replace query.page with query so users have access to term, page, etc. + var results = options.results(data, query.page); + query.callback(results); + } + }); + handler = transport.call(self, params); + }, quietMillis); + }; + } + + /** + * Produces a query function that works with a local array + * + * @param options object containing configuration parameters. The options parameter can either be an array or an + * object. + * + * If the array form is used it is assumed that it contains objects with 'id' and 'text' keys. + * + * If the object form is used ti is assumed that it contains 'data' and 'text' keys. The 'data' key should contain + * an array of objects that will be used as choices. These objects must contain at least an 'id' key. The 'text' + * key can either be a String in which case it is expected that each element in the 'data' array has a key with the + * value of 'text' which will be used to match choices. Alternatively, text can be a function(item) that can extract + * the text. + */ + function local(options) { + var data = options, // data elements + dataText, + tmp, + text = function (item) { return ""+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search + + if ($.isArray(data)) { + tmp = data; + data = { results: tmp }; + } + + if ($.isFunction(data) === false) { + tmp = data; + data = function() { return tmp; }; + } + + var dataItem = data(); + if (dataItem.text) { + text = dataItem.text; + // if text is not a function we assume it to be a key name + if (!$.isFunction(text)) { + dataText = dataItem.text; // we need to store this in a separate variable because in the next step data gets reset and data.text is no longer available + text = function (item) { return item[dataText]; }; + } + } + + return function (query) { + var t = query.term, filtered = { results: [] }, process; + if (t === "") { + query.callback(data()); + return; + } + + process = function(datum, collection) { + var group, attr; + datum = datum[0]; + if (datum.children) { + group = {}; + for (attr in datum) { + if (datum.hasOwnProperty(attr)) group[attr]=datum[attr]; + } + group.children=[]; + $(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); }); + if (group.children.length || query.matcher(t, text(group), datum)) { + collection.push(group); + } + } else { + if (query.matcher(t, text(datum), datum)) { + collection.push(datum); + } + } + }; + + $(data().results).each2(function(i, datum) { process(datum, filtered.results); }); + query.callback(filtered); + }; + } + + // TODO javadoc + function tags(data) { + var isFunc = $.isFunction(data); + return function (query) { + var t = query.term, filtered = {results: []}; + $(isFunc ? data() : data).each(function () { + var isObject = this.text !== undefined, + text = isObject ? this.text : this; + if (t === "" || query.matcher(t, text)) { + filtered.results.push(isObject ? this : {id: this, text: this}); + } + }); + query.callback(filtered); + }; + } + + /** + * Checks if the formatter function should be used. + * + * Throws an error if it is not a function. Returns true if it should be used, + * false if no formatting should be performed. + * + * @param formatter + */ + function checkFormatter(formatter, formatterName) { + if ($.isFunction(formatter)) return true; + if (!formatter) return false; + throw new Error(formatterName +" must be a function or a falsy value"); + } + + function evaluate(val) { + return $.isFunction(val) ? val() : val; + } + + function countResults(results) { + var count = 0; + $.each(results, function(i, item) { + if (item.children) { + count += countResults(item.children); + } else { + count++; + } + }); + return count; + } + + /** + * Default tokenizer. This function uses breaks the input on substring match of any string from the + * opts.tokenSeparators array and uses opts.createSearchChoice to create the choice object. Both of those + * two options have to be defined in order for the tokenizer to work. + * + * @param input text user has typed so far or pasted into the search field + * @param selection currently selected choices + * @param selectCallback function(choice) callback tho add the choice to selection + * @param opts select2's opts + * @return undefined/null to leave the current input unchanged, or a string to change the input to the returned value + */ + function defaultTokenizer(input, selection, selectCallback, opts) { + var original = input, // store the original so we can compare and know if we need to tell the search to update its text + dupe = false, // check for whether a token we extracted represents a duplicate selected choice + token, // token + index, // position at which the separator was found + i, l, // looping variables + separator; // the matched separator + + if (!opts.createSearchChoice || !opts.tokenSeparators || opts.tokenSeparators.length < 1) return undefined; + + while (true) { + index = -1; + + for (i = 0, l = opts.tokenSeparators.length; i < l; i++) { + separator = opts.tokenSeparators[i]; + index = input.indexOf(separator); + if (index >= 0) break; + } + + if (index < 0) break; // did not find any token separator in the input string, bail + + token = input.substring(0, index); + input = input.substring(index + separator.length); + + if (token.length > 0) { + token = opts.createSearchChoice.call(this, token, selection); + if (token !== undefined && token !== null && opts.id(token) !== undefined && opts.id(token) !== null) { + dupe = false; + for (i = 0, l = selection.length; i < l; i++) { + if (equal(opts.id(token), opts.id(selection[i]))) { + dupe = true; break; + } + } + + if (!dupe) selectCallback(token); + } + } + } + + if (original!==input) return input; + } + + /** + * Creates a new class + * + * @param superClass + * @param methods + */ + function clazz(SuperClass, methods) { + var constructor = function () {}; + constructor.prototype = new SuperClass; + constructor.prototype.constructor = constructor; + constructor.prototype.parent = SuperClass.prototype; + constructor.prototype = $.extend(constructor.prototype, methods); + return constructor; + } + + AbstractSelect2 = clazz(Object, { + + // abstract + bind: function (func) { + var self = this; + return function () { + func.apply(self, arguments); + }; + }, + + // abstract + init: function (opts) { + var results, search, resultsSelector = ".select2-results"; + + // prepare options + this.opts = opts = this.prepareOpts(opts); + + this.id=opts.id; + + // destroy if called on an existing component + if (opts.element.data("select2") !== undefined && + opts.element.data("select2") !== null) { + opts.element.data("select2").destroy(); + } + + this.container = this.createContainer(); + + this.containerId="s2id_"+(opts.element.attr("id") || "autogen"+nextUid()); + this.containerSelector="#"+this.containerId.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1'); + this.container.attr("id", this.containerId); + + // cache the body so future lookups are cheap + this.body = thunk(function() { return opts.element.closest("body"); }); + + syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass); + + this.container.attr("style", opts.element.attr("style")); + this.container.css(evaluate(opts.containerCss)); + this.container.addClass(evaluate(opts.containerCssClass)); + + this.elementTabIndex = this.opts.element.attr("tabindex"); + + // swap container for the element + this.opts.element + .data("select2", this) + .attr("tabindex", "-1") + .before(this.container) + .on("click.select2", killEvent); // do not leak click events + + this.container.data("select2", this); + + this.dropdown = this.container.find(".select2-drop"); + + syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass); + + this.dropdown.addClass(evaluate(opts.dropdownCssClass)); + this.dropdown.data("select2", this); + this.dropdown.on("click", killEvent); + + this.results = results = this.container.find(resultsSelector); + this.search = search = this.container.find("input.select2-input"); + + this.queryCount = 0; + this.resultsPage = 0; + this.context = null; + + // initialize the container + this.initContainer(); + + this.container.on("click", killEvent); + + installFilteredMouseMove(this.results); + this.dropdown.on("mousemove-filtered touchstart touchmove touchend", resultsSelector, this.bind(this.highlightUnderEvent)); + + installDebouncedScroll(80, this.results); + this.dropdown.on("scroll-debounced", resultsSelector, this.bind(this.loadMoreIfNeeded)); + + // do not propagate change event from the search field out of the component + $(this.container).on("change", ".select2-input", function(e) {e.stopPropagation();}); + $(this.dropdown).on("change", ".select2-input", function(e) {e.stopPropagation();}); + + // if jquery.mousewheel plugin is installed we can prevent out-of-bounds scrolling of results via mousewheel + if ($.fn.mousewheel) { + results.mousewheel(function (e, delta, deltaX, deltaY) { + var top = results.scrollTop(); + if (deltaY > 0 && top - deltaY <= 0) { + results.scrollTop(0); + killEvent(e); + } else if (deltaY < 0 && results.get(0).scrollHeight - results.scrollTop() + deltaY <= results.height()) { + results.scrollTop(results.get(0).scrollHeight - results.height()); + killEvent(e); + } + }); + } + + installKeyUpChangeEvent(search); + search.on("keyup-change input paste", this.bind(this.updateResults)); + search.on("focus", function () { search.addClass("select2-focused"); }); + search.on("blur", function () { search.removeClass("select2-focused");}); + + this.dropdown.on("mouseup", resultsSelector, this.bind(function (e) { + if ($(e.target).closest(".select2-result-selectable").length > 0) { + this.highlightUnderEvent(e); + this.selectHighlighted(e); + } + })); + + // trap all mouse events from leaving the dropdown. sometimes there may be a modal that is listening + // for mouse events outside of itself so it can close itself. since the dropdown is now outside the select2's + // dom it will trigger the popup close, which is not what we want + this.dropdown.on("click mouseup mousedown", function (e) { e.stopPropagation(); }); + + if ($.isFunction(this.opts.initSelection)) { + // initialize selection based on the current value of the source element + this.initSelection(); + + // if the user has provided a function that can set selection based on the value of the source element + // we monitor the change event on the element and trigger it, allowing for two way synchronization + this.monitorSource(); + } + + if (opts.maximumInputLength !== null) { + this.search.attr("maxlength", opts.maximumInputLength); + } + + var disabled = opts.element.prop("disabled"); + if (disabled === undefined) disabled = false; + this.enable(!disabled); + + var readonly = opts.element.prop("readonly"); + if (readonly === undefined) readonly = false; + this.readonly(readonly); + + // Calculate size of scrollbar + scrollBarDimensions = scrollBarDimensions || measureScrollbar(); + + this.autofocus = opts.element.prop("autofocus"); + opts.element.prop("autofocus", false); + if (this.autofocus) this.focus(); + + this.nextSearchTerm = undefined; + }, + + // abstract + destroy: function () { + var element=this.opts.element, select2 = element.data("select2"); + + this.close(); + + if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; } + + if (select2 !== undefined) { + select2.container.remove(); + select2.dropdown.remove(); + element + .removeClass("select2-offscreen") + .removeData("select2") + .off(".select2") + .prop("autofocus", this.autofocus || false); + if (this.elementTabIndex) { + element.attr({tabindex: this.elementTabIndex}); + } else { + element.removeAttr("tabindex"); + } + element.show(); + } + }, + + // abstract + optionToData: function(element) { + if (element.is("option")) { + return { + id:element.prop("value"), + text:element.text(), + element: element.get(), + css: element.attr("class"), + disabled: element.prop("disabled"), + locked: equal(element.attr("locked"), "locked") || equal(element.data("locked"), true) + }; + } else if (element.is("optgroup")) { + return { + text:element.attr("label"), + children:[], + element: element.get(), + css: element.attr("class") + }; + } + }, + + // abstract + prepareOpts: function (opts) { + var element, select, idKey, ajaxUrl, self = this; + + element = opts.element; + + if (element.get(0).tagName.toLowerCase() === "select") { + this.select = select = opts.element; + } + + if (select) { + // these options are not allowed when attached to a select because they are picked up off the element itself + $.each(["id", "multiple", "ajax", "query", "createSearchChoice", "initSelection", "data", "tags"], function () { + if (this in opts) { + throw new Error("Option '" + this + "' is not allowed for Select2 when attached to a <select> element."); + } + }); + } + + opts = $.extend({}, { + populateResults: function(container, results, query) { + var populate, id=this.opts.id; + + populate=function(results, container, depth) { + + var i, l, result, selectable, disabled, compound, node, label, innerContainer, formatted; + + results = opts.sortResults(results, container, query); + + for (i = 0, l = results.length; i < l; i = i + 1) { + + result=results[i]; + + disabled = (result.disabled === true); + selectable = (!disabled) && (id(result) !== undefined); + + compound=result.children && result.children.length > 0; + + node=$("<li></li>"); + node.addClass("select2-results-dept-"+depth); + node.addClass("select2-result"); + node.addClass(selectable ? "select2-result-selectable" : "select2-result-unselectable"); + if (disabled) { node.addClass("select2-disabled"); } + if (compound) { node.addClass("select2-result-with-children"); } + node.addClass(self.opts.formatResultCssClass(result)); + + label=$(document.createElement("div")); + label.addClass("select2-result-label"); + + formatted=opts.formatResult(result, label, query, self.opts.escapeMarkup); + if (formatted!==undefined) { + label.html(formatted); + } + + node.append(label); + + if (compound) { + + innerContainer=$("<ul></ul>"); + innerContainer.addClass("select2-result-sub"); + populate(result.children, innerContainer, depth+1); + node.append(innerContainer); + } + + node.data("select2-data", result); + container.append(node); + } + }; + + populate(results, container, 0); + } + }, $.fn.select2.defaults, opts); + + if (typeof(opts.id) !== "function") { + idKey = opts.id; + opts.id = function (e) { return e[idKey]; }; + } + + if ($.isArray(opts.element.data("select2Tags"))) { + if ("tags" in opts) { + throw "tags specified as both an attribute 'data-select2-tags' and in options of Select2 " + opts.element.attr("id"); + } + opts.tags=opts.element.data("select2Tags"); + } + + if (select) { + opts.query = this.bind(function (query) { + var data = { results: [], more: false }, + term = query.term, + children, placeholderOption, process; + + process=function(element, collection) { + var group; + if (element.is("option")) { + if (query.matcher(term, element.text(), element)) { + collection.push(self.optionToData(element)); + } + } else if (element.is("optgroup")) { + group=self.optionToData(element); + element.children().each2(function(i, elm) { process(elm, group.children); }); + if (group.children.length>0) { + collection.push(group); + } + } + }; + + children=element.children(); + + // ignore the placeholder option if there is one + if (this.getPlaceholder() !== undefined && children.length > 0) { + placeholderOption = this.getPlaceholderOption(); + if (placeholderOption) { + children=children.not(placeholderOption); + } + } + + children.each2(function(i, elm) { process(elm, data.results); }); + + query.callback(data); + }); + // this is needed because inside val() we construct choices from options and there id is hardcoded + opts.id=function(e) { return e.id; }; + opts.formatResultCssClass = function(data) { return data.css; }; + } else { + if (!("query" in opts)) { + + if ("ajax" in opts) { + ajaxUrl = opts.element.data("ajax-url"); + if (ajaxUrl && ajaxUrl.length > 0) { + opts.ajax.url = ajaxUrl; + } + opts.query = ajax.call(opts.element, opts.ajax); + } else if ("data" in opts) { + opts.query = local(opts.data); + } else if ("tags" in opts) { + opts.query = tags(opts.tags); + if (opts.createSearchChoice === undefined) { + opts.createSearchChoice = function (term) { return {id: $.trim(term), text: $.trim(term)}; }; + } + if (opts.initSelection === undefined) { + opts.initSelection = function (element, callback) { + var data = []; + $(splitVal(element.val(), opts.separator)).each(function () { + var obj = { id: this, text: this }, + tags = opts.tags; + if ($.isFunction(tags)) tags=tags(); + $(tags).each(function() { if (equal(this.id, obj.id)) { obj = this; return false; } }); + data.push(obj); + }); + + callback(data); + }; + } + } + } + } + if (typeof(opts.query) !== "function") { + throw "query function not defined for Select2 " + opts.element.attr("id"); + } + + return opts; + }, + + /** + * Monitor the original element for changes and update select2 accordingly + */ + // abstract + monitorSource: function () { + var el = this.opts.element, sync, observer; + + el.on("change.select2", this.bind(function (e) { + if (this.opts.element.data("select2-change-triggered") !== true) { + this.initSelection(); + } + })); + + sync = this.bind(function () { + + // sync enabled state + var disabled = el.prop("disabled"); + if (disabled === undefined) disabled = false; + this.enable(!disabled); + + var readonly = el.prop("readonly"); + if (readonly === undefined) readonly = false; + this.readonly(readonly); + + syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass); + this.container.addClass(evaluate(this.opts.containerCssClass)); + + syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass); + this.dropdown.addClass(evaluate(this.opts.dropdownCssClass)); + + }); + + // IE8-10 + el.on("propertychange.select2", sync); + + // hold onto a reference of the callback to work around a chromium bug + if (this.mutationCallback === undefined) { + this.mutationCallback = function (mutations) { + mutations.forEach(sync); + } + } + + // safari, chrome, firefox, IE11 + observer = window.MutationObserver || window.WebKitMutationObserver|| window.MozMutationObserver; + if (observer !== undefined) { + if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; } + this.propertyObserver = new observer(this.mutationCallback); + this.propertyObserver.observe(el.get(0), { attributes:true, subtree:false }); + } + }, + + // abstract + triggerSelect: function(data) { + var evt = $.Event("select2-selecting", { val: this.id(data), object: data }); + this.opts.element.trigger(evt); + return !evt.isDefaultPrevented(); + }, + + /** + * Triggers the change event on the source element + */ + // abstract + triggerChange: function (details) { + + details = details || {}; + details= $.extend({}, details, { type: "change", val: this.val() }); + // prevents recursive triggering + this.opts.element.data("select2-change-triggered", true); + this.opts.element.trigger(details); + this.opts.element.data("select2-change-triggered", false); + + // some validation frameworks ignore the change event and listen instead to keyup, click for selects + // so here we trigger the click event manually + this.opts.element.click(); + + // ValidationEngine ignorea the change event and listens instead to blur + // so here we trigger the blur event manually if so desired + if (this.opts.blurOnChange) + this.opts.element.blur(); + }, + + //abstract + isInterfaceEnabled: function() + { + return this.enabledInterface === true; + }, + + // abstract + enableInterface: function() { + var enabled = this._enabled && !this._readonly, + disabled = !enabled; + + if (enabled === this.enabledInterface) return false; + + this.container.toggleClass("select2-container-disabled", disabled); + this.close(); + this.enabledInterface = enabled; + + return true; + }, + + // abstract + enable: function(enabled) { + if (enabled === undefined) enabled = true; + if (this._enabled === enabled) return; + this._enabled = enabled; + + this.opts.element.prop("disabled", !enabled); + this.enableInterface(); + }, + + // abstract + disable: function() { + this.enable(false); + }, + + // abstract + readonly: function(enabled) { + if (enabled === undefined) enabled = false; + if (this._readonly === enabled) return false; + this._readonly = enabled; + + this.opts.element.prop("readonly", enabled); + this.enableInterface(); + return true; + }, + + // abstract + opened: function () { + return this.container.hasClass("select2-dropdown-open"); + }, + + // abstract + positionDropdown: function() { + var $dropdown = this.dropdown, + offset = this.container.offset(), + height = this.container.outerHeight(false), + width = this.container.outerWidth(false), + dropHeight = $dropdown.outerHeight(false), + $window = $(window), + windowWidth = $window.width(), + windowHeight = $window.height(), + viewPortRight = $window.scrollLeft() + windowWidth, + viewportBottom = $window.scrollTop() + windowHeight, + dropTop = offset.top + height, + dropLeft = offset.left, + enoughRoomBelow = dropTop + dropHeight <= viewportBottom, + enoughRoomAbove = (offset.top - dropHeight) >= this.body().scrollTop(), + dropWidth = $dropdown.outerWidth(false), + enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight, + aboveNow = $dropdown.hasClass("select2-drop-above"), + bodyOffset, + above, + changeDirection, + css, + resultsListNode; + + // always prefer the current above/below alignment, unless there is not enough room + if (aboveNow) { + above = true; + if (!enoughRoomAbove && enoughRoomBelow) { + changeDirection = true; + above = false; + } + } else { + above = false; + if (!enoughRoomBelow && enoughRoomAbove) { + changeDirection = true; + above = true; + } + } + + //if we are changing direction we need to get positions when dropdown is hidden; + if (changeDirection) { + $dropdown.hide(); + offset = this.container.offset(); + height = this.container.outerHeight(false); + width = this.container.outerWidth(false); + dropHeight = $dropdown.outerHeight(false); + viewPortRight = $window.scrollLeft() + windowWidth; + viewportBottom = $window.scrollTop() + windowHeight; + dropTop = offset.top + height; + dropLeft = offset.left; + dropWidth = $dropdown.outerWidth(false); + enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight; + $dropdown.show(); + } + + if (this.opts.dropdownAutoWidth) { + resultsListNode = $('.select2-results', $dropdown)[0]; + $dropdown.addClass('select2-drop-auto-width'); + $dropdown.css('width', ''); + // Add scrollbar width to dropdown if vertical scrollbar is present + dropWidth = $dropdown.outerWidth(false) + (resultsListNode.scrollHeight === resultsListNode.clientHeight ? 0 : scrollBarDimensions.width); + dropWidth > width ? width = dropWidth : dropWidth = width; + enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight; + } + else { + this.container.removeClass('select2-drop-auto-width'); + } + + //console.log("below/ droptop:", dropTop, "dropHeight", dropHeight, "sum", (dropTop+dropHeight)+" viewport bottom", viewportBottom, "enough?", enoughRoomBelow); + //console.log("above/ offset.top", offset.top, "dropHeight", dropHeight, "top", (offset.top-dropHeight), "scrollTop", this.body().scrollTop(), "enough?", enoughRoomAbove); + + // fix positioning when body has an offset and is not position: static + if (this.body().css('position') !== 'static') { + bodyOffset = this.body().offset(); + dropTop -= bodyOffset.top; + dropLeft -= bodyOffset.left; + } + + if (!enoughRoomOnRight) { + dropLeft = offset.left + width - dropWidth; + } + + css = { + left: dropLeft, + width: width + }; + + if (above) { + css.bottom = windowHeight - offset.top; + css.top = 'auto'; + this.container.addClass("select2-drop-above"); + $dropdown.addClass("select2-drop-above"); + } + else { + css.top = dropTop; + css.bottom = 'auto'; + this.container.removeClass("select2-drop-above"); + $dropdown.removeClass("select2-drop-above"); + } + css = $.extend(css, evaluate(this.opts.dropdownCss)); + + $dropdown.css(css); + }, + + // abstract + shouldOpen: function() { + var event; + + if (this.opened()) return false; + + if (this._enabled === false || this._readonly === true) return false; + + event = $.Event("select2-opening"); + this.opts.element.trigger(event); + return !event.isDefaultPrevented(); + }, + + // abstract + clearDropdownAlignmentPreference: function() { + // clear the classes used to figure out the preference of where the dropdown should be opened + this.container.removeClass("select2-drop-above"); + this.dropdown.removeClass("select2-drop-above"); + }, + + /** + * Opens the dropdown + * + * @return {Boolean} whether or not dropdown was opened. This method will return false if, for example, + * the dropdown is already open, or if the 'open' event listener on the element called preventDefault(). + */ + // abstract + open: function () { + + if (!this.shouldOpen()) return false; + + this.opening(); + + return true; + }, + + /** + * Performs the opening of the dropdown + */ + // abstract + opening: function() { + var cid = this.containerId, + scroll = "scroll." + cid, + resize = "resize."+cid, + orient = "orientationchange."+cid, + mask; + + this.container.addClass("select2-dropdown-open").addClass("select2-container-active"); + + this.clearDropdownAlignmentPreference(); + + if(this.dropdown[0] !== this.body().children().last()[0]) { + this.dropdown.detach().appendTo(this.body()); + } + + // create the dropdown mask if doesnt already exist + mask = $("#select2-drop-mask"); + if (mask.length == 0) { + mask = $(document.createElement("div")); + mask.attr("id","select2-drop-mask").attr("class","select2-drop-mask"); + mask.hide(); + mask.appendTo(this.body()); + mask.on("mousedown touchstart click", function (e) { + var dropdown = $("#select2-drop"), self; + if (dropdown.length > 0) { + self=dropdown.data("select2"); + if (self.opts.selectOnBlur) { + self.selectHighlighted({noFocus: true}); + } + self.close({focus:true}); + e.preventDefault(); + e.stopPropagation(); + } + }); + } + + // ensure the mask is always right before the dropdown + if (this.dropdown.prev()[0] !== mask[0]) { + this.dropdown.before(mask); + } + + // move the global id to the correct dropdown + $("#select2-drop").removeAttr("id"); + this.dropdown.attr("id", "select2-drop"); + + // show the elements + mask.show(); + + this.positionDropdown(); + this.dropdown.show(); + this.positionDropdown(); + + this.dropdown.addClass("select2-drop-active"); + + // attach listeners to events that can change the position of the container and thus require + // the position of the dropdown to be updated as well so it does not come unglued from the container + var that = this; + this.container.parents().add(window).each(function () { + $(this).on(resize+" "+scroll+" "+orient, function (e) { + that.positionDropdown(); + }); + }); + + + }, + + // abstract + close: function () { + if (!this.opened()) return; + + var cid = this.containerId, + scroll = "scroll." + cid, + resize = "resize."+cid, + orient = "orientationchange."+cid; + + // unbind event listeners + this.container.parents().add(window).each(function () { $(this).off(scroll).off(resize).off(orient); }); + + this.clearDropdownAlignmentPreference(); + + $("#select2-drop-mask").hide(); + this.dropdown.removeAttr("id"); // only the active dropdown has the select2-drop id + this.dropdown.hide(); + this.container.removeClass("select2-dropdown-open").removeClass("select2-container-active"); + this.results.empty(); + + + this.clearSearch(); + this.search.removeClass("select2-active"); + this.opts.element.trigger($.Event("select2-close")); + }, + + /** + * Opens control, sets input value, and updates results. + */ + // abstract + externalSearch: function (term) { + this.open(); + this.search.val(term); + this.updateResults(false); + }, + + // abstract + clearSearch: function () { + + }, + + //abstract + getMaximumSelectionSize: function() { + return evaluate(this.opts.maximumSelectionSize); + }, + + // abstract + ensureHighlightVisible: function () { + var results = this.results, children, index, child, hb, rb, y, more; + + index = this.highlight(); + + if (index < 0) return; + + if (index == 0) { + + // if the first element is highlighted scroll all the way to the top, + // that way any unselectable headers above it will also be scrolled + // into view + + results.scrollTop(0); + return; + } + + children = this.findHighlightableChoices().find('.select2-result-label'); + + child = $(children[index]); + + hb = child.offset().top + child.outerHeight(true); + + // if this is the last child lets also make sure select2-more-results is visible + if (index === children.length - 1) { + more = results.find("li.select2-more-results"); + if (more.length > 0) { + hb = more.offset().top + more.outerHeight(true); + } + } + + rb = results.offset().top + results.outerHeight(true); + if (hb > rb) { + results.scrollTop(results.scrollTop() + (hb - rb)); + } + y = child.offset().top - results.offset().top; + + // make sure the top of the element is visible + if (y < 0 && child.css('display') != 'none' ) { + results.scrollTop(results.scrollTop() + y); // y is negative + } + }, + + // abstract + findHighlightableChoices: function() { + return this.results.find(".select2-result-selectable:not(.select2-disabled, .select2-selected)"); + }, + + // abstract + moveHighlight: function (delta) { + var choices = this.findHighlightableChoices(), + index = this.highlight(); + + while (index > -1 && index < choices.length) { + index += delta; + var choice = $(choices[index]); + if (choice.hasClass("select2-result-selectable") && !choice.hasClass("select2-disabled") && !choice.hasClass("select2-selected")) { + this.highlight(index); + break; + } + } + }, + + // abstract + highlight: function (index) { + var choices = this.findHighlightableChoices(), + choice, + data; + + if (arguments.length === 0) { + return indexOf(choices.filter(".select2-highlighted")[0], choices.get()); + } + + if (index >= choices.length) index = choices.length - 1; + if (index < 0) index = 0; + + this.removeHighlight(); + + choice = $(choices[index]); + choice.addClass("select2-highlighted"); + + this.ensureHighlightVisible(); + + data = choice.data("select2-data"); + if (data) { + this.opts.element.trigger({ type: "select2-highlight", val: this.id(data), choice: data }); + } + }, + + removeHighlight: function() { + this.results.find(".select2-highlighted").removeClass("select2-highlighted"); + }, + + // abstract + countSelectableResults: function() { + return this.findHighlightableChoices().length; + }, + + // abstract + highlightUnderEvent: function (event) { + var el = $(event.target).closest(".select2-result-selectable"); + if (el.length > 0 && !el.is(".select2-highlighted")) { + var choices = this.findHighlightableChoices(); + this.highlight(choices.index(el)); + } else if (el.length == 0) { + // if we are over an unselectable item remove all highlights + this.removeHighlight(); + } + }, + + // abstract + loadMoreIfNeeded: function () { + var results = this.results, + more = results.find("li.select2-more-results"), + below, // pixels the element is below the scroll fold, below==0 is when the element is starting to be visible + page = this.resultsPage + 1, + self=this, + term=this.search.val(), + context=this.context; + + if (more.length === 0) return; + below = more.offset().top - results.offset().top - results.height(); + + if (below <= this.opts.loadMorePadding) { + more.addClass("select2-active"); + this.opts.query({ + element: this.opts.element, + term: term, + page: page, + context: context, + matcher: this.opts.matcher, + callback: this.bind(function (data) { + + // ignore a response if the select2 has been closed before it was received + if (!self.opened()) return; + + + self.opts.populateResults.call(this, results, data.results, {term: term, page: page, context:context}); + self.postprocessResults(data, false, false); + + if (data.more===true) { + more.detach().appendTo(results).text(self.opts.formatLoadMore(page+1)); + window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10); + } else { + more.remove(); + } + self.positionDropdown(); + self.resultsPage = page; + self.context = data.context; + this.opts.element.trigger({ type: "select2-loaded", items: data }); + })}); + } + }, + + /** + * Default tokenizer function which does nothing + */ + tokenize: function() { + + }, + + /** + * @param initial whether or not this is the call to this method right after the dropdown has been opened + */ + // abstract + updateResults: function (initial) { + var search = this.search, + results = this.results, + opts = this.opts, + data, + self = this, + input, + term = search.val(), + lastTerm = $.data(this.container, "select2-last-term"), + // sequence number used to drop out-of-order responses + queryNumber; + + // prevent duplicate queries against the same term + if (initial !== true && lastTerm && equal(term, lastTerm)) return; + + $.data(this.container, "select2-last-term", term); + + // if the search is currently hidden we do not alter the results + if (initial !== true && (this.showSearchInput === false || !this.opened())) { + return; + } + + function postRender() { + search.removeClass("select2-active"); + self.positionDropdown(); + } + + function render(html) { + results.html(html); + postRender(); + } + + queryNumber = ++this.queryCount; + + var maxSelSize = this.getMaximumSelectionSize(); + if (maxSelSize >=1) { + data = this.data(); + if ($.isArray(data) && data.length >= maxSelSize && checkFormatter(opts.formatSelectionTooBig, "formatSelectionTooBig")) { + render("<li class='select2-selection-limit'>" + opts.formatSelectionTooBig(maxSelSize) + "</li>"); + return; + } + } + + if (search.val().length < opts.minimumInputLength) { + if (checkFormatter(opts.formatInputTooShort, "formatInputTooShort")) { + render("<li class='select2-no-results'>" + opts.formatInputTooShort(search.val(), opts.minimumInputLength) + "</li>"); + } else { + render(""); + } + if (initial && this.showSearch) this.showSearch(true); + return; + } + + if (opts.maximumInputLength && search.val().length > opts.maximumInputLength) { + if (checkFormatter(opts.formatInputTooLong, "formatInputTooLong")) { + render("<li class='select2-no-results'>" + opts.formatInputTooLong(search.val(), opts.maximumInputLength) + "</li>"); + } else { + render(""); + } + return; + } + + if (opts.formatSearching && this.findHighlightableChoices().length === 0) { + render("<li class='select2-searching'>" + opts.formatSearching() + "</li>"); + } + + search.addClass("select2-active"); + + this.removeHighlight(); + + // give the tokenizer a chance to pre-process the input + input = this.tokenize(); + if (input != undefined && input != null) { + search.val(input); + } + + this.resultsPage = 1; + + opts.query({ + element: opts.element, + term: search.val(), + page: this.resultsPage, + context: null, + matcher: opts.matcher, + callback: this.bind(function (data) { + var def; // default choice + + // ignore old responses + if (queryNumber != this.queryCount) { + return; + } + + // ignore a response if the select2 has been closed before it was received + if (!this.opened()) { + this.search.removeClass("select2-active"); + return; + } + + // save context, if any + this.context = (data.context===undefined) ? null : data.context; + // create a default choice and prepend it to the list + if (this.opts.createSearchChoice && search.val() !== "") { + def = this.opts.createSearchChoice.call(self, search.val(), data.results); + if (def !== undefined && def !== null && self.id(def) !== undefined && self.id(def) !== null) { + if ($(data.results).filter( + function () { + return equal(self.id(this), self.id(def)); + }).length === 0) { + data.results.unshift(def); + } + } + } + + if (data.results.length === 0 && checkFormatter(opts.formatNoMatches, "formatNoMatches")) { + render("<li class='select2-no-results'>" + opts.formatNoMatches(search.val()) + "</li>"); + return; + } + + results.empty(); + self.opts.populateResults.call(this, results, data.results, {term: search.val(), page: this.resultsPage, context:null}); + + if (data.more === true && checkFormatter(opts.formatLoadMore, "formatLoadMore")) { + results.append("<li class='select2-more-results'>" + self.opts.escapeMarkup(opts.formatLoadMore(this.resultsPage)) + "</li>"); + window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10); + } + + this.postprocessResults(data, initial); + + postRender(); + + this.opts.element.trigger({ type: "select2-loaded", items: data }); + })}); + }, + + // abstract + cancel: function () { + this.close(); + }, + + // abstract + blur: function () { + // if selectOnBlur == true, select the currently highlighted option + if (this.opts.selectOnBlur) + this.selectHighlighted({noFocus: true}); + + this.close(); + this.container.removeClass("select2-container-active"); + // synonymous to .is(':focus'), which is available in jquery >= 1.6 + if (this.search[0] === document.activeElement) { this.search.blur(); } + this.clearSearch(); + this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"); + }, + + // abstract + focusSearch: function () { + focus(this.search); + }, + + // abstract + selectHighlighted: function (options) { + var index=this.highlight(), + highlighted=this.results.find(".select2-highlighted"), + data = highlighted.closest('.select2-result').data("select2-data"); + + if (data) { + this.highlight(index); + this.onSelect(data, options); + } else if (options && options.noFocus) { + this.close(); + } + }, + + // abstract + getPlaceholder: function () { + var placeholderOption; + return this.opts.element.attr("placeholder") || + this.opts.element.attr("data-placeholder") || // jquery 1.4 compat + this.opts.element.data("placeholder") || + this.opts.placeholder || + ((placeholderOption = this.getPlaceholderOption()) !== undefined ? placeholderOption.text() : undefined); + }, + + // abstract + getPlaceholderOption: function() { + if (this.select) { + var firstOption = this.select.children('option').first(); + if (this.opts.placeholderOption !== undefined ) { + //Determine the placeholder option based on the specified placeholderOption setting + return (this.opts.placeholderOption === "first" && firstOption) || + (typeof this.opts.placeholderOption === "function" && this.opts.placeholderOption(this.select)); + } else if (firstOption.text() === "" && firstOption.val() === "") { + //No explicit placeholder option specified, use the first if it's blank + return firstOption; + } + } + }, + + /** + * Get the desired width for the container element. This is + * derived first from option `width` passed to select2, then + * the inline 'style' on the original element, and finally + * falls back to the jQuery calculated element width. + */ + // abstract + initContainerWidth: function () { + function resolveContainerWidth() { + var style, attrs, matches, i, l, attr; + + if (this.opts.width === "off") { + return null; + } else if (this.opts.width === "element"){ + return this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px'; + } else if (this.opts.width === "copy" || this.opts.width === "resolve") { + // check if there is inline style on the element that contains width + style = this.opts.element.attr('style'); + if (style !== undefined) { + attrs = style.split(';'); + for (i = 0, l = attrs.length; i < l; i = i + 1) { + attr = attrs[i].replace(/\s/g, ''); + matches = attr.match(/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i); + if (matches !== null && matches.length >= 1) + return matches[1]; + } + } + + if (this.opts.width === "resolve") { + // next check if css('width') can resolve a width that is percent based, this is sometimes possible + // when attached to input type=hidden or elements hidden via css + style = this.opts.element.css('width'); + if (style.indexOf("%") > 0) return style; + + // finally, fallback on the calculated width of the element + return (this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px'); + } + + return null; + } else if ($.isFunction(this.opts.width)) { + return this.opts.width(); + } else { + return this.opts.width; + } + }; + + var width = resolveContainerWidth.call(this); + if (width !== null) { + this.container.css("width", width); + } + } + }); + + SingleSelect2 = clazz(AbstractSelect2, { + + // single + + createContainer: function () { + var container = $(document.createElement("div")).attr({ + "class": "select2-container" + }).html([ + "<a href='javascript:void(0)' onclick='return false;' class='select2-choice' tabindex='-1'>", + " <span class='select2-chosen'> </span><abbr class='select2-search-choice-close'></abbr>", + " <span class='select2-arrow'><b></b></span>", + "</a>", + "<input class='select2-focusser select2-offscreen' type='text'/>", + "<div class='select2-drop select2-display-none'>", + " <div class='select2-search'>", + " <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'/>", + " </div>", + " <ul class='select2-results'>", + " </ul>", + "</div>"].join("")); + return container; + }, + + // single + enableInterface: function() { + if (this.parent.enableInterface.apply(this, arguments)) { + this.focusser.prop("disabled", !this.isInterfaceEnabled()); + } + }, + + // single + opening: function () { + var el, range, len; + + if (this.opts.minimumResultsForSearch >= 0) { + this.showSearch(true); + } + + this.parent.opening.apply(this, arguments); + + if (this.showSearchInput !== false) { + // IE appends focusser.val() at the end of field :/ so we manually insert it at the beginning using a range + // all other browsers handle this just fine + + this.search.val(this.focusser.val()); + } + this.search.focus(); + // move the cursor to the end after focussing, otherwise it will be at the beginning and + // new text will appear *before* focusser.val() + el = this.search.get(0); + if (el.createTextRange) { + range = el.createTextRange(); + range.collapse(false); + range.select(); + } else if (el.setSelectionRange) { + len = this.search.val().length; + el.setSelectionRange(len, len); + } + + // initializes search's value with nextSearchTerm (if defined by user) + // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter + if(this.search.val() === "") { + if(this.nextSearchTerm != undefined){ + this.search.val(this.nextSearchTerm); + this.search.select(); + } + } + + this.focusser.prop("disabled", true).val(""); + this.updateResults(true); + this.opts.element.trigger($.Event("select2-open")); + }, + + // single + close: function (params) { + if (!this.opened()) return; + this.parent.close.apply(this, arguments); + + params = params || {focus: true}; + this.focusser.removeAttr("disabled"); + + if (params.focus) { + this.focusser.focus(); + } + }, + + // single + focus: function () { + if (this.opened()) { + this.close(); + } else { + this.focusser.removeAttr("disabled"); + this.focusser.focus(); + } + }, + + // single + isFocused: function () { + return this.container.hasClass("select2-container-active"); + }, + + // single + cancel: function () { + this.parent.cancel.apply(this, arguments); + this.focusser.removeAttr("disabled"); + this.focusser.focus(); + }, + + // single + destroy: function() { + $("label[for='" + this.focusser.attr('id') + "']") + .attr('for', this.opts.element.attr("id")); + this.parent.destroy.apply(this, arguments); + }, + + // single + initContainer: function () { + + var selection, + container = this.container, + dropdown = this.dropdown; + + if (this.opts.minimumResultsForSearch < 0) { + this.showSearch(false); + } else { + this.showSearch(true); + } + + this.selection = selection = container.find(".select2-choice"); + + this.focusser = container.find(".select2-focusser"); + + // rewrite labels from original element to focusser + this.focusser.attr("id", "s2id_autogen"+nextUid()); + + $("label[for='" + this.opts.element.attr("id") + "']") + .attr('for', this.focusser.attr('id')); + + this.focusser.attr("tabindex", this.elementTabIndex); + + this.search.on("keydown", this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + + if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) { + // prevent the page from scrolling + killEvent(e); + return; + } + + switch (e.which) { + case KEY.UP: + case KEY.DOWN: + this.moveHighlight((e.which === KEY.UP) ? -1 : 1); + killEvent(e); + return; + case KEY.ENTER: + this.selectHighlighted(); + killEvent(e); + return; + case KEY.TAB: + this.selectHighlighted({noFocus: true}); + return; + case KEY.ESC: + this.cancel(e); + killEvent(e); + return; + } + })); + + this.search.on("blur", this.bind(function(e) { + // a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown. + // without this the search field loses focus which is annoying + if (document.activeElement === this.body().get(0)) { + window.setTimeout(this.bind(function() { + this.search.focus(); + }), 0); + } + })); + + this.focusser.on("keydown", this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + + if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) { + return; + } + + if (this.opts.openOnEnter === false && e.which === KEY.ENTER) { + killEvent(e); + return; + } + + if (e.which == KEY.DOWN || e.which == KEY.UP + || (e.which == KEY.ENTER && this.opts.openOnEnter)) { + + if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) return; + + this.open(); + killEvent(e); + return; + } + + if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) { + if (this.opts.allowClear) { + this.clear(); + } + killEvent(e); + return; + } + })); + + + installKeyUpChangeEvent(this.focusser); + this.focusser.on("keyup-change input", this.bind(function(e) { + if (this.opts.minimumResultsForSearch >= 0) { + e.stopPropagation(); + if (this.opened()) return; + this.open(); + } + })); + + selection.on("mousedown", "abbr", this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + this.clear(); + killEventImmediately(e); + this.close(); + this.selection.focus(); + })); + + selection.on("mousedown", this.bind(function (e) { + + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + + if (this.opened()) { + this.close(); + } else if (this.isInterfaceEnabled()) { + this.open(); + } + + killEvent(e); + })); + + dropdown.on("mousedown", this.bind(function() { this.search.focus(); })); + + selection.on("focus", this.bind(function(e) { + killEvent(e); + })); + + this.focusser.on("focus", this.bind(function(){ + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + this.container.addClass("select2-container-active"); + })).on("blur", this.bind(function() { + if (!this.opened()) { + this.container.removeClass("select2-container-active"); + this.opts.element.trigger($.Event("select2-blur")); + } + })); + this.search.on("focus", this.bind(function(){ + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + this.container.addClass("select2-container-active"); + })); + + this.initContainerWidth(); + this.opts.element.addClass("select2-offscreen"); + this.setPlaceholder(); + + }, + + // single + clear: function(triggerChange) { + var data=this.selection.data("select2-data"); + if (data) { // guard against queued quick consecutive clicks + var evt = $.Event("select2-clearing"); + this.opts.element.trigger(evt); + if (evt.isDefaultPrevented()) { + return; + } + var placeholderOption = this.getPlaceholderOption(); + this.opts.element.val(placeholderOption ? placeholderOption.val() : ""); + this.selection.find(".select2-chosen").empty(); + this.selection.removeData("select2-data"); + this.setPlaceholder(); + + if (triggerChange !== false){ + this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data }); + this.triggerChange({removed:data}); + } + } + }, + + /** + * Sets selection based on source element's value + */ + // single + initSelection: function () { + var selected; + if (this.isPlaceholderOptionSelected()) { + this.updateSelection(null); + this.close(); + this.setPlaceholder(); + } else { + var self = this; + this.opts.initSelection.call(null, this.opts.element, function(selected){ + if (selected !== undefined && selected !== null) { + self.updateSelection(selected); + self.close(); + self.setPlaceholder(); + } + }); + } + }, + + isPlaceholderOptionSelected: function() { + var placeholderOption; + if (!this.getPlaceholder()) return false; // no placeholder specified so no option should be considered + return ((placeholderOption = this.getPlaceholderOption()) !== undefined && placeholderOption.prop("selected")) + || (this.opts.element.val() === "") + || (this.opts.element.val() === undefined) + || (this.opts.element.val() === null); + }, + + // single + prepareOpts: function () { + var opts = this.parent.prepareOpts.apply(this, arguments), + self=this; + + if (opts.element.get(0).tagName.toLowerCase() === "select") { + // install the selection initializer + opts.initSelection = function (element, callback) { + var selected = element.find("option").filter(function() { return this.selected }); + // a single select box always has a value, no need to null check 'selected' + callback(self.optionToData(selected)); + }; + } else if ("data" in opts) { + // install default initSelection when applied to hidden input and data is local + opts.initSelection = opts.initSelection || function (element, callback) { + var id = element.val(); + //search in data by id, storing the actual matching item + var match = null; + opts.query({ + matcher: function(term, text, el){ + var is_match = equal(id, opts.id(el)); + if (is_match) { + match = el; + } + return is_match; + }, + callback: !$.isFunction(callback) ? $.noop : function() { + callback(match); + } + }); + }; + } + + return opts; + }, + + // single + getPlaceholder: function() { + // if a placeholder is specified on a single select without a valid placeholder option ignore it + if (this.select) { + if (this.getPlaceholderOption() === undefined) { + return undefined; + } + } + + return this.parent.getPlaceholder.apply(this, arguments); + }, + + // single + setPlaceholder: function () { + var placeholder = this.getPlaceholder(); + + if (this.isPlaceholderOptionSelected() && placeholder !== undefined) { + + // check for a placeholder option if attached to a select + if (this.select && this.getPlaceholderOption() === undefined) return; + + this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(placeholder)); + + this.selection.addClass("select2-default"); + + this.container.removeClass("select2-allowclear"); + } + }, + + // single + postprocessResults: function (data, initial, noHighlightUpdate) { + var selected = 0, self = this, showSearchInput = true; + + // find the selected element in the result list + + this.findHighlightableChoices().each2(function (i, elm) { + if (equal(self.id(elm.data("select2-data")), self.opts.element.val())) { + selected = i; + return false; + } + }); + + // and highlight it + if (noHighlightUpdate !== false) { + if (initial === true && selected >= 0) { + this.highlight(selected); + } else { + this.highlight(0); + } + } + + // hide the search box if this is the first we got the results and there are enough of them for search + + if (initial === true) { + var min = this.opts.minimumResultsForSearch; + if (min >= 0) { + this.showSearch(countResults(data.results) >= min); + } + } + }, + + // single + showSearch: function(showSearchInput) { + if (this.showSearchInput === showSearchInput) return; + + this.showSearchInput = showSearchInput; + + this.dropdown.find(".select2-search").toggleClass("select2-search-hidden", !showSearchInput); + this.dropdown.find(".select2-search").toggleClass("select2-offscreen", !showSearchInput); + //add "select2-with-searchbox" to the container if search box is shown + $(this.dropdown, this.container).toggleClass("select2-with-searchbox", showSearchInput); + }, + + // single + onSelect: function (data, options) { + + if (!this.triggerSelect(data)) { return; } + + var old = this.opts.element.val(), + oldData = this.data(); + + this.opts.element.val(this.id(data)); + this.updateSelection(data); + + this.opts.element.trigger({ type: "select2-selected", val: this.id(data), choice: data }); + + this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val()); + this.close(); + + if (!options || !options.noFocus) + this.focusser.focus(); + + if (!equal(old, this.id(data))) { this.triggerChange({added:data,removed:oldData}); } + }, + + // single + updateSelection: function (data) { + + var container=this.selection.find(".select2-chosen"), formatted, cssClass; + + this.selection.data("select2-data", data); + + container.empty(); + if (data !== null) { + formatted=this.opts.formatSelection(data, container, this.opts.escapeMarkup); + } + if (formatted !== undefined) { + container.append(formatted); + } + cssClass=this.opts.formatSelectionCssClass(data, container); + if (cssClass !== undefined) { + container.addClass(cssClass); + } + + this.selection.removeClass("select2-default"); + + if (this.opts.allowClear && this.getPlaceholder() !== undefined) { + this.container.addClass("select2-allowclear"); + } + }, + + // single + val: function () { + var val, + triggerChange = false, + data = null, + self = this, + oldData = this.data(); + + if (arguments.length === 0) { + return this.opts.element.val(); + } + + val = arguments[0]; + + if (arguments.length > 1) { + triggerChange = arguments[1]; + } + + if (this.select) { + this.select + .val(val) + .find("option").filter(function() { return this.selected }).each2(function (i, elm) { + data = self.optionToData(elm); + return false; + }); + this.updateSelection(data); + this.setPlaceholder(); + if (triggerChange) { + this.triggerChange({added: data, removed:oldData}); + } + } else { + // val is an id. !val is true for [undefined,null,'',0] - 0 is legal + if (!val && val !== 0) { + this.clear(triggerChange); + return; + } + if (this.opts.initSelection === undefined) { + throw new Error("cannot call val() if initSelection() is not defined"); + } + this.opts.element.val(val); + this.opts.initSelection(this.opts.element, function(data){ + self.opts.element.val(!data ? "" : self.id(data)); + self.updateSelection(data); + self.setPlaceholder(); + if (triggerChange) { + self.triggerChange({added: data, removed:oldData}); + } + }); + } + }, + + // single + clearSearch: function () { + this.search.val(""); + this.focusser.val(""); + }, + + // single + data: function(value) { + var data, + triggerChange = false; + + if (arguments.length === 0) { + data = this.selection.data("select2-data"); + if (data == undefined) data = null; + return data; + } else { + if (arguments.length > 1) { + triggerChange = arguments[1]; + } + if (!value) { + this.clear(triggerChange); + } else { + data = this.data(); + this.opts.element.val(!value ? "" : this.id(value)); + this.updateSelection(value); + if (triggerChange) { + this.triggerChange({added: value, removed:data}); + } + } + } + } + }); + + MultiSelect2 = clazz(AbstractSelect2, { + + // multi + createContainer: function () { + var container = $(document.createElement("div")).attr({ + "class": "select2-container select2-container-multi" + }).html([ + "<ul class='select2-choices'>", + " <li class='select2-search-field'>", + " <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'>", + " </li>", + "</ul>", + "<div class='select2-drop select2-drop-multi select2-display-none'>", + " <ul class='select2-results'>", + " </ul>", + "</div>"].join("")); + return container; + }, + + // multi + prepareOpts: function () { + var opts = this.parent.prepareOpts.apply(this, arguments), + self=this; + + // TODO validate placeholder is a string if specified + + if (opts.element.get(0).tagName.toLowerCase() === "select") { + // install sthe selection initializer + opts.initSelection = function (element, callback) { + + var data = []; + + element.find("option").filter(function() { return this.selected }).each2(function (i, elm) { + data.push(self.optionToData(elm)); + }); + callback(data); + }; + } else if ("data" in opts) { + // install default initSelection when applied to hidden input and data is local + opts.initSelection = opts.initSelection || function (element, callback) { + var ids = splitVal(element.val(), opts.separator); + //search in data by array of ids, storing matching items in a list + var matches = []; + opts.query({ + matcher: function(term, text, el){ + var is_match = $.grep(ids, function(id) { + return equal(id, opts.id(el)); + }).length; + if (is_match) { + matches.push(el); + } + return is_match; + }, + callback: !$.isFunction(callback) ? $.noop : function() { + // reorder matches based on the order they appear in the ids array because right now + // they are in the order in which they appear in data array + var ordered = []; + for (var i = 0; i < ids.length; i++) { + var id = ids[i]; + for (var j = 0; j < matches.length; j++) { + var match = matches[j]; + if (equal(id, opts.id(match))) { + ordered.push(match); + matches.splice(j, 1); + break; + } + } + } + callback(ordered); + } + }); + }; + } + + return opts; + }, + + // multi + selectChoice: function (choice) { + + var selected = this.container.find(".select2-search-choice-focus"); + if (selected.length && choice && choice[0] == selected[0]) { + + } else { + if (selected.length) { + this.opts.element.trigger("choice-deselected", selected); + } + selected.removeClass("select2-search-choice-focus"); + if (choice && choice.length) { + this.close(); + choice.addClass("select2-search-choice-focus"); + this.opts.element.trigger("choice-selected", choice); + } + } + }, + + // multi + destroy: function() { + $("label[for='" + this.search.attr('id') + "']") + .attr('for', this.opts.element.attr("id")); + this.parent.destroy.apply(this, arguments); + }, + + // multi + initContainer: function () { + + var selector = ".select2-choices", selection; + + this.searchContainer = this.container.find(".select2-search-field"); + this.selection = selection = this.container.find(selector); + + var _this = this; + this.selection.on("click", ".select2-search-choice:not(.select2-locked)", function (e) { + //killEvent(e); + _this.search[0].focus(); + _this.selectChoice($(this)); + }); + + // rewrite labels from original element to focusser + this.search.attr("id", "s2id_autogen"+nextUid()); + $("label[for='" + this.opts.element.attr("id") + "']") + .attr('for', this.search.attr('id')); + + this.search.on("input paste", this.bind(function() { + if (!this.isInterfaceEnabled()) return; + if (!this.opened()) { + this.open(); + } + })); + + this.search.attr("tabindex", this.elementTabIndex); + + this.keydowns = 0; + this.search.on("keydown", this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + + ++this.keydowns; + var selected = selection.find(".select2-search-choice-focus"); + var prev = selected.prev(".select2-search-choice:not(.select2-locked)"); + var next = selected.next(".select2-search-choice:not(.select2-locked)"); + var pos = getCursorInfo(this.search); + + if (selected.length && + (e.which == KEY.LEFT || e.which == KEY.RIGHT || e.which == KEY.BACKSPACE || e.which == KEY.DELETE || e.which == KEY.ENTER)) { + var selectedChoice = selected; + if (e.which == KEY.LEFT && prev.length) { + selectedChoice = prev; + } + else if (e.which == KEY.RIGHT) { + selectedChoice = next.length ? next : null; + } + else if (e.which === KEY.BACKSPACE) { + this.unselect(selected.first()); + this.search.width(10); + selectedChoice = prev.length ? prev : next; + } else if (e.which == KEY.DELETE) { + this.unselect(selected.first()); + this.search.width(10); + selectedChoice = next.length ? next : null; + } else if (e.which == KEY.ENTER) { + selectedChoice = null; + } + + this.selectChoice(selectedChoice); + killEvent(e); + if (!selectedChoice || !selectedChoice.length) { + this.open(); + } + return; + } else if (((e.which === KEY.BACKSPACE && this.keydowns == 1) + || e.which == KEY.LEFT) && (pos.offset == 0 && !pos.length)) { + + this.selectChoice(selection.find(".select2-search-choice:not(.select2-locked)").last()); + killEvent(e); + return; + } else { + this.selectChoice(null); + } + + if (this.opened()) { + switch (e.which) { + case KEY.UP: + case KEY.DOWN: + this.moveHighlight((e.which === KEY.UP) ? -1 : 1); + killEvent(e); + return; + case KEY.ENTER: + this.selectHighlighted(); + killEvent(e); + return; + case KEY.TAB: + this.selectHighlighted({noFocus:true}); + this.close(); + return; + case KEY.ESC: + this.cancel(e); + killEvent(e); + return; + } + } + + if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) + || e.which === KEY.BACKSPACE || e.which === KEY.ESC) { + return; + } + + if (e.which === KEY.ENTER) { + if (this.opts.openOnEnter === false) { + return; + } else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) { + return; + } + } + + this.open(); + + if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) { + // prevent the page from scrolling + killEvent(e); + } + + if (e.which === KEY.ENTER) { + // prevent form from being submitted + killEvent(e); + } + + })); + + this.search.on("keyup", this.bind(function (e) { + this.keydowns = 0; + this.resizeSearch(); + }) + ); + + this.search.on("blur", this.bind(function(e) { + this.container.removeClass("select2-container-active"); + this.search.removeClass("select2-focused"); + this.selectChoice(null); + if (!this.opened()) this.clearSearch(); + e.stopImmediatePropagation(); + this.opts.element.trigger($.Event("select2-blur")); + })); + + this.container.on("click", selector, this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + if ($(e.target).closest(".select2-search-choice").length > 0) { + // clicked inside a select2 search choice, do not open + return; + } + this.selectChoice(null); + this.clearPlaceholder(); + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + this.open(); + this.focusSearch(); + e.preventDefault(); + })); + + this.container.on("focus", selector, this.bind(function () { + if (!this.isInterfaceEnabled()) return; + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + this.container.addClass("select2-container-active"); + this.dropdown.addClass("select2-drop-active"); + this.clearPlaceholder(); + })); + + this.initContainerWidth(); + this.opts.element.addClass("select2-offscreen"); + + // set the placeholder if necessary + this.clearSearch(); + }, + + // multi + enableInterface: function() { + if (this.parent.enableInterface.apply(this, arguments)) { + this.search.prop("disabled", !this.isInterfaceEnabled()); + } + }, + + // multi + initSelection: function () { + var data; + if (this.opts.element.val() === "" && this.opts.element.text() === "") { + this.updateSelection([]); + this.close(); + // set the placeholder if necessary + this.clearSearch(); + } + if (this.select || this.opts.element.val() !== "") { + var self = this; + this.opts.initSelection.call(null, this.opts.element, function(data){ + if (data !== undefined && data !== null) { + self.updateSelection(data); + self.close(); + // set the placeholder if necessary + self.clearSearch(); + } + }); + } + }, + + // multi + clearSearch: function () { + var placeholder = this.getPlaceholder(), + maxWidth = this.getMaxSearchWidth(); + + if (placeholder !== undefined && this.getVal().length === 0 && this.search.hasClass("select2-focused") === false) { + this.search.val(placeholder).addClass("select2-default"); + // stretch the search box to full width of the container so as much of the placeholder is visible as possible + // we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944 + this.search.width(maxWidth > 0 ? maxWidth : this.container.css("width")); + } else { + this.search.val("").width(10); + } + }, + + // multi + clearPlaceholder: function () { + if (this.search.hasClass("select2-default")) { + this.search.val("").removeClass("select2-default"); + } + }, + + // multi + opening: function () { + this.clearPlaceholder(); // should be done before super so placeholder is not used to search + this.resizeSearch(); + + this.parent.opening.apply(this, arguments); + + this.focusSearch(); + + this.updateResults(true); + this.search.focus(); + this.opts.element.trigger($.Event("select2-open")); + }, + + // multi + close: function () { + if (!this.opened()) return; + this.parent.close.apply(this, arguments); + }, + + // multi + focus: function () { + this.close(); + this.search.focus(); + }, + + // multi + isFocused: function () { + return this.search.hasClass("select2-focused"); + }, + + // multi + updateSelection: function (data) { + var ids = [], filtered = [], self = this; + + // filter out duplicates + $(data).each(function () { + if (indexOf(self.id(this), ids) < 0) { + ids.push(self.id(this)); + filtered.push(this); + } + }); + data = filtered; + + this.selection.find(".select2-search-choice").remove(); + $(data).each(function () { + self.addSelectedChoice(this); + }); + self.postprocessResults(); + }, + + // multi + tokenize: function() { + var input = this.search.val(); + input = this.opts.tokenizer.call(this, input, this.data(), this.bind(this.onSelect), this.opts); + if (input != null && input != undefined) { + this.search.val(input); + if (input.length > 0) { + this.open(); + } + } + + }, + + // multi + onSelect: function (data, options) { + + if (!this.triggerSelect(data)) { return; } + + this.addSelectedChoice(data); + + this.opts.element.trigger({ type: "selected", val: this.id(data), choice: data }); + + if (this.select || !this.opts.closeOnSelect) this.postprocessResults(data, false, this.opts.closeOnSelect===true); + + if (this.opts.closeOnSelect) { + this.close(); + this.search.width(10); + } else { + if (this.countSelectableResults()>0) { + this.search.width(10); + this.resizeSearch(); + if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) { + // if we reached max selection size repaint the results so choices + // are replaced with the max selection reached message + this.updateResults(true); + } + this.positionDropdown(); + } else { + // if nothing left to select close + this.close(); + this.search.width(10); + } + } + + // since its not possible to select an element that has already been + // added we do not need to check if this is a new element before firing change + this.triggerChange({ added: data }); + + if (!options || !options.noFocus) + this.focusSearch(); + }, + + // multi + cancel: function () { + this.close(); + this.focusSearch(); + }, + + addSelectedChoice: function (data) { + var enableChoice = !data.locked, + enabledItem = $( + "<li class='select2-search-choice'>" + + " <div></div>" + + " <a href='#' onclick='return false;' class='select2-search-choice-close' tabindex='-1'></a>" + + "</li>"), + disabledItem = $( + "<li class='select2-search-choice select2-locked'>" + + "<div></div>" + + "</li>"); + var choice = enableChoice ? enabledItem : disabledItem, + id = this.id(data), + val = this.getVal(), + formatted, + cssClass; + + formatted=this.opts.formatSelection(data, choice.find("div"), this.opts.escapeMarkup); + if (formatted != undefined) { + choice.find("div").replaceWith("<div>"+formatted+"</div>"); + } + cssClass=this.opts.formatSelectionCssClass(data, choice.find("div")); + if (cssClass != undefined) { + choice.addClass(cssClass); + } + + if(enableChoice){ + choice.find(".select2-search-choice-close") + .on("mousedown", killEvent) + .on("click dblclick", this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + + $(e.target).closest(".select2-search-choice").fadeOut('fast', this.bind(function(){ + this.unselect($(e.target)); + this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"); + this.close(); + this.focusSearch(); + })).dequeue(); + killEvent(e); + })).on("focus", this.bind(function () { + if (!this.isInterfaceEnabled()) return; + this.container.addClass("select2-container-active"); + this.dropdown.addClass("select2-drop-active"); + })); + } + + choice.data("select2-data", data); + choice.insertBefore(this.searchContainer); + + val.push(id); + this.setVal(val); + }, + + // multi + unselect: function (selected) { + var val = this.getVal(), + data, + index; + selected = selected.closest(".select2-search-choice"); + + if (selected.length === 0) { + throw "Invalid argument: " + selected + ". Must be .select2-search-choice"; + } + + data = selected.data("select2-data"); + + if (!data) { + // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued + // and invoked on an element already removed + return; + } + + while((index = indexOf(this.id(data), val)) >= 0) { + val.splice(index, 1); + this.setVal(val); + if (this.select) this.postprocessResults(); + } + + var evt = $.Event("select2-removing"); + evt.val = this.id(data); + evt.choice = data; + this.opts.element.trigger(evt); + + if (evt.isDefaultPrevented()) { + return; + } + + selected.remove(); + + this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data }); + this.triggerChange({ removed: data }); + }, + + // multi + postprocessResults: function (data, initial, noHighlightUpdate) { + var val = this.getVal(), + choices = this.results.find(".select2-result"), + compound = this.results.find(".select2-result-with-children"), + self = this; + + choices.each2(function (i, choice) { + var id = self.id(choice.data("select2-data")); + if (indexOf(id, val) >= 0) { + choice.addClass("select2-selected"); + // mark all children of the selected parent as selected + choice.find(".select2-result-selectable").addClass("select2-selected"); + } + }); + + compound.each2(function(i, choice) { + // hide an optgroup if it doesnt have any selectable children + if (!choice.is('.select2-result-selectable') + && choice.find(".select2-result-selectable:not(.select2-selected)").length === 0) { + choice.addClass("select2-selected"); + } + }); + + if (this.highlight() == -1 && noHighlightUpdate !== false){ + self.highlight(0); + } + + //If all results are chosen render formatNoMAtches + if(!this.opts.createSearchChoice && !choices.filter('.select2-result:not(.select2-selected)').length > 0){ + if(!data || data && !data.more && this.results.find(".select2-no-results").length === 0) { + if (checkFormatter(self.opts.formatNoMatches, "formatNoMatches")) { + this.results.append("<li class='select2-no-results'>" + self.opts.formatNoMatches(self.search.val()) + "</li>"); + } + } + } + + }, + + // multi + getMaxSearchWidth: function() { + return this.selection.width() - getSideBorderPadding(this.search); + }, + + // multi + resizeSearch: function () { + var minimumWidth, left, maxWidth, containerLeft, searchWidth, + sideBorderPadding = getSideBorderPadding(this.search); + + minimumWidth = measureTextWidth(this.search) + 10; + + left = this.search.offset().left; + + maxWidth = this.selection.width(); + containerLeft = this.selection.offset().left; + + searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding; + + if (searchWidth < minimumWidth) { + searchWidth = maxWidth - sideBorderPadding; + } + + if (searchWidth < 40) { + searchWidth = maxWidth - sideBorderPadding; + } + + if (searchWidth <= 0) { + searchWidth = minimumWidth; + } + + this.search.width(Math.floor(searchWidth)); + }, + + // multi + getVal: function () { + var val; + if (this.select) { + val = this.select.val(); + return val === null ? [] : val; + } else { + val = this.opts.element.val(); + return splitVal(val, this.opts.separator); + } + }, + + // multi + setVal: function (val) { + var unique; + if (this.select) { + this.select.val(val); + } else { + unique = []; + // filter out duplicates + $(val).each(function () { + if (indexOf(this, unique) < 0) unique.push(this); + }); + this.opts.element.val(unique.length === 0 ? "" : unique.join(this.opts.separator)); + } + }, + + // multi + buildChangeDetails: function (old, current) { + var current = current.slice(0), + old = old.slice(0); + + // remove intersection from each array + for (var i = 0; i < current.length; i++) { + for (var j = 0; j < old.length; j++) { + if (equal(this.opts.id(current[i]), this.opts.id(old[j]))) { + current.splice(i, 1); + if(i>0){ + i--; + } + old.splice(j, 1); + j--; + } + } + } + + return {added: current, removed: old}; + }, + + + // multi + val: function (val, triggerChange) { + var oldData, self=this; + + if (arguments.length === 0) { + return this.getVal(); + } + + oldData=this.data(); + if (!oldData.length) oldData=[]; + + // val is an id. !val is true for [undefined,null,'',0] - 0 is legal + if (!val && val !== 0) { + this.opts.element.val(""); + this.updateSelection([]); + this.clearSearch(); + if (triggerChange) { + this.triggerChange({added: this.data(), removed: oldData}); + } + return; + } + + // val is a list of ids + this.setVal(val); + + if (this.select) { + this.opts.initSelection(this.select, this.bind(this.updateSelection)); + if (triggerChange) { + this.triggerChange(this.buildChangeDetails(oldData, this.data())); + } + } else { + if (this.opts.initSelection === undefined) { + throw new Error("val() cannot be called if initSelection() is not defined"); + } + + this.opts.initSelection(this.opts.element, function(data){ + var ids=$.map(data, self.id); + self.setVal(ids); + self.updateSelection(data); + self.clearSearch(); + if (triggerChange) { + self.triggerChange(self.buildChangeDetails(oldData, self.data())); + } + }); + } + this.clearSearch(); + }, + + // multi + onSortStart: function() { + if (this.select) { + throw new Error("Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead."); + } + + // collapse search field into 0 width so its container can be collapsed as well + this.search.width(0); + // hide the container + this.searchContainer.hide(); + }, + + // multi + onSortEnd:function() { + + var val=[], self=this; + + // show search and move it to the end of the list + this.searchContainer.show(); + // make sure the search container is the last item in the list + this.searchContainer.appendTo(this.searchContainer.parent()); + // since we collapsed the width in dragStarted, we resize it here + this.resizeSearch(); + + // update selection + this.selection.find(".select2-search-choice").each(function() { + val.push(self.opts.id($(this).data("select2-data"))); + }); + this.setVal(val); + this.triggerChange(); + }, + + // multi + data: function(values, triggerChange) { + var self=this, ids, old; + if (arguments.length === 0) { + return this.selection + .find(".select2-search-choice") + .map(function() { return $(this).data("select2-data"); }) + .get(); + } else { + old = this.data(); + if (!values) { values = []; } + ids = $.map(values, function(e) { return self.opts.id(e); }); + this.setVal(ids); + this.updateSelection(values); + this.clearSearch(); + if (triggerChange) { + this.triggerChange(this.buildChangeDetails(old, this.data())); + } + } + } + }); + + $.fn.select2 = function () { + + var args = Array.prototype.slice.call(arguments, 0), + opts, + select2, + method, value, multiple, + allowedMethods = ["val", "destroy", "opened", "open", "close", "focus", "isFocused", "container", "dropdown", "onSortStart", "onSortEnd", "enable", "disable", "readonly", "positionDropdown", "data", "search"], + valueMethods = ["opened", "isFocused", "container", "dropdown"], + propertyMethods = ["val", "data"], + methodsMap = { search: "externalSearch" }; + + this.each(function () { + if (args.length === 0 || typeof(args[0]) === "object") { + opts = args.length === 0 ? {} : $.extend({}, args[0]); + opts.element = $(this); + + if (opts.element.get(0).tagName.toLowerCase() === "select") { + multiple = opts.element.prop("multiple"); + } else { + multiple = opts.multiple || false; + if ("tags" in opts) {opts.multiple = multiple = true;} + } + + select2 = multiple ? new MultiSelect2() : new SingleSelect2(); + select2.init(opts); + } else if (typeof(args[0]) === "string") { + + if (indexOf(args[0], allowedMethods) < 0) { + throw "Unknown method: " + args[0]; + } + + value = undefined; + select2 = $(this).data("select2"); + if (select2 === undefined) return; + + method=args[0]; + + if (method === "container") { + value = select2.container; + } else if (method === "dropdown") { + value = select2.dropdown; + } else { + if (methodsMap[method]) method = methodsMap[method]; + + value = select2[method].apply(select2, args.slice(1)); + } + if (indexOf(args[0], valueMethods) >= 0 + || (indexOf(args[0], propertyMethods) && args.length == 1)) { + return false; // abort the iteration, ready to return first matched value + } + } else { + throw "Invalid arguments to select2 plugin: " + args; + } + }); + return (value === undefined) ? this : value; + }; + + // plugin defaults, accessible to users + $.fn.select2.defaults = { + width: "copy", + loadMorePadding: 0, + closeOnSelect: true, + openOnEnter: true, + containerCss: {}, + dropdownCss: {}, + containerCssClass: "", + dropdownCssClass: "", + formatResult: function(result, container, query, escapeMarkup) { + var markup=[]; + markMatch(result.text, query.term, markup, escapeMarkup); + return markup.join(""); + }, + formatSelection: function (data, container, escapeMarkup) { + return data ? escapeMarkup(data.text) : undefined; + }, + sortResults: function (results, container, query) { + return results; + }, + formatResultCssClass: function(data) {return undefined;}, + formatSelectionCssClass: function(data, container) {return undefined;}, + formatNoMatches: function () { return "No matches found"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " more character" + (n == 1? "" : "s"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Loading more results..."; }, + formatSearching: function () { return "Searching..."; }, + minimumResultsForSearch: 0, + minimumInputLength: 0, + maximumInputLength: null, + maximumSelectionSize: 0, + id: function (e) { return e.id; }, + matcher: function(term, text) { + return stripDiacritics(''+text).toUpperCase().indexOf(stripDiacritics(''+term).toUpperCase()) >= 0; + }, + separator: ",", + tokenSeparators: [], + tokenizer: defaultTokenizer, + escapeMarkup: defaultEscapeMarkup, + blurOnChange: false, + selectOnBlur: false, + adaptContainerCssClass: function(c) { return c; }, + adaptDropdownCssClass: function(c) { return null; }, + nextSearchTerm: function(selectedObject, currentSearchTerm) { return undefined; } + }; + + $.fn.select2.ajaxDefaults = { + transport: $.ajax, + params: { + type: "GET", + cache: false, + dataType: "json" + } + }; + + // exports + window.Select2 = { + query: { + ajax: ajax, + local: local, + tags: tags + }, util: { + debounce: debounce, + markMatch: markMatch, + escapeMarkup: defaultEscapeMarkup, + stripDiacritics: stripDiacritics + }, "class": { + "abstract": AbstractSelect2, + "single": SingleSelect2, + "multi": MultiSelect2 + } + }; + +}(jQuery)); diff --git a/web/js/select2/select2.min.js b/web/js/select2/select2.min.js new file mode 100644 index 000000000..bffe4c241 --- /dev/null +++ b/web/js/select2/select2.min.js @@ -0,0 +1,22 @@ +/* +Copyright 2012 Igor Vaynberg + +Version: 3.4.5 Timestamp: Mon Nov 4 08:22:42 PST 2013 + +This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU +General Public License version 2 (the "GPL License"). You may choose either license to govern your +use of this software only upon the condition that you accept all of the terms of either the Apache +License or the GPL License. + +You may obtain a copy of the Apache License and the GPL License at: + +http://www.apache.org/licenses/LICENSE-2.0 +http://www.gnu.org/licenses/gpl-2.0.html + +Unless required by applicable law or agreed to in writing, software distributed under the Apache License +or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +either express or implied. See the Apache License and the GPL License for the specific language governing +permissions and limitations under the Apache License and the GPL License. +*/ +!function(a){"undefined"==typeof a.fn.each2&&a.extend(a.fn,{each2:function(b){for(var c=a([0]),d=-1,e=this.length;++d<e&&(c.context=c[0]=this[d])&&b.call(c[0],d,c)!==!1;);return this}})}(jQuery),function(a,b){"use strict";function n(a){var b,c,d,e;if(!a||a.length<1)return a;for(b="",c=0,d=a.length;d>c;c++)e=a.charAt(c),b+=m[e]||e;return b}function o(a,b){for(var c=0,d=b.length;d>c;c+=1)if(q(a,b[c]))return c;return-1}function p(){var b=a(l);b.appendTo("body");var c={width:b.width()-b[0].clientWidth,height:b.height()-b[0].clientHeight};return b.remove(),c}function q(a,c){return a===c?!0:a===b||c===b?!1:null===a||null===c?!1:a.constructor===String?a+""==c+"":c.constructor===String?c+""==a+"":!1}function r(b,c){var d,e,f;if(null===b||b.length<1)return[];for(d=b.split(c),e=0,f=d.length;f>e;e+=1)d[e]=a.trim(d[e]);return d}function s(a){return a.outerWidth(!1)-a.width()}function t(c){var d="keyup-change-value";c.on("keydown",function(){a.data(c,d)===b&&a.data(c,d,c.val())}),c.on("keyup",function(){var e=a.data(c,d);e!==b&&c.val()!==e&&(a.removeData(c,d),c.trigger("keyup-change"))})}function u(c){c.on("mousemove",function(c){var d=i;(d===b||d.x!==c.pageX||d.y!==c.pageY)&&a(c.target).trigger("mousemove-filtered",c)})}function v(a,c,d){d=d||b;var e;return function(){var b=arguments;window.clearTimeout(e),e=window.setTimeout(function(){c.apply(d,b)},a)}}function w(a){var c,b=!1;return function(){return b===!1&&(c=a(),b=!0),c}}function x(a,b){var c=v(a,function(a){b.trigger("scroll-debounced",a)});b.on("scroll",function(a){o(a.target,b.get())>=0&&c(a)})}function y(a){a[0]!==document.activeElement&&window.setTimeout(function(){var d,b=a[0],c=a.val().length;a.focus(),a.is(":visible")&&b===document.activeElement&&(b.setSelectionRange?b.setSelectionRange(c,c):b.createTextRange&&(d=b.createTextRange(),d.collapse(!1),d.select()))},0)}function z(b){b=a(b)[0];var c=0,d=0;if("selectionStart"in b)c=b.selectionStart,d=b.selectionEnd-c;else if("selection"in document){b.focus();var e=document.selection.createRange();d=document.selection.createRange().text.length,e.moveStart("character",-b.value.length),c=e.text.length-d}return{offset:c,length:d}}function A(a){a.preventDefault(),a.stopPropagation()}function B(a){a.preventDefault(),a.stopImmediatePropagation()}function C(b){if(!h){var c=b[0].currentStyle||window.getComputedStyle(b[0],null);h=a(document.createElement("div")).css({position:"absolute",left:"-10000px",top:"-10000px",display:"none",fontSize:c.fontSize,fontFamily:c.fontFamily,fontStyle:c.fontStyle,fontWeight:c.fontWeight,letterSpacing:c.letterSpacing,textTransform:c.textTransform,whiteSpace:"nowrap"}),h.attr("class","select2-sizer"),a("body").append(h)}return h.text(b.val()),h.width()}function D(b,c,d){var e,g,f=[];e=b.attr("class"),e&&(e=""+e,a(e.split(" ")).each2(function(){0===this.indexOf("select2-")&&f.push(this)})),e=c.attr("class"),e&&(e=""+e,a(e.split(" ")).each2(function(){0!==this.indexOf("select2-")&&(g=d(this),g&&f.push(g))})),b.attr("class",f.join(" "))}function E(a,b,c,d){var e=n(a.toUpperCase()).indexOf(n(b.toUpperCase())),f=b.length;return 0>e?(c.push(d(a)),void 0):(c.push(d(a.substring(0,e))),c.push("<span class='select2-match'>"),c.push(d(a.substring(e,e+f))),c.push("</span>"),c.push(d(a.substring(e+f,a.length))),void 0)}function F(a){var b={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})}function G(c){var d,e=null,f=c.quietMillis||100,g=c.url,h=this;return function(i){window.clearTimeout(d),d=window.setTimeout(function(){var d=c.data,f=g,j=c.transport||a.fn.select2.ajaxDefaults.transport,k={type:c.type||"GET",cache:c.cache||!1,jsonpCallback:c.jsonpCallback||b,dataType:c.dataType||"json"},l=a.extend({},a.fn.select2.ajaxDefaults.params,k);d=d?d.call(h,i.term,i.page,i.context):null,f="function"==typeof f?f.call(h,i.term,i.page,i.context):f,e&&e.abort(),c.params&&(a.isFunction(c.params)?a.extend(l,c.params.call(h)):a.extend(l,c.params)),a.extend(l,{url:f,dataType:c.dataType,data:d,success:function(a){var b=c.results(a,i.page);i.callback(b)}}),e=j.call(h,l)},f)}}function H(b){var d,e,c=b,f=function(a){return""+a.text};a.isArray(c)&&(e=c,c={results:e}),a.isFunction(c)===!1&&(e=c,c=function(){return e});var g=c();return g.text&&(f=g.text,a.isFunction(f)||(d=g.text,f=function(a){return a[d]})),function(b){var g,d=b.term,e={results:[]};return""===d?(b.callback(c()),void 0):(g=function(c,e){var h,i;if(c=c[0],c.children){h={};for(i in c)c.hasOwnProperty(i)&&(h[i]=c[i]);h.children=[],a(c.children).each2(function(a,b){g(b,h.children)}),(h.children.length||b.matcher(d,f(h),c))&&e.push(h)}else b.matcher(d,f(c),c)&&e.push(c)},a(c().results).each2(function(a,b){g(b,e.results)}),b.callback(e),void 0)}}function I(c){var d=a.isFunction(c);return function(e){var f=e.term,g={results:[]};a(d?c():c).each(function(){var a=this.text!==b,c=a?this.text:this;(""===f||e.matcher(f,c))&&g.results.push(a?this:{id:this,text:this})}),e.callback(g)}}function J(b,c){if(a.isFunction(b))return!0;if(!b)return!1;throw new Error(c+" must be a function or a falsy value")}function K(b){return a.isFunction(b)?b():b}function L(b){var c=0;return a.each(b,function(a,b){b.children?c+=L(b.children):c++}),c}function M(a,c,d,e){var h,i,j,k,l,f=a,g=!1;if(!e.createSearchChoice||!e.tokenSeparators||e.tokenSeparators.length<1)return b;for(;;){for(i=-1,j=0,k=e.tokenSeparators.length;k>j&&(l=e.tokenSeparators[j],i=a.indexOf(l),!(i>=0));j++);if(0>i)break;if(h=a.substring(0,i),a=a.substring(i+l.length),h.length>0&&(h=e.createSearchChoice.call(this,h,c),h!==b&&null!==h&&e.id(h)!==b&&null!==e.id(h))){for(g=!1,j=0,k=c.length;k>j;j++)if(q(e.id(h),e.id(c[j]))){g=!0;break}g||d(h)}}return f!==a?a:void 0}function N(b,c){var d=function(){};return d.prototype=new b,d.prototype.constructor=d,d.prototype.parent=b.prototype,d.prototype=a.extend(d.prototype,c),d}if(window.Select2===b){var c,d,e,f,g,h,j,k,i={x:0,y:0},c={TAB:9,ENTER:13,ESC:27,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40,SHIFT:16,CTRL:17,ALT:18,PAGE_UP:33,PAGE_DOWN:34,HOME:36,END:35,BACKSPACE:8,DELETE:46,isArrow:function(a){switch(a=a.which?a.which:a){case c.LEFT:case c.RIGHT:case c.UP:case c.DOWN:return!0}return!1},isControl:function(a){var b=a.which;switch(b){case c.SHIFT:case c.CTRL:case c.ALT:return!0}return a.metaKey?!0:!1},isFunctionKey:function(a){return a=a.which?a.which:a,a>=112&&123>=a}},l="<div class='select2-measure-scrollbar'></div>",m={"\u24b6":"A","\uff21":"A","\xc0":"A","\xc1":"A","\xc2":"A","\u1ea6":"A","\u1ea4":"A","\u1eaa":"A","\u1ea8":"A","\xc3":"A","\u0100":"A","\u0102":"A","\u1eb0":"A","\u1eae":"A","\u1eb4":"A","\u1eb2":"A","\u0226":"A","\u01e0":"A","\xc4":"A","\u01de":"A","\u1ea2":"A","\xc5":"A","\u01fa":"A","\u01cd":"A","\u0200":"A","\u0202":"A","\u1ea0":"A","\u1eac":"A","\u1eb6":"A","\u1e00":"A","\u0104":"A","\u023a":"A","\u2c6f":"A","\ua732":"AA","\xc6":"AE","\u01fc":"AE","\u01e2":"AE","\ua734":"AO","\ua736":"AU","\ua738":"AV","\ua73a":"AV","\ua73c":"AY","\u24b7":"B","\uff22":"B","\u1e02":"B","\u1e04":"B","\u1e06":"B","\u0243":"B","\u0182":"B","\u0181":"B","\u24b8":"C","\uff23":"C","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\xc7":"C","\u1e08":"C","\u0187":"C","\u023b":"C","\ua73e":"C","\u24b9":"D","\uff24":"D","\u1e0a":"D","\u010e":"D","\u1e0c":"D","\u1e10":"D","\u1e12":"D","\u1e0e":"D","\u0110":"D","\u018b":"D","\u018a":"D","\u0189":"D","\ua779":"D","\u01f1":"DZ","\u01c4":"DZ","\u01f2":"Dz","\u01c5":"Dz","\u24ba":"E","\uff25":"E","\xc8":"E","\xc9":"E","\xca":"E","\u1ec0":"E","\u1ebe":"E","\u1ec4":"E","\u1ec2":"E","\u1ebc":"E","\u0112":"E","\u1e14":"E","\u1e16":"E","\u0114":"E","\u0116":"E","\xcb":"E","\u1eba":"E","\u011a":"E","\u0204":"E","\u0206":"E","\u1eb8":"E","\u1ec6":"E","\u0228":"E","\u1e1c":"E","\u0118":"E","\u1e18":"E","\u1e1a":"E","\u0190":"E","\u018e":"E","\u24bb":"F","\uff26":"F","\u1e1e":"F","\u0191":"F","\ua77b":"F","\u24bc":"G","\uff27":"G","\u01f4":"G","\u011c":"G","\u1e20":"G","\u011e":"G","\u0120":"G","\u01e6":"G","\u0122":"G","\u01e4":"G","\u0193":"G","\ua7a0":"G","\ua77d":"G","\ua77e":"G","\u24bd":"H","\uff28":"H","\u0124":"H","\u1e22":"H","\u1e26":"H","\u021e":"H","\u1e24":"H","\u1e28":"H","\u1e2a":"H","\u0126":"H","\u2c67":"H","\u2c75":"H","\ua78d":"H","\u24be":"I","\uff29":"I","\xcc":"I","\xcd":"I","\xce":"I","\u0128":"I","\u012a":"I","\u012c":"I","\u0130":"I","\xcf":"I","\u1e2e":"I","\u1ec8":"I","\u01cf":"I","\u0208":"I","\u020a":"I","\u1eca":"I","\u012e":"I","\u1e2c":"I","\u0197":"I","\u24bf":"J","\uff2a":"J","\u0134":"J","\u0248":"J","\u24c0":"K","\uff2b":"K","\u1e30":"K","\u01e8":"K","\u1e32":"K","\u0136":"K","\u1e34":"K","\u0198":"K","\u2c69":"K","\ua740":"K","\ua742":"K","\ua744":"K","\ua7a2":"K","\u24c1":"L","\uff2c":"L","\u013f":"L","\u0139":"L","\u013d":"L","\u1e36":"L","\u1e38":"L","\u013b":"L","\u1e3c":"L","\u1e3a":"L","\u0141":"L","\u023d":"L","\u2c62":"L","\u2c60":"L","\ua748":"L","\ua746":"L","\ua780":"L","\u01c7":"LJ","\u01c8":"Lj","\u24c2":"M","\uff2d":"M","\u1e3e":"M","\u1e40":"M","\u1e42":"M","\u2c6e":"M","\u019c":"M","\u24c3":"N","\uff2e":"N","\u01f8":"N","\u0143":"N","\xd1":"N","\u1e44":"N","\u0147":"N","\u1e46":"N","\u0145":"N","\u1e4a":"N","\u1e48":"N","\u0220":"N","\u019d":"N","\ua790":"N","\ua7a4":"N","\u01ca":"NJ","\u01cb":"Nj","\u24c4":"O","\uff2f":"O","\xd2":"O","\xd3":"O","\xd4":"O","\u1ed2":"O","\u1ed0":"O","\u1ed6":"O","\u1ed4":"O","\xd5":"O","\u1e4c":"O","\u022c":"O","\u1e4e":"O","\u014c":"O","\u1e50":"O","\u1e52":"O","\u014e":"O","\u022e":"O","\u0230":"O","\xd6":"O","\u022a":"O","\u1ece":"O","\u0150":"O","\u01d1":"O","\u020c":"O","\u020e":"O","\u01a0":"O","\u1edc":"O","\u1eda":"O","\u1ee0":"O","\u1ede":"O","\u1ee2":"O","\u1ecc":"O","\u1ed8":"O","\u01ea":"O","\u01ec":"O","\xd8":"O","\u01fe":"O","\u0186":"O","\u019f":"O","\ua74a":"O","\ua74c":"O","\u01a2":"OI","\ua74e":"OO","\u0222":"OU","\u24c5":"P","\uff30":"P","\u1e54":"P","\u1e56":"P","\u01a4":"P","\u2c63":"P","\ua750":"P","\ua752":"P","\ua754":"P","\u24c6":"Q","\uff31":"Q","\ua756":"Q","\ua758":"Q","\u024a":"Q","\u24c7":"R","\uff32":"R","\u0154":"R","\u1e58":"R","\u0158":"R","\u0210":"R","\u0212":"R","\u1e5a":"R","\u1e5c":"R","\u0156":"R","\u1e5e":"R","\u024c":"R","\u2c64":"R","\ua75a":"R","\ua7a6":"R","\ua782":"R","\u24c8":"S","\uff33":"S","\u1e9e":"S","\u015a":"S","\u1e64":"S","\u015c":"S","\u1e60":"S","\u0160":"S","\u1e66":"S","\u1e62":"S","\u1e68":"S","\u0218":"S","\u015e":"S","\u2c7e":"S","\ua7a8":"S","\ua784":"S","\u24c9":"T","\uff34":"T","\u1e6a":"T","\u0164":"T","\u1e6c":"T","\u021a":"T","\u0162":"T","\u1e70":"T","\u1e6e":"T","\u0166":"T","\u01ac":"T","\u01ae":"T","\u023e":"T","\ua786":"T","\ua728":"TZ","\u24ca":"U","\uff35":"U","\xd9":"U","\xda":"U","\xdb":"U","\u0168":"U","\u1e78":"U","\u016a":"U","\u1e7a":"U","\u016c":"U","\xdc":"U","\u01db":"U","\u01d7":"U","\u01d5":"U","\u01d9":"U","\u1ee6":"U","\u016e":"U","\u0170":"U","\u01d3":"U","\u0214":"U","\u0216":"U","\u01af":"U","\u1eea":"U","\u1ee8":"U","\u1eee":"U","\u1eec":"U","\u1ef0":"U","\u1ee4":"U","\u1e72":"U","\u0172":"U","\u1e76":"U","\u1e74":"U","\u0244":"U","\u24cb":"V","\uff36":"V","\u1e7c":"V","\u1e7e":"V","\u01b2":"V","\ua75e":"V","\u0245":"V","\ua760":"VY","\u24cc":"W","\uff37":"W","\u1e80":"W","\u1e82":"W","\u0174":"W","\u1e86":"W","\u1e84":"W","\u1e88":"W","\u2c72":"W","\u24cd":"X","\uff38":"X","\u1e8a":"X","\u1e8c":"X","\u24ce":"Y","\uff39":"Y","\u1ef2":"Y","\xdd":"Y","\u0176":"Y","\u1ef8":"Y","\u0232":"Y","\u1e8e":"Y","\u0178":"Y","\u1ef6":"Y","\u1ef4":"Y","\u01b3":"Y","\u024e":"Y","\u1efe":"Y","\u24cf":"Z","\uff3a":"Z","\u0179":"Z","\u1e90":"Z","\u017b":"Z","\u017d":"Z","\u1e92":"Z","\u1e94":"Z","\u01b5":"Z","\u0224":"Z","\u2c7f":"Z","\u2c6b":"Z","\ua762":"Z","\u24d0":"a","\uff41":"a","\u1e9a":"a","\xe0":"a","\xe1":"a","\xe2":"a","\u1ea7":"a","\u1ea5":"a","\u1eab":"a","\u1ea9":"a","\xe3":"a","\u0101":"a","\u0103":"a","\u1eb1":"a","\u1eaf":"a","\u1eb5":"a","\u1eb3":"a","\u0227":"a","\u01e1":"a","\xe4":"a","\u01df":"a","\u1ea3":"a","\xe5":"a","\u01fb":"a","\u01ce":"a","\u0201":"a","\u0203":"a","\u1ea1":"a","\u1ead":"a","\u1eb7":"a","\u1e01":"a","\u0105":"a","\u2c65":"a","\u0250":"a","\ua733":"aa","\xe6":"ae","\u01fd":"ae","\u01e3":"ae","\ua735":"ao","\ua737":"au","\ua739":"av","\ua73b":"av","\ua73d":"ay","\u24d1":"b","\uff42":"b","\u1e03":"b","\u1e05":"b","\u1e07":"b","\u0180":"b","\u0183":"b","\u0253":"b","\u24d2":"c","\uff43":"c","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\xe7":"c","\u1e09":"c","\u0188":"c","\u023c":"c","\ua73f":"c","\u2184":"c","\u24d3":"d","\uff44":"d","\u1e0b":"d","\u010f":"d","\u1e0d":"d","\u1e11":"d","\u1e13":"d","\u1e0f":"d","\u0111":"d","\u018c":"d","\u0256":"d","\u0257":"d","\ua77a":"d","\u01f3":"dz","\u01c6":"dz","\u24d4":"e","\uff45":"e","\xe8":"e","\xe9":"e","\xea":"e","\u1ec1":"e","\u1ebf":"e","\u1ec5":"e","\u1ec3":"e","\u1ebd":"e","\u0113":"e","\u1e15":"e","\u1e17":"e","\u0115":"e","\u0117":"e","\xeb":"e","\u1ebb":"e","\u011b":"e","\u0205":"e","\u0207":"e","\u1eb9":"e","\u1ec7":"e","\u0229":"e","\u1e1d":"e","\u0119":"e","\u1e19":"e","\u1e1b":"e","\u0247":"e","\u025b":"e","\u01dd":"e","\u24d5":"f","\uff46":"f","\u1e1f":"f","\u0192":"f","\ua77c":"f","\u24d6":"g","\uff47":"g","\u01f5":"g","\u011d":"g","\u1e21":"g","\u011f":"g","\u0121":"g","\u01e7":"g","\u0123":"g","\u01e5":"g","\u0260":"g","\ua7a1":"g","\u1d79":"g","\ua77f":"g","\u24d7":"h","\uff48":"h","\u0125":"h","\u1e23":"h","\u1e27":"h","\u021f":"h","\u1e25":"h","\u1e29":"h","\u1e2b":"h","\u1e96":"h","\u0127":"h","\u2c68":"h","\u2c76":"h","\u0265":"h","\u0195":"hv","\u24d8":"i","\uff49":"i","\xec":"i","\xed":"i","\xee":"i","\u0129":"i","\u012b":"i","\u012d":"i","\xef":"i","\u1e2f":"i","\u1ec9":"i","\u01d0":"i","\u0209":"i","\u020b":"i","\u1ecb":"i","\u012f":"i","\u1e2d":"i","\u0268":"i","\u0131":"i","\u24d9":"j","\uff4a":"j","\u0135":"j","\u01f0":"j","\u0249":"j","\u24da":"k","\uff4b":"k","\u1e31":"k","\u01e9":"k","\u1e33":"k","\u0137":"k","\u1e35":"k","\u0199":"k","\u2c6a":"k","\ua741":"k","\ua743":"k","\ua745":"k","\ua7a3":"k","\u24db":"l","\uff4c":"l","\u0140":"l","\u013a":"l","\u013e":"l","\u1e37":"l","\u1e39":"l","\u013c":"l","\u1e3d":"l","\u1e3b":"l","\u017f":"l","\u0142":"l","\u019a":"l","\u026b":"l","\u2c61":"l","\ua749":"l","\ua781":"l","\ua747":"l","\u01c9":"lj","\u24dc":"m","\uff4d":"m","\u1e3f":"m","\u1e41":"m","\u1e43":"m","\u0271":"m","\u026f":"m","\u24dd":"n","\uff4e":"n","\u01f9":"n","\u0144":"n","\xf1":"n","\u1e45":"n","\u0148":"n","\u1e47":"n","\u0146":"n","\u1e4b":"n","\u1e49":"n","\u019e":"n","\u0272":"n","\u0149":"n","\ua791":"n","\ua7a5":"n","\u01cc":"nj","\u24de":"o","\uff4f":"o","\xf2":"o","\xf3":"o","\xf4":"o","\u1ed3":"o","\u1ed1":"o","\u1ed7":"o","\u1ed5":"o","\xf5":"o","\u1e4d":"o","\u022d":"o","\u1e4f":"o","\u014d":"o","\u1e51":"o","\u1e53":"o","\u014f":"o","\u022f":"o","\u0231":"o","\xf6":"o","\u022b":"o","\u1ecf":"o","\u0151":"o","\u01d2":"o","\u020d":"o","\u020f":"o","\u01a1":"o","\u1edd":"o","\u1edb":"o","\u1ee1":"o","\u1edf":"o","\u1ee3":"o","\u1ecd":"o","\u1ed9":"o","\u01eb":"o","\u01ed":"o","\xf8":"o","\u01ff":"o","\u0254":"o","\ua74b":"o","\ua74d":"o","\u0275":"o","\u01a3":"oi","\u0223":"ou","\ua74f":"oo","\u24df":"p","\uff50":"p","\u1e55":"p","\u1e57":"p","\u01a5":"p","\u1d7d":"p","\ua751":"p","\ua753":"p","\ua755":"p","\u24e0":"q","\uff51":"q","\u024b":"q","\ua757":"q","\ua759":"q","\u24e1":"r","\uff52":"r","\u0155":"r","\u1e59":"r","\u0159":"r","\u0211":"r","\u0213":"r","\u1e5b":"r","\u1e5d":"r","\u0157":"r","\u1e5f":"r","\u024d":"r","\u027d":"r","\ua75b":"r","\ua7a7":"r","\ua783":"r","\u24e2":"s","\uff53":"s","\xdf":"s","\u015b":"s","\u1e65":"s","\u015d":"s","\u1e61":"s","\u0161":"s","\u1e67":"s","\u1e63":"s","\u1e69":"s","\u0219":"s","\u015f":"s","\u023f":"s","\ua7a9":"s","\ua785":"s","\u1e9b":"s","\u24e3":"t","\uff54":"t","\u1e6b":"t","\u1e97":"t","\u0165":"t","\u1e6d":"t","\u021b":"t","\u0163":"t","\u1e71":"t","\u1e6f":"t","\u0167":"t","\u01ad":"t","\u0288":"t","\u2c66":"t","\ua787":"t","\ua729":"tz","\u24e4":"u","\uff55":"u","\xf9":"u","\xfa":"u","\xfb":"u","\u0169":"u","\u1e79":"u","\u016b":"u","\u1e7b":"u","\u016d":"u","\xfc":"u","\u01dc":"u","\u01d8":"u","\u01d6":"u","\u01da":"u","\u1ee7":"u","\u016f":"u","\u0171":"u","\u01d4":"u","\u0215":"u","\u0217":"u","\u01b0":"u","\u1eeb":"u","\u1ee9":"u","\u1eef":"u","\u1eed":"u","\u1ef1":"u","\u1ee5":"u","\u1e73":"u","\u0173":"u","\u1e77":"u","\u1e75":"u","\u0289":"u","\u24e5":"v","\uff56":"v","\u1e7d":"v","\u1e7f":"v","\u028b":"v","\ua75f":"v","\u028c":"v","\ua761":"vy","\u24e6":"w","\uff57":"w","\u1e81":"w","\u1e83":"w","\u0175":"w","\u1e87":"w","\u1e85":"w","\u1e98":"w","\u1e89":"w","\u2c73":"w","\u24e7":"x","\uff58":"x","\u1e8b":"x","\u1e8d":"x","\u24e8":"y","\uff59":"y","\u1ef3":"y","\xfd":"y","\u0177":"y","\u1ef9":"y","\u0233":"y","\u1e8f":"y","\xff":"y","\u1ef7":"y","\u1e99":"y","\u1ef5":"y","\u01b4":"y","\u024f":"y","\u1eff":"y","\u24e9":"z","\uff5a":"z","\u017a":"z","\u1e91":"z","\u017c":"z","\u017e":"z","\u1e93":"z","\u1e95":"z","\u01b6":"z","\u0225":"z","\u0240":"z","\u2c6c":"z","\ua763":"z"};j=a(document),g=function(){var a=1;return function(){return a++}}(),j.on("mousemove",function(a){i.x=a.pageX,i.y=a.pageY}),d=N(Object,{bind:function(a){var b=this;return function(){a.apply(b,arguments)}},init:function(c){var d,e,f=".select2-results";this.opts=c=this.prepareOpts(c),this.id=c.id,c.element.data("select2")!==b&&null!==c.element.data("select2")&&c.element.data("select2").destroy(),this.container=this.createContainer(),this.containerId="s2id_"+(c.element.attr("id")||"autogen"+g()),this.containerSelector="#"+this.containerId.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g,"\\$1"),this.container.attr("id",this.containerId),this.body=w(function(){return c.element.closest("body")}),D(this.container,this.opts.element,this.opts.adaptContainerCssClass),this.container.attr("style",c.element.attr("style")),this.container.css(K(c.containerCss)),this.container.addClass(K(c.containerCssClass)),this.elementTabIndex=this.opts.element.attr("tabindex"),this.opts.element.data("select2",this).attr("tabindex","-1").before(this.container).on("click.select2",A),this.container.data("select2",this),this.dropdown=this.container.find(".select2-drop"),D(this.dropdown,this.opts.element,this.opts.adaptDropdownCssClass),this.dropdown.addClass(K(c.dropdownCssClass)),this.dropdown.data("select2",this),this.dropdown.on("click",A),this.results=d=this.container.find(f),this.search=e=this.container.find("input.select2-input"),this.queryCount=0,this.resultsPage=0,this.context=null,this.initContainer(),this.container.on("click",A),u(this.results),this.dropdown.on("mousemove-filtered touchstart touchmove touchend",f,this.bind(this.highlightUnderEvent)),x(80,this.results),this.dropdown.on("scroll-debounced",f,this.bind(this.loadMoreIfNeeded)),a(this.container).on("change",".select2-input",function(a){a.stopPropagation()}),a(this.dropdown).on("change",".select2-input",function(a){a.stopPropagation()}),a.fn.mousewheel&&d.mousewheel(function(a,b,c,e){var f=d.scrollTop();e>0&&0>=f-e?(d.scrollTop(0),A(a)):0>e&&d.get(0).scrollHeight-d.scrollTop()+e<=d.height()&&(d.scrollTop(d.get(0).scrollHeight-d.height()),A(a))}),t(e),e.on("keyup-change input paste",this.bind(this.updateResults)),e.on("focus",function(){e.addClass("select2-focused")}),e.on("blur",function(){e.removeClass("select2-focused")}),this.dropdown.on("mouseup",f,this.bind(function(b){a(b.target).closest(".select2-result-selectable").length>0&&(this.highlightUnderEvent(b),this.selectHighlighted(b))})),this.dropdown.on("click mouseup mousedown",function(a){a.stopPropagation()}),a.isFunction(this.opts.initSelection)&&(this.initSelection(),this.monitorSource()),null!==c.maximumInputLength&&this.search.attr("maxlength",c.maximumInputLength);var h=c.element.prop("disabled");h===b&&(h=!1),this.enable(!h);var i=c.element.prop("readonly");i===b&&(i=!1),this.readonly(i),k=k||p(),this.autofocus=c.element.prop("autofocus"),c.element.prop("autofocus",!1),this.autofocus&&this.focus(),this.nextSearchTerm=b},destroy:function(){var a=this.opts.element,c=a.data("select2");this.close(),this.propertyObserver&&(delete this.propertyObserver,this.propertyObserver=null),c!==b&&(c.container.remove(),c.dropdown.remove(),a.removeClass("select2-offscreen").removeData("select2").off(".select2").prop("autofocus",this.autofocus||!1),this.elementTabIndex?a.attr({tabindex:this.elementTabIndex}):a.removeAttr("tabindex"),a.show())},optionToData:function(a){return a.is("option")?{id:a.prop("value"),text:a.text(),element:a.get(),css:a.attr("class"),disabled:a.prop("disabled"),locked:q(a.attr("locked"),"locked")||q(a.data("locked"),!0)}:a.is("optgroup")?{text:a.attr("label"),children:[],element:a.get(),css:a.attr("class")}:void 0},prepareOpts:function(c){var d,e,f,g,h=this;if(d=c.element,"select"===d.get(0).tagName.toLowerCase()&&(this.select=e=c.element),e&&a.each(["id","multiple","ajax","query","createSearchChoice","initSelection","data","tags"],function(){if(this in c)throw new Error("Option '"+this+"' is not allowed for Select2 when attached to a <select> element.")}),c=a.extend({},{populateResults:function(d,e,f){var g,i=this.opts.id;g=function(d,e,j){var k,l,m,n,o,p,q,r,s,t;for(d=c.sortResults(d,e,f),k=0,l=d.length;l>k;k+=1)m=d[k],o=m.disabled===!0,n=!o&&i(m)!==b,p=m.children&&m.children.length>0,q=a("<li></li>"),q.addClass("select2-results-dept-"+j),q.addClass("select2-result"),q.addClass(n?"select2-result-selectable":"select2-result-unselectable"),o&&q.addClass("select2-disabled"),p&&q.addClass("select2-result-with-children"),q.addClass(h.opts.formatResultCssClass(m)),r=a(document.createElement("div")),r.addClass("select2-result-label"),t=c.formatResult(m,r,f,h.opts.escapeMarkup),t!==b&&r.html(t),q.append(r),p&&(s=a("<ul></ul>"),s.addClass("select2-result-sub"),g(m.children,s,j+1),q.append(s)),q.data("select2-data",m),e.append(q)},g(e,d,0)}},a.fn.select2.defaults,c),"function"!=typeof c.id&&(f=c.id,c.id=function(a){return a[f]}),a.isArray(c.element.data("select2Tags"))){if("tags"in c)throw"tags specified as both an attribute 'data-select2-tags' and in options of Select2 "+c.element.attr("id");c.tags=c.element.data("select2Tags")}if(e?(c.query=this.bind(function(a){var f,g,i,c={results:[],more:!1},e=a.term;i=function(b,c){var d;b.is("option")?a.matcher(e,b.text(),b)&&c.push(h.optionToData(b)):b.is("optgroup")&&(d=h.optionToData(b),b.children().each2(function(a,b){i(b,d.children)}),d.children.length>0&&c.push(d))},f=d.children(),this.getPlaceholder()!==b&&f.length>0&&(g=this.getPlaceholderOption(),g&&(f=f.not(g))),f.each2(function(a,b){i(b,c.results)}),a.callback(c)}),c.id=function(a){return a.id},c.formatResultCssClass=function(a){return a.css}):"query"in c||("ajax"in c?(g=c.element.data("ajax-url"),g&&g.length>0&&(c.ajax.url=g),c.query=G.call(c.element,c.ajax)):"data"in c?c.query=H(c.data):"tags"in c&&(c.query=I(c.tags),c.createSearchChoice===b&&(c.createSearchChoice=function(b){return{id:a.trim(b),text:a.trim(b)}}),c.initSelection===b&&(c.initSelection=function(b,d){var e=[];a(r(b.val(),c.separator)).each(function(){var b={id:this,text:this},d=c.tags;a.isFunction(d)&&(d=d()),a(d).each(function(){return q(this.id,b.id)?(b=this,!1):void 0}),e.push(b)}),d(e)}))),"function"!=typeof c.query)throw"query function not defined for Select2 "+c.element.attr("id");return c},monitorSource:function(){var c,d,a=this.opts.element;a.on("change.select2",this.bind(function(){this.opts.element.data("select2-change-triggered")!==!0&&this.initSelection()})),c=this.bind(function(){var c=a.prop("disabled");c===b&&(c=!1),this.enable(!c);var d=a.prop("readonly");d===b&&(d=!1),this.readonly(d),D(this.container,this.opts.element,this.opts.adaptContainerCssClass),this.container.addClass(K(this.opts.containerCssClass)),D(this.dropdown,this.opts.element,this.opts.adaptDropdownCssClass),this.dropdown.addClass(K(this.opts.dropdownCssClass))}),a.on("propertychange.select2",c),this.mutationCallback===b&&(this.mutationCallback=function(a){a.forEach(c)}),d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver,d!==b&&(this.propertyObserver&&(delete this.propertyObserver,this.propertyObserver=null),this.propertyObserver=new d(this.mutationCallback),this.propertyObserver.observe(a.get(0),{attributes:!0,subtree:!1}))},triggerSelect:function(b){var c=a.Event("select2-selecting",{val:this.id(b),object:b});return this.opts.element.trigger(c),!c.isDefaultPrevented()},triggerChange:function(b){b=b||{},b=a.extend({},b,{type:"change",val:this.val()}),this.opts.element.data("select2-change-triggered",!0),this.opts.element.trigger(b),this.opts.element.data("select2-change-triggered",!1),this.opts.element.click(),this.opts.blurOnChange&&this.opts.element.blur()},isInterfaceEnabled:function(){return this.enabledInterface===!0},enableInterface:function(){var a=this._enabled&&!this._readonly,b=!a;return a===this.enabledInterface?!1:(this.container.toggleClass("select2-container-disabled",b),this.close(),this.enabledInterface=a,!0)},enable:function(a){a===b&&(a=!0),this._enabled!==a&&(this._enabled=a,this.opts.element.prop("disabled",!a),this.enableInterface())},disable:function(){this.enable(!1)},readonly:function(a){return a===b&&(a=!1),this._readonly===a?!1:(this._readonly=a,this.opts.element.prop("readonly",a),this.enableInterface(),!0)},opened:function(){return this.container.hasClass("select2-dropdown-open")},positionDropdown:function(){var t,u,v,w,x,b=this.dropdown,c=this.container.offset(),d=this.container.outerHeight(!1),e=this.container.outerWidth(!1),f=b.outerHeight(!1),g=a(window),h=g.width(),i=g.height(),j=g.scrollLeft()+h,l=g.scrollTop()+i,m=c.top+d,n=c.left,o=l>=m+f,p=c.top-f>=this.body().scrollTop(),q=b.outerWidth(!1),r=j>=n+q,s=b.hasClass("select2-drop-above");s?(u=!0,!p&&o&&(v=!0,u=!1)):(u=!1,!o&&p&&(v=!0,u=!0)),v&&(b.hide(),c=this.container.offset(),d=this.container.outerHeight(!1),e=this.container.outerWidth(!1),f=b.outerHeight(!1),j=g.scrollLeft()+h,l=g.scrollTop()+i,m=c.top+d,n=c.left,q=b.outerWidth(!1),r=j>=n+q,b.show()),this.opts.dropdownAutoWidth?(x=a(".select2-results",b)[0],b.addClass("select2-drop-auto-width"),b.css("width",""),q=b.outerWidth(!1)+(x.scrollHeight===x.clientHeight?0:k.width),q>e?e=q:q=e,r=j>=n+q):this.container.removeClass("select2-drop-auto-width"),"static"!==this.body().css("position")&&(t=this.body().offset(),m-=t.top,n-=t.left),r||(n=c.left+e-q),w={left:n,width:e},u?(w.bottom=i-c.top,w.top="auto",this.container.addClass("select2-drop-above"),b.addClass("select2-drop-above")):(w.top=m,w.bottom="auto",this.container.removeClass("select2-drop-above"),b.removeClass("select2-drop-above")),w=a.extend(w,K(this.opts.dropdownCss)),b.css(w)},shouldOpen:function(){var b;return this.opened()?!1:this._enabled===!1||this._readonly===!0?!1:(b=a.Event("select2-opening"),this.opts.element.trigger(b),!b.isDefaultPrevented())},clearDropdownAlignmentPreference:function(){this.container.removeClass("select2-drop-above"),this.dropdown.removeClass("select2-drop-above")},open:function(){return this.shouldOpen()?(this.opening(),!0):!1},opening:function(){var f,b=this.containerId,c="scroll."+b,d="resize."+b,e="orientationchange."+b;this.container.addClass("select2-dropdown-open").addClass("select2-container-active"),this.clearDropdownAlignmentPreference(),this.dropdown[0]!==this.body().children().last()[0]&&this.dropdown.detach().appendTo(this.body()),f=a("#select2-drop-mask"),0==f.length&&(f=a(document.createElement("div")),f.attr("id","select2-drop-mask").attr("class","select2-drop-mask"),f.hide(),f.appendTo(this.body()),f.on("mousedown touchstart click",function(b){var d,c=a("#select2-drop");c.length>0&&(d=c.data("select2"),d.opts.selectOnBlur&&d.selectHighlighted({noFocus:!0}),d.close({focus:!0}),b.preventDefault(),b.stopPropagation())})),this.dropdown.prev()[0]!==f[0]&&this.dropdown.before(f),a("#select2-drop").removeAttr("id"),this.dropdown.attr("id","select2-drop"),f.show(),this.positionDropdown(),this.dropdown.show(),this.positionDropdown(),this.dropdown.addClass("select2-drop-active");var g=this;this.container.parents().add(window).each(function(){a(this).on(d+" "+c+" "+e,function(){g.positionDropdown()})})},close:function(){if(this.opened()){var b=this.containerId,c="scroll."+b,d="resize."+b,e="orientationchange."+b;this.container.parents().add(window).each(function(){a(this).off(c).off(d).off(e)}),this.clearDropdownAlignmentPreference(),a("#select2-drop-mask").hide(),this.dropdown.removeAttr("id"),this.dropdown.hide(),this.container.removeClass("select2-dropdown-open").removeClass("select2-container-active"),this.results.empty(),this.clearSearch(),this.search.removeClass("select2-active"),this.opts.element.trigger(a.Event("select2-close"))}},externalSearch:function(a){this.open(),this.search.val(a),this.updateResults(!1)},clearSearch:function(){},getMaximumSelectionSize:function(){return K(this.opts.maximumSelectionSize)},ensureHighlightVisible:function(){var c,d,e,f,g,h,i,b=this.results;if(d=this.highlight(),!(0>d)){if(0==d)return b.scrollTop(0),void 0;c=this.findHighlightableChoices().find(".select2-result-label"),e=a(c[d]),f=e.offset().top+e.outerHeight(!0),d===c.length-1&&(i=b.find("li.select2-more-results"),i.length>0&&(f=i.offset().top+i.outerHeight(!0))),g=b.offset().top+b.outerHeight(!0),f>g&&b.scrollTop(b.scrollTop()+(f-g)),h=e.offset().top-b.offset().top,0>h&&"none"!=e.css("display")&&b.scrollTop(b.scrollTop()+h)}},findHighlightableChoices:function(){return this.results.find(".select2-result-selectable:not(.select2-disabled, .select2-selected)")},moveHighlight:function(b){for(var c=this.findHighlightableChoices(),d=this.highlight();d>-1&&d<c.length;){d+=b;var e=a(c[d]);if(e.hasClass("select2-result-selectable")&&!e.hasClass("select2-disabled")&&!e.hasClass("select2-selected")){this.highlight(d);break}}},highlight:function(b){var d,e,c=this.findHighlightableChoices();return 0===arguments.length?o(c.filter(".select2-highlighted")[0],c.get()):(b>=c.length&&(b=c.length-1),0>b&&(b=0),this.removeHighlight(),d=a(c[b]),d.addClass("select2-highlighted"),this.ensureHighlightVisible(),e=d.data("select2-data"),e&&this.opts.element.trigger({type:"select2-highlight",val:this.id(e),choice:e}),void 0)},removeHighlight:function(){this.results.find(".select2-highlighted").removeClass("select2-highlighted")},countSelectableResults:function(){return this.findHighlightableChoices().length},highlightUnderEvent:function(b){var c=a(b.target).closest(".select2-result-selectable");if(c.length>0&&!c.is(".select2-highlighted")){var d=this.findHighlightableChoices();this.highlight(d.index(c))}else 0==c.length&&this.removeHighlight()},loadMoreIfNeeded:function(){var c,a=this.results,b=a.find("li.select2-more-results"),d=this.resultsPage+1,e=this,f=this.search.val(),g=this.context;0!==b.length&&(c=b.offset().top-a.offset().top-a.height(),c<=this.opts.loadMorePadding&&(b.addClass("select2-active"),this.opts.query({element:this.opts.element,term:f,page:d,context:g,matcher:this.opts.matcher,callback:this.bind(function(c){e.opened()&&(e.opts.populateResults.call(this,a,c.results,{term:f,page:d,context:g}),e.postprocessResults(c,!1,!1),c.more===!0?(b.detach().appendTo(a).text(e.opts.formatLoadMore(d+1)),window.setTimeout(function(){e.loadMoreIfNeeded()},10)):b.remove(),e.positionDropdown(),e.resultsPage=d,e.context=c.context,this.opts.element.trigger({type:"select2-loaded",items:c}))})})))},tokenize:function(){},updateResults:function(c){function m(){d.removeClass("select2-active"),h.positionDropdown()}function n(a){e.html(a),m()}var g,i,l,d=this.search,e=this.results,f=this.opts,h=this,j=d.val(),k=a.data(this.container,"select2-last-term");if((c===!0||!k||!q(j,k))&&(a.data(this.container,"select2-last-term",j),c===!0||this.showSearchInput!==!1&&this.opened())){l=++this.queryCount;var o=this.getMaximumSelectionSize();if(o>=1&&(g=this.data(),a.isArray(g)&&g.length>=o&&J(f.formatSelectionTooBig,"formatSelectionTooBig")))return n("<li class='select2-selection-limit'>"+f.formatSelectionTooBig(o)+"</li>"),void 0;if(d.val().length<f.minimumInputLength)return J(f.formatInputTooShort,"formatInputTooShort")?n("<li class='select2-no-results'>"+f.formatInputTooShort(d.val(),f.minimumInputLength)+"</li>"):n(""),c&&this.showSearch&&this.showSearch(!0),void 0; +if(f.maximumInputLength&&d.val().length>f.maximumInputLength)return J(f.formatInputTooLong,"formatInputTooLong")?n("<li class='select2-no-results'>"+f.formatInputTooLong(d.val(),f.maximumInputLength)+"</li>"):n(""),void 0;f.formatSearching&&0===this.findHighlightableChoices().length&&n("<li class='select2-searching'>"+f.formatSearching()+"</li>"),d.addClass("select2-active"),this.removeHighlight(),i=this.tokenize(),i!=b&&null!=i&&d.val(i),this.resultsPage=1,f.query({element:f.element,term:d.val(),page:this.resultsPage,context:null,matcher:f.matcher,callback:this.bind(function(g){var i;if(l==this.queryCount){if(!this.opened())return this.search.removeClass("select2-active"),void 0;if(this.context=g.context===b?null:g.context,this.opts.createSearchChoice&&""!==d.val()&&(i=this.opts.createSearchChoice.call(h,d.val(),g.results),i!==b&&null!==i&&h.id(i)!==b&&null!==h.id(i)&&0===a(g.results).filter(function(){return q(h.id(this),h.id(i))}).length&&g.results.unshift(i)),0===g.results.length&&J(f.formatNoMatches,"formatNoMatches"))return n("<li class='select2-no-results'>"+f.formatNoMatches(d.val())+"</li>"),void 0;e.empty(),h.opts.populateResults.call(this,e,g.results,{term:d.val(),page:this.resultsPage,context:null}),g.more===!0&&J(f.formatLoadMore,"formatLoadMore")&&(e.append("<li class='select2-more-results'>"+h.opts.escapeMarkup(f.formatLoadMore(this.resultsPage))+"</li>"),window.setTimeout(function(){h.loadMoreIfNeeded()},10)),this.postprocessResults(g,c),m(),this.opts.element.trigger({type:"select2-loaded",items:g})}})})}},cancel:function(){this.close()},blur:function(){this.opts.selectOnBlur&&this.selectHighlighted({noFocus:!0}),this.close(),this.container.removeClass("select2-container-active"),this.search[0]===document.activeElement&&this.search.blur(),this.clearSearch(),this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus")},focusSearch:function(){y(this.search)},selectHighlighted:function(a){var b=this.highlight(),c=this.results.find(".select2-highlighted"),d=c.closest(".select2-result").data("select2-data");d?(this.highlight(b),this.onSelect(d,a)):a&&a.noFocus&&this.close()},getPlaceholder:function(){var a;return this.opts.element.attr("placeholder")||this.opts.element.attr("data-placeholder")||this.opts.element.data("placeholder")||this.opts.placeholder||((a=this.getPlaceholderOption())!==b?a.text():b)},getPlaceholderOption:function(){if(this.select){var a=this.select.children("option").first();if(this.opts.placeholderOption!==b)return"first"===this.opts.placeholderOption&&a||"function"==typeof this.opts.placeholderOption&&this.opts.placeholderOption(this.select);if(""===a.text()&&""===a.val())return a}},initContainerWidth:function(){function c(){var c,d,e,f,g,h;if("off"===this.opts.width)return null;if("element"===this.opts.width)return 0===this.opts.element.outerWidth(!1)?"auto":this.opts.element.outerWidth(!1)+"px";if("copy"===this.opts.width||"resolve"===this.opts.width){if(c=this.opts.element.attr("style"),c!==b)for(d=c.split(";"),f=0,g=d.length;g>f;f+=1)if(h=d[f].replace(/\s/g,""),e=h.match(/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i),null!==e&&e.length>=1)return e[1];return"resolve"===this.opts.width?(c=this.opts.element.css("width"),c.indexOf("%")>0?c:0===this.opts.element.outerWidth(!1)?"auto":this.opts.element.outerWidth(!1)+"px"):null}return a.isFunction(this.opts.width)?this.opts.width():this.opts.width}var d=c.call(this);null!==d&&this.container.css("width",d)}}),e=N(d,{createContainer:function(){var b=a(document.createElement("div")).attr({"class":"select2-container"}).html(["<a href='javascript:void(0)' onclick='return false;' class='select2-choice' tabindex='-1'>"," <span class='select2-chosen'> </span><abbr class='select2-search-choice-close'></abbr>"," <span class='select2-arrow'><b></b></span>","</a>","<input class='select2-focusser select2-offscreen' type='text'/>","<div class='select2-drop select2-display-none'>"," <div class='select2-search'>"," <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'/>"," </div>"," <ul class='select2-results'>"," </ul>","</div>"].join(""));return b},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.focusser.prop("disabled",!this.isInterfaceEnabled())},opening:function(){var c,d,e;this.opts.minimumResultsForSearch>=0&&this.showSearch(!0),this.parent.opening.apply(this,arguments),this.showSearchInput!==!1&&this.search.val(this.focusser.val()),this.search.focus(),c=this.search.get(0),c.createTextRange?(d=c.createTextRange(),d.collapse(!1),d.select()):c.setSelectionRange&&(e=this.search.val().length,c.setSelectionRange(e,e)),""===this.search.val()&&this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.search.select()),this.focusser.prop("disabled",!0).val(""),this.updateResults(!0),this.opts.element.trigger(a.Event("select2-open"))},close:function(a){this.opened()&&(this.parent.close.apply(this,arguments),a=a||{focus:!0},this.focusser.removeAttr("disabled"),a.focus&&this.focusser.focus())},focus:function(){this.opened()?this.close():(this.focusser.removeAttr("disabled"),this.focusser.focus())},isFocused:function(){return this.container.hasClass("select2-container-active")},cancel:function(){this.parent.cancel.apply(this,arguments),this.focusser.removeAttr("disabled"),this.focusser.focus()},destroy:function(){a("label[for='"+this.focusser.attr("id")+"']").attr("for",this.opts.element.attr("id")),this.parent.destroy.apply(this,arguments)},initContainer:function(){var b,d=this.container,e=this.dropdown;this.opts.minimumResultsForSearch<0?this.showSearch(!1):this.showSearch(!0),this.selection=b=d.find(".select2-choice"),this.focusser=d.find(".select2-focusser"),this.focusser.attr("id","s2id_autogen"+g()),a("label[for='"+this.opts.element.attr("id")+"']").attr("for",this.focusser.attr("id")),this.focusser.attr("tabindex",this.elementTabIndex),this.search.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()){if(a.which===c.PAGE_UP||a.which===c.PAGE_DOWN)return A(a),void 0;switch(a.which){case c.UP:case c.DOWN:return this.moveHighlight(a.which===c.UP?-1:1),A(a),void 0;case c.ENTER:return this.selectHighlighted(),A(a),void 0;case c.TAB:return this.selectHighlighted({noFocus:!0}),void 0;case c.ESC:return this.cancel(a),A(a),void 0}}})),this.search.on("blur",this.bind(function(){document.activeElement===this.body().get(0)&&window.setTimeout(this.bind(function(){this.search.focus()}),0)})),this.focusser.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()&&a.which!==c.TAB&&!c.isControl(a)&&!c.isFunctionKey(a)&&a.which!==c.ESC){if(this.opts.openOnEnter===!1&&a.which===c.ENTER)return A(a),void 0;if(a.which==c.DOWN||a.which==c.UP||a.which==c.ENTER&&this.opts.openOnEnter){if(a.altKey||a.ctrlKey||a.shiftKey||a.metaKey)return;return this.open(),A(a),void 0}return a.which==c.DELETE||a.which==c.BACKSPACE?(this.opts.allowClear&&this.clear(),A(a),void 0):void 0}})),t(this.focusser),this.focusser.on("keyup-change input",this.bind(function(a){if(this.opts.minimumResultsForSearch>=0){if(a.stopPropagation(),this.opened())return;this.open()}})),b.on("mousedown","abbr",this.bind(function(a){this.isInterfaceEnabled()&&(this.clear(),B(a),this.close(),this.selection.focus())})),b.on("mousedown",this.bind(function(b){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.opened()?this.close():this.isInterfaceEnabled()&&this.open(),A(b)})),e.on("mousedown",this.bind(function(){this.search.focus()})),b.on("focus",this.bind(function(a){A(a)})),this.focusser.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})).on("blur",this.bind(function(){this.opened()||(this.container.removeClass("select2-container-active"),this.opts.element.trigger(a.Event("select2-blur")))})),this.search.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.setPlaceholder()},clear:function(b){var c=this.selection.data("select2-data");if(c){var d=a.Event("select2-clearing");if(this.opts.element.trigger(d),d.isDefaultPrevented())return;var e=this.getPlaceholderOption();this.opts.element.val(e?e.val():""),this.selection.find(".select2-chosen").empty(),this.selection.removeData("select2-data"),this.setPlaceholder(),b!==!1&&(this.opts.element.trigger({type:"select2-removed",val:this.id(c),choice:c}),this.triggerChange({removed:c}))}},initSelection:function(){if(this.isPlaceholderOptionSelected())this.updateSelection(null),this.close(),this.setPlaceholder();else{var c=this;this.opts.initSelection.call(null,this.opts.element,function(a){a!==b&&null!==a&&(c.updateSelection(a),c.close(),c.setPlaceholder())})}},isPlaceholderOptionSelected:function(){var a;return this.getPlaceholder()?(a=this.getPlaceholderOption())!==b&&a.prop("selected")||""===this.opts.element.val()||this.opts.element.val()===b||null===this.opts.element.val():!1},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=a.find("option").filter(function(){return this.selected});b(c.optionToData(d))}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=c.val(),f=null;b.query({matcher:function(a,c,d){var g=q(e,b.id(d));return g&&(f=d),g},callback:a.isFunction(d)?function(){d(f)}:a.noop})}),b},getPlaceholder:function(){return this.select&&this.getPlaceholderOption()===b?b:this.parent.getPlaceholder.apply(this,arguments)},setPlaceholder:function(){var a=this.getPlaceholder();if(this.isPlaceholderOptionSelected()&&a!==b){if(this.select&&this.getPlaceholderOption()===b)return;this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(a)),this.selection.addClass("select2-default"),this.container.removeClass("select2-allowclear")}},postprocessResults:function(a,b,c){var d=0,e=this;if(this.findHighlightableChoices().each2(function(a,b){return q(e.id(b.data("select2-data")),e.opts.element.val())?(d=a,!1):void 0}),c!==!1&&(b===!0&&d>=0?this.highlight(d):this.highlight(0)),b===!0){var g=this.opts.minimumResultsForSearch;g>=0&&this.showSearch(L(a.results)>=g)}},showSearch:function(b){this.showSearchInput!==b&&(this.showSearchInput=b,this.dropdown.find(".select2-search").toggleClass("select2-search-hidden",!b),this.dropdown.find(".select2-search").toggleClass("select2-offscreen",!b),a(this.dropdown,this.container).toggleClass("select2-with-searchbox",b))},onSelect:function(a,b){if(this.triggerSelect(a)){var c=this.opts.element.val(),d=this.data();this.opts.element.val(this.id(a)),this.updateSelection(a),this.opts.element.trigger({type:"select2-selected",val:this.id(a),choice:a}),this.nextSearchTerm=this.opts.nextSearchTerm(a,this.search.val()),this.close(),b&&b.noFocus||this.focusser.focus(),q(c,this.id(a))||this.triggerChange({added:a,removed:d})}},updateSelection:function(a){var d,e,c=this.selection.find(".select2-chosen");this.selection.data("select2-data",a),c.empty(),null!==a&&(d=this.opts.formatSelection(a,c,this.opts.escapeMarkup)),d!==b&&c.append(d),e=this.opts.formatSelectionCssClass(a,c),e!==b&&c.addClass(e),this.selection.removeClass("select2-default"),this.opts.allowClear&&this.getPlaceholder()!==b&&this.container.addClass("select2-allowclear")},val:function(){var a,c=!1,d=null,e=this,f=this.data();if(0===arguments.length)return this.opts.element.val();if(a=arguments[0],arguments.length>1&&(c=arguments[1]),this.select)this.select.val(a).find("option").filter(function(){return this.selected}).each2(function(a,b){return d=e.optionToData(b),!1}),this.updateSelection(d),this.setPlaceholder(),c&&this.triggerChange({added:d,removed:f});else{if(!a&&0!==a)return this.clear(c),void 0;if(this.opts.initSelection===b)throw new Error("cannot call val() if initSelection() is not defined");this.opts.element.val(a),this.opts.initSelection(this.opts.element,function(a){e.opts.element.val(a?e.id(a):""),e.updateSelection(a),e.setPlaceholder(),c&&e.triggerChange({added:a,removed:f})})}},clearSearch:function(){this.search.val(""),this.focusser.val("")},data:function(a){var c,d=!1;return 0===arguments.length?(c=this.selection.data("select2-data"),c==b&&(c=null),c):(arguments.length>1&&(d=arguments[1]),a?(c=this.data(),this.opts.element.val(a?this.id(a):""),this.updateSelection(a),d&&this.triggerChange({added:a,removed:c})):this.clear(d),void 0)}}),f=N(d,{createContainer:function(){var b=a(document.createElement("div")).attr({"class":"select2-container select2-container-multi"}).html(["<ul class='select2-choices'>"," <li class='select2-search-field'>"," <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'>"," </li>","</ul>","<div class='select2-drop select2-drop-multi select2-display-none'>"," <ul class='select2-results'>"," </ul>","</div>"].join(""));return b},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=[];a.find("option").filter(function(){return this.selected}).each2(function(a,b){d.push(c.optionToData(b))}),b(d)}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=r(c.val(),b.separator),f=[];b.query({matcher:function(c,d,g){var h=a.grep(e,function(a){return q(a,b.id(g))}).length;return h&&f.push(g),h},callback:a.isFunction(d)?function(){for(var a=[],c=0;c<e.length;c++)for(var g=e[c],h=0;h<f.length;h++){var i=f[h];if(q(g,b.id(i))){a.push(i),f.splice(h,1);break}}d(a)}:a.noop})}),b},selectChoice:function(a){var b=this.container.find(".select2-search-choice-focus");b.length&&a&&a[0]==b[0]||(b.length&&this.opts.element.trigger("choice-deselected",b),b.removeClass("select2-search-choice-focus"),a&&a.length&&(this.close(),a.addClass("select2-search-choice-focus"),this.opts.element.trigger("choice-selected",a)))},destroy:function(){a("label[for='"+this.search.attr("id")+"']").attr("for",this.opts.element.attr("id")),this.parent.destroy.apply(this,arguments)},initContainer:function(){var d,b=".select2-choices";this.searchContainer=this.container.find(".select2-search-field"),this.selection=d=this.container.find(b);var e=this;this.selection.on("click",".select2-search-choice:not(.select2-locked)",function(){e.search[0].focus(),e.selectChoice(a(this))}),this.search.attr("id","s2id_autogen"+g()),a("label[for='"+this.opts.element.attr("id")+"']").attr("for",this.search.attr("id")),this.search.on("input paste",this.bind(function(){this.isInterfaceEnabled()&&(this.opened()||this.open())})),this.search.attr("tabindex",this.elementTabIndex),this.keydowns=0,this.search.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()){++this.keydowns;var b=d.find(".select2-search-choice-focus"),e=b.prev(".select2-search-choice:not(.select2-locked)"),f=b.next(".select2-search-choice:not(.select2-locked)"),g=z(this.search);if(b.length&&(a.which==c.LEFT||a.which==c.RIGHT||a.which==c.BACKSPACE||a.which==c.DELETE||a.which==c.ENTER)){var h=b;return a.which==c.LEFT&&e.length?h=e:a.which==c.RIGHT?h=f.length?f:null:a.which===c.BACKSPACE?(this.unselect(b.first()),this.search.width(10),h=e.length?e:f):a.which==c.DELETE?(this.unselect(b.first()),this.search.width(10),h=f.length?f:null):a.which==c.ENTER&&(h=null),this.selectChoice(h),A(a),h&&h.length||this.open(),void 0}if((a.which===c.BACKSPACE&&1==this.keydowns||a.which==c.LEFT)&&0==g.offset&&!g.length)return this.selectChoice(d.find(".select2-search-choice:not(.select2-locked)").last()),A(a),void 0;if(this.selectChoice(null),this.opened())switch(a.which){case c.UP:case c.DOWN:return this.moveHighlight(a.which===c.UP?-1:1),A(a),void 0;case c.ENTER:return this.selectHighlighted(),A(a),void 0;case c.TAB:return this.selectHighlighted({noFocus:!0}),this.close(),void 0;case c.ESC:return this.cancel(a),A(a),void 0}if(a.which!==c.TAB&&!c.isControl(a)&&!c.isFunctionKey(a)&&a.which!==c.BACKSPACE&&a.which!==c.ESC){if(a.which===c.ENTER){if(this.opts.openOnEnter===!1)return;if(a.altKey||a.ctrlKey||a.shiftKey||a.metaKey)return}this.open(),(a.which===c.PAGE_UP||a.which===c.PAGE_DOWN)&&A(a),a.which===c.ENTER&&A(a)}}})),this.search.on("keyup",this.bind(function(){this.keydowns=0,this.resizeSearch()})),this.search.on("blur",this.bind(function(b){this.container.removeClass("select2-container-active"),this.search.removeClass("select2-focused"),this.selectChoice(null),this.opened()||this.clearSearch(),b.stopImmediatePropagation(),this.opts.element.trigger(a.Event("select2-blur"))})),this.container.on("click",b,this.bind(function(b){this.isInterfaceEnabled()&&(a(b.target).closest(".select2-search-choice").length>0||(this.selectChoice(null),this.clearPlaceholder(),this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.open(),this.focusSearch(),b.preventDefault()))})),this.container.on("focus",b,this.bind(function(){this.isInterfaceEnabled()&&(this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"),this.clearPlaceholder())})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.clearSearch()},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.search.prop("disabled",!this.isInterfaceEnabled())},initSelection:function(){if(""===this.opts.element.val()&&""===this.opts.element.text()&&(this.updateSelection([]),this.close(),this.clearSearch()),this.select||""!==this.opts.element.val()){var c=this;this.opts.initSelection.call(null,this.opts.element,function(a){a!==b&&null!==a&&(c.updateSelection(a),c.close(),c.clearSearch())})}},clearSearch:function(){var a=this.getPlaceholder(),c=this.getMaxSearchWidth();a!==b&&0===this.getVal().length&&this.search.hasClass("select2-focused")===!1?(this.search.val(a).addClass("select2-default"),this.search.width(c>0?c:this.container.css("width"))):this.search.val("").width(10)},clearPlaceholder:function(){this.search.hasClass("select2-default")&&this.search.val("").removeClass("select2-default")},opening:function(){this.clearPlaceholder(),this.resizeSearch(),this.parent.opening.apply(this,arguments),this.focusSearch(),this.updateResults(!0),this.search.focus(),this.opts.element.trigger(a.Event("select2-open"))},close:function(){this.opened()&&this.parent.close.apply(this,arguments)},focus:function(){this.close(),this.search.focus()},isFocused:function(){return this.search.hasClass("select2-focused")},updateSelection:function(b){var c=[],d=[],e=this;a(b).each(function(){o(e.id(this),c)<0&&(c.push(e.id(this)),d.push(this))}),b=d,this.selection.find(".select2-search-choice").remove(),a(b).each(function(){e.addSelectedChoice(this)}),e.postprocessResults()},tokenize:function(){var a=this.search.val();a=this.opts.tokenizer.call(this,a,this.data(),this.bind(this.onSelect),this.opts),null!=a&&a!=b&&(this.search.val(a),a.length>0&&this.open())},onSelect:function(a,b){this.triggerSelect(a)&&(this.addSelectedChoice(a),this.opts.element.trigger({type:"selected",val:this.id(a),choice:a}),(this.select||!this.opts.closeOnSelect)&&this.postprocessResults(a,!1,this.opts.closeOnSelect===!0),this.opts.closeOnSelect?(this.close(),this.search.width(10)):this.countSelectableResults()>0?(this.search.width(10),this.resizeSearch(),this.getMaximumSelectionSize()>0&&this.val().length>=this.getMaximumSelectionSize()&&this.updateResults(!0),this.positionDropdown()):(this.close(),this.search.width(10)),this.triggerChange({added:a}),b&&b.noFocus||this.focusSearch())},cancel:function(){this.close(),this.focusSearch()},addSelectedChoice:function(c){var j,k,d=!c.locked,e=a("<li class='select2-search-choice'> <div></div> <a href='#' onclick='return false;' class='select2-search-choice-close' tabindex='-1'></a></li>"),f=a("<li class='select2-search-choice select2-locked'><div></div></li>"),g=d?e:f,h=this.id(c),i=this.getVal();j=this.opts.formatSelection(c,g.find("div"),this.opts.escapeMarkup),j!=b&&g.find("div").replaceWith("<div>"+j+"</div>"),k=this.opts.formatSelectionCssClass(c,g.find("div")),k!=b&&g.addClass(k),d&&g.find(".select2-search-choice-close").on("mousedown",A).on("click dblclick",this.bind(function(b){this.isInterfaceEnabled()&&(a(b.target).closest(".select2-search-choice").fadeOut("fast",this.bind(function(){this.unselect(a(b.target)),this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"),this.close(),this.focusSearch()})).dequeue(),A(b))})).on("focus",this.bind(function(){this.isInterfaceEnabled()&&(this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"))})),g.data("select2-data",c),g.insertBefore(this.searchContainer),i.push(h),this.setVal(i)},unselect:function(b){var d,e,c=this.getVal();if(b=b.closest(".select2-search-choice"),0===b.length)throw"Invalid argument: "+b+". Must be .select2-search-choice";if(d=b.data("select2-data")){for(;(e=o(this.id(d),c))>=0;)c.splice(e,1),this.setVal(c),this.select&&this.postprocessResults();var f=a.Event("select2-removing");f.val=this.id(d),f.choice=d,this.opts.element.trigger(f),f.isDefaultPrevented()||(b.remove(),this.opts.element.trigger({type:"select2-removed",val:this.id(d),choice:d}),this.triggerChange({removed:d}))}},postprocessResults:function(a,b,c){var d=this.getVal(),e=this.results.find(".select2-result"),f=this.results.find(".select2-result-with-children"),g=this;e.each2(function(a,b){var c=g.id(b.data("select2-data"));o(c,d)>=0&&(b.addClass("select2-selected"),b.find(".select2-result-selectable").addClass("select2-selected"))}),f.each2(function(a,b){b.is(".select2-result-selectable")||0!==b.find(".select2-result-selectable:not(.select2-selected)").length||b.addClass("select2-selected")}),-1==this.highlight()&&c!==!1&&g.highlight(0),!this.opts.createSearchChoice&&!e.filter(".select2-result:not(.select2-selected)").length>0&&(!a||a&&!a.more&&0===this.results.find(".select2-no-results").length)&&J(g.opts.formatNoMatches,"formatNoMatches")&&this.results.append("<li class='select2-no-results'>"+g.opts.formatNoMatches(g.search.val())+"</li>")},getMaxSearchWidth:function(){return this.selection.width()-s(this.search)},resizeSearch:function(){var a,b,c,d,e,f=s(this.search);a=C(this.search)+10,b=this.search.offset().left,c=this.selection.width(),d=this.selection.offset().left,e=c-(b-d)-f,a>e&&(e=c-f),40>e&&(e=c-f),0>=e&&(e=a),this.search.width(Math.floor(e))},getVal:function(){var a;return this.select?(a=this.select.val(),null===a?[]:a):(a=this.opts.element.val(),r(a,this.opts.separator))},setVal:function(b){var c;this.select?this.select.val(b):(c=[],a(b).each(function(){o(this,c)<0&&c.push(this)}),this.opts.element.val(0===c.length?"":c.join(this.opts.separator)))},buildChangeDetails:function(a,b){for(var b=b.slice(0),a=a.slice(0),c=0;c<b.length;c++)for(var d=0;d<a.length;d++)q(this.opts.id(b[c]),this.opts.id(a[d]))&&(b.splice(c,1),c>0&&c--,a.splice(d,1),d--);return{added:b,removed:a}},val:function(c,d){var e,f=this;if(0===arguments.length)return this.getVal();if(e=this.data(),e.length||(e=[]),!c&&0!==c)return this.opts.element.val(""),this.updateSelection([]),this.clearSearch(),d&&this.triggerChange({added:this.data(),removed:e}),void 0;if(this.setVal(c),this.select)this.opts.initSelection(this.select,this.bind(this.updateSelection)),d&&this.triggerChange(this.buildChangeDetails(e,this.data()));else{if(this.opts.initSelection===b)throw new Error("val() cannot be called if initSelection() is not defined");this.opts.initSelection(this.opts.element,function(b){var c=a.map(b,f.id);f.setVal(c),f.updateSelection(b),f.clearSearch(),d&&f.triggerChange(f.buildChangeDetails(e,f.data()))})}this.clearSearch()},onSortStart:function(){if(this.select)throw new Error("Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead.");this.search.width(0),this.searchContainer.hide()},onSortEnd:function(){var b=[],c=this;this.searchContainer.show(),this.searchContainer.appendTo(this.searchContainer.parent()),this.resizeSearch(),this.selection.find(".select2-search-choice").each(function(){b.push(c.opts.id(a(this).data("select2-data")))}),this.setVal(b),this.triggerChange()},data:function(b,c){var e,f,d=this;return 0===arguments.length?this.selection.find(".select2-search-choice").map(function(){return a(this).data("select2-data")}).get():(f=this.data(),b||(b=[]),e=a.map(b,function(a){return d.opts.id(a)}),this.setVal(e),this.updateSelection(b),this.clearSearch(),c&&this.triggerChange(this.buildChangeDetails(f,this.data())),void 0)}}),a.fn.select2=function(){var d,g,h,i,j,c=Array.prototype.slice.call(arguments,0),k=["val","destroy","opened","open","close","focus","isFocused","container","dropdown","onSortStart","onSortEnd","enable","disable","readonly","positionDropdown","data","search"],l=["opened","isFocused","container","dropdown"],m=["val","data"],n={search:"externalSearch"};return this.each(function(){if(0===c.length||"object"==typeof c[0])d=0===c.length?{}:a.extend({},c[0]),d.element=a(this),"select"===d.element.get(0).tagName.toLowerCase()?j=d.element.prop("multiple"):(j=d.multiple||!1,"tags"in d&&(d.multiple=j=!0)),g=j?new f:new e,g.init(d);else{if("string"!=typeof c[0])throw"Invalid arguments to select2 plugin: "+c;if(o(c[0],k)<0)throw"Unknown method: "+c[0];if(i=b,g=a(this).data("select2"),g===b)return;if(h=c[0],"container"===h?i=g.container:"dropdown"===h?i=g.dropdown:(n[h]&&(h=n[h]),i=g[h].apply(g,c.slice(1))),o(c[0],l)>=0||o(c[0],m)&&1==c.length)return!1}}),i===b?this:i},a.fn.select2.defaults={width:"copy",loadMorePadding:0,closeOnSelect:!0,openOnEnter:!0,containerCss:{},dropdownCss:{},containerCssClass:"",dropdownCssClass:"",formatResult:function(a,b,c,d){var e=[];return E(a.text,c.term,e,d),e.join("")},formatSelection:function(a,c,d){return a?d(a.text):b},sortResults:function(a){return a},formatResultCssClass:function(){return b},formatSelectionCssClass:function(){return b},formatNoMatches:function(){return"No matches found"},formatInputTooShort:function(a,b){var c=b-a.length;return"Please enter "+c+" more character"+(1==c?"":"s")},formatInputTooLong:function(a,b){var c=a.length-b;return"Please delete "+c+" character"+(1==c?"":"s")},formatSelectionTooBig:function(a){return"You can only select "+a+" item"+(1==a?"":"s")},formatLoadMore:function(){return"Loading more results..."},formatSearching:function(){return"Searching..."},minimumResultsForSearch:0,minimumInputLength:0,maximumInputLength:null,maximumSelectionSize:0,id:function(a){return a.id},matcher:function(a,b){return n(""+b).toUpperCase().indexOf(n(""+a).toUpperCase())>=0},separator:",",tokenSeparators:[],tokenizer:M,escapeMarkup:F,blurOnChange:!1,selectOnBlur:!1,adaptContainerCssClass:function(a){return a},adaptDropdownCssClass:function(){return null},nextSearchTerm:function(){return b}},a.fn.select2.ajaxDefaults={transport:a.ajax,params:{type:"GET",cache:!1,dataType:"json"}},window.Select2={query:{ajax:G,local:H,tags:I},util:{debounce:v,markMatch:E,escapeMarkup:F,stripDiacritics:n},"class":{"abstract":d,single:e,multi:f}}}}(jQuery);
\ No newline at end of file diff --git a/web/js/select2/select2.png b/web/js/select2/select2.png Binary files differnew file mode 100644 index 000000000..1d804ffb9 --- /dev/null +++ b/web/js/select2/select2.png diff --git a/web/js/select2/select2_locale_ar.js b/web/js/select2/select2_locale_ar.js new file mode 100644 index 000000000..5ce010631 --- /dev/null +++ b/web/js/select2/select2_locale_ar.js @@ -0,0 +1,17 @@ +/** + * Select2 Arabic translation. + * + * Author: Your Name <amedhat3@gmail.com> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "لا توجد نتائج"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "من فضلك أدخل " + n + " حروف أكثر"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "من فضلك أحذف " + n + " حروف"; }, + formatSelectionTooBig: function (limit) { return "يمكنك ان تختار " + limit + " أختيارات فقط"; }, + formatLoadMore: function (pageNumber) { return "تحمل المذيد من النتائج ..."; }, + formatSearching: function () { return "جاري البحث ..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_bg.js b/web/js/select2/select2_locale_bg.js new file mode 100644 index 000000000..2d8b9ca2b --- /dev/null +++ b/web/js/select2/select2_locale_bg.js @@ -0,0 +1,17 @@ +/** + * Select2 <Language> translation. + * + * Author: Lubomir Vikev <lubomirvikev@gmail.com> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Няма намерени съвпадения"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Моля въведете още " + n + " символ" + (n == 1 ? "" : "а"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Моля въведете с " + n + " по-малко символ" + (n == 1? "" : "а"); }, + formatSelectionTooBig: function (limit) { return "Можете да направите до " + limit + (limit == 1 ? " избор" : " избора"); }, + formatLoadMore: function (pageNumber) { return "Зареждат се още..."; }, + formatSearching: function () { return "Търсене..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_ca.js b/web/js/select2/select2_locale_ca.js new file mode 100644 index 000000000..bdcdaa798 --- /dev/null +++ b/web/js/select2/select2_locale_ca.js @@ -0,0 +1,17 @@ +/** + * Select2 Catalan translation. + * + * Author: David Planella <david.planella@gmail.com> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "No s'ha trobat cap coincidència"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduïu " + n + " caràcter" + (n == 1 ? "" : "s") + " més"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Introduïu " + n + " caràcter" + (n == 1? "" : "s") + "menys"; }, + formatSelectionTooBig: function (limit) { return "Només podeu seleccionar " + limit + " element" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "S'estan carregant més resultats..."; }, + formatSearching: function () { return "S'està cercant..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_cs.js b/web/js/select2/select2_locale_cs.js new file mode 100644 index 000000000..b3c748c23 --- /dev/null +++ b/web/js/select2/select2_locale_cs.js @@ -0,0 +1,49 @@ +/** + * Select2 Czech translation. + * + * Author: Michal Marek <ahoj@michal-marek.cz> + * Author - sklonovani: David Vallner <david@vallner.net> + */ +(function ($) { + "use strict"; + // use text for the numbers 2 through 4 + var smallNumbers = { + 2: function(masc) { return (masc ? "dva" : "dvě"); }, + 3: function() { return "tři"; }, + 4: function() { return "čtyři"; } + } + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nenalezeny žádné položky"; }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + if (n == 1) { + return "Prosím zadejte ještě jeden znak"; + } else if (n <= 4) { + return "Prosím zadejte ještě další "+smallNumbers[n](true)+" znaky"; + } else { + return "Prosím zadejte ještě dalších "+n+" znaků"; + } + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + if (n == 1) { + return "Prosím zadejte o jeden znak méně"; + } else if (n <= 4) { + return "Prosím zadejte o "+smallNumbers[n](true)+" znaky méně"; + } else { + return "Prosím zadejte o "+n+" znaků méně"; + } + }, + formatSelectionTooBig: function (limit) { + if (limit == 1) { + return "Můžete zvolit jen jednu položku"; + } else if (limit <= 4) { + return "Můžete zvolit maximálně "+smallNumbers[limit](false)+" položky"; + } else { + return "Můžete zvolit maximálně "+limit+" položek"; + } + }, + formatLoadMore: function (pageNumber) { return "Načítají se další výsledky..."; }, + formatSearching: function () { return "Vyhledávání..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_da.js b/web/js/select2/select2_locale_da.js new file mode 100644 index 000000000..dbce3e174 --- /dev/null +++ b/web/js/select2/select2_locale_da.js @@ -0,0 +1,17 @@ +/** + * Select2 Danish translation. + * + * Author: Anders Jenbo <anders@jenbo.dk> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Ingen resultater fundet"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Angiv venligst " + n + " tegn mere"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Angiv venligst " + n + " tegn mindre"; }, + formatSelectionTooBig: function (limit) { return "Du kan kun vælge " + limit + " emne" + (limit === 1 ? "" : "r"); }, + formatLoadMore: function (pageNumber) { return "Indlæser flere resultater…"; }, + formatSearching: function () { return "Søger…"; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_de.js b/web/js/select2/select2_locale_de.js new file mode 100644 index 000000000..01f94ed4f --- /dev/null +++ b/web/js/select2/select2_locale_de.js @@ -0,0 +1,15 @@ +/** + * Select2 German translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Keine Übereinstimmungen gefunden"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Bitte " + n + " Zeichen mehr eingeben"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Bitte " + n + " Zeichen weniger eingeben"; }, + formatSelectionTooBig: function (limit) { return "Sie können nur " + limit + " Eintr" + (limit === 1 ? "ag" : "äge") + " auswählen"; }, + formatLoadMore: function (pageNumber) { return "Lade mehr Ergebnisse..."; }, + formatSearching: function () { return "Suche..."; } + }); +})(jQuery);
\ No newline at end of file diff --git a/web/js/select2/select2_locale_el.js b/web/js/select2/select2_locale_el.js new file mode 100644 index 000000000..36e0f4d91 --- /dev/null +++ b/web/js/select2/select2_locale_el.js @@ -0,0 +1,17 @@ +/** + * Select2 <Language> translation. + * + * Author: Your Name <your@email> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Δεν βρέθηκαν αποτελέσματα"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Παρακαλούμε εισάγετε " + n + " περισσότερο" + (n == 1 ? "" : "υς") + " χαρακτήρ" + (n == 1 ? "α" : "ες"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Παρακαλούμε διαγράψτε " + n + " χαρακτήρ" + (n == 1 ? "α" : "ες"); }, + formatSelectionTooBig: function (limit) { return "Μπορείτε να επιλέξετε μόνο " + limit + " αντικείμεν" + (limit == 1 ? "ο" : "α"); }, + formatLoadMore: function (pageNumber) { return "Φόρτωση περισσότερων..."; }, + formatSearching: function () { return "Αναζήτηση..."; } + }); +})(jQuery);
\ No newline at end of file diff --git a/web/js/select2/select2_locale_en.js.template b/web/js/select2/select2_locale_en.js.template new file mode 100644 index 000000000..f76b37498 --- /dev/null +++ b/web/js/select2/select2_locale_en.js.template @@ -0,0 +1,17 @@ +/** + * Select2 <Language> translation. + * + * Author: Your Name <your@email> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "No matches found"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " more character" + (n == 1 ? "" : "s"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1 ? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Loading more results..."; }, + formatSearching: function () { return "Searching..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_es.js b/web/js/select2/select2_locale_es.js new file mode 100644 index 000000000..241584caa --- /dev/null +++ b/web/js/select2/select2_locale_es.js @@ -0,0 +1,15 @@ +/** + * Select2 Spanish translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "No se encontraron resultados"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Por favor, introduzca " + n + " car" + (n == 1? "á" : "a") + "cter" + (n == 1? "" : "es"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Por favor, elimine " + n + " car" + (n == 1? "á" : "a") + "cter" + (n == 1? "" : "es"); }, + formatSelectionTooBig: function (limit) { return "Sólo puede seleccionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Cargando más resultados..."; }, + formatSearching: function () { return "Buscando..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_et.js b/web/js/select2/select2_locale_et.js new file mode 100644 index 000000000..a4045d22d --- /dev/null +++ b/web/js/select2/select2_locale_et.js @@ -0,0 +1,17 @@ +/** + * Select2 Estonian translation. + * + * Author: Kuldar Kalvik <kuldar@kalvik.ee> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Tulemused puuduvad"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Sisesta " + n + " täht" + (n == 1 ? "" : "e") + " rohkem"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Sisesta " + n + " täht" + (n == 1? "" : "e") + " vähem"; }, + formatSelectionTooBig: function (limit) { return "Saad vaid " + limit + " tulemus" + (limit == 1 ? "e" : "t") + " valida"; }, + formatLoadMore: function (pageNumber) { return "Laen tulemusi.."; }, + formatSearching: function () { return "Otsin.."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_eu.js b/web/js/select2/select2_locale_eu.js new file mode 100644 index 000000000..05665f5fc --- /dev/null +++ b/web/js/select2/select2_locale_eu.js @@ -0,0 +1,43 @@ +/** + * Select2 Basque translation. + * + * Author: Julen Ruiz Aizpuru <julenx at gmail dot com> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { + return "Ez da bat datorrenik aurkitu"; + }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + if (n === 1) { + return "Idatzi karaktere bat gehiago"; + } else { + return "Idatzi " + n + " karaktere gehiago"; + } + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + if (n === 1) { + return "Idatzi karaktere bat gutxiago"; + } else { + return "Idatzi " + n + " karaktere gutxiago"; + } + }, + formatSelectionTooBig: function (limit) { + if (limit === 1 ) { + return "Elementu bakarra hauta dezakezu"; + } else { + return limit + " elementu hauta ditzakezu soilik"; + } + }, + formatLoadMore: function (pageNumber) { + return "Emaitza gehiago kargatzen..."; + }, + formatSearching: function () { + return "Bilatzen..."; + } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_fa.js b/web/js/select2/select2_locale_fa.js new file mode 100644 index 000000000..5465fc8e0 --- /dev/null +++ b/web/js/select2/select2_locale_fa.js @@ -0,0 +1,17 @@ +/** + * Select2 <fa> translation. + * + * Author: Ali Choopan <choopan@arsh.co> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "نتیجهای یافت نشد."; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return " لطفا بیش از"+n+"کاراکتر وارد نمایید "; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return " لطفا" + n + " کاراکتر را حذف کنید."; }, + formatSelectionTooBig: function (limit) { return "شما فقط میتوانید " + limit + " مورد را انتخاب کنید"; }, + formatLoadMore: function (pageNumber) { return "در حال بارگذاری موارد بیشتر ..."; }, + formatSearching: function () { return "در حال جستجو"; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_fi.js b/web/js/select2/select2_locale_fi.js new file mode 100644 index 000000000..b056e88ae --- /dev/null +++ b/web/js/select2/select2_locale_fi.js @@ -0,0 +1,28 @@ +/** + * Select2 Finnish translation + */ +(function ($) { + "use strict"; + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { + return "Ei tuloksia"; + }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + return "Ole hyvä ja anna " + n + " merkkiä lisää"; + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + return "Ole hyvä ja anna " + n + " merkkiä vähemmän"; + }, + formatSelectionTooBig: function (limit) { + return "Voit valita ainoastaan " + limit + " kpl"; + }, + formatLoadMore: function (pageNumber) { + return "Ladataan lisää tuloksia..."; + }, + formatSearching: function () { + return "Etsitään..."; + } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_fr.js b/web/js/select2/select2_locale_fr.js new file mode 100644 index 000000000..f8d3e4841 --- /dev/null +++ b/web/js/select2/select2_locale_fr.js @@ -0,0 +1,15 @@ +/** + * Select2 French translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Aucun résultat trouvé"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Merci de saisir " + n + " caractère" + (n == 1? "" : "s") + " de plus"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Merci de supprimer " + n + " caractère" + (n == 1? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "Vous pouvez seulement sélectionner " + limit + " élément" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Chargement de résultats supplémentaires..."; }, + formatSearching: function () { return "Recherche en cours..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_gl.js b/web/js/select2/select2_locale_gl.js new file mode 100644 index 000000000..1017c202e --- /dev/null +++ b/web/js/select2/select2_locale_gl.js @@ -0,0 +1,43 @@ +/** + * Select2 Galician translation + * + * Author: Leandro Regueiro <leandro.regueiro@gmail.com> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { + return "Non se atoparon resultados"; + }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + if (n === 1) { + return "Engada un carácter"; + } else { + return "Engada " + n + " caracteres"; + } + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + if (n === 1) { + return "Elimine un carácter"; + } else { + return "Elimine " + n + " caracteres"; + } + }, + formatSelectionTooBig: function (limit) { + if (limit === 1 ) { + return "Só pode seleccionar un elemento"; + } else { + return "Só pode seleccionar " + limit + " elementos"; + } + }, + formatLoadMore: function (pageNumber) { + return "Cargando máis resultados..."; + }, + formatSearching: function () { + return "Buscando..."; + } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_he.js b/web/js/select2/select2_locale_he.js new file mode 100644 index 000000000..dd72eaa63 --- /dev/null +++ b/web/js/select2/select2_locale_he.js @@ -0,0 +1,17 @@ +/** +* Select2 Hebrew translation. +* +* Author: Yakir Sitbon <http://www.yakirs.net/> +*/ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "לא נמצאו התאמות"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "נא להזין עוד " + n + " תווים נוספים"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "נא להזין פחות " + n + " תווים"; }, + formatSelectionTooBig: function (limit) { return "ניתן לבחור " + limit + " פריטים"; }, + formatLoadMore: function (pageNumber) { return "טוען תוצאות נוספות..."; }, + formatSearching: function () { return "מחפש..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_hr.js b/web/js/select2/select2_locale_hr.js new file mode 100644 index 000000000..b0615405e --- /dev/null +++ b/web/js/select2/select2_locale_hr.js @@ -0,0 +1,42 @@ +/** + * Select2 Croatian translation. + * + * Author: Edi Modrić <edi.modric@gmail.com> + */ +(function ($) { + "use strict"; + + var specialNumbers = { + 1: function(n) { return (n % 100 != 11 ? "znak" : "znakova"); }, + 2: function(n) { return (n % 100 != 12 ? "znaka" : "znakova"); }, + 3: function(n) { return (n % 100 != 13 ? "znaka" : "znakova"); }, + 4: function(n) { return (n % 100 != 14 ? "znaka" : "znakova"); } + }; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nema rezultata"; }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + var nMod10 = n % 10; + + if (nMod10 > 0 && nMod10 < 5) { + return "Unesite još " + n + " " + specialNumbers[nMod10](n); + } + + return "Unesite još " + n + " znakova"; + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + var nMod10 = n % 10; + + if (nMod10 > 0 && nMod10 < 5) { + return "Unesite " + n + " " + specialNumbers[nMod10](n) + " manje"; + } + + return "Unesite " + n + " znakova manje"; + }, + formatSelectionTooBig: function (limit) { return "Maksimalan broj odabranih stavki je " + limit; }, + formatLoadMore: function (pageNumber) { return "Učitavanje rezultata..."; }, + formatSearching: function () { return "Pretraga..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_hu.js b/web/js/select2/select2_locale_hu.js new file mode 100644 index 000000000..572dea96d --- /dev/null +++ b/web/js/select2/select2_locale_hu.js @@ -0,0 +1,15 @@ +/** + * Select2 Hungarian translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nincs találat."; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Túl rövid. Még " + n + " karakter hiányzik."; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Túl hosszú. " + n + " kerekterrel több mint kellene."; }, + formatSelectionTooBig: function (limit) { return "Csak " + limit + " elemet lehet kiválasztani."; }, + formatLoadMore: function (pageNumber) { return "Töltés..."; }, + formatSearching: function () { return "Keresés..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_id.js b/web/js/select2/select2_locale_id.js new file mode 100644 index 000000000..59a896ac5 --- /dev/null +++ b/web/js/select2/select2_locale_id.js @@ -0,0 +1,17 @@ +/** + * Select2 Indonesian translation. + * + * Author: Ibrahim Yusuf <ibrahim7usuf@gmail.com> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Tidak ada data yang sesuai"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Masukkan " + n + " huruf lagi" + (n == 1 ? "" : "s"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Hapus " + n + " huruf" + (n == 1 ? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "Anda hanya dapat memilih " + limit + " pilihan" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Mengambil data..."; }, + formatSearching: function () { return "Mencari..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_is.js b/web/js/select2/select2_locale_is.js new file mode 100644 index 000000000..b10073b5f --- /dev/null +++ b/web/js/select2/select2_locale_is.js @@ -0,0 +1,16 @@ +/** + * Select2 Icelandic translation. + * + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Ekkert fannst"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vinsamlegast skrifið " + n + " staf" + (n == 1 ? "" : "i") + " í viðbót"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Vinsamlegast styttið texta um " + n + " staf" + (n == 1 ? "" : "i"); }, + formatSelectionTooBig: function (limit) { return "Þú getur aðeins valið " + limit + " atriði"; }, + formatLoadMore: function (pageNumber) { return "Sæki fleiri niðurstöður..."; }, + formatSearching: function () { return "Leita..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_it.js b/web/js/select2/select2_locale_it.js new file mode 100644 index 000000000..98369dda2 --- /dev/null +++ b/web/js/select2/select2_locale_it.js @@ -0,0 +1,15 @@ +/** + * Select2 Italian translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nessuna corrispondenza trovata"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Inserisci ancora " + n + " caratter" + (n == 1? "e" : "i"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Inserisci " + n + " caratter" + (n == 1? "e" : "i") + " in meno"; }, + formatSelectionTooBig: function (limit) { return "Puoi selezionare solo " + limit + " element" + (limit == 1 ? "o" : "i"); }, + formatLoadMore: function (pageNumber) { return "Caricamento in corso..."; }, + formatSearching: function () { return "Ricerca..."; } + }); +})(jQuery);
\ No newline at end of file diff --git a/web/js/select2/select2_locale_ja.js b/web/js/select2/select2_locale_ja.js new file mode 100644 index 000000000..81106e78a --- /dev/null +++ b/web/js/select2/select2_locale_ja.js @@ -0,0 +1,15 @@ +/** + * Select2 Japanese translation. + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "該当なし"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "後" + n + "文字入れてください"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "検索文字列が" + n + "文字長すぎます"; }, + formatSelectionTooBig: function (limit) { return "最多で" + limit + "項目までしか選択できません"; }, + formatLoadMore: function (pageNumber) { return "読込中・・・"; }, + formatSearching: function () { return "検索中・・・"; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_ko.js b/web/js/select2/select2_locale_ko.js new file mode 100644 index 000000000..864906b6b --- /dev/null +++ b/web/js/select2/select2_locale_ko.js @@ -0,0 +1,17 @@ +/** + * Select2 <Language> translation. + * + * Author: Swen Mun <longfinfunnel@gmail.com> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "결과 없음"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "너무 짧습니다. "+n+"글자 더 입력해주세요."; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "너무 깁니다. "+n+"글자 지워주세요."; }, + formatSelectionTooBig: function (limit) { return "최대 "+limit+"개까지만 선택하실 수 있습니다."; }, + formatLoadMore: function (pageNumber) { return "불러오는 중…"; }, + formatSearching: function () { return "검색 중…"; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_lt.js b/web/js/select2/select2_locale_lt.js new file mode 100644 index 000000000..dbb1f09d5 --- /dev/null +++ b/web/js/select2/select2_locale_lt.js @@ -0,0 +1,29 @@ +/** + * Select2 lithuanian translation. + * + * Author: CRONUS Karmalakas <cronus dot karmalakas at gmail dot com> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Atitikmenų nerasta"; }, + formatInputTooShort: function (input, min) { + var n = min - input.length, + suffix = (n % 10 == 1) && (n % 100 != 11) ? 'į' : (((n % 10 >= 2) && ((n % 100 < 10) || (n % 100 >= 20))) ? 'ius' : 'ių'); + return "Įrašykite dar " + n + " simbol" + suffix; + }, + formatInputTooLong: function (input, max) { + var n = input.length - max, + suffix = (n % 10 == 1) && (n % 100 != 11) ? 'į' : (((n % 10 >= 2) && ((n % 100 < 10) || (n % 100 >= 20))) ? 'ius' : 'ių'); + return "Pašalinkite " + n + " simbol" + suffix; + }, + formatSelectionTooBig: function (limit) { + var n = limit, + suffix = (n % 10 == 1) && (n % 100 != 11) ? 'ą' : (((n % 10 >= 2) && ((n % 100 < 10) || (n % 100 >= 20))) ? 'us' : 'ų'); + return "Jūs galite pasirinkti tik " + limit + " element" + suffix; + }, + formatLoadMore: function (pageNumber) { return "Kraunama daugiau rezultatų..."; }, + formatSearching: function () { return "Ieškoma..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_lv.js b/web/js/select2/select2_locale_lv.js new file mode 100644 index 000000000..2c05cfdab --- /dev/null +++ b/web/js/select2/select2_locale_lv.js @@ -0,0 +1,16 @@ +/** + * Select2 Latvian translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Sakritību nav"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Lūdzu ievadiet vēl " + n + " simbol" + (n == 11 ? "us" : (/^\d*[1]$/im.test(n)? "u" : "us")); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Lūdzu ievadiet par " + n + " simbol" + (n == 11 ? "iem" : (/^\d*[1]$/im.test(n)? "u" : "iem")) + " mazāk"; }, + formatSelectionTooBig: function (limit) { return "Jūs varat izvēlēties ne vairāk kā " + limit + " element" + (limit == 11 ? "us" : (/^\d*[1]$/im.test(limit)? "u" : "us")); }, + formatLoadMore: function (pageNumber) { return "Datu ielāde..."; }, + formatSearching: function () { return "Meklēšana..."; } + }); + +})(jQuery); diff --git a/web/js/select2/select2_locale_mk.js b/web/js/select2/select2_locale_mk.js new file mode 100644 index 000000000..69e3981ab --- /dev/null +++ b/web/js/select2/select2_locale_mk.js @@ -0,0 +1,17 @@ +/** + * Select2 Macedonian translation. + * + * Author: Marko Aleksic <psybaron@gmail.com> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Нема пронајдено совпаѓања"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Ве молиме внесете уште " + n + " карактер" + (n == 1 ? "" : "и"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Ве молиме внесете " + n + " помалку карактер" + (n == 1? "" : "и"); }, + formatSelectionTooBig: function (limit) { return "Можете да изберете само " + limit + " ставк" + (limit == 1 ? "а" : "и"); }, + formatLoadMore: function (pageNumber) { return "Вчитување резултати..."; }, + formatSearching: function () { return "Пребарување..."; } + }); +})(jQuery);
\ No newline at end of file diff --git a/web/js/select2/select2_locale_ms.js b/web/js/select2/select2_locale_ms.js new file mode 100644 index 000000000..c7202e1dd --- /dev/null +++ b/web/js/select2/select2_locale_ms.js @@ -0,0 +1,17 @@ +/** + * Select2 Malay translation. + * + * Author: Kepoweran <kepoweran@gmail.com> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Tiada padanan yang ditemui"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Sila masukkan " + n + " aksara lagi"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Sila hapuskan " + n + " aksara"; }, + formatSelectionTooBig: function (limit) { return "Anda hanya boleh memilih " + limit + " pilihan"; }, + formatLoadMore: function (pageNumber) { return "Sedang memuatkan keputusan..."; }, + formatSearching: function () { return "Mencari..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_nl.js b/web/js/select2/select2_locale_nl.js new file mode 100644 index 000000000..8061a28e1 --- /dev/null +++ b/web/js/select2/select2_locale_nl.js @@ -0,0 +1,15 @@ +/** + * Select2 Dutch translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Geen resultaten gevonden"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vul " + n + " karakter" + (n == 1? "" : "s") + " meer in"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Vul " + n + " karakter" + (n == 1? "" : "s") + " minder in"; }, + formatSelectionTooBig: function (limit) { return "Maximaal " + limit + " item" + (limit == 1 ? "" : "s") + " toegestaan"; }, + formatLoadMore: function (pageNumber) { return "Meer resultaten laden..."; }, + formatSearching: function () { return "Zoeken..."; } + }); +})(jQuery);
\ No newline at end of file diff --git a/web/js/select2/select2_locale_no.js b/web/js/select2/select2_locale_no.js new file mode 100644 index 000000000..0831360f0 --- /dev/null +++ b/web/js/select2/select2_locale_no.js @@ -0,0 +1,18 @@ +/** + * Select2 Norwegian translation. + * + * Author: Torgeir Veimo <torgeir.veimo@gmail.com> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Ingen treff"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vennligst skriv inn " + n + (n>1 ? " flere tegn" : " tegn til"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Vennligst fjern " + n + " tegn"; }, + formatSelectionTooBig: function (limit) { return "Du kan velge maks " + limit + " elementer"; }, + formatLoadMore: function (pageNumber) { return "Laster flere resultater..."; }, + formatSearching: function () { return "Søker..."; } + }); +})(jQuery); + diff --git a/web/js/select2/select2_locale_pl.js b/web/js/select2/select2_locale_pl.js new file mode 100644 index 000000000..1d5b32730 --- /dev/null +++ b/web/js/select2/select2_locale_pl.js @@ -0,0 +1,37 @@ +/** + * Select2 Polish translation. + * + * Author: Jan Kondratowicz <jan@kondratowicz.pl> + */ +(function ($) { + "use strict"; + + var pl_suffix = function(n) { + if(n == 1) return ""; + if((n%100 > 1 && n%100 < 5) || (n%100 > 20 && n%10 > 1 && n%10 < 5)) return "i"; + return "ów"; + }; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { + return "Brak wyników."; + }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + return "Wpisz jeszcze " + n + " znak" + pl_suffix(n) + "."; + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + return "Wpisana fraza jest za długa o " + n + " znak" + pl_suffix(n) + "."; + }, + formatSelectionTooBig: function (limit) { + return "Możesz zaznaczyć najwyżej " + limit + " element" + pl_suffix(limit) + "."; + }, + formatLoadMore: function (pageNumber) { + return "Ładowanie wyników..."; + }, + formatSearching: function () { + return "Szukanie..."; + } + }); +})(jQuery);
\ No newline at end of file diff --git a/web/js/select2/select2_locale_pt-BR.js b/web/js/select2/select2_locale_pt-BR.js new file mode 100644 index 000000000..5b2ff2f05 --- /dev/null +++ b/web/js/select2/select2_locale_pt-BR.js @@ -0,0 +1,15 @@ +/** + * Select2 Brazilian Portuguese translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nenhum resultado encontrado"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Informe " + n + " caractere" + (n == 1? "" : "s"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " caractere" + (n == 1? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Carregando mais resultados..."; }, + formatSearching: function () { return "Buscando..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_pt-PT.js b/web/js/select2/select2_locale_pt-PT.js new file mode 100644 index 000000000..1a40e800b --- /dev/null +++ b/web/js/select2/select2_locale_pt-PT.js @@ -0,0 +1,15 @@ +/** + * Select2 Portuguese (Portugal) translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nenhum resultado encontrado"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduza " + n + " car" + (n == 1 ? "ácter" : "acteres"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " car" + (n == 1 ? "ácter" : "acteres"); }, + formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "A carregar mais resultados..."; }, + formatSearching: function () { return "A pesquisar..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_ro.js b/web/js/select2/select2_locale_ro.js new file mode 100644 index 000000000..88b3ac413 --- /dev/null +++ b/web/js/select2/select2_locale_ro.js @@ -0,0 +1,15 @@ +/** + * Select2 Romanian translation. + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nu a fost găsit nimic"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vă rugăm să introduceți incă " + n + " caracter" + (n == 1 ? "" : "e"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Vă rugăm să introduceți mai puțin de " + n + " caracter" + (n == 1? "" : "e"); }, + formatSelectionTooBig: function (limit) { return "Aveți voie să selectați cel mult " + limit + " element" + (limit == 1 ? "" : "e"); }, + formatLoadMore: function (pageNumber) { return "Se încarcă..."; }, + formatSearching: function () { return "Căutare..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_ru.js b/web/js/select2/select2_locale_ru.js new file mode 100644 index 000000000..3da956a8c --- /dev/null +++ b/web/js/select2/select2_locale_ru.js @@ -0,0 +1,15 @@ +/** + * Select2 Russian translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Совпадений не найдено"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Пожалуйста, введите еще " + n + " символ" + (n == 1 ? "" : ((n > 1)&&(n < 5) ? "а" : "ов")); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Пожалуйста, введите на " + n + " символ" + (n == 1 ? "" : ((n > 1)&&(n < 5)? "а" : "ов")) + " меньше"; }, + formatSelectionTooBig: function (limit) { return "Вы можете выбрать не более " + limit + " элемент" + (limit == 1 ? "а" : "ов"); }, + formatLoadMore: function (pageNumber) { return "Загрузка данных..."; }, + formatSearching: function () { return "Поиск..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_sk.js b/web/js/select2/select2_locale_sk.js new file mode 100644 index 000000000..8d4e46afe --- /dev/null +++ b/web/js/select2/select2_locale_sk.js @@ -0,0 +1,48 @@ +/** + * Select2 Slovak translation. + * + * Author: David Vallner <david@vallner.net> + */ +(function ($) { + "use strict"; + // use text for the numbers 2 through 4 + var smallNumbers = { + 2: function(masc) { return (masc ? "dva" : "dve"); }, + 3: function() { return "tri"; }, + 4: function() { return "štyri"; } + } + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nenašli sa žiadne položky"; }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + if (n == 1) { + return "Prosím zadajte ešte jeden znak"; + } else if (n <= 4) { + return "Prosím zadajte ešte ďalšie "+smallNumbers[n](true)+" znaky"; + } else { + return "Prosím zadajte ešte ďalších "+n+" znakov"; + } + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + if (n == 1) { + return "Prosím zadajte o jeden znak menej"; + } else if (n <= 4) { + return "Prosím zadajte o "+smallNumbers[n](true)+" znaky menej"; + } else { + return "Prosím zadajte o "+n+" znakov menej"; + } + }, + formatSelectionTooBig: function (limit) { + if (limit == 1) { + return "Môžete zvoliť len jednu položku"; + } else if (limit <= 4) { + return "Môžete zvoliť najviac "+smallNumbers[limit](false)+" položky"; + } else { + return "Môžete zvoliť najviac "+limit+" položiek"; + } + }, + formatLoadMore: function (pageNumber) { return "Načítavajú sa ďalšie výsledky..."; }, + formatSearching: function () { return "Vyhľadávanie..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_sv.js b/web/js/select2/select2_locale_sv.js new file mode 100644 index 000000000..9f09de30f --- /dev/null +++ b/web/js/select2/select2_locale_sv.js @@ -0,0 +1,17 @@ +/** + * Select2 Swedish translation. + * + * Author: Jens Rantil <jens.rantil@telavox.com> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Inga träffar"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Var god skriv in " + n + (n>1 ? " till tecken" : " tecken till"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Var god sudda ut " + n + " tecken"; }, + formatSelectionTooBig: function (limit) { return "Du kan max välja " + limit + " element"; }, + formatLoadMore: function (pageNumber) { return "Laddar fler resultat..."; }, + formatSearching: function () { return "Söker..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_th.js b/web/js/select2/select2_locale_th.js new file mode 100644 index 000000000..6b38b1581 --- /dev/null +++ b/web/js/select2/select2_locale_th.js @@ -0,0 +1,17 @@ +/** + * Select2 Thai translation. + * + * Author: Atsawin Chaowanakritsanakul <joke@nakhon.net> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "ไม่พบข้อมูล"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "โปรดพิมพ์เพิ่มอีก " + n + " ตัวอักษร"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "โปรดลบออก " + n + " ตัวอักษร"; }, + formatSelectionTooBig: function (limit) { return "คุณสามารถเลือกได้ไม่เกิน " + limit + " รายการ"; }, + formatLoadMore: function (pageNumber) { return "กำลังค้นข้อมูลเพิ่ม..."; }, + formatSearching: function () { return "กำลังค้นข้อมูล..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_tr.js b/web/js/select2/select2_locale_tr.js new file mode 100644 index 000000000..b47a2fad6 --- /dev/null +++ b/web/js/select2/select2_locale_tr.js @@ -0,0 +1,17 @@ +/** + * Select2 Turkish translation. + * + * Author: Salim KAYABAŞI <salim.kayabasi@gmail.com> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Sonuç bulunamadı"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "En az " + n + " karakter daha girmelisiniz"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return n + " karakter azaltmalısınız"; }, + formatSelectionTooBig: function (limit) { return "Sadece " + limit + " seçim yapabilirsiniz"; }, + formatLoadMore: function (pageNumber) { return "Daha fazla..."; }, + formatSearching: function () { return "Aranıyor..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_ua.js b/web/js/select2/select2_locale_ua.js new file mode 100644 index 000000000..58d31e762 --- /dev/null +++ b/web/js/select2/select2_locale_ua.js @@ -0,0 +1,17 @@ +/** + * Select2 <Language> translation. + * + * Author: bigmihail <bigmihail@bigmir.net> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Нічого не знайдено"; }, + formatInputTooShort: function (input, min) { var n = min - input.length, s = ["", "и", "ів"], p = [2,0,1,1,1,2]; return "Введіть буль ласка ще " + n + " символ" + s[ (n%100>4 && n%100<=20)? 2 : p[Math.min(n%10, 5)] ]; }, + formatInputTooLong: function (input, max) { var n = input.length - max, s = ["", "и", "ів"], p = [2,0,1,1,1,2]; return "Введіть буль ласка на " + n + " символ" + s[ (n%100>4 && n%100<=20)? 2 : p[Math.min(n%10, 5)] ] + " менше"; }, + formatSelectionTooBig: function (limit) {var s = ["", "и", "ів"], p = [2,0,1,1,1,2]; return "Ви можете вибрати лише " + limit + " елемент" + s[ (limit%100>4 && limit%100<=20)? 2 : p[Math.min(limit%10, 5)] ]; }, + formatLoadMore: function (pageNumber) { return "Завантаження даних..."; }, + formatSearching: function () { return "Пошук..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_vi.js b/web/js/select2/select2_locale_vi.js new file mode 100644 index 000000000..0a45dfc9c --- /dev/null +++ b/web/js/select2/select2_locale_vi.js @@ -0,0 +1,18 @@ +/** + * Select2 Vietnamese translation. + * + * Author: Long Nguyen <olragon@gmail.com> + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Không tìm thấy kết quả"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vui lòng nhập nhiều hơn " + n + " ký tự" + (n == 1 ? "" : "s"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Vui lòng nhập ít hơn " + n + " ký tự" + (n == 1? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "Chỉ có thể chọn được " + limit + " tùy chọn" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Đang lấy thêm kết quả..."; }, + formatSearching: function () { return "Đang tìm..."; } + }); +})(jQuery); + diff --git a/web/js/select2/select2_locale_zh-CN.js b/web/js/select2/select2_locale_zh-CN.js new file mode 100644 index 000000000..49d8e5994 --- /dev/null +++ b/web/js/select2/select2_locale_zh-CN.js @@ -0,0 +1,14 @@ +/** + * Select2 Chinese translation + */ +(function ($) { + "use strict"; + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "没有找到匹配项"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "请再输入" + n + "个字符";}, + formatInputTooLong: function (input, max) { var n = input.length - max; return "请删掉" + n + "个字符";}, + formatSelectionTooBig: function (limit) { return "你只能选择最多" + limit + "项"; }, + formatLoadMore: function (pageNumber) { return "加载结果中..."; }, + formatSearching: function () { return "搜索中..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2_locale_zh-TW.js b/web/js/select2/select2_locale_zh-TW.js new file mode 100755 index 000000000..3d447d68a --- /dev/null +++ b/web/js/select2/select2_locale_zh-TW.js @@ -0,0 +1,14 @@ +/** + * Select2 Traditional Chinese translation + */ +(function ($) { + "use strict"; + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "沒有找到相符的項目"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "請再輸入" + n + "個字元";}, + formatInputTooLong: function (input, max) { var n = input.length - max; return "請刪掉" + n + "個字元";}, + formatSelectionTooBig: function (limit) { return "你只能選擇最多" + limit + "項"; }, + formatLoadMore: function (pageNumber) { return "載入中..."; }, + formatSearching: function () { return "搜尋中..."; } + }); +})(jQuery); diff --git a/web/js/select2/select2x2.png b/web/js/select2/select2x2.png Binary files differnew file mode 100644 index 000000000..4bdd5c961 --- /dev/null +++ b/web/js/select2/select2x2.png |